Files
OmniRoute/tests/unit/opencode-zen-reasoning-effort.test.ts
2026-08-09 17:54:23 -03:00

102 lines
3.6 KiB
TypeScript

import { describe, it } from "node:test";
import assert from "node:assert/strict";
import { sanitizeReasoningEffortForProvider } from "../../open-sse/executors/base/reasoningEffort.ts";
/**
* Regression tests for #9318: OpenCode Zen DeepSeek models should accept `max`
* reasoning effort (not normalized to `xhigh`).
*
* OpenCode Zen proxies DeepSeek with the native DeepSeek API contract, which
* accepts {high, max} literally — same as opencode-go. Without this opt-in,
* `max` would be normalized to `xhigh` and rejected by the upstream.
*/
describe("opencode-zen reasoning effort — max support (#9318)", () => {
// ── max passes through for opencode-zen with DeepSeek models ──────────
it("opencode-zen + deepseek model with max keeps max (not downgraded)", () => {
const result = sanitizeReasoningEffortForProvider(
{ reasoning_effort: "max", messages: [{ role: "user", content: "hi" }] },
"opencode-zen",
"oc/deepseek-v4-flash-free"
);
assert.equal(
(result as Record<string, unknown>).reasoning_effort,
"max",
"expected max to pass through for opencode-zen + deepseek"
);
});
it("opencode-zen + deepseek-v4-pro with max keeps max", () => {
const result = sanitizeReasoningEffortForProvider(
{ reasoning_effort: "max", messages: [] },
"opencode-zen",
"deepseek-v4-pro"
);
assert.equal(
(result as Record<string, unknown>).reasoning_effort,
"max",
"expected max to pass through for opencode-zen + deepseek-v4-pro"
);
});
// ── high passes through for opencode-zen with any model (already works) ─
it("opencode-zen + non-deepseek model with high keeps high", () => {
const result = sanitizeReasoningEffortForProvider(
{ reasoning_effort: "high", messages: [] },
"opencode-zen",
"oc/gpt-5"
);
assert.equal(
(result as Record<string, unknown>).reasoning_effort,
"high",
"expected high to pass through for opencode-zen + non-deepseek model"
);
});
// ── opencode (noauth) max passthrough ─────────────────────────────────
it("opencode (noauth) with max preserves max", () => {
const result = sanitizeReasoningEffortForProvider(
{ reasoning_effort: "max", messages: [] },
"opencode",
"deepseek-v4-flash"
);
assert.equal((result as Record<string, unknown>).reasoning_effort, "max");
});
it("opencode (noauth) with high keeps high", () => {
const result = sanitizeReasoningEffortForProvider(
{ reasoning_effort: "high", messages: [] },
"opencode",
"deepseek-v4-flash"
);
assert.equal(
(result as Record<string, unknown>).reasoning_effort,
"high",
"expected high to remain high for opencode (noauth)"
);
});
// ── opencode-go effort tiers unaffected (regression guard) ────────────
it("opencode-go + deepseek model with max keeps max (regression guard)", () => {
const result = sanitizeReasoningEffortForProvider(
{ reasoning_effort: "max", messages: [] },
"opencode-go",
"deepseek-v4-pro"
);
assert.equal(
(result as Record<string, unknown>).reasoning_effort,
"max",
"expected max to pass through for opencode-go + deepseek"
);
});
it("opencode-go + non-deepseek model with max preserves max", () => {
const result = sanitizeReasoningEffortForProvider(
{ reasoning_effort: "max", messages: [] },
"opencode-go",
"some-other-model"
);
assert.equal((result as Record<string, unknown>).reasoning_effort, "max");
});
});