Commit Graph

43416 Commits

Author SHA1 Message Date
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
Ayaan Zaidi
b66cc66440 fix(telegram): share bot api throttler 2026-05-09 08:27:39 +05:30
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
0048f95667 test: tighten skill workshop hook assertions 2026-05-09 03:48:08 +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
Peter Steinberger
ddde7900d8 test: tighten opencode media assertions 2026-05-09 03:45:24 +01:00
Shakker
cca2686f45 test: tighten auth identity empty assertions 2026-05-09 03:44:29 +01:00
Peter Steinberger
35fc60e097 test: tighten opencode go media assertions 2026-05-09 03:44:09 +01:00
Shakker
46ab4f139b test: tighten runner tool argument assertions 2026-05-09 03:42:56 +01:00
Peter Steinberger
2cd25ea27e test: tighten media load callback assertions 2026-05-09 03:42:46 +01:00
Peter Steinberger
f824271e77 test: tighten minimax video fetch assertions 2026-05-09 03:41:21 +01:00
Shakker
9534575134 test: tighten gemini schema cleanup assertions 2026-05-09 03:39:58 +01:00
Peter Steinberger
f8e2a2ff63 test: tighten boundary failure timing assertion 2026-05-09 03:39:47 +01:00
Peter Steinberger
4cdb9dfe8b test: tighten openrouter video fetch assertions 2026-05-09 03:38:14 +01:00
Shakker
eafc4230d6 test: tighten agent empty result assertions 2026-05-09 03:38:10 +01:00
Peter Steinberger
ffe72ffbb9 test: tighten test state payload assertions 2026-05-09 03:36:42 +01:00
Shakker
c414863505 test: tighten tool argument fallback assertions 2026-05-09 03:36:22 +01:00
Peter Steinberger
4f43026db6 test: tighten extension batch metric assertions 2026-05-09 03:35:35 +01:00
Shakker
02635d9e3e test: tighten agent tool schema assertions 2026-05-09 03:34:32 +01:00
Peter Steinberger
0a173bb362 test: tighten android live string assertion 2026-05-09 03:33:02 +01:00
Shakker
ba30f7c0ed test: tighten plugin runtime lookup assertions 2026-05-09 03:32:25 +01:00
Peter Steinberger
ac18768c19 test: tighten browser download path assertion 2026-05-09 03:31:54 +01:00
Peter Steinberger
2083d25e31 test: tighten core primitive assertions 2026-05-09 03:30:40 +01:00
Shakker
3d52a2962e test: tighten channel plugin discovery assertion 2026-05-09 03:29:49 +01:00
Peter Steinberger
d2c1f94234 test: tighten remaining object assertions 2026-05-09 03:28:29 +01:00
Shakker
c547427ca7 test: tighten release metadata guard assertion 2026-05-09 03:26:23 +01:00