Summary
packages/notifications/TODO.md checks off Discord, Microsoft Teams, Telegram, and Google Chat as [x] done:
- [x] **Slack** - Webhook support
- [x] **Discord** - Webhook support
- [x] **Email** - Injected send function
- [x] **Webhook** - Generic HTTP webhook
- [x] **Microsoft Teams** - Adaptive Cards via webhook
- [x] **Telegram** - Bot API (sendMessage)
- [x] **Google Chat** - Cards via webhook
But packages/notifications/src/providers/ only contains slack.ts, email.ts, webhook.ts, and base.ts — no matching files for the other four. NotificationChannel (packages/notifications/src/types.ts:1) is typed "slack" | "email" | "webhook" only, and NotificationClient (packages/notifications/src/client.ts) only wires those three up. The alarms-system section of the same TODO.md (line 13) still lists discord/teams/telegram/google-chat as channels an alarm should be able to target, so this looks like real missing functionality rather than just stale docs.
Proposal
Add a Discord provider (webhook-based, mirroring the existing SlackProvider) as a first, self-contained slice:
- New
providers/discord.ts following the SlackProvider/WebhookProvider pattern
- Extend
NotificationChannel and wire it into NotificationClient
- Tests mirroring the existing Slack provider tests
- Fix the TODO.md checkboxes to reflect reality
Keeping this scoped to Discord only — happy to do Teams/Telegram/Google Chat as separate follow-up PRs if this shape is right, rather than one big PR.
Checking scope/interest before opening a PR, per the AI policy here — let me know if this is wanted or if there's context I'm missing (e.g. planned elsewhere / superseded by a different design).
Disclosure: I used Claude Code to grep the providers directory against TODO.md and the type definitions; verified manually before writing this up.
Summary
packages/notifications/TODO.mdchecks off Discord, Microsoft Teams, Telegram, and Google Chat as[x]done:But
packages/notifications/src/providers/only containsslack.ts,email.ts,webhook.ts, andbase.ts— no matching files for the other four.NotificationChannel(packages/notifications/src/types.ts:1) is typed"slack" | "email" | "webhook"only, andNotificationClient(packages/notifications/src/client.ts) only wires those three up. The alarms-system section of the same TODO.md (line 13) still listsdiscord/teams/telegram/google-chatas channels an alarm should be able to target, so this looks like real missing functionality rather than just stale docs.Proposal
Add a Discord provider (webhook-based, mirroring the existing
SlackProvider) as a first, self-contained slice:providers/discord.tsfollowing theSlackProvider/WebhookProviderpatternNotificationChanneland wire it intoNotificationClientKeeping this scoped to Discord only — happy to do Teams/Telegram/Google Chat as separate follow-up PRs if this shape is right, rather than one big PR.
Checking scope/interest before opening a PR, per the AI policy here — let me know if this is wanted or if there's context I'm missing (e.g. planned elsewhere / superseded by a different design).
Disclosure: I used Claude Code to grep the providers directory against TODO.md and the type definitions; verified manually before writing this up.