From 5426bdf39109c5072fd1e20cc0f29a42e2a27171 Mon Sep 17 00:00:00 2001 From: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> Date: Fri, 27 Mar 2026 21:16:36 -0500 Subject: [PATCH] fix: normalize model catalog provider lookup --- src/agents/model-catalog.test.ts | 20 +++++++++++++++++++- src/agents/model-catalog.ts | 5 +++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/src/agents/model-catalog.test.ts b/src/agents/model-catalog.test.ts index dcc16531790..8d13453b66e 100644 --- a/src/agents/model-catalog.test.ts +++ b/src/agents/model-catalog.test.ts @@ -1,7 +1,11 @@ import { describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; import { resetLogger, setLoggerOverride } from "../logging/logger.js"; -import { __setModelCatalogImportForTest, loadModelCatalog } from "./model-catalog.js"; +import { + __setModelCatalogImportForTest, + findModelInCatalog, + loadModelCatalog, +} from "./model-catalog.js"; import { installModelCatalogTestHooks, mockCatalogImportFailThenRecover, @@ -352,4 +356,18 @@ describe("loadModelCatalog", () => { expect(matches).toHaveLength(1); expect(matches[0]?.name).toBe("Kilo Auto"); }); + + it("matches models across canonical provider aliases", () => { + expect( + findModelInCatalog( + [{ provider: "z.ai", id: "glm-5", name: "GLM-5" }], + "z-ai", + "glm-5", + ), + ).toEqual({ + provider: "z.ai", + id: "glm-5", + name: "GLM-5", + }); + }); }); diff --git a/src/agents/model-catalog.ts b/src/agents/model-catalog.ts index bed22e35812..6166e8a80b1 100644 --- a/src/agents/model-catalog.ts +++ b/src/agents/model-catalog.ts @@ -3,6 +3,7 @@ import { createSubsystemLogger } from "../logging/subsystem.js"; import { augmentModelCatalogWithProviderPlugins } from "../plugins/provider-runtime.runtime.js"; import { resolveOpenClawAgentDir } from "./agent-paths.js"; import { ensureOpenClawModelsJson } from "./models-config.js"; +import { normalizeProviderId } from "./provider-id.js"; const log = createSubsystemLogger("model-catalog"); @@ -295,11 +296,11 @@ export function findModelInCatalog( provider: string, modelId: string, ): ModelCatalogEntry | undefined { - const normalizedProvider = provider.toLowerCase().trim(); + const normalizedProvider = normalizeProviderId(provider); const normalizedModelId = modelId.toLowerCase().trim(); return catalog.find( (entry) => - entry.provider.toLowerCase() === normalizedProvider && + normalizeProviderId(entry.provider) === normalizedProvider && entry.id.toLowerCase() === normalizedModelId, ); }