883a93ce55
Fixes #271
42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { describe, expect, it } from "bun:test";
|
|
import type { AssistantMessage } from "@oh-my-pi/pi-ai";
|
|
import { isContextOverflow } from "@oh-my-pi/pi-ai/utils/overflow";
|
|
|
|
function createErrorMessage(errorMessage: string): AssistantMessage {
|
|
return {
|
|
role: "assistant",
|
|
content: [{ type: "text", text: "" }],
|
|
api: "anthropic-messages",
|
|
provider: "anthropic",
|
|
model: "claude-sonnet-4-5",
|
|
usage: {
|
|
input: 0,
|
|
output: 0,
|
|
cacheRead: 0,
|
|
cacheWrite: 0,
|
|
totalTokens: 0,
|
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
},
|
|
stopReason: "error",
|
|
errorMessage,
|
|
timestamp: Date.now(),
|
|
};
|
|
}
|
|
|
|
describe("isContextOverflow - HTTP 413 variants", () => {
|
|
it("detects generic 413 payload-too-large errors", () => {
|
|
const message = createErrorMessage("413 Request Entity Too Large: payload too large for request body");
|
|
expect(isContextOverflow(message)).toBe(true);
|
|
});
|
|
|
|
it("detects Anthropic request size overflow wording", () => {
|
|
const message = createErrorMessage("Request exceeds the maximum size allowed by this model");
|
|
expect(isContextOverflow(message)).toBe(true);
|
|
});
|
|
|
|
it("does not classify unrelated 413 errors as overflow", () => {
|
|
const message = createErrorMessage("413 Forbidden");
|
|
expect(isContextOverflow(message)).toBe(false);
|
|
});
|
|
});
|