earendil-works/pi · error · Error
OpenAI Responses stream ended before a terminal response eve
Error message
OpenAI Responses stream ended before a terminal response event
What it means
Error "OpenAI Responses stream ended before a terminal response event" thrown in earendil-works/pi.
Source
Thrown at packages/ai/src/api/openai-responses-shared.ts:758
} else if (event.type === "response.completed" || event.type === "response.incomplete") {
finalizeResponse(event.response);
} else if (event.type === "error") {
throw new Error(`Error Code ${event.code}: ${event.message}` || "Unknown error");
} else if (event.type === "response.failed") {
sawTerminalResponseEvent = true;
output.rawStopReason = event.response?.status;
const error = event.response?.error;
const details = event.response?.incomplete_details;
const msg = error
? `${error.code || "unknown"}: ${error.message || "no message"}`
: details?.reason
? `incomplete: ${details.reason}`
: "Unknown error (no error details in response)";
throw new Error(msg);
}
}
if (!sawTerminalResponseEvent) {
throw new Error("OpenAI Responses stream ended before a terminal response event");
}
}
function mapStopReason(
status: OpenAI.Responses.ResponseStatus | undefined,
incompleteReason?: string,
): { stopReason: StopReason; errorMessage?: string } {
if (!status) return { stopReason: "stop" };
switch (status) {
case "completed":
return { stopReason: "stop" };
case "incomplete":
if (incompleteReason === "max_output_tokens") {
return { stopReason: "length" };
}
return {
stopReason: "error",
errorMessage: incompleteReasonView on GitHub (pinned to 4af9d21d3b)
Solutions
- Retry; check for stream truncation before the terminal response event.
When it happens
Trigger: Thrown at packages/ai/src/api/openai-responses-shared.ts:758 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of earendil-works/pi@4af9d21d3b (2026-08-24).
Data as JSON: /api/errors/70287eb172d60e03.
Report an issue: GitHub.