[package]
name = "agent-file-tools"
version = "0.42.0"
edition = "2021"
description = "Agent File Tools — tree-sitter powered code analysis for AI agents"
license = "MIT"
repository = "https://github.com/cortexkit/aft"
keywords = ["tree-sitter", "code-analysis", "ai-agent", "ast"]
categories = ["command-line-utilities", "development-tools"]
readme = "../../README.md"

[lib]
name = "aft"
path = "src/lib.rs"

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

[[bin]]
name = "fake-lsp-server"
path = "tests/lsp/fake_server.rs"

[dependencies]
log = "0.4"
env_logger = "0.11"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
lsp-types = "0.97"
crossbeam-channel = "0.5"
parking_lot = "0.12"
portable-pty = "0.9"
libc = "0.2"
getrandom = "0.3"
tree-sitter = "0.26"
tree-sitter-typescript = "0.23.2"
tree-sitter-javascript = "0.25"
tree-sitter-python = "0.25"
tree-sitter-rust = "0.24"
tree-sitter-go = "0.25"
tree-sitter-c = "0.24"
tree-sitter-cpp = "0.23"
tree-sitter-zig = "1.1"
tree-sitter-c-sharp = "0.23"
tree-sitter-bash = "0.25"
tree-sitter-html = "0.23"
tree-sitter-md = "0.5"
tree-sitter-solidity = "1.2"
tree-sitter-vue = { package = "tree-sitter-vue-next", version = "0.1" }
tree-sitter-json = "0.24"
tree-sitter-scala = "0.26"
tree-sitter-java = "0.23"
tree-sitter-ruby = "0.23"
tree-sitter-kotlin-sg = "0.4"
tree-sitter-swift = "0.7"
tree-sitter-php = "0.24"
tree-sitter-lua = "0.5"
tree-sitter-perl = "1.1"
tree-sitter-pascal = "0.10.2"
tree-sitter-r = "1.2.0"
tree-sitter-yaml = "0.7"
similar = "2"
ast-grep-core = "0.41"
streaming-iterator = "0.1"
ignore = "0.4"
notify = "8"
regex = "1"
regex-syntax = "0.8"
toml = { version = "0.8", default-features = false, features = ["parse"] }
globset = "0.4"
sha2 = "0.10"
crc32fast = "1"
blake3 = "1"
oxc_allocator = "0.126"
oxc_ast = "0.126"
oxc_ast_visit = "0.126"
oxc_parser = "0.126"
oxc_resolver = "11"
oxc_semantic = "0.126"
oxc_span = "0.126"
oxc_str = "0.126"
rustc-hash = "2"
rusqlite = { version = "0.32", features = ["bundled"] }
aft-tokenizer = { path = "../aft-tokenizer", version = "0.42.0" }
# Shared CortexKit-neutral path-canonicalization primitive (ProjectRootId).
# Lives in github.com/cortexkit/commons (product-neutral, used without subc);
# its CI runs the cfg(windows) verbatim/UNC/drive-case vectors continuously.
cortexkit-paths = "0.1"

glob = "0.3"
which = "7"
url = "2"
content_inspector = "0.2.4"
base64 = "0.22"
image = { version = "0.25", default-features = false, features = ["png", "jpeg", "gif", "webp"] }
memchr = "2"
rayon = "1"
reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls"] }
tree-sitter-scss = { package = "cortexkit-tree-sitter-scss", version = "1.0.1" }
# Local embedding backend (all-MiniLM-L6-v2) driven directly through ort, so we
# control intra-op thread count (fastembed hardcoded all-cores). hf-hub fetches
# the model on fresh installs; ureq feature = sync + rustls (no native-tls, for
# clean cross-platform builds).
ort = { version = "=2.0.0-rc.11", default-features = false, features = ["ndarray", "load-dynamic", "half"] }
# We only load tokenizer.json and encode; serde/json support is always-on in
# tokenizers. The pure-Rust fancy-regex backend satisfies tokenizers
# compile-time regex selection without pulling in onig's C library.
tokenizers = { version = "0.22.2", default-features = false, features = ["fancy-regex"] }
ndarray = "0.17.2"
half = "2"
hf-hub = { version = "0.4", default-features = false, features = ["ureq"] }
htmd = "0.5.4"
# subc daemon attach (P5a): loopback-TCP connect + HMAC handshake. The frame
# codec (Frame + read_frame/write_frame) lands via subc-protocol/subc-transport
# bumps when the Hello-onward control loop is wired. tokio runs ONLY at the
# --subc transport edge; AFT's command core stays synchronous.
subc-protocol = "0.5"
subc-transport = "0.2.2"
tokio = { version = "1", features = ["rt", "net", "io-util", "time", "sync", "macros"] }

[target.'cfg(unix)'.dependencies]
signal-hook = "0.3"

[dev-dependencies]
tempfile = "3"
filetime = "0.2"
