@@ -15,6 +15,7 @@
|
||||
- Fixed OpenAI Completions and Responses providers to send `(no tool output)` instead of `(see attached image)` when a tool result has empty text and no image content, preventing the model from hallucinating image attachments.
|
||||
- Fixed OpenAI Responses and Azure OpenAI Responses requests to avoid sending `max_output_tokens` values below the provider minimum ([#6265](https://github.com/earendil-works/pi/issues/6265)).
|
||||
- Fixed retry classification for Cloudflare 524 timeout responses ([#6239](https://github.com/earendil-works/pi/issues/6239)).
|
||||
- Fixed retry classification for Bun fetch socket-drop errors such as `socket connection was closed`, so transient stream disconnects retry automatically ([#6431](https://github.com/earendil-works/pi/issues/6431)).
|
||||
- Fixed GitHub Copilot extended context window models (Claude Opus 4.7/4.8, Claude Opus 4.6, Claude Sonnet 4.6/5, Claude Fable 5, GPT-5.3 Codex, GPT-5.4, GPT-5.5) to use `contextWindow: 1000000`, preventing premature compaction and under-budgeting ([#6439](https://github.com/earendil-works/pi/issues/6439)).
|
||||
|
||||
### Added
|
||||
|
||||
@@ -54,6 +54,7 @@ const RETRYABLE_PROVIDER_ERROR_PATTERN = buildProviderErrorPattern([
|
||||
"upstream.?connect",
|
||||
"reset before headers",
|
||||
"socket hang up",
|
||||
"socket connection was closed",
|
||||
"timed? out",
|
||||
"timeout",
|
||||
"terminated",
|
||||
|
||||
@@ -6,6 +6,8 @@ const openAIExplicitRetryMessage =
|
||||
"An error occurred while processing your request. You can retry your request, or contact us through our help center at help.openai.com if the error persists. Please include the request ID req_******** in your message.";
|
||||
const bedrockExplicitRetryMessage =
|
||||
'{"message":"The system encountered an unexpected error during processing. Try your request again."}';
|
||||
const bunFetchSocketClosedMessage =
|
||||
"The socket connection was closed unexpectedly. For more information, pass `verbose: true` in the second argument to fetch()";
|
||||
|
||||
describe("provider retry classification", () => {
|
||||
it("matches explicit provider retry guidance", () => {
|
||||
@@ -21,6 +23,14 @@ describe("provider retry classification", () => {
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it("matches Bun fetch socket drop wording", () => {
|
||||
expect(
|
||||
isRetryableAssistantError(
|
||||
fauxAssistantMessage("", { stopReason: "error", errorMessage: bunFetchSocketClosedMessage }),
|
||||
),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it("keeps provider limit errors non-retryable", () => {
|
||||
expect(
|
||||
isRetryableAssistantError(
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
- Fixed oversized bash tool timeouts to fail with a clear validation error instead of being clamped to an immediate timeout ([#6181](https://github.com/earendil-works/pi/issues/6181)).
|
||||
- Fixed the edit tool schema to allow model-invented extra replacement fields instead of rejecting otherwise valid edits ([#6278](https://github.com/earendil-works/pi/issues/6278)).
|
||||
- Fixed new session resets to clear cached label timestamps ([#6354](https://github.com/earendil-works/pi/issues/6354)).
|
||||
- Fixed auto-retry for Bun fetch socket-drop errors reported as `socket connection was closed`, so transient provider disconnects do not end headless runs without retrying ([#6431](https://github.com/earendil-works/pi/issues/6431)).
|
||||
|
||||
### Removed
|
||||
|
||||
|
||||
Reference in New Issue
Block a user