summaryrefslogtreecommitdiff
path: root/packages/core/src/tools/write-file.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core/src/tools/write-file.ts')
-rw-r--r--packages/core/src/tools/write-file.ts33
1 files changed, 27 insertions, 6 deletions
diff --git a/packages/core/src/tools/write-file.ts b/packages/core/src/tools/write-file.ts
index 9e7e3813..4a9f8d35 100644
--- a/packages/core/src/tools/write-file.ts
+++ b/packages/core/src/tools/write-file.ts
@@ -25,7 +25,7 @@ import {
ensureCorrectEdit,
ensureCorrectFileContent,
} from '../utils/editCorrector.js';
-import { DEFAULT_DIFF_OPTIONS } from './diffOptions.js';
+import { DEFAULT_DIFF_OPTIONS, getDiffStat } from './diffOptions.js';
import { ModifiableDeclarativeTool, ModifyContext } from './modifiable-tool.js';
import { getSpecificMimeType } from '../utils/fileUtils.js';
import {
@@ -52,6 +52,11 @@ export interface WriteFileToolParams {
* Whether the proposed content was modified by the user.
*/
modified_by_user?: boolean;
+
+ /**
+ * Initially proposed content.
+ */
+ ai_proposed_content?: string;
}
interface GetCorrectedFileContentResult {
@@ -283,6 +288,15 @@ export class WriteFileTool
DEFAULT_DIFF_OPTIONS,
);
+ const originallyProposedContent =
+ params.ai_proposed_content || params.content;
+ const diffStat = getDiffStat(
+ fileName,
+ currentContentForDiff,
+ originallyProposedContent,
+ params.content,
+ );
+
const llmSuccessMessageParts = [
isNewFile
? `Successfully created and wrote to new file: ${params.file_path}.`
@@ -299,6 +313,7 @@ export class WriteFileTool
fileName,
originalContent: correctedContentResult.originalContent,
newContent: correctedContentResult.correctedContent,
+ diffStat,
};
const lines = fileContent.split('\n').length;
@@ -311,6 +326,7 @@ export class WriteFileTool
lines,
mimetype,
extension,
+ diffStat,
);
} else {
recordFileOperationMetric(
@@ -319,6 +335,7 @@ export class WriteFileTool
lines,
mimetype,
extension,
+ diffStat,
);
}
@@ -418,11 +435,15 @@ export class WriteFileTool
_oldContent: string,
modifiedProposedContent: string,
originalParams: WriteFileToolParams,
- ) => ({
- ...originalParams,
- content: modifiedProposedContent,
- modified_by_user: true,
- }),
+ ) => {
+ const content = originalParams.content;
+ return {
+ ...originalParams,
+ ai_proposed_content: content,
+ content: modifiedProposedContent,
+ modified_by_user: true,
+ };
+ },
};
}
}