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:
@@ -3,19 +3,37 @@ import type { DelegatedModelConfig } from "./types"
|
||||
export interface MetadataModel {
|
||||
providerID: 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(
|
||||
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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user