@nodetool-ai/agents 0.7.0-rc.11

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 (281) hide show
  1. package/dist/agent-executor.d.ts +62 -0
  2. package/dist/agent-executor.d.ts.map +1 -0
  3. package/dist/agent-executor.js +324 -0
  4. package/dist/agent-executor.js.map +1 -0
  5. package/dist/agent-step-executor.d.ts +28 -0
  6. package/dist/agent-step-executor.d.ts.map +1 -0
  7. package/dist/agent-step-executor.js +99 -0
  8. package/dist/agent-step-executor.js.map +1 -0
  9. package/dist/agent-workflow-runner.d.ts +31 -0
  10. package/dist/agent-workflow-runner.d.ts.map +1 -0
  11. package/dist/agent-workflow-runner.js +124 -0
  12. package/dist/agent-workflow-runner.js.map +1 -0
  13. package/dist/agent.d.ts +115 -0
  14. package/dist/agent.d.ts.map +1 -0
  15. package/dist/agent.js +587 -0
  16. package/dist/agent.js.map +1 -0
  17. package/dist/base-agent.d.ts +42 -0
  18. package/dist/base-agent.d.ts.map +1 -0
  19. package/dist/base-agent.js +29 -0
  20. package/dist/base-agent.js.map +1 -0
  21. package/dist/constants.d.ts +8 -0
  22. package/dist/constants.d.ts.map +1 -0
  23. package/dist/constants.js +8 -0
  24. package/dist/constants.js.map +1 -0
  25. package/dist/graph-builder.d.ts +49 -0
  26. package/dist/graph-builder.d.ts.map +1 -0
  27. package/dist/graph-builder.js +206 -0
  28. package/dist/graph-builder.js.map +1 -0
  29. package/dist/graph-planner.d.ts +56 -0
  30. package/dist/graph-planner.d.ts.map +1 -0
  31. package/dist/graph-planner.js +311 -0
  32. package/dist/graph-planner.js.map +1 -0
  33. package/dist/index.d.ts +79 -0
  34. package/dist/index.d.ts.map +1 -0
  35. package/dist/index.js +81 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/js-sandbox.d.ts +84 -0
  38. package/dist/js-sandbox.d.ts.map +1 -0
  39. package/dist/js-sandbox.js +654 -0
  40. package/dist/js-sandbox.js.map +1 -0
  41. package/dist/multi-mode-agent.d.ts +86 -0
  42. package/dist/multi-mode-agent.d.ts.map +1 -0
  43. package/dist/multi-mode-agent.js +476 -0
  44. package/dist/multi-mode-agent.js.map +1 -0
  45. package/dist/output-format.d.ts +10 -0
  46. package/dist/output-format.d.ts.map +1 -0
  47. package/dist/output-format.js +17 -0
  48. package/dist/output-format.js.map +1 -0
  49. package/dist/parallel-task-executor.d.ts +87 -0
  50. package/dist/parallel-task-executor.d.ts.map +1 -0
  51. package/dist/parallel-task-executor.js +332 -0
  52. package/dist/parallel-task-executor.js.map +1 -0
  53. package/dist/prompts/graph-planner-prompt.d.ts +48 -0
  54. package/dist/prompts/graph-planner-prompt.d.ts.map +1 -0
  55. package/dist/prompts/graph-planner-prompt.js +180 -0
  56. package/dist/prompts/graph-planner-prompt.js.map +1 -0
  57. package/dist/reject-agentic-provider.d.ts +21 -0
  58. package/dist/reject-agentic-provider.d.ts.map +1 -0
  59. package/dist/reject-agentic-provider.js +32 -0
  60. package/dist/reject-agentic-provider.js.map +1 -0
  61. package/dist/simple-agent.d.ts +29 -0
  62. package/dist/simple-agent.d.ts.map +1 -0
  63. package/dist/simple-agent.js +54 -0
  64. package/dist/simple-agent.js.map +1 -0
  65. package/dist/step-executor.d.ts +162 -0
  66. package/dist/step-executor.d.ts.map +1 -0
  67. package/dist/step-executor.js +1114 -0
  68. package/dist/step-executor.js.map +1 -0
  69. package/dist/sub-agent-planner.d.ts +33 -0
  70. package/dist/sub-agent-planner.d.ts.map +1 -0
  71. package/dist/sub-agent-planner.js +203 -0
  72. package/dist/sub-agent-planner.js.map +1 -0
  73. package/dist/task-executor.d.ts +89 -0
  74. package/dist/task-executor.d.ts.map +1 -0
  75. package/dist/task-executor.js +359 -0
  76. package/dist/task-executor.js.map +1 -0
  77. package/dist/task-planner.d.ts +44 -0
  78. package/dist/task-planner.d.ts.map +1 -0
  79. package/dist/task-planner.js +532 -0
  80. package/dist/task-planner.js.map +1 -0
  81. package/dist/team/db-task-board.d.ts +54 -0
  82. package/dist/team/db-task-board.d.ts.map +1 -0
  83. package/dist/team/db-task-board.js +361 -0
  84. package/dist/team/db-task-board.js.map +1 -0
  85. package/dist/team/edge-message-bus.d.ts +51 -0
  86. package/dist/team/edge-message-bus.d.ts.map +1 -0
  87. package/dist/team/edge-message-bus.js +169 -0
  88. package/dist/team/edge-message-bus.js.map +1 -0
  89. package/dist/team/edge-task-board.d.ts +77 -0
  90. package/dist/team/edge-task-board.d.ts.map +1 -0
  91. package/dist/team/edge-task-board.js +140 -0
  92. package/dist/team/edge-task-board.js.map +1 -0
  93. package/dist/team/index.d.ts +16 -0
  94. package/dist/team/index.d.ts.map +1 -0
  95. package/dist/team/index.js +17 -0
  96. package/dist/team/index.js.map +1 -0
  97. package/dist/team/message-bus.d.ts +58 -0
  98. package/dist/team/message-bus.d.ts.map +1 -0
  99. package/dist/team/message-bus.js +151 -0
  100. package/dist/team/message-bus.js.map +1 -0
  101. package/dist/team/task-board.d.ts +106 -0
  102. package/dist/team/task-board.d.ts.map +1 -0
  103. package/dist/team/task-board.js +370 -0
  104. package/dist/team/task-board.js.map +1 -0
  105. package/dist/team/team-executor.d.ts +72 -0
  106. package/dist/team/team-executor.d.ts.map +1 -0
  107. package/dist/team/team-executor.js +466 -0
  108. package/dist/team/team-executor.js.map +1 -0
  109. package/dist/team/team-tools.d.ts +252 -0
  110. package/dist/team/team-tools.d.ts.map +1 -0
  111. package/dist/team/team-tools.js +412 -0
  112. package/dist/team/team-tools.js.map +1 -0
  113. package/dist/team/types.d.ts +198 -0
  114. package/dist/team/types.d.ts.map +1 -0
  115. package/dist/team/types.js +8 -0
  116. package/dist/team/types.js.map +1 -0
  117. package/dist/tools/add-edge-tool.d.ts +18 -0
  118. package/dist/tools/add-edge-tool.d.ts.map +1 -0
  119. package/dist/tools/add-edge-tool.js +92 -0
  120. package/dist/tools/add-edge-tool.js.map +1 -0
  121. package/dist/tools/add-node-tool.d.ts +22 -0
  122. package/dist/tools/add-node-tool.d.ts.map +1 -0
  123. package/dist/tools/add-node-tool.js +128 -0
  124. package/dist/tools/add-node-tool.js.map +1 -0
  125. package/dist/tools/asset-tools.d.ts +58 -0
  126. package/dist/tools/asset-tools.d.ts.map +1 -0
  127. package/dist/tools/asset-tools.js +191 -0
  128. package/dist/tools/asset-tools.js.map +1 -0
  129. package/dist/tools/base-tool.d.ts +25 -0
  130. package/dist/tools/base-tool.d.ts.map +1 -0
  131. package/dist/tools/base-tool.js +24 -0
  132. package/dist/tools/base-tool.js.map +1 -0
  133. package/dist/tools/browser-tools.d.ts +32 -0
  134. package/dist/tools/browser-tools.d.ts.map +1 -0
  135. package/dist/tools/browser-tools.js +208 -0
  136. package/dist/tools/browser-tools.js.map +1 -0
  137. package/dist/tools/calculator-tool.d.ts +24 -0
  138. package/dist/tools/calculator-tool.d.ts.map +1 -0
  139. package/dist/tools/calculator-tool.js +64 -0
  140. package/dist/tools/calculator-tool.js.map +1 -0
  141. package/dist/tools/claude-code-tools.d.ts +96 -0
  142. package/dist/tools/claude-code-tools.d.ts.map +1 -0
  143. package/dist/tools/claude-code-tools.js +463 -0
  144. package/dist/tools/claude-code-tools.js.map +1 -0
  145. package/dist/tools/code-tools.d.ts +26 -0
  146. package/dist/tools/code-tools.d.ts.map +1 -0
  147. package/dist/tools/code-tools.js +82 -0
  148. package/dist/tools/code-tools.js.map +1 -0
  149. package/dist/tools/control-tool.d.ts +47 -0
  150. package/dist/tools/control-tool.d.ts.map +1 -0
  151. package/dist/tools/control-tool.js +101 -0
  152. package/dist/tools/control-tool.js.map +1 -0
  153. package/dist/tools/create-plan-tool.d.ts +29 -0
  154. package/dist/tools/create-plan-tool.d.ts.map +1 -0
  155. package/dist/tools/create-plan-tool.js +355 -0
  156. package/dist/tools/create-plan-tool.js.map +1 -0
  157. package/dist/tools/create-task-tool.d.ts +28 -0
  158. package/dist/tools/create-task-tool.d.ts.map +1 -0
  159. package/dist/tools/create-task-tool.js +254 -0
  160. package/dist/tools/create-task-tool.js.map +1 -0
  161. package/dist/tools/dataseo-tools.d.ts +38 -0
  162. package/dist/tools/dataseo-tools.d.ts.map +1 -0
  163. package/dist/tools/dataseo-tools.js +329 -0
  164. package/dist/tools/dataseo-tools.js.map +1 -0
  165. package/dist/tools/email-tools.d.ts +76 -0
  166. package/dist/tools/email-tools.d.ts.map +1 -0
  167. package/dist/tools/email-tools.js +259 -0
  168. package/dist/tools/email-tools.js.map +1 -0
  169. package/dist/tools/filesystem-tools.d.ts +77 -0
  170. package/dist/tools/filesystem-tools.d.ts.map +1 -0
  171. package/dist/tools/filesystem-tools.js +334 -0
  172. package/dist/tools/filesystem-tools.js.map +1 -0
  173. package/dist/tools/find-model-tool.d.ts +25 -0
  174. package/dist/tools/find-model-tool.d.ts.map +1 -0
  175. package/dist/tools/find-model-tool.js +236 -0
  176. package/dist/tools/find-model-tool.js.map +1 -0
  177. package/dist/tools/finish-graph-tool.d.ts +23 -0
  178. package/dist/tools/finish-graph-tool.d.ts.map +1 -0
  179. package/dist/tools/finish-graph-tool.js +46 -0
  180. package/dist/tools/finish-graph-tool.js.map +1 -0
  181. package/dist/tools/finish-step-tool.d.ts +16 -0
  182. package/dist/tools/finish-step-tool.d.ts.map +1 -0
  183. package/dist/tools/finish-step-tool.js +68 -0
  184. package/dist/tools/finish-step-tool.js.map +1 -0
  185. package/dist/tools/google-tools.d.ts +44 -0
  186. package/dist/tools/google-tools.d.ts.map +1 -0
  187. package/dist/tools/google-tools.js +176 -0
  188. package/dist/tools/google-tools.js.map +1 -0
  189. package/dist/tools/http-tools.d.ts +56 -0
  190. package/dist/tools/http-tools.d.ts.map +1 -0
  191. package/dist/tools/http-tools.js +180 -0
  192. package/dist/tools/http-tools.js.map +1 -0
  193. package/dist/tools/js-code-tool.d.ts +30 -0
  194. package/dist/tools/js-code-tool.d.ts.map +1 -0
  195. package/dist/tools/js-code-tool.js +98 -0
  196. package/dist/tools/js-code-tool.js.map +1 -0
  197. package/dist/tools/local-get-node-info-tool.d.ts +19 -0
  198. package/dist/tools/local-get-node-info-tool.d.ts.map +1 -0
  199. package/dist/tools/local-get-node-info-tool.js +75 -0
  200. package/dist/tools/local-get-node-info-tool.js.map +1 -0
  201. package/dist/tools/local-list-nodes-tool.d.ts +19 -0
  202. package/dist/tools/local-list-nodes-tool.d.ts.map +1 -0
  203. package/dist/tools/local-list-nodes-tool.js +69 -0
  204. package/dist/tools/local-list-nodes-tool.js.map +1 -0
  205. package/dist/tools/local-search-nodes-tool.d.ts +21 -0
  206. package/dist/tools/local-search-nodes-tool.d.ts.map +1 -0
  207. package/dist/tools/local-search-nodes-tool.js +111 -0
  208. package/dist/tools/local-search-nodes-tool.js.map +1 -0
  209. package/dist/tools/math-tools.d.ts +156 -0
  210. package/dist/tools/math-tools.d.ts.map +1 -0
  211. package/dist/tools/math-tools.js +422 -0
  212. package/dist/tools/math-tools.js.map +1 -0
  213. package/dist/tools/mcp-tools.d.ts +413 -0
  214. package/dist/tools/mcp-tools.d.ts.map +1 -0
  215. package/dist/tools/mcp-tools.js +618 -0
  216. package/dist/tools/mcp-tools.js.map +1 -0
  217. package/dist/tools/media-tools.d.ts +277 -0
  218. package/dist/tools/media-tools.d.ts.map +1 -0
  219. package/dist/tools/media-tools.js +682 -0
  220. package/dist/tools/media-tools.js.map +1 -0
  221. package/dist/tools/model-tools.d.ts +25 -0
  222. package/dist/tools/model-tools.d.ts.map +1 -0
  223. package/dist/tools/model-tools.js +48 -0
  224. package/dist/tools/model-tools.js.map +1 -0
  225. package/dist/tools/openai-tools.d.ts +73 -0
  226. package/dist/tools/openai-tools.d.ts.map +1 -0
  227. package/dist/tools/openai-tools.js +193 -0
  228. package/dist/tools/openai-tools.js.map +1 -0
  229. package/dist/tools/pdf-tools.d.ts +152 -0
  230. package/dist/tools/pdf-tools.d.ts.map +1 -0
  231. package/dist/tools/pdf-tools.js +339 -0
  232. package/dist/tools/pdf-tools.js.map +1 -0
  233. package/dist/tools/plan-builder-tools.d.ts +72 -0
  234. package/dist/tools/plan-builder-tools.d.ts.map +1 -0
  235. package/dist/tools/plan-builder-tools.js +438 -0
  236. package/dist/tools/plan-builder-tools.js.map +1 -0
  237. package/dist/tools/search-tools.d.ts +39 -0
  238. package/dist/tools/search-tools.d.ts.map +1 -0
  239. package/dist/tools/search-tools.js +218 -0
  240. package/dist/tools/search-tools.js.map +1 -0
  241. package/dist/tools/serp-providers/dataforseo-provider.d.ts +14 -0
  242. package/dist/tools/serp-providers/dataforseo-provider.d.ts.map +1 -0
  243. package/dist/tools/serp-providers/dataforseo-provider.js +114 -0
  244. package/dist/tools/serp-providers/dataforseo-provider.js.map +1 -0
  245. package/dist/tools/serp-providers/index.d.ts +35 -0
  246. package/dist/tools/serp-providers/index.d.ts.map +1 -0
  247. package/dist/tools/serp-providers/index.js +14 -0
  248. package/dist/tools/serp-providers/index.js.map +1 -0
  249. package/dist/tools/serp-providers/serpapi-provider.d.ts +18 -0
  250. package/dist/tools/serp-providers/serpapi-provider.d.ts.map +1 -0
  251. package/dist/tools/serp-providers/serpapi-provider.js +66 -0
  252. package/dist/tools/serp-providers/serpapi-provider.js.map +1 -0
  253. package/dist/tools/tool-registry.d.ts +9 -0
  254. package/dist/tools/tool-registry.d.ts.map +1 -0
  255. package/dist/tools/tool-registry.js +17 -0
  256. package/dist/tools/tool-registry.js.map +1 -0
  257. package/dist/tools/vector-tools.d.ts +224 -0
  258. package/dist/tools/vector-tools.d.ts.map +1 -0
  259. package/dist/tools/vector-tools.js +582 -0
  260. package/dist/tools/vector-tools.js.map +1 -0
  261. package/dist/tools/workspace-tools.d.ts +58 -0
  262. package/dist/tools/workspace-tools.d.ts.map +1 -0
  263. package/dist/tools/workspace-tools.js +152 -0
  264. package/dist/tools/workspace-tools.js.map +1 -0
  265. package/dist/types.d.ts +65 -0
  266. package/dist/types.d.ts.map +1 -0
  267. package/dist/types.js +5 -0
  268. package/dist/types.js.map +1 -0
  269. package/dist/utils/json-parser.d.ts +15 -0
  270. package/dist/utils/json-parser.d.ts.map +1 -0
  271. package/dist/utils/json-parser.js +78 -0
  272. package/dist/utils/json-parser.js.map +1 -0
  273. package/dist/utils/remove-base64-images.d.ts +12 -0
  274. package/dist/utils/remove-base64-images.d.ts.map +1 -0
  275. package/dist/utils/remove-base64-images.js +20 -0
  276. package/dist/utils/remove-base64-images.js.map +1 -0
  277. package/dist/utils/wrap-generators-parallel.d.ts +11 -0
  278. package/dist/utils/wrap-generators-parallel.d.ts.map +1 -0
  279. package/dist/utils/wrap-generators-parallel.js +38 -0
  280. package/dist/utils/wrap-generators-parallel.js.map +1 -0
  281. package/package.json +65 -0
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Claude Code-style tools for agents: Edit, Glob, and Grep.
3
+ *
4
+ * These mirror the standard Claude Code tool semantics:
5
+ * - EditFileTool: exact string replacement in files (like Claude Code's Edit)
6
+ * - GlobTool: file pattern matching (like Claude Code's Glob)
7
+ * - GrepTool: content search with regex (like Claude Code's Grep)
8
+ */
9
+ import type { ProcessingContext } from "@nodetool-ai/runtime";
10
+ import { Tool } from "./base-tool.js";
11
+ export declare class EditFileTool extends Tool {
12
+ readonly name = "edit_file";
13
+ readonly description: string;
14
+ readonly inputSchema: {
15
+ type: "object";
16
+ properties: {
17
+ path: {
18
+ type: "string";
19
+ description: string;
20
+ };
21
+ old_string: {
22
+ type: "string";
23
+ description: string;
24
+ };
25
+ new_string: {
26
+ type: "string";
27
+ description: string;
28
+ };
29
+ replace_all: {
30
+ type: "boolean";
31
+ description: string;
32
+ default: boolean;
33
+ };
34
+ };
35
+ required: string[];
36
+ };
37
+ process(context: ProcessingContext, params: Record<string, unknown>): Promise<unknown>;
38
+ userMessage(params: Record<string, unknown>): string;
39
+ }
40
+ export declare class GlobTool extends Tool {
41
+ readonly name = "glob";
42
+ readonly description: string;
43
+ readonly inputSchema: {
44
+ type: "object";
45
+ properties: {
46
+ pattern: {
47
+ type: "string";
48
+ description: string;
49
+ };
50
+ path: {
51
+ type: "string";
52
+ description: string;
53
+ };
54
+ };
55
+ required: string[];
56
+ };
57
+ process(context: ProcessingContext, params: Record<string, unknown>): Promise<unknown>;
58
+ userMessage(params: Record<string, unknown>): string;
59
+ }
60
+ export declare class GrepTool extends Tool {
61
+ readonly name = "grep";
62
+ readonly description: string;
63
+ readonly inputSchema: {
64
+ type: "object";
65
+ properties: {
66
+ pattern: {
67
+ type: "string";
68
+ description: string;
69
+ };
70
+ path: {
71
+ type: "string";
72
+ description: string;
73
+ };
74
+ include: {
75
+ type: "string";
76
+ description: string;
77
+ };
78
+ context: {
79
+ type: "number";
80
+ description: string;
81
+ };
82
+ case_insensitive: {
83
+ type: "boolean";
84
+ description: string;
85
+ };
86
+ max_results: {
87
+ type: "number";
88
+ description: string;
89
+ };
90
+ };
91
+ required: string[];
92
+ };
93
+ process(context: ProcessingContext, params: Record<string, unknown>): Promise<unknown>;
94
+ userMessage(params: Record<string, unknown>): string;
95
+ }
96
+ //# sourceMappingURL=claude-code-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-tools.d.ts","sourceRoot":"","sources":["../../src/tools/claude-code-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAUtC,qBAAa,YAAa,SAAQ,IAAI;IACpC,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,WAAW,SAGoE;IACxF,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;MAuBlB;IAEI,OAAO,CACX,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC;IA0FnB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAGrD;AAuFD,qBAAa,QAAS,SAAQ,IAAI;IAChC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,SAGmC;IACvD,QAAQ,CAAC,WAAW;;;;;;;;;;;;;MAelB;IAEI,OAAO,CACX,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC;IA4CnB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAGrD;AAMD,qBAAa,QAAS,SAAQ,IAAI;IAChC,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,WAAW,SAGuD;IAC3E,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAgClB;IAEI,OAAO,CACX,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC;IAmKnB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAGrD"}
@@ -0,0 +1,463 @@
1
+ /**
2
+ * Claude Code-style tools for agents: Edit, Glob, and Grep.
3
+ *
4
+ * These mirror the standard Claude Code tool semantics:
5
+ * - EditFileTool: exact string replacement in files (like Claude Code's Edit)
6
+ * - GlobTool: file pattern matching (like Claude Code's Glob)
7
+ * - GrepTool: content search with regex (like Claude Code's Grep)
8
+ */
9
+ import { readFile, writeFile, readdir, stat, access } from "node:fs/promises";
10
+ import { join, relative } from "node:path";
11
+ import { Tool } from "./base-tool.js";
12
+ function resolveSafePath(context, rawPath) {
13
+ return context.resolveWorkspacePath(rawPath);
14
+ }
15
+ // ---------------------------------------------------------------------------
16
+ // EditFileTool — exact string replacement in files
17
+ // ---------------------------------------------------------------------------
18
+ export class EditFileTool extends Tool {
19
+ name = "edit_file";
20
+ description = "Perform exact string replacements in a file. The old_string must match exactly " +
21
+ "(including whitespace and indentation). Use replace_all to change every occurrence. " +
22
+ "Prefer this over write_file when modifying existing files — it only sends the diff.";
23
+ inputSchema = {
24
+ type: "object",
25
+ properties: {
26
+ path: {
27
+ type: "string",
28
+ description: "Path to the file to modify, relative to the workspace"
29
+ },
30
+ old_string: {
31
+ type: "string",
32
+ description: "The exact text to find and replace"
33
+ },
34
+ new_string: {
35
+ type: "string",
36
+ description: "The text to replace it with (must differ from old_string)"
37
+ },
38
+ replace_all: {
39
+ type: "boolean",
40
+ description: "Replace all occurrences of old_string (default false — only first match)",
41
+ default: false
42
+ }
43
+ },
44
+ required: ["path", "old_string", "new_string"]
45
+ };
46
+ async process(context, params) {
47
+ const rawPath = params["path"];
48
+ const oldString = params["old_string"];
49
+ const newString = params["new_string"];
50
+ const replaceAll = params["replace_all"] === true;
51
+ if (typeof rawPath !== "string")
52
+ return { success: false, error: "path must be a string" };
53
+ if (typeof oldString !== "string")
54
+ return { success: false, error: "old_string must be a string" };
55
+ if (typeof newString !== "string")
56
+ return { success: false, error: "new_string must be a string" };
57
+ if (oldString === newString)
58
+ return {
59
+ success: false,
60
+ error: "old_string and new_string must be different"
61
+ };
62
+ let filePath;
63
+ try {
64
+ filePath = resolveSafePath(context, rawPath);
65
+ }
66
+ catch (e) {
67
+ return {
68
+ success: false,
69
+ error: String(e instanceof Error ? e.message : e)
70
+ };
71
+ }
72
+ try {
73
+ await access(filePath);
74
+ }
75
+ catch {
76
+ return { success: false, error: `File not found: ${rawPath}` };
77
+ }
78
+ try {
79
+ const content = await readFile(filePath, "utf-8");
80
+ if (!content.includes(oldString)) {
81
+ return {
82
+ success: false,
83
+ error: "old_string not found in file. Make sure the string matches exactly, " +
84
+ "including whitespace and indentation."
85
+ };
86
+ }
87
+ // Count occurrences
88
+ let count = 0;
89
+ let idx = 0;
90
+ while ((idx = content.indexOf(oldString, idx)) !== -1) {
91
+ count++;
92
+ idx += oldString.length;
93
+ }
94
+ if (!replaceAll && count > 1) {
95
+ return {
96
+ success: false,
97
+ error: `old_string matches ${count} locations. Provide more surrounding context ` +
98
+ "to make it unique, or set replace_all to true.",
99
+ match_count: count
100
+ };
101
+ }
102
+ let newContent;
103
+ if (replaceAll) {
104
+ newContent = content.split(oldString).join(newString);
105
+ }
106
+ else {
107
+ // Replace only first occurrence
108
+ const firstIdx = content.indexOf(oldString);
109
+ newContent =
110
+ content.slice(0, firstIdx) +
111
+ newString +
112
+ content.slice(firstIdx + oldString.length);
113
+ }
114
+ await writeFile(filePath, newContent, "utf-8");
115
+ return {
116
+ success: true,
117
+ path: rawPath,
118
+ replacements: replaceAll ? count : 1
119
+ };
120
+ }
121
+ catch (e) {
122
+ return {
123
+ success: false,
124
+ error: `Failed to edit file: ${String(e)}`
125
+ };
126
+ }
127
+ }
128
+ userMessage(params) {
129
+ return `Editing file ${String(params["path"] ?? "")}`;
130
+ }
131
+ }
132
+ // ---------------------------------------------------------------------------
133
+ // GlobTool — file pattern matching
134
+ // ---------------------------------------------------------------------------
135
+ /** Minimal glob matcher supporting *, **, and ? patterns. */
136
+ function globToRegex(pattern) {
137
+ let regexStr = "";
138
+ let i = 0;
139
+ while (i < pattern.length) {
140
+ const ch = pattern[i];
141
+ if (ch === "*") {
142
+ if (pattern[i + 1] === "*") {
143
+ // ** matches anything including /
144
+ if (pattern[i + 2] === "/") {
145
+ regexStr += "(?:.*/)?";
146
+ i += 3;
147
+ }
148
+ else {
149
+ regexStr += ".*";
150
+ i += 2;
151
+ }
152
+ }
153
+ else {
154
+ // * matches anything except /
155
+ regexStr += "[^/]*";
156
+ i++;
157
+ }
158
+ }
159
+ else if (ch === "?") {
160
+ regexStr += "[^/]";
161
+ i++;
162
+ }
163
+ else if (ch === "{") {
164
+ // Simple brace expansion: {a,b,c}
165
+ const closeIdx = pattern.indexOf("}", i);
166
+ if (closeIdx === -1) {
167
+ regexStr += "\\{";
168
+ i++;
169
+ }
170
+ else {
171
+ const alternatives = pattern.slice(i + 1, closeIdx).split(",");
172
+ regexStr +=
173
+ "(?:" + alternatives.map((a) => escapeRegex(a)).join("|") + ")";
174
+ i = closeIdx + 1;
175
+ }
176
+ }
177
+ else if (".+^$|()[]\\".includes(ch)) {
178
+ regexStr += "\\" + ch;
179
+ i++;
180
+ }
181
+ else {
182
+ regexStr += ch;
183
+ i++;
184
+ }
185
+ }
186
+ return new RegExp("^" + regexStr + "$");
187
+ }
188
+ function escapeRegex(s) {
189
+ return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
190
+ }
191
+ async function walkDir(dir, maxDepth, depth = 0) {
192
+ if (depth > maxDepth)
193
+ return [];
194
+ const results = [];
195
+ try {
196
+ const entries = await readdir(dir, { withFileTypes: true });
197
+ for (const entry of entries) {
198
+ // Skip hidden dirs and node_modules for performance
199
+ if (entry.isDirectory() &&
200
+ (entry.name.startsWith(".") || entry.name === "node_modules")) {
201
+ continue;
202
+ }
203
+ const fullPath = join(dir, entry.name);
204
+ if (entry.isDirectory()) {
205
+ results.push(...(await walkDir(fullPath, maxDepth, depth + 1)));
206
+ }
207
+ else {
208
+ results.push(fullPath);
209
+ }
210
+ }
211
+ }
212
+ catch {
213
+ // Permission denied or broken symlink — skip
214
+ }
215
+ return results;
216
+ }
217
+ export class GlobTool extends Tool {
218
+ name = "glob";
219
+ description = "Find files matching a glob pattern within the workspace. " +
220
+ 'Supports patterns like "**/*.ts", "src/**/*.js", "*.{ts,tsx}". ' +
221
+ "Returns matching file paths sorted alphabetically.";
222
+ inputSchema = {
223
+ type: "object",
224
+ properties: {
225
+ pattern: {
226
+ type: "string",
227
+ description: 'Glob pattern to match files (e.g. "**/*.ts", "src/**/*.js")'
228
+ },
229
+ path: {
230
+ type: "string",
231
+ description: "Directory to search in, relative to workspace (default: workspace root)"
232
+ }
233
+ },
234
+ required: ["pattern"]
235
+ };
236
+ async process(context, params) {
237
+ const pattern = params["pattern"];
238
+ const rawPath = params["path"];
239
+ if (typeof pattern !== "string")
240
+ return { success: false, error: "pattern must be a string" };
241
+ let searchDir;
242
+ try {
243
+ searchDir = resolveSafePath(context, typeof rawPath === "string" ? rawPath : ".");
244
+ }
245
+ catch (e) {
246
+ return {
247
+ success: false,
248
+ error: String(e instanceof Error ? e.message : e)
249
+ };
250
+ }
251
+ const maxDepth = pattern.includes("**") ? 20 : 5;
252
+ try {
253
+ const allFiles = await walkDir(searchDir, maxDepth);
254
+ const regex = globToRegex(pattern);
255
+ const matches = allFiles
256
+ .map((f) => relative(searchDir, f))
257
+ .filter((rel) => regex.test(rel))
258
+ .sort();
259
+ return {
260
+ success: true,
261
+ pattern,
262
+ match_count: matches.length,
263
+ files: matches.slice(0, 500) // Cap output size
264
+ };
265
+ }
266
+ catch (e) {
267
+ return {
268
+ success: false,
269
+ error: `Glob search failed: ${String(e)}`
270
+ };
271
+ }
272
+ }
273
+ userMessage(params) {
274
+ return `Searching for files: ${String(params["pattern"] ?? "")}`;
275
+ }
276
+ }
277
+ // ---------------------------------------------------------------------------
278
+ // GrepTool — content search with regex
279
+ // ---------------------------------------------------------------------------
280
+ export class GrepTool extends Tool {
281
+ name = "grep";
282
+ description = "Search file contents for lines matching a regex pattern within the workspace. " +
283
+ "Returns matching lines with file paths, line numbers, and optional context lines. " +
284
+ 'Use the include parameter to filter files (e.g. "*.ts", "*.{js,jsx}").';
285
+ inputSchema = {
286
+ type: "object",
287
+ properties: {
288
+ pattern: {
289
+ type: "string",
290
+ description: "Regular expression pattern to search for"
291
+ },
292
+ path: {
293
+ type: "string",
294
+ description: "Directory or file to search in, relative to workspace (default: workspace root)"
295
+ },
296
+ include: {
297
+ type: "string",
298
+ description: 'Glob pattern to filter files (e.g. "*.ts", "*.{js,jsx}")'
299
+ },
300
+ context: {
301
+ type: "number",
302
+ description: "Number of lines to show before and after each match (default: 0)"
303
+ },
304
+ case_insensitive: {
305
+ type: "boolean",
306
+ description: "Case-insensitive search (default: false)"
307
+ },
308
+ max_results: {
309
+ type: "number",
310
+ description: "Maximum number of matches to return (default: 100)"
311
+ }
312
+ },
313
+ required: ["pattern"]
314
+ };
315
+ async process(context, params) {
316
+ const pattern = params["pattern"];
317
+ const rawPath = params["path"];
318
+ const include = params["include"];
319
+ const contextLines = typeof params["context"] === "number" ? params["context"] : 0;
320
+ const caseInsensitive = params["case_insensitive"] === true;
321
+ const maxResults = typeof params["max_results"] === "number" ? params["max_results"] : 100;
322
+ if (typeof pattern !== "string")
323
+ return { success: false, error: "pattern must be a string" };
324
+ let searchDir;
325
+ try {
326
+ searchDir = resolveSafePath(context, typeof rawPath === "string" ? rawPath : ".");
327
+ }
328
+ catch (e) {
329
+ return {
330
+ success: false,
331
+ error: String(e instanceof Error ? e.message : e)
332
+ };
333
+ }
334
+ let regex;
335
+ try {
336
+ regex = new RegExp(pattern, caseInsensitive ? "i" : "");
337
+ }
338
+ catch (e) {
339
+ return {
340
+ success: false,
341
+ error: `Invalid regex: ${String(e)}`
342
+ };
343
+ }
344
+ // Determine if searching a single file or a directory
345
+ let filesToSearch;
346
+ try {
347
+ const info = await stat(searchDir);
348
+ if (info.isFile()) {
349
+ filesToSearch = [searchDir];
350
+ }
351
+ else {
352
+ // Walk the directory
353
+ const allFiles = await walkDir(searchDir, 20);
354
+ filesToSearch = allFiles;
355
+ }
356
+ }
357
+ catch {
358
+ return { success: false, error: `Path not found: ${rawPath ?? "."}` };
359
+ }
360
+ // Apply include filter
361
+ if (typeof include === "string") {
362
+ const includeRegex = globToRegex(include);
363
+ filesToSearch = filesToSearch.filter((f) => {
364
+ const rel = relative(searchDir, f);
365
+ const basename = rel.split("/").pop() ?? rel;
366
+ return includeRegex.test(basename) || includeRegex.test(rel);
367
+ });
368
+ }
369
+ // Filter out binary-looking files by extension
370
+ const binaryExts = new Set([
371
+ ".png",
372
+ ".jpg",
373
+ ".jpeg",
374
+ ".gif",
375
+ ".bmp",
376
+ ".ico",
377
+ ".svg",
378
+ ".webp",
379
+ ".mp3",
380
+ ".mp4",
381
+ ".wav",
382
+ ".ogg",
383
+ ".avi",
384
+ ".mov",
385
+ ".zip",
386
+ ".tar",
387
+ ".gz",
388
+ ".bz2",
389
+ ".7z",
390
+ ".rar",
391
+ ".pdf",
392
+ ".woff",
393
+ ".woff2",
394
+ ".ttf",
395
+ ".eot",
396
+ ".otf",
397
+ ".so",
398
+ ".dylib",
399
+ ".dll",
400
+ ".exe",
401
+ ".o",
402
+ ".a",
403
+ ".node",
404
+ ".wasm"
405
+ ]);
406
+ filesToSearch = filesToSearch.filter((f) => {
407
+ const ext = f.slice(f.lastIndexOf(".")).toLowerCase();
408
+ return !binaryExts.has(ext);
409
+ });
410
+ const matches = [];
411
+ let totalMatches = 0;
412
+ for (const file of filesToSearch) {
413
+ if (totalMatches >= maxResults)
414
+ break;
415
+ let content;
416
+ try {
417
+ const buf = await readFile(file);
418
+ // Skip binary files (null byte check)
419
+ if (buf.subarray(0, 512).includes(0))
420
+ continue;
421
+ content = buf.toString("utf-8");
422
+ }
423
+ catch {
424
+ continue;
425
+ }
426
+ const lines = content.split("\n");
427
+ for (let i = 0; i < lines.length; i++) {
428
+ if (totalMatches >= maxResults)
429
+ break;
430
+ if (regex.test(lines[i])) {
431
+ const match = {
432
+ file: relative(searchDir, file),
433
+ line: i + 1,
434
+ content: lines[i]
435
+ };
436
+ if (contextLines > 0) {
437
+ const start = Math.max(0, i - contextLines);
438
+ const end = Math.min(lines.length - 1, i + contextLines);
439
+ if (start < i) {
440
+ match.context_before = lines.slice(start, i);
441
+ }
442
+ if (end > i) {
443
+ match.context_after = lines.slice(i + 1, end + 1);
444
+ }
445
+ }
446
+ matches.push(match);
447
+ totalMatches++;
448
+ }
449
+ }
450
+ }
451
+ return {
452
+ success: true,
453
+ pattern,
454
+ match_count: matches.length,
455
+ truncated: totalMatches >= maxResults,
456
+ matches
457
+ };
458
+ }
459
+ userMessage(params) {
460
+ return `Searching for: ${String(params["pattern"] ?? "")}`;
461
+ }
462
+ }
463
+ //# sourceMappingURL=claude-code-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-tools.js","sourceRoot":"","sources":["../../src/tools/claude-code-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Code execution tool — runs JavaScript in a QuickJS sandbox.
3
+ *
4
+ * Only JavaScript is supported. TypeScript, Python, and Bash have been
5
+ * removed for security (no subprocess spawning).
6
+ */
7
+ import type { ProcessingContext } from "@nodetool-ai/runtime";
8
+ import { Tool } from "./base-tool.js";
9
+ interface RunCodeResult {
10
+ stdout: string;
11
+ stderr: string;
12
+ exitCode: number | null;
13
+ }
14
+ export declare class RunCodeTool extends Tool {
15
+ readonly name = "run_code";
16
+ readonly description = "Execute JavaScript code in a sandboxed QuickJS environment. Only javascript is supported.";
17
+ readonly inputSchema: Record<string, unknown>;
18
+ private readonly timeoutMs;
19
+ constructor(options?: {
20
+ timeoutMs?: number;
21
+ });
22
+ process(context: ProcessingContext, params: Record<string, unknown>): Promise<RunCodeResult>;
23
+ userMessage(params: Record<string, unknown>): string;
24
+ }
25
+ export {};
26
+ //# sourceMappingURL=code-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-tools.d.ts","sourceRoot":"","sources":["../../src/tools/code-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAKtC,UAAU,aAAa;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,qBAAa,WAAY,SAAQ,IAAI;IACnC,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,WAAW,+FAC0E;IAC9F,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAc3C;IAEF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;IAKtC,OAAO,CACX,OAAO,EAAE,iBAAiB,EAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC;IA+CzB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;CAOrD"}