Open
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.
This PR introduces a retry loop and rate-limit wait mechanism for Claude Code in
ralph.sh.When running Ralph on long tasks, hitting Claude's rate limits would previously fail or halt the agent. This PR adds a resilient retry loop in ralph.sh that detects rate limit responses from Claude, correctly parses the reset time logic using python, pauses the exact required duration (or falls back to a default wait time), and cleanly resumes the operation.
Changes made:
🛡️ Add resilient inner retry loop inside ralph.sh for Claude Code.
🕒 Create lib/rate-limit.sh with a Python utility to accurately parse and compute time differences for quota reset messages.
🧪 Enhance test suite with test-rate-limit.sh to cover Claude rate limit parsing, fallback logic, and to prove the Amp execution path remains functioning.
How to test: You can run the included smoke test script to verify that the sleep intervals and retry behaviors trigger correctly: