Skip to content

fix(cursor): add kimi-k3 with low/high/max effort tiers - #646

Merged
lidge-jun merged 4 commits into
lidge-jun:devfrom
koopmannleon19977-cmyk:fix/cursor-kimi-k3
Jul 30, 2026
Merged

fix(cursor): add kimi-k3 with low/high/max effort tiers#646
lidge-jun merged 4 commits into
lidge-jun:devfrom
koopmannleon19977-cmyk:fix/cursor-kimi-k3

Conversation

@koopmannleon19977-cmyk

@koopmannleon19977-cmyk koopmannleon19977-cmyk commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Summary

Cursor serves Kimi K3 only as effort-suffixed wire ids (kimi-k3-low, kimi-k3-high, kimi-k3-max) — verified against GetUsableModels on 2026-07-28 with an entitled account. The bare id kimi-k3 fails with Connect not_found, and since the model was missing from CURSOR_STATIC_MODELS it never entered the routed catalog either.

  • src/adapters/cursor/effort-map.ts: add "kimi-k3": ["low", "high", "max"] to CURSOR_MODEL_EFFORT_TIERS, so requests resolve to a suffixed variant (bare/no-effort picks the top tier max, 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: add kimi-k3 to CURSOR_STATIC_MODELS (CONTEXT_262K, supportsReasoningEffort: true) and adjust the stale "kimi sent bare" comment.
  • Cursor's own docs page now lists the model: https://cursor.com/docs/models/kimi-k3

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 contains kimi-k3)
  • bun test tests/codex-catalog.test.ts tests/provider-registry-parity.test.ts tests/reasoning-effort.test.ts — 182 pass
  • Live smoke against a 2.7.41 install patched with this change: POST /v1/responses cursor/kimi-k3completed (previously Cursor Connect error not_found); same with reasoning.effort=low

Summary by CodeRabbit

  • New Features
    • Added support for the Cursor Kimi K3 model (262K context window).
    • Added reasoning effort tier handling (low/medium/high/max) with correct effort-suffix routing.
    • When no effort level is specified, model selection now defaults to the highest available effort (max).
  • Bug Fixes
    • Adjusted Cursor provider defaults to ensure Kimi K3 routes to the expected max tier.
  • Documentation
    • Refreshed Cursor GPT-5.6 preview path notes, including fallback and tier behavior.
  • Tests
    • Added/updated regression coverage for Kimi K3 discovery, effort ladders, and catalog defaults.

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.
@github-actions github-actions Bot added the bug Something isn't working label Jul 28, 2026
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The Cursor adapter now catalogs kimi-k3 with a 262K context window and reasoning support, maps its low, high, and max effort variants, defaults routing to max, and documents and tests the resulting behavior.

Changes

Cursor kimi-k3 support

Layer / File(s) Summary
Catalog and effort-tier mapping
src/adapters/cursor/discovery.ts, src/adapters/cursor/effort-map.ts
Adds kimi-k3 to the static catalog with reasoning metadata and maps its available effort suffixes to low, high, and max.
Default routing and catalog validation
src/providers/registry.ts, tests/cursor-discovery.test.ts, tests/cursor-effort-suffix.test.ts, tests/codex-catalog.test.ts
Defaults kimi-k3 routing to max and verifies discovery, effort resolution, ladder ordering, and catalog metadata.
Provider documentation updates
docs-site/src/content/docs/guides/providers.md, docs-site/src/content/docs/{ja,ko,ru,zh-cn}/guides/providers.md
Documents the fallback entry, effort-suffixed wire IDs, exposed effort ladder, and max default across provider guides; the English text is also reflowed.

Estimated code review effort: 2 (Simple) | ~10 minutes

Sequence Diagram(s)

