wave-agent-sdk 0.0.7 → 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.
Files changed (240) hide show
  1. package/dist/agent.d.ts +105 -24
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +438 -53
  4. package/dist/index.d.ts +4 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +4 -0
  7. package/dist/managers/aiManager.d.ts +18 -7
  8. package/dist/managers/aiManager.d.ts.map +1 -1
  9. package/dist/managers/aiManager.js +254 -142
  10. package/dist/managers/backgroundBashManager.d.ts.map +1 -1
  11. package/dist/managers/backgroundBashManager.js +11 -9
  12. package/dist/managers/hookManager.d.ts +6 -6
  13. package/dist/managers/hookManager.d.ts.map +1 -1
  14. package/dist/managers/hookManager.js +81 -39
  15. package/dist/managers/liveConfigManager.d.ts +95 -0
  16. package/dist/managers/liveConfigManager.d.ts.map +1 -0
  17. package/dist/managers/liveConfigManager.js +442 -0
  18. package/dist/managers/lspManager.d.ts +43 -0
  19. package/dist/managers/lspManager.d.ts.map +1 -0
  20. package/dist/managers/lspManager.js +326 -0
  21. package/dist/managers/messageManager.d.ts +41 -24
  22. package/dist/managers/messageManager.d.ts.map +1 -1
  23. package/dist/managers/messageManager.js +184 -73
  24. package/dist/managers/permissionManager.d.ts +66 -0
  25. package/dist/managers/permissionManager.d.ts.map +1 -0
  26. package/dist/managers/permissionManager.js +208 -0
  27. package/dist/managers/skillManager.d.ts +1 -0
  28. package/dist/managers/skillManager.d.ts.map +1 -1
  29. package/dist/managers/skillManager.js +2 -1
  30. package/dist/managers/slashCommandManager.d.ts.map +1 -1
  31. package/dist/managers/slashCommandManager.js +4 -2
  32. package/dist/managers/subagentManager.d.ts +42 -6
  33. package/dist/managers/subagentManager.d.ts.map +1 -1
  34. package/dist/managers/subagentManager.js +213 -62
  35. package/dist/managers/toolManager.d.ts +38 -1
  36. package/dist/managers/toolManager.d.ts.map +1 -1
  37. package/dist/managers/toolManager.js +66 -2
  38. package/dist/services/aiService.d.ts +15 -5
  39. package/dist/services/aiService.d.ts.map +1 -1
  40. package/dist/services/aiService.js +446 -77
  41. package/dist/services/configurationService.d.ts +116 -0
  42. package/dist/services/configurationService.d.ts.map +1 -0
  43. package/dist/services/configurationService.js +585 -0
  44. package/dist/services/fileWatcher.d.ts +69 -0
  45. package/dist/services/fileWatcher.d.ts.map +1 -0
  46. package/dist/services/fileWatcher.js +212 -0
  47. package/dist/services/hook.d.ts +5 -40
  48. package/dist/services/hook.d.ts.map +1 -1
  49. package/dist/services/hook.js +47 -109
  50. package/dist/services/jsonlHandler.d.ts +71 -0
  51. package/dist/services/jsonlHandler.d.ts.map +1 -0
  52. package/dist/services/jsonlHandler.js +236 -0
  53. package/dist/services/memory.d.ts.map +1 -1
  54. package/dist/services/memory.js +33 -11
  55. package/dist/services/session.d.ts +116 -52
  56. package/dist/services/session.d.ts.map +1 -1
  57. package/dist/services/session.js +415 -143
  58. package/dist/tools/bashTool.d.ts.map +1 -1
  59. package/dist/tools/bashTool.js +77 -17
  60. package/dist/tools/deleteFileTool.d.ts.map +1 -1
  61. package/dist/tools/deleteFileTool.js +27 -1
  62. package/dist/tools/editTool.d.ts.map +1 -1
  63. package/dist/tools/editTool.js +33 -8
  64. package/dist/tools/lspTool.d.ts +6 -0
  65. package/dist/tools/lspTool.d.ts.map +1 -0
  66. package/dist/tools/lspTool.js +589 -0
  67. package/dist/tools/multiEditTool.d.ts.map +1 -1
  68. package/dist/tools/multiEditTool.js +30 -10
  69. package/dist/tools/readTool.d.ts.map +1 -1
  70. package/dist/tools/readTool.js +113 -3
  71. package/dist/tools/skillTool.js +2 -2
  72. package/dist/tools/todoWriteTool.d.ts.map +1 -1
  73. package/dist/tools/todoWriteTool.js +23 -0
  74. package/dist/tools/types.d.ts +11 -8
  75. package/dist/tools/types.d.ts.map +1 -1
  76. package/dist/tools/writeTool.d.ts.map +1 -1
  77. package/dist/tools/writeTool.js +30 -15
  78. package/dist/types/commands.d.ts +4 -1
  79. package/dist/types/commands.d.ts.map +1 -1
  80. package/dist/types/config.d.ts +4 -0
  81. package/dist/types/config.d.ts.map +1 -1
  82. package/dist/types/configuration.d.ts +69 -0
  83. package/dist/types/configuration.d.ts.map +1 -0
  84. package/dist/types/configuration.js +8 -0
  85. package/dist/types/core.d.ts +45 -0
  86. package/dist/types/core.d.ts.map +1 -1
  87. package/dist/types/environment.d.ts +83 -0
  88. package/dist/types/environment.d.ts.map +1 -0
  89. package/dist/types/environment.js +21 -0
  90. package/dist/types/fileSearch.d.ts +5 -0
  91. package/dist/types/fileSearch.d.ts.map +1 -0
  92. package/dist/types/fileSearch.js +1 -0
  93. package/dist/types/hooks.d.ts +18 -3
  94. package/dist/types/hooks.d.ts.map +1 -1
  95. package/dist/types/hooks.js +8 -8
  96. package/dist/types/index.d.ts +7 -0
  97. package/dist/types/index.d.ts.map +1 -1
  98. package/dist/types/index.js +7 -0
  99. package/dist/types/lsp.d.ts +90 -0
  100. package/dist/types/lsp.d.ts.map +1 -0
  101. package/dist/types/lsp.js +4 -0
  102. package/dist/types/messaging.d.ts +19 -12
  103. package/dist/types/messaging.d.ts.map +1 -1
  104. package/dist/types/permissions.d.ts +35 -0
  105. package/dist/types/permissions.d.ts.map +1 -0
  106. package/dist/types/permissions.js +12 -0
  107. package/dist/types/session.d.ts +15 -0
  108. package/dist/types/session.d.ts.map +1 -0
  109. package/dist/types/session.js +7 -0
  110. package/dist/types/skills.d.ts +1 -0
  111. package/dist/types/skills.d.ts.map +1 -1
  112. package/dist/types/tools.d.ts +35 -0
  113. package/dist/types/tools.d.ts.map +1 -0
  114. package/dist/types/tools.js +4 -0
  115. package/dist/utils/abortUtils.d.ts +34 -0
  116. package/dist/utils/abortUtils.d.ts.map +1 -0
  117. package/dist/utils/abortUtils.js +92 -0
  118. package/dist/utils/bashHistory.d.ts +4 -0
  119. package/dist/utils/bashHistory.d.ts.map +1 -1
  120. package/dist/utils/bashHistory.js +48 -30
  121. package/dist/utils/builtinSubagents.d.ts +7 -0
  122. package/dist/utils/builtinSubagents.d.ts.map +1 -0
  123. package/dist/utils/builtinSubagents.js +65 -0
  124. package/dist/utils/cacheControlUtils.d.ts +96 -0
  125. package/dist/utils/cacheControlUtils.d.ts.map +1 -0
  126. package/dist/utils/cacheControlUtils.js +324 -0
  127. package/dist/utils/commandPathResolver.d.ts +52 -0
  128. package/dist/utils/commandPathResolver.d.ts.map +1 -0
  129. package/dist/utils/commandPathResolver.js +145 -0
  130. package/dist/utils/configPaths.d.ts +85 -0
  131. package/dist/utils/configPaths.d.ts.map +1 -0
  132. package/dist/utils/configPaths.js +121 -0
  133. package/dist/utils/constants.d.ts +1 -13
  134. package/dist/utils/constants.d.ts.map +1 -1
  135. package/dist/utils/constants.js +2 -14
  136. package/dist/utils/convertMessagesForAPI.d.ts +2 -1
  137. package/dist/utils/convertMessagesForAPI.d.ts.map +1 -1
  138. package/dist/utils/convertMessagesForAPI.js +39 -18
  139. package/dist/utils/customCommands.d.ts.map +1 -1
  140. package/dist/utils/customCommands.js +66 -21
  141. package/dist/utils/fileSearch.d.ts +14 -0
  142. package/dist/utils/fileSearch.d.ts.map +1 -0
  143. package/dist/utils/fileSearch.js +88 -0
  144. package/dist/utils/fileUtils.d.ts +27 -0
  145. package/dist/utils/fileUtils.d.ts.map +1 -0
  146. package/dist/utils/fileUtils.js +145 -0
  147. package/dist/utils/globalLogger.d.ts +88 -0
  148. package/dist/utils/globalLogger.d.ts.map +1 -0
  149. package/dist/utils/globalLogger.js +120 -0
  150. package/dist/utils/largeOutputHandler.d.ts +15 -0
  151. package/dist/utils/largeOutputHandler.d.ts.map +1 -0
  152. package/dist/utils/largeOutputHandler.js +40 -0
  153. package/dist/utils/markdownParser.d.ts.map +1 -1
  154. package/dist/utils/markdownParser.js +1 -17
  155. package/dist/utils/mcpUtils.d.ts.map +1 -1
  156. package/dist/utils/mcpUtils.js +25 -3
  157. package/dist/utils/messageOperations.d.ts +20 -18
  158. package/dist/utils/messageOperations.d.ts.map +1 -1
  159. package/dist/utils/messageOperations.js +30 -38
  160. package/dist/utils/pathEncoder.d.ts +108 -0
  161. package/dist/utils/pathEncoder.d.ts.map +1 -0
  162. package/dist/utils/pathEncoder.js +279 -0
  163. package/dist/utils/subagentParser.d.ts +2 -2
  164. package/dist/utils/subagentParser.d.ts.map +1 -1
  165. package/dist/utils/subagentParser.js +12 -8
  166. package/dist/utils/tokenCalculation.d.ts +26 -0
  167. package/dist/utils/tokenCalculation.d.ts.map +1 -0
  168. package/dist/utils/tokenCalculation.js +36 -0
  169. package/dist/utils/tokenEstimator.d.ts +39 -0
  170. package/dist/utils/tokenEstimator.d.ts.map +1 -0
  171. package/dist/utils/tokenEstimator.js +55 -0
  172. package/package.json +6 -6
  173. package/src/agent.ts +586 -78
  174. package/src/index.ts +4 -0
  175. package/src/managers/aiManager.ts +341 -192
  176. package/src/managers/backgroundBashManager.ts +11 -9
  177. package/src/managers/hookManager.ts +102 -54
  178. package/src/managers/liveConfigManager.ts +634 -0
  179. package/src/managers/lspManager.ts +434 -0
  180. package/src/managers/messageManager.ts +258 -121
  181. package/src/managers/permissionManager.ts +276 -0
  182. package/src/managers/skillManager.ts +3 -1
  183. package/src/managers/slashCommandManager.ts +5 -3
  184. package/src/managers/subagentManager.ts +295 -76
  185. package/src/managers/toolManager.ts +95 -3
  186. package/src/services/aiService.ts +656 -84
  187. package/src/services/configurationService.ts +762 -0
  188. package/src/services/fileWatcher.ts +300 -0
  189. package/src/services/hook.ts +54 -144
  190. package/src/services/jsonlHandler.ts +303 -0
  191. package/src/services/memory.ts +34 -11
  192. package/src/services/session.ts +522 -173
  193. package/src/tools/bashTool.ts +94 -20
  194. package/src/tools/deleteFileTool.ts +38 -1
  195. package/src/tools/editTool.ts +44 -9
  196. package/src/tools/lspTool.ts +760 -0
  197. package/src/tools/multiEditTool.ts +41 -11
  198. package/src/tools/readTool.ts +127 -3
  199. package/src/tools/skillTool.ts +2 -2
  200. package/src/tools/todoWriteTool.ts +33 -1
  201. package/src/tools/types.ts +15 -9
  202. package/src/tools/writeTool.ts +43 -16
  203. package/src/types/commands.ts +6 -1
  204. package/src/types/config.ts +5 -0
  205. package/src/types/configuration.ts +73 -0
  206. package/src/types/core.ts +55 -0
  207. package/src/types/environment.ts +104 -0
  208. package/src/types/fileSearch.ts +4 -0
  209. package/src/types/hooks.ts +32 -16
  210. package/src/types/index.ts +7 -0
  211. package/src/types/lsp.ts +96 -0
  212. package/src/types/messaging.ts +21 -14
  213. package/src/types/permissions.ts +48 -0
  214. package/src/types/session.ts +20 -0
  215. package/src/types/skills.ts +1 -0
  216. package/src/types/tools.ts +38 -0
  217. package/src/utils/abortUtils.ts +118 -0
  218. package/src/utils/bashHistory.ts +55 -31
  219. package/src/utils/builtinSubagents.ts +71 -0
  220. package/src/utils/cacheControlUtils.ts +475 -0
  221. package/src/utils/commandPathResolver.ts +189 -0
  222. package/src/utils/configPaths.ts +163 -0
  223. package/src/utils/constants.ts +2 -17
  224. package/src/utils/convertMessagesForAPI.ts +44 -18
  225. package/src/utils/customCommands.ts +90 -22
  226. package/src/utils/fileSearch.ts +107 -0
  227. package/src/utils/fileUtils.ts +160 -0
  228. package/src/utils/globalLogger.ts +128 -0
  229. package/src/utils/largeOutputHandler.ts +55 -0
  230. package/src/utils/markdownParser.ts +1 -19
  231. package/src/utils/mcpUtils.ts +34 -3
  232. package/src/utils/messageOperations.ts +47 -53
  233. package/src/utils/pathEncoder.ts +394 -0
  234. package/src/utils/subagentParser.ts +13 -9
  235. package/src/utils/tokenCalculation.ts +43 -0
  236. package/src/utils/tokenEstimator.ts +68 -0
  237. package/dist/utils/configResolver.d.ts +0 -38
  238. package/dist/utils/configResolver.d.ts.map +0 -1
  239. package/dist/utils/configResolver.js +0 -106
  240. package/src/utils/configResolver.ts +0 -142
