summaryrefslogtreecommitdiff
path: root/packages/core/src/tools/edit.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core/src/tools/edit.ts')
-rw-r--r--packages/core/src/tools/edit.ts32
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,
+ };
+ },
};
}
}