The LiveKit SDK seam used only to actuate MuteParticipant — all perception is
fed in by the driver via the Ingest* methods so the SDK keeps a single subscriber per event.
ReadonlyCapabilitiesLiveKit room-admin can mute a published track, so the facilitator MuteParticipant tool is offered.
Forwards a hand-raise/lower signal to the channel. LiveKit emits none natively; this exists for an app that layers raise-hand over data messages.
The participant whose hand changed.
Whether the hand is now raised.
Replaces the roster with a fresh snapshot from the driver and emits it to the channel. Called by the driver after the initial connect and on every participant join/leave.
The full current LiveKit roster.
Forwards a diarized speaking-set change from the driver to the channel.
The identities currently speaking.
Mutes a participant on the platform (the actuation behind the agent's MuteParticipant tool).
Capability-gated by Capabilities; the channel checks the capability before calling this.
The participant to mute.
A promise resolving once the mute request has been issued.
Convenience alias for IngestSpeaking, kept because "notify" reads naturally at the driver's inbound-audio call site.
The identities currently speaking.
Registers a handler for hand-raise/lower signals the PLATFORM surfaces (e.g. a participant uses
the conferencing app's native "raise hand"). raised = true enqueues, false dequeues.
Invoked with the participant id and whether the hand is now raised.
Registers a handler for roster changes. Fired with the FULL current roster on every change.
Invoked with the full current roster on every change.
Registers a handler for diarized speaking changes — the set of participant ids currently speaking.
Invoked with the speaking participant ids on every change.
LiveKit's adapter to the Meeting Controls channel's event source. It maintains a live roster and mirrors diarized speaking signals, and actuates mute through the SDK adapter.
The driver owns the SDK subscriptions (the SDK seam is "latest handler wins") and feeds this source imperatively via IngestRoster / IngestSpeaking / IngestHandRaise. This source only needs the SDK for the one action it actuates — MuteParticipant. The Meeting Controls channel subscribes the three
On*streams in turn.The driver constructs ONE of these per session (only when the provider has
SpeakerDiarization, i.e. there is a roster to facilitate) and returns it fromLiveKitBridge.GetMeetingControlsEventSource.