Distinguish policy-restricted capacity failures from server overloads (#57452)

## What changed

- Recognize `policy_capacity_unavailable` in HTTP and streaming API errors and expose it as `policyCapacityUnavailable` through the app-server protocol and generated bindings.
- Display “Policy-restricted capacity is unavailable. Please try again later.” while preserving overload retry behavior based on `Retry-After`.
- Handle the new error in TUI overload rendering, reviewer retries, and error telemetry.

## Testing

Add coverage for HTTP and streaming error classification, retry advice, WebSocket terminal error attribution, protocol serialization, and TUI rendering with and without an upstream message.

GitOrigin-RevId: 1b9536fba1e11cc891dcf689aee35410d82f5412
This commit is contained in:
Tom Leach (@toml)
2026-10-27 13:31:38 +00:00
committed by copyberry
parent 824b7666fb
commit 6a6e2fb1f0
42 changed files with 232 additions and 54 deletions
@@ -513,6 +513,7 @@ class CodexErrorInfoValue(str, Enum):
flex_unavailable = "flexUnavailable"
server_overloaded = "serverOverloaded"
model_not_found = "modelNotFound"
policy_capacity_unavailable = "policyCapacityUnavailable"
cyber_policy = "cyberPolicy"
misalignment_policy_violation = "misalignmentPolicyViolation"
too_many_denials = "tooManyDenials"