[workspace]
resolver = "2"
members = [
    "crates/cortex-core",
    "crates/cortex-gateway",
    "crates/cortex-cli",
    "crates/neuron",
    "crates/helexa-acp",
    "crates/helexa-bench",
    "crates/helexa-router",
    "crates/helexa-stream",
    "crates/helexa-upstream",
]

[workspace.package]
version = "0.1.16"
edition = "2024"
license = "GPL-3.0-or-later"
repository = "https://git.lair.cafe/helexa/helexa"

[workspace.dependencies]
# async runtime
tokio = { version = "1", features = ["full"] }

# web framework
axum = { version = "0.8", features = ["macros"] }
tower = "0.5"
tower-http = { version = "0.6", features = ["cors", "trace", "timeout"] }

# serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"
toml = "0.8"

# http client (for proxying to neuron backends)
reqwest = { version = "0.12", features = ["json", "stream"] }

# observability
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }
metrics = "0.24"
metrics-exporter-prometheus = "0.16"

# time
chrono = { version = "0.4", features = ["serde"] }

# config
figment = { version = "0.10", features = ["toml", "env"] }

# error handling
anyhow = "1"
thiserror = "2"

# async traits
async-trait = "0.1"

# CLI
clap = { version = "4", features = ["derive"] }

# futures / streams (for SSE proxying)
futures = "0.3"
tokio-stream = "0.1"
eventsource-stream = "0.2"

# workspace crates
cortex-core = { path = "crates/cortex-core" }
cortex-gateway = { path = "crates/cortex-gateway" }

# Patched cudarc (affects neuron's 0.19.x only; candle's 0.17.x is
# untouched since the fork is 0.19.7 and doesn't satisfy a 0.17 req). Adds
# Comm::abort / get_async_error / raw comm() — needed for #17 Stage 2 TP
# hang-recovery (abort a wedged collective from another thread, then
# rebuild the comm). Pinned to a fork revision pending upstream review
# (grenade/cudarc @ nccl-comm-abort).
[patch.crates-io]
cudarc = { git = "https://github.com/grenade/cudarc", rev = "63327a256059f8252641ae46c6bb9eefe707f382" }
