refactor(agents): dedupe forward-compat template clone

This commit is contained in:
Peter Steinberger
2026-02-15 14:09:57 +00:00
parent ebf44f5096
commit 0c29ffac09

View File

@@ -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<Api>>;
}): Model<Api> | undefined {
const { normalizedProvider, trimmedModelId, templateIds, modelRegistry } = params;
for (const templateId of [...new Set(templateIds)].filter(Boolean)) {
const template = modelRegistry.find(normalizedProvider, templateId) as Model<Api> | null;
if (!template) {
continue;
}
return normalizeModelCompat({
...template,
id: trimmedModelId,
name: trimmedModelId,
...params.patch,
} as Model<Api>);
}
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<Api> | null;
if (!template) {
continue;
}
return normalizeModelCompat({
...template,
id: trimmedModelId,
name: trimmedModelId,
} as Model<Api>);
}
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<Api> | null;
if (!template) {
continue;
}
return normalizeModelCompat({
...template,
id: trimmedModelId,
name: trimmedModelId,
} as Model<Api>);
}
return undefined;
return cloneFirstTemplateModel({
normalizedProvider,
trimmedModelId,
templateIds,
modelRegistry,
});
}
export function resolveForwardCompatModel(