Commit Graph

29619 Commits

Author SHA1 Message Date
Ayaan Zaidi
503c3d139c feat(reply): add room event turn semantics 2026-05-15 21:47:46 +01:00
Peter Steinberger
445ed9b0b4 fix(auto-reply): clean up no-reply migration paths 2026-05-15 21:29:39 +01:00
Peter Steinberger
f0ceb3c5aa fix(auto-reply): restrict no-reply to automatic groups 2026-05-15 21:29:39 +01:00
Peter Steinberger
68e0cdc478 fix(auto-reply): avoid NO_REPLY prompt in direct chats 2026-05-15 21:29:39 +01:00
Vincent Koc
0b7ff665f6 fix(trajectory): report malformed export rows 2026-05-16 04:07:22 +08:00
Vincent Koc
ea4e3cd4fa fix(config): harden persisted store shapes 2026-05-16 03:52:22 +08:00
Peter Steinberger
638bfc0bf5 fix: honor wildcard model runtime policy 2026-05-15 20:50:49 +01:00
Vincent Koc
9e9a825aa5 fix(media): sniff input file payloads 2026-05-16 03:47:08 +08:00
Vincent Koc
d2e0a8231f fix(plugins): reject malformed package entries 2026-05-16 03:44:33 +08:00
Peter Steinberger
8ba0bb2a8a fix: scope local agent gateway dispatch (#82284) 2026-05-15 20:35:53 +01:00
Peter Steinberger
d5eec80e34 fix(agents): honor completions token aliases (#82278) 2026-05-15 20:19:41 +01:00
Vincent Koc
f964b1c3aa fix(agents): clamp Responses cached usage 2026-05-16 03:17:31 +08:00
Sergio Cadavid
472523360d fix(codex): scope user MCP servers by agent (#82180) 2026-05-15 20:17:16 +01:00
Peter Steinberger
b376780715 fix(openai): keep volcengine streaming usage opt-in 2026-05-15 20:07:53 +01:00
Rui Xu
ff6b38750e fix(openai): honor streaming usage compat 2026-05-15 20:07:53 +01:00
Peter Steinberger
66f89540c2 fix(gateway): raise lifecycle hook timeout defaults
Raise bounded gateway lifecycle hook wait budgets to 5 seconds for shutdown and 10 seconds for pre-restart, keeping the fix to defaults only instead of adding config surface.

Includes regression coverage, hook docs, changelog credit for @bryanbaer, and replaces #82186 with the narrower maintainer fix.
2026-05-15 19:53:58 +01:00
Vincent Koc
317f1f8b5b fix(media): reject malformed sniff base64 2026-05-16 02:29:18 +08:00
Peter Steinberger
c3a211993c fix(cron): preserve isolated delivery awareness policy 2026-05-15 18:49:30 +01:00
Cavit Erginsoy
5ce1e45848 test: isolate media provider registry mocks 2026-05-15 18:49:30 +01:00
Cavit Erginsoy
f3403708a3 fix(cron): tighten session mirror classification 2026-05-15 18:49:30 +01:00
Cavit Erginsoy
7de413499f fix(cron): mirror announce delivery into destination session 2026-05-15 18:49:30 +01:00
Peter Steinberger
6ca9de1e0a refactor: deprecate legacy reply history helpers (#82236) 2026-05-15 18:44:04 +01:00
Peter Steinberger
fc9798a788 refactor: resolve cron delivery from context (#82241) 2026-05-15 18:42:52 +01:00
Peter Steinberger
daef8e73fc fix: prune replay control messages 2026-05-15 18:35:46 +01:00
Peter Steinberger
dd457474b3 fix(ui): avoid inline image previews in webchat send (#82228) 2026-05-15 18:08:52 +01:00
Peter Steinberger
ae5591eca9 test(release): use usage accumulator fixture 2026-05-15 17:57:14 +01:00
Peter Steinberger
8ac30279b3 fix: strip delivery function response leaks
Strip adjacent plural function-call/function-response XML on delivery paths while preserving prose examples.
2026-05-15 17:47:27 +01:00
Peter Steinberger
f1708f8b14 fix(release): satisfy preflight lint 2026-05-15 17:46:26 +01:00
Peter Steinberger
3e5070efbf fix(release): preserve provider reasoning replay 2026-05-15 17:33:28 +01:00
Peter Steinberger
4e6c85d930 refactor: route remaining channel history through window (#82220) 2026-05-15 17:27:00 +01:00
Peter Steinberger
8338412b54 fix: cover per-peer LINE cron recovery (#81704) 2026-05-15 17:22:58 +01:00
許元豪
ac2e72a8e6 fix(cron): refuse LINE session-key recipient fallback (#81628)
LINE chat ids are case-sensitive (push requires capital C/U/R) but the
session key holds the peer id lowercased for canonical routing. When
cron-tool runs without currentDeliveryContext (delivery-recovery, queue
replay after reply-token expiry), inferDeliveryFromSessionKey was
lifting the lowercased fragment straight into delivery.to, producing a
value LINE rejects with HTTP 400 — the job retried five times silently
and the dashboard reported "delivered" while the LINE group received
nothing.

Refuse the session-key fallback for channel === "line" so the missing
target surfaces explicitly instead of scheduling an undeliverable job.
2026-05-15 17:22:58 +01:00
Peter Steinberger
d5b87672f8 fix(mac): disarm legacy update launchd jobs 2026-05-15 17:20:41 +01:00
Peter Steinberger
cf79689ca1 fix: strip attributed final tags
Fix Gemini/Gemma attributed and self-closing <final> tag leaks across sanitizer, reasoning cleanup, and embedded Pi streaming enforcement.\n\nProof posted in PR body: focused Vitest, formatting, diff check, real Google Gemini/OpenRouter/local Gemma live output.
2026-05-15 17:18:24 +01:00
Peter Steinberger
65dd71d42d fix: preserve cron session transcript rotation (#82200)
* fix: preserve cron session transcript rotation

* chore: refresh pr checks
2026-05-15 17:00:42 +01:00
Peter Steinberger
c6ddb1afb7 fix: preserve media completion message-tool delivery (#82206)
* fix: preserve message-tool media completion delivery

* chore: update generated protocol models
2026-05-15 16:49:52 +01:00
Peter Steinberger
29b5563ccd fix: strip adjacent function response scaffolding (#82155)
Summary:
- Strip adjacent function_response workflow output after stripped XML tool-call scaffolding.
- Cover multiline, compact, dangling, chained, prose-like, and same-line-tail response forms.
- Add regression coverage for the production sanitizeUserFacingText path and the shared assistant-visible-text sanitizer.

Verification:
- node scripts/run-vitest.mjs src/shared/text/assistant-visible-text.test.ts src/agents/pi-embedded-helpers.sanitizeuserfacingtext.test.ts -- --reporter=verbose
- git diff --check origin/main...HEAD
- /Users/steipete/Projects/agent-scripts/skills/codex-review/scripts/codex-review --mode branch --base origin/main --full-access --output /tmp/codex-review-82155-rerun.txt --parallel-tests "node scripts/run-vitest.mjs src/shared/text/assistant-visible-text.test.ts src/agents/pi-embedded-helpers.sanitizeuserfacingtext.test.ts -- --reporter=verbose"
- GitHub Real behavior proof: https://github.com/openclaw/openclaw/actions/runs/25926897171
2026-05-15 16:48:33 +01:00
Peter Steinberger
9ee93e8ea7 docs: document channel turn guardrails
Document the channel-turn media/history guardrails and add a focused regression test for migrated message paths.
2026-05-15 16:27:34 +01:00
Rui Xu
2204b25f1d fix(tts): preserve command voice delivery decision 2026-05-15 16:23:38 +01:00
Peter Steinberger
5aefc9dda4 refactor: centralize channel turn media facts
Centralize channel-turn media fact shaping in core and route Discord/Slack through the shared helper.
2026-05-15 16:21:06 +01:00
Vincent Koc
1b62168a3a fix(media): reject malformed generated base64 2026-05-15 23:20:46 +08:00
Peter Steinberger
06ec35452f test: deduplicate OpenRouter reasoning replay regression 2026-05-15 16:17:50 +01:00
Peter Steinberger
c5a4d7af41 fix: avoid OpenRouter DeepSeek V4 empty reasoning replay 2026-05-15 16:17:50 +01:00
luyao618
25864ee540 fix(transport): strip empty-string reasoning_content from OpenRouter assistant replay
DeepSeek V4 via OpenRouter injects reasoning_content: "" on assistant
messages that contain tool_calls.  The sanitizer only deleted the field
when it was not a string, so empty strings slipped through and were
replayed on follow-up turns.  OpenRouter rejects the field with an
HTTP 500 Internal Server Error instead of a descriptive 4xx, breaking
every subsequent tool-call turn for the session.

Also strip empty-string reasoning for the same reason.

Closes #82150
2026-05-15 16:17:50 +01:00
Peter Steinberger
bbf50a406e fix: keep Discord prompt metadata structured (#82168) 2026-05-15 16:12:11 +01:00
Peter Steinberger
2eee70e0a6 refactor: run prepared Discord and Slack turns
Route Discord and Slack prepared message turns through the core prepared-turn runner directly.

Local proof before landing:
- node scripts/run-vitest.mjs src/channels/turn/kernel.test.ts extensions/discord/src/monitor/message-handler.process.test.ts extensions/slack/src/monitor/message-handler/prepare.test.ts extensions/slack/src/monitor/message-handler/dispatch.preview-fallback.test.ts
- node scripts/run-tsgo.mjs -p tsconfig.core.json --incremental false
- node scripts/run-tsgo.mjs -p tsconfig.extensions.json --incremental false
- OPENCLAW_TESTBOX_REMOTE_RUN=1 OPENCLAW_VITEST_MAX_WORKERS=1 pnpm check:changed
- codex-review clean after accepted Slack bot-loop history cleanup finding was fixed in core

GitHub checks had no failures; Blacksmith/GitHub runner jobs were still queued when maintainer approved landing based on local proof.
2026-05-15 16:06:22 +01:00
Peter Steinberger
369917ff79 fix: surface cron model override diagnostics 2026-05-15 16:04:49 +01:00
Peter Steinberger
99dfb8291f fix(providers): preserve Kimi MiMo reasoning replay (#82170)
* fix(providers): preserve Kimi MiMo reasoning replay

* chore: rerun provider replay ci
2026-05-15 15:44:34 +01:00
Peter Steinberger
d24a847279 test(doctor): type legacy compaction fixtures (#80645) 2026-05-15 15:33:27 +01:00
Peter Steinberger
40789da1ef fix(wizard): narrow setup i18n SDK surface 2026-05-15 15:33:27 +01:00