@vybestack/llxprt-code-core 0.1.18 → 0.1.19-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/src/config/config.alwaysAllow.test.d.ts +6 -0
- package/dist/src/config/config.alwaysAllow.test.js +84 -0
- package/dist/src/config/config.alwaysAllow.test.js.map +1 -0
- package/dist/src/config/config.d.ts +26 -0
- package/dist/src/config/config.js +43 -0
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +8 -0
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/core/client.d.ts +0 -2
- package/dist/src/core/client.js +10 -85
- package/dist/src/core/client.js.map +1 -1
- package/dist/src/core/client.test.js +7 -2
- package/dist/src/core/client.test.js.map +1 -1
- package/dist/src/core/contentGenerator.js +1 -1
- package/dist/src/core/contentGenerator.js.map +1 -1
- package/dist/src/core/coreToolScheduler.d.ts +17 -7
- package/dist/src/core/coreToolScheduler.js +121 -18
- package/dist/src/core/coreToolScheduler.js.map +1 -1
- package/dist/src/core/coreToolScheduler.test.js +25 -37
- package/dist/src/core/coreToolScheduler.test.js.map +1 -1
- package/dist/src/core/geminiChat.d.ts +3 -0
- package/dist/src/core/geminiChat.js +17 -13
- package/dist/src/core/geminiChat.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.js +4 -1
- package/dist/src/core/nonInteractiveToolExecutor.js.map +1 -1
- package/dist/src/core/nonInteractiveToolExecutor.test.js +8 -31
- package/dist/src/core/nonInteractiveToolExecutor.test.js.map +1 -1
- package/dist/src/core/subagent.d.ts +230 -0
- package/dist/src/core/subagent.js +453 -0
- package/dist/src/core/subagent.js.map +1 -0
- package/dist/src/core/subagent.test.d.ts +6 -0
- package/dist/src/core/subagent.test.js +519 -0
- package/dist/src/core/subagent.test.js.map +1 -0
- package/dist/src/hooks/tool-render-suppression-hook.d.ts +16 -0
- package/dist/src/hooks/tool-render-suppression-hook.js +26 -0
- package/dist/src/hooks/tool-render-suppression-hook.js.map +1 -0
- package/dist/src/hooks/tool-render-suppression-hook.test.d.ts +6 -0
- package/dist/src/hooks/tool-render-suppression-hook.test.js +59 -0
- package/dist/src/hooks/tool-render-suppression-hook.test.js.map +1 -0
- package/dist/src/ide/ide-client.d.ts +22 -1
- package/dist/src/ide/ide-client.js +145 -15
- package/dist/src/ide/ide-client.js.map +1 -1
- package/dist/src/ide/ideContext.d.ts +127 -32
- package/dist/src/ide/ideContext.js +45 -0
- package/dist/src/ide/ideContext.js.map +1 -1
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/integration-tests/todo-system.test.js +38 -602
- package/dist/src/integration-tests/todo-system.test.js.map +1 -1
- package/dist/src/providers/gemini/GeminiProvider.js +5 -5
- package/dist/src/providers/gemini/GeminiProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.js +8 -1
- package/dist/src/providers/openai/OpenAIProvider.js.map +1 -1
- package/dist/src/providers/openai/OpenAIProvider.test.js +106 -0
- package/dist/src/providers/openai/OpenAIProvider.test.js.map +1 -1
- package/dist/src/providers/types/IProviderConfig.d.ts +5 -0
- package/dist/src/services/shellExecutionService.js +29 -5
- package/dist/src/services/shellExecutionService.js.map +1 -1
- package/dist/src/services/shellExecutionService.test.js +8 -0
- package/dist/src/services/shellExecutionService.test.js.map +1 -1
- package/dist/src/services/todo-context-tracker.d.ts +31 -0
- package/dist/src/services/todo-context-tracker.js +45 -0
- package/dist/src/services/todo-context-tracker.js.map +1 -0
- package/dist/src/services/tool-call-tracker-service.d.ts +52 -0
- package/dist/src/services/tool-call-tracker-service.js +170 -0
- package/dist/src/services/tool-call-tracker-service.js.map +1 -0
- package/dist/src/services/tool-call-tracker-service.test.d.ts +6 -0
- package/dist/src/services/tool-call-tracker-service.test.js +99 -0
- package/dist/src/services/tool-call-tracker-service.test.js.map +1 -0
- package/dist/src/telemetry/loggers.test.circular.js +7 -2
- package/dist/src/telemetry/loggers.test.circular.js.map +1 -1
- package/dist/src/telemetry/loggers.test.js +5 -1
- package/dist/src/telemetry/loggers.test.js.map +1 -1
- package/dist/src/telemetry/metrics.d.ts +1 -1
- package/dist/src/telemetry/metrics.js.map +1 -1
- package/dist/src/telemetry/types.d.ts +2 -1
- package/dist/src/telemetry/types.js +3 -1
- package/dist/src/telemetry/types.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.d.ts +2 -0
- package/dist/src/telemetry/uiTelemetry.js +2 -0
- package/dist/src/telemetry/uiTelemetry.js.map +1 -1
- package/dist/src/telemetry/uiTelemetry.test.js +11 -1
- package/dist/src/telemetry/uiTelemetry.test.js.map +1 -1
- package/dist/src/test-utils/tools.d.ts +23 -0
- package/dist/src/test-utils/tools.js +41 -0
- package/dist/src/test-utils/tools.js.map +1 -0
- package/dist/src/tools/edit.d.ts +5 -33
- package/dist/src/tools/edit.js +129 -124
- package/dist/src/tools/edit.js.map +1 -1
- package/dist/src/tools/edit.test.js +123 -50
- package/dist/src/tools/edit.test.js.map +1 -1
- package/dist/src/tools/glob.d.ts +3 -10
- package/dist/src/tools/glob.js +97 -99
- package/dist/src/tools/glob.js.map +1 -1
- package/dist/src/tools/glob.test.js +37 -26
- package/dist/src/tools/glob.test.js.map +1 -1
- package/dist/src/tools/grep.d.ts +3 -35
- package/dist/src/tools/grep.js +117 -88
- package/dist/src/tools/grep.js.map +1 -1
- package/dist/src/tools/grep.test.js +36 -22
- package/dist/src/tools/grep.test.js.map +1 -1
- package/dist/src/tools/mcp-client.d.ts +10 -0
- package/dist/src/tools/mcp-client.js +59 -0
- package/dist/src/tools/mcp-client.js.map +1 -1
- package/dist/src/tools/mcp-client.test.js +294 -1
- package/dist/src/tools/mcp-client.test.js.map +1 -1
- package/dist/src/tools/memoryTool.d.ts +2 -2
- package/dist/src/tools/memoryTool.js +1 -0
- package/dist/src/tools/memoryTool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.d.ts +8 -5
- package/dist/src/tools/modifiable-tool.js +4 -1
- package/dist/src/tools/modifiable-tool.js.map +1 -1
- package/dist/src/tools/modifiable-tool.test.js +3 -3
- package/dist/src/tools/modifiable-tool.test.js.map +1 -1
- package/dist/src/tools/read-file.d.ts +4 -6
- package/dist/src/tools/read-file.js +55 -46
- package/dist/src/tools/read-file.js.map +1 -1
- package/dist/src/tools/read-file.test.js +201 -126
- package/dist/src/tools/read-file.test.js.map +1 -1
- package/dist/src/tools/read-many-files.js +8 -2
- package/dist/src/tools/read-many-files.js.map +1 -1
- package/dist/src/tools/read-many-files.test.js +16 -0
- package/dist/src/tools/read-many-files.test.js.map +1 -1
- package/dist/src/tools/todo-events.d.ts +22 -0
- package/dist/src/tools/todo-events.js +24 -0
- package/dist/src/tools/todo-events.js.map +1 -0
- package/dist/src/tools/todo-read.js.map +1 -1
- package/dist/src/tools/todo-schemas.d.ts +232 -4
- package/dist/src/tools/todo-schemas.js +13 -0
- package/dist/src/tools/todo-schemas.js.map +1 -1
- package/dist/src/tools/todo-schemas.test.js +190 -1
- package/dist/src/tools/todo-schemas.test.js.map +1 -1
- package/dist/src/tools/todo-store.d.ts +1 -4
- package/dist/src/tools/todo-store.js +41 -40
- package/dist/src/tools/todo-store.js.map +1 -1
- package/dist/src/tools/todo-store.test.js +34 -40
- package/dist/src/tools/todo-store.test.js.map +1 -1
- package/dist/src/tools/todo-write.d.ts +1 -1
- package/dist/src/tools/todo-write.js +84 -47
- package/dist/src/tools/todo-write.js.map +1 -1
- package/dist/src/tools/todo-write.test.js +23 -9
- package/dist/src/tools/todo-write.test.js.map +1 -1
- package/dist/src/tools/tool-context.d.ts +2 -0
- package/dist/src/tools/tool-registry.d.ts +12 -6
- package/dist/src/tools/tool-registry.js +16 -1
- package/dist/src/tools/tool-registry.js.map +1 -1
- package/dist/src/tools/tool-registry.test.js +1 -18
- package/dist/src/tools/tool-registry.test.js.map +1 -1
- package/dist/src/tools/tools.d.ts +127 -39
- package/dist/src/tools/tools.js +115 -10
- package/dist/src/tools/tools.js.map +1 -1
- package/dist/src/tools/write-file.d.ts +2 -2
- package/dist/src/tools/write-file.js +16 -0
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/tools/write-file.test.js +20 -3
- package/dist/src/tools/write-file.test.js.map +1 -1
- package/dist/src/types/modelParams.d.ts +2 -0
- package/dist/src/utils/environmentContext.d.ts +21 -0
- package/dist/src/utils/environmentContext.js +90 -0
- package/dist/src/utils/environmentContext.js.map +1 -0
- package/dist/src/utils/environmentContext.test.d.ts +6 -0
- package/dist/src/utils/environmentContext.test.js +139 -0
- package/dist/src/utils/environmentContext.test.js.map +1 -0
- package/dist/src/utils/fileUtils.js +2 -10
- package/dist/src/utils/fileUtils.js.map +1 -1
- package/dist/src/utils/fileUtils.test.js +1 -4
- package/dist/src/utils/fileUtils.test.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.d.ts +1 -0
- package/dist/src/utils/filesearch/fileSearch.js +27 -5
- package/dist/src/utils/filesearch/fileSearch.js.map +1 -1
- package/dist/src/utils/filesearch/fileSearch.test.js +21 -1
- package/dist/src/utils/filesearch/fileSearch.test.js.map +1 -1
- package/dist/src/utils/memoryDiscovery.js +4 -1
- package/dist/src/utils/memoryDiscovery.js.map +1 -1
- package/dist/src/utils/shell-utils.js +14 -2
- package/dist/src/utils/shell-utils.js.map +1 -1
- package/dist/src/utils/shell-utils.shellReplacement.test.d.ts +6 -0
- package/dist/src/utils/shell-utils.shellReplacement.test.js +149 -0
- package/dist/src/utils/shell-utils.shellReplacement.test.js.map +1 -0
- package/package.json +2 -1
package/dist/src/tools/edit.js
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import * as fs from 'fs';
|
|
7
7
|
import * as path from 'path';
|
|
8
8
|
import * as Diff from 'diff';
|
|
9
|
-
import {
|
|
9
|
+
import { BaseDeclarativeTool, Icon, ToolConfirmationOutcome, } from './tools.js';
|
|
10
10
|
import { ToolErrorType } from './tool-error.js';
|
|
11
11
|
import { Type } from '@google/genai';
|
|
12
12
|
import { SchemaValidator } from '../utils/schemaValidator.js';
|
|
@@ -16,89 +16,30 @@ import { ApprovalMode } from '../config/config.js';
|
|
|
16
16
|
import { ensureCorrectEdit } from '../utils/editCorrector.js';
|
|
17
17
|
import { DEFAULT_DIFF_OPTIONS } from './diffOptions.js';
|
|
18
18
|
import { ReadFileTool } from './read-file.js';
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
config;
|
|
24
|
-
static Name = 'replace';
|
|
25
|
-
constructor(config) {
|
|
26
|
-
super(EditTool.Name, 'Edit', `Replaces text within a file. By default, replaces a single occurrence, but can replace multiple occurrences when \`expected_replacements\` is specified. This tool requires providing significant context around the change to ensure precise targeting. Always use the ${ReadFileTool.Name} tool to examine the file's current content before attempting a text replacement.
|
|
27
|
-
|
|
28
|
-
The user has the ability to modify the \`new_string\` content. If modified, this will be stated in the response.
|
|
29
|
-
|
|
30
|
-
Expectation for required parameters:
|
|
31
|
-
1. \`file_path\` MUST be an absolute path; otherwise an error will be thrown.
|
|
32
|
-
2. \`old_string\` MUST be the exact literal text to replace (including all whitespace, indentation, newlines, and surrounding code etc.).
|
|
33
|
-
3. \`new_string\` MUST be the exact literal text to replace \`old_string\` with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.
|
|
34
|
-
4. NEVER escape \`old_string\` or \`new_string\`, that would break the exact literal text requirement.
|
|
35
|
-
**Important:** If ANY of the above are not satisfied, the tool will fail. CRITICAL for \`old_string\`: Must uniquely identify the single instance to change. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail.
|
|
36
|
-
**Multiple replacements:** Set \`expected_replacements\` to the number of occurrences you want to replace. The tool will replace ALL occurrences that match \`old_string\` exactly. Ensure the number of replacements matches your expectation.`, Icon.Pencil, {
|
|
37
|
-
properties: {
|
|
38
|
-
file_path: {
|
|
39
|
-
description: "The absolute path to the file to modify. Must start with '/'.",
|
|
40
|
-
type: Type.STRING,
|
|
41
|
-
},
|
|
42
|
-
old_string: {
|
|
43
|
-
description: 'The exact literal text to replace, preferably unescaped. For single replacements (default), include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. For multiple replacements, specify expected_replacements parameter. If this string is not the exact literal text (i.e. you escaped it) or does not match exactly, the tool will fail.',
|
|
44
|
-
type: Type.STRING,
|
|
45
|
-
},
|
|
46
|
-
new_string: {
|
|
47
|
-
description: 'The exact literal text to replace `old_string` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic.',
|
|
48
|
-
type: Type.STRING,
|
|
49
|
-
},
|
|
50
|
-
expected_replacements: {
|
|
51
|
-
type: Type.NUMBER,
|
|
52
|
-
description: 'Number of replacements expected. Defaults to 1 if not specified. Use when you want to replace multiple occurrences.',
|
|
53
|
-
minimum: 1,
|
|
54
|
-
},
|
|
55
|
-
},
|
|
56
|
-
required: ['file_path', 'old_string', 'new_string'],
|
|
57
|
-
type: Type.OBJECT,
|
|
58
|
-
});
|
|
59
|
-
this.config = config;
|
|
19
|
+
import { IDEConnectionStatus } from '../ide/ide-client.js';
|
|
20
|
+
export function applyReplacement(currentContent, oldString, newString, isNewFile) {
|
|
21
|
+
if (isNewFile) {
|
|
22
|
+
return newString;
|
|
60
23
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
* @returns Error message string or null if valid
|
|
65
|
-
*/
|
|
66
|
-
validateToolParams(params) {
|
|
67
|
-
const errors = SchemaValidator.validate(this.schema.parameters, params);
|
|
68
|
-
if (errors) {
|
|
69
|
-
return errors;
|
|
70
|
-
}
|
|
71
|
-
if (!path.isAbsolute(params.file_path)) {
|
|
72
|
-
return `File path must be absolute: ${params.file_path}`;
|
|
73
|
-
}
|
|
74
|
-
const workspaceContext = this.config.getWorkspaceContext();
|
|
75
|
-
if (!workspaceContext.isPathWithinWorkspace(params.file_path)) {
|
|
76
|
-
const directories = workspaceContext.getDirectories();
|
|
77
|
-
return `File path must be within one of the workspace directories: ${directories.join(', ')}`;
|
|
78
|
-
}
|
|
79
|
-
return null;
|
|
24
|
+
if (currentContent === null) {
|
|
25
|
+
// Should not happen if not a new file, but defensively return empty or newString if oldString is also empty
|
|
26
|
+
return oldString === '' ? newString : '';
|
|
80
27
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
* @returns A list of such paths
|
|
85
|
-
*/
|
|
86
|
-
toolLocations(params) {
|
|
87
|
-
return [{ path: params.file_path }];
|
|
28
|
+
// If oldString is empty and it's not a new file, do not modify the content.
|
|
29
|
+
if (oldString === '' && !isNewFile) {
|
|
30
|
+
return currentContent;
|
|
88
31
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
return currentContent.replaceAll(oldString, newString);
|
|
32
|
+
return currentContent.replaceAll(oldString, newString);
|
|
33
|
+
}
|
|
34
|
+
class EditToolInvocation {
|
|
35
|
+
config;
|
|
36
|
+
params;
|
|
37
|
+
constructor(config, params) {
|
|
38
|
+
this.config = config;
|
|
39
|
+
this.params = params;
|
|
40
|
+
}
|
|
41
|
+
toolLocations() {
|
|
42
|
+
return [{ path: this.params.file_path }];
|
|
102
43
|
}
|
|
103
44
|
/**
|
|
104
45
|
* Calculates the potential outcome of an edit operation.
|
|
@@ -185,7 +126,7 @@ Expectation for required parameters:
|
|
|
185
126
|
type: ToolErrorType.READ_CONTENT_FAILURE,
|
|
186
127
|
};
|
|
187
128
|
}
|
|
188
|
-
const newContent =
|
|
129
|
+
const newContent = applyReplacement(currentContent, finalOldString, finalNewString, isNewFile);
|
|
189
130
|
return {
|
|
190
131
|
currentContent,
|
|
191
132
|
newContent,
|
|
@@ -198,20 +139,15 @@ Expectation for required parameters:
|
|
|
198
139
|
* Handles the confirmation prompt for the Edit tool in the CLI.
|
|
199
140
|
* It needs to calculate the diff to show the user.
|
|
200
141
|
*/
|
|
201
|
-
async shouldConfirmExecute(
|
|
142
|
+
async shouldConfirmExecute(abortSignal) {
|
|
202
143
|
const approvalMode = this.config.getApprovalMode();
|
|
203
144
|
if (approvalMode === ApprovalMode.AUTO_EDIT ||
|
|
204
145
|
approvalMode === ApprovalMode.YOLO) {
|
|
205
146
|
return false;
|
|
206
147
|
}
|
|
207
|
-
const validationError = this.validateToolParams(params);
|
|
208
|
-
if (validationError) {
|
|
209
|
-
console.error(`[EditTool Wrapper] Attempted confirmation with invalid parameters: ${validationError}`);
|
|
210
|
-
return false;
|
|
211
|
-
}
|
|
212
148
|
let editData;
|
|
213
149
|
try {
|
|
214
|
-
editData = await this.calculateEdit(params, abortSignal);
|
|
150
|
+
editData = await this.calculateEdit(this.params, abortSignal);
|
|
215
151
|
}
|
|
216
152
|
catch (error) {
|
|
217
153
|
console.error('Failed to calculate edit:', error);
|
|
@@ -220,12 +156,19 @@ Expectation for required parameters:
|
|
|
220
156
|
if (editData.error) {
|
|
221
157
|
return false;
|
|
222
158
|
}
|
|
223
|
-
const fileName = path.basename(params.file_path);
|
|
159
|
+
const fileName = path.basename(this.params.file_path);
|
|
224
160
|
const fileDiff = Diff.createPatch(fileName, editData.currentContent ?? '', editData.newContent, 'Current', 'Proposed', DEFAULT_DIFF_OPTIONS);
|
|
161
|
+
const ideClient = this.config.getIdeClient();
|
|
162
|
+
const ideConfirmation = this.config.getIdeModeFeature() &&
|
|
163
|
+
this.config.getIdeMode() &&
|
|
164
|
+
ideClient?.getConnectionStatus().status === IDEConnectionStatus.Connected
|
|
165
|
+
? ideClient.openDiff(this.params.file_path, editData.newContent)
|
|
166
|
+
: undefined;
|
|
225
167
|
const confirmationDetails = {
|
|
226
168
|
type: 'edit',
|
|
227
|
-
title: `Confirm Edit: ${shortenPath(makeRelative(params.file_path, this.config.getTargetDir()))}`,
|
|
169
|
+
title: `Confirm Edit: ${shortenPath(makeRelative(this.params.file_path, this.config.getTargetDir()))}`,
|
|
228
170
|
fileName,
|
|
171
|
+
filePath: this.params.file_path,
|
|
229
172
|
fileDiff,
|
|
230
173
|
originalContent: editData.currentContent,
|
|
231
174
|
newContent: editData.newContent,
|
|
@@ -233,23 +176,30 @@ Expectation for required parameters:
|
|
|
233
176
|
if (outcome === ToolConfirmationOutcome.ProceedAlways) {
|
|
234
177
|
this.config.setApprovalMode(ApprovalMode.AUTO_EDIT);
|
|
235
178
|
}
|
|
179
|
+
if (ideConfirmation) {
|
|
180
|
+
const result = await ideConfirmation;
|
|
181
|
+
if (result.status === 'accepted' && result.content) {
|
|
182
|
+
// TODO(chrstn): See https://github.com/google-gemini/gemini-cli/pull/5618#discussion_r2255413084
|
|
183
|
+
// for info on a possible race condition where the file is modified on disk while being edited.
|
|
184
|
+
this.params.old_string = editData.currentContent ?? '';
|
|
185
|
+
this.params.new_string = result.content;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
236
188
|
},
|
|
189
|
+
ideConfirmation,
|
|
237
190
|
};
|
|
238
191
|
return confirmationDetails;
|
|
239
192
|
}
|
|
240
|
-
getDescription(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
}
|
|
244
|
-
const relativePath = makeRelative(params.file_path, this.config.getTargetDir());
|
|
245
|
-
if (params.old_string === '') {
|
|
193
|
+
getDescription() {
|
|
194
|
+
const relativePath = makeRelative(this.params.file_path, this.config.getTargetDir());
|
|
195
|
+
if (this.params.old_string === '') {
|
|
246
196
|
return `Create ${shortenPath(relativePath)}`;
|
|
247
197
|
}
|
|
248
|
-
const oldStringSnippet = params.old_string.split('\n')[0].substring(0, 30) +
|
|
249
|
-
(params.old_string.length > 30 ? '...' : '');
|
|
250
|
-
const newStringSnippet = params.new_string.split('\n')[0].substring(0, 30) +
|
|
251
|
-
(params.new_string.length > 30 ? '...' : '');
|
|
252
|
-
if (params.old_string === params.new_string) {
|
|
198
|
+
const oldStringSnippet = this.params.old_string.split('\n')[0].substring(0, 30) +
|
|
199
|
+
(this.params.old_string.length > 30 ? '...' : '');
|
|
200
|
+
const newStringSnippet = this.params.new_string.split('\n')[0].substring(0, 30) +
|
|
201
|
+
(this.params.new_string.length > 30 ? '...' : '');
|
|
202
|
+
if (this.params.old_string === this.params.new_string) {
|
|
253
203
|
return `No file changes to ${shortenPath(relativePath)}`;
|
|
254
204
|
}
|
|
255
205
|
return `${shortenPath(relativePath)}: ${oldStringSnippet} => ${newStringSnippet}`;
|
|
@@ -259,21 +209,10 @@ Expectation for required parameters:
|
|
|
259
209
|
* @param params Parameters for the edit operation
|
|
260
210
|
* @returns Result of the edit operation
|
|
261
211
|
*/
|
|
262
|
-
async execute(
|
|
263
|
-
const validationError = this.validateToolParams(params);
|
|
264
|
-
if (validationError) {
|
|
265
|
-
return {
|
|
266
|
-
llmContent: `Error: Invalid parameters provided. Reason: ${validationError}`,
|
|
267
|
-
returnDisplay: `Error: ${validationError}`,
|
|
268
|
-
error: {
|
|
269
|
-
message: validationError,
|
|
270
|
-
type: ToolErrorType.INVALID_TOOL_PARAMS,
|
|
271
|
-
},
|
|
272
|
-
};
|
|
273
|
-
}
|
|
212
|
+
async execute(signal) {
|
|
274
213
|
let editData;
|
|
275
214
|
try {
|
|
276
|
-
editData = await this.calculateEdit(params, signal);
|
|
215
|
+
editData = await this.calculateEdit(this.params, signal);
|
|
277
216
|
}
|
|
278
217
|
catch (error) {
|
|
279
218
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
@@ -297,16 +236,16 @@ Expectation for required parameters:
|
|
|
297
236
|
};
|
|
298
237
|
}
|
|
299
238
|
try {
|
|
300
|
-
this.ensureParentDirectoriesExist(params.file_path);
|
|
301
|
-
fs.writeFileSync(params.file_path, editData.newContent, 'utf8');
|
|
239
|
+
this.ensureParentDirectoriesExist(this.params.file_path);
|
|
240
|
+
fs.writeFileSync(this.params.file_path, editData.newContent, 'utf8');
|
|
302
241
|
let displayResult;
|
|
303
242
|
if (editData.isNewFile) {
|
|
304
|
-
displayResult = `Created ${shortenPath(makeRelative(params.file_path, this.config.getTargetDir()))}`;
|
|
243
|
+
displayResult = `Created ${shortenPath(makeRelative(this.params.file_path, this.config.getTargetDir()))}`;
|
|
305
244
|
}
|
|
306
245
|
else {
|
|
307
246
|
// Generate diff for display, even though core logic doesn't technically need it
|
|
308
247
|
// The CLI wrapper will use this part of the ToolResult
|
|
309
|
-
const fileName = path.basename(params.file_path);
|
|
248
|
+
const fileName = path.basename(this.params.file_path);
|
|
310
249
|
const fileDiff = Diff.createPatch(fileName, editData.currentContent ?? '', // Should not be null here if not isNewFile
|
|
311
250
|
editData.newContent, 'Current', 'Proposed', DEFAULT_DIFF_OPTIONS);
|
|
312
251
|
displayResult = {
|
|
@@ -318,11 +257,11 @@ Expectation for required parameters:
|
|
|
318
257
|
}
|
|
319
258
|
const llmSuccessMessageParts = [
|
|
320
259
|
editData.isNewFile
|
|
321
|
-
? `Created new file: ${params.file_path} with provided content.`
|
|
322
|
-
: `Successfully modified file: ${params.file_path} (${editData.occurrences} replacements).`,
|
|
260
|
+
? `Created new file: ${this.params.file_path} with provided content.`
|
|
261
|
+
: `Successfully modified file: ${this.params.file_path} (${editData.occurrences} replacements).`,
|
|
323
262
|
];
|
|
324
|
-
if (params.modified_by_user) {
|
|
325
|
-
llmSuccessMessageParts.push(`User modified the \`new_string\` content to be: ${params.new_string}.`);
|
|
263
|
+
if (this.params.modified_by_user) {
|
|
264
|
+
llmSuccessMessageParts.push(`User modified the \`new_string\` content to be: ${this.params.new_string}.`);
|
|
326
265
|
}
|
|
327
266
|
return {
|
|
328
267
|
llmContent: llmSuccessMessageParts.join(' '),
|
|
@@ -350,6 +289,72 @@ Expectation for required parameters:
|
|
|
350
289
|
fs.mkdirSync(dirName, { recursive: true });
|
|
351
290
|
}
|
|
352
291
|
}
|
|
292
|
+
}
|
|
293
|
+
/**
|
|
294
|
+
* Implementation of the Edit tool logic
|
|
295
|
+
*/
|
|
296
|
+
export class EditTool extends BaseDeclarativeTool {
|
|
297
|
+
config;
|
|
298
|
+
static Name = 'replace';
|
|
299
|
+
constructor(config) {
|
|
300
|
+
super(EditTool.Name, 'Edit', `Replaces text within a file. By default, replaces a single occurrence, but can replace multiple occurrences when \`expected_replacements\` is specified. This tool requires providing significant context around the change to ensure precise targeting. Always use the ${ReadFileTool.Name} tool to examine the file's current content before attempting a text replacement.
|
|
301
|
+
|
|
302
|
+
The user has the ability to modify the \`new_string\` content. If modified, this will be stated in the response.
|
|
303
|
+
|
|
304
|
+
Expectation for required parameters:
|
|
305
|
+
1. \`file_path\` MUST be an absolute path; otherwise an error will be thrown.
|
|
306
|
+
2. \`old_string\` MUST be the exact literal text to replace (including all whitespace, indentation, newlines, and surrounding code etc.).
|
|
307
|
+
3. \`new_string\` MUST be the exact literal text to replace \`old_string\` with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.
|
|
308
|
+
4. NEVER escape \`old_string\` or \`new_string\`, that would break the exact literal text requirement.
|
|
309
|
+
**Important:** If ANY of the above are not satisfied, the tool will fail. CRITICAL for \`old_string\`: Must uniquely identify the single instance to change. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail.
|
|
310
|
+
**Multiple replacements:** Set \`expected_replacements\` to the number of occurrences you want to replace. The tool will replace ALL occurrences that match \`old_string\` exactly. Ensure the number of replacements matches your expectation.`, Icon.Pencil, {
|
|
311
|
+
properties: {
|
|
312
|
+
file_path: {
|
|
313
|
+
description: "The absolute path to the file to modify. Must start with '/'.",
|
|
314
|
+
type: Type.STRING,
|
|
315
|
+
},
|
|
316
|
+
old_string: {
|
|
317
|
+
description: 'The exact literal text to replace, preferably unescaped. For single replacements (default), include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. For multiple replacements, specify expected_replacements parameter. If this string is not the exact literal text (i.e. you escaped it) or does not match exactly, the tool will fail.',
|
|
318
|
+
type: Type.STRING,
|
|
319
|
+
},
|
|
320
|
+
new_string: {
|
|
321
|
+
description: 'The exact literal text to replace `old_string` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic.',
|
|
322
|
+
type: Type.STRING,
|
|
323
|
+
},
|
|
324
|
+
expected_replacements: {
|
|
325
|
+
type: Type.NUMBER,
|
|
326
|
+
description: 'Number of replacements expected. Defaults to 1 if not specified. Use when you want to replace multiple occurrences.',
|
|
327
|
+
minimum: 1,
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
required: ['file_path', 'old_string', 'new_string'],
|
|
331
|
+
type: Type.OBJECT,
|
|
332
|
+
});
|
|
333
|
+
this.config = config;
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Validates the parameters for the Edit tool
|
|
337
|
+
* @param params Parameters to validate
|
|
338
|
+
* @returns Error message string or null if valid
|
|
339
|
+
*/
|
|
340
|
+
validateToolParams(params) {
|
|
341
|
+
const errors = SchemaValidator.validate(this.schema.parameters, params);
|
|
342
|
+
if (errors) {
|
|
343
|
+
return errors;
|
|
344
|
+
}
|
|
345
|
+
if (!path.isAbsolute(params.file_path)) {
|
|
346
|
+
return `File path must be absolute: ${params.file_path}`;
|
|
347
|
+
}
|
|
348
|
+
const workspaceContext = this.config.getWorkspaceContext();
|
|
349
|
+
if (!workspaceContext.isPathWithinWorkspace(params.file_path)) {
|
|
350
|
+
const directories = workspaceContext.getDirectories();
|
|
351
|
+
return `File path must be within one of the workspace directories: ${directories.join(', ')}`;
|
|
352
|
+
}
|
|
353
|
+
return null;
|
|
354
|
+
}
|
|
355
|
+
createInvocation(params) {
|
|
356
|
+
return new EditToolInvocation(this.config, params);
|
|
357
|
+
}
|
|
353
358
|
getModifyContext(_) {
|
|
354
359
|
return {
|
|
355
360
|
getFilePath: (params) => params.file_path,
|
|
@@ -366,7 +371,7 @@ Expectation for required parameters:
|
|
|
366
371
|
getProposedContent: async (params) => {
|
|
367
372
|
try {
|
|
368
373
|
const currentContent = fs.readFileSync(params.file_path, 'utf8');
|
|
369
|
-
return
|
|
374
|
+
return applyReplacement(currentContent, params.old_string, params.new_string, params.old_string === '' && currentContent === '');
|
|
370
375
|
}
|
|
371
376
|
catch (err) {
|
|
372
377
|
if (!isNodeError(err) || err.code !== 'ENOENT')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/edit.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"edit.js","sourceRoot":"","sources":["../../../src/tools/edit.ts"],"names":[],"mappings":"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"}
|