raw field.
Event types
Unknown internal event types are explicitly dropped by the translation layer.
Snapshot semantics
message.updated is last-write-wins. Use part_id as the key and replace the stored snapshot instead of concatenating deltas. A later message.completed marks the assistant result as final.
Resume and replay
Durable frames have an SSEid equal to the coordinator event sequence. snapshot and transient sandbox.status frames intentionally have no SSE ID because they cannot be rewound.
On reconnect, send the last processed durable ID in Last-Event-ID. The since query parameter is the fallback for clients that cannot set the header. A fresh connection starts with a snapshot and follows the live tail; request ?since=0 to replay retained history.
The stream sends keepalive pings and can cover the complete create-to-boot window before an agent session exists. Network delivery is at least once within retention. Deduplicate by durable id, and use the JSON events page plus GET /sandboxes/{id} to recover from a stale or pruned cursor.
Browser EventSource cannot set the bearer authorization header. Use a fetch-based SSE reader.