[package]
name = "ctxforge"
version = "1.3.0"
edition = "2024"
rust-version = "1.85"
description = "The missing CLI for AI coding — assemble, count, and export perfect context bundles."
license = "AGPL-3.0-or-later"
repository = "https://github.com/sylvester-francis/ctx-forge"
homepage = "https://github.com/sylvester-francis/ctx-forge"
keywords = ["ai", "llm", "cli", "context", "claude"]
categories = ["command-line-utilities", "development-tools"]
readme = "README.md"

[dependencies]
clap = { version = "4.6", features = ["derive"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
anyhow = "1.0.102"
thiserror = "2.0.18"
chrono = { version = "0.4.44", features = ["serde"] }
arboard = "3.6"
tiktoken-rs = "0.11"
ignore = "0.4.25"
globset = "0.4.18"
git2 = { version = "0.20", default-features = false, features = ["vendored-libgit2"] }
crossterm = "0.29"
fuzzy-matcher = "0.3"
syntect = { version = "5", optional = true, default-features = false, features = ["default-fancy"] }
iocraft = { version = "0.8", optional = true }
smol = { version = "2", optional = true }
owo-colors = "4"
comfy-table = "7"
indicatif = "0.17"
dialoguer = { version = "0.11", features = ["editor"] }
strsim = "0.11"
toml = "0.8"
tempfile = "3.27"

# Optional: tree-sitter extraction (behind --features=extract)
tree-sitter = { version = "0.26", optional = true }
tree-sitter-go = { version = "0.25", optional = true }
tree-sitter-rust = { version = "0.24", optional = true }
tree-sitter-python = { version = "0.25", optional = true }
tree-sitter-typescript = { version = "0.23", optional = true }
tree-sitter-javascript = { version = "0.25", optional = true }

[dev-dependencies]
assert_cmd = "2.2"
predicates = "3.1.4"
pretty_assertions = "1.4.1"
insta = { version = "1.40", features = ["yaml"] }
temp-env = "0.3"

[features]
default = ["tui-v2", "mcp"]
tui-v2 = ["dep:iocraft", "dep:smol", "dep:syntect"]
mcp = []
extract = [
    "dep:tree-sitter",
    "dep:tree-sitter-go",
    "dep:tree-sitter-rust",
    "dep:tree-sitter-python",
    "dep:tree-sitter-typescript",
    "dep:tree-sitter-javascript",
]
minimal = []

[profile.release]
lto = true
codegen-units = 1
strip = true
