From 0340358a9be79958464bd905636e298e1bc18938 Mon Sep 17 00:00:00 2001 From: yushen Date: Wed, 4 Feb 2026 15:50:41 +0800 Subject: [PATCH] feat(sdk): add thinking content extraction for stream events Update StreamMessageEvent content type to include thinking blocks. Add extractThinkingFromEvent() helper and export it, enabling clients to access reasoning content from streamed agent responses. Co-Authored-By: Claude Opus 4.5 --- packages/sdk/src/actions/index.ts | 1 + packages/sdk/src/actions/stream.ts | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/sdk/src/actions/index.ts b/packages/sdk/src/actions/index.ts index e73947a4e..045254643 100644 --- a/packages/sdk/src/actions/index.ts +++ b/packages/sdk/src/actions/index.ts @@ -37,4 +37,5 @@ export { type StreamMessageEvent, type StreamToolEvent, extractTextFromEvent, + extractThinkingFromEvent, } from "./stream"; diff --git a/packages/sdk/src/actions/stream.ts b/packages/sdk/src/actions/stream.ts index 513290400..032bb9628 100644 --- a/packages/sdk/src/actions/stream.ts +++ b/packages/sdk/src/actions/stream.ts @@ -12,7 +12,7 @@ export interface StreamMessageEvent { message: { id?: string; role: string; - content?: Array<{ type: string; text?: string }>; + content?: Array<{ type: string; text?: string; thinking?: string }>; }; assistantMessageEvent?: unknown; } @@ -47,3 +47,13 @@ export function extractTextFromEvent(event: StreamMessageEvent): string { .map((c) => c.text ?? "") .join(""); } + +/** Extract thinking/reasoning content from an AgentMessage content array */ +export function extractThinkingFromEvent(event: StreamMessageEvent): string { + const content = event.message?.content; + if (!Array.isArray(content)) return ""; + return content + .filter((c) => c.type === "thinking") + .map((c) => c.thinking ?? "") + .join(""); +}