sequenceDiagram
  participant CursorDiscovery
  participant EffortMap
  participant ProviderRegistry
  participant Catalog
  CursorDiscovery->>EffortMap: Register kimi-k3 effort tiers
  EffortMap-->>ProviderRegistry: Provide low, high, max mappings
  ProviderRegistry->>Catalog: Apply max default reasoning effort
  Catalog-->>ProviderRegistry: Expose cursor/kimi-k3 catalog metadata
Loading

Suggested labels: enhancement

Suggested reviewers: lidge-jun, ingwannu, wibias

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main change: adding Cursor support for kimi-k3 with low/high/max effort tiers.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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 },

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 },

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 Wibias left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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"] match KIMI_CODING_K3_REASONING_EFFORTS; supportsReasoningEffort: true matches the effort-map entry.
  • mediumkimi-k3-high clamp matches existing non-medium ladder behavior (cursorEffortSuffix).
  • Static seed + effort-suffix tests are the right shape once the default override lands.

Required before merge

  1. Set Cursor modelDefaultReasoningEfforts["kimi-k3"] = "max" (+ regression coverage).
  2. Update docs-site Cursor coverage (EN + locales).

@Wibias
Wibias marked this pull request as draft July 29, 2026 08:56
@lidge-jun

Copy link
Copy Markdown
Owner

Reviewed against the current dev tip. The tier data is correct and I verified it independently — closing the loop on what is still needed before this can land.

Confirmed correct

Cursor's own CursorBench page lists exactly Kimi K3 Low, Kimi K3 High, and Kimi K3 Max, so ["low", "high", "max"] matches first-party evidence, and there is no medium tier to add. Moonshot's official Kimi K3 model card documents the same three reasoning_effort values. Your tests pass locally for me too: tests/cursor-effort-suffix.test.ts + tests/cursor-discovery.test.ts 18 pass, and tests/codex-catalog.test.ts + tests/provider-registry-parity.test.ts + tests/reasoning-effort.test.ts 182 pass, with bun x tsc --noEmit clean.

Blocker: the catalog default lands on high, not max

The Codex-review P2 about this is real, and I reproduced it rather than taking it on faith. Against your branch:

cursorModelEffortLadder("kimi-k3")            -> ["low","high","max"]
cursor registry modelDefaultReasoningEfforts  -> null
default_reasoning_level would be              -> high

applyReasoningLevels picks medium if present, otherwise high, otherwise the first rung. With no modelDefaultReasoningEfforts on the cursor entry, high wins and an ordinary picker request sends high explicitly — so the request builder's no-effort fallback to kimi-k3-max is never reached.

That also breaks consistency with the other K3 routes. src/providers/registry.ts already carries modelDefaultReasoningEfforts: { "kimi-k3": "max" } on the opencode-go entry, and Moonshot documents max as the model's default. Cursor should not be the one route that quietly downgrades it.

The fix is one line on the cursor registry entry, next to the existing modelReasoningEfforts: cursorModelReasoningEfforts(...):

modelDefaultReasoningEfforts: { "kimi-k3": "max" },

Please also add a catalog-level assertion so this cannot regress — the existing effort-suffix tests pass without it, which is exactly why the P2 slipped through.

Second item: docs

docs-site/src/content/docs/guides/providers.md describes the Cursor fallback seed as gpt-5.6-sol/terra/luna plus grok-4.5/grok-4.5-fast, with no mention of Kimi K3 or its effort ladder. Per AGENTS.md, a user-visible catalog change needs the English docs updated, and translated locales should not end up contradicting it.

To land

  1. Add the max default above, with catalog coverage.
  2. Update the Cursor coverage docs.
  3. Mark the PR ready for review (it is still a draft), which also lets CodeRabbit run a real pass instead of skipping.

Thanks for the live GetUsableModels verification and the smoke test against a patched install — that is the part that is hard to check from the outside, and it is what makes the tier list trustworthy. Once the default is pinned this is a straightforward merge.

PR lidge-jun#646 seeds cursor/kimi-k3 with a low/high/max effort ladder, which is the
right tier data — Cursor serves K3 only as effort-suffixed wire ids and Kimi
documents max as the model's API default. But the Cursor registry entry supplied
no modelDefaultReasoningEfforts, and that ladder has no medium rung, so
applyReasoningLevels fell through medium -> high and settled the catalog default
on high. The picker then sends high explicitly and the request builder's
no-effort fallback to kimi-k3-max is never reached.

The other K3 routes (kimi, kimi-code, opencode-go) already carry this default,
so cursor was also the odd one out.

Verified in both directions: on the PR commit alone the assembled catalog row
reports default_reasoning_level = high; with this line it reports max; removing
the line again fails the new test with Received: "high". The existing
effort-suffix tests pass either way, which is why the defect slipped through —
they assert the ladder, not the assembled default.

Scope check: modelRecordValue matches exact key, colon-family, then case-fold,
so { "kimi-k3": "max" } cannot reach kimi-k3-max, kimi-k3-low, or any other
cursor model. Confirmed across 8 model ids; only kimi-k3 is affected.

Gates: tsc clean; codex-catalog 113 pass; cursor-effort-suffix + cursor-discovery
18 pass; provider-registry-parity + reasoning-effort 70 pass.

Docs ship in the same commit because the prose asserts the ladder and default.
@lidge-jun
lidge-jun marked this pull request as ready for review July 29, 2026 23:56
@lidge-jun

Copy link
Copy Markdown
Owner

Maintainer follow-up: I pushed the two requested changes to this branch as d2201509b and marked the PR ready.

Why the tier data was right but the PR was incomplete. Your ["low","high","max"] ladder is correct — Cursor serves K3 only as effort-suffixed wire ids, and Kimi documents max as the model's API default. The gap was that the Cursor registry entry supplied no modelDefaultReasoningEfforts. Because that ladder has no medium rung, applyReasoningLevels fell through its medium -> high -> first preference and settled the catalog default on high. The picker then sends high explicitly, so the request builder's no-effort fallback to kimi-k3-max was never reached — the behaviour your PR description describes as the intent.

Reproduced both directions on your commit:

31c732653 alone            -> row.default_reasoning_level = "high"   (ladder low/high/max, default undefined)
+ modelDefaultReasoningEfforts -> row.default_reasoning_level = "max"
line removed again        -> new test fails with Received: "high"

This is also why the existing cursor-effort-suffix tests passed without it: they assert the ladder, not the assembled catalog default. The new regression case covers the assembled row instead.

cursor was the only K3 route missing this — kimi, kimi-code, and opencode-go already carry it.

What landed in d2201509b:

  1. src/providers/registry.tsmodelDefaultReasoningEfforts: { "kimi-k3": "max" } on the cursor entry, with a comment recording the medium-less-ladder reasoning.
  2. tests/codex-catalog.test.ts — a regression case asserting the assembled row's ladder [low, high, max, ultra] and default_reasoning_level === "max", following the neighbouring Google Gemini block's enrichProviderFromRegistry + gatherRoutedModels + buildCatalogEntries pattern.
  3. docs-site — the Cursor adapter paragraph now lists kimi-k3 (262K) in the fallback seed and states the ladder defaults to max, in the English source plus the ko/ja/ru/zh-cn locales. The separate GPT-5.6 coverage table is deliberately untouched, since inserting a non-5.6 model there would break what that table means.

Docs shipped in the same commit as the registry line on purpose: the prose asserts the ladder and the default, so splitting them would make the docs false at the intermediate commit.

Scope check. modelRecordValue matches exact key, then colon-family, then case-fold, so { "kimi-k3": "max" } cannot reach kimi-k3-max, kimi-k3-low, or any other model. Verified across 8 Cursor model ids — only kimi-k3 is affected; glm-5.2, gpt-5.6-sol, grok-4.5, kimi-k2.7-code, and claude-opus-5" all stay untouched. Field completeness for cursor/kimi-k3` is also confirmed from your seed: context 262,144, text+image modalities with vision-sidecar coverage, so no further registry fields are needed.

