Recognize Claude weekly limits (#16)

Recognize Claude’s actual weekly-limit message and continue to the next configured profile.

The regression uses the production message from the failed migration review. Root suite: 38 passed.

Reviewed-on: #16
Co-authored-by: Danny Kim <temeddix@gmail.com>
Co-committed-by: Danny Kim <temeddix@gmail.com>
This commit was merged in pull request #16.
This commit is contained in:
Danny Kim
2026-09-23 20:27:47 +00:00
committed by temeddix
parent 535a7a486c
commit 3626db0876
2 changed files with 2 additions and 2 deletions
+1 -1
View File
@@ -5,7 +5,7 @@ export type BotProfile = {
}; };
function isUsageExhausted(error: unknown): boolean { function isUsageExhausted(error: unknown): boolean {
return /(?:usage|rate) limit|hit your limit|insufficient_quota|exceeded your current quota|too many requests|(?:api error|http error|http|status(?: code)?)[ :]+4(?:02|29)\b/i return /(?:usage|rate) limit|hit your (?:weekly )?limit|insufficient_quota|exceeded your current quota|too many requests|(?:api error|http error|http|status(?: code)?)[ :]+4(?:02|29)\b/i
.test(String(error)); .test(String(error));
} }
+1 -1
View File
@@ -33,7 +33,7 @@ Deno.test("recognizes Claude's weekly limit message", async () => {
], ],
(profile) => { (profile) => {
if (profile.type === "claude") { if (profile.type === "claude") {
throw new Error("You've hit your limit · resets Monday"); throw new Error("You've hit your weekly limit · resets 12am (UTC)");
} }
return Promise.resolve("fallback"); return Promise.resolve("fallback");
}, },