Fix persisted Cursor model IDs for parameterized ACP - #2432
Merged
ymichael merged 2 commits intoAug 25, 2026
Merged
Conversation
ymichael
deleted the
bb/post-merge-fix-preserve-legacy-cursor-model-ids-thr_xq4xkxvwsk
branch
August 25, 2026 22:12
ymichael
added a commit
that referenced
this pull request
Aug 27, 2026
## Human comments ## What was wrong Cursor's parameterized ACP picker accepts current bare model IDs, but six families persisted by the historical Cursor picker use spellings that generic effort/thinking collapse cannot derive. The compatibility translator added in [PR #2432](#2432) therefore produced IDs absent from Cursor's live catalog, and affected sessions failed during construction before the first prompt. ## What changed Apply six explicit Cursor-only legacy-family renames after the existing variant collapse at the shared ACP session-construction boundary. No rows are rewritten, and current bare IDs, `auto`/`default`, reasoning, service tier, non-Cursor ACP, and non-parameterized behavior remain unchanged. A fixture-backed table test now checks all 34 historical persisted families against Cursor's accepted parameterized catalog, with a representative renamed Claude resume case through the bridge. `HOST_DAEMON_PROTOCOL_VERSION` remains 170 because the server/daemon wire contract did not change. There is no CLI, guide, documentation, or public plugin API change. Current main already carries the unpublished plugin SDK 0.4.24 version, whose pending publication will include this changed ACP runtime, so the rebased branch needs no additional version bump. ## How you verified Before the production change, the fixture-backed test failed with 1 failed / 19 passed and identified exactly six incompatible translations; a live representative flow translated to rejected `claude-4.6-sonnet`. Afterward, that flow translated to accepted `claude-sonnet-4-6`, and the all-family live probe reported `legacy-families=34`, `accepted-parameterized=35`, and `missing=[]`. - `pnpm exec turbo run test --filter=@bb/provider-bridge-acp --force` — 17 files, 295 tests passed after rebase. - `pnpm exec turbo run typecheck --filter=@bb/provider-bridge-acp --filter=@get-bb/plugin-sdk --filter=bb-plugin-provider-acp --force` — 6 tasks passed after rebase. - `pnpm exec turbo run build --filter=@get-bb/plugin-sdk --force` — 2 tasks passed; 17 runtime entries built. - `node packages/plugin-sdk/scripts/check-npm-version-guard.mjs` — passed; `@get-bb/plugin-sdk@0.4.24` is not on npm. - Targeted formatting and `git diff --check origin/main..HEAD` passed. Fixes #1688 > AGENT GENERATED
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Human comments
What was wrong
Cursor's parameterized ACP picker accepts bare model IDs, but the shared session builder forwarded previously persisted Cursor CLI-family IDs unchanged. Existing threads and project defaults could therefore send values such as
cursor-grok-4.6-mediumorauto, which Cursor rejects before the first prompt.What changed
Normalize persisted model IDs only for Cursor's parameterized picker at the shared ACP session-construction boundary. The implementation reuses the existing CLI variant parser, maps
autotodefault, removes historical variant syntax and thecursor-prefix, and leaves current bare IDs unchanged. Start, resume, fork, selected-only models, project-default starts, reasoning, and service tier share the covered path.HOST_DAEMON_PROTOCOL_VERSIONremains 170 because no server-to-daemon wire contract changed; no CLI, SDK, documentation, migration, or generated-file update is required.How you verified
The new start, resume, and fork cases failed before the fix with
model not foundforcursor-grok-4.6-medium,cursor-grok-4.5-medium, andauto(3 failed, 284 passed), then passed after the fix.pnpm exec turbo run test --filter=@bb/provider-bridge-acp --force— 17 files, 288 tests passed.pnpm exec turbo run typecheck --filter=@bb/provider-bridge-acp --filter=@get-bb/plugin-sdk --filter=bb-plugin-provider-acp --force— 6 tasks passed.pnpm exec turbo run build --filter=@get-bb/plugin-sdk --force— 2 tasks passed; 17 runtime entries built.oxfmt --check,git diff --check, and the original bridge reproduction passed.Fixes #1688