@@ -5,6 +5,7 @@
|
|||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
- Fixed Kimi Coding subscription models to report API-equivalent implied costs when models.dev reports zero pricing.
|
- Fixed Kimi Coding subscription models to report API-equivalent implied costs when models.dev reports zero pricing.
|
||||||
|
- Fixed OpenAI Responses early stream endings to be classified as retryable provider errors ([#6727](https://github.com/earendil-works/pi/issues/6727)).
|
||||||
|
|
||||||
## [0.80.10] - 2026-07-16
|
## [0.80.10] - 2026-07-16
|
||||||
|
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ const RETRYABLE_PROVIDER_ERROR_PATTERN = buildProviderErrorPattern([
|
|||||||
// (#4433); Bedrock/Smithy can throw an HTTP/2 no-response error (#3594).
|
// (#4433); Bedrock/Smithy can throw an HTTP/2 no-response error (#3594).
|
||||||
"ended without",
|
"ended without",
|
||||||
"stream ended before message_stop",
|
"stream ended before message_stop",
|
||||||
|
"stream ended before a terminal response event",
|
||||||
"http2 request did not get a response",
|
"http2 request did not get a response",
|
||||||
|
|
||||||
// Provider-requested retry delay cap failures should flow through the outer
|
// Provider-requested retry delay cap failures should flow through the outer
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ const bedrockExplicitRetryMessage =
|
|||||||
const nvidiaNIMResourceExhaustedMessage = "ResourceExhausted: Worker local total request limit reached (288/48)";
|
const nvidiaNIMResourceExhaustedMessage = "ResourceExhausted: Worker local total request limit reached (288/48)";
|
||||||
const bunFetchSocketClosedMessage =
|
const bunFetchSocketClosedMessage =
|
||||||
"The socket connection was closed unexpectedly. For more information, pass `verbose: true` in the second argument to fetch()";
|
"The socket connection was closed unexpectedly. For more information, pass `verbose: true` in the second argument to fetch()";
|
||||||
|
const openAIResponsesEarlyEofMessage = "OpenAI Responses stream ended before a terminal response event";
|
||||||
|
|
||||||
describe("provider retry classification", () => {
|
describe("provider retry classification", () => {
|
||||||
it("matches explicit provider retry guidance", () => {
|
it("matches explicit provider retry guidance", () => {
|
||||||
@@ -37,6 +38,14 @@ describe("provider retry classification", () => {
|
|||||||
).toBe(true);
|
).toBe(true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("matches OpenAI Responses streams that end before terminal events", () => {
|
||||||
|
expect(
|
||||||
|
isRetryableAssistantError(
|
||||||
|
fauxAssistantMessage("", { stopReason: "error", errorMessage: openAIResponsesEarlyEofMessage }),
|
||||||
|
),
|
||||||
|
).toBe(true);
|
||||||
|
});
|
||||||
|
|
||||||
it("keeps provider limit errors non-retryable", () => {
|
it("keeps provider limit errors non-retryable", () => {
|
||||||
expect(
|
expect(
|
||||||
isRetryableAssistantError(
|
isRetryableAssistantError(
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
|
|
||||||
- Fixed obsolete custom UI, custom tool, and custom editor examples in the extension documentation ([#6735](https://github.com/earendil-works/pi/issues/6735)).
|
- Fixed obsolete custom UI, custom tool, and custom editor examples in the extension documentation ([#6735](https://github.com/earendil-works/pi/issues/6735)).
|
||||||
- Fixed Kimi Coding sessions to show API-equivalent implied costs with the subscription indicator.
|
- Fixed Kimi Coding sessions to show API-equivalent implied costs with the subscription indicator.
|
||||||
|
- Fixed OpenAI Responses early stream endings to trigger automatic retry instead of ending the agent run ([#6727](https://github.com/earendil-works/pi/issues/6727)).
|
||||||
|
|
||||||
## [0.80.10] - 2026-07-16
|
## [0.80.10] - 2026-07-16
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user