fix: handle Anthropic overloaded_error gracefully (#832) (thanks @danielz1z)
This commit is contained in:
@@ -209,6 +209,11 @@ describe("classifyFailoverReason", () => {
|
||||
expect(classifyFailoverReason("resource has been exhausted")).toBe(
|
||||
"rate_limit",
|
||||
);
|
||||
expect(
|
||||
classifyFailoverReason(
|
||||
'{"type":"error","error":{"type":"overloaded_error","message":"Overloaded"}}',
|
||||
),
|
||||
).toBe("rate_limit");
|
||||
expect(classifyFailoverReason("invalid request format")).toBe("format");
|
||||
expect(classifyFailoverReason("credit balance too low")).toBe("billing");
|
||||
expect(classifyFailoverReason("deadline exceeded")).toBe("timeout");
|
||||
@@ -265,6 +270,15 @@ describe("formatAssistantErrorText", () => {
|
||||
"Message ordering conflict",
|
||||
);
|
||||
});
|
||||
|
||||
it("returns a friendly message for Anthropic overload errors", () => {
|
||||
const msg = makeAssistantError(
|
||||
'{"type":"error","error":{"details":null,"type":"overloaded_error","message":"Overloaded"},"request_id":"req_123"}',
|
||||
);
|
||||
expect(formatAssistantErrorText(msg)).toBe(
|
||||
"The AI service is temporarily overloaded. Please try again in a moment.",
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe("sanitizeToolCallId", () => {
|
||||
|
||||
@@ -419,7 +419,10 @@ const ERROR_PATTERNS = {
|
||||
"resource_exhausted",
|
||||
"usage limit",
|
||||
],
|
||||
overloaded: [/overloaded_error|"type"\s*:\s*"overloaded"/i, "overloaded"],
|
||||
overloaded: [
|
||||
/overloaded_error|"type"\s*:\s*"overloaded_error"/i,
|
||||
"overloaded",
|
||||
],
|
||||
timeout: [
|
||||
"timeout",
|
||||
"timed out",
|
||||
|
||||
Reference in New Issue
Block a user