5a5597ebb2d6

latestOpenAPI 3.1.0raw.githubusercontent.com2026-08-126178842.7 MB
conversations

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.

post/v1/conversations/{conversation_id}/turns/stream

Path parameters

conversation_idstring uuid required

Query parameters

traceboolean

Request body

user_messagestring required
for_updateboolean

Deprecated compatibility field; all turns use optimistic guarded finalization and this value has no effect.

include_evidenceboolean
evidence_view'display' | 'full'

Response

Successful Response

{"stackTrail":"paths:/v1/conversations/{conversation_id}/turns/stream:post:responses:200:content:application/json:schema","oasType":"schema","type":"unknown"}