feat(catalog): add Meta's muse-spark-1.1 as a direct provider#774
feat(catalog): add Meta's muse-spark-1.1 as a direct provider#774steventohme wants to merge 1 commit into
Conversation
Meta Superintelligence Labs' first paid model (Meta Model API public preview, US-only since 2026-07-09). Direct first-party OpenAI-compat binding ($1.25/$4.25 per MTok, 1M native context), no OpenRouter fallback yet. Servable-only (Stage A) — not yet a cluster-scorer routing target; roster onboarding with a data-derived HMM prior is a follow-up once bake-off evidence exists. - providers.ProviderMeta + APIKeyEnvVars/ProviderFamilies (three-map edit) - openaicompat.MetaBaseURL (https://api.meta.ai/v1) - catalog.go Model entry, model.go capability spec (openaiReasoning) - force_model.go aliases (meta/muse/muse-spark/musespark) - cmd/router/main.go registerDeploymentKeyedProvider wiring - rl/mapping.go roster prefix (meta/), translate session-affinity default-mechanism coverage, catalog_test.go canonical-provider set - pricing_test.go row + regenerated install.sh/cc-statusline.sh price tables (cmd/genprices)
|
Claude finished @steventohme's task —— View job Posted 4 comment-length suggestions (advisory, won't block merge). |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using default effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ace3832. Configure here.
| // so it shares openaiReasoning's low/medium/high; a request for xhigh or | ||
| // minimal clamps to the nearest of those (nearestReasoningLevel) rather | ||
| // than 400ing. | ||
| "muse-spark-1.1": openaiReasoning, |
There was a problem hiding this comment.
Missing max-output token cap
High Severity
muse-spark-1.1 is registered with CapReasoning (openaiReasoning) but has no modelMaxOutputTokens entry. Emit then clamps max_completion_tokens to the 8192 default via clampToModelOutputCap. Peer CapReasoning models (GPT-5.x, grok-4.5) use 128k–131k caps; Meta documents a much larger output budget. Claude Code's typical 32k–64k max_tokens would be cut down, so reasoning can exhaust the budget and truncate tool calls or content.
Reviewed by Cursor Bugbot for commit ace3832. Configure here.
workweave-bot
left a comment
There was a problem hiding this comment.
Advisory only — comment-length nits. Won't block merge.
| // MetaBaseURL is Meta Superintelligence Labs' Model API — first-party | ||
| // upstream for muse-spark-1.1, in public preview (US-only) since | ||
| // 2026-07-09. OpenAI-compatible Chat Completions surface; model IDs match | ||
| // the router's public slug so no modelIDMap rewrite is needed. |
There was a problem hiding this comment.
| // MetaBaseURL is Meta Superintelligence Labs' Model API — first-party | |
| // upstream for muse-spark-1.1, in public preview (US-only) since | |
| // 2026-07-09. OpenAI-compatible Chat Completions surface; model IDs match | |
| // the router's public slug so no modelIDMap rewrite is needed. | |
| // MetaBaseURL is Meta Superintelligence Labs' first-party Model API | |
| // (public preview, US-only since 2026-07-09). |
Was 4 lines; the last 2 restate what the constant name and value already show (OpenAI-compat surface, no ID rewrite needed).
| // --- Meta --- Muse Spark 1.1, GA 2026-07-09 (Meta's first paid model, | ||
| // Meta Model API public preview, US-only). Bare ID (not "meta/"-prefixed): | ||
| // direct first-party API like Anthropic/OpenAI/Google/xAI, not an | ||
| // aggregator-hosted OSS entry. Native 1M context (Meta docs list | ||
| // 1,048,576). Strong agentic/tool-use, mid-pack coding (SWE-Bench Pro | ||
| // 61.5 vs opus-4.8's 69.2) — priced accordingly below the high tier's | ||
| // flagships. Meta is the only wired provider (first-party, no OpenRouter | ||
| // fallback yet); add one if/when it earns roster traffic. |
There was a problem hiding this comment.
| // --- Meta --- Muse Spark 1.1, GA 2026-07-09 (Meta's first paid model, | |
| // Meta Model API public preview, US-only). Bare ID (not "meta/"-prefixed): | |
| // direct first-party API like Anthropic/OpenAI/Google/xAI, not an | |
| // aggregator-hosted OSS entry. Native 1M context (Meta docs list | |
| // 1,048,576). Strong agentic/tool-use, mid-pack coding (SWE-Bench Pro | |
| // 61.5 vs opus-4.8's 69.2) — priced accordingly below the high tier's | |
| // flagships. Meta is the only wired provider (first-party, no OpenRouter | |
| // fallback yet); add one if/when it earns roster traffic. | |
| // --- Meta --- Muse Spark 1.1, first-party (bare ID, not "meta/"-prefixed, | |
| // matching xAI precedent). Single provider; add OpenRouter fallback if/when | |
| // it earns roster traffic. |
Was 8 lines; SWE-bench scores and context-window verbosity don't belong in catalog source. The genuine WHYs (bare-ID convention, single-provider note) fit in 3.
| // muse-spark-1.1: OpenAI-compat reasoning_effort, mandatory (cannot | ||
| // disable), supports minimal/low/medium/high/xhigh upstream — but neither | ||
| // tier is in router.ReasoningCapabilities.Levels' ordered vocabulary yet, | ||
| // so it shares openaiReasoning's low/medium/high; a request for xhigh or | ||
| // minimal clamps to the nearest of those (nearestReasoningLevel) rather | ||
| // than 400ing. |
There was a problem hiding this comment.
| // muse-spark-1.1: OpenAI-compat reasoning_effort, mandatory (cannot | |
| // disable), supports minimal/low/medium/high/xhigh upstream — but neither | |
| // tier is in router.ReasoningCapabilities.Levels' ordered vocabulary yet, | |
| // so it shares openaiReasoning's low/medium/high; a request for xhigh or | |
| // minimal clamps to the nearest of those (nearestReasoningLevel) rather | |
| // than 400ing. | |
| // muse-spark-1.1: reasoning_effort mandatory; upstream also accepts | |
| // minimal/xhigh but those clamp via nearestReasoningLevel rather than 400. |
Was 6 lines; "OpenAI-compat" and the registry/vocabulary detail are noise — the only non-obvious fact is the clamp-not-400 behavior.
| // Meta's docs advertise prompt caching but don't document a stickiness | ||
| // header (unlike xAI's x-grok-conv-id) — generic x-session-affinity is | ||
| // the safe default until proven otherwise. |
There was a problem hiding this comment.
| // Meta's docs advertise prompt caching but don't document a stickiness | |
| // header (unlike xAI's x-grok-conv-id) — generic x-session-affinity is | |
| // the safe default until proven otherwise. | |
| // Meta's API has no documented stickiness header (unlike xAI's x-grok-conv-id). |
Was 3 lines; the WHY fits in one.
What T-Rex did
Reviews (1): Last reviewed commit: "feat(catalog): add Meta's muse-spark-1.1..." | Re-trigger Greptile |


