-
Notifications
You must be signed in to change notification settings - Fork 972
fix(opencode-go): route muse-spark-1.3-contributor over Responses with Zen Go tool-surface guards #3315
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(opencode-go): route muse-spark-1.3-contributor over Responses with Zen Go tool-surface guards #3315
Changes from all commits
1c4c994
0067139
c72a806
8605f22
be88701
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1486,8 +1486,15 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ | |
| - 선택한 방식: Declare only the named models as `openai-responses` through the existing registry default mechanism; the map stays an exact-model allowlist rather than a family or provider-wide rule. | ||
| - 다른 대안 대신 이 방식을 선택한 이유: OpenCode Go documents sibling models on Chat or Anthropic endpoints, and an exact registry default preserves both those routes and explicit opt-out precedence. | ||
| - 장점, 단점 및 영향: Each listed model reaches `/responses` from every inbound surface without changing siblings; a future upstream endpoint change requires an evidence-backed registry update. | ||
| - 2026-09-02 probe (muse-spark-1.3-contributor): Zen Go answers the same Responses-only shape as 1.2 — `/chat/completions` -> 500, `/responses` -> 200; `reasoning.effort` ladder is none/minimal/low/medium/high/xhigh (no `max`); plain `web_search` must not carry `search_content_types`; tool names are capped at 64 chars; recursive `$ref` schemas are refused. Added 1.3 to the allowlist with its ladder and a `max` -> `xhigh` map; context window and input modalities stay undeclared (unverified). | ||
| */ | ||
| modelWireDefaults: { "gpt-5.6-luna": "openai-responses", "muse-spark-1.2-contributor": "openai-responses" }, | ||
| modelWireDefaults: { | ||
| "gpt-5.6-luna": "openai-responses", | ||
| "muse-spark-1.2-contributor": "openai-responses", | ||
| // 1.3 serves the same Responses-only shape on Zen Go (probed 2026-09-02: | ||
| // /chat/completions -> 500, /responses -> 200). | ||
| "muse-spark-1.3-contributor": "openai-responses", | ||
| }, | ||
| modelContextWindows: { | ||
| "kimi-k3": KIMI_K3_STANDARD_CONTEXT_WINDOW, | ||
| // The DeepSeek vision preview id is metadata-only here: the Go roster is | ||
|
|
@@ -1497,6 +1504,9 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ | |
| // /responses on Zen Go, matching its 1.1 sibling (Meta developer docs, verified 2026-08-28). | ||
| // Without this declaration the catalog falls back to 128k, capping real usable context. | ||
| "muse-spark-1.2-contributor": 1_048_576, | ||
| // 1.3 shares the same 1M window: Meta documents one shared window for the | ||
| // 1.1/1.2/1.3 family (ai.developer.meta.com/docs/models, verified 2026-09-02). | ||
| "muse-spark-1.3-contributor": 1_048_576, | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win 🔎 Supported by static analysis🏁 Script executed: # Inspect the changed registry entry, its capability consumer, the focused test,
# and the repository conventions that cover this path.
set -eu
printf '%s\n' '--- applicable conventions ---'
for f in /tmp/coderabbit-repo-knowledge/lidge-jun-opencodex-7afea732/*/*.md; do
case "$f" in
*/src/*.md|*/learnings/*.md|*/architecture/*.md) head -40 "$f" ;;
esac
done
printf '%s\n' '--- registry entry and nearby declarations ---'
rg -n -C 8 'muse-spark-1\.3-contributor|modelContextWindows|modelReasoningEffortMap' src/providers/registry.ts
printf '%s\n' '--- capability consumer ---'
rg -n -C 8 'modelContextWindows' src/cli/models.ts
printf '%s\n' '--- focused test ---'
rg -n -C 12 'muse-spark-1\.3-contributor|1_048_576|1048576' tests srcRepository: lidge-jun/opencodex Length of output: 50376 🌐 Web query:
💡 Result: The Muse Spark 1.3 Contributor model, accessible through platforms including OpenCode’s Zen gateway, features a maximum context window of approximately 1,000,000 tokens (often cited as 1.05 million or 1,048,576 tokens) [1][2]. Regarding the specific values mentioned: - 1048576 (1M) tokens: This is the defined maximum context window capacity for the Muse Spark 1.3 family (including the Contributor tier) [1][3][2]. This capacity is designed to support long-running agentic, multi-agent, and coding workflows [1][2]. - 128k: This figure is frequently associated with output limits or specific configuration defaults for various models routed through AI gateways, rather than the input context window of Muse Spark 1.3 [4][5]. In the context of Zen gateway configurations or general LLM tooling, 128k often represents a standard maximum output token cap or a common configuration threshold for smaller or legacy models [4][5][6]. In summary, 1048576 is the specified total context window for Muse Spark 1.3 Contributor, while 128k typically refers to output token limits or configuration constraints in associated tooling and gateways [1][5][2]. Citations:
🏁 Script executed: set -eu
printf '%s\n' '--- registry row and provider entry ---'
sed -n '1460,1530p' src/providers/registry.ts
printf '%s\n' '--- exact capability projection ---'
rg -n -C 12 'modelContextWindows' src/cli/models.ts src/providers src
printf '%s\n' '--- focused tests only ---'
rg -n -C 10 --glob '*.test.ts' --glob '*.spec.ts' 'muse-spark-1\.3-contributor|opencode-go-muse-context|1_048_576' tests
printf '%s\n' '--- repository-owned gateway evidence ---'
rg -n -C 8 --glob '!src/generated/**' --glob '!src/lab/**' 'Zen Go|zen go|muse-spark|1\.3-contributor|1m|1M|1048576' src tests docs README.md 2>/dev/null || true
printf '%s\n' '--- scoped convention and learning filenames ---'
find /tmp/coderabbit-repo-knowledge/lidge-jun-opencodex-7afea732 -maxdepth 2 -type f -name '*.md' -printRepository: lidge-jun/opencodex Length of output: 50376 🏁 Script executed: set -eu
printf '%s\n' '--- exact model references, excluding generated and lab data ---'
rg -n --no-heading --glob '!src/generated/**' --glob '!src/lab/**' --glob '!*.json' \
'muse-spark-1\.3-contributor|muse-spark-1\.2-contributor|opencode-go' \
src/providers/registry.ts src/cli/models.ts src/adapters/openai-responses.ts tests \
| head -240
printf '%s\n' '--- registry section containing the row ---'
line=$(rg -n --no-heading 'muse-spark-1\.3-contributor' src/providers/registry.ts | head -1 | cut -d: -f1)
start=$((line-35)); end=$((line+35))
sed -n "${start},${end}p" src/providers/registry.ts
printf '%s\n' '--- model input/output cap declarations for this model ---'
rg -n -C 4 --glob '!src/generated/**' \
'modelMaxInputTokens|modelMaxOutputTokens|muse-spark' src/providers/registry.ts tests | \
rg -C 4 'muse-spark|modelMaxInputTokens|modelMaxOutputTokens' | head -220
printf '%s\n' '--- focused context test filenames and contents ---'
find tests -maxdepth 1 -type f \( -iname '*muse*' -o -iname '*opencode*go*' \) -printRepository: lidge-jun/opencodex Length of output: 50375 Remove the unverified Zen Go context-window row.
🤖 Prompt for AI Agents |
||
| }, | ||
| modelInputModalities: { | ||
| "kimi-k3": ["text", "image"], | ||
|
|
@@ -1507,9 +1517,17 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ | |
| // advertises it text-only and the Codex app blocks image attachments client-side with | ||
| // "This model does not support image inputs" before the request ever reaches the proxy. | ||
| "muse-spark-1.2-contributor": ["text", "image"], | ||
| // 1.3 accepts input_image parts over /responses too (probed 2026-09-02: | ||
| // completed response with image part, no 400). No context-window row for | ||
| // 1.3 yet: only declare it once a probe (not a sibling's docs) confirms | ||
| // the size, so the catalog keeps its 128k fallback instead of a guess. | ||
| "muse-spark-1.3-contributor": ["text", "image"], | ||
| }, | ||
| modelReasoningEfforts: { | ||
| "gpt-5.6-luna": OPENAI_API_GPT56_REASONING_EFFORTS, | ||
| // Zen Go rejects any other ladder for 1.3 (`reasoning.effort: unknown variant`, | ||
| // expected none/minimal/low/medium/high/xhigh — gateway error, probed 2026-09-02). | ||
| "muse-spark-1.3-contributor": ["none", "minimal", "low", "medium", "high", "xhigh"], | ||
| "glm-5.3": ZAI_GLM_53_REASONING_EFFORTS, | ||
| "glm-5.3-flash": ZAI_GLM_53_REASONING_EFFORTS, | ||
| "glm-5.2": ZAI_GLM_52_REASONING_EFFORTS, | ||
|
|
@@ -1526,6 +1544,17 @@ export const PROVIDER_REGISTRY: readonly ProviderRegistryEntry[] = [ | |
| // the thinking-toggle map is a REAL wire alias (effort -> enabled/disabled) and stays. | ||
| modelReasoningEffortMap: { | ||
| "kimi-k3": KIMI_CODING_K3_REASONING_EFFORT_MAP, | ||
| // 1.3 has no `max` rung: Codex default-max callers resolve to `xhigh` | ||
| // instead of taking a gateway 400. | ||
| "muse-spark-1.3-contributor": { | ||
| "none": "none", | ||
| "minimal": "minimal", | ||
| "low": "low", | ||
| "medium": "medium", | ||
| "high": "high", | ||
| "xhigh": "xhigh", | ||
| "max": "xhigh", | ||
| }, | ||
| ...Object.fromEntries(OPENCODE_GO_THINKING_TOGGLE_MODELS.map(id => [id, THINKING_TOGGLE_MAP])), | ||
| ...Object.fromEntries(DEEPSEEK_THINKING_MODELS.map(id => [id, deepseekReasoningMapFor(id)])), | ||
| }, | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.