Skip to main content

run

Function run 

Source
pub async fn run<E: FlowEffects>(flow: &Flow, fx: &mut E, trace: &mut Trace)
Expand description

Run a validated flow to completion against fx, filling trace.

Infallible by design: every ending — clean terminal, aborted call, or engine defect — is captured in trace (its outcome, and error for abnormal ends), because the daemon wants to persist and surface what happened regardless. Callers check Trace::is_clean to decide whether to also log a warning.

The trace is caller-owned (see Trace::new) so a caller that races this future against the dialog’s termination signal — and drops it when the caller hangs up mid-flow — still holds the steps executed so far. A cancelled run never writes outcome; it keeps the FlowOutcome::Defect placeholder.