From 0fe3571cde62516dd72bf02dd44c2affad26afc4 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Sun, 27 Jul 2025 21:26:09 +0000 Subject: [PATCH] fix: move deduplicateReadFileHistory call from error handler to success path - Deduplication now only triggers after successful read_file operations - Fixed test mocks to include deduplicateReadFileHistory method - All tests passing --- src/core/tools/__tests__/readFileTool.spec.ts | 2 ++ src/core/tools/readFileTool.ts | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/core/tools/__tests__/readFileTool.spec.ts b/src/core/tools/__tests__/readFileTool.spec.ts index 44be1d3b92..446c630ad2 100644 --- a/src/core/tools/__tests__/readFileTool.spec.ts +++ b/src/core/tools/__tests__/readFileTool.spec.ts @@ -126,6 +126,7 @@ describe("read_file tool with maxReadFileLine setting", () => { mockCline.recordToolUsage = vi.fn().mockReturnValue(undefined) mockCline.recordToolError = vi.fn().mockReturnValue(undefined) + mockCline.deduplicateReadFileHistory = vi.fn().mockResolvedValue(undefined) toolResult = undefined }) @@ -382,6 +383,7 @@ describe("read_file tool XML output structure", () => { mockCline.recordToolUsage = vi.fn().mockReturnValue(undefined) mockCline.recordToolError = vi.fn().mockReturnValue(undefined) mockCline.didRejectTool = false + mockCline.deduplicateReadFileHistory = vi.fn().mockResolvedValue(undefined) toolResult = undefined }) diff --git a/src/core/tools/readFileTool.ts b/src/core/tools/readFileTool.ts index 4d6162abd6..37961a9350 100644 --- a/src/core/tools/readFileTool.ts +++ b/src/core/tools/readFileTool.ts @@ -589,6 +589,9 @@ export async function readFileTool( // No status message, just push the files XML pushToolResult(filesXml) } + + // Deduplicate read_file history after successful reads + await cline.deduplicateReadFileHistory() } catch (error) { // Handle all errors using per-file format for consistency const relPath = fileEntries[0]?.path || "unknown" @@ -609,8 +612,5 @@ export async function readFileTool( const xmlResults = fileResults.filter((result) => result.xmlContent).map((result) => result.xmlContent) pushToolResult(`\n${xmlResults.join("\n")}\n`) - - // Deduplicate read_file history after successful reads - await cline.deduplicateReadFileHistory() } }