From 4fc76e0600dac739bee59ef16340194b8a63b6d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=87=E6=A5=A0?= <255795273+yxlphobe-pixel@users.noreply.github.com> Date: Wed, 12 Aug 2026 00:12:27 +0800 Subject: [PATCH] fix(console): preserve assistant content arrays --- .../src/routes/zen/util/provider/openai.ts | 7 ++++++ .../console/app/test/providerRequest.test.ts | 25 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 packages/console/app/test/providerRequest.test.ts diff --git a/packages/console/app/src/routes/zen/util/provider/openai.ts b/packages/console/app/src/routes/zen/util/provider/openai.ts index cebc78a127a3..9029c65a7b67 100644 --- a/packages/console/app/src/routes/zen/util/provider/openai.ts +++ b/packages/console/app/src/routes/zen/util/provider/openai.ts @@ -152,6 +152,13 @@ export function fromOpenaiRequest(body: any): CommonRequest { const c = (m as any).content const out: any = { role: "assistant" } if (typeof c === "string" && c.length > 0) out.content = c + if (Array.isArray(c)) { + const text = c + .filter((p: any) => p && p.type === "output_text" && typeof p.text === "string") + .map((p: any) => p.text) + .join("") + if (text.length > 0) out.content = text + } if (Array.isArray((m as any).tool_calls)) out.tool_calls = (m as any).tool_calls msgs.push(out) continue diff --git a/packages/console/app/test/providerRequest.test.ts b/packages/console/app/test/providerRequest.test.ts new file mode 100644 index 000000000000..2ab21700affc --- /dev/null +++ b/packages/console/app/test/providerRequest.test.ts @@ -0,0 +1,25 @@ +import { describe, expect, test } from "bun:test" +import { fromOpenaiRequest } from "../src/routes/zen/util/provider/openai" + +describe("provider request conversion", () => { + test("preserves array-form OpenAI assistant content", () => { + expect( + fromOpenaiRequest({ + model: "gpt-5", + input: [ + { + role: "assistant", + content: [ + { type: "output_text", text: "hello" }, + { type: "output_text", text: " world" }, + ], + }, + { role: "user", content: "continue" }, + ], + }).messages, + ).toEqual([ + { role: "assistant", content: "hello world" }, + { role: "user", content: "continue" }, + ]) + }) +})