Files
9router/tests/unit
decolua 9300121366 fix(stream): report aborts after HTTP 200 in-band instead of closing silently
A stream that stalled or lost its upstream was closed with no terminal frame
at all, so clients saw "200 OK, a few chunks, then nothing" and could not tell
a truncated reply from a finished one. The Responses passthrough path already
synthesized response.failed; every other client format got nothing.

The watchdog now hands its reason ("stream stall timeout" or "upstream
connection lost") to onAbortTerminal, and buildStreamErrorBytes frames it per
client format: OpenAI-compatible clients get data: {"error":{...}} followed by
data: [DONE], Anthropic clients get `event: error`. The error frame always
precedes [DONE] (openai-python raises APIError on any data payload carrying an
error key), and no synthetic finish_reason is ever emitted — a truncated
stream must not look like a clean stop.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-16 20:04:10 +07:00
..
2026-09-05 22:57:00 +07:00
2026-06-15 18:18:04 +07:00
2026-06-15 18:18:04 +07:00
2026-06-15 18:18:04 +07:00
2026-06-15 18:18:04 +07:00
2026-06-15 18:18:04 +07:00
2026-06-15 18:18:04 +07:00