wave-agent-sdk 0.0.8 → 0.0.10
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/dist/agent.d.ts +92 -23
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +340 -137
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/managers/aiManager.d.ts +14 -36
- package/dist/managers/aiManager.d.ts.map +1 -1
- package/dist/managers/aiManager.js +74 -77
- package/dist/managers/backgroundBashManager.d.ts.map +1 -1
- package/dist/managers/backgroundBashManager.js +4 -3
- package/dist/managers/hookManager.d.ts +3 -8
- package/dist/managers/hookManager.d.ts.map +1 -1
- package/dist/managers/hookManager.js +39 -29
- package/dist/managers/liveConfigManager.d.ts +55 -18
- package/dist/managers/liveConfigManager.d.ts.map +1 -1
- package/dist/managers/liveConfigManager.js +372 -90
- package/dist/managers/lspManager.d.ts +43 -0
- package/dist/managers/lspManager.d.ts.map +1 -0
- package/dist/managers/lspManager.js +326 -0
- package/dist/managers/messageManager.d.ts +8 -16
- package/dist/managers/messageManager.d.ts.map +1 -1
- package/dist/managers/messageManager.js +52 -74
- package/dist/managers/permissionManager.d.ts +66 -0
- package/dist/managers/permissionManager.d.ts.map +1 -0
- package/dist/managers/permissionManager.js +208 -0
- package/dist/managers/skillManager.d.ts +1 -0
- package/dist/managers/skillManager.d.ts.map +1 -1
- package/dist/managers/skillManager.js +2 -1
- package/dist/managers/slashCommandManager.d.ts.map +1 -1
- package/dist/managers/slashCommandManager.js +0 -1
- package/dist/managers/subagentManager.d.ts +8 -23
- package/dist/managers/subagentManager.d.ts.map +1 -1
- package/dist/managers/subagentManager.js +97 -117
- package/dist/managers/toolManager.d.ts +38 -1
- package/dist/managers/toolManager.d.ts.map +1 -1
- package/dist/managers/toolManager.js +66 -2
- package/dist/services/aiService.d.ts +3 -1
- package/dist/services/aiService.d.ts.map +1 -1
- package/dist/services/aiService.js +123 -30
- package/dist/services/configurationService.d.ts +116 -0
- package/dist/services/configurationService.d.ts.map +1 -0
- package/dist/services/configurationService.js +585 -0
- package/dist/services/fileWatcher.d.ts.map +1 -1
- package/dist/services/fileWatcher.js +5 -6
- package/dist/services/hook.d.ts +7 -124
- package/dist/services/hook.d.ts.map +1 -1
- package/dist/services/hook.js +46 -458
- package/dist/services/jsonlHandler.d.ts +24 -15
- package/dist/services/jsonlHandler.d.ts.map +1 -1
- package/dist/services/jsonlHandler.js +67 -88
- package/dist/services/memory.d.ts +0 -9
- package/dist/services/memory.d.ts.map +1 -1
- package/dist/services/memory.js +2 -49
- package/dist/services/session.d.ts +82 -33
- package/dist/services/session.d.ts.map +1 -1
- package/dist/services/session.js +275 -181
- package/dist/tools/bashTool.d.ts.map +1 -1
- package/dist/tools/bashTool.js +72 -13
- package/dist/tools/deleteFileTool.d.ts.map +1 -1
- package/dist/tools/deleteFileTool.js +25 -0
- package/dist/tools/editTool.d.ts.map +1 -1
- package/dist/tools/editTool.js +30 -6
- package/dist/tools/lspTool.d.ts +6 -0
- package/dist/tools/lspTool.d.ts.map +1 -0
- package/dist/tools/lspTool.js +589 -0
- package/dist/tools/multiEditTool.d.ts.map +1 -1
- package/dist/tools/multiEditTool.js +26 -7
- package/dist/tools/readTool.d.ts.map +1 -1
- package/dist/tools/readTool.js +111 -2
- package/dist/tools/skillTool.js +2 -2
- package/dist/tools/todoWriteTool.d.ts.map +1 -1
- package/dist/tools/todoWriteTool.js +23 -0
- package/dist/tools/types.d.ts +11 -8
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/tools/writeTool.d.ts.map +1 -1
- package/dist/tools/writeTool.js +25 -9
- package/dist/types/commands.d.ts +0 -1
- package/dist/types/commands.d.ts.map +1 -1
- package/dist/types/config.d.ts +4 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/configuration.d.ts +69 -0
- package/dist/types/configuration.d.ts.map +1 -0
- package/dist/types/configuration.js +8 -0
- package/dist/types/core.d.ts +10 -0
- package/dist/types/core.d.ts.map +1 -1
- package/dist/types/environment.d.ts +41 -0
- package/dist/types/environment.d.ts.map +1 -1
- package/dist/types/fileSearch.d.ts +5 -0
- package/dist/types/fileSearch.d.ts.map +1 -0
- package/dist/types/fileSearch.js +1 -0
- package/dist/types/hooks.d.ts +11 -2
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/hooks.js +1 -7
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +5 -0
- package/dist/types/lsp.d.ts +90 -0
- package/dist/types/lsp.d.ts.map +1 -0
- package/dist/types/lsp.js +4 -0
- package/dist/types/messaging.d.ts +6 -11
- package/dist/types/messaging.d.ts.map +1 -1
- package/dist/types/permissions.d.ts +35 -0
- package/dist/types/permissions.d.ts.map +1 -0
- package/dist/types/permissions.js +12 -0
- package/dist/types/session.d.ts +1 -6
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/skills.d.ts +1 -0
- package/dist/types/skills.d.ts.map +1 -1
- package/dist/types/tools.d.ts +35 -0
- package/dist/types/tools.d.ts.map +1 -0
- package/dist/types/tools.js +4 -0
- package/dist/utils/abortUtils.d.ts +34 -0
- package/dist/utils/abortUtils.d.ts.map +1 -0
- package/dist/utils/abortUtils.js +92 -0
- package/dist/utils/bashHistory.d.ts +4 -0
- package/dist/utils/bashHistory.d.ts.map +1 -1
- package/dist/utils/bashHistory.js +21 -4
- package/dist/utils/builtinSubagents.d.ts +7 -0
- package/dist/utils/builtinSubagents.d.ts.map +1 -0
- package/dist/utils/builtinSubagents.js +65 -0
- package/dist/utils/cacheControlUtils.d.ts +8 -33
- package/dist/utils/cacheControlUtils.d.ts.map +1 -1
- package/dist/utils/cacheControlUtils.js +83 -126
- package/dist/utils/constants.d.ts +0 -12
- package/dist/utils/constants.d.ts.map +1 -1
- package/dist/utils/constants.js +1 -13
- package/dist/utils/convertMessagesForAPI.d.ts +2 -1
- package/dist/utils/convertMessagesForAPI.d.ts.map +1 -1
- package/dist/utils/convertMessagesForAPI.js +33 -14
- package/dist/utils/fileSearch.d.ts +14 -0
- package/dist/utils/fileSearch.d.ts.map +1 -0
- package/dist/utils/fileSearch.js +88 -0
- package/dist/utils/fileUtils.d.ts +14 -2
- package/dist/utils/fileUtils.d.ts.map +1 -1
- package/dist/utils/fileUtils.js +101 -17
- package/dist/utils/globalLogger.d.ts +0 -14
- package/dist/utils/globalLogger.d.ts.map +1 -1
- package/dist/utils/globalLogger.js +0 -16
- package/dist/utils/largeOutputHandler.d.ts +15 -0
- package/dist/utils/largeOutputHandler.d.ts.map +1 -0
- package/dist/utils/largeOutputHandler.js +40 -0
- package/dist/utils/markdownParser.d.ts.map +1 -1
- package/dist/utils/markdownParser.js +1 -17
- package/dist/utils/messageOperations.d.ts +1 -11
- package/dist/utils/messageOperations.d.ts.map +1 -1
- package/dist/utils/messageOperations.js +7 -24
- package/dist/utils/pathEncoder.d.ts +4 -0
- package/dist/utils/pathEncoder.d.ts.map +1 -1
- package/dist/utils/pathEncoder.js +16 -9
- package/dist/utils/subagentParser.d.ts +2 -2
- package/dist/utils/subagentParser.d.ts.map +1 -1
- package/dist/utils/subagentParser.js +10 -7
- package/dist/utils/tokenEstimator.d.ts +39 -0
- package/dist/utils/tokenEstimator.d.ts.map +1 -0
- package/dist/utils/tokenEstimator.js +55 -0
- package/package.json +5 -8
- package/src/agent.ts +460 -216
- package/src/index.ts +2 -0
- package/src/managers/aiManager.ts +107 -111
- package/src/managers/backgroundBashManager.ts +4 -3
- package/src/managers/hookManager.ts +44 -39
- package/src/managers/liveConfigManager.ts +524 -138
- package/src/managers/lspManager.ts +434 -0
- package/src/managers/messageManager.ts +73 -103
- package/src/managers/permissionManager.ts +276 -0
- package/src/managers/skillManager.ts +3 -1
- package/src/managers/slashCommandManager.ts +1 -2
- package/src/managers/subagentManager.ts +116 -159
- package/src/managers/toolManager.ts +95 -3
- package/src/services/aiService.ts +207 -26
- package/src/services/configurationService.ts +762 -0
- package/src/services/fileWatcher.ts +5 -6
- package/src/services/hook.ts +50 -631
- package/src/services/jsonlHandler.ts +84 -100
- package/src/services/memory.ts +2 -59
- package/src/services/session.ts +338 -213
- package/src/tools/bashTool.ts +89 -16
- package/src/tools/deleteFileTool.ts +36 -0
- package/src/tools/editTool.ts +41 -7
- package/src/tools/lspTool.ts +760 -0
- package/src/tools/multiEditTool.ts +37 -8
- package/src/tools/readTool.ts +125 -2
- package/src/tools/skillTool.ts +2 -2
- package/src/tools/todoWriteTool.ts +33 -1
- package/src/tools/types.ts +15 -9
- package/src/tools/writeTool.ts +36 -10
- package/src/types/commands.ts +0 -1
- package/src/types/config.ts +5 -0
- package/src/types/configuration.ts +73 -0
- package/src/types/core.ts +11 -0
- package/src/types/environment.ts +44 -0
- package/src/types/fileSearch.ts +4 -0
- package/src/types/hooks.ts +14 -11
- package/src/types/index.ts +5 -0
- package/src/types/lsp.ts +96 -0
- package/src/types/messaging.ts +8 -13
- package/src/types/permissions.ts +48 -0
- package/src/types/session.ts +3 -8
- package/src/types/skills.ts +1 -0
- package/src/types/tools.ts +38 -0
- package/src/utils/abortUtils.ts +118 -0
- package/src/utils/bashHistory.ts +28 -4
- package/src/utils/builtinSubagents.ts +71 -0
- package/src/utils/cacheControlUtils.ts +106 -171
- package/src/utils/constants.ts +1 -16
- package/src/utils/convertMessagesForAPI.ts +38 -14
- package/src/utils/fileSearch.ts +107 -0
- package/src/utils/fileUtils.ts +114 -19
- package/src/utils/globalLogger.ts +0 -17
- package/src/utils/largeOutputHandler.ts +55 -0
- package/src/utils/markdownParser.ts +1 -19
- package/src/utils/messageOperations.ts +7 -35
- package/src/utils/pathEncoder.ts +24 -9
- package/src/utils/subagentParser.ts +11 -8
- package/src/utils/tokenEstimator.ts +68 -0
- package/dist/constants/events.d.ts +0 -28
- package/dist/constants/events.d.ts.map +0 -1
- package/dist/constants/events.js +0 -27
- package/dist/services/configurationWatcher.d.ts +0 -120
- package/dist/services/configurationWatcher.d.ts.map +0 -1
- package/dist/services/configurationWatcher.js +0 -439
- package/dist/services/memoryStore.d.ts +0 -81
- package/dist/services/memoryStore.d.ts.map +0 -1
- package/dist/services/memoryStore.js +0 -200
- package/dist/types/memoryStore.d.ts +0 -82
- package/dist/types/memoryStore.d.ts.map +0 -1
- package/dist/types/memoryStore.js +0 -7
- package/dist/utils/configResolver.d.ts +0 -65
- package/dist/utils/configResolver.d.ts.map +0 -1
- package/dist/utils/configResolver.js +0 -210
- package/src/constants/events.ts +0 -38
- package/src/services/configurationWatcher.ts +0 -622
- package/src/services/memoryStore.ts +0 -279
- package/src/types/memoryStore.ts +0 -94
- package/src/utils/configResolver.ts +0 -302
package/dist/tools/bashTool.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { spawn } from "child_process";
|
|
2
2
|
import { logger } from "../utils/globalLogger.js";
|
|
3
|
+
import { stripAnsiColors } from "../utils/stringUtils.js";
|
|
4
|
+
import { handleLargeOutput } from "../utils/largeOutputHandler.js";
|
|
3
5
|
/**
|
|
4
6
|
* Bash command execution tool - supports both foreground and background execution
|
|
5
7
|
*/
|
|
@@ -37,6 +39,7 @@ export const bashTool = {
|
|
|
37
39
|
execute: async (args, context) => {
|
|
38
40
|
const command = args.command;
|
|
39
41
|
const runInBackground = args.run_in_background;
|
|
42
|
+
const description = args.description;
|
|
40
43
|
// Set default timeout: 60s for foreground, no timeout for background
|
|
41
44
|
const timeout = args.timeout ??
|
|
42
45
|
(runInBackground ? undefined : 60000);
|
|
@@ -56,6 +59,36 @@ export const bashTool = {
|
|
|
56
59
|
error: "Timeout must be a number between 0 and 600000 milliseconds",
|
|
57
60
|
};
|
|
58
61
|
}
|
|
62
|
+
// Permission check after validation but before real operation
|
|
63
|
+
if (context.permissionManager &&
|
|
64
|
+
context.permissionMode &&
|
|
65
|
+
context.permissionMode !== "bypassPermissions") {
|
|
66
|
+
if (context.permissionManager.isRestrictedTool("Bash")) {
|
|
67
|
+
try {
|
|
68
|
+
const permissionContext = context.permissionManager.createContext("Bash", context.permissionMode, context.canUseToolCallback, {
|
|
69
|
+
command,
|
|
70
|
+
description,
|
|
71
|
+
run_in_background: runInBackground,
|
|
72
|
+
timeout,
|
|
73
|
+
});
|
|
74
|
+
const permissionResult = await context.permissionManager.checkPermission(permissionContext);
|
|
75
|
+
if (permissionResult.behavior === "deny") {
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
content: "",
|
|
79
|
+
error: `Bash operation denied by user, reason: ${permissionResult.message || "No reason provided"}`,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return {
|
|
85
|
+
success: false,
|
|
86
|
+
content: "",
|
|
87
|
+
error: "Permission check failed",
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
59
92
|
if (runInBackground) {
|
|
60
93
|
// Background execution
|
|
61
94
|
const backgroundBashManager = context?.backgroundBashManager;
|
|
@@ -147,16 +180,19 @@ export const bashTool = {
|
|
|
147
180
|
handleAbort();
|
|
148
181
|
return;
|
|
149
182
|
}
|
|
150
|
-
|
|
183
|
+
// Use { once: true } to prevent listener accumulation on signal reuse
|
|
184
|
+
context.abortSignal.addEventListener("abort", () => handleAbort(), {
|
|
185
|
+
once: true,
|
|
186
|
+
});
|
|
151
187
|
}
|
|
152
188
|
child.stdout?.on("data", (data) => {
|
|
153
189
|
if (!isAborted) {
|
|
154
|
-
outputBuffer += data.toString();
|
|
190
|
+
outputBuffer += stripAnsiColors(data.toString());
|
|
155
191
|
}
|
|
156
192
|
});
|
|
157
193
|
child.stderr?.on("data", (data) => {
|
|
158
194
|
if (!isAborted) {
|
|
159
|
-
errorBuffer += data.toString();
|
|
195
|
+
errorBuffer += stripAnsiColors(data.toString());
|
|
160
196
|
}
|
|
161
197
|
});
|
|
162
198
|
child.on("exit", (code) => {
|
|
@@ -166,12 +202,28 @@ export const bashTool = {
|
|
|
166
202
|
}
|
|
167
203
|
const exitCode = code ?? 0;
|
|
168
204
|
const combinedOutput = outputBuffer + (errorBuffer ? "\n" + errorBuffer : "");
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
:
|
|
205
|
+
// Handle large output by writing to temp file if needed
|
|
206
|
+
const finalOutput = combinedOutput || `Command executed with exit code: ${exitCode}`;
|
|
207
|
+
handleLargeOutput(finalOutput)
|
|
208
|
+
.then(({ content, filePath }) => {
|
|
209
|
+
resolve({
|
|
210
|
+
success: exitCode === 0,
|
|
211
|
+
content,
|
|
212
|
+
filePath,
|
|
213
|
+
error: exitCode !== 0
|
|
214
|
+
? `Command failed with exit code: ${exitCode}`
|
|
215
|
+
: undefined,
|
|
216
|
+
});
|
|
217
|
+
})
|
|
218
|
+
.catch((error) => {
|
|
219
|
+
logger.warn(`Error handling large output: ${error}`);
|
|
220
|
+
resolve({
|
|
221
|
+
success: exitCode === 0,
|
|
222
|
+
content: finalOutput,
|
|
223
|
+
error: exitCode !== 0
|
|
224
|
+
? `Command failed with exit code: ${exitCode}`
|
|
225
|
+
: undefined,
|
|
226
|
+
});
|
|
175
227
|
});
|
|
176
228
|
}
|
|
177
229
|
});
|
|
@@ -190,9 +242,13 @@ export const bashTool = {
|
|
|
190
242
|
});
|
|
191
243
|
},
|
|
192
244
|
formatCompactParams: (params) => {
|
|
245
|
+
const description = params.description;
|
|
193
246
|
const command = params.command;
|
|
194
247
|
const runInBackground = params.run_in_background;
|
|
195
|
-
|
|
248
|
+
if (description) {
|
|
249
|
+
return description;
|
|
250
|
+
}
|
|
251
|
+
return `${command}${runInBackground ? " (background)" : ""}`;
|
|
196
252
|
},
|
|
197
253
|
};
|
|
198
254
|
/**
|
|
@@ -257,14 +313,17 @@ export const bashOutputTool = {
|
|
|
257
313
|
}
|
|
258
314
|
let content = "";
|
|
259
315
|
if (output.stdout) {
|
|
260
|
-
content += output.stdout;
|
|
316
|
+
content += stripAnsiColors(output.stdout);
|
|
261
317
|
}
|
|
262
318
|
if (output.stderr) {
|
|
263
|
-
content += (content ? "\n" : "") + output.stderr;
|
|
319
|
+
content += (content ? "\n" : "") + stripAnsiColors(output.stderr);
|
|
264
320
|
}
|
|
321
|
+
const finalContent = content || "No output available";
|
|
322
|
+
const { content: processedContent, filePath } = await handleLargeOutput(finalContent);
|
|
265
323
|
return {
|
|
266
324
|
success: true,
|
|
267
|
-
content:
|
|
325
|
+
content: processedContent,
|
|
326
|
+
filePath,
|
|
268
327
|
shortResult: `${bashId}: ${output.status}${shell.exitCode !== undefined ? ` (${shell.exitCode})` : ""}`,
|
|
269
328
|
error: undefined,
|
|
270
329
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deleteFileTool.d.ts","sourceRoot":"","sources":["../../src/tools/deleteFileTool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAGtE;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"deleteFileTool.d.ts","sourceRoot":"","sources":["../../src/tools/deleteFileTool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAGtE;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UA6G5B,CAAC"}
|
|
@@ -37,6 +37,31 @@ export const deleteFileTool = {
|
|
|
37
37
|
}
|
|
38
38
|
try {
|
|
39
39
|
const filePath = resolvePath(targetFile, context.workdir);
|
|
40
|
+
// Permission check after validation but before real operation
|
|
41
|
+
if (context.permissionManager &&
|
|
42
|
+
context.permissionMode &&
|
|
43
|
+
context.permissionMode !== "bypassPermissions") {
|
|
44
|
+
if (context.permissionManager.isRestrictedTool("Delete")) {
|
|
45
|
+
try {
|
|
46
|
+
const permissionContext = context.permissionManager.createContext("Delete", context.permissionMode, context.canUseToolCallback, { target_file: targetFile });
|
|
47
|
+
const permissionResult = await context.permissionManager.checkPermission(permissionContext);
|
|
48
|
+
if (permissionResult.behavior === "deny") {
|
|
49
|
+
return {
|
|
50
|
+
success: false,
|
|
51
|
+
content: "",
|
|
52
|
+
error: `Delete operation denied by user, reason: ${permissionResult.message || "No reason provided"}`,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return {
|
|
58
|
+
success: false,
|
|
59
|
+
content: "",
|
|
60
|
+
error: "Permission check failed",
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
40
65
|
// Delete file
|
|
41
66
|
await unlink(filePath);
|
|
42
67
|
logger.debug(`Successfully deleted file: ${filePath}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editTool.d.ts","sourceRoot":"","sources":["../../src/tools/editTool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"editTool.d.ts","sourceRoot":"","sources":["../../src/tools/editTool.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AActE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UAwMtB,CAAC"}
|
package/dist/tools/editTool.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { readFile, writeFile } from "fs/promises";
|
|
2
2
|
import { logger } from "../utils/globalLogger.js";
|
|
3
3
|
import { resolvePath, getDisplayPath } from "../utils/path.js";
|
|
4
|
-
import { diffLines } from "diff";
|
|
5
4
|
/**
|
|
6
5
|
* Format compact parameter display
|
|
7
6
|
*/
|
|
@@ -123,6 +122,36 @@ export const editTool = {
|
|
|
123
122
|
newContent = originalContent.replace(oldString, newString);
|
|
124
123
|
replacementCount = 1;
|
|
125
124
|
}
|
|
125
|
+
// Permission check after validation but before real operation
|
|
126
|
+
if (context.permissionManager &&
|
|
127
|
+
context.permissionMode &&
|
|
128
|
+
context.permissionMode !== "bypassPermissions") {
|
|
129
|
+
if (context.permissionManager.isRestrictedTool("Edit")) {
|
|
130
|
+
try {
|
|
131
|
+
const permissionContext = context.permissionManager.createContext("Edit", context.permissionMode, context.canUseToolCallback, {
|
|
132
|
+
file_path: filePath,
|
|
133
|
+
old_string: oldString,
|
|
134
|
+
new_string: newString,
|
|
135
|
+
replace_all: replaceAll,
|
|
136
|
+
});
|
|
137
|
+
const permissionResult = await context.permissionManager.checkPermission(permissionContext);
|
|
138
|
+
if (permissionResult.behavior === "deny") {
|
|
139
|
+
return {
|
|
140
|
+
success: false,
|
|
141
|
+
content: "",
|
|
142
|
+
error: `Edit operation denied by user, reason: ${permissionResult.message || "No reason provided"}`,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
return {
|
|
148
|
+
success: false,
|
|
149
|
+
content: "",
|
|
150
|
+
error: "Permission check failed",
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
126
155
|
// Write file
|
|
127
156
|
try {
|
|
128
157
|
await writeFile(resolvedPath, newContent, "utf-8");
|
|
@@ -134,8 +163,6 @@ export const editTool = {
|
|
|
134
163
|
error: `Failed to write file: ${writeError instanceof Error ? writeError.message : String(writeError)}`,
|
|
135
164
|
};
|
|
136
165
|
}
|
|
137
|
-
// Generate diff information
|
|
138
|
-
const diffResult = diffLines(originalContent, newContent);
|
|
139
166
|
const shortResult = replaceAll
|
|
140
167
|
? `Replaced ${replacementCount} instances`
|
|
141
168
|
: "Text replaced successfully";
|
|
@@ -145,9 +172,6 @@ export const editTool = {
|
|
|
145
172
|
content: shortResult,
|
|
146
173
|
shortResult,
|
|
147
174
|
filePath: resolvedPath,
|
|
148
|
-
originalContent,
|
|
149
|
-
newContent,
|
|
150
|
-
diffResult,
|
|
151
175
|
};
|
|
152
176
|
}
|
|
153
177
|
catch (error) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lspTool.d.ts","sourceRoot":"","sources":["../../src/tools/lspTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AA8dtE;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,UAsRrB,CAAC"}
|