fix(doctor): display user-configured variant in model resolution output
OmoConfig interface was missing variant property, causing doctor to show variants from ModelRequirement fallback chain instead of user's config. - Add variant to OmoConfig agent/category entries - Add userVariant to resolution info interfaces - Update getEffectiveVariant to prioritize user variant - Add tests verifying variant capture
This commit is contained in:
parent
708d15ebcc
commit
81a2317f51
@ -90,6 +90,46 @@ describe("model-resolution check", () => {
|
|||||||
expect(sisyphus!.effectiveResolution).toContain("Provider fallback:")
|
expect(sisyphus!.effectiveResolution).toContain("Provider fallback:")
|
||||||
expect(sisyphus!.effectiveResolution).toContain("anthropic")
|
expect(sisyphus!.effectiveResolution).toContain("anthropic")
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it("captures user variant for agent when configured", async () => {
|
||||||
|
const { getModelResolutionInfoWithOverrides } = await import("./model-resolution")
|
||||||
|
|
||||||
|
//#given User has model with variant override for oracle agent
|
||||||
|
const mockConfig = {
|
||||||
|
agents: {
|
||||||
|
oracle: { model: "openai/gpt-5.2", variant: "xhigh" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
//#when getting resolution info with config
|
||||||
|
const info = getModelResolutionInfoWithOverrides(mockConfig)
|
||||||
|
|
||||||
|
//#then Oracle should have userVariant set
|
||||||
|
const oracle = info.agents.find((a) => a.name === "oracle")
|
||||||
|
expect(oracle).toBeDefined()
|
||||||
|
expect(oracle!.userOverride).toBe("openai/gpt-5.2")
|
||||||
|
expect(oracle!.userVariant).toBe("xhigh")
|
||||||
|
})
|
||||||
|
|
||||||
|
it("captures user variant for category when configured", async () => {
|
||||||
|
const { getModelResolutionInfoWithOverrides } = await import("./model-resolution")
|
||||||
|
|
||||||
|
//#given User has model with variant override for visual-engineering category
|
||||||
|
const mockConfig = {
|
||||||
|
categories: {
|
||||||
|
"visual-engineering": { model: "google/gemini-3-flash-preview", variant: "high" },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
//#when getting resolution info with config
|
||||||
|
const info = getModelResolutionInfoWithOverrides(mockConfig)
|
||||||
|
|
||||||
|
//#then visual-engineering should have userVariant set
|
||||||
|
const visual = info.categories.find((c) => c.name === "visual-engineering")
|
||||||
|
expect(visual).toBeDefined()
|
||||||
|
expect(visual!.userOverride).toBe("google/gemini-3-flash-preview")
|
||||||
|
expect(visual!.userVariant).toBe("high")
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("checkModelResolution", () => {
|
describe("checkModelResolution", () => {
|
||||||
|
|||||||
@ -51,6 +51,7 @@ export interface AgentResolutionInfo {
|
|||||||
name: string
|
name: string
|
||||||
requirement: ModelRequirement
|
requirement: ModelRequirement
|
||||||
userOverride?: string
|
userOverride?: string
|
||||||
|
userVariant?: string
|
||||||
effectiveModel: string
|
effectiveModel: string
|
||||||
effectiveResolution: string
|
effectiveResolution: string
|
||||||
}
|
}
|
||||||
@ -59,6 +60,7 @@ export interface CategoryResolutionInfo {
|
|||||||
name: string
|
name: string
|
||||||
requirement: ModelRequirement
|
requirement: ModelRequirement
|
||||||
userOverride?: string
|
userOverride?: string
|
||||||
|
userVariant?: string
|
||||||
effectiveModel: string
|
effectiveModel: string
|
||||||
effectiveResolution: string
|
effectiveResolution: string
|
||||||
}
|
}
|
||||||
@ -152,10 +154,12 @@ export function getModelResolutionInfoWithOverrides(config: OmoConfig): ModelRes
|
|||||||
const agents: AgentResolutionInfo[] = Object.entries(AGENT_MODEL_REQUIREMENTS).map(
|
const agents: AgentResolutionInfo[] = Object.entries(AGENT_MODEL_REQUIREMENTS).map(
|
||||||
([name, requirement]) => {
|
([name, requirement]) => {
|
||||||
const userOverride = config.agents?.[name]?.model
|
const userOverride = config.agents?.[name]?.model
|
||||||
|
const userVariant = config.agents?.[name]?.variant
|
||||||
return {
|
return {
|
||||||
name,
|
name,
|
||||||
requirement,
|
requirement,
|
||||||
userOverride,
|
userOverride,
|
||||||
|
userVariant,
|
||||||
effectiveModel: getEffectiveModel(requirement, userOverride),
|
effectiveModel: getEffectiveModel(requirement, userOverride),
|
||||||
effectiveResolution: buildEffectiveResolution(requirement, userOverride),
|
effectiveResolution: buildEffectiveResolution(requirement, userOverride),
|
||||||
}
|
}
|
||||||
@ -165,10 +169,12 @@ export function getModelResolutionInfoWithOverrides(config: OmoConfig): ModelRes
|
|||||||
const categories: CategoryResolutionInfo[] = Object.entries(CATEGORY_MODEL_REQUIREMENTS).map(
|
const categories: CategoryResolutionInfo[] = Object.entries(CATEGORY_MODEL_REQUIREMENTS).map(
|
||||||
([name, requirement]) => {
|
([name, requirement]) => {
|
||||||
const userOverride = config.categories?.[name]?.model
|
const userOverride = config.categories?.[name]?.model
|
||||||
|
const userVariant = config.categories?.[name]?.variant
|
||||||
return {
|
return {
|
||||||
name,
|
name,
|
||||||
requirement,
|
requirement,
|
||||||
userOverride,
|
userOverride,
|
||||||
|
userVariant,
|
||||||
effectiveModel: getEffectiveModel(requirement, userOverride),
|
effectiveModel: getEffectiveModel(requirement, userOverride),
|
||||||
effectiveResolution: buildEffectiveResolution(requirement, userOverride),
|
effectiveResolution: buildEffectiveResolution(requirement, userOverride),
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user