Summary
Slack integration is deeply embedded — slack_sync.py, slack_todo_scan.py, honcho_slack_sync.py, bot detection, channel exclusion. Not everyone uses Slack.
What needs to change
- Abstract the messaging platform behind an interface:
sync_messages(), get_channels(), get_users()
slack_sync.py → sync_messages.py with a --provider slack|teams|discord flag
- Microsoft Teams: use Graph API (same auth as email if using M365)
- Discord: use discord.py or REST API with bot token
slack_todo_scan.py — the action item scanning logic is platform-agnostic once messages are in JSONL format. Just needs the JSONL schema to be consistent across providers.
honcho_slack_sync.py → honcho_messages_sync.py — rename, make provider-agnostic
discover_workspace.py — bot detection is Slack-specific (is_bot field). Other platforms have different bot indicators.
config.py — EXCLUDE_CHANNELS concept maps to Teams channels and Discord servers/channels
Approach
Keep the JSONL-per-channel format as the common intermediate. Each provider adapter writes to the same format. Downstream scripts (todo scan, Honcho sync, discovery) don't need to know the source.
Summary
Slack integration is deeply embedded —
slack_sync.py,slack_todo_scan.py,honcho_slack_sync.py, bot detection, channel exclusion. Not everyone uses Slack.What needs to change
sync_messages(),get_channels(),get_users()slack_sync.py→sync_messages.pywith a--provider slack|teams|discordflagslack_todo_scan.py— the action item scanning logic is platform-agnostic once messages are in JSONL format. Just needs the JSONL schema to be consistent across providers.honcho_slack_sync.py→honcho_messages_sync.py— rename, make provider-agnosticdiscover_workspace.py— bot detection is Slack-specific (is_botfield). Other platforms have different bot indicators.config.py—EXCLUDE_CHANNELSconcept maps to Teams channels and Discord servers/channelsApproach
Keep the JSONL-per-channel format as the common intermediate. Each provider adapter writes to the same format. Downstream scripts (todo scan, Honcho sync, discovery) don't need to know the source.