Whether the initial session.update must wait for the server's session.created frame.
OpenAI's socket drops config sent during the handshake; xAI's accepts it immediately.
When true, InitialContext is folded into the system prompt under a "Prior context" heading
instead of being seeded as a separate user conversation item — for compat endpoints with no
guaranteed history-seeding channel (HuggingFace speech-to-speech).
OptionalinputThe ASR model for USER input transcription (opt-in pass; see OPENAI_INPUT_TRANSCRIPTION_MODEL).
undefined means the provider transcribes natively (e.g. a cascaded STT stage) and no
transcription block is sent unless the Config bag supplies inputTranscriptionModel.
The ClientRealtimeSessionConfig.Provider key the browser uses to pick its client driver.
The MJ-normalized turn-detection modes this provider's endpoint actually supports (the
catalog/cascade turnDetection.Mode vocabulary, 'default' excluded — it means "no
request"). A requested mode NOT in this list is diag-logged and falls back to the profile
default — a shared model catalog must be safe on every provider, never reject a session.
Whether this driver/session supports dynamic, multi-tool sets projected into the realtime session (e.g. per-agent direct action invocation).
Whether the provider supports LIVE turn-mode reconfiguration via a partial session.update
(drives both the session's Capabilities.CanReconfigureTurnMode and whether Reconfigure
emits anything). Compat endpoints without create_response gating set false.
Whether the provider accepts remote MCP server tools (type: "mcp") in session.tools.
Whether the provider accepts the GA parallel_tool_calls session field.
Whether the provider accepts the GA reasoning.effort session field.
Whether the provider accepts an output voice at audio.output.voice.
The fatal-error message surfaced when the socket closes unexpectedly.
Builds the audio.input.turn_detection block. disableAutoResponse comes from the Config
bag (meeting mode: the bridge, not server VAD, decides when the model speaks); requested
is the normalized turn-detection request from the catalog/config cascade (the turnDetection
bag key), already extracted and never sent raw. Return undefined to omit the block and
accept the provider default. Meeting mode ALWAYS composes on top: whatever mode is chosen,
create_response must reflect !disableAutoResponse.
Optionalrequested: RealtimeTurnDetectionSettingsMaps MJ's NORMALIZED effort level (numeric 1–100 or named — the same vocabulary as
ChatParams.effortLevel) onto THIS provider's realtime effort literals. Providers whose
endpoint uses a different level set override this seam; return undefined to drop an
unmappable value (it is never sent raw). Only consulted when supportsReasoningEffort is on.
Provider profile for the OpenAI-Realtime-protocol driver family.
OpenAIRealtimeimplements the full OpenAI Realtime wire protocol once; OpenAI-compatible providers (e.g. xAI Grok Voice) subclass it and supply their own profile instead of cloning the driver. The profile carries the per-provider knobs — transcription model, turn detection, GA feature gates — so protocol/feature work lands here once and flows to every compatible provider, while providers that have NOT confirmed a GA feature keep it gated off (a one-line flip later).