From c41e8c31b47ed4f2aef7bd10a2b38c318f11106f Mon Sep 17 00:00:00 2001 From: MumuTW Date: Thu, 5 Mar 2026 18:37:23 +0000 Subject: [PATCH 1/2] fix(openai-adapters): map reasoning-delta to reasoning_content --- .../openai-adapters/src/test/vercelStreamConverter.test.ts | 6 +++++- packages/openai-adapters/src/vercelStreamConverter.ts | 7 +++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/packages/openai-adapters/src/test/vercelStreamConverter.test.ts b/packages/openai-adapters/src/test/vercelStreamConverter.test.ts index 839e3a8c78..ee10e6aae8 100644 --- a/packages/openai-adapters/src/test/vercelStreamConverter.test.ts +++ b/packages/openai-adapters/src/test/vercelStreamConverter.test.ts @@ -34,7 +34,11 @@ describe("convertVercelStreamPart", () => { const result = convertVercelStreamPart(part, options); expect(result).not.toBeNull(); - expect(result?.choices[0].delta.content).toBe("Let me think..."); + expect( + (result?.choices[0].delta as typeof result.choices[0].delta & { + reasoning_content?: string; + }).reasoning_content, + ).toBe("Let me think..."); }); test("returns null for tool-call (handled by tool-input-start/delta)", () => { diff --git a/packages/openai-adapters/src/vercelStreamConverter.ts b/packages/openai-adapters/src/vercelStreamConverter.ts index 53f4cc75a8..21930b5582 100644 --- a/packages/openai-adapters/src/vercelStreamConverter.ts +++ b/packages/openai-adapters/src/vercelStreamConverter.ts @@ -86,8 +86,11 @@ export function convertVercelStreamPart( }); case "reasoning-delta": - return chatChunk({ - content: part.text, + return chatChunkFromDelta({ + delta: { + // `reasoning_content` is not yet typed in OpenAI's SDK types. + reasoning_content: part.text, + } as ChatCompletionChunk.Choice["delta"], model, }); From 37794f4c65303becbac0284956eb78bcdfb71520 Mon Sep 17 00:00:00 2001 From: MumuTW Date: Fri, 6 Mar 2026 09:47:43 +0000 Subject: [PATCH 2/2] fix(openai-adapters): fix TS syntax error in vercelStreamConverter test The `as typeof X & Y` type assertion was ambiguous to the TypeScript parser without parentheses, causing TS1005 errors. Simplify to `as any` since this is a test assertion. Co-Authored-By: Claude Opus 4.6 --- .../src/test/vercelStreamConverter.test.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/openai-adapters/src/test/vercelStreamConverter.test.ts b/packages/openai-adapters/src/test/vercelStreamConverter.test.ts index ee10e6aae8..0c3feed93d 100644 --- a/packages/openai-adapters/src/test/vercelStreamConverter.test.ts +++ b/packages/openai-adapters/src/test/vercelStreamConverter.test.ts @@ -34,11 +34,10 @@ describe("convertVercelStreamPart", () => { const result = convertVercelStreamPart(part, options); expect(result).not.toBeNull(); - expect( - (result?.choices[0].delta as typeof result.choices[0].delta & { - reasoning_content?: string; - }).reasoning_content, - ).toBe("Let me think..."); + // eslint-disable-next-line @typescript-eslint/no-explicit-any + expect((result?.choices[0].delta as any).reasoning_content).toBe( + "Let me think...", + ); }); test("returns null for tool-call (handled by tool-input-start/delta)", () => {