-
Stefy Lanza (nextime / spora ) authored
Streaming was scaffolded (stream_queue, _publish_stream_response, wait_for_stream_event, _iter_broker_stream_chunks) but send_request always awaited the terminal future and then popped the pending entry in finally — so by the time _broker_stream began consuming, the stream was over and its queue was gone. Result: the whole reply arrived at once. Fixes: - send_request: for streaming requests, return a {event:"stream_start"} immediately and do NOT pop _pending in finally — the consumer drives it. Pop on error. - _publish_stream_response: queue EVERY event (chunks AND the terminal done) so the consumer's loop receives the end marker; still resolves the future for safety. - finish_stream(): new — removes the streaming request's _pending once drained. - wait_for_stream_event: simplified to a queue.get (dropped the event_log path). - providers/coderai._iter_broker_stream_chunks: wrap in try/finally that calls finish_stream(request_id) on completion/error; treat stream_start as a no-data continue. Pairs with the coderai-side change that emits chunk/done envelopes. Co-Authored-By:Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011DDv7BchtZQWsnPG6Jm49m
3c7fc7c2