/stream routes, with the same event names the dashboard uses.
Two ways in:
Start and stream
Subscribe to a running task
Already have atask_id? Attach to it. This is the route to use when one process starts
the task and another watches it.
GET /task/{task_id}/stream only streams events for that task_id. When the turn emits
done, the stream can close. Reconnect later only if you need the next active turn.
Event names
Each message carries a
type, a summary, and data. Treat done as end-of-turn, not
end-of-task; a task can run more turns if you continue it.
Streaming the other routes
Every route that advances a task has a streaming twin. Same body, SSE response:Polling instead of streaming
Streaming is optional. PollGET /task/{task_id} when you only care about the result; a
long-running task doesn’t need a held-open connection.
Getting the loop’s exit condition right is subtler than it looks: a finished task returns to
status: "plan", which is also its state before execution. See
Task lifecycle for the complete terminal check and a copy-paste loop.
Related
Task API
The raw SSE interface and route map.
Follow-up tasks
Continue a task and stream the next turn.