[package]
name = "vtcode-llm"
version.workspace = true
edition = "2024"
rust-version = "1.93.0"
authors = ["Vinh Nguyen <vinhnguyen2308@gmail.com>"]
description = "LLM provider abstraction, client implementations, and streaming for VT Code"
license.workspace = true
readme = "README.md"
homepage = "https://github.com/vinhnx/vtcode"
repository = "https://github.com/vinhnx/vtcode"
documentation = "https://docs.rs/vtcode-llm"
categories = ["development-tools"]
keywords = ["vt", "llm", "provider", "ai", "streaming"]
[dependencies]
anyhow = { workspace = true }
async-trait = { workspace = true }
async-stream = "0.3"
axum = { version = "0.8", features = ["json", "macros"], optional = true }
bytes = "1.11"
compact_str = { workspace = true }
futures = { workspace = true }
hashbrown = { workspace = true }
openai-harmony = "0.0.8"
once_cell = { workspace = true }
parking_lot = "0.12"
reqwest = { workspace = true, features = ["http2"] }
rig = { package = "rig-core", version = "0.40", default-features = false, features = ["reqwest", "rustls"] }
rustc-hash = { workspace = true }
semver = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true, features = ["fs", "io-util", "macros", "rt-multi-thread", "sync", "time"] }
tokio-stream = { version = "0.1", optional = true }
tower-http = { version = "0.7", features = ["cors"], optional = true }
tokio-tungstenite = { version = "0.29", default-features = false, features = ["connect", "rustls-tls-webpki-roots"] }
tracing = { workspace = true }
url = { workspace = true }
uuid = { workspace = true, features = ["v4"] }
vtcode-commons = { workspace = true }
vtcode-config = { workspace = true }
vtcode-exec-events = { workspace = true }
vtcode-macros = { workspace = true }
vtcode-utility-tool-specs = { workspace = true }
anstyle = { workspace = true }
lru = "0.18"
which = "8.0.2"
shell-words = { workspace = true }
regex = { workspace = true }
dirs = { workspace = true }
portable-pty = { version = "0.9.0", optional = true }
ratatui = { workspace = true }
[dev-dependencies]
assert_fs = { workspace = true }
tempfile = { workspace = true }
wiremock = "0.6.5"
[features]
default = []
http-server = ["dep:tokio-stream"]
copilot = ["dep:portable-pty"]
anthropic-api = ["dep:axum", "dep:tower-http", "dep:tokio-stream"]
[package.metadata.docs.rs]
all-features = true
default-target = "x86_64-unknown-linux-gnu"
rustdoc-args = ["--cfg", "docsrs"]
[lints]
workspace = true