chore(vendor): import pi 1.3.0
Imported as a linear vendor commit so forge rebases do not replay the upstream root tree. git-subtree-dir: third_party/pi git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
This commit is contained in:
1 parent
719370c8f7
commit
6081e3e325
1743 files changed
+205459
-131704
No files matched your search
+22
-2
@@ -2,12 +2,12 @@ import { describe, expect, it } from "vitest";
|
||||
import type { AssistantMessage } from "../src/types.ts";
|
||||
import { isContextOverflow, isRecoverableLength } from "../src/utils/overflow.ts";
|
||||
|
||||
function createErrorMessage(errorMessage: string): AssistantMessage {
|
||||
function createErrorMessage(errorMessage: string, provider = "ollama"): AssistantMessage {
|
||||
return {
|
||||
role: "assistant",
|
||||
content: [],
|
||||
api: "openai-completions",
|
||||
provider: "ollama",
|
||||
provider,
|
||||
model: "qwen3.5:35b",
|
||||
usage: {
|
||||
input: 0,
|
||||
@@ -35,6 +35,18 @@ describe("isContextOverflow", () => {
|
||||
expect(isContextOverflow(message, 32768)).toBe(true);
|
||||
});
|
||||
|
||||
it("detects z.ai prompt-too-long errors", () => {
|
||||
// Regression for #9805.
|
||||
const message = createErrorMessage('400 {"code":"1261","message":"Prompt too long"}', "zai");
|
||||
expect(isContextOverflow(message, 1048576)).toBe(true);
|
||||
});
|
||||
|
||||
it("detects z.ai CN endpoint prompt-exceeds-max-length errors", () => {
|
||||
// Regression for #10208.
|
||||
const message = createErrorMessage('400 {"code":"1261","message":"Prompt exceeds max length"}', "zai");
|
||||
expect(isContextOverflow(message, 1048576)).toBe(true);
|
||||
});
|
||||
|
||||
it("detects Together AI context length errors", () => {
|
||||
const message = createErrorMessage(
|
||||
"400 The input (516368 tokens) is longer than the model's context length (262144 tokens).",
|
||||
@@ -80,6 +92,14 @@ describe("isContextOverflow", () => {
|
||||
expect(isContextOverflow(message, 32768)).toBe(false);
|
||||
});
|
||||
|
||||
it("only treats bodyless 400 and 413 errors as overflow for Cerebras", () => {
|
||||
// Regression for #9482.
|
||||
for (const errorMessage of ["400 status code (no body)", "413 status code (no body)"]) {
|
||||
expect(isContextOverflow(createErrorMessage(errorMessage, "cerebras"), 131072)).toBe(true);
|
||||
expect(isContextOverflow(createErrorMessage(errorMessage, "opencode-go"), 1000000)).toBe(false);
|
||||
}
|
||||
});
|
||||
|
||||
it("does not treat Bedrock throttling 'Too many tokens' as overflow", () => {
|
||||
// Bedrock returns this for HTTP 429 rate limiting, NOT context overflow.
|
||||
// formatBedrockError uses a human-readable prefix for ThrottlingException.
|
||||
|
||||
Reference in new issue
Block a user