Skip to content

feat: add Fal Krea image model schemas#87845

Merged
steipete merged 4 commits into
mainfrom
feat/fal-krea-image-models
May 29, 2026
Merged

feat: add Fal Krea image model schemas#87845
steipete merged 4 commits into
mainfrom
feat/fal-krea-image-models

Conversation

@steipete

@steipete steipete commented May 29, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add a Fal image model payload registry so Krea 2 uses native aspect_ratio, creativity, and image_style_references instead of Flux-style image_size / edit endpoint payloads.
  • Register canonical Fal Krea 2 Medium/Large refs and keep Nano Banana/GPT/Flux payload behavior model-specific, including model-specific geometry normalization.
  • Add generic Fal provider options at the image tool layer, docs for Krea Medium/Large, and live-test handling for Krea style references.

Verification

  • node scripts/run-vitest.mjs extensions/fal/image-generation-provider.test.ts src/agents/tools/image-generate-tool.test.ts src/image-generation/runtime.test.ts test/image-generation.runtime.live.test.ts --reporter=verbose (126 tests passed)
  • OPENCLAW_TESTBOX=0 pnpm check:changed (passed after rebase onto origin/main at 6e25112aad)
  • pnpm check:docs (passed)
  • git diff --check origin/main...HEAD (passed)
  • pnpm build (passed; existing packages/agent-core/src/harness/messages.d.ts relative module declaration warning)
  • FAL_KEY=<redacted from 1Password> OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS=fal OPENCLAW_LIVE_IMAGE_GENERATION_MODELS='fal/krea/v2/medium/text-to-image' OPENCLAW_LIVE_IMAGE_GENERATION_CASES='fal:generate,fal:edit' OPENCLAW_LIVE_IMAGE_GENERATION_TIMEOUT_MS=180000 pnpm test:live test/image-generation.runtime.live.test.ts --reporter=verbose (generate/edit passed)
  • /Users/steipete/Projects/agent-scripts/skills/autoreview/scripts/autoreview --mode branch --base origin/main (clean)

Testbox note: delegated pnpm check:changed runs tbx_01ksrkzeabhkns0029mbz0wbhg and tbx_01ksrm1ce8rk16nmj4h4rvh3x9 failed before checks with fatal: origin/main...HEAD: no merge base; local and CI checks are the usable proof for this branch.

Real behavior proof

Behavior addressed: Fal Krea 2 Medium/Large now use model-specific payload schemas, including canonical fal/krea/v2/... refs, style references, native aspect ratio, creativity, unsupported override rejection, and model-specific Fal geometry handling.
Real environment tested: Local OpenClaw checkout plus live Fal API with FAL_KEY read from 1Password and redacted in logs.
Exact steps or command run after this patch: OPENCLAW_LIVE_TEST=1 OPENCLAW_LIVE_IMAGE_GENERATION_PROVIDERS=fal OPENCLAW_LIVE_IMAGE_GENERATION_MODELS='fal/krea/v2/medium/text-to-image' OPENCLAW_LIVE_IMAGE_GENERATION_CASES='fal:generate,fal:edit' OPENCLAW_LIVE_IMAGE_GENERATION_TIMEOUT_MS=180000 pnpm test:live test/image-generation.runtime.live.test.ts --reporter=verbose.
Evidence after fix: Live output reported fal:generate:krea/v2/medium/text-to-image and fal:edit:krea/v2/medium/text-to-image, skipped none, failures none.
Observed result after fix: Both live generate and style-reference edit returned image buffers.
What was not tested: Live Krea Large and live Nano Banana were not run; their payload behavior is covered by focused provider/runtime tests.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation agents Agent runtime and tooling extensions: fal size: L maintainer Maintainer-authored PR labels May 29, 2026
@clawsweeper

clawsweeper Bot commented May 29, 2026

Copy link
Copy Markdown
Contributor

Codex review: found issues before merge. Reviewed May 28, 2026, 10:46 PM ET / 02:46 UTC.

Summary
The branch adds Fal Krea 2 Medium/Large model refs, model-specific Fal payload handling, generic Fal image tool options, docs, prompt snapshots, and focused Fal image-generation tests.

PR surface: Source +325, Tests +537, Docs +91. Total +953 across 18 files.

Reproducibility: not applicable. to the feature as a whole. The review findings are source-reproducible from the branch's capability metadata and runtime fallback catch path.

Review metrics: 1 noteworthy metric.

  • Public image-generation contract changes: 1 SDK type export added, 1 providerOptions type broadened, 3 model-specific geometry fields added, 1 new tool option added. Plugin-facing image-generation contracts and model-facing tool parameters are compatibility-sensitive before release.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦞 diamond lobster
Patch quality: 🦐 gold shrimp
Result: needs maintainer review before merge.

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

