Emit text deltas; a valid final may publish before terminal success.
Source code in src/symfonic/platform/transport_stream.py
| async def plain_events(
stream: AsyncIterator[Any], prepared: Any,
) -> AsyncIterator[str]:
"""Emit text deltas; a valid final may publish before terminal success."""
deltas = ""
emitted_visible = False
citations = CitationTagFilter()
try:
async for event in stream:
kind = kind_of(event)
if kind == "text_delta":
text = getattr(event, "text", None)
if isinstance(text, str) and text:
deltas += text
visible = citations.feed(text)
if visible:
emitted_visible = True
yield f"data: {json.dumps({'chunk': visible})}\n\n"
elif kind == "done":
try:
answer = visible_answer(final_answer_of(event, deltas))
except UnusableFinal:
yield f"data: {json.dumps({'error': _UNUSABLE})}\n\n"
yield "data: [DONE]\n\n"
return
if prepared is not None:
await prepared.publish(answer)
tail = citations.flush()
if tail:
emitted_visible = True
yield f"data: {json.dumps({'chunk': tail})}\n\n"
if not emitted_visible:
yield f"data: {json.dumps({'chunk': answer})}\n\n"
yield "data: [DONE]\n\n"
return
elif kind in _TERMINAL:
yield f"data: {json.dumps({'error': _UNUSABLE})}\n\n"
yield "data: [DONE]\n\n"
return
yield f"data: {json.dumps({'error': _UNUSABLE})}\n\n"
yield "data: [DONE]\n\n"
finally:
await _close(stream)
|