@@ -1 +1 @@
1
- {"version":3,"file":"bashTool.d.ts","sourceRoot":"","sources":["../../src/tools/bashTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UA2NtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAwF5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,UA8E1B,CAAC"}
1
+ {"version":3,"file":"bashTool.d.ts","sourceRoot":"","sources":["../../src/tools/bashTool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAEtE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UA6RtB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UA6F5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,UA8E1B,CAAC"}
@@ -1,4 +1,7 @@
1
1
  import { spawn } from "child_process";
2
+ import { logger } from "../utils/globalLogger.js";
3
+ import { stripAnsiColors } from "../utils/stringUtils.js";
4
+ import { handleLargeOutput } from "../utils/largeOutputHandler.js";
2
5
  /**
3
6
  * Bash command execution tool - supports both foreground and background execution
4
7
  */
@@ -36,6 +39,7 @@ export const bashTool = {
36
39
  execute: async (args, context) => {
37
40
  const command = args.command;
38
41
  const runInBackground = args.run_in_background;
42
+ const description = args.description;
39
43
  // Set default timeout: 60s for foreground, no timeout for background
40
44
  const timeout = args.timeout ??
41
45
  (runInBackground ? undefined : 60000);
@@ -55,6 +59,36 @@ export const bashTool = {
55
59
  error: "Timeout must be a number between 0 and 600000 milliseconds",
56
60
  };
57
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
+ }
58
92
  if (runInBackground) {
59
93
  // Background execution
60
94
  const backgroundBashManager = context?.backgroundBashManager;
@@ -112,8 +146,8 @@ export const bashTool = {
112
146
  try {
113
147
  process.kill(-child.pid, "SIGKILL");
114
148
  }
115
- catch {
116
- // logger.error("Failed to force kill process:", killError);
149
+ catch (killError) {
150
+ logger.error("Failed to force kill process:", killError);
117
151
  }
118
152
  }
119
153
  }, 1000);
@@ -128,8 +162,8 @@ export const bashTool = {
128
162
  }
129
163
  }, 1000);
130
164
  }
