mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 05:47:28 +00:00
fix(ci): resolve type regressions on main
This commit is contained in:
@@ -189,4 +189,30 @@ describe("normalizeVoiceCallConfig", () => {
|
||||
expect(normalized.tunnel.provider).toBe("none");
|
||||
expect(normalized.webhookSecurity.allowedHosts).toEqual([]);
|
||||
});
|
||||
|
||||
it("accepts partial nested TTS overrides and preserves nested objects", () => {
|
||||
const normalized = normalizeVoiceCallConfig({
|
||||
tts: {
|
||||
provider: "elevenlabs",
|
||||
elevenlabs: {
|
||||
apiKey: {
|
||||
source: "env",
|
||||
provider: "elevenlabs",
|
||||
id: "ELEVENLABS_API_KEY",
|
||||
},
|
||||
voiceSettings: {
|
||||
speed: 1.1,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(normalized.tts?.provider).toBe("elevenlabs");
|
||||
expect(normalized.tts?.elevenlabs?.apiKey).toEqual({
|
||||
source: "env",
|
||||
provider: "elevenlabs",
|
||||
id: "ELEVENLABS_API_KEY",
|
||||
});
|
||||
expect(normalized.tts?.elevenlabs?.voiceSettings).toEqual({ speed: 1.1 });
|
||||
});
|
||||
});
|
||||
|
||||
@@ -368,6 +368,55 @@ function cloneDefaultVoiceCallConfig(): VoiceCallConfig {
|
||||
return structuredClone(DEFAULT_VOICE_CALL_CONFIG);
|
||||
}
|
||||
|
||||
function normalizeVoiceCallTtsConfig(
|
||||
defaults: VoiceCallTtsConfig,
|
||||
overrides: DeepPartial<NonNullable<VoiceCallTtsConfig>> | undefined,
|
||||
): VoiceCallTtsConfig {
|
||||
if (!defaults && !overrides) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return TtsConfigSchema.parse({
|
||||
...(defaults ?? {}),
|
||||
...(overrides ?? {}),
|
||||
modelOverrides:
|
||||
defaults?.modelOverrides || overrides?.modelOverrides
|
||||
? {
|
||||
...(defaults?.modelOverrides ?? {}),
|
||||
...(overrides?.modelOverrides ?? {}),
|
||||
}
|
||||
: undefined,
|
||||
elevenlabs:
|
||||
defaults?.elevenlabs || overrides?.elevenlabs
|
||||
? {
|
||||
...(defaults?.elevenlabs ?? {}),
|
||||
...(overrides?.elevenlabs ?? {}),
|
||||
voiceSettings:
|
||||
defaults?.elevenlabs?.voiceSettings || overrides?.elevenlabs?.voiceSettings
|
||||
? {
|
||||
...(defaults?.elevenlabs?.voiceSettings ?? {}),
|
||||
...(overrides?.elevenlabs?.voiceSettings ?? {}),
|
||||
}
|
||||
: undefined,
|
||||
}
|
||||
: undefined,
|
||||
openai:
|
||||
defaults?.openai || overrides?.openai
|
||||
? {
|
||||
...(defaults?.openai ?? {}),
|
||||
...(overrides?.openai ?? {}),
|
||||
}
|
||||
: undefined,
|
||||
edge:
|
||||
defaults?.edge || overrides?.edge
|
||||
? {
|
||||
...(defaults?.edge ?? {}),
|
||||
...(overrides?.edge ?? {}),
|
||||
}
|
||||
: undefined,
|
||||
});
|
||||
}
|
||||
|
||||
export function normalizeVoiceCallConfig(config: VoiceCallConfigInput): VoiceCallConfig {
|
||||
const defaults = cloneDefaultVoiceCallConfig();
|
||||
return {
|
||||
@@ -387,7 +436,7 @@ export function normalizeVoiceCallConfig(config: VoiceCallConfigInput): VoiceCal
|
||||
},
|
||||
streaming: { ...defaults.streaming, ...config.streaming },
|
||||
stt: { ...defaults.stt, ...config.stt },
|
||||
tts: config.tts ?? defaults.tts,
|
||||
tts: normalizeVoiceCallTtsConfig(defaults.tts, config.tts),
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user