fix(cursor): reach a model's thinking and Fast knobs, and hold the permission switch
The settings model picker listed `cursor-agent models` flat — around 200 ids, one per combination — so a thinking level or the Fast flag was reachable only by knowing an id like `claude-opus-5-thinking-max-fast` by heart. Group the catalog into families and offer Thinking / Effort / Fast beside the family name, each shown only when the family varies on it. No id is synthesized: the suffix grammar is ambiguous (Cursor ships legacy aliases such as `claude-4.5-opus-high` whose own name ends in an effort token), so every value handed back is one the CLI reported. A combination that does not exist clamps to its nearest sibling, holding the dimension the user just moved. `CURSOR_FORCE` was written as "1" for Run Everything and DELETED for Ask, leaving the launch unable to tell "the user chose Ask" from "never configured". The panel rendered the missing key as Run Everything while the launch read it as Ask, so the switch showed one mode and the session ran another. Write both states explicitly and read the same rule on both sides, with unset resolving to Ask — what these sessions have always actually done, so no existing install silently loses its confirmation prompts. In session, a `model` preference saved under cursor-agent's older variant picker holds a stringified variant that the parameterized picker rejects outright — failing on every connect, logged and skipped, so the user silently kept landing on whatever model Cursor chose. Heal it back to its base id. The heal matches the value rather than the agent id, since the capability gate keys on the launch recipe and a custom agent wrapping `cursor-agent … acp` would otherwise be stranded; requiring cursor's own parameter vocabulary and a flat (non-namespaced) base keeps other agents' arbitrary model ids intact.
X
xintaofei committed
ce08328e9b12b01eda301481571307cc6778ac11
Parent: d7cdd8e