Table of Contents

Namespace FlowOrchestrator.Core.Notifications

Classes

FlowLifecycleEvent

Base type for all flow lifecycle events published through IFlowEventNotifier. Subtypes carry a constant Type discriminator string used as the SSE event: field name and as a tag for log/metric pipelines.

NoopFlowEventNotifier

Default IFlowEventNotifier implementation that discards every event. Registered when no realtime consumer (e.g. the dashboard's SSE broadcaster) is wired in, so apps that never opt in pay zero overhead — PublishAsync(FlowLifecycleEvent, CancellationToken) returns a completed ValueTask with no allocation.

RunCompletedEvent

Emitted when the run reaches a terminal state. The status field captures the outcome — Succeeded, Failed, Skipped, or Cancelled; no separate RunCancelled event exists.

RunStartedEvent

Emitted once per successful TriggerAsync after the run row is persisted.

StepCompletedEvent

Emitted whenever a step transitions to a terminal status (Succeeded / Failed / Skipped).

StepRetriedEvent

Emitted when a step is queued for retry via RetryStepAsync.

Interfaces

IFlowEventNotifier

Publishes flow lifecycle events for realtime consumers (dashboard SSE, log sinks, custom listeners). Implementations MUST be non-blocking: the engine awaits this on its hot path, so any backing transport should buffer (e.g. Channel) and return synchronously.