{"record":{"id":"3615bed9cf928ed4","repo":"diegosouzapw/OmniRoute","slug":"codex-sse-payload-parse-failed-using-raw-payloa","errorCode":null,"errorMessage":"[codex] SSE payload parse failed, using raw payload","messagePattern":"\\[codex\\] SSE payload parse failed, using raw payload","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"open-sse/executors/codex.ts","lineNumber":734,"sourceCode":"\nexport function encodeResponseSseEvent(raw: string): { sse: string; terminal: boolean } {\n  let eventType = \"message\";\n  let payload = raw;\n  let terminal = false;\n\n  try {\n    const parsed = JSON.parse(raw);\n    if (parsed && typeof parsed.type === \"string\" && parsed.type.trim()) {\n      eventType = parsed.type.trim();\n      if (eventType === \"error\" || eventType === \"response.failed\") {\n        const failed = toCodexResponseFailedEvent(parsed as Record<string, unknown>);\n        payload = JSON.stringify(failed);\n        eventType = \"response.failed\";\n      }\n      terminal = eventType === \"response.completed\" || eventType === \"response.failed\";\n    }\n  } catch {\n    console.warn(\"[codex] SSE payload parse failed, using raw payload\");\n    // Keep message as the generic SSE event for non-JSON upstream payloads.\n  }\n\n  // Env-gated: drop non-standard `codex.*` events (notably `codex.rate_limits`)\n  // before they reach the client. They are NOT part of the OpenAI Responses API\n  // and break strict consumers: the OpenAI SDK's responses.stream() chokes on\n  // the unknown event type / empty data and tears the stream down, surfacing as\n  // \"Invalid state: Controller is already closed\". The earlier empty-payload\n  // check below never caught codex.rate_limits — over WS the frame carries a\n  // non-empty JSON payload (`{\"type\":\"codex.rate_limits\", ...}`), so\n  // `!payload.trim()` is false. Match by event type instead. Default ON via\n  // OMNIROUTE_CODEX_DROP_NONSTANDARD_EVENTS (#11014); the HTTP transport is handled\n  // separately by filterNonstandardCodexSse, since super.execute forwards the\n  // upstream stream verbatim and never runs this function).\n  if (eventType.startsWith(\"codex.\") && codexDropNonstandardEvents()) {\n    return { sse: \"\", terminal };\n  }\n","sourceCodeStart":716,"sourceCodeEnd":752,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/open-sse/executors/codex.ts#L716-L752","documentation":"Error \"[codex] SSE payload parse failed, using raw payload\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at open-sse/executors/codex.ts:734 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"}