Skip to content

feat(fireworks): catalog DeepSeek V4 Pro, MiniMax M2.7, GLM-5.1, GPT-OSS 120B reasoning models#92217

Open
obuchowski wants to merge 1 commit into
openclaw:mainfrom
obuchowski:feat/fireworks-models
Open

feat(fireworks): catalog DeepSeek V4 Pro, MiniMax M2.7, GLM-5.1, GPT-OSS 120B reasoning models#92217
obuchowski wants to merge 1 commit into
openclaw:mainfrom
obuchowski:feat/fireworks-models

Conversation

@obuchowski

@obuchowski obuchowski commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

TL;DR I run OpenClaw against Fireworks serverless and wanted their current reasoning lineup — DeepSeek V4 Pro, MiniMax M3, GLM-5.1, GPT-OSS 120B — selectable like any bundled model instead of falling through to the dynamic-model guesswork. Cataloging DeepSeek V4 on Fireworks also trips a real bug: core's deepseek-native fallback injects thinking next to reasoning_effort and Fireworks rejects that request outright. The fix turned out to need zero new runtime code — one manifest compat field core already supports.

Summary

What does this add? Four Fireworks serverless reasoning models to the bundled extensions/fireworks manifest catalog, each with reasoning_effort compat (supported efforts + level map) and a per-family thinking profile so thinking menus only offer levels the deployment actually accepts:

model input context thinking menu
deepseek-v4-pro text 1,048,576 off/low/medium/high/xhigh/max
minimax-m3 text + image 524,288 off/low/medium/high
glm-5p1 text 202,752 off/low/medium/high
gpt-oss-120b text 131,072 low/medium/high

Thinking menus are derived from each row's supportedReasoningEfforts (extensions/fireworks/thinking-policy.ts) rather than hand-maintained per family, so the catalog row is the single source of truth and the /think menu can never drift from the wire contract.

What does this fix? — DeepSeek V4 Pro 400. Without the patch, selecting fireworks/accounts/fireworks/models/deepseek-v4-pro with thinking enabled kills every turn. Core's DeepSeek V4 fallback (src/agents/embedded-agent-runner/extra-params.ts) matches the id's last segment (deepseek-v4-pro) on any unowned OpenAI-compatible provider and injects thinking: { type: "enabled" } plus reasoning_effort. Fireworks rejects that payload:

{"error":{...,"message":"cannot specify both 'thinking' and 'reasoning_effort'"}}

Core already built the seam for exactly this class of deployment: compat.thinkingFormat"deepseek" suppresses the injected thinking entirely (even {type:"disabled"}) and strips deepseek replay fields, while reasoning_effort keeps flowing from the manifest map. The doc comment on deepSeekV4NativeThinkingAllowedByCompat names the use case (Azure AI Foundry DeepSeek V4 rejects thinking outright), and extra-params.deepseek-v4-thinking-format.test.ts pins the whole behavior. So the deepseek-v4-pro row carries "thinkingFormat": "openai" — no plugin runtime code, one manifest field core already supports.

Note — GPT-OSS 120B is the first bundled no-off profile. Its Fireworks deployment rejects reasoning_effort:"none" (400 Invalid reasoning effort: none, verified below), so its menu has no off. That exposes a separate core quirk: a session carrying a stored off that switches onto a no-off model was clamped up to the most expensive level. That fix is shared core logic, so it ships on its own — #93335 / fix/thinking-clamp-below-range (see Linked context). This PR is intentionally plugin-only; the two are best landed together.

Why supportsReasoningEffort: true on every row. Fireworks' baseUrl classifies as a proxy-like endpoint, so the transport's detected compat disables reasoning_effort by default; the explicit manifest flag is what keeps each model's effort contract on the wire.

Where do the numbers come from? Model ids, context windows, reasoning_effort ranges, and pricing (incl. cache-read rates) verified against the live Fireworks API (/v1/models, /v1/chat/completions) and https://docs.fireworks.ai/serverless/pricing. minimax-m3 is absent from that account-scoped /v1/models listing, so it was confirmed with live completions across its full effort range.

