Commit Graph

30460 Commits

Author SHA1 Message Date
clawsweeper[bot]
69255f8f32 fix(gateway): defer provider auth prewarm after startup (#85369)
Summary:
- The PR moves gateway provider auth-state prewarm into cancelable post-ready gateway lifetime work, uses current runtime config for delayed warms, and adds related gateway/provider-auth tests plus a changelog entry.
- Reproducibility: no. high-confidence runtime reproduction was run in this review. Source inspection shows th ... th on current main, and the source PR supplies live after-fix proof for the focused startup-ordering slice.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(gateway): defer provider auth prewarm after startup

Validation:
- ClawSweeper review passed for head 31ea4288e3.
- Required merge gates passed before the squash merge.

Prepared head SHA: 31ea4288e3
Review: https://github.com/openclaw/openclaw/pull/85369#issuecomment-4519123491

Co-authored-by: Bob <dutifulbob@gmail.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: osolmaz
Co-authored-by: osolmaz <2453968+osolmaz@users.noreply.github.com>
2026-05-22 14:14:50 +00:00
VACInc
683ad75b31 fix(talk): stabilize realtime voice consults
Stabilize realtime Talk playback, transcript ordering, and consult routing across Android, Web, and the gateway relay.

- serialize Android realtime playback and transcript updates
- add opt-in forced consult routing for Talk realtime sessions
- keep web/gateway consult turns behind OpenClaw results with ordered transcript bubbles
- document the new `talk.realtime.consultRouting` config and keep prompt wording generic

Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
2026-05-22 15:12:39 +01:00
Vincent Koc
bdcaac06c6 fix(diagnostics): bound diagnostic buffers 2026-05-22 22:01:41 +08:00
Mason Huang
6ea907cec1 fix(cli): recover replaced device approvals (#85342)
Summary:
- The PR teaches `openclaw devices approve <requestId>` to approve a compatible same-device replacement request during local fallback and adds focused CLI, infra, and changelog coverage.
- Reproducibility: yes. Source inspection shows current main rejects the gateway's replacement requestId as a  ...  adds focused infra and CLI tests for the churn path; I did not run tests because this review is read-only.

Automerge notes:
- PR branch already contained follow-up commit before automerge: docs: note device approval recovery

Validation:
- ClawSweeper review passed for head 1d2f2e9b2f.
- Required merge gates passed before the squash merge.

Prepared head SHA: 1d2f2e9b2f
Review: https://github.com/openclaw/openclaw/pull/85342#issuecomment-4518449317

Co-authored-by: masonxhuang <masonxhuang@tencent.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: hxy91819
Co-authored-by: hxy91819 <8814856+hxy91819@users.noreply.github.com>
2026-05-22 13:44:15 +00:00
zhang-guiping
937a756f7f fix(runtime-llm): avoid duplicate provider prefix in allowlist diagnostics (#84946)
normalizeAllowedModelRef() and the resolved override ref interpolated
${provider}/${model} after normalizeModelRef(), so a provider-qualified
model id like openrouter/gpt-5.4-mini surfaced as
openrouter/openrouter/gpt-5.4-mini in the allowlist set and policy
denial message, masking the actionable model ref.

Route both sites through modelKey() (src/agents/model-ref-shared.ts)
so the provider segment is collapsed when the model id already starts
with it. Add regression tests covering allowlist hit and denial paths
for the OpenRouter shape.

Fixes #84887
2026-05-22 21:36:13 +08:00
Jayesh Betala
66d1d13889 fix(gateway): include openclaw bin in service PATH (#84475)
* fix(gateway): include openclaw bin in service PATH

* fix(doctor): accept expected service PATH

* docs(changelog): mention managed service PATH bin fix

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-05-22 21:28:50 +08:00
googlerest
ba86716999 fix(gateway): handle concurrent launchd bootstrap restart race (#84722)
* Handle concurrent launchd bootstrap restart

* docs(changelog): mention launchd bootstrap restart race fix

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-05-22 21:21:23 +08:00
Peter Steinberger
04ebdc6da5 test(release): align prerelease validation baselines 2026-05-22 14:15:46 +01:00
NianJiu
fc7a531f6c fix(gateway): harden launchd reload handoff race recovery (#84641)
* fix(gateway): harden launchd reload handoff race recovery

* docs(changelog): mention launchd reload handoff race fix

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-05-22 21:13:26 +08:00
Huvee
ca2b9ad289 fix: honor per-model provider transport overrides (#80488)
Summary:
- Honor per-model api/baseUrl overrides during custom provider auth hook lookup and transport selection.
- Keep models-add metadata safeguards intact and add focused auth/model resolver regression coverage.
- Add maintainer changelog credit for @huveewomg.

Verification:
- git diff --check
- GitHub CI green on 277629e992
- GitHub CodeQL green on 277629e992
- GitHub CodeQL Critical Quality green on 277629e992
- GitHub Real behavior proof green on 277629e992
- Local focused Vitest was stopped after 8 minutes on a busy host without producing a result; PR CI supplied the final proof.

Co-authored-by: huveewomg <wongrenthou1265@gmail.com>
2026-05-22 14:12:11 +01:00
openperf
19ff77e9c9 fix(skills): document watcher edge cases, add teardown/rebuild tests, add changelog 2026-05-22 14:10:56 +01:00
openperf
bb73f0a5c3 fix(skills): type watcher mock calls in dedupe regression tests 2026-05-22 14:10:56 +01:00
openperf
3e94290460 fix(skills): dedupe shared-directory watchers across agent workspaces (#84968) 2026-05-22 14:10:56 +01:00
Peter Steinberger
47d66fe343 fix(infra): allow macos browser open over ssh env (#85340) 2026-05-22 14:07:19 +01:00
Vincent Koc
a15797ad11 fix(update): preserve package service state during cutover (#83026)
* fix(update): preserve package service state during cutover

* docs(changelog): mention package service state cutover fix
2026-05-22 21:02:58 +08:00
Vincent Koc
07e61fc847 fix(gateway): broadcast agent-run error payloads (#85355) 2026-05-22 20:58:36 +08:00
Peter Steinberger
a00c58363a fix(cli): suppress systemd hints for live gateway (#85336)
* fix(cli): suppress systemd hints for live gateway

* test(cli): type systemd hint mock
2026-05-22 13:52:21 +01:00
Peter Steinberger
fc47c1f55e fix(cli): honor agent for model auth logout (#85326) 2026-05-22 13:46:07 +01:00
Tung, Hsiao-Yu
4a9138556e fix(gateway): eager-load lifecycle runtime to survive in-place upgrades (#84890)
* fix(gateway): eager-load lifecycle runtime to survive in-place upgrades

After a package-swap update (e.g. via update.run), dist/ chunk hashes
rotate while the gateway is still running. The SIGUSR1 listener's first
dynamic import of the lifecycle runtime module then throws
ERR_MODULE_NOT_FOUND inside its async IIFE, silently rejects, and leaves
restart.ts's emittedRestartToken permanently unconsumed. From that point
every scheduleGatewaySigusr1Restart() — including the one update.run
schedules for itself — returns { coalesced: true } without scheduling
anything, and the gateway never restarts until manually kickstarted.

Fix:

1. Eagerly resolve the lifecycle runtime module as the first statement
   of runGatewayLoop, before any signal listener is installed. lifecycle.runtime
   is a 36-line re-export hub, so loading it once pulls the entire restart
   / respawn / queue / sentinel / handoff graph into memory, immune to
   later disk rotation. If the module is missing at startup, fail fast
   with a loud error so the supervisor can recover instead of running
   half-broken.

2. Defense in depth: catch SIGUSR1 IIFE rejections and call
   markGatewaySigusr1RestartHandled() via the eagerly captured reference,
   so a transient listener failure doesn't permanently stick the restart
   token.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* docs(changelog): mention lifecycle restart eager load

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-05-22 20:44:05 +08:00
Peter Steinberger
111bad1065 fix(doctor): point codex asset warning at migrate plan (#85324) 2026-05-22 13:40:15 +01:00
Jason O'Neal
1bafc23ae3 fix(update): harden managed handoff cwd (#83875)
* fix(update): harden managed handoff cwd

* docs(changelog): mention managed update handoff cwd fix

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-05-22 20:35:17 +08:00
Peter Steinberger
ebfb834dcd fix(cron): classify network retry errors (#85344) 2026-05-22 13:07:40 +01:00
Peter Steinberger
8b0537c409 test: refresh shrinkwrap after rebase 2026-05-22 12:56:10 +01:00
Peter Steinberger
249f79be42 fix: make bundled plugin packages portable 2026-05-22 12:56:10 +01:00
Peter Steinberger
86faf654db fix: keep bundled plugin peers nested 2026-05-22 12:56:10 +01:00
Eva
56308a7144 fix: limit subagent bootstrap defaults
Limit sub-agent bootstrap context to AGENTS.md and TOOLS.md without adding a new config surface. Preserve the existing cron minimal bootstrap behavior.

Co-authored-by: Eva (agent) <eva+agent-78055@100yen.org>
2026-05-22 12:55:42 +01:00
Peter Steinberger
89c59a89fb fix(agents): preserve OpenAI transport error metadata 2026-05-22 12:38:06 +01:00
Neerav Makwana
0a95e53602 fix(messages): strip unsupported citation markers (#85204) (thanks @neeravmakwana)
Co-authored-by: Neerav Makwana <261249544+neeravmakwana@users.noreply.github.com>
2026-05-22 12:33:03 +01:00
Chunyue Wang
136c927140 fix(gateway): close child ACP sessions on parent reset/delete
Close child ACP runtimes during parent reset/delete through a shared direct-child session lookup, covering spawnedBy and parentSessionKey lineage across combined agent stores.

Also adds focused regression coverage for direct child discovery, non-ACP/unrelated negatives, reset cleanup, delete cleanup, cross-store children, and concurrent stuck-child cleanup.

Co-authored-by: openperf <16864032@qq.com>
2026-05-22 12:29:24 +01:00
clawsweeper[bot]
77a1b7625d fix: preserve Google Gemini 3 cron thinking (#85300)
Summary:
- The branch adds a Google provider thinking-policy resolver and opt-in profile flag, updates shared thinking validation and cron/proof-policy tests, and adjusts ClawSweeper proof parsing.
- Reproducibility: yes. source-reproducible: current main applies the generic off-only profile before provider ... figured thinking through that resolver. I did not execute a live systemd cron run in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix: preserve Google Gemini 3 cron thinking

Validation:
- ClawSweeper review passed for head a6cd2e826e.
- Required merge gates passed before the squash merge.

Prepared head SHA: a6cd2e826e
Review: https://github.com/openclaw/openclaw/pull/85300#issuecomment-4517662575

Co-authored-by: Neerav Makwana <261249544+neeravmakwana@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
2026-05-22 11:21:57 +00:00
Peter Steinberger
c9a0f03dd7 feat(plugin-sdk): add generic channel poll sender (#85299)
* feat(plugin-sdk): add generic channel poll sender

* test(channels): follow durable capability list

* test(channels): update poll capability expectations

* fix(channels): normalize poll receipt parts
2026-05-22 12:16:07 +01:00
Peter Steinberger
0ddf51cf71 fix(agents): preserve OpenAI reasoning token usage 2026-05-22 12:14:12 +01:00
Peter Steinberger
6b1c8687b5 fix(plugins): resolve native plugin sdk aliases (#85298)
* fix(plugins): resolve native plugin sdk aliases

* fix(plugins): satisfy native resolver lint

* fix(plugins): keep native sdk aliases on js artifacts
2026-05-22 12:05:37 +01:00
Vincent Koc
03f61cd1b5 fix(update): keep service logs out of json output 2026-05-22 12:46:00 +02:00
Vincent Koc
ff79299d68 fix(agent): retry transient gateway handshake closes 2026-05-22 12:24:50 +02:00
Krzysztof Probola
8523e0930e fix(codex): keep interrupted turns visible-answer eligible (#84494)
* fix(codex): keep interrupted turns visible-answer eligible

* docs(changelog): note codex interrupted recovery

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-05-22 18:22:20 +08:00
Vincent Koc
6bd430ee35 test(agents): narrow bundle mcp e2e setup 2026-05-22 11:39:24 +02:00
Peter Steinberger
70dd31506b fix: land code-mode structured worker errors (#83444) (thanks @Kaspre) 2026-05-22 10:36:18 +01:00
Kaspre
edab653178 fix(code-mode): return structured worker error codes 2026-05-22 10:36:18 +01:00
Peter Steinberger
0d8c9ca914 fix: preserve route-bound direct thread events 2026-05-22 10:32:12 +01:00
Peter Steinberger
0acfb7ba13 fix: route direct thread event wakes to main DMs 2026-05-22 10:32:12 +01:00
Peter Steinberger
4ee8a2ac2e fix: break plugin metadata snapshot cycle 2026-05-22 10:32:12 +01:00
Peter Steinberger
7b489560f3 test: align exec event routing proof (#83743) (thanks @Kaspre) 2026-05-22 10:32:12 +01:00
Kaspre
37207c6925 test node exec event wake metadata 2026-05-22 10:32:12 +01:00
Kaspre
e53612a639 fix heartbeat event routing for main-scoped DMs 2026-05-22 10:32:12 +01:00
Vincent Koc
2b1c01f769 test(gateway): bind auth-free websocket harness to loopback 2026-05-22 11:17:22 +02:00
Vincent Koc
a12e3022db test(plugins): keep npm peer prune mock directory-safe 2026-05-22 11:12:17 +02:00
Alex Knight
5d01be1070 Add chat picker search and pagination 2026-05-22 19:07:21 +10:00
Vincent Koc
bf64de9191 fix(plugins): keep derived metadata snapshots fresh
Keep derived plugin metadata snapshots out of the process memo/current snapshot cache so newly added plugins under derived discovery paths are found without restart.
2026-05-22 17:00:09 +08:00
吴杨帆
a80476fbe9 fix(telegram): preserve fenced code languages (#85209)
Co-authored-by: wuyangfan <yangfan.wu@succaiss.com>
2026-05-22 09:59:06 +01:00