// Package notify sends drift/error notifications to project-configured // channels (Telegram, generic webhooks, ...). Notifier implementations must // never log the secret they receive (bot tokens, HMAC keys, etc.). package notify import ( "context" "encoding/json" "time" ) // Event describes a single notification-worthy occurrence for a domain // belonging to a project (e.g. a status change detected by the scheduler). type Event struct { Project string Domain string Status string Summary string At time.Time } // Notifier delivers an Event to a channel described by cfg (channel-type // specific JSON config) and secret (decrypted credential, e.g. a bot token). // Implementations must not log secret. type Notifier interface { Send(ctx context.Context, cfg json.RawMessage, secret string, ev Event) error }