From 0c29ffac09ffe24e79da0797ecb77e4865bcd621 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 15 Feb 2026 14:09:57 +0000 Subject: [PATCH] refactor(agents): dedupe forward-compat template clone --- src/agents/model-forward-compat.ts | 61 +++++++++++++++++------------- 1 file changed, 35 insertions(+), 26 deletions(-) diff --git a/src/agents/model-forward-compat.ts b/src/agents/model-forward-compat.ts index f92523e02..9487e5ae8 100644 --- a/src/agents/model-forward-compat.ts +++ b/src/agents/model-forward-compat.ts @@ -38,6 +38,29 @@ export const ANTIGRAVITY_OPUS_46_FORWARD_COMPAT_CANDIDATES = [ }, ] as const; +function cloneFirstTemplateModel(params: { + normalizedProvider: string; + trimmedModelId: string; + templateIds: string[]; + modelRegistry: ModelRegistry; + patch?: Partial>; +}): Model | undefined { + const { normalizedProvider, trimmedModelId, templateIds, modelRegistry } = params; + for (const templateId of [...new Set(templateIds)].filter(Boolean)) { + const template = modelRegistry.find(normalizedProvider, templateId) as Model | null; + if (!template) { + continue; + } + return normalizeModelCompat({ + ...template, + id: trimmedModelId, + name: trimmedModelId, + ...params.patch, + } as Model); + } + return undefined; +} + function resolveOpenAICodexGpt53FallbackModel( provider: string, modelId: string, @@ -108,19 +131,12 @@ function resolveAnthropicOpus46ForwardCompatModel( } templateIds.push(...ANTHROPIC_OPUS_TEMPLATE_MODEL_IDS); - for (const templateId of [...new Set(templateIds)].filter(Boolean)) { - const template = modelRegistry.find(normalizedProvider, templateId) as Model | null; - if (!template) { - continue; - } - return normalizeModelCompat({ - ...template, - id: trimmedModelId, - name: trimmedModelId, - } as Model); - } - - return undefined; + return cloneFirstTemplateModel({ + normalizedProvider, + trimmedModelId, + templateIds, + modelRegistry, + }); } // Z.ai's GLM-5 may not be present in pi-ai's built-in model catalog yet. @@ -211,19 +227,12 @@ function resolveAntigravityOpus46ForwardCompatModel( templateIds.push(...ANTIGRAVITY_OPUS_TEMPLATE_MODEL_IDS); templateIds.push(...ANTIGRAVITY_OPUS_THINKING_TEMPLATE_MODEL_IDS); - for (const templateId of [...new Set(templateIds)].filter(Boolean)) { - const template = modelRegistry.find(normalizedProvider, templateId) as Model | null; - if (!template) { - continue; - } - return normalizeModelCompat({ - ...template, - id: trimmedModelId, - name: trimmedModelId, - } as Model); - } - - return undefined; + return cloneFirstTemplateModel({ + normalizedProvider, + trimmedModelId, + templateIds, + modelRegistry, + }); } export function resolveForwardCompatModel(