What
Onboards muse-spark-1.1 (Meta Superintelligence Labs' first paid model, Meta Model API public preview, US-only since 2026-07-09) as a servable catalog entry via a direct first-party binding — Stage A of the
add-router-modelskill.$1.25/$4.25per MTok in/out, cached input$0.15(0.12 multiplier), native 1M context (1,048,576 per Meta docs).openaiReasoningcapability spec (low/medium/highreasoning_effort); upstream also acceptsminimal/xhighbut those clamp to the nearest supported level rather than 400ing, matching the existing GPT-5.x pattern./force-modelaliases:meta,muse,muse-spark,musespark.What this is NOT
Not yet a routable cluster-scorer target (Stage C). No bake-off shards exist for this model — GCS,
EXPERIMENTS.md, andmine_bakeoff_priors.pywere all checked and confirmed empty prior to this PR. A follow-up will run the solo bake-off (harness-faithful Pro/Atlas + Tier-3 Easy capability probe), then earn it a roster slot inbalanced(per user's spend/roster call), following thehmm-add-model-priorskill.Checklist (per
internal/router/catalog/CLAUDE.md+internal/providers/CLAUDE.md)catalog.go— oneModel{}literal, bare ID (first-party, notmeta/-prefixed, matching the xAI Grok precedent)model.go— capability-spec registry entryforce_model.go— user-facing aliasesProviderMetaconstant +ProviderFamilies(FamilyOpenAICompat) +APIKeyEnvVars(META_API_KEY)openaicompat.MetaBaseURLconstant (https://api.meta.ai/v1)cmd/router/main.go—registerDeploymentKeyedProviderwiring (mirrors the XAI/Together shape)internal/providers/CLAUDE.mdstep 5:emit_openai.go'sapplySessionAffinity→ added todefaultMechanismProviders(genericx-session-affinity; Meta's docs don't document a bespoke stickiness header)rl/mapping.go'srosterIDFor→ explicitmeta/prefix (consistent with the OpenRouter-style roster slug convention)catalog_test.gocanonical-provider set,pricing_test.gorowgo run ./cmd/genprices— regeneratedinstall/install.sh+install/cc-statusline.shgo build ./...+go test ./...+go vet ./...all greenVerification
Full test suite green against fresh
origin/main. Follows theTogether/XAIonboarding precedent (router#546, #559) for the dispatch-switch review checklist — the family-driven refactor since that PR meant credential extraction and cross-format dispatch needed zero edits here.