From 2d8ee0452edb2f678bb807dfc422776e8b0d830d Mon Sep 17 00:00:00 2001 From: Shakker Date: Tue, 28 Apr 2026 03:49:12 +0100 Subject: [PATCH] fix: normalize raw manifest provider catalogs --- extensions/cerebras/models.ts | 2 +- src/plugin-sdk/provider-catalog-shared.ts | 20 ++++++++++++-------- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/extensions/cerebras/models.ts b/extensions/cerebras/models.ts index cde8ad15a6d..8c5ecc29ad2 100644 --- a/extensions/cerebras/models.ts +++ b/extensions/cerebras/models.ts @@ -21,5 +21,5 @@ export function buildCerebrasModelDefinition( providerId: "cerebras", catalog: { ...CEREBRAS_MANIFEST_CATALOG, models: [model] }, }); - return providerConfig.models[0]!; + return providerConfig.models[0]; } diff --git a/src/plugin-sdk/provider-catalog-shared.ts b/src/plugin-sdk/provider-catalog-shared.ts index 4c95d8355f2..97e6b0a6e0d 100644 --- a/src/plugin-sdk/provider-catalog-shared.ts +++ b/src/plugin-sdk/provider-catalog-shared.ts @@ -7,10 +7,10 @@ import { resolveProviderRequestCapabilities } from "../agents/provider-attributi import { findNormalizedProviderKey } from "../agents/provider-id.js"; import type { ModelDefinitionConfig } from "../config/types.models.js"; import type { OpenClawConfig } from "../config/types.openclaw.js"; +import { normalizeModelCatalog } from "../model-catalog/normalize.js"; import type { ModelCatalogCost, ModelCatalogModel, - ModelCatalogProvider, ModelCatalogTieredCost, } from "../model-catalog/types.js"; import type { ModelProviderConfig } from "./provider-model-shared.js"; @@ -90,19 +90,23 @@ function buildManifestCatalogModel(model: ModelCatalogModel): ModelDefinitionCon export function buildManifestModelProviderConfig(params: { providerId: string; - catalog: ModelCatalogProvider | undefined; + catalog: unknown; }): ModelProviderConfig { - if (!params.catalog) { + const catalog = normalizeModelCatalog( + { providers: { [params.providerId]: params.catalog } }, + { ownedProviders: new Set([params.providerId]) }, + )?.providers?.[params.providerId]; + if (!catalog) { throw new Error(`Missing modelCatalog.providers.${params.providerId}`); } - if (!params.catalog.baseUrl) { + if (!catalog.baseUrl) { throw new Error(`Missing modelCatalog.providers.${params.providerId}.baseUrl`); } return { - baseUrl: params.catalog.baseUrl, - ...(params.catalog.api ? { api: params.catalog.api } : {}), - ...(params.catalog.headers ? { headers: { ...params.catalog.headers } } : {}), - models: params.catalog.models.map(buildManifestCatalogModel), + baseUrl: catalog.baseUrl, + ...(catalog.api ? { api: catalog.api } : {}), + ...(catalog.headers ? { headers: { ...catalog.headers } } : {}), + models: catalog.models.map(buildManifestCatalogModel), }; }