fix(server): alias Grok's product-name model slug to a valid ACP modelId - #7819
fix(server): alias Grok's product-name model slug to a valid ACP modelId#7819Exotic209093 wants to merge 1 commit into
Conversation
Grok's ACP session/set_model only accepts "grok-4.6"/"grok-4.5", but T3 sent "grok-build" verbatim as the default modelId — that's the Grok Build CLI's own product name, not a model id, so every Grok session start failed with "unknown model id" immediately. Add a MODEL_SLUG_ALIASES_BY_PROVIDER entry for the Grok driver, same as Claude and Codex already have for their own display/legacy slugs, so normalizeModelSlug resolves it to "grok-4.6" before it ever reaches the wire. Updated the mock ACP agent used by GrokAdapter's tests to accept "grok-4.6" instead of the never-actually-valid "grok-build", matching what the real Grok ACP accepts. Fixes pingdotgg#7791
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — Straightforward bug fix that adds a model slug alias to convert 'grok-build' to a valid Grok ACP model ID ('grok-4.6'). The change follows existing alias patterns, is well-documented, and includes appropriate test coverage. You can add or adjust custom eligibility rules. Learn more. |
Summary
Fixes #7791. Selecting the Grok provider and sending a message fails immediately with
Error: Invalid params at decodeJsonError— the underlying ACP error isunknown model id. Grok's ACPsession/set_modelonly acceptsgrok-4.6andgrok-4.5as modelIds. T3 sends"grok-build"(the Grok Build CLI's own product name, not a model id) as the default, and Grok's ACP rejects it outright.Verified directly against a live ACP probe (per the issue):
"grok-build"→unknown model id;"grok-4.6"/"grok-4.5"→ success.Fix
Added a
MODEL_SLUG_ALIASES_BY_PROVIDERentry for the Grok driver — the same mechanism Claude and Codex already use for their own display/legacy slugs (e.g. Claude'sopus→claude-opus-5) — sonormalizeModelSlug/resolveGrokAcpBaseModelIdresolve"grok-build"to"grok-4.6"before it ever reaches the wire.DEFAULT_MODEL_BY_PROVIDER's display slug is untouched, matching how the other providers' aliasing works.Also updated
apps/server/scripts/acp-mock-agent.ts's mock Grok ACP model list, which previously accepted the never-actually-valid"grok-build"— that mock now mirrors the real Grok ACP's behavior ("grok-4.6"valid,"grok-build"not), which is what let this bug slip past the existing test suite.Test plan
packages/shared/src/model.test.tsassertingnormalizeModelSlug("grok-build", grok)resolves to"grok-4.6".resolveGrokAcpBaseModelIdtest to assert the default (and explicit"grok-build") now resolve to"grok-4.6"instead of passing through verbatim.vp test run packages/shared/src/model.test.ts apps/server/src/provider/acp/GrokAcpSupport.test.ts— passed.GrokAdapter.test.ts,GrokProvider.test.ts,GrokTextGeneration.test.ts,AcpRuntimeModel.test.ts) run under Linux (these spawn real subprocesses, which needs a POSIX environment) — 56 passed, 0 failed, after updating the mock agent's model list.cursor/list_available_modelsRPC, not the generic ACP session-model mechanism the mock's model list change touches.vp run --filter t3 typecheck— clean.vp linton changed files — clean.Note
Low Risk
Small model-id alias plus mock-agent alignment; no auth or data-path changes. Display default remains grok-build.
Overview
Fixes Grok ACP
session/set_modelfailing with unknown model id when the default product sluggrok-buildis sent on the wire.Adds a Grok entry in
MODEL_SLUG_ALIASES_BY_PROVIDERsonormalizeModelSlug/resolveGrokAcpBaseModelIdmapgrok-build→grok-4.6(the id Grok ACP actually accepts). Display default is unchanged.The ACP mock agent now lists
grok-4.6instead ofgrok-build, matching real Grok ACP so this cannot slip past tests again.Reviewed by Cursor Bugbot for commit 8e90ce6. Configure here.
Note
Alias Grok's
grok-buildproduct slug to valid ACP modelIdgrok-4.6Adds a
grok-build→grok-4.6entry toMODEL_SLUG_ALIASES_BY_PROVIDERin model.ts becausegrok-buildis a CLI product name, not a valid ACP modelId (ACP only acceptsgrok-4.6andgrok-4.5). Updates the mock ACP agent in acp-mock-agent.ts and theresolveGrokAcpBaseModelIdtests in GrokAcpSupport.test.ts to usegrok-4.6as the default and fallback modelId instead ofgrok-build. Also adds a normalization test case in model.test.ts.Macroscope summarized 8e90ce6.