Gates (local, on the pushed head): tsc --noEmit clean; codex-catalog 113 pass; cursor-effort-suffix + cursor-discovery 18 pass; provider-registry-parity + reasoning-effort 70 pass; privacy:scan pass; lint:gui pass. Waiting on cross-platform CI before merge.

Thanks for the account-verified GetUsableModels evidence and the live smoke — that made the tier data easy to confirm.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs-site/src/content/docs/ru/guides/providers.md`:
- Around line 224-226: Update the Russian Cursor note near the `cursor/kimi-k3`
description to rephrase the clause after `max`, explicitly stating that `max`
corresponds to the documented default value in the model API. Preserve the
existing meaning and the `low` / `high` / `max` ladder.

In `@tests/codex-catalog.test.ts`:
- Around line 711-712: Update the regression expectation in the supported
reasoning levels assertion to remove the unsupported "ultra" tier, leaving only
"low", "high", and "max" for the kimi-k3 effort map.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: f40bb068-1367-4ac5-ba70-84e92ae41cb4

📥 Commits

Reviewing files that changed from the base of the PR and between 31c7326 and d220150.

📒 Files selected for processing (7)
  • docs-site/src/content/docs/guides/providers.md
  • docs-site/src/content/docs/ja/guides/providers.md
  • docs-site/src/content/docs/ko/guides/providers.md
  • docs-site/src/content/docs/ru/guides/providers.md
  • docs-site/src/content/docs/zh-cn/guides/providers.md
  • src/providers/registry.ts
  • tests/codex-catalog.test.ts

Comment on lines +224 to +226
Kimi K3 только через wire id с суффиксом усилия, поэтому `cursor/kimi-k3` предоставляет лестницу
`low` / `high` / `max` и по умолчанию использует `max` — как и задокументированное значение по
умолчанию в API модели. Управляемое сервером Cursor

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Fix the Russian case/agreement in the Cursor note.

The phrase как и задокументированное значение по умолчанию is grammatically awkward in this construction. Rephrase it so that max is explicitly stated to correspond to the documented API default.

Proposed fix
-`low` / `high` / `max` и по умолчанию использует `max` — как и задокументированное значение по
-умолчанию в API модели.
+`low` / `high` / `max` и по умолчанию использует `max`, что соответствует
+задокументированному в API модели значению по умолчанию.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Kimi K3 только через wire id с суффиксом усилия, поэтому `cursor/kimi-k3` предоставляет лестницу
`low` / `high` / `max` и по умолчанию использует `max` — как и задокументированное значение по
умолчанию в API модели. Управляемое сервером Cursor
Kimi K3 только через wire id с суффиксом усилия, поэтому `cursor/kimi-k3` предоставляет лестницу
`low` / `high` / `max` и по умолчанию использует `max`, что соответствует
задокументированному в API модели значению по умолчанию. Управляемое сервером Cursor
🧰 Tools
🪛 LanguageTool

[uncategorized] ~226-~226: Прилагательное не согласуется с существительным по падежу.
Context: ...ное значение по умолчанию в API модели. Управляемое сервером Cursor нативное выполнение read/write/d...

(Unify_Adj_NN_case)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs-site/src/content/docs/ru/guides/providers.md` around lines 224 - 226,
Update the Russian Cursor note near the `cursor/kimi-k3` description to rephrase
the clause after `max`, explicitly stating that `max` corresponds to the
documented default value in the model API. Preserve the existing meaning and the
`low` / `high` / `max` ladder.

Source: Linters/SAST tools

Comment on lines +711 to +712
expect((entry?.supported_reasoning_levels as Array<{ effort: string }>).map(level => level.effort))
.toEqual(["low", "high", "max", "ultra"]);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Remove the unsupported ultra tier from this regression expectation.

