[workspace]
members = [
    "common",
    "kdc_agent",
    "kdc_proxy",
]
resolver = "2"

[workspace.package]
version = "1.0.0"
edition = "2021"

[workspace.dependencies]
# Async runtime
tokio = { version = "1.52.1", features = ["rt-multi-thread", "macros", "sync", "time", "signal"] }

# Serialization
serde = { version = "1.0.228", features = ["derive"] }
serde_json = "1.0.149"

# Crypto (PSK AES-256-GCM)
openssl = "0.10.45"

# Error handling
thiserror = "2.0.12"
anyhow = "1.0.102"

# Logging
log = "0.4.29"
log4rs = { version = "1.4.0", features = ["gzip"] }

# HTTP framework (agent)
axum = "0.7.9"
axum-server = { version = "0.7.2", features = ["tls-rustls"] }
rustls = "0.23.36"
rustls-pemfile = "2.2.0"
tower = { version = "0.5.2", features = ["limit", "util"] }
tower-http = { version = "0.6.4", features = ["timeout", "limit"] }

# HTTP client (proxy)
reqwest = { version = "0.12.12", default-features = false, features = ["json", "rustls-tls", "blocking"] }

# Plugin loading
libloading = "0.8.5"

# Utilities
uuid = { version = "1.23.1", features = ["v4"] }
base64 = "0.22.1"

# Concurrency
parking_lot = "0.12.5"

# Database
rusqlite = { version = "0.32.1", features = ["bundled", "backup", "serialize"] }

# SQL parsing
sqlparser = "0.53.0"

# Token verification
token_verifier = { git = "https://gitcode.com/openeuler/global-trust-authority.git", package = "token_management", rev = "c5a974b9c"}

# Secure memory
zeroize = { version = "1.8.1", features = ["derive"] }

[profile.release]
opt-level = "s"
lto = "fat"
codegen-units = 1
panic = "abort"
strip = true

[workspace.lints.rust]
unexpected_cfgs = { level = "allow", check-cfg = ["cfg(coverage_nightly)"] }