Linked context

  • Sibling core fix — fix(thinking): clamp below-range requests down to the cheapest level,… #93335 / fix/thinking-clamp-below-range clamps a below-range thinking request (e.g. a stored off) down to the cheapest level instead of up to the most expensive. GPT-OSS 120B (added here) is the first bundled profile that triggers it. Independent PRs; recommend landing together.
  • fix(fireworks): resolve catalog model params from plugin.json via core #90326 (same author, merged 2026-06-13, 22fdc39adb) makes core resolve bundled catalog params (contextWindow/maxTokens/compat) from openclaw.plugin.json. This PR builds on that merged behavior — the branch is rebased on current main, so the four rows are authoritative through core with no plugin-side resolution code. An earlier iteration re-implemented that resolution locally; all of it was deleted once fix(fireworks): resolve catalog model params from plugin.json via core #90326 landed (see Current review state).
  • Core seam + tests: extra-params.ts (deepSeekV4NativeThinkingAllowedByCompat, non-native sanitizer), extra-params.deepseek-v4-thinking-format.test.ts.
  • Sibling precedent: extensions/deepseek/openclaw.plugin.json ships the same supportsReasoningEffort compat; deepseek-v4-pro pricing matches the first-party row.
  • Manifest compat keys (thinkingFormat, supportedReasoningEfforts, reasoningEffortMap) are existing config schema: src/config/zod-schema.core.ts, src/config/types.models.ts.

Real behavior proof

