- • DAG executor emits per-node lifecycle events
- • node_output events carry streaming text chunks
- • Projector writes each event to node_runs DB
- • SSE relay fans events to all open EventSources
- • Node list with status badges (running/done/failed)
- • Click any row to expand full output body
- • Output streams in real-time as chunks arrive
- • Timing and error details shown per node
- • approval node fires approval_requested event
- • Engine suspends — remaining nodes do not run
- • Panel shows Approve / Reject buttons
- • POST /approve resumes execution from that node