diff options
Diffstat (limited to 'packages/core/src/tools/write-file.ts')
| -rw-r--r-- | packages/core/src/tools/write-file.ts | 33 |
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, + }; + }, }; } } |