131
- catch {
132
- // logger.error("Failed to kill child process:", directKillError);
165
+ catch (directKillError) {
166
+ logger.error("Failed to kill child process:", directKillError);
133
167
  }
134
168
  }
135
169
  }
@@ -146,16 +180,19 @@ export const bashTool = {
146
180
  handleAbort();
147
181
  return;
148
182
  }
149
- context.abortSignal.addEventListener("abort", () => handleAbort());
183
+ // Use { once: true } to prevent listener accumulation on signal reuse
184
+ context.abortSignal.addEventListener("abort", () => handleAbort(), {
185
+ once: true,
186
+ });
150
187
  }
151
188
  child.stdout?.on("data", (data) => {
152
189
  if (!isAborted) {
153
- outputBuffer += data.toString();
190
+ outputBuffer += stripAnsiColors(data.toString());
154
191
  }
155
192
  });
156
193
  child.stderr?.on("data", (data) => {
157
194
  if (!isAborted) {
158
- errorBuffer += data.toString();
195
+ errorBuffer += stripAnsiColors(data.toString());
159
196
  }
160
197
  });
161
198
  child.on("exit", (code) => {
@@ -165,12 +202,28 @@ export const bashTool = {
165
202
  }
166
203
  const exitCode = code ?? 0;
167
204
  const combinedOutput = outputBuffer + (errorBuffer ? "\n" + errorBuffer : "");
168
- resolve({
169
- success: exitCode === 0,
170
- content: combinedOutput || `Command executed with exit code: ${exitCode}`,
171
- error: exitCode !== 0
172
- ? `Command failed with exit code: ${exitCode}`
173
- : undefined,
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
+ });
174
227
  });
