mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-25 00:22:09 +03:00
Validated on the combined 12-PR batch board + the resolved merge against the post-#11232 tip: focused suites 73/73 (learned-reasoning-effort-caps, synced-capabilities-learned-effort-override, synced-effort-suffix-learned-validation, effort-tiers-loop-catalog-e2e, reasoning-effort-clamp-and-retry, reasoning-effort-learned-capability) + opencode-plugin effort-tier-variants 4/4, typecheck:core clean, gates within baseline. The stacked-branch conflict after #11232 squash-landed was resolved by hand (the learned-caps module keeps both the Set API and the new model-scoped lookup). The effort_tiers loop is closed end-to-end: catalog advertises exactly what the upstream accepts, and -<tier> suffix variants resolve against the learned set. Thank you @maxmad64bis!
63 lines
2.7 KiB
TypeScript
63 lines
2.7 KiB
TypeScript
/**
|
|
* effort_tiers loop — plugin maps server-declared tiers to ModelV2 variants.
|
|
* Blind mapping (I3): no owned_by/provider knowledge here — the SERVER gates
|
|
* eligibility (shouldExposeSyncedEffortVariants). Absence semantics (M3):
|
|
* no tiers => NO variants key at all (an empty object would also kill
|
|
* opencode's own fallback for non-tiered models).
|
|
*/
|
|
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import { mapRawModelToModelV2, type OmniRouteRawModelEntry } from "../src/index.js";
|
|
|
|
const CTX = { providerId: "omniroute", baseURL: "http://127.0.0.1:20128" } as const;
|
|
|
|
test("maps declared tiers to reasoningEffort variants", () => {
|
|
const raw: OmniRouteRawModelEntry = {
|
|
id: "oc/x-preview-f-free",
|
|
owned_by: "opencode",
|
|
capabilities: { reasoning: true, effort_tiers: ["low", "high", "max"] },
|
|
};
|
|
const model = mapRawModelToModelV2(raw, { ...CTX });
|
|
const variants = (model as unknown as Record<string, unknown>).variants as
|
|
Record<string, Record<string, unknown>> | undefined;
|
|
assert.ok(variants, "variants key present when tiers declared");
|
|
assert.deepEqual(Object.keys(variants).sort(), ["high", "low", "max"]);
|
|
assert.deepEqual(variants.max, { reasoningEffort: "max" });
|
|
assert.deepEqual(variants.low, { reasoningEffort: "low" });
|
|
});
|
|
|
|
test("no tiers => NO variants key (not an empty object)", () => {
|
|
const raw: OmniRouteRawModelEntry = {
|
|
id: "plain-model",
|
|
capabilities: { reasoning: true },
|
|
};
|
|
const model = mapRawModelToModelV2(raw, { ...CTX }) as unknown as Record<string, unknown>;
|
|
assert.equal("variants" in model, false);
|
|
});
|
|
|
|
test("empty or malformed tiers array => NO variants key", () => {
|
|
const empty = mapRawModelToModelV2(
|
|
{ id: "m", capabilities: { effort_tiers: [] } },
|
|
{ ...CTX }
|
|
) as unknown as Record<string, unknown>;
|
|
assert.equal("variants" in empty, false);
|
|
|
|
const junk = mapRawModelToModelV2(
|
|
{ id: "m", capabilities: { effort_tiers: [42, null, "ok"] as unknown as string[] } },
|
|
{ ...CTX }
|
|
) as unknown as Record<string, unknown>;
|
|
const variants = junk.variants as Record<string, Record<string, unknown>> | undefined;
|
|
assert.deepEqual(Object.keys(variants ?? {}), ["ok"], "non-string tokens dropped");
|
|
});
|
|
|
|
test("static registry entry WITH tiers also gets variants (N1 blast radius)", () => {
|
|
const raw: OmniRouteRawModelEntry = {
|
|
id: "some-static-model",
|
|
owned_by: "registry",
|
|
capabilities: { effort_tiers: ["minimal", "high"] },
|
|
};
|
|
const model = mapRawModelToModelV2(raw, { ...CTX }) as unknown as Record<string, unknown>;
|
|
const variants = model.variants as Record<string, Record<string, unknown>> | undefined;
|
|
assert.deepEqual(Object.keys(variants ?? {}).sort(), ["high", "minimal"]);
|
|
});
|