Repository navigation
feat: add bounded chat upstream failover - #100
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When a chat upstream is unavailable or quota-limited, SkillClaw previously retried the same endpoint six times. Add up to three explicitly configured fallback endpoints and advance immediately on transport failures and HTTP 408/429/500/502/503/504. Each endpoint gets fresh headers and its own key/model; nonretryable HTTP errors do not replay requests elsewhere.
Share six attempts and the existing request timeout across the operation, including compatibility retries and Retry-After. Preserve streaming-required compatibility collection and reject invalid fallback config. Keep saved fallback entries when rerunning setup. Document the YAML and the chat-only scope (native Responses, Bedrock, and standalone evolve-server are unchanged).
Validation: 23 new tests cover routing, credentials, OpenRouter extension isolation, no retry on invalid/auth requests, total deadline, quota windows, compatibility, and config validation. Full suite: 175 passed, 1 credential-dependent skip. Ruff 0.12.2 lint/format and diff check pass. No live provider calls.
Closes #85.