fix(agent-variant): resolve variant based on current model, not static config (#1179)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { describe, expect, test } from "bun:test"
|
||||
import type { OhMyOpenCodeConfig } from "../config"
|
||||
import { applyAgentVariant, resolveAgentVariant } from "./agent-variant"
|
||||
import { applyAgentVariant, resolveAgentVariant, resolveVariantForModel } from "./agent-variant"
|
||||
|
||||
describe("resolveAgentVariant", () => {
|
||||
test("returns undefined when agent name missing", () => {
|
||||
@@ -81,3 +81,117 @@ describe("applyAgentVariant", () => {
|
||||
expect(message.variant).toBe("max")
|
||||
})
|
||||
})
|
||||
|
||||
describe("resolveVariantForModel", () => {
|
||||
test("returns correct variant for anthropic provider", () => {
|
||||
// #given
|
||||
const config = {} as OhMyOpenCodeConfig
|
||||
const model = { providerID: "anthropic", modelID: "claude-opus-4-5" }
|
||||
|
||||
// #when
|
||||
const variant = resolveVariantForModel(config, "sisyphus", model)
|
||||
|
||||
// #then
|
||||
expect(variant).toBe("max")
|
||||
})
|
||||
|
||||
test("returns correct variant for openai provider", () => {
|
||||
// #given
|
||||
const config = {} as OhMyOpenCodeConfig
|
||||
const model = { providerID: "openai", modelID: "gpt-5.2" }
|
||||
|
||||
// #when
|
||||
const variant = resolveVariantForModel(config, "sisyphus", model)
|
||||
|
||||
// #then
|
||||
expect(variant).toBe("medium")
|
||||
})
|
||||
|
||||
test("returns undefined for provider with no variant in chain", () => {
|
||||
// #given
|
||||
const config = {} as OhMyOpenCodeConfig
|
||||
const model = { providerID: "google", modelID: "gemini-3-pro" }
|
||||
|
||||
// #when
|
||||
const variant = resolveVariantForModel(config, "sisyphus", model)
|
||||
|
||||
// #then
|
||||
expect(variant).toBeUndefined()
|
||||
})
|
||||
|
||||
test("returns undefined for provider not in chain", () => {
|
||||
// #given
|
||||
const config = {} as OhMyOpenCodeConfig
|
||||
const model = { providerID: "unknown-provider", modelID: "some-model" }
|
||||
|
||||
// #when
|
||||
const variant = resolveVariantForModel(config, "sisyphus", model)
|
||||
|
||||
// #then
|
||||
expect(variant).toBeUndefined()
|
||||
})
|
||||
|
||||
test("returns undefined for unknown agent", () => {
|
||||
// #given
|
||||
const config = {} as OhMyOpenCodeConfig
|
||||
const model = { providerID: "anthropic", modelID: "claude-opus-4-5" }
|
||||
|
||||
// #when
|
||||
const variant = resolveVariantForModel(config, "nonexistent-agent", model)
|
||||
|
||||
// #then
|
||||
expect(variant).toBeUndefined()
|
||||
})
|
||||
|
||||
test("returns variant for zai-coding-plan provider without variant", () => {
|
||||
// #given
|
||||
const config = {} as OhMyOpenCodeConfig
|
||||
const model = { providerID: "zai-coding-plan", modelID: "glm-4.7" }
|
||||
|
||||
// #when
|
||||
const variant = resolveVariantForModel(config, "sisyphus", model)
|
||||
|
||||
// #then
|
||||
expect(variant).toBeUndefined()
|
||||
})
|
||||
|
||||
test("falls back to category chain when agent has no requirement", () => {
|
||||
// #given
|
||||
const config = {
|
||||
agents: {
|
||||
"custom-agent": { category: "ultrabrain" },
|
||||
},
|
||||
} as OhMyOpenCodeConfig
|
||||
const model = { providerID: "openai", modelID: "gpt-5.2-codex" }
|
||||
|
||||
// #when
|
||||
const variant = resolveVariantForModel(config, "custom-agent", model)
|
||||
|
||||
// #then
|
||||
expect(variant).toBe("xhigh")
|
||||
})
|
||||
|
||||
test("returns correct variant for oracle agent with openai", () => {
|
||||
// #given
|
||||
const config = {} as OhMyOpenCodeConfig
|
||||
const model = { providerID: "openai", modelID: "gpt-5.2" }
|
||||
|
||||
// #when
|
||||
const variant = resolveVariantForModel(config, "oracle", model)
|
||||
|
||||
// #then
|
||||
expect(variant).toBe("high")
|
||||
})
|
||||
|
||||
test("returns correct variant for oracle agent with anthropic", () => {
|
||||
// #given
|
||||
const config = {} as OhMyOpenCodeConfig
|
||||
const model = { providerID: "anthropic", modelID: "claude-opus-4-5" }
|
||||
|
||||
// #when
|
||||
const variant = resolveVariantForModel(config, "oracle", model)
|
||||
|
||||
// #then
|
||||
expect(variant).toBe("max")
|
||||
})
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user