Run one v2 conversation turn with an SSE response
SSE counterpart to POST /conversations/{id}/turns.
Token streaming: the v2 ConversationTurnDriver prepares a snapshot,
computes without a checked-out connection, and then finalizes atomically. It accepts an
on_token callback that
the orchestrators/runnables fire as the answer streams (speculative losers
and transferring members are filtered upstream — a Supervisor buffers the
speculation and flushes only on continue). We bridge that push-callback
to this pull-generator with an :class:asyncio.Queue: the driver runs as a
task that enqueues each token delta, and the generator drains the queue into
delta frames as they arrive. When the driver finishes we emit a
complete frame carrying the v2 TurnResponse JSON (including the
server-measured turn_ttft_ms). The wire contract (delta /
complete / error frames) matches /v1/runtime/turn/stream so the
UI needs no change.
DB session lifecycle: the per-request session commits admission before the response is
constructed, is connection-free while the driver task computes, and commits finalization
before the complete frame. The generator only touches the session after the driver task
has finished, so the two never race on it.
Authorizations
Path Parameters
Query Parameters
Body
Drive one turn of a v2 conversation (Phase F1).
Response
Successful Response