fix(shared): guard maxOutputTokens <= 0 in model settings compatibility (#3305)

When model metadata reports maxOutputTokens as 0 or negative, the
clamp logic would set maxTokens to 0 and break generation. Added
a positive-value guard so invalid metadata is ignored and the
user-requested maxTokens is preserved.

🤖 Generated with OhMyOpenCode assistance
https://github.com/code-yeongyu/oh-my-opencode
This commit is contained in:
YeonGyu-Kim
2026-04-12 02:28:36 +09:00
parent a6e4f211a3
commit 4f02ace7de
2 changed files with 25 additions and 0 deletions
@@ -486,6 +486,30 @@ describe("resolveCompatibleModelSettings", () => {
])
})
test("#given capabilities.maxOutputTokens is 0 #then maxTokens preserved unchanged", () => {
const result = resolveCompatibleModelSettings({
providerID: "openai",
modelID: "gpt-5.4",
desired: { maxTokens: 200_000 },
capabilities: { maxOutputTokens: 0 },
})
expect(result.maxTokens).toBe(200_000)
expect(result.changes).toEqual([])
})
test("#given capabilities.maxOutputTokens is -1 #then maxTokens preserved unchanged", () => {
const result = resolveCompatibleModelSettings({
providerID: "openai",
modelID: "gpt-5.4",
desired: { maxTokens: 200_000 },
capabilities: { maxOutputTokens: -1 },
})
expect(result.maxTokens).toBe(200_000)
expect(result.changes).toEqual([])
})
// Passthrough: undefined desired values produce no changes
test("no-op when desired settings are empty", () => {
const result = resolveCompatibleModelSettings({