Skip to content

Commit 4222036

Browse files
feat: remove assistantMessageParser experiment flag and enable for all users (#7300)
- Remove assistantMessageParser from experiment definitions in packages/types - Remove ASSISTANT_MESSAGE_PARSER from shared experiments configuration - Update Task.ts to always initialize and use AssistantMessageParser - Remove conditional logic that checked for experiment flag - Remove unused parseAssistantMessage import - Update test files to remove assistantMessageParser references - All tests passing successfully Co-authored-by: Roo Code <[email protected]>
1 parent 9fe06db commit 4222036

File tree

5 files changed

+11
-34
lines changed

5 files changed

+11
-34
lines changed

packages/types/src/experiment.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,7 @@ import type { Keys, Equals, AssertEqual } from "./type-fu.js"
66
* ExperimentId
77
*/
88

9-
export const experimentIds = [
10-
"powerSteering",
11-
"multiFileApplyDiff",
12-
"preventFocusDisruption",
13-
"assistantMessageParser",
14-
] as const
9+
export const experimentIds = ["powerSteering", "multiFileApplyDiff", "preventFocusDisruption"] as const
1510

1611
export const experimentIdsSchema = z.enum(experimentIds)
1712

@@ -25,7 +20,6 @@ export const experimentsSchema = z.object({
2520
powerSteering: z.boolean().optional(),
2621
multiFileApplyDiff: z.boolean().optional(),
2722
preventFocusDisruption: z.boolean().optional(),
28-
assistantMessageParser: z.boolean().optional(),
2923
})
3024

3125
export type Experiments = z.infer<typeof experimentsSchema>

src/core/task/Task.ts

Lines changed: 10 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ import { ToolRepetitionDetector } from "../tools/ToolRepetitionDetector"
8080
import { FileContextTracker } from "../context-tracking/FileContextTracker"
8181
import { RooIgnoreController } from "../ignore/RooIgnoreController"
8282
import { RooProtectedController } from "../protect/RooProtectedController"
83-
import { type AssistantMessageContent, presentAssistantMessage, parseAssistantMessage } from "../assistant-message"
83+
import { type AssistantMessageContent, presentAssistantMessage } from "../assistant-message"
8484
import { AssistantMessageParser } from "../assistant-message/AssistantMessageParser"
8585
import { truncateConversationIfNeeded } from "../sliding-window"
8686
import { 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

src/shared/__tests__/experiments.spec.ts

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ describe("experiments", () => {
2929
powerSteering: false,
3030
multiFileApplyDiff: false,
3131
preventFocusDisruption: false,
32-
assistantMessageParser: false,
3332
}
3433
expect(Experiments.isEnabled(experiments, EXPERIMENT_IDS.POWER_STEERING)).toBe(false)
3534
})
@@ -39,7 +38,6 @@ describe("experiments", () => {
3938
powerSteering: true,
4039
multiFileApplyDiff: false,
4140
preventFocusDisruption: false,
42-
assistantMessageParser: false,
4341
}
4442
expect(Experiments.isEnabled(experiments, EXPERIMENT_IDS.POWER_STEERING)).toBe(true)
4543
})
@@ -49,7 +47,6 @@ describe("experiments", () => {
4947
powerSteering: false,
5048
multiFileApplyDiff: false,
5149
preventFocusDisruption: false,
52-
assistantMessageParser: false,
5350
}
5451
expect(Experiments.isEnabled(experiments, EXPERIMENT_IDS.POWER_STEERING)).toBe(false)
5552
})

src/shared/experiments.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ export const EXPERIMENT_IDS = {
44
MULTI_FILE_APPLY_DIFF: "multiFileApplyDiff",
55
POWER_STEERING: "powerSteering",
66
PREVENT_FOCUS_DISRUPTION: "preventFocusDisruption",
7-
ASSISTANT_MESSAGE_PARSER: "assistantMessageParser",
87
} as const satisfies Record<string, ExperimentId>
98

109
type _AssertExperimentIds = AssertEqual<Equals<ExperimentId, Values<typeof EXPERIMENT_IDS>>>
@@ -19,7 +18,6 @@ export const experimentConfigsMap: Record<ExperimentKey, ExperimentConfig> = {
1918
MULTI_FILE_APPLY_DIFF: { enabled: false },
2019
POWER_STEERING: { enabled: false },
2120
PREVENT_FOCUS_DISRUPTION: { enabled: false },
22-
ASSISTANT_MESSAGE_PARSER: { enabled: false },
2321
}
2422

2523
export const experimentDefault = Object.fromEntries(

webview-ui/src/context/__tests__/ExtensionStateContext.spec.tsx

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,6 @@ describe("mergeExtensionState", () => {
229229
concurrentFileReads: true,
230230
multiFileApplyDiff: true,
231231
preventFocusDisruption: false,
232-
assistantMessageParser: false,
233232
newTaskRequireTodos: false,
234233
} as Record<ExperimentId, boolean>,
235234
}
@@ -248,7 +247,6 @@ describe("mergeExtensionState", () => {
248247
concurrentFileReads: true,
249248
multiFileApplyDiff: true,
250249
preventFocusDisruption: false,
251-
assistantMessageParser: false,
252250
newTaskRequireTodos: false,
253251
})
254252
})

0 commit comments

Comments
 (0)