OptionalAgentThe agent to voice, by id (preferred).
OptionalAgentThe agent to voice, by name (fallback when no id).
OptionalAgentThe MJ: AI Agent Sessions id this bridge belongs to. Threaded into the co-agent observability run so
the voice session's runs (and the target-agent runs delegated under it) group under the same session —
identically to the native-chat surface. Without it the co-agent run can't record its session.
OptionalAvatar'room' when the bridge's bot can publish the agent's avatar into the room (the LiveKit coordinator asks its native
module first). Flows to the session's avatar request, so the driver may render it. Absent: audio only.
OptionalContextThe user the session runs as (scopes memory + DB ops).
OptionalConversationThe MJ: Conversations row the session writes to — stamped on the co-agent observability run.
OptionalConversationEarlier turns to seed the model's context. Defaults to none (a fresh call has no history).
OptionalHostHost-authored instructions appended to the system prompt (e.g. the phone-call and caller framing).
OptionalHostTools the host declares and executes itself (a phone call's transfer_call / send_dtmf / end_call).
Added to the model's tool set; executed through the runtime's local tool handler
(see GetBridgeRealtimeRuntime).
OptionalMeetingMulti-agent meeting mode. Set true when the agent joins a room that already has other agents,
so it disables blind auto-response and speaks only when addressed (the room coordinator decides this).
Flows to params.data.realtimeMeetingMode. See plans/realtime/multi-agent-meeting-turn-taking.md.
OptionalMetadataThe request-scoped metadata provider (multi-provider safe). Falls back to the global default.
OptionalPhonetrue when the session is a phone call (a carrier call, or a SIP call in a LiveKit room). Flows to
params.data.realtimePhoneCall: the session then asks the driver for no avatar (the caller sees no video) and
reports phone as its avatar status.
OptionalPriorRole-tagged transcript lines (User: … / Assistant: …) of the conversation so far, framed into the
prompt as "earlier in this conversation". Set when a lost model session is re-opened mid-call so the new
session remembers what was said.
OptionalRealtimeOptional per-session Realtime MODEL override (an MJ: AI Models Name or ID) — a dev choosing a
specific realtime model for THIS agent in the room. Wins over the co-agent config's modelPreference.
OptionalRealtimeOptional per-session VOICE override (a provider-native voice id, e.g. OpenAI echo/shimmer) — how
two agents in the same room are given distinct voices. Replaces the config's per-provider voice.
OptionalResolveOptional callback that allows the host to resolve host tools dynamically based on the model, vendor, and driver actually resolved for the session, before session opening.
OptionalRoomThe transport endpoint being joined (room/meeting/number) — informational here; not required.
OptionalSelfThe names the agent answers to (display name + aliases) — phrasing for the meeting prompt only.
OptionalTargetThe TARGET agent the co-agent voices — the one the user is actually "calling". The Realtime
Co-Agent is a voice front-end that delegates to this agent via invoke-target-agent; without a
target it has nobody to speak for and stays idle. Flows to params.data.targetAgentID.
The context a bridge passes to CreateBridgeRealtimeSession. Structurally compatible with the LiveKit coordinator's
RealtimeSessionStartContext(and any future bridge's equivalent) so this factory can be bound directly viaSetSessionFactory(...)without the consumer adapting shapes.