diff --git a/src/agents/model-selection-shared.ts b/src/agents/model-selection-shared.ts index 7885a609550..c7ccfdf086e 100644 --- a/src/agents/model-selection-shared.ts +++ b/src/agents/model-selection-shared.ts @@ -106,8 +106,7 @@ function createModelManifestPluginContext(params: { function listModelAliasCandidates(cfg: OpenClawConfig): ModelAliasCandidate[] { return Object.entries(cfg.agents?.defaults?.models ?? {}).flatMap(([keyRaw, entryRaw]) => { - const trimmedKey = keyRaw.trim(); - if (trimmedKey.endsWith("/*") && normalizeProviderId(trimmedKey.slice(0, -2))) { + if (parseProviderWildcardModelRef(keyRaw)) { return []; } const alias = @@ -559,7 +558,7 @@ function buildModelCatalogMetadata( const aliasByKey = new Map(); const configuredModels = params.cfg.agents?.defaults?.models ?? {}; for (const [rawKey, entryRaw] of Object.entries(configuredModels)) { - if (rawKey.trim().endsWith("/*")) { + if (parseProviderWildcardModelRef(rawKey)) { continue; } const alias = ((entryRaw as { alias?: string } | undefined)?.alias ?? "").trim(); @@ -1242,6 +1241,14 @@ export function normalizeModelSelection(value: unknown): string | undefined { return undefined; } +function parseProviderWildcardModelRef(raw: string): string | null { + const trimmed = raw.trim(); + if (!trimmed.endsWith("/*")) { + return null; + } + return normalizeProviderId(trimmed.slice(0, -2)) || null; +} + export function parseConfiguredModelVisibilityEntries(params: { cfg?: OpenClawConfig }): { exactModelRefs: string[]; providerWildcards: Set; @@ -1256,12 +1263,10 @@ export function parseConfiguredModelVisibilityEntries(params: { cfg?: OpenClawCo if (!trimmed) { continue; } - if (trimmed.endsWith("/*")) { - const provider = normalizeProviderId(trimmed.slice(0, -2)); - if (provider) { - providerWildcards.add(provider); - continue; - } + const wildcardProvider = parseProviderWildcardModelRef(trimmed); + if (wildcardProvider) { + providerWildcards.add(wildcardProvider); + continue; } exactModelRefs.push(raw); }