[workspace]
members = [".", "tools/fake-acp-agent"]

[workspace.package]
version = "0.0.47"
edition = "2024"

[package]
name = "llman"
version.workspace = true
# Project is pinned to a nightly toolchain in rust-toolchain.toml
# CI must use the same pinned nightly baseline
edition.workspace = true
default-run = "llman"
authors = ["L8ng <straydragonl@foxmail.com>"]
description = "A tool for managing LLM application rules(prompts) ..."
license = "MIT"
repository = "https://github.com/StrayDragon/llman"

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

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

[dependencies]
anyhow = "1.0.102"
clap = { version = "4.6.1", features = [
    "env",
    "unicode",
    "wrap_help",
    "string",
    "cargo",
    "derive",
] }
clap_complete = "4.6.5"
inquire = { version = "0.9.4", features = ["editor"] }
crossterm = "0.29.0"
ratatui = "0.30.0"
comfy-table = "7.2.2"
thiserror = "2.0.18"
rust-i18n = "3.1.5"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"
toml = "1.0.3"
minijinja = "2.20.0"
chrono = { version = "0.4.45", features = ["serde"] }
glob = "0.3.3"
ignore = "0.4.26"
tokio = { version = "1.49.0", features = ["rt-multi-thread", "time", "process", "io-std"] }
rusqlite = { version = "0.40.1", features = ["bundled"] }
tempfile = "3.26.0"
sha2 = "0.10.9"

# Comment processing and parsing
tree-sitter = "0.26.6"
tree-sitter-highlight = "0.26.6"
tree-sitter-javascript = "0.25.0"
tree-sitter-typescript = "0.23.2"
tree-sitter-python = "0.25.0"
tree-sitter-rust = "0.24.0"
tree-sitter-go = "0.25.0"

# Configuration and validation
schemars = { version = "1.2.1", features = ["derive", "indexmap2"] }
jsonschema = "0.46.5"

# JSON parsing and repair
llm_json = "1.0.2"

# Additional utilities
regex = "1.12.3"
serde_yaml = "0.9.34"
toon-format = { version = "0.5.0", default-features = false }
gherkin = "0.16"
sevenz-rust2 = "0.20.2"
indexmap = { version = "2.14.0", features = ["serde"] }

[dev-dependencies]
expectrl = "0.8.0"

# Keep `target/` growth in check:
# - Compile workspace code with enough debug info for useful backtraces.
# - Compile third-party dependencies with no debug info to significantly reduce
#   `target/**/deps` disk usage.
#
# See: https://doc.rust-lang.org/cargo/reference/profiles.html
[profile.dev]
debug = 1

[profile.dev.package."*"]
debug = 0

[profile.test]
debug = 1

[profile.test.package."*"]
debug = 0
