From 355dc822dd7dec7c5c188edb8112b24bacf25f67 Mon Sep 17 00:00:00 2001 From: Matt Rubens Date: Wed, 11 Dec 2024 11:20:01 -0500 Subject: [PATCH] Better error handling when unable to apply diffs (#71) --- CHANGELOG.md | 4 ++++ package-lock.json | 4 ++-- package.json | 2 +- src/core/Cline.ts | 9 ++++++--- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05177c3..ea562d6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Roo Cline Changelog +## [2.1.19] + +- Better error handling for diff editing + ## [2.1.18] - Diff editing bugfix to handle Windows line endings diff --git a/package-lock.json b/package-lock.json index ac4846b..b7d756e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "roo-cline", - "version": "2.1.18", + "version": "2.1.19", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "roo-cline", - "version": "2.1.18", + "version": "2.1.19", "dependencies": { "@anthropic-ai/bedrock-sdk": "^0.10.2", "@anthropic-ai/sdk": "^0.26.0", diff --git a/package.json b/package.json index 9fc47ba..dc5a92b 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "displayName": "Roo Cline", "description": "A fork of Cline, an autonomous coding agent, with some added experimental configuration and automation features.", "publisher": "RooVeterinaryInc", - "version": "2.1.18", + "version": "2.1.19", "icon": "assets/icons/rocket.png", "galleryBanner": { "color": "#617A91", diff --git a/src/core/Cline.ts b/src/core/Cline.ts index 4e747d9..d45d151 100644 --- a/src/core/Cline.ts +++ b/src/core/Cline.ts @@ -1208,12 +1208,12 @@ export class Cline { pushToolResult(await this.sayAndCreateMissingParamError("apply_diff", "diff")) break } - this.consecutiveMistakeCount = 0 const absolutePath = path.resolve(cwd, relPath) const fileExists = await fileExistsAtPath(absolutePath) if (!fileExists) { + this.consecutiveMistakeCount++ await this.say("error", `File does not exist at path: ${absolutePath}`) pushToolResult(`Error: File does not exist at path: ${absolutePath}`) break @@ -1224,11 +1224,14 @@ export class Cline { // Apply the diff to the original content let newContent = this.diffStrategy?.applyDiff(originalContent, diffContent) ?? false if (newContent === false) { - await this.say("error", `Error applying diff to file: ${absolutePath}`) - pushToolResult(`Error applying diff to file: ${absolutePath}`) + this.consecutiveMistakeCount++ + await this.say("error", `Unable to apply diff to file - contents are out of sync: ${absolutePath}`) + pushToolResult(`Error applying diff to file: ${absolutePath} - contents are out of sync. Try re-reading the relevant lines of the file and applying the diff again.`) break } + this.consecutiveMistakeCount = 0 + // Show diff view before asking for approval this.diffViewProvider.editType = "modify" await this.diffViewProvider.open(relPath);