[package]
name = "car-server-core"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "Transport-neutral library for the CAR daemon JSON-RPC dispatcher (used by car-server and tokhn-daemon)"

[dependencies]
car-ir = { path = "../car-ir", version = "0.26.0" }
car-engine = { path = "../car-engine", version = "0.26.0" }
car-proto = { path = "../car-proto", version = "0.26.0" }
car-verify = { path = "../car-verify", version = "0.26.0" }
car-eventlog = { path = "../car-eventlog", version = "0.26.0" }
car-state = { path = "../car-state", version = "0.26.0" }
car-policy = { path = "../car-policy", version = "0.26.0" }
car-memgine = { path = "../car-memgine", version = "0.26.0" }
car-multi = { path = "../car-multi", version = "0.26.0" }
car-connectors = { path = "../car-connectors", version = "0.26.0" }
car-workflow = { path = "../car-workflow", version = "0.26.0" }
car-builder = { path = "../car-builder", version = "0.26.0" }
car-scheduler = { path = "../car-scheduler", version = "0.26.0" }
car-inference = { path = "../car-inference", version = "0.26.0" }
car-ffi-common = { path = "../car-ffi-common", version = "0.26.0", features = ["parakeet", "diarization"] }
car-voice = { path = "../car-voice", version = "0.26.0", features = ["parakeet", "diarization"] }
car-meeting = { path = "../car-meeting", version = "0.26.0", features = ["parakeet", "diarization"] }
car-a2ui = { path = "../car-a2ui", version = "0.26.0" }
car-a2a = { path = "../car-a2a", version = "0.26.0" }
car-ui-agent = { path = "../car-ui-agent", version = "0.26.0" }
car-registry = { path = "../car-registry", version = "0.26.0" }
car-mcp = { path = "../car-mcp", version = "0.26.0" }
car-secrets = { path = "../car-secrets", version = "0.26.0" }
car-auth = { path = "../car-auth", version = "0.26.0" }
car-external-agents = { path = "../car-external-agents", version = "0.26.0" }
# Needed by `crate::a2a` (moved here in v0.8.x phase 7.3) — wraps
# the car-a2a `A2aDispatcher` in an axum HTTP server so the daemon's
# `a2a.start` JSON-RPC method can stand up an HTTP listener for
# remote A2A peers. Same minimal feature set car-ffi-common used
# previously.
axum = { version = "0.7", default-features = false, features = ["http1", "tokio", "json"] }
# `tokio-stream` provides the Stream impl axum::response::Sse needs;
# `futures` brings StreamExt for keep-alive interleaving. Both are
# already in the transitive graph via tokio + axum, declared here to
# make the direct uses in `crate::mcp` (SSE for server-initiated
# requests, MCP-3) explicit.
tokio-stream = "0.1"
futures-util = "0.3"
# Needed by `crate::voice_turn` (moved here in phase 7.3) — the
# fast/sidecar dispatch uses CancellationToken via tokio_util to
# tear down both tracks on barge-in. The crate already pulled it
# transitively via car-engine; declaring it here makes the direct
# import explicit.
tokio-util = { version = "0.7", default-features = false }
base64 = "0.22"
tempfile = "3"

chrono.workspace = true
serde.workspace = true
serde_json.workspace = true
tokio.workspace = true
tracing.workspace = true
async-trait = "0.1"
futures = "0.3"
tokio-tungstenite = "0.27"
uuid.workspace = true
dashmap = "6"
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls"] }
# Run-store retention config — reads the `[runs]` section of
# `~/.car/config.toml` (agent run tracing, U3). Same toml dep
# car-memgine's project config uses.
toml = "0.8"

# Process-group kill for the coder's host shell tool (timeout sweeps the
# whole tree, not just the spawned sh).
[target.'cfg(unix)'.dependencies]
libc = "0.2"

[dev-dependencies]
tempfile = "3"
