M-6a — Voice harness commands: _injectAudioFrame, _injectWakeWord, _injectSTT, _observeTTSAudio (UQ-1 gated). G-001 resolution. First-class harness commands. Repurposes existing MockTTSForController etc. (hoisted in M-0.9).
JARVIS_HARNESS=1
_injectAudioFrame(pcm:, sampleRate:)
_injectWakeWord(confidence:)
_injectSTT(text:, isFinal:)
_observeTTSAudio() -> AsyncStream<AudioBuffer>
packages/JarvisAPI/Sources/JarvisAPI/Surfaces/Voice+Adapter.swift
packages/Harness/Sources/Harness/Doubles/Voice*.swift
S-VOICE-007..008 (inject paths exercise harness commands).
S-VOICE-007..008
#10
.planning/architecture/JARVIS-API-MIGRATION-PLAN.md §2.7 (M-6.4) G-001 (audio injection seam)
.planning/architecture/JARVIS-API-MIGRATION-PLAN.md
No dependencies set.
The note is not visible to the blocked user.
Goal
M-6a — Voice harness commands: _injectAudioFrame, _injectWakeWord, _injectSTT, _observeTTSAudio (UQ-1 gated). G-001 resolution. First-class harness commands. Repurposes existing MockTTSForController etc. (hoisted in M-0.9).
Scope
JARVIS_HARNESS=1_injectAudioFrame(pcm:, sampleRate:)_injectWakeWord(confidence:)_injectSTT(text:, isFinal:)_observeTTSAudio() -> AsyncStream<AudioBuffer>Files
packages/JarvisAPI/Sources/JarvisAPI/Surfaces/Voice+Adapter.swiftpackages/Harness/Sources/Harness/Doubles/Voice*.swift(from M-0.9)Acceptance
Test
S-VOICE-007..008(inject paths exercise harness commands).Parent epic
#10
Source
.planning/architecture/JARVIS-API-MIGRATION-PLAN.md§2.7 (M-6.4)G-001 (audio injection seam)