fix(cursor): add kimi-k3 with low/high/max effort tiers - #646
fix(cursor): add kimi-k3 with low/high/max effort tiers#646koopmannleon19977-cmyk wants to merge 1 commit into
Conversation
Cursor serves Kimi K3 only as effort-suffixed wire ids (kimi-k3-low/-high/-max, verified via GetUsableModels 2026-07-28); the bare id returns Connect not_found. Add the base model to CURSOR_STATIC_MODELS (tier picker) and CURSOR_MODEL_EFFORT_TIERS so requests resolve to a suffixed variant, mirroring the native Kimi provider's K3 ladder.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
📝 WalkthroughWalkthroughThe Cursor adapter now catalogs ChangesCursor kimi-k3 support
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 31c732653f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| { id: "kimi-k2.7-code", contextWindow: CONTEXT_262K }, | ||
| // kimi-k3: cursor.com/docs/models/kimi-k3; account-verified via GetUsableModels (2026-07-28) — | ||
| // ships only as effort-suffixed kimi-k3-{low,high,max}, so the tier picker is exposed. | ||
| { id: "kimi-k3", contextWindow: CONTEXT_262K, supportsReasoningEffort: true }, |
There was a problem hiding this comment.
Document Kimi K3 in the Cursor catalog
Adding cursor/kimi-k3 with selectable low / high / max tiers changes the user-visible picker and fallback catalog, but the docs-site model coverage table still describes the Cursor fallback without this model or its effort behavior. Update the English Cursor coverage documentation and keep translated locales consistent so users can discover and correctly configure the new route.
AGENTS.md reference: AGENTS.md:L96-L97
Useful? React with 👍 / 👎.
| { id: "kimi-k2.7-code", contextWindow: CONTEXT_262K }, | ||
| // kimi-k3: cursor.com/docs/models/kimi-k3; account-verified via GetUsableModels (2026-07-28) — | ||
| // ships only as effort-suffixed kimi-k3-{low,high,max}, so the tier picker is exposed. | ||
| { id: "kimi-k3", contextWindow: CONTEXT_262K, supportsReasoningEffort: true }, |
There was a problem hiding this comment.
Preserve max as Kimi K3's catalog default
When this model is used through the Codex catalog, cursorModelReasoningEfforts supplies low / high / max but the Cursor registry supplies no modelDefaultReasoningEfforts override. Consequently, applyReasoningLevels selects high as default_reasoning_level, so an ordinary picker request explicitly sends high and never reaches the request builder's intended no-effort fallback to kimi-k3-max. Add a max default for this Cursor model, as is already done for Kimi K3 on the other provider routes, and cover the integrated catalog entry.
Useful? React with 👍 / 👎.
Wibias
left a comment
There was a problem hiding this comment.
Maintainer review (bug + security)
Verdict: REQUEST CHANGES
HEAD: 31c73265. Target dev is correct. CodeRabbit: no actionable comments. Codex: 2 open P2s (verified below). Security review (Security Review): no medium+ — static catalog/effort-tier mapping only; no auth, credential, SSRF, or trust-boundary changes.
Focused effort/discovery tests: discovery suite passes; effort-suffix file needs bun install in the review worktree (@bufbuild/protobuf) — rely on CI for the full gate. Cross-platform CI had not fully reported at review time beyond label/enforce/CodeRabbit.
Open Codex (verified against HEAD)
| Item | Verdict | Action |
|---|---|---|
P2: catalog default becomes high, not max |
Valid / required | Cursor registry has modelReasoningEfforts from the ladder ["low","high","max"] but no modelDefaultReasoningEfforts. applyReasoningLevels (effort.ts:178-180) then picks high (no medium in the ladder). Ordinary Codex picker requests therefore send high → wire kimi-k3-high, and never hit the request-builder’s no-effort → top-tier (kimi-k3-max) path that the new test documents. Native Kimi / OpenCode-Go already set "kimi-k3": "max". Add modelDefaultReasoningEfforts: { "kimi-k3": "max" } on the Cursor registry entry (providers/registry.ts) and cover it in catalog/reasoning tests. |
| P2: docs-site Cursor coverage | Valid / required | User-facing catalog change. Update English docs-site/.../guides/codex-app-models.md Cursor row (and keep translated locales consistent) so the static fallback mentions cursor/kimi-k3 and its low / high / max effort behavior. |
Diff sanity (no extra blockers)
- Tiers
["low","high","max"]matchKIMI_CODING_K3_REASONING_EFFORTS;supportsReasoningEffort: truematches the effort-map entry. medium→kimi-k3-highclamp matches existing non-medium ladder behavior (cursorEffortSuffix).- Static seed + effort-suffix tests are the right shape once the default override lands.
Required before merge
- Set Cursor
modelDefaultReasoningEfforts["kimi-k3"] = "max"(+ regression coverage). - Update docs-site Cursor coverage (EN + locales).
Summary
Cursor serves Kimi K3 only as effort-suffixed wire ids (
kimi-k3-low,kimi-k3-high,kimi-k3-max) — verified againstGetUsableModelson 2026-07-28 with an entitled account. The bare idkimi-k3fails with Connectnot_found, and since the model was missing fromCURSOR_STATIC_MODELSit never entered the routed catalog either.src/adapters/cursor/effort-map.ts: add"kimi-k3": ["low", "high", "max"]toCURSOR_MODEL_EFFORT_TIERS, so requests resolve to a suffixed variant (bare/no-effort picks the top tiermax, same clamp behavior as other tiered models). Tiers mirror the native Kimi provider's K3 ladder (KIMI_CODING_K3_REASONING_EFFORTS).src/adapters/cursor/discovery.ts: addkimi-k3toCURSOR_STATIC_MODELS(CONTEXT_262K,supportsReasoningEffort: true) and adjust the stale "kimi sent bare" comment.Test plan
bun test tests/cursor-effort-suffix.test.ts tests/cursor-discovery.test.ts— 18 pass (new cases:cursor/kimi-k3+ low/medium/high/max/bare → suffixed wire ids, ladder["low","high","max"], static seed containskimi-k3)bun test tests/codex-catalog.test.ts tests/provider-registry-parity.test.ts tests/reasoning-effort.test.ts— 182 passPOST /v1/responsescursor/kimi-k3→completed(previouslyCursor Connect error not_found); same withreasoning.effort=lowSummary by CodeRabbit