From 5aeb00438b1a71f31b3a66f2747183c5234400f0 Mon Sep 17 00:00:00 2001 From: excessivechaos Date: Thu, 20 Aug 2026 10:56:06 -0700 Subject: [PATCH 1/2] feat(opencode-go): expose Muse Spark effort aliases --- .../providers/registry/opencode/go/index.ts | 63 +++++++++++++++++++ open-sse/executors/opencode.ts | 4 +- .../opencode-go-catalog-alignment.test.ts | 22 +++++++ .../opencode-go-effort-aliases-8353.test.ts | 41 +++++++++++- 4 files changed, 126 insertions(+), 4 deletions(-) diff --git a/open-sse/config/providers/registry/opencode/go/index.ts b/open-sse/config/providers/registry/opencode/go/index.ts index 54e30e57385..bf0c94ed90b 100644 --- a/open-sse/config/providers/registry/opencode/go/index.ts +++ b/open-sse/config/providers/registry/opencode/go/index.ts @@ -126,6 +126,69 @@ export const opencode_goProvider: RegistryEntry = { supportsReasoning: true, }, { id: "hy3-preview", name: "Hunyuan3 Preview" }, + // Muse Spark 1.2 Contributor — base + effort-tier aliases from the OpenCode Go + // registry (`opencode models opencode-go --verbose`; exact suffix set: + // minimal/low/medium/high/xhigh, no max). + { + id: "muse-spark-1.2-contributor", + name: "Muse Spark 1.2 Contributor", + contextLength: 1048576, + maxOutputTokens: 131072, + supportsReasoning: true, + supportsVision: true, + supportsAudio: true, + supportsVideo: true, + }, + { + id: "muse-spark-1.2-contributor-minimal", + name: "Muse Spark 1.2 Contributor (minimal effort)", + contextLength: 1048576, + maxOutputTokens: 131072, + supportsReasoning: true, + supportsVision: true, + supportsAudio: true, + supportsVideo: true, + }, + { + id: "muse-spark-1.2-contributor-low", + name: "Muse Spark 1.2 Contributor (low effort)", + contextLength: 1048576, + maxOutputTokens: 131072, + supportsReasoning: true, + supportsVision: true, + supportsAudio: true, + supportsVideo: true, + }, + { + id: "muse-spark-1.2-contributor-medium", + name: "Muse Spark 1.2 Contributor (medium effort)", + contextLength: 1048576, + maxOutputTokens: 131072, + supportsReasoning: true, + supportsVision: true, + supportsAudio: true, + supportsVideo: true, + }, + { + id: "muse-spark-1.2-contributor-high", + name: "Muse Spark 1.2 Contributor (high effort)", + contextLength: 1048576, + maxOutputTokens: 131072, + supportsReasoning: true, + supportsVision: true, + supportsAudio: true, + supportsVideo: true, + }, + { + id: "muse-spark-1.2-contributor-xhigh", + name: "Muse Spark 1.2 Contributor (xhigh effort)", + contextLength: 1048576, + maxOutputTokens: 131072, + supportsReasoning: true, + supportsVision: true, + supportsAudio: true, + supportsVideo: true, + }, // #8353: Grok 4.5 + effort tiers from the OpenCode Go registry. { id: "grok-4.5", name: "Grok 4.5", supportsReasoning: true }, { id: "grok-4.5-low", name: "Grok 4.5 (low effort)", supportsReasoning: true }, diff --git a/open-sse/executors/opencode.ts b/open-sse/executors/opencode.ts index 6f7a08fbaf4..51419ead9c5 100644 --- a/open-sse/executors/opencode.ts +++ b/open-sse/executors/opencode.ts @@ -71,7 +71,8 @@ const OPENCODE_FREE_MODELS = new Set([ * `opencode models opencode-go --verbose`; MiniMax M3 excluded — different * thinking-mode mapping): * grok-4.5 low/medium/high; hy3 none/low/high; kimi-k3 max; - * qwen3.6-plus / qwen3.7-max / qwen3.7-plus high/max + * qwen3.6-plus / qwen3.7-max / qwen3.7-plus high/max; + * muse-spark-1.2-contributor minimal/low/medium/high/xhigh (no max) */ const EFFORT_TIERS: Record = { "deepseek-v4-pro": EFFORT_LEVELS, @@ -84,6 +85,7 @@ const EFFORT_TIERS: Record = { "qwen3.6-plus": ["high", "max"], "qwen3.7-max": ["high", "max"], "qwen3.7-plus": ["high", "max"], + "muse-spark-1.2-contributor": ["minimal", "low", "medium", "high", "xhigh"], }; /** diff --git a/tests/unit/opencode-go-catalog-alignment.test.ts b/tests/unit/opencode-go-catalog-alignment.test.ts index ba7dba12c6e..35a36d4c1d9 100644 --- a/tests/unit/opencode-go-catalog-alignment.test.ts +++ b/tests/unit/opencode-go-catalog-alignment.test.ts @@ -62,3 +62,25 @@ test("opencode-go hy3 variants expose their context window to combo compatibilit ); } }); + +test("opencode-go exposes Muse Spark Contributor effort aliases with a 1M context", () => { + const museModelIds = [ + "muse-spark-1.2-contributor", + "muse-spark-1.2-contributor-minimal", + "muse-spark-1.2-contributor-low", + "muse-spark-1.2-contributor-medium", + "muse-spark-1.2-contributor-high", + "muse-spark-1.2-contributor-xhigh", + ]; + for (const modelId of museModelIds) { + assert.ok( + modelIds().includes(modelId), + `expected ${modelId} in opencode-go catalog, got: ${modelIds().join(", ")}` + ); + assert.equal( + getResolvedModelCapabilities(`opencode-go/${modelId}`).contextWindow, + 1048576, + `${modelId} should resolve a 1M context window` + ); + } +}); diff --git a/tests/unit/opencode-go-effort-aliases-8353.test.ts b/tests/unit/opencode-go-effort-aliases-8353.test.ts index 1c5d4b79dc7..4be4ab42df3 100644 --- a/tests/unit/opencode-go-effort-aliases-8353.test.ts +++ b/tests/unit/opencode-go-effort-aliases-8353.test.ts @@ -50,9 +50,40 @@ const ISSUE_ALIASES: ReadonlyArray<{ alias: string; base: string; effort: string { alias: "qwen3.7-max-max", base: "qwen3.7-max", effort: "max" }, { alias: "qwen3.7-plus-high", base: "qwen3.7-plus", effort: "high" }, { alias: "qwen3.7-plus-max", base: "qwen3.7-plus", effort: "max" }, + { + alias: "muse-spark-1.2-contributor-minimal", + base: "muse-spark-1.2-contributor", + effort: "minimal", + }, + { + alias: "muse-spark-1.2-contributor-low", + base: "muse-spark-1.2-contributor", + effort: "low", + }, + { + alias: "muse-spark-1.2-contributor-medium", + base: "muse-spark-1.2-contributor", + effort: "medium", + }, + { + alias: "muse-spark-1.2-contributor-high", + base: "muse-spark-1.2-contributor", + effort: "high", + }, + { + alias: "muse-spark-1.2-contributor-xhigh", + base: "muse-spark-1.2-contributor", + effort: "xhigh", + }, ]; -const NEW_BASES = ["grok-4.5", "hy3", "kimi-k3", "qwen3.7-plus"] as const; +const NEW_BASES = [ + "grok-4.5", + "hy3", + "kimi-k3", + "qwen3.7-plus", + "muse-spark-1.2-contributor", +] as const; function goModelIds(): string[] { const entry = REGISTRY["opencode-go"]; @@ -101,13 +132,11 @@ test("#8353 catalog: aliases are NOT synthesized on opencode-zen", () => { // kimi-k3 became a live zen model in the 2026-08-17 registry sync (present in // https://opencode.ai/zen/v1/models) — only the remaining Go-tier-only bases // must stay absent from zen. The effort alias kimi-k3-max is still Go-only - // and remains covered by the ISSUE_ALIASES loop above. for (const base of NEW_BASES) { if (base === "kimi-k3") continue; assert.equal(zenIds.has(base), false, `opencode-zen must not expose base ${base}`); } }); - test("#8353 catalog: qwen effort aliases keep Claude targetFormat", () => { const models = REGISTRY["opencode-go"]?.models ?? []; for (const id of [ @@ -138,6 +167,7 @@ test("#8353 parseEffortLevel: unsupported tiers stay null", () => { assert.equal(parseEffortLevel("hy3-max"), null); assert.equal(parseEffortLevel("kimi-k3-high"), null); assert.equal(parseEffortLevel("qwen3.6-plus-low"), null); + assert.equal(parseEffortLevel("muse-spark-1.2-contributor-max"), null); }); test("#8353 parseEffortLevel: existing DeepSeek V4 Pro / GLM / MiMo aliases still work", () => { @@ -166,6 +196,11 @@ const TRANSFORM_SAMPLES = [ { alias: "kimi-k3-max", base: "kimi-k3", effort: "max" }, { alias: "qwen3.7-plus-max", base: "qwen3.7-plus", effort: "max" }, { alias: "qwen3.7-max-high", base: "qwen3.7-max", effort: "high" }, + { + alias: "muse-spark-1.2-contributor-xhigh", + base: "muse-spark-1.2-contributor", + effort: "xhigh", + }, ] as const; for (const { alias, base, effort } of TRANSFORM_SAMPLES) { From 15c09b32d332bf7b7b3c363cf55f905d6c0e7958 Mon Sep 17 00:00:00 2001 From: excessivechaos Date: Thu, 20 Aug 2026 12:17:31 -0700 Subject: [PATCH 2/2] docs: record Muse Spark effort aliases --- changelog.d/features/opencode-go-muse-spark-efforts.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/features/opencode-go-muse-spark-efforts.md diff --git a/changelog.d/features/opencode-go-muse-spark-efforts.md b/changelog.d/features/opencode-go-muse-spark-efforts.md new file mode 100644 index 00000000000..25da8482a93 --- /dev/null +++ b/changelog.d/features/opencode-go-muse-spark-efforts.md @@ -0,0 +1 @@ +- feat(opencode-go): expose Muse Spark 1.2 Contributor reasoning-effort aliases (minimal/low/medium/high/xhigh) in the Combo Builder