Repository navigation
fix(responses): strip search_content_types on web_search for Muse Spark - #2617
DevonGithub wants to merge 1 commit into
Conversation
|
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 10 included reviews per hour; 9 remain after this review. 📝 WalkthroughWalkthroughThe change routes ChangesMuse Spark Responses support
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: ⚪ Minimal · up to The PR localizes Muse Spark Responses routing and web-search compatibility changes. The only remaining follow-up is to confirm or remove the gateway probe date; no actionable merge-blocking risk remains. Sequence Diagram(s)sequenceDiagram
participant ProviderRegistry
participant buildRequest
participant WebSearchSanitizer
participant ResponsesEndpoint
ProviderRegistry->>buildRequest: Route Muse Spark to openai-responses
buildRequest->>WebSearchSanitizer: Sanitize routed request body
WebSearchSanitizer-->>buildRequest: Remove search_content_types
buildRequest->>ResponsesEndpoint: Send sanitized request
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Title checkExplanation The title clearly describes the primary compatibility fix: removing the unsupported search_content_types field from web_search tools for Muse Spark. It does not mention the Responses API routing change, but the title need not cover every change. ✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
🧪 Generate unit tests (beta)
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 |
⏳ DRAFT
What to do
Review readiness checklist
0/4 boxes ticked. This PR stays in draft until every box above is ticked. Hygiene✅ Deterministic PR hygiene checks passed. |
Muse Spark (muse-spark-1.2-contributor) only serves over the Responses API. Its gateway rejects `search_content_types` on a plain `web_search` tool (400) while accepting it on `web_search_preview`, and accepts every other web_search field on both tool types (probed directly against the gateway 2026-08-26). Only Muse is affected; gpt-5.6-luna and deepseek-v4-flash are not. - Strip search_content_types from web_search tools for the exact Muse model only. - Route Muse to the same openai-responses wire default as gpt-5.6-luna. - Add regression coverage for the exact model match, web_search_preview retention, nested additional_tools, non-Muse, and near-match model ids.
815f555 to
41f2d65
Compare
…rk (#2617) (#2621) * release: v2.32.1 * release: v2.33.0 * fix(responses): strip search_content_types on web_search for Muse Spark Muse Spark (muse-spark-1.2-contributor) only serves over the Responses API. Its gateway rejects search_content_types on a plain web_search tool (400) but accepts it on web_search_preview and accepts every other web_search field on both tool types (probed directly 2026-08-26). Only Muse is affected; Luna and DeepSeek are not. - Strip search_content_types from web_search for Muse only. - Route Muse to the same openai-responses default as gpt-5.6-luna. * fix(responses): strip search_content_types on web_search for Muse Spark (#2617) Carries DevonGithub's change onto dev with the test it needs, minus an unrelated version bump. Three changes to what was submitted: - dropped the package.json 2.32.1-preview -> 2.33.0 bump. Versioning is the release train's, not a bug fix's. - added tests/muse-spark-web-search-compat.test.ts. This touches a shared adapter and the provider registry; without a test neither the model-scoped field removal nor the Responses wire default is protected. - updated the registry decision log, which still described the map as Luna-only after gaining a second entry. Falsified: removing the sanitizer call reddens the plain-web_search and nested additional_tools cases and nothing else. --------- Co-authored-by: DevonGithub <DevonGithub@users.noreply.github.com>
|
Landed on The mechanism is right, and the reasoning holds up independently: the field comes from Codex's own Three things I changed:
I also refreshed the registry decision log, which still described One thing I could not confirm: your live 200/400 matrix. The account available here now gets Thanks for finding this. Closing in favour of the merged PR. |
…rk (lidge-jun#2617) (lidge-jun#2621) * release: v2.32.1 * release: v2.33.0 * fix(responses): strip search_content_types on web_search for Muse Spark Muse Spark (muse-spark-1.2-contributor) only serves over the Responses API. Its gateway rejects search_content_types on a plain web_search tool (400) but accepts it on web_search_preview and accepts every other web_search field on both tool types (probed directly 2026-08-26). Only Muse is affected; Luna and DeepSeek are not. - Strip search_content_types from web_search for Muse only. - Route Muse to the same openai-responses default as gpt-5.6-luna. * fix(responses): strip search_content_types on web_search for Muse Spark (lidge-jun#2617) Carries DevonGithub's change onto dev with the test it needs, minus an unrelated version bump. Three changes to what was submitted: - dropped the package.json 2.32.1-preview -> 2.33.0 bump. Versioning is the release train's, not a bug fix's. - added tests/muse-spark-web-search-compat.test.ts. This touches a shared adapter and the provider registry; without a test neither the model-scoped field removal nor the Responses wire default is protected. - updated the registry decision log, which still described the map as Luna-only after gaining a second entry. Falsified: removing the sanitizer call reddens the plain-web_search and nested additional_tools cases and nothing else. --------- Co-authored-by: DevonGithub <DevonGithub@users.noreply.github.com>
…rk (lidge-jun#2617) (lidge-jun#2621) * release: v2.32.1 * release: v2.33.0 * fix(responses): strip search_content_types on web_search for Muse Spark Muse Spark (muse-spark-1.2-contributor) only serves over the Responses API. Its gateway rejects search_content_types on a plain web_search tool (400) but accepts it on web_search_preview and accepts every other web_search field on both tool types (probed directly 2026-08-26). Only Muse is affected; Luna and DeepSeek are not. - Strip search_content_types from web_search for Muse only. - Route Muse to the same openai-responses default as gpt-5.6-luna. * fix(responses): strip search_content_types on web_search for Muse Spark (lidge-jun#2617) Carries DevonGithub's change onto dev with the test it needs, minus an unrelated version bump. Three changes to what was submitted: - dropped the package.json 2.32.1-preview -> 2.33.0 bump. Versioning is the release train's, not a bug fix's. - added tests/muse-spark-web-search-compat.test.ts. This touches a shared adapter and the provider registry; without a test neither the model-scoped field removal nor the Responses wire default is protected. - updated the registry decision log, which still described the map as Luna-only after gaining a second entry. Falsified: removing the sanitizer call reddens the plain-web_search and nested additional_tools cases and nothing else. --------- Co-authored-by: DevonGithub <DevonGithub@users.noreply.github.com>
Problem
opencode-go/muse-spark-1.2-contributorfails when routed through the Codex app / opencodex proxy. It is the only model on theopencode-gokey that breaks;gpt-5.6-lunaanddeepseek-v4-flashwork on the same key.Root cause
Muse Spark only serves over the Responses API (
POST /v1/responses). A direct test ofPOST /v1/chat/completionsfor this model returns500 Internal server erroreven with no tools. The opencodex registry had never routed Muse to Responses; onlygpt-5.6-lunawas inmodelWireDefaults.Additionally, once a client (Codex) sends a
web_searchtool carryingsearch_content_types, Muse's gateway rejects the whole request with:400 invalid_request_error tools[].search_content_types is only supported for web_search_preview toolsGateway probe results (direct, 2026-08-26) on Muse over
/v1/responses:web_searchweb_searchsearch_content_typesweb_searchsearch_context_sizeweb_searchexternal_web_accessweb_searchfilters: {}web_searchuser_locationweb_search_previewsearch_content_typesSo the only rejected combination is
search_content_typeson a plainweb_searchtool, and only for Muse. Luna accepts every shape.Fix
src/adapters/openai-responses.ts- addedstripMuseSparkUnsupportedWebSearchFields, which removessearch_content_typesfromweb_searchtools for the exact modelmuse-spark-1.2-contributoronly. It runs on the routed Responses path alongside the existing OpenAI-only web-search cleanup, and does not touchweb_search_previewor any other field.src/providers/registry.ts- addedmuse-spark-1.2-contributortoopencode-gomodelWireDefaultsasopenai-responses, mirroring the existinggpt-5.6-lunaentry.Tests
Added
stripMuseSparkUnsupportedWebSearchFieldscoverage intests/responses-routed-web-search-fields.test.ts(all pass):search_content_typesfromweb_searchfor the exact Muse modelweb_search_previewuntouchedadditional_toolsAlso verified manually: Muse now returns 200 over
/v1/responseswith the offending tool;gpt-5.6-lunaanddeepseek-v4-flashstill return 200.Note
This does not change how other models route. Explicit user
modelAdaptersentries still take precedence (same contract as the existing Luna routing).Review readiness checklist
This PR stays in draft until every box below is ticked. Tick all four boxes once the requirements are met:
All CI tests are green on my local testing.
I pushed my PR to the latest dev commit.
I resolved all correct Codex and CodeRabbit findings.
My PR is ready for review.