earendil-works/pi · error

Could not parse Anthropic SSE event

Error message

Could not parse Anthropic SSE event ${sse.event}: ${message}; data=${sse.data}; raw=${sse.raw.join("\n")}

What it means

A known Anthropic event type failed JSON parsing (even with repair) in iterateAnthropicEvents. The message bundles the event name, parse error, raw data, and raw lines for diagnosis. It indicates a protocol violation or truncation in the provider's SSE framing rather than an expected API error.

Solutions

  1. Log the raw SSE event and update the parser if the Anthropic event shape changed; retry if transient.
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at packages/ai/src/api/anthropic-messages.ts:490 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/62a90f1cd25aaa12. Report an issue: GitHub.

Appendix: source

Thrown at packages/ai/src/api/anthropic-messages.ts:490

		if (sse.event === "error") {
			throw new Error(sse.data);
		}

		if (!ANTHROPIC_MESSAGE_EVENTS.has(sse.event ?? "")) {
			continue;
		}

		try {
			const event = parseJsonWithRepair<RawMessageStreamEvent>(sse.data);
			if (event.type === "message_start") {
				sawMessageStart = true;
			} else if (event.type === "message_stop") {
				sawMessageEnd = true;
			}
			yield event;
		} catch (error) {
			const message = error instanceof Error ? error.message : String(error);
			throw new Error(
				`Could not parse Anthropic SSE event ${sse.event}: ${message}; data=${sse.data}; raw=${sse.raw.join("\\n")}`,
			);
		}
	}

	if (sawMessageStart && !sawMessageEnd) {
		throw new Error("Anthropic stream ended before message_stop");
	}
}

export const stream: StreamFunction<"anthropic-messages", AnthropicOptions> = (
	model: Model<"anthropic-messages">,
	context: Context,
	options?: AnthropicOptions,
): AssistantMessageEventStream => {
	const stream = new AssistantMessageEventStream();

	(async () => {

View on GitHub (pinned to 4af9d21d3b)