From 5e2b196c4da84655be545c2da5367155bb4fb14c Mon Sep 17 00:00:00 2001 From: Enrico Ros Date: Sat, 5 Apr 2025 10:26:44 -0700 Subject: [PATCH] OpenRouter: models list: prevent schema changes from breaking working models. Fixes #787 --- src/modules/llms/server/openai/models.data.ts | 8 ++++++-- src/modules/llms/server/openai/openai.router.ts | 3 ++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/modules/llms/server/openai/models.data.ts b/src/modules/llms/server/openai/models.data.ts index e0cae23dd..6d2cb9174 100644 --- a/src/modules/llms/server/openai/models.data.ts +++ b/src/modules/llms/server/openai/models.data.ts @@ -742,10 +742,14 @@ export function openRouterModelFamilySortFn(a: { id: string }, b: { id: string } return aPrefixIndex !== -1 ? -1 : 1; } -export function openRouterModelToModelDescription(wireModel: object): ModelDescriptionSchema { +export function openRouterModelToModelDescription(wireModel: object): ModelDescriptionSchema | null { // parse the model - const model = wireOpenrouterModelsListOutputSchema.parse(wireModel); + const { data: model, error } = wireOpenrouterModelsListOutputSchema.safeParse(wireModel); + if (error) { + console.warn(`openrouterModelToModelDescription: Failed to parse model: ${error}`); + return null; + } // parse pricing const pricing: ModelDescriptionSchema['pricing'] = { diff --git a/src/modules/llms/server/openai/openai.router.ts b/src/modules/llms/server/openai/openai.router.ts index 84ff7f30c..74eb1a846 100644 --- a/src/modules/llms/server/openai/openai.router.ts +++ b/src/modules/llms/server/openai/openai.router.ts @@ -256,7 +256,8 @@ export const llmOpenAIRouter = createTRPCRouter({ case 'openrouter': models = openAIModels .sort(openRouterModelFamilySortFn) - .map(openRouterModelToModelDescription); + .map(openRouterModelToModelDescription) + .filter(desc => !!desc); break; }