Optionalendpoint: stringStatic ReadonlySupportsWhether this driver subclass supports dynamic, multi-tool sets projected into the realtime session (e.g. direct action invocation on realtime co-agents).
Static capability descriptor read before a session instance exists.
Default: absent / false. Subclasses that support dynamic toolsets declare public static readonly SupportsDynamicToolSet = true;.
ProtectedapiOnly sub-classes can access the API key
Static fallback list of provider-native voices supported by this driver when metadata personas are not present or sparse.
NOTE: Database metadata (MJ: AI Personas + AI Model Personas) is authoritative where configured.
At runtime, GetRealtimeModelVoices unions metadata personas with this driver fallback list so that
newly uncatalogued provider voices remain selectable while catalogued personas carry curated names/descriptions.
The supported voice ids (id + human label), or [] when none are declared.
Whether this driver can mint an ephemeral, server-scoped client credential for a client-direct realtime session (the browser opens its own provider socket).
Whether this driver's sessions carry a video track in addition to audio.
false in every MJ driver.
Nothing reads it, and no driver overrides it: it is false for Gemini Live, which takes camera video
and renders avatars. What a session does with video is declared on its IRealtimeSession.Capabilities:
RealtimeSessionCapabilities.SupportedInboundTracks for video in and
RealtimeSessionCapabilities.SupportedOutboundTracks for video out, each track with its encoding. Whether a
model renders a live avatar is SupportsAvatarOutput. A driver declares video there, not here.
Mints a client session config for the browser-direct WebRTC topology.
In the OpenAI Live WebRTC topology, the browser exchanges its offer SDP with the trusted server broker (via ExchangeWebRtcSdp); the project API key stays server-side. WebRTC omits audio.format entirely (negotiated via SDP).
ProtectedcreateCreation seam for the live WebSocket connection. Unit tests override this to return an in-memory mock.
Exchanges a client WebRTC offer SDP for an answer SDP via OpenAI's POST /v1/live/sessions,
using the server's project API key.
In the OpenAI Live WebRTC topology, the browser never contacts api.openai.com directly; the trusted application server exchanges the offer for an answer and starts the session. Note: creating a WebRTC session pre-bills 15 seconds of voice duration.
The local SDP offer generated by the browser.
OptionalsessionConfig: Record<string, unknown>The session configuration to initialize the session with.
The answer SDP, provider session ID, and the 15-second pre-bill accounting.
ProtectedpostProtectedresolveResolves the browser-facing URL of MJAPI's WebRTC SDP broker for one ticket:
<MJAPI origin>/realtime/sdp-exchange?ticket=<id>.
The origin comes from the shared ResolveRealtimeProxyBaseHttpUrl (@memberjunction/ai), so this driver
finds MJAPI the way the relay and proxy drivers do: an explicit Config.proxyBaseUrl, else this driver's own
Config.brokerBaseUrl, then MJAPI_PUBLIC_URL, then GRAPHQL_BASE_URL + GRAPHQL_PORT. With nothing set
that is http://localhost:4000, MJAPI's default port. Only the origin is kept, because MJAPI serves the broker
at its root, not under the GraphQL path.
Opens a duplex OpenAI Live session and awaits initialization.
Whether this driver's sessions can render a live avatar for the model, on the endpoint the driver serves.
Defaults to false: a driver whose models render no avatar says nothing more, and may ignore an avatar request. A
driver that renders one for some models (Gemini Enterprise) overrides it. The client-session service reads it to
tell a call or a meeting that asked for an avatar "this voice model can't show an avatar"
(RealtimeAvatarUnavailableReason 'endpoint'), whichever driver serves it.
The provider's API name for the model.
true when sessions on this model can render a live avatar; false otherwise.
StaticCompileCompiles the delegation policy block informing GPT-Live about available backend tools in browser-direct / standalone sessions where spoken holding phrases must NOT be used.
Note: This policy is only appended for standalone / bare-tool sessions that lack co-agent companion
framing. On co-agent sessions (where hasToolFraming: true or invoke-target-agent is present),
the companion prompt itself defines tool guidance (BuildRealtimeAgentFraming), so this block is
omitted to prevent contradictory instructions and holding phrase stalls.
StaticCompileCompiles the delegation policy block informing GPT-Live about available backend tools and when to delegate to the reasoning model.
Driver class for OpenAI GPT-Live 1 full-duplex realtime models.