The explicit MJ: AI Models id, or null/empty for none.
OptionalpreferredVoice: string | nullThe provider-native voice id (e.g. echo), or null/empty for none.
The JSON string, or null when nothing was overridden (keeps the mint identical to default).
Builds the
configOverridesJsonpayload for theStartRealtimeClientSessionmint from what the (authorization-gated) pickers chose — an explicit realtime model preference and/or a voice. The envelope ({"realtime":{"modelPreference":"<id>","voice":{"default":{"voice":"<v>"}}}}) is the pinned server contract, merged into the effective config server-side (highest precedence).The voice is filed PROVIDER-AGNOSTICALLY: the browser has a model id, never a vendor
DriverClass(GetRealtimeModelVoicesdoes not return one), so naming a provider here would be a guess that silently voided the setting for every non-OpenAI vendor. The server files it onto whichever driver it resolves. Kept in lockstep with the server-sideBuildRealtimeOverridesJsonin@memberjunction/ai-agentsbyrealtime-convergence-drift.test.ts. See issue #3530.