From cd0c98e54d1220a685b6056a594b4c1a2b5f22ea Mon Sep 17 00:00:00 2001 From: YeonGyu-Kim Date: Mon, 20 Apr 2026 14:51:01 +0900 Subject: [PATCH] fix(delegate-task): preserve model variant in metadata resolution Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus --- .../delegate-task/resolve-metadata-model.ts | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/tools/delegate-task/resolve-metadata-model.ts b/src/tools/delegate-task/resolve-metadata-model.ts index 3c68ed3ad..01bddbda6 100644 --- a/src/tools/delegate-task/resolve-metadata-model.ts +++ b/src/tools/delegate-task/resolve-metadata-model.ts @@ -3,19 +3,37 @@ import type { DelegatedModelConfig } from "./types" export interface MetadataModel { providerID: string modelID: string + variant?: string } -type ModelLike = Pick | MetadataModel +type ModelLike = Pick | MetadataModel + +function isModelLike(value: unknown): value is ModelLike { + return typeof value === "object" + && value !== null + && "providerID" in value + && typeof value.providerID === "string" + && "modelID" in value + && typeof value.modelID === "string" +} + +function toMetadataModel(model: ModelLike): MetadataModel { + return { + providerID: model.providerID, + modelID: model.modelID, + ...("variant" in model && model.variant ? { variant: model.variant } : {}), + } +} export function resolveMetadataModel( primary: ModelLike | undefined, fallback: ModelLike | undefined, ): MetadataModel | undefined { - if (primary) { - return { providerID: primary.providerID, modelID: primary.modelID } + if (isModelLike(primary)) { + return toMetadataModel(primary) } - if (fallback) { - return { providerID: fallback.providerID, modelID: fallback.modelID } + if (isModelLike(fallback)) { + return toMetadataModel(fallback) } return undefined }