[package]
name = "kvendra"
version = "0.4.0-alpha.6"
edition = "2024"
rust-version = "1.85"
license = "Apache-2.0"
description = "Developer harness CLI for Kvendra — capability broker via MCP with zero-knowledge local vault."
repository = "https://github.com/KvendraAI/kvendra-cli"
homepage = "https://kvendra.com"
readme = "README.md"
keywords = ["agents", "mcp", "kvendra", "cli", "secrets"]
categories = ["command-line-utilities", "development-tools", "cryptography"]

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

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

[dependencies]
# CLI
clap = { version = "4", features = ["derive", "env"] }
clap_complete = "4"
rpassword = "7"
# Async runtime
tokio = { version = "1", features = ["macros", "rt-multi-thread", "sync", "io-std", "io-util", "time", "fs", "process", "signal"] }
# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml_ng = "0.10"
toml = "0.8"
# Crypto
argon2 = "0.5"
aes-gcm = "0.10"
zeroize = { version = "1", features = ["zeroize_derive"] }
subtle = "2"
hmac = "0.12"
sha2 = "0.10"
rand = "0.8"
# Recovery
bip39 = { version = "2", features = ["rand"] }
# Storage
rusqlite = { version = "0.31", features = ["bundled"] }
# OS keychain (opt-in)
keyring = { version = "3", default-features = false, features = ["apple-native", "windows-native", "linux-native-sync-persistent"] }

# macOS biometric ACL (REQ-KVD-005 / ISSUE-KVD-CLI-017) — direct deps for SecAccessControl + SecItem*
[target.'cfg(target_os = "macos")'.dependencies]
security-framework = "3"
security-framework-sys = "2"
core-foundation = "0.10"
core-foundation-sys = "0.8"

# SIGPIPE handler (ISSUE-KVD-CLI-042) — install SIG_DFL on unix to avoid Rust default panic
[target.'cfg(unix)'.dependencies]
libc = "0.2"
# HTTP
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls", "json", "stream", "multipart"] }
# TUI (Pase B placeholder)
ratatui = { version = "0.29", optional = true }
crossterm = { version = "0.28", optional = true }
# Errores
thiserror = "1"
anyhow = "1"
# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
# Regex (detection)
regex = "1"
# Time helpers
time = { version = "0.3.47", features = ["formatting", "macros", "parsing"] }
hex = "0.4"
base64 = "0.22"
# M1 Sprint 4 — CLI workspace mode (REQ-KVD-CLI-004/008/009/010)
async-trait = "0.1"
chrono = { version = "0.4", default-features = false, features = ["clock", "serde"] }
url = "2"
urlencoding = "2"
fs2 = "0.4"
tiny_http = "0.12"
webbrowser = "1"
# M2 Sprint 4 — Audit export firmado (REQ-KVD-CLI-007)
serde_jcs = "0.1"
csv = "1.3"
printpdf = "0.7"
# M2 Sprint 5 — Vault cloud backup (REQ-KVD-CLI-005)
tar = "0.4"
# HKDF (already implemented manually in vault/session, but reuse for backup_crypto)
hkdf = "0.12"

[features]
default = ["tui"]
tui = ["dep:ratatui", "dep:crossterm"]

[dev-dependencies]
assert_cmd = "2"
predicates = "3"
tempfile = "3"