Rank-up moves:

  • [P2] Add fallback-aware tests for invalid Krea aspectRatio, resolution, count, and outputFormat requests.
  • Move Krea limits into generic model-specific capability metadata instead of provider-only validation.
  • Get maintainer acceptance for the broadened image-generation plugin/tool API shape.

Risk before merge

  • [P2] Krea-specific unsupported options are still enforced inside the Fal provider, so configured fallback can generate with a different provider for invalid Krea count, outputFormat, resolution, or aspectRatio requests.
  • [P1] The PR broadens plugin-facing image-generation contracts and the model-facing tool schema, so maintainers need to accept the public API shape before release.
  • [P1] Head CI currently has two failed check-runs that need a clean rerun after the capability fixes.

Maintainer options:

  1. Finish model-specific capability validation (recommended)
    Add generic model-specific capability metadata for Krea aspect ratios, resolutions, count, and output formats, plus focused fallback tests proving unsupported Krea options reject before provider fallback.
  2. Accept the new public API shape
    Maintainers can explicitly accept the providerOptions and model-specific capability contract, then require the code/tests to match that accepted shape before release.
  3. Pause if the API shape is not approved
    If maintainers do not want to expand image-generation plugin contracts this way, pause or replace the branch with a narrower Fal-local implementation.

Next step before merge

  • [P2] Maintainers need to decide the public capability/API shape and the contributor should address the fallback-validation findings before this can be a normal merge candidate.

Security
Cleared: No concrete security or supply-chain regression was found; the diff does not add dependencies, workflow execution, or new secret handling beyond existing Fal provider auth.

Review findings

  • [P2] Expose Krea aspect and resolution limits in capabilities — extensions/fal/image-generation-provider.ts:546-547
  • [P2] Expose Krea count and output-format limits before fallback — extensions/fal/image-generation-provider.ts:209-210
Review details

Best possible solution:

Land this after Krea-specific limits are represented in generic capability metadata with fallback-aware tests, and after maintainers explicitly accept the SDK/tool API shape.

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

Not applicable to the feature as a whole. The review findings are source-reproducible from the branch's capability metadata and runtime fallback catch path.

Is this the best way to solve the issue?

No. The Fal Krea payload registry is directionally right, but provider-only validation is not the best landing shape because runtime fallback can hide unsupported Krea input.

Full review comments:

  • [P2] Expose Krea aspect and resolution limits in capabilities — extensions/fal/image-generation-provider.ts:546-547
    The provider registers Krea models but keeps the fal-wide aspectRatios and resolutions capability lists, with no Krea-specific overrides. Core normalization therefore passes unsupported Krea ratios or resolutions into generateImage(), where the thrown provider error is caught as a fallback attempt and can run another provider instead of rejecting or normalizing against Krea's subset.
    Confidence: 0.87
  • [P2] Expose Krea count and output-format limits before fallback — extensions/fal/image-generation-provider.ts:209-210
    These flags are private to the Fal provider, while public capabilities still advertise multi-image count and png/jpeg output for every Fal model. A Krea request such as count: 2 or outputFormat: "jpeg" passes tool/runtime validation and then fails inside the provider, so configured fallback can generate with a different model rather than returning a Krea option error.
    Confidence: 0.86

Overall correctness: patch is incorrect
Overall confidence: 0.86

AGENTS.md: found and applied where relevant.

Codex review notes: model gpt-5.5, reasoning high; reviewed against a4ff3e19ea04.

Label changes

Label justifications:

  • P2: This is a normal-priority provider feature with limited blast radius, but it has fallback-validation defects before merge.
  • merge-risk: 🚨 compatibility: The PR changes plugin-facing image-generation types and capability semantics, which can affect third-party provider/plugin behavior after release.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (live_output): The PR body includes after-fix live Fal API proof with redacted credentials and observed image buffers for Krea Medium generate and style-reference edit.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes after-fix live Fal API proof with redacted credentials and observed image buffers for Krea Medium generate and style-reference edit.
Evidence reviewed

PR surface:

Source +325, Tests +537, Docs +91. Total +953 across 18 files.

View PR surface stats
Area Files Added Removed Net
Source 6 398 73 +325
Tests 10 586 49 +537
Docs 2 115 24 +91
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 18 1099 146 +953

