mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-23 07:32:20 +03:00
⭐5 — Cursor PKCE login com Bearer quota, auto router e empty-turn errors. Feature completa e testada (11 arquivos de teste, 133 testes focados, todos verdes).
**Validação (worktree combinado `.claude/worktrees/fix-9909`, board sobre `origin/release/v3.8.50`):**
- 3 conflitos reais resolvidos: `config/quality/eslint-suppressions.json` (aditivo), `open-sse/config/providers/registry/cursor/index.ts` (dedup de 208 entradas de catálogo, 0 IDs duplicados verificado), `open-sse/executors/cursor.ts` (imports aditivos).
- `npm run typecheck:core`: limpo.
- `check-changelog-integrity`, `check-file-size`, `check-complexity` (2615/2774), `check-cognitive-complexity` (1175/1223), `check-dead-code` (410/416): todos OK.
- `check-public-creds`: 1 entrada obsoleta pré-existente na allowlist (`copilot-m365-web.ts:330`), já presente no tip da release — não é desta PR.
- `npm run lint`: 0 errors (5 warnings pré-existentes).
- Testes focados (`cursor-agent-cli-version`, `cursor-available-models`, `cursor-catalog-combo-compat`, `cursor-errors-classify`, `cursor-login-pkce`, `cursor-model-effort-suffix-7289`, `cursor-streaming`, `cursor-token-extractor`, `cursor-token-refresh-wiring`, `cursor-usage-fetcher`, `empty-stream-no-content-8649`): 133/133 verdes.
- Corrigido durante a validação: 1 teste novo da própria PR (`cursor-model-effort-suffix-7289.test.ts`, "splits effort off legacy grok- ids") colidia com `CURSOR_MODEL_ALIASES` já mesclado na release (mapeia `grok-4.5-high` → `cursor-grok-4.5-high` antes do fallback legado rodar); ajustado para usar um id não-aliasado (`grok-3-high`) que de fato exercita o fallback — commit `68b58ed`.
Obrigado pela contribuição, @yansigit — feature robusta com boa cobertura de testes.
49 lines
1.6 KiB
TypeScript
49 lines
1.6 KiB
TypeScript
import assert from "node:assert/strict";
|
|
import { test } from "node:test";
|
|
|
|
import { cursorProvider } from "../../open-sse/config/providers/registry/cursor/index.ts";
|
|
import { normalizeCursorModelId } from "../../open-sse/utils/cursorAgentProtobuf.ts";
|
|
|
|
const LEGACY_CURSOR_COMBO_MODEL_IDS = [
|
|
"composer-2",
|
|
"composer-2-fast",
|
|
"gpt-5.4-low-fast",
|
|
"gpt-5.3-codex-spark-preview-low",
|
|
"gpt-5.3-codex-spark-preview",
|
|
"gpt-5.3-codex-spark-preview-high",
|
|
"gpt-5.3-codex-spark-preview-xhigh",
|
|
"claude-4.6-opus-high-thinking-fast",
|
|
"claude-4.6-opus-max-thinking-fast",
|
|
"grok-4.3",
|
|
"grok-4.5-medium",
|
|
"grok-4.5-fast-medium",
|
|
"grok-4.5-high",
|
|
"grok-4.5-fast-high",
|
|
"grok-4.5-xhigh",
|
|
"grok-4.5-fast-xhigh",
|
|
"kimi-k2.5",
|
|
] as const;
|
|
|
|
const LEGACY_GROK_ALIASES = {
|
|
"grok-4.5-medium": "cursor-grok-4.5-medium",
|
|
"grok-4.5-fast-medium": "cursor-grok-4.5-medium-fast",
|
|
"grok-4.5-high": "cursor-grok-4.5-high",
|
|
"grok-4.5-fast-high": "cursor-grok-4.5-high-fast",
|
|
"grok-4.5-xhigh": "cursor-grok-4.5-xhigh",
|
|
"grok-4.5-fast-xhigh": "cursor-grok-4.5-xhigh-fast",
|
|
} as const;
|
|
|
|
test("keeps legacy Cursor combo model ids in the static catalog", () => {
|
|
const catalogIds = new Set(cursorProvider.models.map((model) => model.id));
|
|
|
|
for (const modelId of LEGACY_CURSOR_COMBO_MODEL_IDS) {
|
|
assert.ok(catalogIds.has(modelId), `missing Cursor catalog model: ${modelId}`);
|
|
}
|
|
});
|
|
|
|
test("normalizes legacy Grok combo ids to Cursor model ids", () => {
|
|
for (const [legacyId, canonicalId] of Object.entries(LEGACY_GROK_ALIASES)) {
|
|
assert.equal(normalizeCursorModelId(legacyId), canonicalId);
|
|
}
|
|
});
|