Files
OmniRoute/tests
Diego Rodrigues de Sa e Souza 50543c31f7 fix(sse): surface mid-stream Gemini errors instead of a truncated 200 (#4177) (#4182)
When an upstream Gemini SSE stream emitted partial content followed by a JSON
error object ({"error":{"code":503,...,"status":"UNAVAILABLE"}}) instead of a
candidates payload, the gemini→openai translator dropped it: the no-candidate
branch only handled promptFeedback and returned null otherwise, so the stream
ended with finish_reason "stop" and the client got HTTP 200 with a truncated
body — masking the failure and skipping combo fallback.

geminiToOpenAIResponse now detects an error object (optionally wrapped in
response), records it as state.upstreamError preserving the real status (503/
UNAVAILABLE, or 429 for RESOURCE_EXHAUSTED), and lets stream.ts error the stream
out via the existing onFailure/buildErrorBody/controller.error path — the same
mechanism the openai-responses translator already uses.

Closes #4177

Co-authored-by: hartmark <hartmark@users.noreply.github.com>
2026-06-18 13:17:46 -03:00
..
2026-06-17 19:26:32 -03:00
2026-05-23 01:46:59 -03:00
2026-06-17 19:26:32 -03:00
2026-06-10 13:49:08 -03:00
2026-06-13 17:27:40 -03:00