diff --git a/open-sse/utils/stream.ts b/open-sse/utils/stream.ts index 779b8285f7..2b16cfe64d 100644 --- a/open-sse/utils/stream.ts +++ b/open-sse/utils/stream.ts @@ -2778,7 +2778,7 @@ export function createSSETransformStreamWithLogger( body: unknown = null, onComplete: ((payload: StreamCompletePayload) => void) | null = null, apiKeyInfo: unknown = null, - onFailure: ((payload: StreamFailurePayload) => void | Promise) | null = null, + onFailure: ((payload: StreamFailurePayload) => boolean | void | Promise) | null = null, copilotCompatibleReasoning = false, suppressThinkClose = false, customToolNames: ReadonlySet = new Set(), @@ -2813,7 +2813,7 @@ export function createPassthroughStreamWithLogger( body: unknown = null, onComplete: ((payload: StreamCompletePayload) => void) | null = null, apiKeyInfo: unknown = null, - onFailure: ((payload: StreamFailurePayload) => void | Promise) | null = null, + onFailure: ((payload: StreamFailurePayload) => boolean | void | Promise) | null = null, clientResponseFormat: string | null = null, requestToolIdentityMap: Map | null = null ) { diff --git a/tests/unit/stream-failure-499-classification.test.ts b/tests/unit/stream-failure-499-classification.test.ts index a0aebd1404..4c4e66906c 100644 --- a/tests/unit/stream-failure-499-classification.test.ts +++ b/tests/unit/stream-failure-499-classification.test.ts @@ -48,13 +48,14 @@ test("createStreamFailureFinalizers: caller classification survives into respons persistFailureUsage: () => {}, }); - handleStreamFailure({ + const handled = handleStreamFailure({ status: 502, message: "Upstream stream error", code: "stream_pipeline_error", type: "stream_error", }); + assert.equal(handled, true, "the callback contract reports that the stream failure was handled"); const body = captured as { error: { type?: string; code?: string } }; assert.equal(body.error.type, "stream_error"); assert.equal(body.error.code, "stream_pipeline_error");