16a41efec1
Extract and generalize notification dispatch: - TelegramClient: full Bot API client with photo/video/document/media group support - TelegramFileCache: TTL and thumbhash-based file_id caching - WebhookClient: simple JSON POST client - NotificationQueue: persistent deferred notification queue for quiet hours - NotificationDispatcher: routes ServiceEvent to targets, renders templates - StorageBackend protocol + JsonFileBackend for persistence - TargetConfig dataclass for target configuration Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>