@@ -80,7 +80,7 @@ import { ToolRepetitionDetector } from "../tools/ToolRepetitionDetector"
8080import { FileContextTracker } from "../context-tracking/FileContextTracker"
8181import { RooIgnoreController } from "../ignore/RooIgnoreController"
8282import { RooProtectedController } from "../protect/RooProtectedController"
83- import { type AssistantMessageContent , presentAssistantMessage , parseAssistantMessage } from "../assistant-message"
83+ import { type AssistantMessageContent , presentAssistantMessage } from "../assistant-message"
8484import { AssistantMessageParser } from "../assistant-message/AssistantMessageParser"
8585import { truncateConversationIfNeeded } from "../sliding-window"
8686import { ClineProvider } from "../webview/ClineProvider"
@@ -270,8 +270,7 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
270270 didRejectTool = false
271271 didAlreadyUseTool = false
272272 didCompleteReadingStream = false
273- assistantMessageParser ?: AssistantMessageParser
274- isAssistantMessageParserEnabled = false
273+ assistantMessageParser : AssistantMessageParser
275274 private lastUsedInstructions ?: string
276275 private skipPrevResponseIdOnce : boolean = false
277276
@@ -355,6 +354,9 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
355354 TelemetryService . instance . captureTaskCreated ( this . taskId )
356355 }
357356
357+ // Initialize the assistant message parser
358+ this . assistantMessageParser = new AssistantMessageParser ( )
359+
358360 // Only set up diff strategy if diff is enabled.
359361 if ( this . diffEnabled ) {
360362 // Default to old strategy, will be updated if experiment is enabled.
@@ -1751,9 +1753,7 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
17511753 this . didAlreadyUseTool = false
17521754 this . presentAssistantMessageLocked = false
17531755 this . presentAssistantMessageHasPendingUpdates = false
1754- if ( this . assistantMessageParser ) {
1755- this . assistantMessageParser . reset ( )
1756- }
1756+ this . assistantMessageParser . reset ( )
17571757
17581758 await this . diffViewProvider . reset ( )
17591759
@@ -1794,12 +1794,7 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
17941794
17951795 // Parse raw assistant message chunk into content blocks.
17961796 const prevLength = this . assistantMessageContent . length
1797- if ( this . isAssistantMessageParserEnabled && this . assistantMessageParser ) {
1798- this . assistantMessageContent = this . assistantMessageParser . processChunk ( chunk . text )
1799- } else {
1800- // Use the old parsing method when experiment is disabled
1801- this . assistantMessageContent = parseAssistantMessage ( assistantMessage )
1802- }
1797+ this . assistantMessageContent = this . assistantMessageParser . processChunk ( chunk . text )
18031798
18041799 if ( this . assistantMessageContent . length > prevLength ) {
18051800 // New content we need to present, reset to
@@ -2058,11 +2053,8 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
20582053 // this.assistantMessageContent.forEach((e) => (e.partial = false))
20592054
20602055 // Now that the stream is complete, finalize any remaining partial content blocks
2061- if ( this . isAssistantMessageParserEnabled && this . assistantMessageParser ) {
2062- this . assistantMessageParser . finalizeContentBlocks ( )
2063- this . assistantMessageContent = this . assistantMessageParser . getContentBlocks ( )
2064- }
2065- // When using old parser, no finalization needed - parsing already happened during streaming
2056+ this . assistantMessageParser . finalizeContentBlocks ( )
2057+ this . assistantMessageContent = this . assistantMessageParser . getContentBlocks ( )
20662058
20672059 if ( partialBlocks . length > 0 ) {
20682060 // If there is content to update then it will complete and
@@ -2081,9 +2073,7 @@ export class Task extends EventEmitter<TaskEvents> implements TaskLike {
20812073 await this . providerRef . deref ( ) ?. postStateToWebview ( )
20822074
20832075 // Reset parser after each complete conversation round
2084- if ( this . assistantMessageParser ) {
2085- this . assistantMessageParser . reset ( )
2086- }
2076+ this . assistantMessageParser . reset ( )
20872077
20882078 // Now add to apiConversationHistory.
20892079 // Need to save assistant responses to file before proceeding to
0 commit comments