ProtectedfeaturesThe capability flags for the provider this bridge instance serves. Populated from the RealtimeBridgeContext at BaseRealtimeBridge.Connect time (and may be set by the engine immediately after construction). Drives BaseRealtimeBridge.RequireFeature.
ProtectedproviderThe provider's display name for this bridge instance, used in capability-error messages. Populated from the RealtimeBridgeContext; falls back to the driver class name.
The bot's participant identity in the joined room (or null before Connect).
The provider's supported-feature flags for this bridge instance.
Read-only accessor over the internally-held BaseRealtimeBridge.features. The engine consults this (and the underlying provider metadata) to decide which optional methods are safe to call; a driver consults it via BaseRealtimeBridge.RequireFeature.
ProtectedapplyCaptures the connection context onto the instance so BaseRealtimeBridge.Features, BaseRealtimeBridge.RequireFeature, and capability-error messages have the provider's flags and name. A concrete BaseRealtimeBridge.Connect should call this first.
The bridge context handed to Connect.
Connects to the MJ-native LiveKit room and brings the bot online. Captures the capability context, builds the SDK from the sdkFactory, wires the inbound per-participant audio path and room-disconnected callback, connects, and (when the provider diarizes) constructs + seeds the Meeting Controls event source.
The bridge context (features, provider name, the room URL as Address, config carrying
the signed access token).
The bot identity + room (external connection) identifiers, persisted by the engine.
Disconnects from the LiveKit room and releases all SDK resources. Tolerant of teardown errors.
Why the disconnect happened (LiveKit teardown is uniform; the bot simply leaves).
Flushes the agent's queued outbound voice on barge-in (the user interrupted the agent).
Returns the LiveKit Meeting Controls event source for this session (roster · speaking · mute), or
null when diarization is off (no roster to facilitate). The engine wires the Meeting Controls
channel from this.
Returns the current LiveKit participant roster (gated by SpeakerDiarization). Re-asserts the
flag (defense-in-depth) so even an engine-bypassing caller cannot pull a roster a disabled
provider forbids.
The current participants.
ProtectednotBuilds the standard BridgeCapabilityNotSupportedError for an un-overridden virtual method or a failed feature requirement, stamped with this bridge's provider name.
The feature / method name to report.
The error to throw or reject with.
Registers the inbound-media handler. The driver forwards each raw per-participant audio frame
(with its speaker identity) to this handler; the engine routes it to IRealtimeSession.SendInput.
Invoked with each inbound media frame.
Registers a roster-change handler (gated by SpeakerDiarization). The driver fires it from the
SDK's participant join/leave stream with the full current roster.
Invoked with the updated participant list on each change.
ProtectedRequireDefense-in-depth guard: asserts a SupportedFeatures flag is enabled before the driver
performs a capability-gated action, throwing BridgeCapabilityNotSupportedError if it
is false/omitted. An overriding driver method should call this at its top so that even a
direct (engine-bypassing) caller cannot run an action the metadata says is off.
The IBridgeProviderFeatures flag to require.
Sends a message on the LiveKit data channel — the room-native "chat". Exposed for the channel plane / turn-taking hybrid mode (the social-cost-free "raise hand"). Best-effort — a failure is logged, never fatal.
The data/chat message to send.
Sends DTMF tones on a telephony bridge.
Capability-gated by SupportedFeatures.DTMF. Throws unless overridden by a telephony driver.
The DTMF digit string to send (e.g. '1234#').
A promise that resolves once the tones have been sent.
Sends an outbound media frame into the meeting/call — the agent's voice/video/screen
(fed from IRealtimeSession.OnOutput). Audio is just one track; the frame's
BridgeMediaFrame.Track selects which.
The outbound track the frame is destined for (must be an *-out kind).
The media frame to send.
Sets the LiveKitRoomSdkFactory this driver uses to construct its SDK seam at connect — the
creation seam (mirroring Zoom's SetSdkFactory). Production binds the real LiveKit room SDK
adapter here; tests inject a FakeLiveKitRoomSdk.
The factory that builds the ILiveKitRoomSdk for a session.
Transfers the call to another party on a telephony bridge.
Capability-gated by SupportedFeatures.CallTransfer. Throws unless overridden.
The transfer target (a phone number or platform endpoint identifier).
A promise that resolves once the transfer has been initiated.
Realtime Bridge driver for the MJ-native LiveKit room.
Construct the driver with the default constructor (the engine's
ClassFactorypath) — it lazily builds the LiveKit room SDK from the sdkFactory at Connect time. Tests inject aFakeLiveKitRoomSdkby overriding the factory via SetSdkFactory (the creation seam) before connecting.Registered via
@RegisterClass(BaseRealtimeBridge, 'LiveKitBridge').