Skip to content

cursor: expand catalog effort slugs into parameters - #193

Merged
raine merged 2 commits into
raine:mainfrom
ethandey:cursor-catalog-parameters
Oct 23, 2026
Merged

raine merged 2 commits into
raine:mainfrom
ethandey:cursor-catalog-parameters

Conversation

@ethandey

Copy link
Copy Markdown
Contributor

The Cursor model picker id is not the AgentService wire id.

claude-sonnet-5-5-medium is rejected. The request Cursor accepts is family id claude-sonnet-5-5 with context=300k and reasoning_effort=medium, and no fast parameter. model_message always appended fast=false. Cursor answers ERROR_BAD_MODEL_NAME, which this proxy reports as Connect error 502: Error (not_found).

This maps the current non-max variants for Sonnet 5.5, Opus 5.5, Fable 5, Fable 5.1, Sonnet 5, Gemini 3.8 Flash, Gemini 4 Argon, Muse Spark 1.3, Muse Wonder 1.0, and Kimi K3. The effort key is whichever the catalog uses (reasoning_effort, effort, or reasoning). Composer and Grok stay a family id plus fast. An unknown cursor:<id> still passes through.

The table is the non-max parameter set, not max mode, and it is not a live AvailableModels fetch. A trailing -fast is kept only for families whose catalog lists fast.

This is separate from #179. That change is what turns Cursor's native tool call into a Claude tool block. This one is what makes the model name valid in the first place.

ethandey and others added 2 commits October 23, 2026 09:02
List ids such as claude-sonnet-5-5-medium are not wire ids. Cursor
expects the family id plus the parameters stored on that variant.
Sending fast on a family that does not list it returns
ERROR_BAD_MODEL_NAME, which this proxy reports as Connect not_found.

Composer and Grok stay a family id plus the fast flag. Unknown
cursor ids still pass through unchanged.
Use an async mutex for the shared environment lock so Cursor integration
tests can hold it through upstream requests without blocking executor
threads. Keep the synchronous auth test on the same lock using blocking_lock.
Remove the obsolete lint suppressions and format the model parameter code
as required by the pre-commit checks.
@raine
raine force-pushed the cursor-catalog-parameters branch from 588bdbf to 4375b6b Compare October 23, 2026 06:12
@raine
raine merged commit 8e4ca11 into raine:main Oct 23, 2026
@raine

raine commented Oct 23, 2026

Copy link
Copy Markdown
Owner

Merged, thanks @ethandey for the fix! Rebased onto main and kept the Grok 4.7 max-mode support. All checks pass.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants