Skip to content

fix(providers): route Muse Spark to the Responses API on opencode-zen and opencode-go too - #11049

Merged
diegosouzapw merged 1 commit into
cheaper-inference:release/v3.8.50from
maxmad64bis:fix/opencode-zen-muse-spark-targetformat
Aug 21, 2026
Merged

diegosouzapw merged 1 commit into
cheaper-inference:release/v3.8.50from
maxmad64bis:fix/opencode-zen-muse-spark-targetformat

Conversation

@maxmad64bis

@maxmad64bis maxmad64bis commented Aug 21, 2026 •

Copy link
Copy Markdown
Contributor

Summary

#10874 fixed Muse Spark on the opencode provider by declaring targetFormat: "openai-responses" on its registry entries — the model only answers on the Responses API, not /chat/completions. Same upstream family, two more provider registries never got the memo:

  • opencode-zen — muse-spark-1.2 had no targetFormat; muse-spark-1.2-contributor-free wasn't even declared.
  • opencode-go — all 6 muse-spark-1.2-contributor* effort-tier entries had no targetFormat.

Both share the same executor (opencode) and the same upstream family (opencode.ai/zen/*) as the provider #10874 already fixed, so it's the same bug, just three separate copies of the same registry data drifting independently. Mirrored the same declaration onto both.

Left freebuff's meta/muse-spark-1.2-contributor alone — verified: distinct backend (codebuff.com, dedicated freebuff executor posting to /chat/completions, no Responses API), so the same fix doesn't apply there.

Related Issues

Validation

  • Change type: routing (provider registry — open-sse/config/providers/registry/opencode/{zen,go}/index.ts)
  • node --import tsx/esm --test tests/unit/opencode-zen-muse-spark-targetformat-11046.test.ts — 2/2
  • Existing suites for these two registries re-run too (opencode-zen-reasoning-effort, opencode-zen-alias-combo-e2e, auth-opencode-zen-noauth-fallback) — 18/18 total
  • npm run lint clean
  • Branched from current release/v3.8.50 tip
  • Test written first against the real registry data, confirmed failing, then fixed

⚠️ base-red inherited: #9985

Tests Added Or Updated

tests/unit/opencode-zen-muse-spark-targetformat-11046.test.ts:

  • opencode-zen's muse-spark-1.2 and muse-spark-1.2-contributor-free both resolve to targetFormat: "openai-responses"
  • All 6 opencode-go muse-spark effort-tier entries do too

Coverage Notes

Registry data only — no logic changes, covered by the assertions above plus the full existing test suite for both registries.

Reviewer Notes

Didn't touch freebuff — verified it's a genuinely different backend (codebuff.com /chat/completions, dedicated executor, no Responses API involved), so the same fix doesn't apply; not a guess.

This is the second copy of this exact bug found in two days (see #11046/#11047) — same upstream registered under 3 provider entries with no shared source of truth for per-model capability flags, so a fix to one silently doesn't cover the others. Follow-up de-duplication opened as #11051 (extracts the entries that were already byte-identical across opencode-zen/opencode-go into a shared array).

… too

cheaper-inference#10874 added targetFormat:"openai-responses" to the opencode provider's
muse-spark entries, but opencode-zen (a separate registry entry for the
same upstream, opencode.ai/zen/v1) never got the same declaration --
requests routed there still hit /chat/completions and the upstream
returns an empty message with no error.

Mirrors the opencode provider's own muse-spark-1.2 /
muse-spark-1.2-contributor-free entries onto opencode-zen.
@diegosouzapw

Copy link
Copy Markdown
Collaborator

Nice, clean fix — thanks. This correctly closes the gap where opencode-zen and opencode-go (separate registry entries for the same opencode.ai/zen/v1 upstream) never got the targetFormat: "openai-responses" declaration that #10874 added to the base opencode provider, so Muse Spark requests there still hit /chat/completions and upstream returned an empty message. Verified locally against origin/release/v3.8.50: the new test passes (2/2) and the related existing opencode tests (opencode-muse-spark-responses-10867.test.ts, opencode-go-catalog-alignment.test.ts) stay green (7/7) — no regression. The test acts as a genuine guard (it would fail on the base since the zen/go muse entries lack targetFormat). No mandatory items from review; ready to merge. One optional nit: the new zen muse-spark-1.2-contributor-free entry now duplicates the base provider's id/name with supporting fields — fine as an explicit wire-format overlay, just noting it so future catalog syncs don't drift.

@diegosouzapw
diegosouzapw merged commit 666e4aa into cheaper-inference:release/v3.8.50 Aug 21, 2026
9 of 16 checks passed
diegosouzapw pushed a commit that referenced this pull request Aug 21, 2026
…entries (#11051)

⭐5 — Dedupe dos 3 entries byte-idênticos (kimi-k2.7-code, qwen3.5-plus, qwen3.6-plus) entre opencode-zen e opencode-go via OPENCODE_ZEN_GO_SHARED_MODELS (padrão GLM_SHARED_MODELS), frozen e testado por deep-equal. Pure move, sem mudança de comportamento; check:provider-consistency OK (267 entries, 348 providers). TDD 3/3. Follow-up de #11049/#11048. Base-red #9985 inherited.
diegosouzapw pushed a commit that referenced this pull request Aug 22, 2026
…erlay (#11051/#11049) (#11133)

Validated on the combined batch board over release/v3.8.50 tip d91238b: static gates clean, typecheck:core clean, focused tests green.

Restores the models[0] dashboard default silently changed by #11051, with narrow guards instead of a brittle full snapshot. Thank you @maxmad64bis!
@maxmad64bis
maxmad64bis deleted the fix/opencode-zen-muse-spark-targetformat branch September 24, 2026 21:14
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
… too (cheaper-inference#11049)

⭐5 — Muse Spark responde só na Responses API; cheaper-inference#10874 corrigiu só o provider `opencode`, mas `opencode-zen` (faltava targetFormat em 2 entries) e `opencode-go` (6 entries effort-tier) nunca receberam. Espelha a declaração. freebuff NÃO tocado (backend codebuff.com /chat/completions distinto, verificado). TDD 2/2 + 18/18 irmãos. Fecha cheaper-inference#11048. Base-red cheaper-inference#9985 inherited.
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…entries (cheaper-inference#11051)

⭐5 — Dedupe dos 3 entries byte-idênticos (kimi-k2.7-code, qwen3.5-plus, qwen3.6-plus) entre opencode-zen e opencode-go via OPENCODE_ZEN_GO_SHARED_MODELS (padrão GLM_SHARED_MODELS), frozen e testado por deep-equal. Pure move, sem mudança de comportamento; check:provider-consistency OK (267 entries, 348 providers). TDD 3/3. Follow-up de cheaper-inference#11049/cheaper-inference#11048. Base-red cheaper-inference#9985 inherited.
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…erlay (cheaper-inference#11051/cheaper-inference#11049) (cheaper-inference#11133)

Validated on the combined batch board over release/v3.8.50 tip 0f43f0f: static gates clean, typecheck:core clean, focused tests green.

Restores the models[0] dashboard default silently changed by cheaper-inference#11051, with narrow guards instead of a brittle full snapshot. Thank you @maxmad64bis!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(providers): Muse Spark still returns empty content on opencode-zen and opencode-go (targetFormat missed by #10874)

2 participants