[workspace]
members = ["crates/*"]
resolver = "3"

[workspace.package]
version = "0.1.10"
edition = "2024"
license = "MIT"
repository = "https://github.com/BANG88/kagi"

[workspace.dependencies]
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.150"
thiserror = "2.0.18"
anyhow = "1.0.102"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "signal", "net", "time"] }
time = { version = "0.3", features = ["serde", "formatting", "parsing"] }
base64 = "0.22.1"
hex = "0.4.3"
nanoid = "0.5.0"
zeroize = { version = "1.9.0", features = ["derive"] }
rand = "0.10.1"
ed25519-dalek = "2.2.0"
reqwest = { version = "0.13", default-features = false, features = ["json", "rustls"] }
url = "2.5"
hmac = "0.13.0"
sha2 = "0.11.0"
age = "0.11.3"
directories = "6.0.0"
ignore = "0.4.26"
keyring = { version = "4.1.1", features = ["cli"] }
keyring-core = "1.0.0"
chacha20poly1305 = "0.10.1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
clap = { version = "4.6.1", features = ["derive", "color"] }
clap_complete = "4.6.5"
owo-colors = "4.3.0"
axum = { version = "0.8" }
tower = { version = "0.5" }
tower-http = { version = "0.6", features = ["trace", "timeout", "limit"] }
tower_governor = { version = "0.8.0" }
sqlx = { version = "0.9", default-features = false, features = ["runtime-tokio", "sqlite", "migrate", "macros", "json", "time"] }
subtle = { version = "2.6" }
ratatui = { version = "0.30" }
crossterm = { version = "0.29" }

# Internal crates (version required for crates.io resolution)
kagi-domain = { path = "crates/kagi-domain", version = "0.1.10" }
kagi-crypto = { path = "crates/kagi-crypto", version = "0.1.10" }
kagi-store = { path = "crates/kagi-store", version = "0.1.10" }
kagi-sync = { path = "crates/kagi-sync", version = "0.1.10" }
kagi-server = { path = "crates/kagi-server", version = "0.1.10" }
kagi-app = { path = "crates/kagi-app", version = "0.1.10", default-features = false }

[package]
name = "kagi-vault"
version = "0.1.10"
edition = "2024"
description = "Encrypted secrets and environment variable manager for teams — a secure, team-ready dotenv alternative with per-service isolation"
license = "MIT"
repository = "https://github.com/BANG88/kagi"
readme = "README.md"
keywords = ["env", "secrets", "encryption", "vault", "cli"]
categories = ["command-line-utilities", "config"]

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

[features]
default = ["server"]
server = ["kagi-app/server"]
tui = ["kagi-app/tui", "ratatui", "crossterm"]

[dependencies]
kagi-app = { workspace = true, default-features = false }
tokio = { workspace = true }
tracing-subscriber = { workspace = true }

# TUI dependencies (forwarded from kagi-app)
ratatui = { workspace = true, optional = true }
crossterm = { workspace = true, optional = true }

[workspace.metadata.release]
shared-version = true
tag-name = "v{{version}}"
pre-release-replacements = []

[dev-dependencies]
assert_cmd = "2.2.2"
predicates = "3.1.4"
tempfile = "3.27.0"
serde_json = { workspace = true }
serde = { workspace = true }
reqwest = { workspace = true }
base64 = { workspace = true }
hex = { workspace = true }
nanoid = { workspace = true }
rand = { workspace = true }
sha2 = { workspace = true }
url = { workspace = true }
time = { workspace = true }
keyring = { workspace = true }
keyring-core = { workspace = true }
directories = { workspace = true }
kagi-domain = { workspace = true, features = ["test-utils"] }
kagi-store = { workspace = true, features = ["test-utils"] }
kagi-sync = { workspace = true, features = ["server"] }
kagi-server = { workspace = true }
