From cbf942e700de2edefe0d0b2a39670bc3eda8364d Mon Sep 17 00:00:00 2001 From: Saoud Rizwan <7799382+saoudrizwan@users.noreply.github.com> Date: Fri, 18 Oct 2024 07:43:09 -0400 Subject: [PATCH] Return updated file content when user makes edits to cline's suggestions --- src/core/Cline.ts | 12 ++++++++++-- src/integrations/editor/DiffViewProvider.ts | 12 ++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/core/Cline.ts b/src/core/Cline.ts index de814ec..33ebc67 100644 --- a/src/core/Cline.ts +++ b/src/core/Cline.ts @@ -1094,7 +1094,8 @@ export class Cline { await this.diffViewProvider.revertChanges() break } - const { newProblemsMessage, userEdits } = await this.diffViewProvider.saveChanges() + const { newProblemsMessage, userEdits, finalContent } = + await this.diffViewProvider.saveChanges() this.didEditFile = true // used to determine if we should wait for busy terminal to update before sending api request if (userEdits) { await this.say( @@ -1106,7 +1107,14 @@ export class Cline { } satisfies ClineSayTool) ) pushToolResult( - `The user made the following updates to your content:\n\n${userEdits}\n\nThe updated content, which includes both your original modifications and the user's additional edits, has been successfully saved to ${relPath.toPosix()}. (Note this does not mean you need to re-write the file with the user's changes, as they have already been applied to the file.)${newProblemsMessage}` + `The user made the following updates to your content:\n\n${userEdits}\n\n` + + `The updated content, which includes both your original modifications and the user's edits, has been successfully saved to ${relPath.toPosix()}. Here is the full, updated content of the file:\n\n` + + `\n${finalContent}\n\n\n` + + `Please note:\n` + + `1. You do not need to re-write the file with these changes, as they have already been applied.\n` + + `2. Proceed with the task using this updated file content as the new baseline.\n` + + `3. If the user's edits have addressed part of the task or changed the requirements, adjust your approach accordingly.` + + `${newProblemsMessage}` ) } else { pushToolResult( diff --git a/src/integrations/editor/DiffViewProvider.ts b/src/integrations/editor/DiffViewProvider.ts index 709bff5..c59d26e 100644 --- a/src/integrations/editor/DiffViewProvider.ts +++ b/src/integrations/editor/DiffViewProvider.ts @@ -138,9 +138,13 @@ export class DiffViewProvider { } } - async saveChanges(): Promise<{ newProblemsMessage: string | undefined; userEdits: string | undefined }> { + async saveChanges(): Promise<{ + newProblemsMessage: string | undefined + userEdits: string | undefined + finalContent: string | undefined + }> { if (!this.relPath || !this.newContent || !this.activeDiffEditor) { - return { newProblemsMessage: undefined, userEdits: undefined } + return { newProblemsMessage: undefined, userEdits: undefined, finalContent: undefined } } const absolutePath = path.resolve(this.cwd, this.relPath) const updatedDocument = this.activeDiffEditor.document @@ -192,10 +196,10 @@ export class DiffViewProvider { normalizedNewContent, normalizedEditedContent ) - return { newProblemsMessage, userEdits } + return { newProblemsMessage, userEdits, finalContent: normalizedEditedContent } } else { // no changes to cline's edits - return { newProblemsMessage, userEdits: undefined } + return { newProblemsMessage, userEdits: undefined, finalContent: normalizedEditedContent } } }