Behavior or issue addressed: Fireworks DeepSeek V4 Pro turns failing with 400 "cannot specify both 'thinking' and 'reasoning_effort'" when thinking is enabled; the three other reasoning families missing from the bundled catalog (no pricing, wrong default thinking levels via dynamic fallback).
Real environment tested: live Fireworks serverless API (api.fireworks.ai/inference/v1) with a real API key; OpenClaw checkout of this branch on Linux/Node 24.
Exact steps or command run after this patch: openclaw models list --all --provider fireworks --plain, then one noninteractive agent turn per model, e.g. openclaw agent --session-id fw-shot-ds -m "One sentence: why is the sky blue?" --model fireworks/accounts/fireworks/models/deepseek-v4-pro --thinking high (and the minimax/glm/gpt-oss equivalents).
Evidence after fix: screenshot below; red→green at the same command: openclaw agent --local --session-id fw-proof-ds -m "Say READY and nothing else." --model fireworks/accounts/fireworks/models/deepseek-v4-pro --thinking high → before: error=LLM request failed … rawError=400 cannot specify both 'thinking' and 'reasoning_effort'; after: READY. Raw API contract probe: a direct POST /v1/chat/completions for deepseek-v4-pro with {"thinking":{"type":"enabled"},"reasoning_effort":"low"} returns the same 400, while {"reasoning_effort":"low"} alone returns a normal completion — the patched plugin emits the latter shape.
Observed result after fix: all four models listed in the catalog with pricing; live one-turn agent runs on this branch return model replies for all four families (deepseek-v4-pro/minimax-m2p7/glm-5p1/gpt-oss-120b), including a deepseek-v4-pro turn at --thinking max through the dynamic-id path.
What was not tested: Fire Pass / routers/*-fast ids (separate follow-up), image input (all four rows are text-only per the live API), xhigh/max efforts end-to-end on deepseek (mapped per Fireworks' documented effort list but not exercised in a live turn).

image

Tests and validation

  • extensions/fireworks vitest: 18 passed (catalog compat incl. the new thinkingFormat assertion, per-family thinking profiles, dynamic family compat merge, dynamic-model fallbacks); src/auto-reply/thinking.test.ts: 48 passed incl. the new no-off clamp regression; clamp consumers (agent-command.live-model-switch, cron model-override forwarding): green.
  • docs/providers/fireworks.md: built-in catalog table and dynamic-id thinking notes refreshed with the new models.
  • Core seam test: extra-params.deepseek-v4-thinking-format.test.ts 8 passed (pre-existing; proves the manifest override path this PR relies on).
  • tsgo core + extension lanes clean; oxlint clean; oxfmt clean.
  • Autoreview loop (claude-fable-5 thinking-high + codex gpt-5.5 medium), nine rounds until convergence; final verdicts: claude "patch is correct (0.85)", codex "patch is correct (0.83), no actionable findings". The full finding-by-finding ledger is in "Current review state" below.

Risk checklist

  • Plugin-only — no core changes. Additive manifest rows; the only code is the data-driven thinking-profile derivation (thinking-policy.ts, replaces the old per-family Kimi matcher) and four id constants. Net +265/−23 across 5 files, all under extensions/fireworks/** and docs/**.
  • No config/default surface changes outside the plugin manifest; no migrations; existing configured models are unaffected (rows are additive, ids unchanged).
  • Dynamic (non-cataloged) Fireworks ids keep the exact pre-PR behavior except deepseek-v4*, which gains the compat opt-out (those turns 400'd before, so nothing working changes). Non-cataloged ids get the generic thinking menu; only the four cataloged ids get derived menus.
  • Thinking-menu levels are clamped to what Fireworks accepts per model (verified per effort via curl), so a user-selected unsupported level can no longer produce a rejected request.
  • Known dependency: GPT-OSS 120B is no-off, so a stored thinking-off session switched onto it clamps up to the most expensive level until the sibling core fix (fix/thinking-clamp-below-range) lands. No other added model is affected (the rest are off-capable).

Current review state

What is the next action? Maintainer review. Author attaches the terminal screenshot (catalog listing + one live turn per family + the curl effort matrix) at the placeholder above.

What is still waiting on author, maintainer, CI, or external proof? Author: screenshot. Maintainer: review/land decision + ordering vs the sibling core fix. CI: standard checks. No external proof outstanding.

Is this PR plugin-only? Yes. An earlier iteration of this branch carried much more — a per-family regex matcher (model-id.ts), a dynamic-family compat table (index.ts), exported FIREWORKS_*_COMPAT clones, and a core thinking-clamp fix. The first three were workarounds for core not resolving the plugin's openclaw.plugin.json catalog; once #90326 merged they were deleted. The core clamp fix was split out to fix/thinking-clamp-below-range so this PR is purely additive plugin data + manifest-derived menus + the DeepSeek thinkingFormat opt-out (one manifest field).

Which bot or reviewer comments were addressed? None posted on the current revision yet. The branch was force-pushed to its surgical form after #90326 merged and after the core fix was split out; a prior over-scoped revision is superseded.

Review state guidance
  1. The following clawsweeper's notes has been resolved as PR#90326 is merged:
  • Pause this PR until https://github.com/openclaw/openclaw/pull/90326 establishes manifest-authoritative resolution, then rebase and rerun the combined Fireworks tests and live proof.
  • [P1] This PR and fix(fireworks): resolve catalog model params from plugin.json via core #90326 overlap the same resolver files, so the final merged shape needs one canonical manifest-resolution path rather than two competing sources of truth.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation size: M proof: supplied External PR includes structured after-fix real behavior proof. labels Jun 11, 2026
@clawsweeper

clawsweeper Bot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs real behavior proof before merge. Reviewed June 30, 2026, 6:51 PM ET / 22:51 UTC.

Summary
This PR adds four Fireworks reasoning models to the bundled catalog, derives Fireworks thinking profiles from manifest reasoning-effort metadata, and updates Fireworks docs/tests.

PR surface: Source +136, Tests +105, Docs +4. Total +245 across 5 files.

Reproducibility: yes. at source level: current main maps a below-range off request on a no-off profile to high, and the PR adds the first no-off Fireworks row that would expose that path. The dynamic Kimi profile regression is also source-reproducible by comparing current main's Kimi matcher with the PR-head exact manifest lookup.

Review metrics: 2 noteworthy metrics.

  • Fireworks catalog rows: 4 added. These manifest rows control bundled model selection, displayed limits, pricing, thinking menus, and live request compatibility for a shipped provider plugin.
  • No-off thinking profiles: 1 added. gpt-oss-120b is the first bundled Fireworks profile without off, making stored-session remap behavior a pre-merge compatibility concern.

Root-cause cluster
Relationship: canonical
Canonical: #92217
Summary: This PR is the canonical Fireworks catalog expansion, with one open core clamp PR that must be coordinated and one merged manifest-resolution prerequisite.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🦪 silver shellfish
Proof: 🦪 silver shellfish
Patch quality: 🦐 gold shrimp
Result: blocked until stronger real behavior proof is added.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • Preserve dynamic Kimi off-only thinking profiles while keeping manifest-derived catalog profiles.
  • Land or include the no-off clamp before shipping gpt-oss-120b, or defer that row.
  • [P1] Add redacted current-head Fireworks proof for deepseek-v4-pro, minimax-m3, glm-5p1, and gpt-oss-120b.

Proof guidance:

  • [P1] Needs stronger real behavior proof before merge: The screenshot is relevant but insufficient because it shows build 65aab17 and minimax-m2p7 rather than current head aa3187e and cataloged minimax-m3; refreshed redacted current-head proof is needed. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.

Risk before merge

  • [P1] Existing sessions with thinking off can still be remapped and persisted to high when switched to the new no-off gpt-oss-120b row unless fix(thinking): clamp below-range requests down to the cheapest level,… #93335 lands first, this PR includes the same fix, or that row is deferred.
  • [P1] Existing dynamic Fireworks Kimi ids can lose their off-only thinking profile on policy surfaces that do not carry a model catalog, even though the Fireworks stream wrapper still strips reasoning fields for those ids.
  • [P1] The supplied screenshot is useful context but is not sufficient current-head proof because it shows build 65aab17 and minimax-m2p7 rather than head aa3187e and cataloged minimax-m3.
  • [P1] GitHub reports this branch as conflicting with current main, so the exact merge result still needs a rebase or refresh before landing.

Maintainer options:

  1. Repair policy and proof before merge (recommended)
    Preserve dynamic Kimi off-only profiles, land or include the no-off clamp, rebase the conflict, and require refreshed current-head Fireworks proof for the exact model ids.
  2. Defer the no-off GPT-OSS row
    Remove or postpone gpt-oss-120b so the off-capable catalog additions can proceed without exposing current main's stored-thinking remap bug.
  3. Pause for provider contract proof
    Hold the PR if the contributor cannot provide redacted current-head output for the exact Fireworks model ids and effort ranges being cataloged.

Next step before merge

Security
Cleared: No concrete security or supply-chain issue was found; the diff changes provider manifest data, provider-local code/tests, and docs only.

Review findings

  • [P1] Land the clamp before exposing GPT-OSS — extensions/fireworks/openclaw.plugin.json:162
  • [P2] Preserve Kimi off-only fallback profiles — extensions/fireworks/thinking-policy.ts:38
Review details

Best possible solution:

Keep the manifest-owned catalog approach, but refresh the branch, preserve dynamic Kimi off-only policy, land or include the no-off clamp before shipping GPT-OSS, and require current-head Fireworks proof for the exact catalog rows.

Do we have a high-confidence way to reproduce the issue?

Yes at source level: current main maps a below-range off request on a no-off profile to high, and the PR adds the first no-off Fireworks row that would expose that path. The dynamic Kimi profile regression is also source-reproducible by comparing current main's Kimi matcher with the PR-head exact manifest lookup.

Is this the best way to solve the issue?

No, not as a standalone merge. The catalog boundary is the right direction, but the best fix also preserves Kimi dynamic behavior, lands or includes the shared no-off clamp before GPT-OSS ships, and refreshes exact current-head live proof.

Full review comments:

  • [P1] Land the clamp before exposing GPT-OSS — extensions/fireworks/openclaw.plugin.json:162
    This row exposes only low/medium/high. On current main, a stored off level on a no-off profile falls through to the first non-off entry of a descending list, so switching an existing session to this model can persist high; land or include fix(thinking): clamp below-range requests down to the cheapest level,… #93335 before this row ships, or defer this row.
    Confidence: 0.94
  • [P2] Preserve Kimi off-only fallback profiles — extensions/fireworks/thinking-policy.ts:38
    This lookup only contains manifest catalog ids. Current main returns an off-only profile for Fireworks Kimi ids, including dynamic aliases such as accounts/fireworks/models/kimi-k2p5; callers without a loaded catalog can now fall back to generic thinking choices while the Fireworks stream wrapper still strips reasoning fields. Keep the Kimi id guard or an equivalent fallback before returning undefined.
    Confidence: 0.87

Overall correctness: patch is incorrect
Overall confidence: 0.9

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 3811001d2783.

Label changes

Label justifications:

  • P1: The PR affects live Fireworks provider routing and has source-confirmed provider/session compatibility blockers before it can safely ship.
  • merge-risk: 🚨 compatibility: The new no-off GPT-OSS profile and narrowed Fireworks thinking-policy lookup can alter existing session or custom-model behavior.
  • merge-risk: 🚨 auth-provider: The manifest compatibility fields decide whether OpenClaw sends Fireworks-compatible thinking or reasoning_effort payloads to the live provider.
  • merge-risk: 🚨 session-state: The new no-off profile can trigger current main's stored thinking-level remap and persist high into an existing session.
  • rating: 🦪 silver shellfish: Overall readiness is 🦪 silver shellfish; proof is 🦪 silver shellfish and patch quality is 🦐 gold shrimp.
  • status: 🛠️ actively grinding: The PR author has acted after the latest ClawSweeper review and work remains. Needs stronger real behavior proof before merge: The screenshot is relevant but insufficient because it shows build 65aab17 and minimax-m2p7 rather than current head aa3187e and cataloged minimax-m3; refreshed redacted current-head proof is needed. After adding proof, update the PR body; ClawSweeper should re-review automatically. If it does not, the PR author or someone with repository write access can comment @clawsweeper re-review.
  • proof: 📸 screenshot: Contributor real behavior proof includes screenshot evidence. The screenshot is relevant but insufficient because it shows build 65aab17 and minimax-m2p7 rather than current head aa3187e and cataloged minimax-m3; refreshed redacted current-head proof is needed.
Evidence reviewed

PR surface:

Source +136, Tests +105, Docs +4. Total +245 across 5 files.

View PR surface stats
Area Files Added Removed Net
Source 3 146 10 +136
Tests 1 110 5 +105
Docs 1 12 8 +4
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 5 268 23 +245

Acceptance criteria:

  • [P1] node scripts/run-vitest.mjs extensions/fireworks/index.test.ts.
  • [P1] node scripts/run-vitest.mjs src/auto-reply/thinking.test.ts.
  • [P1] Redacted current-head Fireworks CLI/API proof for deepseek-v4-pro, minimax-m3, glm-5p1, and gpt-oss-120b.

What I checked:

  • Repository policy read: Root, extensions, and docs AGENTS.md were read fully; provider routing, plugin metadata, fallback behavior, and session state are compatibility-sensitive review areas. (AGENTS.md:1, 3811001d2783)
  • PR head narrows Fireworks thinking profile lookup: The PR-head thinking policy only returns exact manifest-row profiles from FIREWORKS_THINKING_PROFILES, so uncataloged dynamic Kimi ids no longer get the provider hook's off-only Kimi profile. (extensions/fireworks/thinking-policy.ts:38, aa3187e2d8ea)
  • Current main protects all Kimi ids in the thinking hook: Current main resolves Fireworks thinking profiles through isFireworksKimiModelId, and the matcher accepts Kimi K2.5/K2.6 dynamic variants by last path segment. (extensions/fireworks/thinking-policy.ts:13, 3811001d2783)
  • Runtime stream wrapper still strips dynamic Kimi thinking fields: The Fireworks stream wrapper still strips reasoning fields for any Kimi id matched by isFireworksKimiModelId, so losing the matching thinking profile can make UI/session policy drift from runtime request shaping. (extensions/fireworks/stream.ts:35, 3811001d2783)
  • GPT-OSS row introduces a no-off profile: The PR adds gpt-oss-120b with supportedReasoningEfforts low/medium/high and no off mapping, making current main's below-range clamp visible to existing sessions with thinking off. (extensions/fireworks/openclaw.plugin.json:162, aa3187e2d8ea)
  • Current main clamp maps below-range off to the highest non-off level: Current main sorts levels descending and falls back to ranked.find(non-off), so a no-off low/medium/high profile maps off to high. (src/auto-reply/thinking.ts:352, 3811001d2783)

Likely related people:

  • frankekn: PR history shows this person authored and merged the Fireworks Kimi reasoning-leak fix that added the Kimi matcher and stream-wrapper behavior this PR must preserve. (role: introduced current Fireworks Kimi protection; confidence: high; commits: 3e062acbcbf3; files: extensions/fireworks/model-id.ts, extensions/fireworks/stream.ts, extensions/fireworks/index.test.ts)
  • steipete: History shows this person authored the initial Fireworks provider commit and merged the related manifest-resolution PR that this branch builds on. (role: introduced provider surface and recent merger; confidence: high; commits: d655a8bc7654, 9d9389bc6b7a; files: extensions/fireworks/index.ts, extensions/fireworks/openclaw.plugin.json, extensions/fireworks/provider-catalog.ts)
  • obuchowski: This contributor authored the merged Fireworks manifest-resolution PR and the related open no-off clamp PR, so they have current context on both affected boundaries beyond this proposal. (role: recent adjacent contributor; confidence: medium; commits: 9d9389bc6b7a, 95773d115a7c; files: extensions/fireworks/provider-catalog.ts, extensions/fireworks/openclaw.plugin.json, src/auto-reply/thinking.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.
Review history (1 earlier review cycle)
  • reviewed 2026-06-21T13:34:54.087Z sha aa3187e :: needs real behavior proof before merge. :: [P1] Land the no-off clamp before shipping GPT-OSS | [P2] Preserve dynamic Kimi off-only profiles | [P2] Do not advertise no-op GLM effort levels

@clawsweeper clawsweeper Bot added the rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. label Jun 11, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P1 High-priority user-facing bug, regression, or broken workflow. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. and removed rating: 🌊 off-meta tidepool PR readiness rating does not apply to this item. labels Jun 12, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 15, 2026
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. labels Jun 15, 2026
@obuchowski
obuchowski force-pushed the feat/fireworks-models branch from aed2ebc to 8d00cb0 Compare June 15, 2026 14:51
@openclaw-barnacle openclaw-barnacle Bot removed the proof: sufficient ClawSweeper judged the real behavior proof convincing. label Jun 15, 2026
obuchowski added a commit to obuchowski/openclaw that referenced this pull request Jun 15, 2026
… not up

resolveSupportedThinkingLevelFromProfile sorts the supported levels descending,
then, when every supported level exceeds the request (e.g. a stored `off` on a
profile that has no off level), fell through to `ranked.find(non-off)` — the
first entry of a descending list, i.e. the most expensive level. A session
carrying thinking `off` that switched onto such a model was silently remapped to
maximum reasoning and persisted (src/auto-reply/reply/directive-handling.persist.ts).

Use `ranked.findLast(non-off)` so a below-range request resolves to the cheapest
non-off level instead. Regression test included (red before, green after).

This surfaces with the first bundled no-off thinking profiles (Fireworks
GPT-OSS 120B, see openclaw#92217), but the clamp lives in shared core logic, so it ships
on its own.
@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 15, 2026
obuchowski added a commit to obuchowski/openclaw that referenced this pull request Jun 15, 2026
… not up

resolveSupportedThinkingLevelFromProfile sorts the supported levels descending,
then, when every supported level exceeds the request (e.g. a stored `off` on a
profile that has no off level), fell through to `ranked.find(non-off)` — the
first entry of a descending list, i.e. the most expensive level. A session
carrying thinking `off` that switched onto such a model was silently remapped to
maximum reasoning and persisted (src/auto-reply/reply/directive-handling.persist.ts).

Use `ranked.findLast(non-off)` so a below-range request resolves to the cheapest
non-off level instead. Regression test included (red before, green after).

This surfaces with the first bundled no-off thinking profiles (Fireworks
GPT-OSS 120B, see openclaw#92217), but the clamp lives in shared core logic, so it ships
on its own.
@obuchowski
obuchowski force-pushed the feat/fireworks-models branch 2 times, most recently from c242301 to ac5b2c4 Compare June 15, 2026 15:24
obuchowski added a commit to obuchowski/openclaw that referenced this pull request Jun 15, 2026
… not up

resolveSupportedThinkingLevelFromProfile sorts the supported levels descending,
then, when every supported level exceeds the request (e.g. a stored `off` on a
profile that has no off level), fell through to `ranked.find(non-off)` — the
first entry of a descending list, i.e. the most expensive level. A session
carrying thinking `off` that switched onto such a model was silently remapped to
maximum reasoning and persisted (src/auto-reply/reply/directive-handling.persist.ts).

Use `ranked.findLast(non-off)` so a below-range request resolves to the cheapest
non-off level instead. Regression test included (red before, green after).

This surfaces with the first bundled no-off thinking profiles (Fireworks
GPT-OSS 120B, see openclaw#92217), but the clamp lives in shared core logic, so it ships
on its own.
@openclaw-barnacle openclaw-barnacle Bot added channel: whatsapp-web Channel integration: whatsapp-web channel: zalo Channel integration: zalo channel: zalouser Channel integration: zalouser app: android App: android app: ios App: ios app: macos App: macos gateway Gateway runtime extensions: copilot-proxy Extension: copilot-proxy extensions: diagnostics-otel Extension: diagnostics-otel extensions: llm-task Extension: llm-task extensions: lobster Extension: lobster extensions: memory-core Extension: memory-core extensions: memory-lancedb Extension: memory-lancedb extensions: open-prose Extension: open-prose scripts Repository scripts docker Docker and sandbox tooling agents Agent runtime and tooling channel: feishu Channel integration: feishu channel: twitch Channel integration: twitch channel: irc extensions: acpx extensions: anthropic extensions: openai extensions: minimax extensions: cloudflare-ai-gateway extensions: byteplus extensions: huggingface labels Jun 15, 2026
@github-actions

github-actions Bot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

Dependency graph guard cleared

This PR no longer has blocked dependency graph changes. A future dependency graph change requires a fresh /allow-dependencies-change comment after the guard blocks that new head SHA.

  • Current SHA: aa3187e2d8eacb30704c4101b73d7b3e4355c27f

…S 120B reasoning models

Add four Fireworks serverless reasoning models to the bundled catalog, each
with reasoning_effort compat (supported efforts + level map) verified against
the live Fireworks API. Thinking menus are derived from each row's
supportedReasoningEfforts, so /think only offers levels the deployment accepts.

DeepSeek V4 Pro carries thinkingFormat:"openai" to opt out of core's
deepseek-native fallback: Fireworks 400s when a request sends `thinking`
alongside `reasoning_effort`.

GPT-OSS 120B is the first bundled profile with no off level (the API rejects
reasoning_effort:"none"). The core thinking-clamp fix it relies on ships
separately on fix/thinking-clamp-below-range so this stays plugin-only.

Model ids, context windows, reasoning_effort ranges, and pricing verified
against the live Fireworks API (/v1/models, /v1/chat/completions) and
docs.fireworks.ai/serverless/pricing.
@openclaw-barnacle

Copy link
Copy Markdown

This pull request has been automatically marked as stale due to inactivity.
Please add updates or it will be closed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs Improvements or additions to documentation merge-risk: 🚨 auth-provider 🚨 May break OAuth, tokens, provider routing, model choice, or credentials. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 session-state 🚨 May lose, corrupt, stale, or mis-associate session, agent, or context state. P1 High-priority user-facing bug, regression, or broken workflow. proof: 📸 screenshot Contributor real behavior proof includes screenshot evidence. proof: supplied External PR includes structured after-fix real behavior proof. rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. size: M stale Marked as stale due to inactivity status: 🛠️ actively grinding The PR author has acted after the latest ClawSweeper review and work remains.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant