vtcode-core 0.136.0

Core library for VT Code - a Rust-based terminal coding agent
[package]
name = "vtcode-core"
version.workspace = true
edition = "2024"
rust-version = "1.93.0"
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",
    "templates/",
]
[dependencies]
anyhow = { workspace = true }
hashbrown = { workspace = true }
clap = { workspace = true, features = ["derive"] }
reqwest = { workspace = true, features = ["http2"] }
serde = { workspace = true }
serde_json = { workspace = true }
compact_str = { workspace = true }
json5 = "1.3"
toml = { workspace = true }
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 }
async-stream = "0.3"
base64 = { workspace = true }
glob = "0.3"
ignore = { workspace = true }
vt100 = { workspace = true }
thiserror = { workspace = true }
dialoguer = { workspace = true }
regex = { workspace = true }
shell-words = { workspace = true }
tree-sitter = "0.26"
tree-sitter-bash = "0.25"
tree-sitter-c = "0.24"
tree-sitter-cpp = "0.23"
tree-sitter-go = "0.25.0"
tree-sitter-java = "0.23.5"
tree-sitter-javascript = "0.25.0"
tree-sitter-python = "0.25.0"
tree-sitter-rust = "0.24.2"
tree-sitter-typescript = "0.23.2"
indexmap = { workspace = true }
tempfile = { workspace = true }
dunce = "1.0"
once_cell = { workspace = true }
parking_lot = "0.12"
sha2 = { workspace = true }
lru = "0.18"
num_cpus = { workspace = true }
chrono = { workspace = true } # For timestamp handling in CLI
humantime = "2.1"
terminal_size = "0.4.4"
async-trait = { workspace = true }
# Home directory detection
dirs = { workspace = true }
# YAML support
serde-saphyr = { workspace = true }
# Zip support for skill packaging
zip = { version = "8.6", default-features = false, features = ["deflate"] }
flate2 = "1.1"
tar = "0.4"
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
# ANSI styling
anstyle = { workspace = true }
anstream = "1.0"
anstyle-git = { workspace = true }
anstyle-ls = "1.0"
colorchoice-clap = "1.0"
quick_cache = "0.7"
roff = "1.1"
unicode-width = { workspace = true }
crossterm = { workspace = true, features = ["event-stream"], optional = true }
rusqlite = { version = "0.35", features = ["bundled"], optional = true }
nix = { version = "0.31", features = ["user", "signal", "poll", "term"] }
ratatui = { workspace = true, features = [
    "crossterm",
    "unstable-rendered-line-info",
    "unstable-widget-ref",
] }

nucleo-matcher = "0.3"
rig = { package = "rig-core", version = "0.40", default-features = false, features = [
    "reqwest",
    "rustls",
] }
portable-pty = "0.9.0"
ansi-to-tui = "8.0.1"
vtcode-commons = { workspace = true }
vtcode-ui = { workspace = true }
vtcode-macros = { workspace = true }
vtcode-exec-events = { workspace = true }
vtcode-memory = { workspace = true }
vtcode-auth = { workspace = true }
vtcode-config = { workspace = true }
vtcode-utility-tool-specs = { workspace = true }
vtcode-indexer = { workspace = true }
vtcode-bash-runner = { workspace = true }
vtcode-safety = { workspace = true }
vtcode-a2a = { workspace = true }
vtcode-mcp = { workspace = true }
vtcode-llm = { workspace = true, features = ["copilot"] }
vtcode-skills = { workspace = true }

# Schema generation
schemars = { workspace = true, optional = true }

# MCP (Model Context Protocol) support
# Phase 1: Upgrade to 0.9.0+ for improved transport and lifecycle management
url = { workspace = true }
jsonschema = "0.46"
uuid = { workspace = true, features = ["v4", "serde"] }
which = "8.0.2"
textwrap = "0.16"
rustc-hash = { workspace = true }
arc-swap = "1.9"
linkme = { workspace = true }
webbrowser = { workspace = true }

notify = "8.2.0"
notify-rust = { version = "4.17", optional = true }
ring = { workspace = true }

# A2A (Agent2Agent) Protocol HTTP server support
axum = { version = "0.8", features = ["json", "macros"], optional = true }
tower = { version = "0.5", optional = true }
strsim = { workspace = true }
smallvec = "1.15.1"

[target.'cfg(any(target_os = "linux", target_os = "macos"))'.dependencies]
libc = { workspace = true }

[target.'cfg(target_os = "macos")'.dependencies]
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 = ["tui"]
tui = ["dep:crossterm"]
mock = []
policies = []
schema = ["dep:schemars", "vtcode-config/schema", "vtcode-commons/schema"]
a2a-server = ["http-server", "vtcode-a2a/a2a-server"]
anthropic-api = ["http-server", "vtcode-llm/anthropic-api"]
http-server = ["dep:axum", "dep:tower"]
desktop-notifications = ["dep:notify-rust"]
sqlite = ["dep:rusqlite"]

[package.metadata.cargo-machete]
ignored = ["toml_edit", "tower"]

[package.metadata.docs.rs]
all-features = true
default-target = "x86_64-unknown-linux-gnu"
rustdoc-args = ["--cfg", "docsrs"]

[dev-dependencies]
assert_fs = { workspace = true }
proptest = "1.11"
criterion = { workspace = true }
serial_test = { workspace = true }

[[bench]]
name = "tool_pipeline"
harness = false

[[bench]]
name = "agent_harness"
harness = false

[lints]
workspace = true