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/src/tools/bashTool.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { spawn, ChildProcess } 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
|
import type { ToolPlugin, ToolResult, ToolContext } from "./types.js";
|
|
4
6
|
|
|
5
7
|
/**
|
|
@@ -45,6 +47,7 @@ export const bashTool: ToolPlugin = {
|
|
|
45
47
|
): Promise<ToolResult> => {
|
|
46
48
|
const command = args.command as string;
|
|
47
49
|
const runInBackground = args.run_in_background as boolean | undefined;
|
|
50
|
+
const description = args.description as string | undefined;
|
|
48
51
|
// Set default timeout: 60s for foreground, no timeout for background
|
|
49
52
|
const timeout =
|
|
50
53
|
(args.timeout as number | undefined) ??
|
|
@@ -70,6 +73,45 @@ export const bashTool: ToolPlugin = {
|
|
|
70
73
|
};
|
|
71
74
|
}
|
|
72
75
|
|
|
76
|
+
// Permission check after validation but before real operation
|
|
77
|
+
if (
|
|
78
|
+
context.permissionManager &&
|
|
79
|
+
context.permissionMode &&
|
|
80
|
+
context.permissionMode !== "bypassPermissions"
|
|
81
|
+
) {
|
|
82
|
+
if (context.permissionManager.isRestrictedTool("Bash")) {
|
|
83
|
+
try {
|
|
84
|
+
const permissionContext = context.permissionManager.createContext(
|
|
85
|
+
"Bash",
|
|
86
|
+
context.permissionMode,
|
|
87
|
+
context.canUseToolCallback,
|
|
88
|
+
{
|
|
89
|
+
command,
|
|
90
|
+
description,
|
|
91
|
+
run_in_background: runInBackground,
|
|
92
|
+
timeout,
|
|
93
|
+
},
|
|
94
|
+
);
|
|
95
|
+
const permissionResult =
|
|
96
|
+
await context.permissionManager.checkPermission(permissionContext);
|
|
97
|
+
|
|
98
|
+
if (permissionResult.behavior === "deny") {
|
|
99
|
+
return {
|
|
100
|
+
success: false,
|
|
101
|
+
content: "",
|
|
102
|
+
error: `Bash operation denied by user, reason: ${permissionResult.message || "No reason provided"}`,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
} catch {
|
|
106
|
+
return {
|
|
107
|
+
success: false,
|
|
108
|
+
content: "",
|
|
109
|
+
error: "Permission check failed",
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
73
115
|
if (runInBackground) {
|
|
74
116
|
// Background execution
|
|
75
117
|
const backgroundBashManager = context?.backgroundBashManager;
|
|
@@ -168,18 +210,21 @@ export const bashTool: ToolPlugin = {
|
|
|
168
210
|
handleAbort();
|
|
169
211
|
return;
|
|
170
212
|
}
|
|
171
|
-
|
|
213
|
+
// Use { once: true } to prevent listener accumulation on signal reuse
|
|
214
|
+
context.abortSignal.addEventListener("abort", () => handleAbort(), {
|
|
215
|
+
once: true,
|
|
216
|
+
});
|
|
172
217
|
}
|
|
173
218
|
|
|
174
219
|
child.stdout?.on("data", (data) => {
|
|
175
220
|
if (!isAborted) {
|
|
176
|
-
outputBuffer += data.toString();
|
|
221
|
+
outputBuffer += stripAnsiColors(data.toString());
|
|
177
222
|
}
|
|
178
223
|
});
|
|
179
224
|
|
|
180
225
|
child.stderr?.on("data", (data) => {
|
|
181
226
|
if (!isAborted) {
|
|
182
|
-
errorBuffer += data.toString();
|
|
227
|
+
errorBuffer += stripAnsiColors(data.toString());
|
|
183
228
|
}
|
|
184
229
|
});
|
|
185
230
|
|
|
@@ -193,15 +238,32 @@ export const bashTool: ToolPlugin = {
|
|
|
193
238
|
const combinedOutput =
|
|
194
239
|
outputBuffer + (errorBuffer ? "\n" + errorBuffer : "");
|
|
195
240
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
241
|
+
// Handle large output by writing to temp file if needed
|
|
242
|
+
const finalOutput =
|
|
243
|
+
combinedOutput || `Command executed with exit code: ${exitCode}`;
|
|
244
|
+
handleLargeOutput(finalOutput)
|
|
245
|
+
.then(({ content, filePath }) => {
|
|
246
|
+
resolve({
|
|
247
|
+
success: exitCode === 0,
|
|
248
|
+
content,
|
|
249
|
+
filePath,
|
|
250
|
+
error:
|
|
251
|
+
exitCode !== 0
|
|
252
|
+
? `Command failed with exit code: ${exitCode}`
|
|
253
|
+
: undefined,
|
|
254
|
+
});
|
|
255
|
+
})
|
|
256
|
+
.catch((error) => {
|
|
257
|
+
logger.warn(`Error handling large output: ${error}`);
|
|
258
|
+
resolve({
|
|
259
|
+
success: exitCode === 0,
|
|
260
|
+
content: finalOutput,
|
|
261
|
+
error:
|
|
262
|
+
exitCode !== 0
|
|
263
|
+
? `Command failed with exit code: ${exitCode}`
|
|
264
|
+
: undefined,
|
|
265
|
+
});
|
|
266
|
+
});
|
|
205
267
|
}
|
|
206
268
|
});
|
|
207
269
|
|
|
@@ -220,9 +282,15 @@ export const bashTool: ToolPlugin = {
|
|
|
220
282
|
});
|
|
221
283
|
},
|
|
222
284
|
formatCompactParams: (params: Record<string, unknown>) => {
|
|
285
|
+
const description = params.description as string;
|
|
223
286
|
const command = params.command as string;
|
|
224
287
|
const runInBackground = params.run_in_background as boolean;
|
|
225
|
-
|
|
288
|
+
|
|
289
|
+
if (description) {
|
|
290
|
+
return description;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
return `${command}${runInBackground ? " (background)" : ""}`;
|
|
226
294
|
},
|
|
227
295
|
};
|
|
228
296
|
|
|
@@ -299,15 +367,20 @@ export const bashOutputTool: ToolPlugin = {
|
|
|
299
367
|
|
|
300
368
|
let content = "";
|
|
301
369
|
if (output.stdout) {
|
|
302
|
-
content += output.stdout;
|
|
370
|
+
content += stripAnsiColors(output.stdout);
|
|
303
371
|
}
|
|
304
372
|
if (output.stderr) {
|
|
305
|
-
content += (content ? "\n" : "") + output.stderr;
|
|
373
|
+
content += (content ? "\n" : "") + stripAnsiColors(output.stderr);
|
|
306
374
|
}
|
|
307
375
|
|
|
376
|
+
const finalContent = content || "No output available";
|
|
377
|
+
const { content: processedContent, filePath } =
|
|
378
|
+
await handleLargeOutput(finalContent);
|
|
379
|
+
|
|
308
380
|
return {
|
|
309
381
|
success: true,
|
|
310
|
-
content:
|
|
382
|
+
content: processedContent,
|
|
383
|
+
filePath,
|
|
311
384
|
shortResult: `${bashId}: ${output.status}${shell.exitCode !== undefined ? ` (${shell.exitCode})` : ""}`,
|
|
312
385
|
error: undefined,
|
|
313
386
|
};
|
|
@@ -46,6 +46,42 @@ export const deleteFileTool: ToolPlugin = {
|
|
|
46
46
|
try {
|
|
47
47
|
const filePath = resolvePath(targetFile, context.workdir);
|
|
48
48
|
|
|
49
|
+
// Permission check after validation but before real operation
|
|
50
|
+
if (
|
|
51
|
+
context.permissionManager &&
|
|
52
|
+
context.permissionMode &&
|
|
53
|
+
context.permissionMode !== "bypassPermissions"
|
|
54
|
+
) {
|
|
55
|
+
if (context.permissionManager.isRestrictedTool("Delete")) {
|
|
56
|
+
try {
|
|
57
|
+
const permissionContext = context.permissionManager.createContext(
|
|
58
|
+
"Delete",
|
|
59
|
+
context.permissionMode,
|
|
60
|
+
context.canUseToolCallback,
|
|
61
|
+
{ target_file: targetFile },
|
|
62
|
+
);
|
|
63
|
+
const permissionResult =
|
|
64
|
+
await context.permissionManager.checkPermission(
|
|
65
|
+
permissionContext,
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
if (permissionResult.behavior === "deny") {
|
|
69
|
+
return {
|
|
70
|
+
success: false,
|
|
71
|
+
content: "",
|
|
72
|
+
error: `Delete operation denied by user, reason: ${permissionResult.message || "No reason provided"}`,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
} catch {
|
|
76
|
+
return {
|
|
77
|
+
success: false,
|
|
78
|
+
content: "",
|
|
79
|
+
error: "Permission check failed",
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
49
85
|
// Delete file
|
|
50
86
|
await unlink(filePath);
|
|
51
87
|
|
package/src/tools/editTool.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { readFile, writeFile } from "fs/promises";
|
|
|
2
2
|
import { logger } from "../utils/globalLogger.js";
|
|
3
3
|
import type { ToolPlugin, ToolResult, ToolContext } from "./types.js";
|
|
4
4
|
import { resolvePath, getDisplayPath } from "../utils/path.js";
|
|
5
|
-
import { diffLines } from "diff";
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
7
|
* Format compact parameter display
|
|
@@ -143,6 +142,47 @@ export const editTool: ToolPlugin = {
|
|
|
143
142
|
replacementCount = 1;
|
|
144
143
|
}
|
|
145
144
|
|
|
145
|
+
// Permission check after validation but before real operation
|
|
146
|
+
if (
|
|
147
|
+
context.permissionManager &&
|
|
148
|
+
context.permissionMode &&
|
|
149
|
+
context.permissionMode !== "bypassPermissions"
|
|
150
|
+
) {
|
|
151
|
+
if (context.permissionManager.isRestrictedTool("Edit")) {
|
|
152
|
+
try {
|
|
153
|
+
const permissionContext = context.permissionManager.createContext(
|
|
154
|
+
"Edit",
|
|
155
|
+
context.permissionMode,
|
|
156
|
+
context.canUseToolCallback,
|
|
157
|
+
{
|
|
158
|
+
file_path: filePath,
|
|
159
|
+
old_string: oldString,
|
|
160
|
+
new_string: newString,
|
|
161
|
+
replace_all: replaceAll,
|
|
162
|
+
},
|
|
163
|
+
);
|
|
164
|
+
const permissionResult =
|
|
165
|
+
await context.permissionManager.checkPermission(
|
|
166
|
+
permissionContext,
|
|
167
|
+
);
|
|
168
|
+
|
|
169
|
+
if (permissionResult.behavior === "deny") {
|
|
170
|
+
return {
|
|
171
|
+
success: false,
|
|
172
|
+
content: "",
|
|
173
|
+
error: `Edit operation denied by user, reason: ${permissionResult.message || "No reason provided"}`,
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
} catch {
|
|
177
|
+
return {
|
|
178
|
+
success: false,
|
|
179
|
+
content: "",
|
|
180
|
+
error: "Permission check failed",
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
146
186
|
// Write file
|
|
147
187
|
try {
|
|
148
188
|
await writeFile(resolvedPath, newContent, "utf-8");
|
|
@@ -154,9 +194,6 @@ export const editTool: ToolPlugin = {
|
|
|
154
194
|
};
|
|
155
195
|
}
|
|
156
196
|
|
|
157
|
-
// Generate diff information
|
|
158
|
-
const diffResult = diffLines(originalContent, newContent);
|
|
159
|
-
|
|
160
197
|
const shortResult = replaceAll
|
|
161
198
|
? `Replaced ${replacementCount} instances`
|
|
162
199
|
: "Text replaced successfully";
|
|
@@ -168,9 +205,6 @@ export const editTool: ToolPlugin = {
|
|
|
168
205
|
content: shortResult,
|
|
169
206
|
shortResult,
|
|
170
207
|
filePath: resolvedPath,
|
|
171
|
-
originalContent,
|
|
172
|
-
newContent,
|
|
173
|
-
diffResult,
|
|
174
208
|
};
|
|
175
209
|
} catch (error) {
|
|
176
210
|
const errorMessage =
|