[package]
name = "vtcode-core"
version.workspace = true
edition.workspace = true
rust-version = "1.88"
authors = ["Vinh Nguyen <vinhnguyen2308@gmail.com>"]
description = "Core library for VT Code - a Rust-based terminal coding agent"
license.workspace = true
readme = "README.md"
homepage = "https://github.com/vinhnx/vtcode"
repository = "https://github.com/vinhnx/vtcode"
documentation = "https://docs.rs/vtcode-core"
keywords = ["ai", "coding", "agent", "llm", "rust"]
categories = ["development-tools", "api-bindings"]
include = [
"src/",
"tests/",
"examples/",
"benches/",
"build.rs",
"Cargo.toml",
"README.md",
"LICENSE",
"embedded_assets_source/",
"templates/",
]
[dependencies]
anyhow = { workspace = true }
hashbrown = { workspace = true }
clap = { workspace = true, features = ["derive"] }
reqwest = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
json5 = "1.3"
toml = { workspace = true }
toml_edit = "0.24"
tokio = { workspace = true, features = [
"fs",
"io-util",
"macros",
"rt-multi-thread",
"sync",
"process",
] }
tokio-util = { workspace = true, features = ["codec"] }
async-process = "2.2"
futures = { workspace = true }
futures-lite = "2.3"
async-stream = "0.3"
base64 = { workspace = true }
walkdir = { workspace = true }
glob = "0.3"
thiserror = { workspace = true }
dialoguer = { workspace = true }
regex = { workspace = true }
shell-words = { workspace = true }
tree-sitter = "0.26"
tree-sitter-bash = "0.25"
indexmap = { workspace = true }
itertools = { workspace = true }
tempfile = { workspace = true }
dunce = "1.0"
include_dir = "0.7"
once_cell = { workspace = true }
parking_lot = "0.12"
sha2 = { workspace = true }
lru = "0.16"
num_cpus = { workspace = true }
chrono = { workspace = true }
iana-time-zone = "0.1"
humantime = "2.1"
terminal_size = "0.4.3"
async-trait = { workspace = true }
bytes = "1.11"
dotenvy = { workspace = true }
dirs = { workspace = true }
serde_yaml = { workspace = true }
zip = { version = "8.1", default-features = false, features = ["deflate"] }
semver = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
fs2 = { workspace = true }
anstyle = { workspace = true }
anstyle-git = { workspace = true }
anstyle-ls = "1.0"
anstyle-crossterm = { workspace = true }
anstyle-query = "1.0"
anstream = "1.0"
colorchoice-clap = "1.0"
quick_cache = "0.6"
roff = "1.0"
unicode-segmentation = "1.11"
unicode-width = { workspace = true }
crossterm = { workspace = true, features = ["event-stream"] }
nix = { version = "0.31", features = ["user", "signal", "poll", "term"] }
ratatui = { workspace = true, features = [
"crossterm",
"unstable-rendered-line-info",
"unstable-widget-ref",
] }
better-panic = "0.3"
perg = "0.8.0"
nucleo-matcher = "0.3"
line-clipping = "0.3"
vtcode-file-search = { version = "0.86.9", path = "../vtcode-file-search" }
tui-shimmer = "0.1.3"
pulldown-cmark = { version = "0.13", default-features = false, features = [
"simd",
] }
catppuccin = { version = "2.5", default-features = false }
rig = { package = "rig-core", version = "0.23.1", default-features = false, features = [
"reqwest-rustls",
] }
vt100 = "0.15.2"
portable-pty = "0.9.0"
ansi-to-tui = "8.0.1"
vtcode-commons = { path = "../vtcode-commons", version = "0.86.9" }
vtcode-exec-events = { path = "../vtcode-exec-events", version = "0.86.9" }
vtcode-config = { path = "../vtcode-config", version = "0.86.9" }
vtcode-tui = { path = "../vtcode-tui", version = "0.86.9" }
vtcode-markdown-store = { path = "../vtcode-markdown-store", version = "0.86.9" }
vtcode-indexer = { path = "../vtcode-indexer", version = "0.86.9" }
vtcode-bash-runner = { path = "../vtcode-bash-runner", version = "0.86.9" }
vtcode-acp-client = { path = "../vtcode-acp-client", version = "0.86.9" }
schemars = { workspace = true, optional = true }
rmcp = { version = "0.15", features = [
"client",
"transport-child-process",
"transport-streamable-http-client-reqwest",
] }
openai-harmony = "0.0.8"
url = { workspace = true }
jsonschema = "0.43"
uuid = { workspace = true, features = ["v4", "fast-rng", "serde"] }
which = "8.0.0"
textwrap = "0.16"
editor-command = "2.0"
signal-hook = "0.4"
rand = { workspace = true }
rustc-hash = { workspace = true }
arc-swap = "1.7"
libloading = { workspace = true }
lsp-types = "0.97.0"
notify-rust = { version = "4.12", optional = true }
ring = { workspace = true }
axum = { version = "0.8", features = ["json", "macros"], optional = true }
tower = { version = "0.5", optional = true }
tower-http = { version = "0.6", features = ["cors", "trace"], optional = true }
tokio-stream = { version = "0.1", optional = true }
tokio-tungstenite = { version = "0.28", default-features = false, features = [
"connect",
"rustls-tls-webpki-roots",
] }
[build-dependencies]
vtcode-config = { path = "../vtcode-config", version = "0.86.9" }
[target.'cfg(target_os = "linux")'.dependencies]
libc = { workspace = true }
[target.'cfg(target_os = "macos")'.dependencies]
libc = { workspace = true }
xattr = "1.6"
[[example]]
name = "anstyle_test"
path = "examples/anstyle_test.rs"
[[example]]
name = "dialoguer_example"
path = "examples/dialoguer_example.rs"
[[example]]
name = "migration_test"
path = "examples/migration_test.rs"
[features]
default = []
schema = ["dep:schemars"]
a2a-server = ["dep:axum", "dep:tower", "dep:tower-http", "dep:tokio-stream"]
anthropic-api = ["dep:axum", "dep:tower", "dep:tower-http", "dep:tokio-stream"]
desktop-notifications = ["dep:notify-rust"]
[package.metadata.cargo-machete]
ignored = ["dotenvy", "toml_edit"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[dev-dependencies]
assert_fs = { workspace = true }
mockito = "1.7"
proptest = "1.10"
criterion = { workspace = true }
wiremock = "0.6.5"
serial_test = { workspace = true }
[[bench]]
name = "tool_pipeline"
harness = false
[lints]
workspace = true