[package] license = "Apache-2.0" name = "xai-grok-voice" version = "0.1.0" edition.workspace = true description = "Voice dictation (streaming STT) for Grok Build CLI" [dependencies] anyhow = { workspace = true } futures-util = { workspace = true } # Used by the standalone `voice-probe` bin to install the process-level crypto # provider (`ring`, matching the pager's choice in its own main). The lib itself # only reaches rustls through tokio-tungstenite. rustls = { version = "0.23", default-features = false, features = ["ring", "logging", "std", "tls12"] } serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["sync", "time", "macros", "rt", "rt-multi-thread"] } tokio-tungstenite = { workspace = true, features = ["rustls-tls-webpki-roots"] } toml = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true } url = { workspace = true } [features] # `audio` = "microphone capture is compiled in". It's enabled on every OS for # production builds: macOS/Windows link `cpal`; Linux shells out to a system # recorder (see `src/audio/capture_linux.rs`) and links no audio library, so # `cpal` -> `alsa-sys` never reaches the fully-static musl release binary. # `cpal` is target-gated to non-Linux below, so enabling `audio` on Linux pulls # no extra dependency — it only compiles the subprocess backend. default = ["audio"] # Alternate default feature set that opts out of audio. CI builds the voice # crate WITHOUT `audio` so the pager binary has no mic capture in the test # sandbox (it has no audio device), which is what the pager's local PTY e2e # test needs. default-bazel = [] audio = ["dep:cpal"] # cpal is only used by the non-Linux capture backend. Gating it to non-Linux # keeps `alsa-sys` (a NEEDED `libasound.so.2`) out of the static musl build; on # Linux the `audio` feature compiles the subprocess recorder backend instead. [target.'cfg(not(target_os = "linux"))'.dependencies.cpal] version = "0.15" optional = true [[bin]] name = "voice-probe" path = "src/bin/voice_probe.rs" required-features = ["audio"] [lints] workspace = true