refactor: consolidate speech provider config resolution logic

This commit is contained in:
Mohamed Boudra
2026-03-13 13:44:25 +07:00
parent 3a02d1cdd6
commit 2268790656
@@ -42,6 +42,10 @@ const RequestedSpeechProvidersSchema = z.object({
voiceTts: OptionalSpeechProviderSchema.default("local"), voiceTts: OptionalSpeechProviderSchema.default("local"),
}); });
function resolveOptionalBooleanFlag(value: unknown): boolean {
return OptionalBooleanFlagSchema.parse(value) ?? true;
}
function resolveRequestedSpeechProviders(params: { function resolveRequestedSpeechProviders(params: {
env: NodeJS.ProcessEnv; env: NodeJS.ProcessEnv;
persisted: PersistedConfig; persisted: PersistedConfig;
@@ -56,45 +60,60 @@ function resolveRequestedSpeechProviders(params: {
enabled, enabled,
}); });
const dictationSttProviderFromConfig = const featureProviders = {
params.env.PASEO_DICTATION_STT_PROVIDER ?? dictationStt: {
params.persisted.features?.dictation?.stt?.provider; configuredValue:
const voiceSttProviderFromConfig = params.env.PASEO_DICTATION_STT_PROVIDER ??
params.env.PASEO_VOICE_STT_PROVIDER ?? params.persisted.features?.dictation?.stt?.provider,
params.persisted.features?.voiceMode?.stt?.provider; enabled: resolveOptionalBooleanFlag(
const voiceTtsProviderFromConfig = params.env.PASEO_DICTATION_ENABLED ?? params.persisted.features?.dictation?.enabled
params.env.PASEO_VOICE_TTS_PROVIDER ?? ),
params.persisted.features?.voiceMode?.tts?.provider; },
const dictationEnabled = voiceStt: {
OptionalBooleanFlagSchema.parse( configuredValue:
params.env.PASEO_DICTATION_ENABLED ?? params.persisted.features?.dictation?.enabled params.env.PASEO_VOICE_STT_PROVIDER ??
) ?? true; params.persisted.features?.voiceMode?.stt?.provider,
const voiceModeEnabled = enabled: resolveOptionalBooleanFlag(
OptionalBooleanFlagSchema.parse( params.env.PASEO_VOICE_MODE_ENABLED ?? params.persisted.features?.voiceMode?.enabled
params.env.PASEO_VOICE_MODE_ENABLED ?? params.persisted.features?.voiceMode?.enabled ),
) ?? true; },
voiceTts: {
configuredValue:
params.env.PASEO_VOICE_TTS_PROVIDER ??
params.persisted.features?.voiceMode?.tts?.provider,
enabled: resolveOptionalBooleanFlag(
params.env.PASEO_VOICE_MODE_ENABLED ?? params.persisted.features?.voiceMode?.enabled
),
},
} satisfies Record<
keyof RequestedSpeechProviders,
{
configuredValue: string | undefined;
enabled: boolean;
}
>;
const parsed = RequestedSpeechProvidersSchema.parse({ const parsed = RequestedSpeechProvidersSchema.parse({
dictationStt: dictationSttProviderFromConfig ?? "local", dictationStt: featureProviders.dictationStt.configuredValue ?? "local",
voiceStt: voiceSttProviderFromConfig ?? "local", voiceStt: featureProviders.voiceStt.configuredValue ?? "local",
voiceTts: voiceTtsProviderFromConfig ?? "local", voiceTts: featureProviders.voiceTts.configuredValue ?? "local",
}); });
return { return {
dictationStt: resolveFeatureProvider( dictationStt: resolveFeatureProvider(
dictationSttProviderFromConfig, featureProviders.dictationStt.configuredValue,
parsed.dictationStt, parsed.dictationStt,
dictationEnabled featureProviders.dictationStt.enabled
), ),
voiceStt: resolveFeatureProvider( voiceStt: resolveFeatureProvider(
voiceSttProviderFromConfig, featureProviders.voiceStt.configuredValue,
parsed.voiceStt, parsed.voiceStt,
voiceModeEnabled featureProviders.voiceStt.enabled
), ),
voiceTts: resolveFeatureProvider( voiceTts: resolveFeatureProvider(
voiceTtsProviderFromConfig, featureProviders.voiceTts.configuredValue,
parsed.voiceTts, parsed.voiceTts,
voiceModeEnabled featureProviders.voiceTts.enabled
), ),
}; };
} }