UNPKG

@openai/agents-realtime

Version:

The OpenAI Agents SDK is a lightweight yet powerful framework for building multi-agent workflows. This package contains the logic for building realtime voice agents on the server or in the browser.

92 lines 3.5 kB
function isDefined(key, object) { // @ts-expect-error fudging with types here for the index types return key in object && typeof object[key] !== 'undefined'; } function isDeprecatedConfig(config) { return (isDefined('modalities', config) || isDefined('inputAudioFormat', config) || isDefined('outputAudioFormat', config) || isDefined('inputAudioTranscription', config) || isDefined('turnDetection', config) || isDefined('inputAudioNoiseReduction', config) || isDefined('speed', config)); } /** * Convert any given config (old or new) to the new GA config shape. * If a new config is provided, it will be returned as-is (normalized shallowly). */ export function toNewSessionConfig(config) { if (!isDeprecatedConfig(config)) { const inputConfig = config.audio?.input ? { format: normalizeAudioFormat(config.audio.input.format), noiseReduction: config.audio.input.noiseReduction ?? null, transcription: config.audio.input.transcription, turnDetection: config.audio.input.turnDetection, } : undefined; const requestedOutputVoice = config.audio?.output?.voice ?? config.voice; const outputConfig = config.audio?.output || typeof requestedOutputVoice !== 'undefined' ? { format: normalizeAudioFormat(config.audio?.output?.format), voice: requestedOutputVoice, speed: config.audio?.output?.speed, } : undefined; return { model: config.model, instructions: config.instructions, toolChoice: config.toolChoice, tools: config.tools, tracing: config.tracing, providerData: config.providerData, prompt: config.prompt, outputModalities: config.outputModalities, audio: inputConfig || outputConfig ? { input: inputConfig, output: outputConfig, } : undefined, }; } return { model: config.model, instructions: config.instructions, toolChoice: config.toolChoice, tools: config.tools, tracing: config.tracing, providerData: config.providerData, prompt: config.prompt, outputModalities: config.modalities, audio: { input: { format: normalizeAudioFormat(config.inputAudioFormat), noiseReduction: config.inputAudioNoiseReduction ?? null, transcription: config.inputAudioTranscription, turnDetection: config.turnDetection, }, output: { format: normalizeAudioFormat(config.outputAudioFormat), voice: config.voice, speed: config.speed, }, }, }; } export function normalizeAudioFormat(format) { if (!format) return undefined; if (typeof format === 'object') return format; const f = String(format); if (f === 'pcm16') return { type: 'audio/pcm', rate: 24000 }; if (f === 'g711_ulaw') return { type: 'audio/pcmu' }; if (f === 'g711_alaw') return { type: 'audio/pcma' }; // Default fallback: assume 24kHz PCM if unknown string return { type: 'audio/pcm', rate: 24000 }; } //# sourceMappingURL=clientMessages.mjs.map