OptionalaudioOptionalonOptionalonOptionalvoiceByte-accurate audio cursor in seconds — the cumulative PCM byte-duration
of every segment recorded so far. Segments are laid end-to-end on this
cursor (not on wall-clock) so a segment's endTime - startTime equals its
true audio length and recording.duration equals the full.wav
byte-duration — independent of in-process send latency (review M1).
Latency is measured separately from the wall-clock marks the recorder
keeps, so the response-time signal is preserved. undefined/null before
the first segment (treated as 0).
OptionalvoiceBackground ambience declared by backgroundNoise(source, volume). The
audio-effects subsystem reads this when mixing user-simulator audio.
OptionalvoiceThe resolved per-run voice config (ADR-002, Gap #7). Populated at run
start from cfg.voice via resolveVoiceConfig when at least one voice
adapter is present. The judge's STT pass and the user-simulator's TTS
pass read the resolved provider/knobs here — never a module global.
null when the run has no voice config.
OptionalvoiceInterruption configuration declared by voiceProceed({ interruptions }).
The executor reads this at the top of each turn during proceed() and
decides whether to fire a barge-in.
performance.now() (or equivalent monotonic clock) anchor in seconds.
Live local-speaker playback sink. Populated by the executor when
audioPlayback === true(per-runrun({ voice: { audioPlayback } })wins over module-globalconfigure({ audioPlayback })per ADR-002). Each agent/user audio chunk is fanned out here alongside the recording.undefinedwhen audioPlayback is disabled;nullafterclose()is called at the end of a run.