runStarted immediately when a run is
live, delivers cell snapshots, signals runComplete / runError, and sends a
heartbeat every ~20 seconds. Stays open across runs — your loop decides when
to stop.
Example
Request
Events
Every event is aWatchChatEvent with a discriminated payload and a
cursor: string you can store for reconnects.
To re-attach after a disconnect or page reload, pass the last cell id you
rendered as
latestCompleteCellId — missed cells replay, then live events
continue. This is how the
chat-demo
survives mid-run reloads.