fix: normalize model catalog provider lookup

This commit is contained in:
Tak Hoffman
2026-03-27 21:16:36 -05:00
parent 46a44c5044
commit 5426bdf391
2 changed files with 22 additions and 3 deletions

View File

@@ -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",
});
});
});

View File

@@ -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,
);
}