From cd511064c38bd62eac7be2ef0c5ea383648d0751 Mon Sep 17 00:00:00 2001 From: aayushbaluni <73417844+aayushbaluni@users.noreply.github.com> Date: Wed, 15 Apr 2026 15:31:28 +0530 Subject: [PATCH 1/2] fix(ai-openai): deduplicate response.output items to prevent invalid JSON concatenation OpenAI's Responses API intermittently returns duplicate OutputMessage items in response.output with identical IDs and content. When this happens, all text parts are pushed and later concatenated, producing invalid JSON like {"a":1}{"a":1} that fails schema parsing. Skip duplicate output items by tracking seen IDs before processing. This handles the known OpenAI API bug documented at: https://community.openai.com/t/1306731 Fixes #6146 Made-with: Cursor --- packages/ai/openai/src/OpenAiLanguageModel.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/ai/openai/src/OpenAiLanguageModel.ts b/packages/ai/openai/src/OpenAiLanguageModel.ts index c4fef761467..e9b56820874 100644 --- a/packages/ai/openai/src/OpenAiLanguageModel.ts +++ b/packages/ai/openai/src/OpenAiLanguageModel.ts @@ -567,7 +567,16 @@ const makeResponse: ( timestamp: DateTime.formatIso(DateTime.unsafeFromDate(createdAt)) }) + // Deduplicate output items by ID to handle OpenAI Responses API bug + // where duplicate OutputMessage items appear in response.output + const seenOutputIds = new Set() for (const part of response.output) { + if (part.id && seenOutputIds.has(part.id)) { + continue + } + if (part.id) { + seenOutputIds.add(part.id) + } switch (part.type) { case "message": { for (const contentPart of part.content) { From ea6159c1d163d2ffe6142a09ad3bc4654ed8070c Mon Sep 17 00:00:00 2001 From: aayushbaluni Date: Wed, 15 Apr 2026 18:13:11 +0530 Subject: [PATCH 2/2] chore: add changeset for @effect/ai-openai patch Made-with: Cursor --- .changeset/fix-deduplicate-openai-output.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/fix-deduplicate-openai-output.md diff --git a/.changeset/fix-deduplicate-openai-output.md b/.changeset/fix-deduplicate-openai-output.md new file mode 100644 index 00000000000..9d694a62b3b --- /dev/null +++ b/.changeset/fix-deduplicate-openai-output.md @@ -0,0 +1,5 @@ +--- +"@effect/ai-openai": patch +--- + +fix(ai-openai): deduplicate response.output items to prevent invalid JSON concatenation