# crates/rutster/Cargo.toml
[package]
name = "rutster"
version = "0.0.0"
license.workspace = true
edition.workspace = true
repository.workspace = true
description = "Rutster binary: axum signaling + media driver + static browser test client (slice 1)."

[dependencies]
rutster-media = { path = "../rutster-media" }
rutster-call-model = { path = "../rutster-call-model" }
rutster-tap = { path = "../rutster-tap" }
# rutster-trunk: the rented-transport crate owns `TwilioCredentials` (T2) +
# the env parser's return type. The binary's `config::twilio_credentials`
# (T6) constructs it from env vars + hands it to the live
# `TwilioCallControlClient` (when `--features=twilio-live` is enabled on the
# trunk crate). ADR-0009: `TwilioCredentials` is imported here but never
# re-exported through the workspace root / never sent over the tap WS protocol.
rutster-trunk = { path = "../rutster-trunk" }
axum = { workspace = true }
# axum-server 0.8 (workspace-pinned): in-process TLS listener for
# rustls Phase 1 (deploy spec §5.4). Used by serve_tls::serve_tls_with_nodelay
# + tls_acceptor::NodeLayAcceptor.
axum-server = { workspace = true }
tokio = { workspace = true }
tokio-tungstenite = { workspace = true }
futures-util = { workspace = true }
url = { workspace = true }
dashmap = { workspace = true }
uuid = { workspace = true }
async-trait = { workspace = true }
thiserror = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
ipnet = { workspace = true }
redis = { workspace = true }

[dev-dependencies]
tower = { workspace = true }
rutster-tap-echo = { path = "../rutster-tap-echo" }
# Self-signed cert generation for the serve_tls_nodelay integration test.
# Pinned to 0.14 to match the existing Cargo.lock transitive pin (rcgen
# 0.14.8 bumped MSRV to 1.88 — the workspace notes this in Cargo.toml's
# root comments).
rcgen = "0.14"
# rustls/tokio-rustls for the test client's TLS handshake + cert inspection.
rustls = { workspace = true }
tokio-rustls = { workspace = true }
# slice-3 §7.4: integration test spins up the in-process MockRealtimeBrain
# + drives the brain's `run_openai_pump` directly (replicating the brain
# process's accept loop in the test, no subprocess). The `mock` feature
# brings in MockRealtimeBrain without requiring OPENAI_API_KEY.
rutster-brain-realtime = { path = "../rutster-brain-realtime", features = ["mock"] }

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