vtcode 0.50.1

A Rust-based terminal coding agent with modular architecture supporting multiple LLM providers
[package]
name = "vtcode"
version = "0.50.1"
edition = "2024"
authors = ["vinhnx <vinhnx@users.noreply.github.com>"]
description = "A Rust-based terminal coding agent with modular architecture supporting multiple LLM providers"
license = "MIT"
readme = "README.md"
homepage = "https://github.com/vinhnx/vtcode"
repository = "https://github.com/vinhnx/vtcode"
documentation = "https://docs.rs/vtcode"
keywords = ["ai", "coding", "agent", "llm", "cli"]
categories = ["command-line-utilities", "development-tools", "api-bindings"]
exclude = [
    "target/",
    ".github/",
    "docs/",
    "scripts/",
    "screenshots/",
    "logs/",
    "prompts/",
    "dist/",
    "npm/",
    "vtcode-core/embedded_assets_source/",
]
default-run = "vtcode"

# Override sections to consolidate duplicate dependencies
[workspace.dependencies]
base64 = "0.22.1"
crossterm = "0.29.0"
schemars = "1.1.0"
thiserror = "2.0.17"
unicode-width = "0.2.0"
serde_json = "1.0"


[workspace]
members = [
    "vtcode-acp-client",
    "vtcode-core",
    "vtcode-commons",
    "vtcode-config",
    "vtcode-llm",
    "vtcode-markdown-store",
    "vtcode-indexer",
    "vtcode-tools",
    "vtcode-bash-runner",
    "vtcode-exec-events",
]
exclude = ["zed-extension", "third-party/mcp-types"]

[patch.crates-io]
vtcode-commons = { path = "vtcode-commons" }
vtcode-markdown-store = { path = "vtcode-markdown-store" }
vtcode-indexer = { path = "vtcode-indexer" }
vtcode-bash-runner = { path = "vtcode-bash-runner" }
vtcode-exec-events = { path = "vtcode-exec-events" }
mcp-types = { path = "third-party/mcp-types" }

[workspace.lints]
rust = {}

[workspace.lints.clippy]
# refence https://github.com/openai/codex/blob/main/codex-rs/Cargo.toml#L198
expect_used = "deny"
identity_op = "deny"
manual_clamp = "deny"
manual_filter = "deny"
manual_find = "deny"
manual_flatten = "deny"
manual_map = "deny"
manual_memcpy = "deny"
manual_non_exhaustive = "deny"
manual_ok_or = "deny"
manual_range_contains = "deny"
manual_retain = "deny"
manual_strip = "deny"
manual_try_fold = "deny"
manual_unwrap_or = "deny"
needless_borrow = "deny"
needless_borrowed_reference = "deny"
needless_collect = "deny"
needless_late_init = "deny"
needless_option_as_deref = "deny"
needless_question_mark = "deny"
needless_update = "deny"
redundant_clone = "deny"
redundant_closure = "deny"
redundant_closure_for_method_calls = "deny"
redundant_static_lifetimes = "deny"
trivially_copy_pass_by_ref = "deny"
uninlined_format_args = "deny"
unnecessary_filter_map = "deny"
unnecessary_lazy_evaluations = "deny"
unnecessary_sort_by = "deny"
unnecessary_to_owned = "deny"
unwrap_used = "deny"


[dependencies]
vtcode-acp-client = { path = "vtcode-acp-client", version = "0.50.1" }
vtcode-config = { path = "vtcode-config", version = "0.50.1" }
vtcode-core = { path = "vtcode-core", version = "0.50.1" }
anyhow = "1.0"
clap = { version = "4.5", features = ["derive"] }
serde_json = { workspace = true }
tokio = { version = "1.48", features = ["full"] }
webbrowser = "1.0"
tokio-util = { version = "0.7", features = ["compat"] }
serde = { version = "1.0", features = ["derive"] }
toml = "0.9.8"
futures = "0.3"
walkdir = "2.5"
itertools = "0.14.0"
memchr = "2.7"
tempfile = "3.0"
once_cell = "1.19"
libc = "0.2"
chrono = { version = "0.4", features = [
    "serde",
] } # For timestamp handling in CLI
path-clean = "1.0"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
indicatif = { version = "0.18", default-features = false }
async-trait = "0.1.89"
# Environment helpers
dotenvy = "0.15"
# Hashing for large output file paths
sha2 = "0.10"
# ANSI styling
anstyle = "1.0"
anstyle-git = "1.1"
anstyle-crossterm = "4.0"
colorchoice = "1.0"
agent-client-protocol = "0.7.0"
percent-encoding = "2.3"
url = "2.5"
shell-words = "1.1"
dialoguer = "0.12.0"
crossterm = { workspace = true }
ratatui = { version = "0.29", default-features = false, features = [
    "crossterm",
] }
which = "8.0.0"
regex = "1.12"
smallvec = "1.13"
signal-hook = "0.3"

[features]
default = ["tool-chat"]
tool-chat = []
tree-sitter-swift = ["vtcode-core/swift"]
profiling = []                            # Enable tracing instrumentation for performance profiling

[profile.dev]
split-debuginfo = "unpacked"
debug = false
lto = true  # Enable LTO even in dev for better optimization on M4
codegen-units = 1  # Use single codegen unit for better optimization on M4
panic = "abort"

[profile.release]
codegen-units = 1 # Allows compiler to perform better optimization.
lto = true        # Enables Link-time Optimization for better performance and size reduction.
opt-level = 3     # Optimize for performance on M4 (was "s" for size)
strip = true      # Ensures debug symbols are removed.
panic = "abort"   # Reduce size of panic paths.
# Additional performance optimizations:
incremental = false # Disable incremental compilation for better optimization

# CI-specific profile for faster builds with minimal debug info
[profile.ci]
inherits = "dev"
# Copy settings from dev profile but with minimal debug info
debug = 0
incremental = false
overflow-checks = false



[[bin]]
name = "vtcode"
path = "src/main.rs"

[dev-dependencies]
tempfile = "3.0"
assert_fs = "1.1"
indexmap = { version = "2.12", features = ["serde"] }
rand = "0.9"
regex = "1.12"
assert_cmd = "2.1"
predicates = "3.1"
insta = "1.39"

[target.'cfg(windows)'.dependencies]
windows-sys = { version = "0.61", features = [
    "Win32_Foundation",
    "Win32_System_SystemServices",
    "Win32_System_Threading",
] }

[package.metadata.cargo-machete]
ignored = ["anstyle-crossterm"]

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