Files
rutster/crates/rutster-trunk/Cargo.toml
Aaron D. Lee d5c00897e8
All checks were successful
CI / fmt (pull_request) Successful in 54s
CI / clippy (pull_request) Successful in 1m58s
CI / test (1.85) (pull_request) Successful in 4m57s
CI / test (stable) (pull_request) Successful in 7m23s
CI / deny (pull_request) Successful in 1m26s
test(trunk): reflex-on-trunk verification (T7) + PSTN sim e2e (T8) — slice-5
T7: proves slice-4's Reflex<TapAudioPipe> + LocalVadReflex decorates the
trunk leg's TapAudioPipe identically; barge-in fires on PSTN caller speech
through the same state machine as WebRTC caller speech.

T8: MockRealtimeBrain + BrainShim drives a synthetic PSTN caller through the
FOB reflex loop end-to-end: loud PCM -> local VAD trips -> barge kills ->
brain reply -> un-mute -> idle timeout (caller hangup) closes the session.

Dev-dependencies added to rutster-trunk/Cargo.toml so the integration tests
reach MockRealtimeBrain, futures-util, and tokio-tungstenite without pulling
FOB source into the trunk crate.

Signed-off-by: Aaron D. Lee <himself@adlee.work>
2026-07-05 04:02:56 -04:00

49 lines
2.3 KiB
TOML

# crates/rutster-trunk/Cargo.toml
[package]
name = "rutster-trunk"
version = "0.0.0"
license.workspace = true
edition.workspace = true
repository.workspace = true
description = "Rented carrier transport — CPaaS media-leg ingress; no first-party SIP (spearhead step 5, ADR-0007)."
[dependencies]
# FOB-side wiring (slice-5 dev-c branch -- tasks T1/T3/T4/T5/T7/T8):
# * rutster-media: PcmFrame + SAMPLES_PER_FRAME + Reflex stack (REUSED slice-4 verbatim).
# * rutster-call-model: Channel + ChannelId for TrunkSession (T4).
# * rutster-tap: TapAudioPipe (REUSED verbatim -- the architectural load-bearing claim, spec §6.1).
rutster-media = { path = "../rutster-media" }
rutster-call-model = { path = "../rutster-call-model" }
rutster-tap = { path = "../rutster-tap" }
tokio = { workspace = true, features = ["macros", "rt-multi-thread", "sync", "time"] }
axum = { workspace = true, features = ["ws"] }
serde = { workspace = true, features = ["derive"] }
serde_json = { workspace = true }
tracing = { workspace = true }
thiserror = { workspace = true }
base64 = { workspace = true }
url = { workspace = true }
# NOTE: reqwest + async-trait land in dev-b's branch (T2 provider trait + T6 TwilioCallControlClient
# live REST impl). They live at arm's length from the FOB hot path per ADR-0009 -- never re-exported
# through the workspace, never imported by g711/twilio_media_streams/session/loop_driver. The
# stacked-branches rebase-merge (per AGENTS.md Git workflow carve-out) reconciles the [dependencies]
# table at merge time.
[features]
default = []
# Reserved for T6 (dev-b's live TwilioCallControlClient REST impl). The routine CI gate stays
# default-features-off -- MockCallControlClient is the per-PR integration test surface. The
# maintainer triggers `cargo test --features=twilio-live` manually pre-release.
twilio-live = []
[dev-dependencies]
# `tower::ServiceExt::oneshot` is the canonical axum router helper for unit tests
# (turns a Router into a one-shot Service: `app.oneshot(request).await`).
tower = { workspace = true }
# T7/T8 integration tests exercise the trunk reflex stack against the same
# MockRealtimeBrain + tokio-tungstenite surface slice-3/4 used.
futures-util = { workspace = true }
tokio-tungstenite = { workspace = true }
tracing-subscriber = { workspace = true }
rutster-brain-realtime = { path = "../rutster-brain-realtime", features = ["mock"] }