fix(delegate-task): preserve model variant in metadata resolution

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
YeonGyu-Kim
2026-04-20 14:51:01 +09:00
parent a82f0560cc
commit cd0c98e54d
@@ -3,19 +3,37 @@ import type { DelegatedModelConfig } from "./types"
export interface MetadataModel { export interface MetadataModel {
providerID: string providerID: string
modelID: string modelID: string
variant?: string
} }
type ModelLike = Pick<DelegatedModelConfig, "providerID" | "modelID"> | MetadataModel type ModelLike = Pick<DelegatedModelConfig, "providerID" | "modelID" | "variant"> | 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( export function resolveMetadataModel(
primary: ModelLike | undefined, primary: ModelLike | undefined,
fallback: ModelLike | undefined, fallback: ModelLike | undefined,
): MetadataModel | undefined { ): MetadataModel | undefined {
if (primary) { if (isModelLike(primary)) {
return { providerID: primary.providerID, modelID: primary.modelID } return toMetadataModel(primary)
} }
if (fallback) { if (isModelLike(fallback)) {
return { providerID: fallback.providerID, modelID: fallback.modelID } return toMetadataModel(fallback)
} }
return undefined return undefined
} }