Conversation
MODEL_INPUT_MODALITIES comes straight from the generated catalog, so a model published after the pinned CLI release falls back to ["text"] and image input is withheld on both transports: index.ts publishes input: ["text"] to the host and the generate transport rejects image blocks with "does not support image content". The override file only exposed an efforts hook, so there was no supported way to re-enable vision for such a model. Add MODEL_INPUT_MODALITIES_OVERRIDES next to the existing effort overrides and merge it the same way, with entries for deepseek/deepseek-v4.1-flash and xai/grok-4.6. Both are served by the Provider API and both are declared inputModalities:["text","image"] by command-code@1.53.0. Verified live on a Go subscription with the generated catalog untouched: deepseek/deepseek-v4.1-flash described a test image correctly (red circle, blue square, green triangle, text ZEBRA-42). xai/grok-4.6 requires GOAT or above (MODEL_NOT_IN_PLAN on Go), so its entry rests on the CLI registry declaration.
Owner
|
Thanks for identifying the missing image metadata. Merged #98 now includes upstream image modalities for DeepSeek V4.1 Flash and Grok 4.6, and #95 repairs the sync automation. This supersedes the per-model override entries without adding another maintenance path. The independent host-input behavior in #94 remains planned. Replacement CI passed before merge. |
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.
Related to #90 — same root cause as #91, the other capability. #91 covers the missing reasoning flag; this covers missing input modalities.
Problem
src/commandcode-catalog.tsis generated from a single Command Code CLI release. A model published afterwards is absent fromMODEL_INPUT_MODALITIES, soinputModalitiesForModel()falls back to["text"]— and both transports honor that absence:index.ts:127publishesinput: [...inputModalitiesForModel(model.id)]to pi and Oh My Pi, so the host never offers image attachments for the model.src/core.ts:543callsassertTextOnlyMessages()on the generate transport, so an image in a user message fails the request outright withSelected Command Code model does not support image content in user messages.commandcode-catalog-overrides.tsonly exposedMODEL_EFFORT_OVERRIDES, so there was no supported way to restore image input for a catalog-gap model.Evidence
command-code@1.53.0(dist/cli.mjs) declares image input for both models:The generated catalog (from
command-code@1.44.0) has no entry fordeepseek/deepseek-v4.1-flashat all, andxai/grok-4.6appears only inMODEL_REASONINGandMODEL_EFFORTS— neither is inMODEL_INPUT_MODALITIES. Both ids are served byGET /provider/v1/models.Change
src/commandcode-catalog-overrides.ts— addMODEL_INPUT_MODALITIES_OVERRIDESwith its own doc block (when to add, when to drop) and the two entries.src/models.ts— merge the overrides overCATALOG_MODEL_INPUT_MODALITIES, mirroring howMODEL_EFFORTSalready mergesMODEL_EFFORT_OVERRIDES.tests/test-models.ts— test mirroring the existing effort-override test: each override must not be upstream yet (drop signal), must includeimage, must reachinputModalitiesForModel()/modelSupportsImageInput(), and generated entries must still pass through unchanged.CHANGELOG.md— Unreleased entry.Verification
npm run test:unit— 217/217 pass; typecheck andprettier --checkclean.models.jsonoverride in play:deepseek/deepseek-v4.1-flashcorrectly described a test image (red circle, blue square, green triangle, textZEBRA-42). Before this change the same request fails with the text-only assertion quoted above.Notes
xai/grok-4.6could not be exercised end to end: it returnsMODEL_NOT_IN_PLANon a Go plan (GOAT and above required). Its entry rests on the CLI registry declaration — the same sourcenpm run sync:commandcode-catalogreads.imageupstream but are absent fromGET /provider/v1/models, so they are deliberately not added:gpt-6-astraandminimax/minimax-m3-free.src/models.ts,src/commandcode-catalog-overrides.ts,tests/test-models.ts,CHANGELOG.md). Happy to rebase on whichever lands first.npm testexits 1 in my environment ontests/test-pi-local.mjs("Claude request through Anthropic Messages endpoint", 404). It reproduces identically on unmodifiedmain, so it is unrelated to this change; CI is authoritative for the suites that need the full toolchain.