From 8bc50b58ee4c95f32acfc40fd8c9abdb9b2d7545 Mon Sep 17 00:00:00 2001 From: Kevin Lin Date: Tue, 3 Feb 2026 15:28:18 -0800 Subject: [PATCH] fix(cli): preserve spacing in thinking/assistant blocks during streaming (#802) Co-authored-by: Letta --- src/cli/components/AssistantMessageRich.tsx | 4 ++-- src/cli/components/ReasoningMessageRich.tsx | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/cli/components/AssistantMessageRich.tsx b/src/cli/components/AssistantMessageRich.tsx index 0715b60..4a5c160 100644 --- a/src/cli/components/AssistantMessageRich.tsx +++ b/src/cli/components/AssistantMessageRich.tsx @@ -5,12 +5,12 @@ import { MarkdownDisplay } from "./MarkdownDisplay.js"; import { Text } from "./Text"; // Helper function to normalize text - copied from old codebase +// NOTE: Less aggressive than before to preserve spacing when content is split across chunks const normalize = (s: string) => s .replace(/\r\n/g, "\n") - .replace(/[ \t]+$/gm, "") .replace(/\n{3,}/g, "\n\n") - .replace(/^\n+|\n+$/g, ""); + .replace(/^\n+/g, ""); // Only trim leading newlines, preserve trailing ones type AssistantLine = { kind: "assistant"; diff --git a/src/cli/components/ReasoningMessageRich.tsx b/src/cli/components/ReasoningMessageRich.tsx index 1c9d78f..84bfa1c 100644 --- a/src/cli/components/ReasoningMessageRich.tsx +++ b/src/cli/components/ReasoningMessageRich.tsx @@ -5,12 +5,12 @@ import { MarkdownDisplay } from "./MarkdownDisplay.js"; import { Text } from "./Text"; // Helper function to normalize text - copied from old codebase +// NOTE: Less aggressive than before to preserve spacing when content is split across chunks const normalize = (s: string) => s .replace(/\r\n/g, "\n") - .replace(/[ \t]+$/gm, "") .replace(/\n{3,}/g, "\n\n") - .replace(/^\n+|\n+$/g, ""); + .replace(/^\n+/g, ""); // Only trim leading newlines, preserve trailing ones type ReasoningLine = { kind: "reasoning";