Files
OmniRoute/tests/unit/cursor-live-catalog-passthrough.test.ts
SB Yoon 0dbc34ea56 feat(cursor): exclusive live listing + verbatim AgentRun model ids (#9911)
* feat(cursor): prefer live synced catalog for listing and Test All

When an active synced Cursor catalog exists, list only live models plus
injected auto routers (and customs). Keep the static registry as offline
fallback.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(cursor): send live-catalog model ids verbatim on AgentRun

Skip #7289 effort/reasoning splits when the exact id is in the active synced
Cursor catalog so AgentRun does not rewrite flattened live ids into missing
bases that return AI Model Not Found. Also wires auto-cost/balance/intelligence
to default + optimization for the injected routers.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: yansigit <yansigit@users.noreply.github.com>
2026-08-10 03:46:14 -03:00

91 lines
3.3 KiB
TypeScript

import test from "node:test";
import assert from "node:assert/strict";
import {
resolveRequestedModel,
encodeAgentRunRequest,
} from "../../open-sse/utils/cursorAgentProtobuf";
import { CURSOR_REWRITE_FAILURE_IDS } from "./fixtures/cursor-rewrite-failure-ids";
test("resolveRequestedModel passes live-catalog Claude effort ids through verbatim", () => {
const live = new Set(["claude-opus-5-low"]);
assert.deepEqual(resolveRequestedModel("claude-opus-5-low", { liveCatalogIds: live }), {
modelId: "claude-opus-5-low",
parameters: [],
});
});
test("resolveRequestedModel passes live-catalog GPT reasoning ids through verbatim", () => {
const live = new Set(["gpt-5.6-sol-medium"]);
assert.deepEqual(resolveRequestedModel("gpt-5.6-sol-medium", { liveCatalogIds: live }), {
modelId: "gpt-5.6-sol-medium",
parameters: [],
});
});
test("resolveRequestedModel still strips effort when id is absent from live catalog", () => {
const live = new Set(["composer-2"]);
assert.deepEqual(resolveRequestedModel("claude-opus-5-low", { liveCatalogIds: live }), {
modelId: "claude-opus-5",
parameters: [{ id: "effort", value: "low" }],
});
assert.deepEqual(resolveRequestedModel("gpt-5.5-high", { liveCatalogIds: live }), {
modelId: "gpt-5.5",
parameters: [{ id: "reasoning", value: "high" }],
});
});
test("resolveRequestedModel still strips effort when liveCatalogIds is omitted", () => {
assert.deepEqual(resolveRequestedModel("claude-opus-4-8-high"), {
modelId: "claude-opus-4-8",
parameters: [{ id: "effort", value: "high" }],
});
});
test("resolveRequestedModel maps auto to default even when auto is in the live catalog", () => {
const live = new Set(["auto", "auto-cost", "claude-opus-5-low"]);
assert.deepEqual(resolveRequestedModel("auto", { liveCatalogIds: live }), {
modelId: "default",
parameters: [],
});
assert.deepEqual(resolveRequestedModel("auto-cost", { liveCatalogIds: live }), {
modelId: "default",
parameters: [{ id: "optimization", value: "cost" }],
});
});
test("resolveRequestedModel passes composer-*-fast through when present in live catalog", () => {
const live = new Set(["composer-2.5-fast", "composer-2-fast"]);
assert.deepEqual(resolveRequestedModel("composer-2.5-fast", { liveCatalogIds: live }), {
modelId: "composer-2.5-fast",
parameters: [],
});
assert.deepEqual(resolveRequestedModel("composer-2-fast", { liveCatalogIds: live }), {
modelId: "composer-2-fast",
parameters: [],
});
});
test("resolveRequestedModel passes every rewrite-failure id through when all are live", () => {
const live = new Set<string>(CURSOR_REWRITE_FAILURE_IDS);
for (const id of CURSOR_REWRITE_FAILURE_IDS) {
assert.deepEqual(
resolveRequestedModel(id, { liveCatalogIds: live }),
{ modelId: id, parameters: [] },
id
);
}
});
test("encodeAgentRunRequest embeds verbatim live catalog model id", () => {
const live = new Set(["claude-opus-5-low"]);
const buf = encodeAgentRunRequest({
modelId: "claude-opus-5-low",
userText: "hi",
liveCatalogIds: live,
});
const text = buf.toString("latin1");
const full = text.split("claude-opus-5-low").length - 1;
assert.ok(full >= 4, `verbatim id must appear in RequestedModel + ModelDetails (got ${full})`);
assert.ok(!text.includes("effort"), "must not emit effort parameter for live verbatim id");
});