mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-26 00:52:18 +03:00
Merging --admin with red discrimination (merge-gates §4). 5/6 failing tests are the compression/i18n-vi/kiro/memory mini-cluster fixed by #11306 (this branch predates it). The 6th (token-health-check-kimi, 'jittered expiration window') is a timing-sensitive test — reproduces GREEN locally, name itself indicates randomized jitter, not a deterministic regression from this PR's reasoning-effort clamp change (zero file overlap). ESLint warnings + dast-smoke (advisory, isRequired:null) also inherited.
160 lines
6.5 KiB
TypeScript
160 lines
6.5 KiB
TypeScript
import { test, after, beforeEach } from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { sanitizeReasoningEffortForProvider } from "../../open-sse/executors/base/reasoningEffort.ts";
|
|
import {
|
|
recordLearnedReasoningEffort,
|
|
__test_resetLearnedReasoningEffortCaps,
|
|
} from "../../open-sse/services/learnedReasoningEffortCaps.ts";
|
|
|
|
beforeEach(() => {
|
|
__test_resetLearnedReasoningEffortCaps();
|
|
});
|
|
|
|
after(() => {
|
|
__test_resetLearnedReasoningEffortCaps();
|
|
});
|
|
|
|
test("unregistered/custom provider+model: no learned cap yet sends xhigh unchanged", () => {
|
|
const body = { reasoning_effort: "xhigh" };
|
|
const result = sanitizeReasoningEffortForProvider(
|
|
body,
|
|
"openai-compatible-chat-eaff6869",
|
|
"qwen3-coder-30b-a3b-instruct"
|
|
) as { reasoning_effort: string };
|
|
assert.equal(result.reasoning_effort, "xhigh");
|
|
});
|
|
|
|
test("unregistered/custom provider+model: a learned cap clamps xhigh down to it", () => {
|
|
recordLearnedReasoningEffort("openai-compatible-chat-eaff6869", "qwen3-coder-30b-a3b-instruct", [
|
|
"none",
|
|
"high",
|
|
"medium",
|
|
"low",
|
|
"minimal",
|
|
]);
|
|
const body = { reasoning_effort: "xhigh" };
|
|
const result = sanitizeReasoningEffortForProvider(
|
|
body,
|
|
"openai-compatible-chat-eaff6869",
|
|
"qwen3-coder-30b-a3b-instruct"
|
|
) as { reasoning_effort: string };
|
|
assert.equal(result.reasoning_effort, "high");
|
|
});
|
|
|
|
test("learned cap only clamps when the requested effort is above it", () => {
|
|
recordLearnedReasoningEffort("acme", "model-x", ["none", "low", "medium"]);
|
|
const body = { reasoning_effort: "low" };
|
|
const result = sanitizeReasoningEffortForProvider(body, "acme", "model-x") as {
|
|
reasoning_effort: string;
|
|
};
|
|
assert.equal(result.reasoning_effort, "low");
|
|
});
|
|
|
|
test("registry says supportsXHighEffort:false (and no supportsMax path) with a learned cap below 'high': uses the learned cap, not the hardcoded 'high'", () => {
|
|
// claude-haiku-4-5 is registered with supportsXHighEffort:false
|
|
// (open-sse/config/providers/registry/claude/index.ts) and its family is
|
|
// excluded from supportsClaudeMaxEffort (CLAUDE_MAX_EFFORT_UNSUPPORTED_FAMILY_PATTERNS
|
|
// in providerModels.ts), so it reaches the hardcoded-"high" line today —
|
|
// a real registry-covered case. Teach a lower cap and confirm it wins.
|
|
recordLearnedReasoningEffort("claude", "claude-haiku-4-5-20251001", ["none", "low", "medium"]);
|
|
const body = { reasoning_effort: "xhigh" };
|
|
const result = sanitizeReasoningEffortForProvider(
|
|
body,
|
|
"claude",
|
|
"claude-haiku-4-5-20251001"
|
|
) as {
|
|
reasoning_effort: string;
|
|
};
|
|
assert.equal(result.reasoning_effort, "medium");
|
|
});
|
|
|
|
test("registry says supportsXHighEffort:false with no learned cap: falls back to hardcoded 'high' (unchanged behavior)", () => {
|
|
const body = { reasoning_effort: "xhigh" };
|
|
const result = sanitizeReasoningEffortForProvider(
|
|
body,
|
|
"claude",
|
|
"claude-haiku-4-5-20251001"
|
|
) as {
|
|
reasoning_effort: string;
|
|
};
|
|
assert.equal(result.reasoning_effort, "high");
|
|
});
|
|
|
|
test("deepseek's non-ordinal max<->xhigh translation is untouched by the learned-cap catch-all", () => {
|
|
recordLearnedReasoningEffort("deepseek", "deepseek-v4", ["none", "low"]);
|
|
const body = { reasoning_effort: "xhigh" };
|
|
const result = sanitizeReasoningEffortForProvider(body, "deepseek", "deepseek-v4") as {
|
|
reasoning_effort: string;
|
|
};
|
|
// deepseek's special case returns early — xhigh -> max, never reaches the catch-all.
|
|
assert.equal(result.reasoning_effort, "max");
|
|
});
|
|
|
|
// #11295: nearest-tier — smallest accepted >= demand — replaces the old
|
|
// downgrade-only (greatest accepted <= demand) direction.
|
|
test("proactive clamp: medium→high for learned {low,high,max} (nearest-tier, #11295)", () => {
|
|
recordLearnedReasoningEffort("opencode-zen-direct", "x-preview-f-free", ["low", "high", "max"]);
|
|
const out = sanitizeReasoningEffortForProvider(
|
|
{ reasoning_effort: "medium", model: "x-preview-f-free" },
|
|
"opencode-zen-direct",
|
|
"x-preview-f-free"
|
|
) as { reasoning_effort: string };
|
|
assert.equal(out.reasoning_effort, "high");
|
|
});
|
|
test("proactive clamp: xhigh→max for learned {low,high,max} (nearest-tier, #11295)", () => {
|
|
recordLearnedReasoningEffort("opencode-zen-direct", "x-preview-f-free-2", ["low", "high", "max"]);
|
|
const out = sanitizeReasoningEffortForProvider(
|
|
{ reasoning_effort: "xhigh", model: "x-preview-f-free-2" },
|
|
"opencode-zen-direct",
|
|
"x-preview-f-free-2"
|
|
) as { reasoning_effort: string };
|
|
assert.equal(out.reasoning_effort, "max");
|
|
});
|
|
test("proactive clamp: ultra→max for learned {low,high,max}", () => {
|
|
recordLearnedReasoningEffort("opencode-zen-direct", "x-preview-f-free-3", ["low", "high", "max"]);
|
|
const out = sanitizeReasoningEffortForProvider(
|
|
{ reasoning_effort: "ultra", model: "x-preview-f-free-3" },
|
|
"opencode-zen-direct",
|
|
"x-preview-f-free-3"
|
|
) as { reasoning_effort: string };
|
|
assert.equal(out.reasoning_effort, "max");
|
|
});
|
|
test("proactive clamp: ultra→medium for learned {low,medium}", () => {
|
|
recordLearnedReasoningEffort("acme", "m", ["low", "medium"]);
|
|
const out = sanitizeReasoningEffortForProvider(
|
|
{ reasoning_effort: "ultra", model: "m" },
|
|
"acme",
|
|
"m"
|
|
) as { reasoning_effort: string };
|
|
assert.equal(out.reasoning_effort, "medium");
|
|
});
|
|
test("proactive clamp: high→medium for learned {low,medium}", () => {
|
|
recordLearnedReasoningEffort("acme", "m2", ["low", "medium"]);
|
|
const out = sanitizeReasoningEffortForProvider(
|
|
{ reasoning_effort: "high", model: "m2" },
|
|
"acme",
|
|
"m2"
|
|
) as { reasoning_effort: string };
|
|
assert.equal(out.reasoning_effort, "medium");
|
|
});
|
|
// #11295: sub-floor demand (low, below the learned floor {high,max}) now
|
|
// clamps up to the floor instead of passing through unchanged.
|
|
test("sub-floor clamp: low→high for learned {high,max} (#11295)", () => {
|
|
recordLearnedReasoningEffort("acme", "m3", ["high", "max"]);
|
|
const out = sanitizeReasoningEffortForProvider(
|
|
{ reasoning_effort: "low", model: "m3" },
|
|
"acme",
|
|
"m3"
|
|
) as { reasoning_effort: string };
|
|
assert.equal(out.reasoning_effort, "high");
|
|
});
|
|
test("custom model ultra→medium for learned {low,medium}", () => {
|
|
recordLearnedReasoningEffort("openai-compatible-chat-eaff6869", "qwen3-coder-30b-a3b-instruct-2", ["low", "medium"]);
|
|
const out = sanitizeReasoningEffortForProvider(
|
|
{ reasoning_effort: "ultra", model: "qwen3-coder-30b-a3b-instruct-2" },
|
|
"openai-compatible-chat-eaff6869",
|
|
"qwen3-coder-30b-a3b-instruct-2"
|
|
) as { reasoning_effort: string };
|
|
assert.equal(out.reasoning_effort, "medium");
|
|
});
|