Commit Graph

26029 Commits

Author SHA1 Message Date
Shakker
3cc2c28f0e test: tighten app session empty assertions 2026-05-09 04:32:14 +01:00
Shakker
9757a62397 test: tighten provider empty payload assertions 2026-05-09 04:22:31 +01:00
Peter Steinberger
2d10afa6d7 test: tighten talkback consult signal assertions 2026-05-09 04:21:30 +01:00
Peter Steinberger
31e1d2e701 test: tighten audio pin dns request assertion 2026-05-09 04:20:03 +01:00
Peter Steinberger
068bbf0a17 test: tighten ssrf dispatcher lookup assertion 2026-05-09 04:19:01 +01:00
Shakker
bcec18d38b test: tighten helper empty object assertions 2026-05-09 04:18:03 +01:00
Peter Steinberger
6dea4f5421 test: tighten provider validation assertion 2026-05-09 04:17:22 +01:00
Shakker
be3fd09ae0 test: tighten cron empty state assertions 2026-05-09 04:16:38 +01:00
Peter Steinberger
2a70264b83 test: tighten plugin lookup metrics assertions 2026-05-09 04:16:23 +01:00
Peter Steinberger
b2507b9a79 test: tighten plugin cli node runtime assertion 2026-05-09 04:15:28 +01:00
Josh Avant
b30ead9ca8 fix: hide subagent announce handoff prompts (#79618)
* fix: hide subagent announce handoff prompts

* chore: update subagent announce changelog entry
2026-05-08 22:15:01 -05:00
Peter Steinberger
1c2a0b4b89 test: tighten plugin cleanup timeout assertion 2026-05-09 04:14:35 +01:00
Shakker
2a272aa4a8 test: tighten shared empty object assertions 2026-05-09 04:13:56 +01:00
Peter Steinberger
d9f0ffc424 test: tighten proxy lifecycle assertions 2026-05-09 04:13:42 +01:00
Peter Steinberger
067dda2f26 test: tighten web push subscription assertion 2026-05-09 04:12:46 +01:00
Shakker
dcf3c851f0 test: tighten config snapshot empty assertions 2026-05-09 04:11:57 +01:00
Peter Steinberger
c5a3ed698d test: tighten global hook runner assertion 2026-05-09 04:11:54 +01:00
Shakker
fa83925fab test: tighten plugin empty state assertions 2026-05-09 04:10:32 +01:00
Shakker
3076da5e31 test: tighten plugin empty result assertions 2026-05-09 04:09:00 +01:00
Peter Steinberger
594abbd44b test: tighten plugin loader transform assertions 2026-05-09 04:07:17 +01:00
Shakker
73f6344906 test: tighten gateway empty result assertions 2026-05-09 04:07:06 +01:00
Peter Steinberger
71a4c29d51 test: tighten sdk alias runtime assertion 2026-05-09 04:06:16 +01:00
Peter Steinberger
5bec7022c7 test: tighten plugin loader hook assertion 2026-05-09 04:05:24 +01:00
Peter Steinberger
1c19ce4e1b test: tighten trajectory recorder assertion 2026-05-09 04:04:38 +01:00
Peter Steinberger
e110b09b9f test: tighten temp home directory assertion 2026-05-09 04:03:50 +01:00
Shakker
7442355088 test: tighten config empty map assertions 2026-05-09 04:03:34 +01:00
Peter Steinberger
97757dd324 test: tighten fs-safe directory assertion 2026-05-09 04:03:07 +01:00
Peter Steinberger
8562aa8ab2 test: tighten cron task cleanup assertion 2026-05-09 04:02:22 +01:00
Peter Steinberger
83c238d6da test: tighten gateway lock helper assertion 2026-05-09 04:01:33 +01:00
Shakker
cf71412a35 test: tighten config empty object assertions 2026-05-09 04:01:03 +01:00
Peter Steinberger
3ba8c2cd52 test: tighten install target directory assertion 2026-05-09 04:00:42 +01:00
Peter Steinberger
08076208cd test: tighten timer delay callback assertion 2026-05-09 03:59:47 +01:00
Shakker
1b60d4f761 test: tighten command config cleanup assertions 2026-05-09 03:59:05 +01:00
Peter Steinberger
fa04bb9175 test: tighten cli respawn bridge assertion 2026-05-09 03:57:45 +01:00
Shakker
a9d168ca23 test: tighten command empty result assertions 2026-05-09 03:57:18 +01:00
Peter Steinberger
45d67b98d1 test: tighten compile cache bridge assertion 2026-05-09 03:56:07 +01:00
Omar Shahine
81e0a1a99b feat(imessage): inbound catchup (cursor + replay loop + monitor wiring) (#79387)
Closes #78649. Adds opt-in inbound iMessage catchup that recovers messages landing in chat.db while the gateway is offline (crash, restart, mac sleep). Mirrors the design of the retired BlueBubbles catchup, adapted for the imsg JSON-RPC chats.list + messages.history fetch path.

- Schema: new channels.imessage.catchup block with enabled / maxAgeMinutes (1..720) / perRunLimit (1..500) / firstRunLookbackMinutes (1..720) / maxFailureRetries (1..1000). Disabled by default — opt-in.
- Cursor + replay loop (extensions/imessage/src/monitor/catchup.ts): per-account state under <openclawStateDir>/imessage/catchup/. Walks rows oldest-first, advances on success/give-up, holds at failed.rowid - 1 when a failure is below maxFailureRetries (cannot leapfrog held failures even when later rows in the same batch succeed). Watermark floor for parse-rejected rows.
- Bridge (extensions/imessage/src/monitor/catchup-bridge.ts): live chats.list + per-chat messages.history fetch adapter; dispatch adapter routes through the live handleMessageNow path so allowlists / group policy / dedupe / echo cache behave identically on replayed and live messages. Watermark clamped to last dispatched rowid when the cap truncates.
- Monitor wiring (extensions/imessage/src/monitor/monitor-provider.ts): catchup runs once between watch.subscribe and the live dispatch loop when enabled. Bypasses the inbound debouncer for serial per-row dispatch.
- Echo-cache TTL bumped 2 min → 12 h so own outbound rows from before a gap are not re-fed as inbound on replay.
- Generated bundled-channel-config-metadata.generated.ts so the runtime AJV schema accepts the new catchup block.
- Docs: new "Catching up after gateway downtime" section + BlueBubbles migration parity update.

Tests: 322/322 in extensions/imessage/, including 5 regression tests covering the cursor-leapfrog, parse-rejected stall, watermark vs held failure, and cap-truncation-cursor-floor edge cases that codex (gpt-5.4) and clawsweeper (gpt-5.5) found during review. Live-tested end-to-end against the running gateway: replayed=1 fetchedCount=1, agent reply observed, cursor persisted at the test row's exact rowid.

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 22:55:59 -04:00
Shakker
8989d0a777 test: tighten doctor empty config assertions 2026-05-09 03:55:42 +01:00
Peter Steinberger
c9f3b099b2 test: tighten task maintenance recovery timestamp assertion 2026-05-09 03:54:24 +01:00
Shakker
561df3fe03 test: tighten model picker empty assertions 2026-05-09 03:54:12 +01:00
Peter Steinberger
21af67f9a9 test: tighten detached task warning timing assertion 2026-05-09 03:52:23 +01:00
Peter Steinberger
00a44b08ed fix(gateway): preserve active agent dedupe retries 2026-05-08 22:52:17 -04:00
Gabriel Piss
972f9db1d2 test(gateway): strengthen dedupe eviction regression tests and add changelog 2026-05-08 22:52:17 -04:00
Gabriel Piss
da03269f6d fix(gateway): align dedupe eviction with entry timestamp 2026-05-08 22:52:17 -04:00
Shakker
11e6c66004 test: tighten hook empty result assertions 2026-05-09 03:52:06 +01:00
Shakker
48bba2df3b test: tighten acp empty response assertions 2026-05-09 03:50:30 +01:00
Peter Steinberger
03c8eb730b test: tighten task cancellation timestamp assertions 2026-05-09 03:50:01 +01:00
Shakker
3bbee2255b test: tighten agent overlay empty assertions 2026-05-09 03:48:28 +01:00
Peter Steinberger
f94dc2cbb0 test: tighten media provider registry assertions 2026-05-09 03:46:43 +01:00
Shakker
8b20bc2f95 test: tighten agent empty config assertions 2026-05-09 03:46:35 +01:00