{"record":{"id":"f7922f575d72f697","repo":"diegosouzapw/OmniRoute","slug":"claude-web-stream-ended-before-message-stop","errorCode":null,"errorMessage":"Claude Web stream ended before message_stop","messagePattern":"Claude Web stream ended before message_stop","errorType":"exception","errorClass":"ClaudeWebProtocolError","httpStatus":null,"severity":"error","filePath":"open-sse/executors/claude-web/stream.ts","lineNumber":418,"sourceCode":"  for await (const data of decodeSseData(source, control)) {\n    if (data === \"[DONE]\") {\n      protocolFailure(state, \"DONE arrived before message_stop\");\n    }\n\n    const { event, eventType } = parseProtocolEvent(data, state);\n    if (KNOWN_METADATA_EVENTS.has(eventType)) {\n      yield { kind: \"metadata\", eventType, data: projectMetadataEvent(eventType, event) };\n      continue;\n    }\n\n    const semanticEvent = dispatchProtocolEvent(eventType, event, state);\n    if (!semanticEvent) continue;\n    yield semanticEvent;\n    if (semanticEvent.kind === \"finish\") return;\n  }\n\n  if (control.cancelled) return;\n  throw new ClaudeWebProtocolError(\"Claude Web stream ended before message_stop\");\n}\n\nfunction openAiFinishReason(stopReason: string): string {\n  if (stopReason === \"max_tokens\") return \"length\";\n  if (stopReason === \"tool_use\") return \"tool_calls\";\n  return \"stop\";\n}\n\nfunction makeChunk(\n  id: string,\n  created: number,\n  options: ClaudeWebStreamOptions,\n  delta: Record<string, unknown>,\n  finishReason: string | null,\n  event?: { type: string; data: Record<string, unknown> }\n): Record<string, unknown> {\n  return {\n    id,","sourceCodeStart":400,"sourceCodeEnd":436,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/open-sse/executors/claude-web/stream.ts#L400-L436","documentation":"Error \"Claude Web stream ended before message_stop\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at open-sse/executors/claude-web/stream.ts:418 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}