What I checked:

  • Repository policy read: Root and scoped docs/extensions/agent-tool/plugin-sdk guides were read; the plugin SDK guide treats SDK surfaces as public contracts and the root policy treats provider routing and plugin API changes as compatibility-sensitive. (AGENTS.md:16, a4ff3e19ea04)
  • Live PR state: Public GitHub API reports this PR open at head 60c842e, mergeable=true/unstable, with 18 changed files and maintainer_can_modify=false. (60c842ee3c4d)
  • Krea limits are provider-local: The Krea schema records supportsCount=false and supportsOutputFormat=false only inside the Fal provider, after runtime capability validation has already selected a fallback candidate. (extensions/fal/image-generation-provider.ts:209, 60c842ee3c4d)
  • Fal capabilities remain global: The provider still advertises fal-wide aspect ratios, resolutions, and output formats without Krea-specific aspectRatio/resolution/output capability overrides, so core cannot reject or normalize unsupported Krea options before provider execution. (extensions/fal/image-generation-provider.ts:546, 60c842ee3c4d)
  • Fallback catches provider validation errors: Image-generation runtime catches errors thrown by provider.generateImage and records them as failed attempts before trying the next configured candidate. (src/image-generation/runtime.ts:147, 60c842ee3c4d)
  • Upstream Fal contract checked: Fal's Krea 2 Medium/Large API pages expose aspect_ratio, creativity, and image_style_references; the embedded schema enum lists the smaller Krea aspect-ratio subset 1:1, 4:3, 3:2, 16:9, 2.35:1, 4:5, 2:3, and 9:16.

Likely related people:

  • steipete: Recent current-main commits touch Fal provider, image tool validation, and plugin SDK/image-generation surfaces, so this person is a strong routing candidate beyond authoring this branch. (role: recent area contributor; confidence: high; commits: 77d9ac30bb8d, d7fca5794db7, 827b0de0ce74; files: extensions/fal/image-generation-provider.ts, src/agents/tools/image-generate-tool.ts, src/plugin-sdk/image-generation-core.ts)
  • leoge007: Commit 66b4306 added the Fal GPT Image 2/Nano Banana edit endpoint routing and provider-specific reference limits that this Krea schema work extends. (role: feature-area contributor; confidence: medium; commits: 66b4306a2a66; files: extensions/fal/image-generation-provider.ts)
  • huntharo: Commit 0bd0097 is recent current-main plugin SDK boundary work, relevant because this PR changes plugin-facing image-generation contracts. (role: plugin-sdk boundary contributor; confidence: medium; commits: 0bd0097557d6; files: src/plugin-sdk/image-generation-core.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.

@steipete steipete force-pushed the feat/fal-krea-image-models branch from 1a23daf to 0feadce Compare May 29, 2026 01:41

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1a23dafd47

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

"5:4",
"9:16",
"16:9",
"21:9",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve Nano Banana extreme aspect ratios

When fal-ai/nano-banana-2 is selected with one of the newly supported extreme ratios (4:1, 1:4, 8:1, or 1:8), this shared fal capability list still omits those values even though the model-specific NANO_BANANA_SUPPORTED_ASPECT_RATIOS includes them below. Core normalization uses provider.capabilities.geometry.aspectRatios before calling the provider, so these requests are treated as unsupported and remapped to the closest shared ratio (and the tool allowlist rejects them as well) before the NB2-specific schema can accept them.

Useful? React with 👍 / 👎.

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels May 29, 2026
@steipete steipete force-pushed the feat/fal-krea-image-models branch from 0feadce to 9b039f0 Compare May 29, 2026 02:16

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9b039f0650

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

[FAL_KREA_2_MEDIUM_MODEL]: [],
[FAL_KREA_2_LARGE_MODEL]: [],
},
aspectRatios: [...FAL_SUPPORTED_ASPECT_RATIOS],

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Add Krea aspect ratios to model geometry

When fal/krea/v2/... is selected and the caller supplies a fal-global ratio that Krea does not support (for example 21:9, 4:1, or 1:8), runtime normalization still uses this shared aspectRatios list because there is no aspectRatiosByModel override for the Krea models. The request then reaches resolveNativeFalAspectRatio() and fails provider-side; with configured image-generation fallbacks, generateImage() catches that failure and can run a different provider instead of applying Krea's own supported subset. The file already defines KREA_SUPPORTED_ASPECT_RATIOS, so wire those into the provider capabilities for the Krea model ids.

Useful? React with 👍 / 👎.

@clawsweeper clawsweeper Bot added 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. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels May 29, 2026
@steipete steipete force-pushed the feat/fal-krea-image-models branch from 9b039f0 to 60c842e Compare May 29, 2026 02:38

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 60c842ee3c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +209 to +210
supportsCount: false,
supportsOutputFormat: false,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Expose Krea single-output limits in capabilities

Because the Krea schema is marked as supportsCount: false/supportsOutputFormat: false only inside the fal provider, the public capability surface still advertises the fal-wide maxCount: 4 and output formats. For fal/krea/v2/... requests with count: 2 or outputFormat: "jpeg", the tool/runtime validation therefore lets the request reach generateImage(), where this provider throws and the runtime catches it as a provider failure, potentially falling back to another image provider instead of rejecting the unsupported Krea option before provider execution.

Useful? React with 👍 / 👎.

