Commit Graph

9080 Commits

Author SHA1 Message Date
Shakker
1663b75862 test: tighten acp empty array assertions 2026-05-09 05:07:44 +01:00
Peter Steinberger
c04df3adfb test: tighten whatsapp connection close assertion 2026-05-09 05:05:04 +01:00
Peter Steinberger
e68206deed test: tighten stale call reaper error assertion 2026-05-09 05:03:18 +01:00
Shakker
3ce49c0acb test: tighten memory empty array assertions 2026-05-09 05:02:14 +01:00
Shakker
c4d05b0dfc test: tighten messaging plugin array assertions 2026-05-09 05:00:33 +01:00
Peter Steinberger
c83a40e474 test: tighten mock voice provider timestamps 2026-05-09 04:58:41 +01:00
Shakker
92d7ab6845 test: tighten channel empty array assertions 2026-05-09 04:58:00 +01:00
Shakker
84c4a4fc5b test: tighten provider empty array assertions 2026-05-09 04:55:18 +01:00
Shakker
86a54caee2 test: tighten codex app empty array assertions 2026-05-09 04:45:12 +01:00
Peter Steinberger
696eb6cf35 test: tighten qmd embed lock assertion 2026-05-09 04:44:37 +01:00
Shakker
11f9383f8a test: tighten teams empty array assertions 2026-05-09 04:43:24 +01:00
Peter Steinberger
55b8451ea0 test: tighten dreaming content hash assertions 2026-05-09 04:42:37 +01:00
Shakker
714f3647e5 test: tighten discord empty array assertions 2026-05-09 04:41:43 +01:00
Peter Steinberger
07234384fc test: tighten slack qa artifact assertion 2026-05-09 04:40:45 +01:00
Shakker
c2f6bb0e71 test: tighten voice call empty array assertions 2026-05-09 04:40:00 +01:00
Peter Steinberger
9dbbd9b5d4 test: tighten feishu client http assertion 2026-05-09 04:39:10 +01:00
Peter Steinberger
1d7fbc94c6 test: tighten feishu setup entry assertion 2026-05-09 04:37:59 +01:00
Ayaan Zaidi
7a2cc4b8d6 fix(telegram): stop DM topic threadless fallback (#78575) (thanks @tmimmanuel) 2026-05-09 09:07:42 +05:30
Peter Steinberger
dc73d1baa1 test: tighten discord voice command assertion 2026-05-09 04:36:54 +01:00
Peter Steinberger
d9c6f7efec test: tighten discord presence helper assertion 2026-05-09 04:35:57 +01:00
Peter Steinberger
9db7a62c70 test: tighten memory cli sync assertion 2026-05-09 04:34:54 +01:00
Peter Steinberger
50ba48c1fd test: tighten memory search timing assertion 2026-05-09 04:32:39 +01:00
Shakker
3cc2c28f0e test: tighten app session empty assertions 2026-05-09 04:32:14 +01:00
Peter Steinberger
97b32e8271 test: tighten google meet cli gateway assertion 2026-05-09 04:31:15 +01:00
Shakker
67e1f1a6b2 test: tighten plugin config empty assertions 2026-05-09 04:30:16 +01:00
Peter Steinberger
535d70c202 test: tighten twitch setup validation assertions 2026-05-09 04:29:14 +01:00
Shakker
c6faba0713 test: tighten browser empty payload assertions 2026-05-09 04:28:18 +01:00
Peter Steinberger
d8daa71666 test: tighten brave response duration assertion 2026-05-09 04:28:07 +01:00
Peter Steinberger
9ae2abf100 test: tighten google meet oauth expiry assertion 2026-05-09 04:27:06 +01:00
Peter Steinberger
d0a41b1041 test: tighten tlon upload body assertions 2026-05-09 04:25:54 +01:00
Shakker
7d4f76fa5e test: tighten matrix empty state assertions 2026-05-09 04:25:34 +01:00
Peter Steinberger
7b6307ef7f test: tighten xai transcription error assertion 2026-05-09 04:24:51 +01:00
Shakker
880a542944 test: tighten channel plugin empty assertions 2026-05-09 04:24:16 +01:00
Peter Steinberger
1dd05923d6 test: tighten nextcloud talk status timestamp assertion 2026-05-09 04:23:54 +01:00
Peter Steinberger
2bdb774726 test: tighten tokenjuice middleware assertion 2026-05-09 04:22:45 +01:00
Shakker
9757a62397 test: tighten provider empty payload assertions 2026-05-09 04:22:31 +01:00
Peter Steinberger
5720aa08d2 test: tighten minimax image endpoint assertion 2026-05-09 04:10:28 +01:00
Peter Steinberger
441e1b2930 test: tighten minimax music header assertion 2026-05-09 04:09:30 +01:00
Peter Steinberger
dc36430df3 test: tighten mattermost retry delay assertion 2026-05-09 04:08:32 +01:00
Ayaan Zaidi
b66cc66440 fix(telegram): share bot api throttler 2026-05-09 08:27:39 +05:30
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
Peter Steinberger
0048f95667 test: tighten skill workshop hook assertions 2026-05-09 03:48:08 +01:00
Peter Steinberger
ddde7900d8 test: tighten opencode media assertions 2026-05-09 03:45:24 +01:00
Peter Steinberger
35fc60e097 test: tighten opencode go media assertions 2026-05-09 03:44:09 +01:00
Peter Steinberger
f824271e77 test: tighten minimax video fetch assertions 2026-05-09 03:41:21 +01:00
Peter Steinberger
4cdb9dfe8b test: tighten openrouter video fetch assertions 2026-05-09 03:38:14 +01:00
Peter Steinberger
ac18768c19 test: tighten browser download path assertion 2026-05-09 03:31:54 +01:00
Peter Steinberger
e855091a58 test: tighten discord monitor object assertions 2026-05-09 03:23:12 +01:00
Peter Steinberger
a6dee24c3f test: tighten qa channel context assertion 2026-05-09 03:06:42 +01:00
Peter Steinberger
af5eca9371 test: tighten memory wiki schema assertion 2026-05-09 03:02:03 +01:00