[workspace]
members = [
    ".",
    "crates/llmenv-paths",
    "crates/llmenv-git",
    "crates/llmenv-config",
    "crates/llmenv-util",
]
resolver = "2"

[workspace.dependencies]
anyhow = "1.0.103"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"
serde_yaml = { package = "serde_yaml_ng", version = "0.10" }
thiserror = "2.0.18"
tracing = "0.1.44"
proptest = "1.11.0"
tempfile = "3.27"

[workspace.lints.rust]
unsafe_code = "forbid"

[workspace.lints.clippy]
unwrap_used = "deny"
expect_used = "deny"
panic = "deny"

[package]
name = "llmenv"
version = "3.1.0"
edition = "2024"
rust-version = "1.95"
license = "MIT OR Apache-2.0"
description = "Universal scope-aware environment for AI coding agents"
repository = "https://github.com/phaedrus1992/llmenv"
homepage = "https://phaedrus1992.github.io/llmenv/"
documentation = "https://phaedrus1992.github.io/llmenv/"
readme = "README.md"
keywords = ["ai", "agents", "cli", "config", "environment"]
categories = ["command-line-utilities", "development-tools", "config"]
# Keep the published crate lean: the docs site, design docs, CI config, and dev
# scripts are not needed to build or use llmenv. Tests and benches ship so the
# crate stays verifiable from a crates.io checkout.
exclude = ["/website", "/docs", "/.github", "/scripts", "/proptest-regressions", "/crates"]

[lints]
workspace = true

[dependencies]
llmenv-paths = { path = "crates/llmenv-paths", version = "3.1.0" }
llmenv-git = { path = "crates/llmenv-git", version = "3.1.0" }
llmenv-config = { path = "crates/llmenv-config", version = "3.1.0" }
llmenv-util = { path = "crates/llmenv-util", version = "3.1.0" }
clap = { version = "4.6.1", features = ["derive"] }
clap_complete = "4.6.5"
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"
serde_yaml = { package = "serde_yaml_ng", version = "0.10" }
tokio = { version = "1.52.3", features = ["rt-multi-thread", "macros", "fs", "process", "io-util", "sync"] }
tracing = "0.1.44"
tracing-subscriber = { version = "0.3.23", features = ["env-filter", "json"] }
thiserror = "2.0.18"
anyhow = "1.0.103"
directories = "6"
sha2 = "0.11"
hex = "0.4.3"
humantime = "2.3.0"
jiff = { version = "0.2.30", default-features = false, features = ["std"] }
anstyle = "1.0.14"
glob = "0.3.3"
reqwest = { version = "0.13.4", default-features = false, features = ["rustls", "json"] }
url = "2.5.8"
tempfile = "3.27"
dialoguer = "0.12.0"

[dev-dependencies]
assert_cmd = "2.2.2"
insta = { version = "1.47.2", features = ["yaml"] }
predicates = "3.1.4"
walkdir = "2.5"
proptest = "1.11.0"
criterion = { version = "0.8.2", features = ["html_reports"] }
wiremock = "0.6.5"

[profile.release]
lto = true
codegen-units = 1
panic = "abort"

[[bench]]
name = "cli_benchmark"
harness = false
