All skills now reference Docker CLI instead of Apple Container CLI. Setup skill defaults to Docker with optional /convert-to-apple-container. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
51 lines
2.2 KiB
Markdown
51 lines
2.2 KiB
Markdown
# Intent: src/index.ts modifications
|
|
|
|
## What changed
|
|
Refactored from single WhatsApp channel to multi-channel architecture using the `Channel` interface.
|
|
|
|
## Key sections
|
|
|
|
### Imports (top of file)
|
|
- Added: `TelegramChannel` from `./channels/telegram.js`
|
|
- Added: `TELEGRAM_BOT_TOKEN`, `TELEGRAM_ONLY` from `./config.js`
|
|
- Added: `findChannel` from `./router.js`
|
|
- Added: `Channel` type from `./types.js`
|
|
|
|
### Module-level state
|
|
- Added: `const channels: Channel[] = []` — array of all active channels
|
|
- Kept: `let whatsapp: WhatsAppChannel` — still needed for `syncGroupMetadata` reference
|
|
|
|
### processGroupMessages()
|
|
- Added: `findChannel(channels, chatJid)` lookup at the start
|
|
- Changed: `whatsapp.setTyping()` → `channel.setTyping?.()` (optional chaining)
|
|
- Changed: `whatsapp.sendMessage()` → `channel.sendMessage()` in output callback
|
|
|
|
### getAvailableGroups()
|
|
- Unchanged: uses `c.is_group` filter from base (Telegram channels pass `isGroup=true` via `onChatMetadata`)
|
|
|
|
### startMessageLoop()
|
|
- Added: `findChannel(channels, chatJid)` lookup per group in message processing
|
|
- Changed: `whatsapp.setTyping()` → `channel.setTyping?.()` for typing indicators
|
|
|
|
### main()
|
|
- Changed: shutdown disconnects all channels via `for (const ch of channels)`
|
|
- Added: shared `channelOpts` object for channel callbacks
|
|
- Added: conditional WhatsApp creation (`if (!TELEGRAM_ONLY)`)
|
|
- Added: conditional Telegram creation (`if (TELEGRAM_BOT_TOKEN)`)
|
|
- Changed: scheduler `sendMessage` uses `findChannel()` → `channel.sendMessage()`
|
|
- Changed: IPC `sendMessage` uses `findChannel()` → `channel.sendMessage()`
|
|
|
|
## Invariants
|
|
- All existing message processing logic (triggers, cursors, idle timers) is preserved
|
|
- The `runAgent` function is completely unchanged
|
|
- State management (loadState/saveState) is unchanged
|
|
- Recovery logic is unchanged
|
|
- Container runtime check is unchanged (ensureContainerSystemRunning)
|
|
|
|
## Must-keep
|
|
- The `escapeXml` and `formatMessages` re-exports
|
|
- The `_setRegisteredGroups` test helper
|
|
- The `isDirectRun` guard at bottom
|
|
- All error handling and cursor rollback logic in processGroupMessages
|
|
- The outgoing queue flush and reconnection logic (in WhatsAppChannel, not here)
|