175
228
  }
176
229
  });
@@ -189,9 +242,13 @@ export const bashTool = {
189
242
  });
190
243
  },
191
244
  formatCompactParams: (params) => {
245
+ const description = params.description;
192
246
  const command = params.command;
193
247
  const runInBackground = params.run_in_background;
194
- return `${command}${runInBackground ? " background" : ""}`;
248
+ if (description) {
249
+ return description;
250
+ }
251
+ return `${command}${runInBackground ? " (background)" : ""}`;
195
252
  },
196
253
  };
197
254
  /**
@@ -256,14 +313,17 @@ export const bashOutputTool = {
256
313
  }
257
314
  let content = "";
258
315
  if (output.stdout) {
259
- content += output.stdout;
316
+ content += stripAnsiColors(output.stdout);
260
317
  }
261
318
  if (output.stderr) {
262
- content += (content ? "\n" : "") + output.stderr;
319
+ content += (content ? "\n" : "") + stripAnsiColors(output.stderr);
263
320
  }
321
+ const finalContent = content || "No output available";
322
+ const { content: processedContent, filePath } = await handleLargeOutput(finalContent);
264
323
  return {
265
324
  success: true,
266
- content: content || "No output available",
325
+ content: processedContent,
326
+ filePath,
267
327
  shortResult: `${bashId}: ${output.status}${shell.exitCode !== undefined ? ` (${shell.exitCode})` : ""}`,
268
328
  error: undefined,
269
329
  };
@@ -1 +1 @@
1
- {"version":3,"file":"deleteFileTool.d.ts","sourceRoot":"","sources":["../../src/tools/deleteFileTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAGtE;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,UAyE5B,CAAC"}
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"}
@@ -1,4 +1,5 @@
1
1
  import { unlink } from "fs/promises";
2
+ import { logger } from "../utils/globalLogger.js";
2
3
  import { resolvePath, getDisplayPath } from "../utils/path.js";
3
4
  /**
4
5
  * Delete file tool plugin
@@ -36,9 +37,34 @@ export const deleteFileTool = {
36
37
  }
37
38
  try {
38
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
+ }
39
65
  // Delete file
40
66
  await unlink(filePath);
41
- // logger.debug(`Successfully deleted file: ${filePath}`);
67
+ logger.debug(`Successfully deleted file: ${filePath}`);
42
68
  return {
43
69
  success: true,
44
70
  content: `Successfully deleted file: ${targetFile}`,
@@ -1 +1 @@
1
- {"version":3,"file":"editTool.d.ts","sourceRoot":"","sources":["../../src/tools/editTool.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAA2B,MAAM,YAAY,CAAC;AAetE;;GAEG;AACH,eAAO,MAAM,QAAQ,EAAE,UAqKtB,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"}
@@ -1,6 +1,6 @@
1
1
  import { readFile, writeFile } from "fs/promises";
2
+ import { logger } from "../utils/globalLogger.js";
2
3
  import { resolvePath, getDisplayPath } from "../utils/path.js";
3
- import { diffLines } from "diff";
4
4
  /**
5
5
  * Format compact parameter display
6
6
  */
