diff --git a/src/core/task/Task.ts b/src/core/task/Task.ts index c5be865731ab..10031a1a7301 100644 --- a/src/core/task/Task.ts +++ b/src/core/task/Task.ts @@ -1941,10 +1941,22 @@ export class Task extends EventEmitter implements TaskLike { } switch (chunk.type) { - case "reasoning": + case "reasoning": { reasoningMessage += chunk.text - await this.say("reasoning", reasoningMessage, undefined, true) + // Only apply formatting if the message contains sentence-ending punctuation followed by ** + let formattedReasoning = reasoningMessage + if (reasoningMessage.includes("**")) { + // Add line breaks before **Title** patterns that appear after sentence endings + // This targets section headers like "...end of sentence.**Title Here**" + // Handles periods, exclamation marks, and question marks + formattedReasoning = reasoningMessage.replace( + /([.!?])\*\*([^*\n]+)\*\*/g, + "$1\n\n**$2**", + ) + } + await this.say("reasoning", formattedReasoning, undefined, true) break + } case "usage": inputTokens += chunk.inputTokens outputTokens += chunk.outputTokens