Adds a waiting run state so a flow step can suspend for external input
and resume durably — stage A of the durable-agentic-workflow design in
#4816.
- flow.Await(key, prompt) / flow.AwaitStep(...): a StepFunc that suspends
the run. runFrom recognizes the signal, checkpoints the run with status
"waiting" (recording what it awaits), and returns cleanly — a suspend is
not a failure, and it is not retried or graded.
- Flow.ResumeWith(ctx, runID, input): completes the awaited step with the
injected input (which becomes that step's output state) and continues
from the next step.
- Flow.Waiting(ctx): lists suspended runs with their Await metadata.
- ResumePending/Pending skip waiting runs — they need input, not a
restart. Existing crash-resume (Resume) is unchanged.
Additive: no signature or default-behavior changes. Await ergonomics
(sentinel-return) are the default proposed in #4816; open to AwaitStep-kind
instead if preferred.
Claude-Session: https://claude.ai/code/session_01CmdEY7pYmV5zzwCjNJ4ykL
Co-authored-by: Claude <noreply@anthropic.com>