Commit Graph

66940 Commits

Author SHA1 Message Date
Shakker
c05d0d5bbf fix: restore dreaming env after setup 2026-06-26 11:12:52 +01:00
Shakker
535af4452b test: scope dreaming env batch one 2026-06-26 11:12:04 +01:00
Jesse Merhi
ec737ee74d fix: rebase clawhub install trust (#81364) 2026-06-26 18:33:19 +10:00
Liu Wenyu
9a735bea03 fix(outbound): ignore empty delivery receipts (#79811) 2026-06-26 09:40:46 +02:00
Peter Steinberger
81e53202f2 fix(scripts): bypass gh wrapper shims 2026-06-26 07:51:07 +01:00
xingzhou
e9f9a68d68 fix(weixin): startAccount preserves session routing (#93686)
* fix(channels): resolve manifest account config by normalized id

* fix(routing): ignore blocked keys during normalized account lookup

* fix(routing): block normalized unsafe account keys

* test(routing): type normalized account lookup case

* trigger CI

* fix account lookup invalid key fallback

* fix(weixin): startAccount preserves session routing (#93686) (thanks @zhangguiping-xydt)

---------

Co-authored-by: sliverp <870080352@qq.com>
2026-06-26 14:36:49 +08:00
Josh Avant
db255b1154 Fix Telegram spooled claim refresh (#96962) 2026-06-26 01:30:57 -05:00
Gio Della-Libera
4fc504d321 Doctor: add lint --all (#96471)
* fix(doctor): keep audit scrub lint opt-in

* fix(doctor): keep audit lint defaults internal

* feat(doctor): add lint profiles
2026-06-25 22:26:42 -07:00
Dallin Romney
751a6c23f0 fix(signal): avoid duplicate cli missing note (#96932) 2026-06-25 21:30:44 -07:00
Dallin Romney
899f65097b ci: park timing summary collection (#96930) 2026-06-25 21:20:44 -07:00
Kevin Lin
a6a4652c70 fix(codex): expose plugin apps after delayed inventory load (#96872)
* fix(codex): refresh missing plugin app inventory

* fix(codex): honor OpenClaw app enablement overrides
2026-06-25 21:10:02 -07:00
Dallin Romney
3b292ba9d4 fix(signal): use brew for macos signal-cli install (#96909) 2026-06-25 21:08:54 -07:00
Jesse Merhi
0fdfc9f65f fix(exec): harden backend sandbox exec cleanup (#96926) 2026-06-26 13:51:52 +10:00
Josh Avant
448b7c75b6 Stabilize Google Meet chrome-node launch config (#96908) 2026-06-25 22:11:57 -05:00
joshavant
6830aa39ea fix(signal): bind approval reactions from structured deliveries 2026-06-25 20:15:58 -05:00
brokemac79
a0b397748f fix(status): restore Codex synthetic usage in status 2026-06-25 17:37:30 -07:00
brokemac79
dd0e4f6e61 fix: avoid plugin update range fallback after metadata failure (#96143)
Co-authored-by: Dallin Romney <dallinromney@gmail.com>
2026-06-25 17:15:50 -07:00
brokemac79
0da26499da fix: fallback on safe prompt timeouts (#96142) 2026-06-25 16:33:44 -07:00
brokemac79
1f941a026e fix: reload control ui on service worker update (#96141) 2026-06-25 16:33:27 -07:00
brokemac79
941e8f1ef2 fix: reset diff viewer controllers on rehydrate (#96138) 2026-06-25 16:19:30 -07:00
Renaud Cerrato
95b97e5b0b fix(exec): fail invalid explicit workdir before running (#94441)
* fix(exec): fail invalid explicit workdir before running

* test(exec): tighten invalid workdir regression

* fix(exec): clarify invalid workdir recovery

* refactor(exec): centralize workdir resolution

* test(exec): update invalid workdir assertion

* fix(exec): harden backend workdir contract

* fix(exec): map missing backend host workdirs

* fix(exec): reject control commands before workdir prep

* fix(exec): defer env hook until backend cwd validation

* chore(sdk): refresh plugin api baseline

* test(agents): drop redundant definition assertions

* test(exec): use real config workdirs

* test(exec): use tracked temp dirs

* test(openshell): keep temp setup local

* test: update temp-dir route fixture

---------

Co-authored-by: jesse-merhi <79823012+jesse-merhi@users.noreply.github.com>
2026-06-26 08:02:00 +10:00
VACInc
13ecca5408 fix(telegram): back off session init spool retries 2026-06-25 13:41:57 -07:00
Wynne668
c68484acc4 fix(gateway): report omitted chat-history messages in truncation log (#96788)
Summary:
- The PR moves Gateway `chat.history` omission accounting to a whole-pipeline reporter and adds focused helper plus real WebSocket request regression tests.
- PR surface: Source +35, Tests +219. Total +254 across 4 files.
- Reproducibility: yes. Current-main source shows the zero-count keep-last helper branch and the positive-coun ... he PR body includes a negative-control real WebSocket run where the same request test fails before the fix.

Automerge notes:
- PR branch already contained follow-up commit before automerge: fix(gateway): count unique omitted chat-history messages + prove diag…
- PR branch already contained follow-up commit before automerge: test(gateway): prove chat.history request emits omission diagnostic

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

Prepared head SHA: 414f885880
Review: https://github.com/openclaw/openclaw/pull/96788#issuecomment-4799553366

Co-authored-by: ZengWen-DT <ceng.wen@xydigit.com>
Approved-by: takhoffman
2026-06-25 20:17:27 +00:00
Ayaan Zaidi
d2da8c79d9 fix(auto-reply): serialize reply session initialization 2026-06-25 13:10:35 -07:00
NIO
1aa7cafc35 fix(github-copilot): bound model discovery and embeddings JSON response (#96499)
* fix(github-copilot): bound model discovery and embeddings JSON response reads

The GitHub Copilot embeddings plugin already bounds its error response
bodies via readResponseTextLimited, but the success JSON reads for both
model discovery and the embeddings call used unbounded response.json().
Route both through readProviderJsonResponse (16 MiB cap).

Update isCopilotSetupError to recognise the new error label prefix so
auto-selection still falls through on malformed discovery responses.
Update tests to use proper Response objects and the new error messages.

AI-assisted.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(github-copilot): use memory embedding response cap

Signed-off-by: sallyom <somalley@redhat.com>

---------

Signed-off-by: sallyom <somalley@redhat.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: sallyom <somalley@redhat.com>
2026-06-25 14:46:09 -04:00
NIO
66e2fcc6f8 fix(speech): bound TTS/STT voice-list and transcription JSON response reads (#96496)
Route success JSON reads through readProviderJsonResponse (16 MiB cap) in
azure-speech, elevenlabs, microsoft, minimax/tts, xai/stt, and
openrouter/media-understanding to prevent OOM from oversized or hostile
endpoint responses. Mirrors the response-limit campaign already applied to
other provider paths.

AI-assisted.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-25 14:32:53 -04:00
Ben Badejo
b3ac552c82 fix(codex): prefer desktop app-server for Computer Use on macOS (#96730)
* fix(codex): prefer desktop app-server for Computer Use on macOS

* fix(codex): fall back from stale desktop app-server

---------

Co-authored-by: Benjamin Badejo <ben@benbadejo.com>
2026-06-25 14:28:20 -04:00
mushuiyu886
5715b55000 fix(openrouter): bound video catalog JSON reads (#96505) 2026-06-25 14:17:01 -04:00
Radek Sienkiewicz
0247eab773 fix(cli): sync official plugins during update all (#96831)
Co-authored-by: ooiuuii <169449607+ooiuuii@users.noreply.github.com>
2026-06-25 20:13:37 +02:00
Alix-007
646e54ae35 fix(github-copilot): bound usage response (#96607)
The Copilot usage read in extensions/github-copilot/usage.ts parsed its
HTTP response with an unbounded await res.json(). A hostile or buggy
api.github.com proxy (the proxy endpoint is derived from a user-supplied
token) could stream an unbounded JSON body and drive the usage snapshot
into OOM.

Route the read through the shared readProviderJsonResponse (from
openclaw/plugin-sdk/provider-http), which enforces the 16 MiB byte cap,
cancels the stream on overflow, and wraps malformed JSON with the caller
label. Same no-helper-import-to-bounded-reader shape as the #96027 /
#96038 response-limit work.

Add a focused regression test: when the usage stream exceeds the JSON
byte cap, fetchCopilotUsage rejects with a bounded-overflow error and the
reader cancels the body mid-flight instead of buffering the full
advertised stream. Existing parse/HTTP-error cases keep passing.
2026-06-25 13:53:43 -04:00
Alix-007
d3620da3e0 fix(voyage): bound embedding-batch status, error, and non-OK responses (#96608)
The batch status read (fetchVoyageBatchStatus) parsed its response with an
unbounded await res.json(), and the batch error-file read (readVoyageBatchError)
buffered the whole body via await res.text(). On top of that, the non-OK
(4xx/5xx) diagnostic body was still read unbounded: assertVoyageResponseOk did
await res.text() before throwing, and the non-OK output-file branch in
runVoyageEmbeddingBatches did the same. Voyage base URLs are user-supplied and
reachable via SSRF, so a misbehaving or hostile endpoint could stream an
unbounded body into memory on any of these paths before parsing.

Route the status JSON through the shared readProviderJsonResponse, the error
file through readResponseWithLimit, and now the non-OK diagnostic body through
readResponseWithLimit as well, all under a single 16 MiB cap, cancelling the
stream on overflow before decode/parse. assertVoyageResponseOk preserves its
original "${context}: ${status} ${text}" diagnostic shape for under-cap bodies
and throws a bounded "(error body exceeds <N> bytes)" on overflow; the non-OK
output-file branch now reuses it instead of a duplicate unbounded read. The
existing error-file fail-soft handling (formatUnavailableBatchError) is
preserved, so a capped endpoint degrades gracefully. The submit path already
bounds its body via postJsonWithRetry/maxResponseBytes and is left untouched.

Symmetric counterpart to the #96027/#96038 response-limit campaign.
2026-06-25 13:52:36 -04:00
Alix-007
7b5ee739eb fix(byteplus): bound video-generation success response (#96606) 2026-06-25 13:47:07 -04:00
Alix-007
bfc33ac114 fix(google): bound video success response (#96605) 2026-06-25 13:41:35 -04:00
Alix-007
cc124d2921 fix(qwen): bound video success response (#96604) 2026-06-25 13:40:07 -04:00
Vincent Koc
7cce191b05 test(infra): isolate matrix outbound queue integration 2026-06-26 01:23:16 +08:00
Yzx
7fefc5ff58 fix: cron stream stalls fail over before job timeout (#96096)
* fix(agents): cap cron stream idle stalls

* fix(agents): preserve cron hostname timeout

* fix: bound cron idle timeout local exceptions

* fix: bound cron idle timeout local exceptions

---------

Co-authored-by: Radek Sienkiewicz <mail@velvetshark.com>
2026-06-25 19:04:15 +02:00
Yzx
19707cce1d fix(cron): avoid gateway restart on setup timeout (#96396)
* fix(cron): avoid gateway restart on setup timeout

* fix(cron): avoid gateway restart on setup timeout

---------

Co-authored-by: Radek Sienkiewicz <mail@velvetshark.com>
2026-06-25 18:11:33 +02:00
Ayaan Zaidi
a3b4e8102f test(telegram): fold draft preview surrogate clamp coverage 2026-06-25 09:10:07 -07:00
杨浩宇0668001029
4bd68aef65 fix(telegram): keep draft preview chunks surrogate-safe 2026-06-25 09:10:07 -07:00
Ayaan Zaidi
8bc069f76f fix(outbound): preserve narrowed delivery target type 2026-06-25 08:37:00 -07:00
Ayaan Zaidi
1adb119ba0 refactor(outbound): distill reserved target delivery cleanup 2026-06-25 08:37:00 -07:00
zhang-guiping
57c07d7f3b refactor: centralize reserved target error checks
Keep reserved-target detection behavior unchanged while routing callers through a shared helper so future changes stay localized.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-25 08:37:00 -07:00
张贵萍0668001030
3c8ff0d1c3 fix(outbound): require exact reserved directory matches 2026-06-25 08:37:00 -07:00
张贵萍0668001030
3a03d1e70b fix(cron): preserve reserved directory targets 2026-06-25 08:37:00 -07:00
张贵萍0668001030
9047b1cfa1 fix(outbound): preserve reserved directory target on route miss 2026-06-25 08:37:00 -07:00
张贵萍0668001030
ba004b3547 test(outbound): align Telegram resolver fixtures with chat capabilities 2026-06-25 08:37:00 -07:00
张贵萍0668001030
3092b4fd0d fix(outbound): fail closed heartbeat reserved Telegram misses 2026-06-25 08:37:00 -07:00
张贵萍0668001030
116758e69a fix(outbound): satisfy target resolver lint 2026-06-25 08:37:00 -07:00
张贵萍0668001030
cd3793185b fix(outbound): preserve reserved Telegram directory targets 2026-06-25 08:37:00 -07:00
zhang-guiping
5fccf06b5f fix(outbound): defer reserved-literal errors to async session-route resolver
In resolveAgentDeliveryPlanWithSessionRoute, reserved-literal errors from the
sync outbound target check are no longer treated as fatal. Instead, the path
proceeds to resolveOutboundSessionRoute which calls resolveMessagingTarget,
already fixed to do directory-first lookup before rejecting reserved literals.

This preserves configured Telegram directory entries named like reserved words
(current, self, this, me) through the explicit agent/gateway delivery path.

Update docs to reflect directory-first ordering.
2026-06-25 08:37:00 -07:00