refactor: consolidate speech provider config resolution logic
This commit is contained in:
@@ -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
|
||||||
),
|
),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user