From efec5fc751e1692002ef90c4d973aebb124ce6b1 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 23 Jan 2026 23:37:04 +0000 Subject: [PATCH] docs: remove channel unify checklist --- docs/refactor/channel-unify.md | 103 --------------------------------- 1 file changed, 103 deletions(-) delete mode 100644 docs/refactor/channel-unify.md diff --git a/docs/refactor/channel-unify.md b/docs/refactor/channel-unify.md deleted file mode 100644 index 9f81ffa64..000000000 --- a/docs/refactor/channel-unify.md +++ /dev/null @@ -1,103 +0,0 @@ ---- -summary: "Checklist for unifying messaging channel logic" -read_when: - - Planning refactors across channel implementations - - Standardizing shared message handling behavior ---- -# Channel unification checklist - -Purpose: centralize repeated messaging logic so core + extensions stay consistent, testable, and easier to evolve. - -## Ack reactions (already centralized) -- [x] Shared gating helper for core channels. -- [x] Shared gating helper for extensions. -- [x] WhatsApp-specific gating helper (direct/group/mentions) aligned with activation. -- [ ] Optional: centralize “remove after reply” behavior (see below). - -## Ack reaction removal (after reply) -Problem: duplicated logic across Discord, Slack, Telegram, BlueBubbles. -- [ ] Create `channel.reactions.removeAfterReply()` helper that accepts: - - `removeAckAfterReply` flag - - ack promise + result boolean - - channel-specific remove fn + ids -- [ ] Wire in: - - `src/discord/monitor/message-handler.process.ts` - - `src/slack/monitor/message-handler/dispatch.ts` - - `src/telegram/bot-message-dispatch.ts` - - `extensions/bluebubbles/src/monitor.ts` -- [ ] Add unit tests for the helper (success + ack-failed paths). - -## Pending history buffering + flush -Problem: repeated “record pending history”, “prepend pending history”, and “clear history” patterns. -- [ ] Identify shared flow in: - - `src/discord/monitor/message-handler.preflight.ts` - - `src/discord/monitor/message-handler.process.ts` - - `src/slack/monitor/message-handler/prepare.ts` - - `src/telegram/bot-message-context.ts` - - `src/signal/monitor/event-handler.ts` - - `src/imessage/monitor/monitor-provider.ts` - - `extensions/mattermost/src/mattermost/monitor.ts` - - `src/web/auto-reply/monitor/group-gating.ts` -- [ ] Add helper(s) to `src/auto-reply/reply/history.ts`: - - `recordPendingIfBlocked()` (accepts allowlist/mention gating reason) - - `mergePendingIntoBody()` (returns combined body) - - `clearPendingHistory()` (wrapper to standardize historyKey, limits) -- [ ] Ensure per-channel metadata (sender label, timestamps, messageId) preserved. -- [ ] Add tests for helper(s); keep per-channel smoke tests. - -## Typing lifecycle -Problem: inconsistent typing start/stop handling and error logging. -- [ ] Add a shared typing adapter in core (ex: `src/channels/typing.ts`) that accepts: - - `startTyping` / `stopTyping` callbacks - - `onReplyStart` / `onReplyIdle` hooks from dispatcher - - TTL + interval config (reuse `auto-reply/reply/typing` machinery) -- [ ] Wire in: - - Discord (`src/discord/monitor/typing.ts`) - - Slack (`src/slack/monitor/message-handler/dispatch.ts`) - - Telegram (dispatch flow) - - Signal (`src/signal/monitor/event-handler.ts`) - - Matrix (`extensions/matrix/src/matrix/monitor/handler.ts`) - - Mattermost (`extensions/mattermost/src/mattermost/monitor.ts`) - - BlueBubbles (`extensions/bluebubbles/src/monitor.ts`) - - MS Teams (`extensions/msteams/src/reply-dispatcher.ts`) -- [ ] Add helper tests for start/stop and error handling. - -## Reply dispatcher wiring -Problem: channels hand-roll dispatcher glue; varies in error handling and typing. -- [ ] Add a shared wrapper that builds: - - reply dispatcher - - response prefix context - - table mode conversion -- [ ] Adopt in: - - Discord, Slack, Telegram (core) - - BlueBubbles, Matrix, Mattermost (extensions) -- [ ] Keep per-channel delivery adapter (send message / chunking). - -## Session meta + last route updates -Problem: repeated patterns for `recordSessionMetaFromInbound` and `updateLastRoute`. -- [ ] Add helper `channel.session.recordInbound()` that accepts: - - `storePath`, `sessionKey`, `ctx` - - optional `channel/accountId/target` for `updateLastRoute` -- [ ] Wire in: - - Discord, Slack, Telegram, Matrix, BlueBubbles - -## Control command gating patterns -Problem: similar gating flow per channel (allowlists + commands). -- [ ] Add a helper that merges: - - allowlist checks - - command gating decisions - - mention bypass evaluation -- [ ] Keep channel-specific identity/user resolution separate. - -## Error + verbose logging -Problem: inconsistent message formats across channels. -- [ ] Define canonical log helpers: - - `logInboundDrop(reason, meta)` - - `logAckFailure(meta)` - - `logTypingFailure(meta)` -- [ ] Apply to all channel handlers. - -## Docs + SDK -- [ ] Expose new helpers through `src/plugin-sdk/index.ts` + plugin runtime. -- [ ] Update `docs/tools/reactions.md` if ack semantics expand. -- [ ] Add `read_when` hints if new cross-cutting helpers are introduced.