AbstractStatic Optional 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 using a short-lived token the server minted).
Defaults to false. Providers that support browser-direct sessions override this to true
and implement CreateClientSession. The server-bridged topology (where the provider
socket lives on the server, via StartSession) is supported by every driver regardless
of this flag.
true if CreateClientSession is supported; false otherwise.
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 an ephemeral, server-scoped client credential plus a provider-native session config for a client-direct realtime session.
In the client-direct topology the browser owns the provider socket (e.g. WebRTC), but the
server still controls the prompt and tool set: it mints a short-lived token and hands back
a ClientRealtimeSessionConfig whose SessionConfig the matching client driver applies
when it opens its socket. This keeps prompt/tool authority server-side even though the media
plane is client-direct.
Not every provider supports this (some only expose a server-bridged socket), so this is a
concrete method that throws by default rather than an abstract one — that would force every
existing and future driver to implement it. Providers that support it override
SupportsClientDirect to true and override this method.
The session parameters (system prompt, tools, model, config bag).
A promise resolving to the minted ClientRealtimeSessionConfig.
OptionalExchangeOptional WebRTC SDP exchange seam for drivers that support server-brokered WebRTC topologies.
The local SDP offer generated by the browser.
Optional_sessionConfig: Record<string, unknown>The session configuration to initialize the session with.
The answer SDP, provider session ID, and any prebill accounting.
AbstractStartOpens a stateful duplex session with the provider.
The returned IRealtimeSession is the long-lived handle that streams media and transcripts in both directions, surfaces tool calls and usage telemetry, and reports provider-detected interruptions (barge-in). The caller is responsible for closing the session via IRealtimeSession.Close.
Configuration for the session (system prompt, tools, initial context, model, and an open config bag).
A promise resolving to the live session handle.
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.
Base AI model class, used for everything else in the MemberJunction AI environment