[package]
name = "ctxforge"
version = "1.0.3"
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"] }
ratatui = { version = "0.30", optional = true }
crossterm = { version = "0.29", optional = true }
fuzzy-matcher = { version = "0.3", optional = true }

# 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"
tempfile = "3.27"
pretty_assertions = "1.4.1"

[features]
default = ["tui", "mcp"]
tui = ["dep:ratatui", "dep:crossterm", "dep:fuzzy-matcher"]
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
