Handle budget_reached as a terminal session budget error (#59228)

## What changed

Map provider `budget_reached` errors to `SessionBudgetExceeded` for HTTP 400 responses and streaming failures. End SSE streams immediately on this error, ignoring retry headers and later completion events, and display `budget reached` in the TUI.

## Testing

Add coverage for HTTP error classification, immediate SSE termination without retries, WebSocket error delivery and subsequent request recovery, and TUI error rendering and task-state cleanup.

GitOrigin-RevId: 6a62d699cdb9cb446214cacfacd0c9ed68bf21a6
This commit is contained in:
yuning-oai
2026-11-03 21:02:34 +00:00
committed by copyberry
parent 8960c363c6
commit 0ed9d6fa4b
13 changed files with 143 additions and 77 deletions
+1 -1
View File
@@ -105,7 +105,7 @@ pub enum CodexErrorDetails {
#[error("turn aborted. Something went wrong? Hit `/feedback` to report the issue.")]
TurnAborted,
#[error("shared rollout token budget exhausted")]
#[error("budget reached")]
SessionBudgetExceeded,
/// Returned by ResponsesClient when the SSE stream disconnects or errors out **after** the HTTP