vtcode-core 0.52.4

Core library for VTCode - a Rust-based terminal coding agent
[package]
name = "vtcode-core"
version = "0.52.4"
edition = "2024"
authors = ["vinhnx <vinhnx@users.noreply.github.com>"]
description = "Core library for VTCode - a Rust-based terminal coding agent"
license = "MIT"
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/",
    "build.rs",
    "Cargo.toml",
    "README.md",
    "LICENSE",
    "embedded_assets_source/",
    "templates/",
]
[dependencies]
anyhow = { workspace = true }
clap = { version = "4.5", features = ["derive"] }
reqwest = { version = "0.12", features = ["json", "rustls-tls", "stream"] }
serde = { workspace = true }
serde_json = { workspace = true }
json5 = "1.0"
toml = "0.9.8"
toml_edit = "0.23"
tokio = { version = "1.48", features = [
    "fs",
    "io-util",
    "macros",
    "rt-multi-thread",
    "sync",
    "process",
] }
tokio-util = { version = "0.7", features = ["codec"] }
async-process = "2.2"
futures = "0.3"
futures-lite = "2.3"
async-stream = "0.3"
base64 = { workspace = true }
walkdir = "2.5"
glob = "0.3"
thiserror = { workspace = true }
dialoguer = "0.12.0"
regex = { workspace = true }
shell-words = "1.1"
tree-sitter = "0.25"
tree-sitter-rust = "0.24"
tree-sitter-python = "0.25"
tree-sitter-javascript = "0.25"
tree-sitter-typescript = "0.23"
tree-sitter-go = "0.25"
tree-sitter-java = "0.23"
tree-sitter-bash = "0.25"
indexmap = { version = "2.12", features = ["serde"] }
itertools = "0.14.0"
tempfile = { workspace = true }
once_cell = "1.19"
parking_lot = "0.12"
sha2 = "0.10"
lru = "0.16"
chrono = { version = "0.4", features = [
    "serde",
] } # For timestamp handling in CLI
iana-time-zone = "0.1"
humantime = "2.1"
terminal_size = "0.4.3"
async-trait = "0.1.89"
# Dotenv support
dotenvy = "0.15"
# Home directory detection
dirs = "6.0"
# YAML support
serde_yaml = "0.9"
# Zip support for skill packaging
zip = { version = "2.2", default-features = false, features = ["deflate"] }
tracing = "0.1"
tracing-subscriber = "0.3"
# ANSI styling
anstyle = "1.0"
anstyle-git = "1.1"
anstyle-ls = "1.0"
anstyle-crossterm = "3.0"
anstyle-query = "1.0"
anstream = "0.6"
anstyle-syntect = "1.0"
tui-syntax-highlight = { version = "0.1.2", default-features = false, features = [
    "regex-fancy",
] }
colorchoice-clap = "1.0"
quick_cache = "0.6"
roff = "0.2"
syntect = { version = "5.2", default-features = false, features = [
    "default-fancy",
] }
unicode-segmentation = "1.11"
unicode-width = { workspace = true }
crossterm = { workspace = true, features = ["event-stream"] }
nix = { version = "0.30", features = ["user", "signal"] }
ratatui = { version = "0.29", default-features = false, features = [
    "crossterm",
    "unstable-rendered-line-info",
    "unstable-widget-ref",
] }
tui-popup = "0.6"
tui-prompts = "0.5"
perg = "0.8.0"
nucleo-matcher = "0.3"
line-clipping = "0.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 = "7.0.0"
vtcode-commons = { path = "../vtcode-commons", version = "0.52.4" }
vtcode-exec-events = { path = "../vtcode-exec-events", version = "0.52.4" }
vtcode-config = { path = "../vtcode-config", version = "0.52.4" }
vtcode-markdown-store = { path = "../vtcode-markdown-store", version = "0.52.4" }
vtcode-indexer = { path = "../vtcode-indexer", version = "0.52.4" }

# Token counting for attention budget management
# Note: 'http' feature required for from_pretrained(), adds ~2MB to binary
# Could be made optional if local tokenizer files are acceptable
tokenizers = { version = "0.22", default-features = false, features = ["http", "fancy-regex"] }

# 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
rmcp = { version = "0.9", features = [
    "client",
    "transport-child-process",
    "transport-streamable-http-client-reqwest",
] }
mcp-types = { path = "../third-party/mcp-types", version = "0.1.1" }
openai-harmony = "0.0.8"
url = "2.5"
jsonschema = "0.37"
uuid = { version = "1.8.0", features = ["v4", "fast-rng"] }
which = "8.0.0"
textwrap = "0.16"
editor-command = "2.0"
signal-hook = "0.3"
better-panic = { version = "0.3.0", features = ["syntect"] }

[build-dependencies]
vtcode-config = { path = "../vtcode-config", version = "0.52.4" }

[target.'cfg(unix)'.dependencies]

[[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 = []
swift = ["dep:tree-sitter-swift"]
schema = ["dep:schemars"]

[dependencies.tree-sitter-swift]
version = "0.7.1"
optional = true

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

[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]

[dev-dependencies]
assert_fs = "1.1"
mockito = "1.7"
proptest = "1.5"