The Cursor effort map defines kimi-k3 as ["low", "high", "max"] (src/adapters/cursor/effort-map.ts, Line 30), and the updated provider documentation states the same ladder. This test currently asserts an extra ultra level, so it will fail against the intended catalog or conceal a source/catalog contract drift.

Proposed fix
     expect((entry?.supported_reasoning_levels as Array<{ effort: string }>).map(level => level.effort))
-      .toEqual(["low", "high", "max", "ultra"]);
+      .toEqual(["low", "high", "max"]);
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
expect((entry?.supported_reasoning_levels as Array<{ effort: string }>).map(level => level.effort))
.toEqual(["low", "high", "max", "ultra"]);
expect((entry?.supported_reasoning_levels as Array<{ effort: string }>).map(level => level.effort))
.toEqual(["low", "high", "max"]);
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/codex-catalog.test.ts` around lines 711 - 712, Update the regression
expectation in the supported reasoning levels assertion to remove the
unsupported "ultra" tier, leaving only "low", "high", and "max" for the kimi-k3
effort map.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d2201509b6

ℹ️ 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".

Comment thread src/providers/registry.ts
// default on `high`, the picker would send `high` explicitly, and the request builder's
// no-effort fallback to `kimi-k3-max` would never be reached. Mirrors the other K3
// routes (kimi, kimi-code, opencode-go).
modelDefaultReasoningEfforts: { "kimi-k3": "max" },

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Merge the Kimi default into partial Cursor maps

When an existing Cursor configuration already has modelDefaultReasoningEfforts for an unrelated model, this new default never reaches the catalog: enrichProviderFromRegistry only copies that map when the entire field is absent (src/providers/derive.ts), whereas the request router merges it per key. As a result, cursor/kimi-k3 falls back to catalog default high for such configurations even though routing knows the registry default is max. Fresh evidence after the prior finding's fix is that the newly added override remains hidden specifically by a pre-existing partial user map; merge defaults per key and cover that configuration in the catalog regression test.

Useful? React with 👍 / 👎.

live HTTP/2 transport. Its v2.7.1 fallback seed includes `gpt-5.6-sol` / `terra` / `luna` (1M context),
`grok-4.5` / `grok-4.5-fast` (500K), and `kimi-k3` (262K); live discovery decides which remain
visible for the account. Cursor serves Kimi K3 only as effort-suffixed wire ids, so
`cursor/kimi-k3` exposes a `low` / `high` / `max` ladder and defaults to `max`, matching the

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Document the synthetic ultra tier

The new documentation says cursor/kimi-k3 exposes only a low / high / max ladder, but applyReasoningLevels always adds ultra to routed reasoning models, and the new catalog test explicitly expects ['low', 'high', 'max', 'ultra']. Users therefore see an undocumented fourth picker option; describe ultra as an alias that resolves to the max wire tier and make the same correction in each translated locale.

AGENTS.md reference: AGENTS.md:L96-L97

Useful? React with 👍 / 👎.

@lidge-jun lidge-jun left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approving. Both requested changes landed in d2201509b, and the branch is now merged up to green dev as 60bd535f6.

Your tier data was right from the start — Cursor serves K3 only as effort-suffixed wire ids and Kimi documents max as the API default. What was missing was the registry default: with no medium rung in the ladder, applyReasoningLevels fell through medium -> high and settled the catalog on high, so the picker sent high explicitly and never reached the kimi-k3-max fallback your PR description intended. Verified on your commit alone (high), with the fix (max), and by deleting the line again (new test fails with Received: \"high\").

CI history worth noting so the reruns do not look mysterious: the first windows-latest failure was a missing timeout-headroom fix (#717) that this branch's base predated, the second was the dev kiro regression now fixed as #718, and the third was a Bun runtime panic(thread …): Internal assertion failure that cleared on rerun. All six jobs are green on 60bd535f6.

Thanks for the account-verified GetUsableModels evidence and the live smoke — that made the tier ladder easy to confirm.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants