feat(desktop): reasoning effort picker for cursor-agent
Summary
Cursor Agent had no effort dropdown because cursor-agent has no effort flag. Its catalog publishes one model id per level instead (claude-opus-4-8-low, gpt-5.6-sol-xhigh, ...), and the bracket override syntax its --help advertises (model[effort=high]) is rejected by the CLI's model validator (verified on cursor-agent 2026.08.11). So:
AGENT_EFFORT_SUPPORTgains acursor-agententry witheffortFlag: nulland amodelVariantsmap: curated model id → effort id → sibling model id, generated from families and checked against--list-models.buildAgentModelArgstakes an optional effort and swaps in the sibling id;buildAgentEffortArgsemits nothing for flag-less presets. Host launch passes the effort through.getAgentEffortsoffers only the selected model's ladder, and nothing for Auto / Composer / Sonnet 4.6 or an unset model. Both new-workspace surfaces hide the effort control when the list is empty, so it appears and disappears with the model.- Host validation rejects an effort for a model without a ladder with a clear message.
- Catalog refresh: adds Fable 5.1, Sonnet 5, Opus 4.7, GPT-5.5, GPT-5.4, Gemini 3.8 Flash, Grok 4.6, Kimi K3 and GLM 5.2 with their ladders, grouped by vendor (all 74 ids checked against a live
--list-models); folds "Fable 5 xHigh" into Fable 5 + xHigh effort. Every effort sibling id stays an accepted model id, so a saved "Fable 5 xHigh" preference still launches and CLI callers can pass any level id directly.
Opus 5 (non-thinking) only has low/medium/high in Cursor's catalog; xhigh/max live on its thinking sibling, which is a different model there, so the picker shows three levels for it.
Test plan
-
packages/sharedagent-models tests (58 pass), incl. variant map integrity and arg rewriting -
packages/host-serviceagents router tests (50 pass), incl. cursor validation messages - tsc for shared, host-service, desktop
- Dev app via CDP: Cursor Agent → Opus 4.8 shows effort pill with Low/Medium/High/xHigh/Max; picking xHigh persists; Opus 5 shows Low/Medium/High; Auto hides the pill
https://claude.ai/code/session_01Xx9zDw4dL7h8yWTck7FQru
Summary by CodeRabbit
-
New Features
- Expanded Cursor Agent model choices across Anthropic, OpenAI, and other providers.
- Added model-specific effort levels and automatic selection of supported model variants.
- The effort selector now appears only when the selected model offers effort options.
-
Bug Fixes
- Unsupported remembered effort settings now fall back to the agent default.
- Added validation with clear errors for unsupported model and effort selections.
Summary by cubic
Cursor Agent previously had no reasoning-effort picker because its CLI exposes each level as a separate model ID, not an effort flag. This adds model-aware effort selection by swapping in the matching sibling model, while models without an effort ladder keep the control hidden.
New Features
- Adds curated Cursor models and effort ladders for Fable 5.1, Sonnet 5, Opus 4.7, GPT-5.5, GPT-5.4, Gemini 3.8 Flash, Grok 4.6, Kimi K3, and GLM 5.2.
- Validates effort overrides against the selected model and emits no separate effort flag for Cursor Agent.
- Folds Fable 5 xHigh into Fable 5’s effort options while continuing to accept saved or directly supplied sibling model IDs.