test(anthropic-effort): cover pre-set effort=max clamping for constrained providers (#3563)

Add 4 regression tests covering the pre-set effort path:

- pre-set effort=max + variant=max + github-copilot Opus -> clamped to high

- pre-set effort=max + variant=high + github-copilot Opus -> clamped to high (cubic violation case from PR #3608)

- pre-set effort=max + non-constrained Opus -> max preserved (no regression)

- pre-set effort=high + github-copilot Opus -> high preserved (don't overwrite valid pre-set)

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-05-18 12:36:56 +09:00
parent 96767b5d1a
commit 63a3021094
+74
View File
@@ -221,6 +221,80 @@ describe("createAnthropicEffortHook", () => {
})
})
describe("#given pre-set effort via session params — regression for #3563", () => {
it("#given pre-set effort=max + variant=max + github-copilot Opus #when hook runs #then effort and variant are both clamped to high", async () => {
// given
const hook = createAnthropicEffortHook()
const { input, output } = createMockParams({
providerID: "github-copilot",
modelID: "claude-opus-4-7",
variant: "max",
existingOptions: { effort: "max" },
})
// when
await hook["chat.params"](input, output)
// then
expect(output.options.effort).toBe("high")
expect(input.message.variant).toBe("high")
})
it("#given pre-set effort=max + variant=high + github-copilot Opus #when hook runs #then effort and variant are both clamped to high", async () => {
// given — this is the cubic violation case from PR #3608:
// message.variant is NOT "max", but pre-set effort IS "max"
const hook = createAnthropicEffortHook()
const { input, output } = createMockParams({
providerID: "github-copilot",
modelID: "claude-opus-4-7",
variant: "high",
existingOptions: { effort: "max" },
})
// when
await hook["chat.params"](input, output)
// then — constrained provider must clamp pre-set effort=max regardless of variant
expect(output.options.effort).toBe("high")
expect(input.message.variant).toBe("high")
})
it("#given pre-set effort=max + non-constrained Opus #when hook runs #then effort stays max", async () => {
// given — anthropic (non-OAuth, non-constrained) Opus with pre-set effort=max
const hook = createAnthropicEffortHook()
const { input, output } = createMockParams({
providerID: "anthropic",
modelID: "claude-opus-4-7",
variant: "max",
existingOptions: { effort: "max" },
})
// when
await hook["chat.params"](input, output)
// then — non-constrained Opus keeps max
expect(output.options.effort).toBe("max")
expect(input.message.variant).toBe("max")
})
it("#given pre-set effort=high + github-copilot Opus #when hook runs #then effort stays high", async () => {
// given — legitimate pre-set effort=high should not be overwritten
const hook = createAnthropicEffortHook()
const { input, output } = createMockParams({
providerID: "github-copilot",
modelID: "claude-opus-4-7",
variant: "max",
existingOptions: { effort: "high" },
})
// when
await hook["chat.params"](input, output)
// then — high is already valid for constrained providers, don't touch it
expect(output.options.effort).toBe("high")
})
})
describe("#given anthropic OAuth auth (Claude Pro/Max) — regression for #3429", () => {
let tempDataDir: string
const originalXdgDataHome = process.env.XDG_DATA_HOME