Files
gods-eye-view/src/voice/providerCapabilities.js
T

22 lines
777 B
JavaScript

export const VOICE_PROVIDERS = Object.freeze({
openai: Object.freeze({ label: 'OpenAI' }), // i18n-ignore: provider product name
gemini: Object.freeze({ label: 'Gemini' }), // i18n-ignore: provider product name
});
/** Optional providers require an explicit host opt-in and an available factory. */
export function supportedVoiceProviders(
requested = ['openai'],
factories = {},
) {
if (!Array.isArray(requested))
throw new TypeError('supportedProviders must be an array');
const selected = [...new Set(requested)].filter(
(name) =>
Object.hasOwn(VOICE_PROVIDERS, name) &&
typeof factories[name] === 'function',
);
if (!selected.length)
throw new Error('No supported voice provider is configured');
return Object.freeze(selected);
}