Interface: SpeechMessage
Defined in: packages/aiui-claude-channel/src/intent-messages.ts:55
A base64 audio clip pushed to the client to play — the premium tier's spoken TTS ack and the flagship tier's model reply share this one additive message (the streaming-turns notes §4 and the model-tiers notes T2/T3, both in git history). Distinguished from a per-frame ack and a LoweredMessage by its kind. label (when present) is the spoken text, for the widget's speaker line and the trace.
Properties
data
data:
string
Defined in: packages/aiui-claude-channel/src/intent-messages.ts:67
Base64-encoded audio bytes.
id
id:
string
Defined in: packages/aiui-claude-channel/src/intent-messages.ts:59
A per-thread clip/stream id (ack_N / lint_N), for the client player.
kind
kind:
"speech"
Defined in: packages/aiui-claude-channel/src/intent-messages.ts:56
label?
optionallabel?:string
Defined in: packages/aiui-claude-channel/src/intent-messages.ts:77
The spoken text, when known (the widget shows it; the trace records it).
mime
mime:
string
Defined in: packages/aiui-claude-channel/src/intent-messages.ts:65
MIME of the payload. Whole clips (TTS acks): a container (audio/mpeg). Streamed reply chunks: raw audio/pcm;rate=24000 — seq is present and the client schedules each chunk for gapless playback as it arrives.
seq?
optionalseq?:number
Defined in: packages/aiui-claude-channel/src/intent-messages.ts:75
Present ⇒ this is one CHUNK of a streamed reply (0-based, in order, sharing id with its siblings). Absent ⇒ a whole clip, played as before. Streaming playback is the contract for model replies (whole-clip buffering retired 2026-07-19 — it delayed the first audible byte by the entire reply's generation time).
threadId
threadId:
string
Defined in: packages/aiui-claude-channel/src/intent-messages.ts:57