Replies: 1 comment
|
A focused fix for the Commit c045b1e026bac58e688f36f8480b75b30437caf5 The classifier recognizes The regression tests reproduce Related work: Discussion #4341 already proposes broader WebSocket classification in valkia's patch. Our change is a narrower alternative for the specific This addresses the classification portion of #5666; it does not implement automatic WebSocket-to-SSE fallback. Sharing here because the contribution guide currently directs external bug reports to Discussions and does not accept external PRs. |
Uh oh!
There was an error while loading. Please reload this page.
Context
When using the OpenAI Codex OAuth route in dsh for a long-running session, a turn can occasionally stop with:
This is intermittent and appears after the Responses WebSocket has started streaming.
What seems to happen
In dsh 0.1.1-rc.2, pi-ai's
openai-codex-responsestransport surfaces the close asWebSocket closed 1006.dsh-llm-pi-aiclassifies several transport messages asTRANSPORT, but the numeric close form does not match its transport patterns, so it becomesPI_AI_ERROR.The
dsh-llm-retryplugin's normal policy retriesTRANSPORT,SERVER,TIMEOUT,RATE_LIMIT, andEMPTY_RESPONSEwith bounded backoff. It does not retryPI_AI_ERROR, so the failed step ends abruptly.Proposed idea
WebSocket closedwith an optional numeric close code asTRANSPORT, while preserving non-retryable classification for auth, quota, invalid-request, and context errors.A low-risk workaround today is setting
transport: sseon the OpenAI Personal route. In my local dsh setup this avoids the WebSocket path and the same request completes, but it sacrifices WebSocket session reuse when the WebSocket path is healthy.The existing
dsh-llm-retryimplementation already has the durable event model, so the main gap seems to be error classification and safe transport fallback rather than an unbounded retry loop.Related upstream report: earendil-works/pi#4629
All reactions