diff options
Diffstat (limited to 'packages/core/src/tools/edit.ts')
| -rw-r--r-- | packages/core/src/tools/edit.ts | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/packages/core/src/tools/edit.ts b/packages/core/src/tools/edit.ts index f1d0498a..33323203 100644 --- a/packages/core/src/tools/edit.ts +++ b/packages/core/src/tools/edit.ts @@ -25,7 +25,7 @@ import { makeRelative, shortenPath } from '../utils/paths.js'; import { isNodeError } from '../utils/errors.js'; import { Config, ApprovalMode } from '../config/config.js'; import { ensureCorrectEdit } from '../utils/editCorrector.js'; -import { DEFAULT_DIFF_OPTIONS } from './diffOptions.js'; +import { DEFAULT_DIFF_OPTIONS, getDiffStat } from './diffOptions.js'; import { ReadFileTool } from './read-file.js'; import { ModifiableDeclarativeTool, ModifyContext } from './modifiable-tool.js'; import { IDEConnectionStatus } from '../ide/ide-client.js'; @@ -79,6 +79,11 @@ export interface EditToolParams { * Whether the edit was modified manually by the user. */ modified_by_user?: boolean; + + /** + * Initially proposed string. + */ + ai_proposed_string?: string; } interface CalculatedEdit { @@ -353,11 +358,20 @@ class EditToolInvocation implements ToolInvocation<EditToolParams, ToolResult> { 'Proposed', DEFAULT_DIFF_OPTIONS, ); + const originallyProposedContent = + this.params.ai_proposed_string || this.params.new_string; + const diffStat = getDiffStat( + fileName, + editData.currentContent ?? '', + originallyProposedContent, + this.params.new_string, + ); displayResult = { fileDiff, fileName, originalContent: editData.currentContent, newContent: editData.newContent, + diffStat, }; } @@ -513,12 +527,16 @@ Expectation for required parameters: oldContent: string, modifiedProposedContent: string, originalParams: EditToolParams, - ): EditToolParams => ({ - ...originalParams, - old_string: oldContent, - new_string: modifiedProposedContent, - modified_by_user: true, - }), + ): EditToolParams => { + const content = originalParams.new_string; + return { + ...originalParams, + ai_proposed_string: content, + old_string: oldContent, + new_string: modifiedProposedContent, + modified_by_user: true, + }; + }, }; } } |
