@@ -243,10 +243,11 @@ export function buildRealtimeVoiceLaunchOptions(params: {
243243 requested : RealtimeVoiceLaunchOptionInput ;
244244 defaults : RealtimeVoiceLaunchOptions ;
245245} ) : RealtimeVoiceLaunchOptions {
246- return withRealtimeBrowserOverrides (
247- params . defaults ,
248- params . requested ,
249- ) as RealtimeVoiceLaunchOptions ;
246+ const options = pickRealtimeVoiceLaunchOptions ( params . defaults ) ;
247+ return {
248+ ...options ,
249+ ...pickRealtimeVoiceLaunchOptions ( params . requested ) ,
250+ } ;
250251}
251252
252253export function withRealtimeBrowserOverrides (
@@ -278,6 +279,34 @@ export function withRealtimeBrowserOverrides(
278279 return Object . keys ( overrides ) . length > 0 ? { ...providerConfig , ...overrides } : providerConfig ;
279280}
280281
282+ function pickRealtimeVoiceLaunchOptions (
283+ params : RealtimeVoiceLaunchOptionInput ,
284+ ) : RealtimeVoiceLaunchOptions {
285+ const options : RealtimeVoiceLaunchOptions = { } ;
286+ const model = normalizeOptionalString ( params . model ) ;
287+ const voice = normalizeOptionalString ( params . voice ) ;
288+ const reasoningEffort = normalizeOptionalString ( params . reasoningEffort ) ;
289+ if ( model ) {
290+ options . model = model ;
291+ }
292+ if ( voice ) {
293+ options . voice = voice ;
294+ }
295+ if ( typeof params . vadThreshold === "number" && Number . isFinite ( params . vadThreshold ) ) {
296+ options . vadThreshold = params . vadThreshold ;
297+ }
298+ if ( typeof params . silenceDurationMs === "number" && Number . isFinite ( params . silenceDurationMs ) ) {
299+ options . silenceDurationMs = params . silenceDurationMs ;
300+ }
301+ if ( typeof params . prefixPaddingMs === "number" && Number . isFinite ( params . prefixPaddingMs ) ) {
302+ options . prefixPaddingMs = params . prefixPaddingMs ;
303+ }
304+ if ( reasoningEffort ) {
305+ options . reasoningEffort = reasoningEffort ;
306+ }
307+ return options ;
308+ }
309+
281310export function isUnsupportedBrowserWebRtcSession ( session : RealtimeVoiceBrowserSession ) : boolean {
282311 const provider = normalizeLowercaseStringOrEmpty ( session . provider ) ;
283312 const transport = ( session as { transport ?: string } ) . transport ?? "webrtc" ;
0 commit comments