@steipete steipete force-pushed the feat/fal-krea-image-models branch from 60c842e to 44c514b Compare May 29, 2026 02:53

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 44c514b05a

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

}) {
if (params.schema.geometry === "native_aspect_ratio") {
if (params.resolution && params.schema.referenceImages === "image_style_references") {
throw new Error("fal Krea 2 supports aspectRatio but not resolution overrides");

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Reject Krea resolution before provider failover

When a Krea model is selected with an explicit resolution and configured image-generation fallbacks, this provider-level throw is caught by generateImage() as an ordinary provider failure, so the request can continue to a different provider instead of deterministically rejecting the unsupported Krea option. The public capability surface still advertises fal resolutions globally, so callers are allowed to submit resolution: "1K"/"2K"/"4K" for Krea until this late error path.

Useful? React with 👍 / 👎.

@steipete steipete merged commit d503ec5 into main May 29, 2026
116 of 118 checks passed
@steipete steipete deleted the feat/fal-krea-image-models branch May 29, 2026 02:58
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 29, 2026
* feat: add fal krea image model schemas

* fix: support fal model-specific aspect ratios

* fix: preserve fal native auto aspect ratio

* fix: honor image model-specific geometry
eleboucher pushed a commit to eleboucher/homelab that referenced this pull request May 31, 2026
…026.5.28) (#759)

This PR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [ghcr.io/openclaw/openclaw](https://openclaw.ai) ([source](https://github.com/openclaw/openclaw)) | patch | `2026.5.27` → `2026.5.28` |

---

### Release Notes

<details>
<summary>openclaw/openclaw (ghcr.io/openclaw/openclaw)</summary>

### [`v2026.5.28`](https://github.com/openclaw/openclaw/blob/HEAD/CHANGELOG.md#2026528)

[Compare Source](openclaw/openclaw@v2026.5.27...v2026.5.28)

##### Highlights

- Agent and Codex runtime recovery is steadier: subagents keep cwd/workspace separation, hook context stays prompt-local, session locks release on timeout abort while live OpenClaw locks survive cleanup, stale restart continuations are avoided, and Codex app-server/helper failures no longer tear down shared runtime state. ([#&#8203;87218](openclaw/openclaw#87218), [#&#8203;86875](openclaw/openclaw#86875), [#&#8203;87409](openclaw/openclaw#87409), [#&#8203;87399](openclaw/openclaw#87399), [#&#8203;87375](openclaw/openclaw#87375), [#&#8203;88129](openclaw/openclaw#88129))
- Channel delivery and session identity got safer across outbound plugin hooks, Matrix room ids, iMessage reactions/approvals, Slack final replies, Discord recovered tool warnings, runtime-config message actions, WhatsApp profile auth roots, Telegram polling, and Microsoft Teams service URL trust checks. ([#&#8203;73706](openclaw/openclaw#73706), [#&#8203;75670](openclaw/openclaw#75670), [#&#8203;87366](openclaw/openclaw#87366), [#&#8203;87451](openclaw/openclaw#87451), [#&#8203;87334](openclaw/openclaw#87334), [#&#8203;84535](openclaw/openclaw#84535), [#&#8203;82492](openclaw/openclaw#82492), [#&#8203;83304](openclaw/openclaw#83304), [#&#8203;87160](openclaw/openclaw#87160))
- Mobile and chat surfaces got a broader refresh: the iOS Pro UI, hosted push relay default, realtime Talk tab playback, Gateway chat transport, onboarding, Talk permissions, WebChat reconnect delivery, and session picker behavior now preserve more state across reconnects and empty searches. ([#&#8203;87367](openclaw/openclaw#87367), [#&#8203;87531](openclaw/openclaw#87531), [#&#8203;87682](openclaw/openclaw#87682), [#&#8203;88096](openclaw/openclaw#88096), [#&#8203;88105](openclaw/openclaw#88105)) Thanks [@&#8203;ngutman](https://github.com/ngutman) and [@&#8203;BunsDev](https://github.com/BunsDev).
- Browser, channel, and automation inputs are stricter: Browser tool timeouts, viewport/tab indices, Gateway ports, cron retry handling, Discord component ids, schema array refs, Telegram callback pages, and channel progress callbacks now reject malformed values earlier and preserve the intended delivery context. ([#&#8203;82887](openclaw/openclaw#82887))
- Provider, media, and document coverage expands with Claude Opus 4.8, Fal Krea image schemas, NVIDIA featured models, MiniMax streaming music responses, encrypted PDF extraction, voice model catalogs, GitHub Copilot agent runtime support, and a Codex Supervisor plugin path for delegated Codex workflows. ([#&#8203;87845](openclaw/openclaw#87845), [#&#8203;87890](openclaw/openclaw#87890), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764), [#&#8203;87751](openclaw/openclaw#87751), [#&#8203;87794](openclaw/openclaw#87794))
- CLI, auth, doctor, and provider paths fail faster and recover more clearly: malformed numeric/version options are rejected, workspace dotenv provider credentials are ignored, heartbeat defaults, OAuth/token lifetimes, and local service startup requests are bounded, agent auth health labels are clearer, legacy `api_key` auth profiles migrate to canonical form, and restart guidance is actionable. ([#&#8203;87398](openclaw/openclaw#87398), [#&#8203;86281](openclaw/openclaw#86281), [#&#8203;87361](openclaw/openclaw#87361), [#&#8203;88133](openclaw/openclaw#88133), [#&#8203;83655](openclaw/openclaw#83655), [#&#8203;87559](openclaw/openclaw#87559), [#&#8203;88088](openclaw/openclaw#88088), [#&#8203;85924](openclaw/openclaw#85924)) Thanks [@&#8203;vincentkoc](https://github.com/vincentkoc) and [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- Plugin and Gateway hot paths do less repeated work while preserving cache correctness for install records, config JSON parsing, tool search catalogs, session stores, manifest model rows, auto-enabled plugin config, browser tokens, viewer assets, and release-split external plugin packages. ([#&#8203;86699](openclaw/openclaw#86699))
- Release, QA, and E2E validation now bound more log, artifact, harness, and cross-OS waits so failing lanes produce proof instead of hanging or false-greening.

##### Changes

- Status: show active subagent details in status output.
- Diffs: split the default language pack and expand default Diffs language coverage while keeping the host floor aligned. ([#&#8203;87370](openclaw/openclaw#87370), [#&#8203;87372](openclaw/openclaw#87372)) Thanks [@&#8203;RomneyDa](https://github.com/RomneyDa).
- ClawHub: add plugin display names plus skill verification and trust surfaces. ([#&#8203;87354](openclaw/openclaw#87354), [#&#8203;86699](openclaw/openclaw#86699)) Thanks [@&#8203;thewilloftheshadow](https://github.com/thewilloftheshadow) and [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen).
- iOS: refresh the dev app with Pro Command, Chat, Agents, Settings, hosted push relay defaults, and realtime Talk playback wired to gateway sessions, diagnostics, chat, and realtime Talk. ([#&#8203;87367](openclaw/openclaw#87367), [#&#8203;88096](openclaw/openclaw#88096), [#&#8203;88105](openclaw/openclaw#88105)) Thanks [@&#8203;Solvely-Colin](https://github.com/Solvely-Colin) and [@&#8203;ngutman](https://github.com/ngutman).
- Docs: clarify Codex computer-use setup, paste-token stdin auth setup, macOS gateway sleep troubleshooting, native Codex hook relay recovery, container model auth, install deployment cards, device-token admin gating, CLI setup flow compatibility, Notte cloud browser CDP setup, and backport targets. ([#&#8203;87313](openclaw/openclaw#87313), [#&#8203;63050](openclaw/openclaw#63050), [#&#8203;87685](openclaw/openclaw#87685)) Thanks [@&#8203;bdjben](https://github.com/bdjben), [@&#8203;liaoandi](https://github.com/liaoandi), and [@&#8203;thewilloftheshadow](https://github.com/thewilloftheshadow).
- PDF/tools: use ClawPDF for PDF extraction, support encrypted PDF extraction, and surface MCP structured content in agent tool results. ([#&#8203;87670](openclaw/openclaw#87670), [#&#8203;87751](openclaw/openclaw#87751))
- Providers: add Claude Opus 4.8 support, Fal Krea image model schemas, NVIDIA featured model catalogs, MiniMax streaming music responses, and provider-backed voice model catalogs. ([#&#8203;87845](openclaw/openclaw#87845), [#&#8203;87890](openclaw/openclaw#87890), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764), [#&#8203;87794](openclaw/openclaw#87794)) Thanks [@&#8203;eleqtrizit](https://github.com/eleqtrizit) and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Codex/GitHub: add the GitHub Copilot agent runtime and the Codex Supervisor plugin package.
- Plugins: externalize GitHub Copilot and Tokenjuice as official install-on-demand plugins with npm and ClawHub publish metadata.
- Workboard: add agent coordination tools for tracking and handing off active agent work.
- Discord: show commentary in progress drafts so live Discord runs expose useful in-progress context. ([#&#8203;85200](openclaw/openclaw#85200))
- Plugin SDK: add a reply payload sending hook for plugins that need to deliver channel-owned replies and flatten package types for SDK declarations. ([#&#8203;82823](openclaw/openclaw#82823), [#&#8203;87165](openclaw/openclaw#87165)) Thanks [@&#8203;piersonr](https://github.com/piersonr) and [@&#8203;RomneyDa](https://github.com/RomneyDa).
- Policy: add policy comparison, ingress-channel conformance, and sandbox-posture conformance checks. ([#&#8203;85572](openclaw/openclaw#85572), [#&#8203;85744](openclaw/openclaw#85744), [#&#8203;86768](openclaw/openclaw#86768))

##### Fixes

- Agents: fall back to local config pruning when the optional `agents delete` Gateway probe cannot authenticate, so offline installs can still delete agents without removing shared workspaces.
- Tighten phone-control mutation authorization \[AI]. ([#&#8203;87150](openclaw/openclaw#87150)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987).
- Clarify directive persistence authorization policy \[AI]. ([#&#8203;86369](openclaw/openclaw#86369)) Thanks [@&#8203;pgondhi987](https://github.com/pgondhi987).
- Agents/Codex: keep spawned agent cwd/workspace state separated, forward ACP spawn attachments, keep hook context prompt-local, release session locks on timeout abort and runtime teardown without deleting live OpenClaw-owned locks during cleanup, avoid session event queue self-wait, clean up exec abort listeners, stream assistant deltas incrementally, recover raw missing-thread compaction failures, preserve rotated compaction session identity, keep compaction-timeout snapshots continuable, preserve shared app-server state across startup or helper failures, keep native hook relay alive across restarts and prune stale bridge files, close native hook relay replacement races, keep Claude live tool progress visible for watchdog recovery, suppress abandoned requester completion handoff, route workspace memory through tools, resolve Codex runtime models first, report quarantined dynamic tools, format `skills` command output, bind node auto-review to prepared plans, retry Claude CLI transcript probes, and bound compaction/steering retries. ([#&#8203;87218](openclaw/openclaw#87218), [#&#8203;86875](openclaw/openclaw#86875), [#&#8203;86123](openclaw/openclaw#86123), [#&#8203;88129](openclaw/openclaw#88129), [#&#8203;87399](openclaw/openclaw#87399), [#&#8203;87375](openclaw/openclaw#87375), [#&#8203;72574](openclaw/openclaw#72574), [#&#8203;87383](openclaw/openclaw#87383), [#&#8203;87400](openclaw/openclaw#87400), [#&#8203;83022](openclaw/openclaw#83022), [#&#8203;87671](openclaw/openclaw#87671), [#&#8203;87738](openclaw/openclaw#87738), [#&#8203;87747](openclaw/openclaw#87747), [#&#8203;87706](openclaw/openclaw#87706), [#&#8203;87546](openclaw/openclaw#87546), [#&#8203;87541](openclaw/openclaw#87541), [#&#8203;81048](openclaw/openclaw#81048)) Thanks [@&#8203;mbelinky](https://github.com/mbelinky), [@&#8203;Alix-007](https://github.com/Alix-007), [@&#8203;luoyanglang](https://github.com/luoyanglang), [@&#8203;yetval](https://github.com/yetval), [@&#8203;sjf](https://github.com/sjf), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;benjamin1492](https://github.com/benjamin1492), [@&#8203;c19354837](https://github.com/c19354837), [@&#8203;fuller-stack-dev](https://github.com/fuller-stack-dev), [@&#8203;pfrederiksen](https://github.com/pfrederiksen), and [@&#8203;dodge1218](https://github.com/dodge1218).
- Codex Supervisor: keep real-home app-server MCP session listing on the loaded state path, bound stored history scans, and close WebSocket probes cleanly.
- Channels: thread canonical session keys into outbound hooks, preserve Matrix room-id case, keep fallback tool warnings mention-inert, retain delivered Slack final replies during late cleanup, continue iMessage polling after denied reactions, suppress duplicate native exec approvals, resolve Gateway message actions against the active runtime config, preserve Telegram SecretRef prompt config and polling keepalives, preserve WhatsApp profile auth roots, QR display, document filenames, and plugin hook config, suppress Discord recovered tool warnings, preserve the Discord voice outbound helper, cap Discord/Signal/Zalo channel request and container timeouts, and block untrusted Teams service URLs while keeping TeamsSDK patterns aligned. ([#&#8203;73706](openclaw/openclaw#73706), [#&#8203;75670](openclaw/openclaw#75670), [#&#8203;87366](openclaw/openclaw#87366), [#&#8203;87451](openclaw/openclaw#87451), [#&#8203;87465](openclaw/openclaw#87465), [#&#8203;87334](openclaw/openclaw#87334), [#&#8203;84535](openclaw/openclaw#84535), [#&#8203;76262](openclaw/openclaw#76262), [#&#8203;83304](openclaw/openclaw#83304), [#&#8203;82492](openclaw/openclaw#82492), [#&#8203;87581](openclaw/openclaw#87581), [#&#8203;77114](openclaw/openclaw#77114), [#&#8203;86426](openclaw/openclaw#86426), [#&#8203;85529](openclaw/openclaw#85529), [#&#8203;87160](openclaw/openclaw#87160)) Thanks [@&#8203;zeroaltitude](https://github.com/zeroaltitude), [@&#8203;lukeboyett](https://github.com/lukeboyett), [@&#8203;jarvis-mns1](https://github.com/jarvis-mns1), [@&#8203;xiaotian](https://github.com/xiaotian), [@&#8203;funmerlin](https://github.com/funmerlin), [@&#8203;joshavant](https://github.com/joshavant), [@&#8203;eleqtrizit](https://github.com/eleqtrizit), [@&#8203;heyitsaamir](https://github.com/heyitsaamir), [@&#8203;amittell](https://github.com/amittell), [@&#8203;lidge-jun](https://github.com/lidge-jun), [@&#8203;liorb-mountapps](https://github.com/liorb-mountapps), [@&#8203;masatohoshino](https://github.com/masatohoshino), [@&#8203;bladin](https://github.com/bladin), and [@&#8203;giodl73-repo](https://github.com/giodl73-repo).
- CLI/auth/doctor/providers: reject malformed numeric/timeout/subcommand-version inputs, ignore workspace dotenv provider credentials, wait for respawn child shutdown, bound heartbeat defaults plus Codex, GitHub Copilot, OpenAI, Anthropic, Google, Feishu, LM Studio, MiniMax, Xiaomi TTS, and local-provider OAuth/token/model requests, harden Codex auth probes, label auth health by agent, preserve explicit agentRuntime pins during Codex model migration, warm provider auth off the main thread, honor Codex response timeouts, stop migrating current Claude Haiku 4.5 profiles to Sonnet, bound local service startup, resolve GPT-5.5 without cached catalog, migrate legacy memory auto-provider config, rewrite non-canonical `api_key` auth profiles, and make doctor restart follow-ups actionable. ([#&#8203;87398](openclaw/openclaw#87398), [#&#8203;86281](openclaw/openclaw#86281), [#&#8203;87361](openclaw/openclaw#87361), [#&#8203;88133](openclaw/openclaw#88133), [#&#8203;83655](openclaw/openclaw#83655), [#&#8203;87559](openclaw/openclaw#87559), [#&#8203;87719](openclaw/openclaw#87719), [#&#8203;88088](openclaw/openclaw#88088), [#&#8203;85924](openclaw/openclaw#85924), [#&#8203;84362](openclaw/openclaw#84362)) Thanks [@&#8203;Patrick-Erichsen](https://github.com/Patrick-Erichsen), [@&#8203;samzong](https://github.com/samzong), [@&#8203;giodl73-repo](https://github.com/giodl73-repo), [@&#8203;alkor2000](https://github.com/alkor2000), [@&#8203;mmaps](https://github.com/mmaps), [@&#8203;nxmxbbd](https://github.com/nxmxbbd), and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Gateway/security/session state: expire browser tokens after auth rotation, scope assistant idempotency dedupe, drain probe client closes, avoid stale restart continuation reuse, preserve retry-after fallbacks and stale rate-limit cooldown probes, bound webchat image and artifact transcript scans, include seconds in inbound metadata timestamps, clear completed session active runs, clear stale chat stream buffers, and evict current plugin-state namespaces at row caps. ([#&#8203;87810](openclaw/openclaw#87810), [#&#8203;87833](openclaw/openclaw#87833), [#&#8203;75089](openclaw/openclaw#75089)) Thanks [@&#8203;joshavant](https://github.com/joshavant) and [@&#8203;litang9](https://github.com/litang9).
- Config/parsing/network: reject partial numeric parsing, parse provider/Discord retry headers and dates strictly, honor IPv6 and bare IPv6 `no_proxy` entries, preserve empty plugin allowlists, canonicalize secret target array indexes, and reject malformed media content lengths, inspected TCP ports, marketplace content lengths, cron epochs, sandbox stat fields, unsafe duration values, empty config path segments, noncanonical schema array refs, unsafe Telegram callback pages, and invalid Teams attachment-fetch DNS targets. ([#&#8203;87883](openclaw/openclaw#87883)) Thanks [@&#8203;zhangguiping-xydt](https://github.com/zhangguiping-xydt).
- Browser/input hardening: reject invalid tab indexes, excessive viewport resizes, explicit zero CDP ports, malformed geolocation options, unsafe screenshot or permission-grant timeouts, loose response-body limits, invalid cookie expiries, and non-finite Browser tool delays/timeouts.
- Cron/automation: retry recurring jobs after transient model rate limits before waiting for the next scheduled slot, and preflight model fallbacks before skipping scheduled work. ([#&#8203;82887](openclaw/openclaw#82887)) Thanks [@&#8203;chen-zhang-cs-code](https://github.com/chen-zhang-cs-code).
- Auto-reply/directives: respect provider and relayed channel metadata during directive persistence so channel-originated decisions keep their intended context. ([#&#8203;87683](openclaw/openclaw#87683))
- WhatsApp: resolve the auth directory from the active profile so profile-scoped WhatsApp installs do not drift to the wrong credential root. ([#&#8203;82492](openclaw/openclaw#82492)) Thanks [@&#8203;lidge-jun](https://github.com/lidge-jun).
- Gateway/session state: clear completed session active runs, avoid cold-loading providers for MCP inventory, cache single-session child indexes, cap handshake timers, and bound preauth, auth-guard, media, transcript, readiness, and port options.
- Channels/replies: preserve channel-owned progress callbacks when verbose output is off, keep group-room progress suppression intact, prefer external session delivery context, escape Discord component id delimiters, force final TUI chat repaints, show Slack reasoning previews, and normalize Discord/Matrix/Mattermost channel numeric options. ([#&#8203;87476](openclaw/openclaw#87476), [#&#8203;87423](openclaw/openclaw#87423))
- Agents/tool args: harden smart-quoted argument repair for edit arrays and exact escaped arguments so model-produced tool calls recover without corrupting valid input. ([#&#8203;86611](openclaw/openclaw#86611)) Thanks [@&#8203;ferminquant](https://github.com/ferminquant).
- Providers/agents: preserve seeded Anthropic signatures, preserve signed thinking payloads, concatenate signature-delta chunks, preserve DeepSeek `reasoning_content` replay across tier suffixes, apply OpenRouter strict9 ids to Mistral routes, promote Ollama plain-text tool calls, load NVIDIA featured model catalogs, stream MiniMax music generation responses, and recover empty preflight compaction. ([#&#8203;87593](openclaw/openclaw#87593), [#&#8203;87493](openclaw/openclaw#87493), [#&#8203;80775](openclaw/openclaw#80775), [#&#8203;84764](openclaw/openclaw#84764)) Thanks [@&#8203;Pluviobyte](https://github.com/Pluviobyte) and [@&#8203;eleqtrizit](https://github.com/eleqtrizit).
- Media/images: skip CLI image cache refs when resolving generated images, allow trusted generated HTML attachments, and bound generated video downloads so stale refs and slow providers fail cleanly. ([#&#8203;87523](openclaw/openclaw#87523), [#&#8203;87982](openclaw/openclaw#87982))
- File transfer: handle late tar stdin pipe errors after archive validation or unpacking has already settled.
- Performance: trust install-record caches between reloads, prefer native JSON parsing, reuse unchanged tool-search catalogs, reuse gateway session and plugin metadata paths, skip unchanged store serialization, patch single-entry session writes, add precomputed session patch writers, reduce store clone allocations, cache manifest model catalog rows and auto-enabled plugin config, avoid full session snapshots for entry reads, defer configured Slack full startup, prefer bundled plugin dist entries, and slim current metadata identity caches. ([#&#8203;87760](openclaw/openclaw#87760))
- Docker/release/QA: package runtime workspace templates, stream cross-OS served artifacts, preserve sparse Crabbox run artifacts, isolate npm plugin installs per package, reject incompatible package plugin API installs, drop the leftover root Sharp dependency from package manifests after the Rastermill migration, bound OpenClaw instance logs, plugin gauntlet relay logs, MCP channel buffers, kitchen-sink scans, agent-turn assertions, QA-Lab credential broker calls, QA Matrix substrate requests, and release scenario logs, and keep release/google live guards current. ([#&#8203;87647](openclaw/openclaw#87647), [#&#8203;87477](openclaw/openclaw#87477)) Thanks [@&#8203;rohitjavvadi](https://github.com/rohitjavvadi) and [@&#8203;vincentkoc](https://github.com/vincentkoc).
- Release/CI: bound manual git fetches, ClawHub verifier responses, ClawHub owner metadata, dependency-guard error bodies, Parallels limits, startup/test/memory budget parsing, and diffs viewer build warnings so release lanes fail with useful proof instead of hanging. ([#&#8203;87839](openclaw/openclaw#87839))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these updates again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMDEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjEwMS4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS9jb250YWluZXIiLCJ0eXBlL3BhdGNoIl19-->

Reviewed-on: https://git.erwanleboucher.dev/eleboucher/homelab/pulls/759
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
* feat: add fal krea image model schemas

* fix: support fal model-specific aspect ratios

* fix: preserve fal native auto aspect ratio

* fix: honor image model-specific geometry
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
* feat: add fal krea image model schemas

* fix: support fal model-specific aspect ratios

* fix: preserve fal native auto aspect ratio

* fix: honor image model-specific geometry
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agents Agent runtime and tooling docs Improvements or additions to documentation extensions: fal maintainer Maintainer-authored PR merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. size: L status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant