package notification import ( "context" "galaxy/backend/internal/runtime" ) // RuntimeAdapter returns an implementation of // `runtime.NotificationPublisher` backed by *Service. The adapter // translates runtime's narrow `(kind, idempotency_key, payload)` shape // into a notification.Intent and calls Submit. Recipient resolution is // handled by Submit's catalog lookup: every kind runtime emits is // `Admin: true`, so the recipient comes from the configured // `BACKEND_NOTIFICATION_ADMIN_EMAIL`. func (s *Service) RuntimeAdapter() runtime.NotificationPublisher { return &runtimeAdapter{svc: s} } type runtimeAdapter struct { svc *Service } func (a *runtimeAdapter) PublishRuntimeEvent(ctx context.Context, kind, idempotencyKey string, payload map[string]any) error { if a == nil || a.svc == nil { return nil } intent := Intent{ Kind: kind, IdempotencyKey: idempotencyKey, Payload: payload, } _, err := a.svc.Submit(ctx, intent) return err }