diff --git a/src/betas.test.ts b/src/betas.test.ts index d413b24..17400df 100644 --- a/src/betas.test.ts +++ b/src/betas.test.ts @@ -202,6 +202,20 @@ describe("betas", () => { ) }) + it("isLongContextError treats extra-usage quota responses as long-context fallbacks", () => { + assert.equal( + isLongContextError( + "You're out of extra usage. Add more at claude.ai/settings/usage and keep going.", + ), + true, + ) + assert.equal( + isLongContextError("Extra usage is required for long context requests"), + true, + ) + assert.equal(isLongContextError("plain unrelated error"), false) + }) + it("getModelBetas filters out excluded betas when provided", () => { const betaToExclude = config.baseBetas[config.baseBetas.length - 1] const betaToKeep = config.baseBetas[0] diff --git a/src/betas.ts b/src/betas.ts index fe05f11..af77240 100644 --- a/src/betas.ts +++ b/src/betas.ts @@ -47,10 +47,13 @@ export function resetExcludedBetas(): void { } export function isLongContextError(responseBody: string): boolean { + const normalized = responseBody.toLowerCase() return ( responseBody.includes( "Extra usage is required for long context requests", - ) || responseBody.includes("long context beta is not yet available") + ) || + responseBody.includes("long context beta is not yet available") || + normalized.includes("you're out of extra usage") ) }