Adds the duckdb crate with the bundled feature ahead of any provider code, so the dependency and build surface can be proven on every CI target on its own. duckdb constrains comfy-table to ~7.1, so comfy-table moves from 7.2.2 to 7.1.4 while keeping custom_styling. That feature swaps measure_text_width for an ANSI-stripping implementation that render_table's pre-styled cells depend on; dropping it still compiles and still passes every other test, and only corrupts column widths. A regression test now renders a styled table at a fixed wrap width and asserts every line has an equal ANSI-stripped display width. comfy-table 7.1.4 pins crossterm 0.28 while coyote pins 0.29, so both now build side by side. comfy_table::Color, Attribute and Cell are consequently crossterm 0.28 types and must not be used; table styling stays ANSI-string based. Caches the DuckDB extension directory in CI, keyed on the runner OS and the DuckDB version, so vss and fts survive an upstream outage. Also switches merge_vector_results to f32::total_cmp. The previous partial_cmp().unwrap_or(Equal) comparator is not total under NaN, which sort_by is permitted to answer with a panic in release builds.
154 lines
4.0 KiB
TOML
154 lines
4.0 KiB
TOML
[package]
|
|
name = "coyote-ai"
|
|
version = "0.8.3"
|
|
edition = "2024"
|
|
authors = ["Alex Clarke <alex.j.tusa@gmail.com>"]
|
|
description = "An all-in-one, batteries included LLM CLI Tool"
|
|
keywords = ["chatgpt", "llm", "cli", "ai", "repl"]
|
|
homepage = "https://github.com/Dark-Alex-17/coyote"
|
|
repository = "https://github.com/Dark-Alex-17/coyote"
|
|
categories = ["command-line-utilities"]
|
|
readme = "README.md"
|
|
license = "AGPL-3.0-only"
|
|
rust-version = "1.95.0"
|
|
exclude = [".github", "CONTRIBUTING.md"]
|
|
|
|
[dependencies]
|
|
anyhow = "1.0.69"
|
|
bytes = "1.4.0"
|
|
clap = { version = "4.5.40", features = ["cargo", "derive", "wrap_help"] }
|
|
comfy-table = { version = "7.1.4", features = ["custom_styling"] }
|
|
dirs = "6.0.0"
|
|
duckdb = { version = "1.10505.0", features = ["bundled"] }
|
|
dunce = "1.0.5"
|
|
futures-util = "0.3.29"
|
|
inquire = "0.9.4"
|
|
is-terminal = "0.4.9"
|
|
reedline = "0.47.0"
|
|
serde = { version = "1.0.152", features = ["derive"] }
|
|
serde_json = { version = "1.0.93", features = ["preserve_order"] }
|
|
serde_yaml = "0.9.17"
|
|
tokio = { version = "1.34.0", features = [
|
|
"rt",
|
|
"time",
|
|
"macros",
|
|
"signal",
|
|
"rt-multi-thread",
|
|
"full",
|
|
] }
|
|
crossterm = "0.29.0"
|
|
chrono = "0.4.23"
|
|
bincode = { version = "2.0.0", features = [
|
|
"serde",
|
|
"std",
|
|
], default-features = false }
|
|
parking_lot = "0.12.1"
|
|
fancy-regex = "0.14.0"
|
|
base64 = "0.22.0"
|
|
nu-ansi-term = "0.50.0"
|
|
async-trait = "0.1.74"
|
|
textwrap = "0.16.0"
|
|
ansi_colours = "1.2.2"
|
|
eventsource-stream = "0.2.3"
|
|
log = "0.4.28"
|
|
log4rs = { version = "1.4.0", features = ["file_appender", "rolling_file_appender", "compound_policy", "fixed_window_roller", "size_trigger"] }
|
|
shell-words = "1.1.0"
|
|
sha2 = "0.10.8"
|
|
unicode-width = "0.2.0"
|
|
async-recursion = "1.1.1"
|
|
http = "1.1.0"
|
|
indexmap = { version = "2.2.6", features = ["serde"] }
|
|
hmac = "0.12.1"
|
|
aws-smithy-eventstream = "0.60.4"
|
|
aws-smithy-types = "=1.4.9"
|
|
time = "=0.3.47"
|
|
urlencoding = "2.1.3"
|
|
json-patch = { version = "4.0.0", default-features = false }
|
|
bitflags = "2.5.0"
|
|
path-absolutize = "3.1.1"
|
|
hnsw_rs = "0.3.0"
|
|
uuid = { version = "1.9.1", features = ["v4"] }
|
|
scraper = { version = "0.23.1", default-features = false, features = [
|
|
"deterministic",
|
|
] }
|
|
sys-locale = "0.3.1"
|
|
html_to_markdown = "0.1.0"
|
|
rust-embed = "8.5.0"
|
|
os_info = { version = "3.8.2", default-features = false }
|
|
bm25 = { version = "2.0.1", features = ["parallelism"] }
|
|
petgraph = { version = "0.7", features = ["serde-1"] }
|
|
which = "8.0.0"
|
|
fuzzy-matcher = "0.3.7"
|
|
terminal-colorsaurus = "0.4.8"
|
|
duct = "1.0.0"
|
|
argc = "1.23.0"
|
|
strum_macros = "0.27.2"
|
|
indoc = "2.0.6"
|
|
rmcp = { version = "1.5.0", features = [
|
|
"client",
|
|
"transport-child-process",
|
|
"transport-streamable-http-client-reqwest",
|
|
"reqwest-native-tls",
|
|
] }
|
|
num_cpus = "1.17.0"
|
|
tree-sitter = "0.26.8"
|
|
tree-sitter-python = "0.25.0"
|
|
tree-sitter-typescript = "0.23"
|
|
colored = "3.0.0"
|
|
clap_complete = { version = "4.5.58", features = ["unstable-dynamic"] }
|
|
gman = "0.5.0"
|
|
clap_complete_nushell = "4.5.9"
|
|
open = "5"
|
|
rand = { version = "0.10.0", features = ["default"] }
|
|
url = "2.5.8"
|
|
self_update = { version = "0.44", default-features = false, features = [
|
|
"reqwest",
|
|
"rustls",
|
|
"archive-tar",
|
|
"compression-flate2",
|
|
"archive-zip",
|
|
"compression-zip-deflate",
|
|
] }
|
|
qrcode = "0.14"
|
|
|
|
[dependencies.reqwest]
|
|
version = "0.13.3"
|
|
features = [
|
|
"json",
|
|
"multipart",
|
|
"stream",
|
|
"form",
|
|
"socks",
|
|
"rustls",
|
|
]
|
|
default-features = false
|
|
|
|
[dependencies.syntect]
|
|
version = "5.0.0"
|
|
default-features = false
|
|
features = ["parsing", "regex-onig", "plist-load"]
|
|
|
|
[target.'cfg(target_os = "macos")'.dependencies]
|
|
crossterm = { version = "0.29.0", features = ["use-dev-tty"] }
|
|
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
arboard = { version = "3.3.0", default-features = false, features = [
|
|
"wayland-data-control",
|
|
] }
|
|
|
|
[target.'cfg(not(any(target_os = "linux", target_os = "android", target_os = "emscripten")))'.dependencies]
|
|
arboard = { version = "3.3.0", default-features = false }
|
|
|
|
[dev-dependencies]
|
|
pretty_assertions = "1.4.0"
|
|
serial_test = "3"
|
|
|
|
[[bin]]
|
|
name = "coyote"
|
|
path = "src/main.rs"
|
|
|
|
[profile.release]
|
|
lto = true
|
|
strip = true
|
|
opt-level = "z"
|