fix(acp): normalize model ids with /enabled /disabled status suffixes#3312
Open
whitelonng wants to merge 2 commits into
Open
fix(acp): normalize model ids with /enabled /disabled status suffixes#3312whitelonng wants to merge 2 commits into
whitelonng wants to merge 2 commits into
Conversation
Some ACP agents (e.g. CodeBuddy) report each model twice with a status
suffix on the id ("glm-5.1/enabled", "glm-5.1/disabled") and label
("GLM-5.1 (enabled)"). The raw ids flowed untouched into the model
selector, setModel requests, handshake-derived defaults and the
persisted preferredModelId, causing duplicate dropdown entries and
model switches that always fell back to the first model.
Strip the suffixes and deduplicate by clean id (preferring the
/enabled variant) at every point where ACP model info enters the
renderer: getModel/setModel responses, acp_model_info stream events,
handshake fallbacks, and saved preferredModelId reads.
Fixes iOfficeAI#3297
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
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.
Summary
glm-5.1/enabled,glm-5.1/disabled) and label (GLM-5.1 (enabled)). These raw ids flowed untouched into the model selector,setModelrequests, handshake-derived defaults and the persistedpreferredModelId, causing duplicate dropdown entries and model switches that always fell back to the first model.normalizeAcpModelInfo/normalizeAcpModelId(packages/desktop/src/renderer/utils/model/normalizeAcpModelInfo.ts) which strips the suffixes and deduplicates by clean id, preferring the/enabledvariant when both are present.getModel/setModelresponses andacp_model_infostream events (useAcpModelInfo), handshake fallbacks (useAcpModelInfo,useDetectedAgents,useGuidAgentSelection,CreateTaskDialog,createConversationParams,teamCreateModelResolver), and savedpreferredModelIdreads — so already-polluted persisted data is also repaired on read.Fixes #3297
Test plan
tests/unit/renderer/normalizeAcpModelInfo.test.tscovering suffix stripping (case-insensitive), dedup with/enabledpreference, clean-list passthrough, vendor-prefixed ids (vendor/model-nameuntouched), and empty-label fallbackbunx vitest run— 1377 tests passbunx tsc --noEmit,bun run lint,bun run format, i18n checks pass