From 53aca05a654bbb54b214142098398ebc7ad2ab02 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 31 Jan 2026 15:16:24 +0000 Subject: [PATCH] fix: parse reasoning from delta.reasoning (OpenAI format) Different providers use different field names for reasoning traces: - Claude/DeepSeek: delta.reasoning_content - OpenAI/OpenRouter: delta.reasoning Now checks both fields to ensure reasoning is captured regardless of which format the API uses. https://claude.ai/code/session_01HqtD9R33oqfB14Gu1V5wHC --- src/services/llm/provider-manager.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/services/llm/provider-manager.ts b/src/services/llm/provider-manager.ts index 97cdd89..1d13485 100644 --- a/src/services/llm/provider-manager.ts +++ b/src/services/llm/provider-manager.ts @@ -396,9 +396,12 @@ class AIProviderManager { yield { type: "token", content: delta.content }; } - // Extended thinking / reasoning (Claude, DeepSeek, etc.) + // Extended thinking / reasoning (multiple formats across providers) + // - Claude/DeepSeek: delta.reasoning_content + // - OpenAI/OpenRouter: delta.reasoning // eslint-disable-next-line @typescript-eslint/no-explicit-any - const reasoning = (delta as any)?.reasoning_content; + const deltaAny = delta as any; + const reasoning = deltaAny?.reasoning_content || deltaAny?.reasoning; if (reasoning) { yield { type: "reasoning", content: reasoning }; }