@@ -122,6 +122,36 @@ export const editTool = {
122
122
  newContent = originalContent.replace(oldString, newString);
123
123
  replacementCount = 1;
124
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
+ }
125
155
  // Write file
126
156
  try {
127
157
  await writeFile(resolvedPath, newContent, "utf-8");
@@ -133,25 +163,20 @@ export const editTool = {
133
163
  error: `Failed to write file: ${writeError instanceof Error ? writeError.message : String(writeError)}`,
134
164
  };
135
165
  }
136
- // Generate diff information
137
- const diffResult = diffLines(originalContent, newContent);
138
166
  const shortResult = replaceAll
139
167
  ? `Replaced ${replacementCount} instances`
140
168
  : "Text replaced successfully";
141
- // logger.debug(`Edit tool: ${shortResult}`);
169
+ logger.debug(`Edit tool: ${shortResult}`);
142
170
  return {
143
171
  success: true,
144
172
  content: shortResult,
145
173
  shortResult,
146
174
  filePath: resolvedPath,
147
- originalContent,
148
- newContent,
149
- diffResult,
150
175
  };
151
176
  }
152
177
  catch (error) {
153
178
  const errorMessage = error instanceof Error ? error.message : String(error);
154
- // logger.error(`Edit tool error: ${errorMessage}`);
179
+ logger.error(`Edit tool error: ${errorMessage}`);
155
180
  return {
156
181
  success: false,
157
182
  content: "",
@@ -0,0 +1,6 @@
1
+ import type { ToolPlugin } from "./types.js";
2
+ /**
3
+ * LSP tool plugin - interact with LSP servers for code intelligence
4
+ */
5
+ export declare const lspTool: ToolPlugin;
6
+ //# sourceMappingURL=lspTool.d.ts.map
@@ -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"}