Cherry-picked from PR #2816 onto current upstream/main, resolving conflicts from PR #3015's merge (which added retry_after to ApiError but some construction sites were missing it). Commits preserved: - ade85398: API timeout config, Retry-After header, configurable retry - TimeoutConfig in HTTP client builder (connect 30s, request 5min) - CLAW_API_CONNECT_TIMEOUT and CLAW_API_REQUEST_TIMEOUT env vars - Retry-After header parsing on 429 responses - ApiTimeoutConfig in runtime config (settings.json) - 8a883430: retry 400 responses with transient gateway error bodies - Detects known gateway phrases in 400 response bodies - Marks them as retryable instead of hard-failing - ed91a61e: add 'no parseable body' to CONTEXT_WINDOW_ERROR_MARKERS - Some providers return 400 with 'no parseable body' for oversized requests instead of a proper context_length_exceeded error Commits skipped (already in upstream via PR #3015): - 453ab642: optional id field (already merged) - baa8d1ba: HTML detection in streaming (already merged) - 33d2f789: JSON error detection in streaming (already merged) 8 files changed, 299 insertions, 80 deletions |
||
|---|---|---|
| .. | ||
| api | ||
| claw-analog | ||
| claw-rag-service | ||
| commands | ||
| compat-harness | ||
| mock-anthropic-service | ||
| plugins | ||
| runtime | ||
| rusty-claude-cli | ||
| telemetry | ||
| tools | ||