diff options
Diffstat (limited to 'packages/core/src/tools/write-file.ts')
| -rw-r--r-- | packages/core/src/tools/write-file.ts | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/packages/core/src/tools/write-file.ts b/packages/core/src/tools/write-file.ts index 1cb1a917..32ecc068 100644 --- a/packages/core/src/tools/write-file.ts +++ b/packages/core/src/tools/write-file.ts @@ -32,6 +32,7 @@ import { recordFileOperationMetric, FileOperation, } from '../telemetry/metrics.js'; +import { IDEConnectionStatus } from '../ide/ide-client.js'; /** * Parameters for the WriteFile tool @@ -184,10 +185,19 @@ export class WriteFileTool DEFAULT_DIFF_OPTIONS, ); + const ideClient = this.config.getIdeClient(); + const ideConfirmation = + this.config.getIdeModeFeature() && + this.config.getIdeMode() && + ideClient.getConnectionStatus().status === IDEConnectionStatus.Connected + ? ideClient.openDiff(params.file_path, correctedContent) + : undefined; + const confirmationDetails: ToolEditConfirmationDetails = { type: 'edit', title: `Confirm Write: ${shortenPath(relativePath)}`, fileName, + filePath: params.file_path, fileDiff, originalContent, newContent: correctedContent, @@ -195,7 +205,15 @@ export class WriteFileTool if (outcome === ToolConfirmationOutcome.ProceedAlways) { this.config.setApprovalMode(ApprovalMode.AUTO_EDIT); } + + if (ideConfirmation) { + const result = await ideConfirmation; + if (result.status === 'accepted' && result.content) { + params.content = result.content; + } + } }, + ideConfirmation, }; return confirmationDetails; } |
