Outbound PCM rate (Hz) — the AudioSource rate (model output rate).
Inbound PCM rate (Hz) — each AudioStream's resample target (model input rate).
Channel count.
The @livekit/rtc-node loader.
Connects to the room, publishes the bot's audio track, and wires inbound audio + roster events.
Disconnects, closes inbound streams, and releases the room. Tolerant of teardown errors.
Flushes all pending outbound audio — both our pre-capture outboundQueue and the audio
already buffered inside the LiveKit AudioSource. Called on barge-in (the user interrupts the
agent): without it, the agent keeps talking from buffered audio after the model has stopped
generating, so interruption appears not to work. Never throws.
Returns the current roster (remote participants — the bot excludes itself from addressing).
Registers the inbound per-participant audio handler. "Latest handler wins."
Registers the room-disconnected handler.
Registers the participant-connected handler.
Registers the participant-disconnected handler.
Enqueues one PCM frame for the bot's audio track (the agent's voice). The sync seam contract is preserved (never throws), but the frame is fed through drainOutbound so captures are serialized — see outboundQueue for why concurrent captures corrupt playout pacing.
Publishes a reliable text message on the room data channel (the room-native "chat").
Screen publish — same status as publishVideo. One-time-warned no-op.
Video publish is not part of the voice MVP — LiveKit supports it, but it needs a VideoSource +
frame-format negotiation beyond this wrapper's scope. One-time-warned no-op (never throws).
A real NativeRoomClient over
@livekit/rtc-node. One instance per room session. Constructed by CreateLiveKitRtcNodeModule'screateRoomClient, driven byLiveKitNativeMeetingSdk.