diff --git a/src/plugins/provider-registry-shared.ts b/src/plugins/provider-registry-shared.ts index f23fe7b96fc..48a38f3fe45 100644 --- a/src/plugins/provider-registry-shared.ts +++ b/src/plugins/provider-registry-shared.ts @@ -1,9 +1,14 @@ import { normalizeOptionalString } from "../shared/string-coerce.js"; +export function normalizeCapabilityProviderId(providerId: string | undefined): string | undefined { + return normalizeOptionalString(providerId)?.toLowerCase(); +} + export function buildCapabilityProviderMaps( providers: readonly T[], - normalizeId: (providerId: string | undefined) => string | undefined = (providerId) => - normalizeOptionalString(providerId)?.toLowerCase(), + normalizeId: ( + providerId: string | undefined, + ) => string | undefined = normalizeCapabilityProviderId, ): { canonical: Map; aliases: Map; diff --git a/src/realtime-transcription/provider-registry.ts b/src/realtime-transcription/provider-registry.ts index 0f66570b40b..ed8b6785370 100644 --- a/src/realtime-transcription/provider-registry.ts +++ b/src/realtime-transcription/provider-registry.ts @@ -1,13 +1,16 @@ import type { OpenClawConfig } from "../config/config.js"; import { resolvePluginCapabilityProviders } from "../plugins/capability-provider-runtime.js"; +import { + buildCapabilityProviderMaps, + normalizeCapabilityProviderId, +} from "../plugins/provider-registry-shared.js"; import type { RealtimeTranscriptionProviderPlugin } from "../plugins/types.js"; -import { normalizeOptionalString } from "../shared/string-coerce.js"; import type { RealtimeTranscriptionProviderId } from "./provider-types.js"; export function normalizeRealtimeTranscriptionProviderId( providerId: string | undefined, ): RealtimeTranscriptionProviderId | undefined { - return normalizeOptionalString(providerId)?.toLowerCase(); + return normalizeCapabilityProviderId(providerId); } function resolveRealtimeTranscriptionProviderEntries( @@ -23,28 +26,7 @@ function buildProviderMaps(cfg?: OpenClawConfig): { canonical: Map; aliases: Map; } { - const canonical = new Map(); - const aliases = new Map(); - const register = (provider: RealtimeTranscriptionProviderPlugin) => { - const id = normalizeRealtimeTranscriptionProviderId(provider.id); - if (!id) { - return; - } - canonical.set(id, provider); - aliases.set(id, provider); - for (const alias of provider.aliases ?? []) { - const normalizedAlias = normalizeRealtimeTranscriptionProviderId(alias); - if (normalizedAlias) { - aliases.set(normalizedAlias, provider); - } - } - }; - - for (const provider of resolveRealtimeTranscriptionProviderEntries(cfg)) { - register(provider); - } - - return { canonical, aliases }; + return buildCapabilityProviderMaps(resolveRealtimeTranscriptionProviderEntries(cfg)); } export function listRealtimeTranscriptionProviders( diff --git a/src/realtime-voice/provider-registry.ts b/src/realtime-voice/provider-registry.ts index ef5304e0665..c7146580b79 100644 --- a/src/realtime-voice/provider-registry.ts +++ b/src/realtime-voice/provider-registry.ts @@ -1,14 +1,16 @@ import type { OpenClawConfig } from "../config/config.js"; import { resolvePluginCapabilityProviders } from "../plugins/capability-provider-runtime.js"; -import { buildCapabilityProviderMaps } from "../plugins/provider-registry-shared.js"; +import { + buildCapabilityProviderMaps, + normalizeCapabilityProviderId, +} from "../plugins/provider-registry-shared.js"; import type { RealtimeVoiceProviderPlugin } from "../plugins/types.js"; -import { normalizeOptionalString } from "../shared/string-coerce.js"; import type { RealtimeVoiceProviderId } from "./provider-types.js"; export function normalizeRealtimeVoiceProviderId( providerId: string | undefined, ): RealtimeVoiceProviderId | undefined { - return normalizeOptionalString(providerId)?.toLowerCase(); + return normalizeCapabilityProviderId(providerId); } function resolveRealtimeVoiceProviderEntries(cfg?: OpenClawConfig): RealtimeVoiceProviderPlugin[] { diff --git a/src/tts/provider-registry.ts b/src/tts/provider-registry.ts index bd7d84b5103..1b9f3041499 100644 --- a/src/tts/provider-registry.ts +++ b/src/tts/provider-registry.ts @@ -1,14 +1,16 @@ import type { OpenClawConfig } from "../config/config.js"; import { resolvePluginCapabilityProviders } from "../plugins/capability-provider-runtime.js"; -import { buildCapabilityProviderMaps } from "../plugins/provider-registry-shared.js"; +import { + buildCapabilityProviderMaps, + normalizeCapabilityProviderId, +} from "../plugins/provider-registry-shared.js"; import type { SpeechProviderPlugin } from "../plugins/types.js"; -import { normalizeOptionalString } from "../shared/string-coerce.js"; import type { SpeechProviderId } from "./provider-types.js"; export function normalizeSpeechProviderId( providerId: string | undefined, ): SpeechProviderId | undefined { - return normalizeOptionalString(providerId)?.toLowerCase(); + return normalizeCapabilityProviderId(providerId); } function resolveSpeechProviderPluginEntries(cfg?: OpenClawConfig): SpeechProviderPlugin[] {