@cdoing/core 0.1.0

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 (378) hide show
  1. package/dist/agents/coordinator.d.ts +114 -0
  2. package/dist/agents/coordinator.d.ts.map +1 -0
  3. package/dist/agents/coordinator.js +158 -0
  4. package/dist/agents/coordinator.js.map +1 -0
  5. package/dist/context-providers/clipboard.d.ts +13 -0
  6. package/dist/context-providers/clipboard.d.ts.map +1 -0
  7. package/dist/context-providers/clipboard.js +53 -0
  8. package/dist/context-providers/clipboard.js.map +1 -0
  9. package/dist/context-providers/codebase.d.ts +46 -0
  10. package/dist/context-providers/codebase.d.ts.map +1 -0
  11. package/dist/context-providers/codebase.js +273 -0
  12. package/dist/context-providers/codebase.js.map +1 -0
  13. package/dist/context-providers/diff.d.ts +18 -0
  14. package/dist/context-providers/diff.d.ts.map +1 -0
  15. package/dist/context-providers/diff.js +63 -0
  16. package/dist/context-providers/diff.js.map +1 -0
  17. package/dist/context-providers/docs.d.ts +21 -0
  18. package/dist/context-providers/docs.d.ts.map +1 -0
  19. package/dist/context-providers/docs.js +180 -0
  20. package/dist/context-providers/docs.js.map +1 -0
  21. package/dist/context-providers/file-include.d.ts +13 -0
  22. package/dist/context-providers/file-include.d.ts.map +1 -0
  23. package/dist/context-providers/file-include.js +82 -0
  24. package/dist/context-providers/file-include.js.map +1 -0
  25. package/dist/context-providers/folder.d.ts +19 -0
  26. package/dist/context-providers/folder.d.ts.map +1 -0
  27. package/dist/context-providers/folder.js +130 -0
  28. package/dist/context-providers/folder.js.map +1 -0
  29. package/dist/context-providers/git.d.ts +19 -0
  30. package/dist/context-providers/git.d.ts.map +1 -0
  31. package/dist/context-providers/git.js +74 -0
  32. package/dist/context-providers/git.js.map +1 -0
  33. package/dist/context-providers/index.d.ts +26 -0
  34. package/dist/context-providers/index.d.ts.map +1 -0
  35. package/dist/context-providers/index.js +37 -0
  36. package/dist/context-providers/index.js.map +1 -0
  37. package/dist/context-providers/open-files.d.ts +25 -0
  38. package/dist/context-providers/open-files.d.ts.map +1 -0
  39. package/dist/context-providers/open-files.js +134 -0
  40. package/dist/context-providers/open-files.js.map +1 -0
  41. package/dist/context-providers/problems.d.ts +24 -0
  42. package/dist/context-providers/problems.d.ts.map +1 -0
  43. package/dist/context-providers/problems.js +97 -0
  44. package/dist/context-providers/problems.js.map +1 -0
  45. package/dist/context-providers/registry.d.ts +61 -0
  46. package/dist/context-providers/registry.d.ts.map +1 -0
  47. package/dist/context-providers/registry.js +92 -0
  48. package/dist/context-providers/registry.js.map +1 -0
  49. package/dist/context-providers/terminal.d.ts +25 -0
  50. package/dist/context-providers/terminal.d.ts.map +1 -0
  51. package/dist/context-providers/terminal.js +55 -0
  52. package/dist/context-providers/terminal.js.map +1 -0
  53. package/dist/context-providers/tree.d.ts +29 -0
  54. package/dist/context-providers/tree.d.ts.map +1 -0
  55. package/dist/context-providers/tree.js +172 -0
  56. package/dist/context-providers/tree.js.map +1 -0
  57. package/dist/context-providers/types.d.ts +72 -0
  58. package/dist/context-providers/types.d.ts.map +1 -0
  59. package/dist/context-providers/types.js +10 -0
  60. package/dist/context-providers/types.js.map +1 -0
  61. package/dist/context-providers/url.d.ts +27 -0
  62. package/dist/context-providers/url.d.ts.map +1 -0
  63. package/dist/context-providers/url.js +131 -0
  64. package/dist/context-providers/url.js.map +1 -0
  65. package/dist/effort/index.d.ts +78 -0
  66. package/dist/effort/index.d.ts.map +1 -0
  67. package/dist/effort/index.js +146 -0
  68. package/dist/effort/index.js.map +1 -0
  69. package/dist/hooks/index.d.ts +47 -0
  70. package/dist/hooks/index.d.ts.map +1 -0
  71. package/dist/hooks/index.js +151 -0
  72. package/dist/hooks/index.js.map +1 -0
  73. package/dist/index.d.ts +75 -0
  74. package/dist/index.d.ts.map +1 -0
  75. package/dist/index.js +152 -0
  76. package/dist/index.js.map +1 -0
  77. package/dist/indexing/chunker.d.ts +25 -0
  78. package/dist/indexing/chunker.d.ts.map +1 -0
  79. package/dist/indexing/chunker.js +217 -0
  80. package/dist/indexing/chunker.js.map +1 -0
  81. package/dist/indexing/database.d.ts +49 -0
  82. package/dist/indexing/database.d.ts.map +1 -0
  83. package/dist/indexing/database.js +287 -0
  84. package/dist/indexing/database.js.map +1 -0
  85. package/dist/indexing/index.d.ts +9 -0
  86. package/dist/indexing/index.d.ts.map +1 -0
  87. package/dist/indexing/index.js +13 -0
  88. package/dist/indexing/index.js.map +1 -0
  89. package/dist/indexing/indexer.d.ts +63 -0
  90. package/dist/indexing/indexer.d.ts.map +1 -0
  91. package/dist/indexing/indexer.js +352 -0
  92. package/dist/indexing/indexer.js.map +1 -0
  93. package/dist/indexing/recent-edits-cache.d.ts +77 -0
  94. package/dist/indexing/recent-edits-cache.d.ts.map +1 -0
  95. package/dist/indexing/recent-edits-cache.js +123 -0
  96. package/dist/indexing/recent-edits-cache.js.map +1 -0
  97. package/dist/indexing/types.d.ts +39 -0
  98. package/dist/indexing/types.d.ts.map +1 -0
  99. package/dist/indexing/types.js +6 -0
  100. package/dist/indexing/types.js.map +1 -0
  101. package/dist/mcp/index.d.ts +33 -0
  102. package/dist/mcp/index.d.ts.map +1 -0
  103. package/dist/mcp/index.js +37 -0
  104. package/dist/mcp/index.js.map +1 -0
  105. package/dist/mcp/manager.d.ts +123 -0
  106. package/dist/mcp/manager.d.ts.map +1 -0
  107. package/dist/mcp/manager.js +331 -0
  108. package/dist/mcp/manager.js.map +1 -0
  109. package/dist/oauth.d.ts +33 -0
  110. package/dist/oauth.d.ts.map +1 -0
  111. package/dist/oauth.js +312 -0
  112. package/dist/oauth.js.map +1 -0
  113. package/dist/permissions/index.d.ts +216 -0
  114. package/dist/permissions/index.d.ts.map +1 -0
  115. package/dist/permissions/index.js +938 -0
  116. package/dist/permissions/index.js.map +1 -0
  117. package/dist/plan/index.d.ts +20 -0
  118. package/dist/plan/index.d.ts.map +1 -0
  119. package/dist/plan/index.js +24 -0
  120. package/dist/plan/index.js.map +1 -0
  121. package/dist/plan/manager.d.ts +101 -0
  122. package/dist/plan/manager.d.ts.map +1 -0
  123. package/dist/plan/manager.js +170 -0
  124. package/dist/plan/manager.js.map +1 -0
  125. package/dist/rules/index.d.ts +28 -0
  126. package/dist/rules/index.d.ts.map +1 -0
  127. package/dist/rules/index.js +31 -0
  128. package/dist/rules/index.js.map +1 -0
  129. package/dist/rules/manager.d.ts +77 -0
  130. package/dist/rules/manager.d.ts.map +1 -0
  131. package/dist/rules/manager.js +279 -0
  132. package/dist/rules/manager.js.map +1 -0
  133. package/dist/rules/types.d.ts +34 -0
  134. package/dist/rules/types.d.ts.map +1 -0
  135. package/dist/rules/types.js +9 -0
  136. package/dist/rules/types.js.map +1 -0
  137. package/dist/sandbox/filesystem.d.ts +20 -0
  138. package/dist/sandbox/filesystem.d.ts.map +1 -0
  139. package/dist/sandbox/filesystem.js +141 -0
  140. package/dist/sandbox/filesystem.js.map +1 -0
  141. package/dist/sandbox/index.d.ts +4 -0
  142. package/dist/sandbox/index.d.ts.map +1 -0
  143. package/dist/sandbox/index.js +8 -0
  144. package/dist/sandbox/index.js.map +1 -0
  145. package/dist/sandbox/manager.d.ts +47 -0
  146. package/dist/sandbox/manager.d.ts.map +1 -0
  147. package/dist/sandbox/manager.js +220 -0
  148. package/dist/sandbox/manager.js.map +1 -0
  149. package/dist/sandbox/network.d.ts +14 -0
  150. package/dist/sandbox/network.d.ts.map +1 -0
  151. package/dist/sandbox/network.js +87 -0
  152. package/dist/sandbox/network.js.map +1 -0
  153. package/dist/sandbox/types.d.ts +42 -0
  154. package/dist/sandbox/types.d.ts.map +1 -0
  155. package/dist/sandbox/types.js +25 -0
  156. package/dist/sandbox/types.js.map +1 -0
  157. package/dist/tools/ast-edit.d.ts +57 -0
  158. package/dist/tools/ast-edit.d.ts.map +1 -0
  159. package/dist/tools/ast-edit.js +443 -0
  160. package/dist/tools/ast-edit.js.map +1 -0
  161. package/dist/tools/code-verify.d.ts +8 -0
  162. package/dist/tools/code-verify.d.ts.map +1 -0
  163. package/dist/tools/code-verify.js +159 -0
  164. package/dist/tools/code-verify.js.map +1 -0
  165. package/dist/tools/codebase-search.d.ts +17 -0
  166. package/dist/tools/codebase-search.d.ts.map +1 -0
  167. package/dist/tools/codebase-search.js +104 -0
  168. package/dist/tools/codebase-search.js.map +1 -0
  169. package/dist/tools/file-delete.d.ts +26 -0
  170. package/dist/tools/file-delete.d.ts.map +1 -0
  171. package/dist/tools/file-delete.js +179 -0
  172. package/dist/tools/file-delete.js.map +1 -0
  173. package/dist/tools/file-edit.d.ts +10 -0
  174. package/dist/tools/file-edit.d.ts.map +1 -0
  175. package/dist/tools/file-edit.js +138 -0
  176. package/dist/tools/file-edit.js.map +1 -0
  177. package/dist/tools/file-read.d.ts +12 -0
  178. package/dist/tools/file-read.d.ts.map +1 -0
  179. package/dist/tools/file-read.js +211 -0
  180. package/dist/tools/file-read.js.map +1 -0
  181. package/dist/tools/file-run.d.ts +10 -0
  182. package/dist/tools/file-run.d.ts.map +1 -0
  183. package/dist/tools/file-run.js +179 -0
  184. package/dist/tools/file-run.js.map +1 -0
  185. package/dist/tools/file-write.d.ts +10 -0
  186. package/dist/tools/file-write.d.ts.map +1 -0
  187. package/dist/tools/file-write.js +134 -0
  188. package/dist/tools/file-write.js.map +1 -0
  189. package/dist/tools/glob-search.d.ts +8 -0
  190. package/dist/tools/glob-search.d.ts.map +1 -0
  191. package/dist/tools/glob-search.js +108 -0
  192. package/dist/tools/glob-search.js.map +1 -0
  193. package/dist/tools/grep-search.d.ts +8 -0
  194. package/dist/tools/grep-search.d.ts.map +1 -0
  195. package/dist/tools/grep-search.js +139 -0
  196. package/dist/tools/grep-search.js.map +1 -0
  197. package/dist/tools/list-dir.d.ts +16 -0
  198. package/dist/tools/list-dir.d.ts.map +1 -0
  199. package/dist/tools/list-dir.js +183 -0
  200. package/dist/tools/list-dir.js.map +1 -0
  201. package/dist/tools/multi-edit.d.ts +16 -0
  202. package/dist/tools/multi-edit.d.ts.map +1 -0
  203. package/dist/tools/multi-edit.js +163 -0
  204. package/dist/tools/multi-edit.js.map +1 -0
  205. package/dist/tools/notebook-edit.d.ts +31 -0
  206. package/dist/tools/notebook-edit.d.ts.map +1 -0
  207. package/dist/tools/notebook-edit.js +321 -0
  208. package/dist/tools/notebook-edit.js.map +1 -0
  209. package/dist/tools/registry.d.ts +16 -0
  210. package/dist/tools/registry.d.ts.map +1 -0
  211. package/dist/tools/registry.js +41 -0
  212. package/dist/tools/registry.js.map +1 -0
  213. package/dist/tools/shell-exec.d.ts +12 -0
  214. package/dist/tools/shell-exec.d.ts.map +1 -0
  215. package/dist/tools/shell-exec.js +261 -0
  216. package/dist/tools/shell-exec.js.map +1 -0
  217. package/dist/tools/sub-agent-manager.d.ts +57 -0
  218. package/dist/tools/sub-agent-manager.d.ts.map +1 -0
  219. package/dist/tools/sub-agent-manager.js +153 -0
  220. package/dist/tools/sub-agent-manager.js.map +1 -0
  221. package/dist/tools/sub-agent-status.d.ts +12 -0
  222. package/dist/tools/sub-agent-status.d.ts.map +1 -0
  223. package/dist/tools/sub-agent-status.js +59 -0
  224. package/dist/tools/sub-agent-status.js.map +1 -0
  225. package/dist/tools/sub-agent-terminate.d.ts +12 -0
  226. package/dist/tools/sub-agent-terminate.d.ts.map +1 -0
  227. package/dist/tools/sub-agent-terminate.js +55 -0
  228. package/dist/tools/sub-agent-terminate.js.map +1 -0
  229. package/dist/tools/sub-agent.d.ts +34 -0
  230. package/dist/tools/sub-agent.d.ts.map +1 -0
  231. package/dist/tools/sub-agent.js +140 -0
  232. package/dist/tools/sub-agent.js.map +1 -0
  233. package/dist/tools/system-info.d.ts +24 -0
  234. package/dist/tools/system-info.d.ts.map +1 -0
  235. package/dist/tools/system-info.js +220 -0
  236. package/dist/tools/system-info.js.map +1 -0
  237. package/dist/tools/todo.d.ts +16 -0
  238. package/dist/tools/todo.d.ts.map +1 -0
  239. package/dist/tools/todo.js +144 -0
  240. package/dist/tools/todo.js.map +1 -0
  241. package/dist/tools/types.d.ts +20 -0
  242. package/dist/tools/types.d.ts.map +1 -0
  243. package/dist/tools/types.js +3 -0
  244. package/dist/tools/types.js.map +1 -0
  245. package/dist/tools/view-diff.d.ts +11 -0
  246. package/dist/tools/view-diff.d.ts.map +1 -0
  247. package/dist/tools/view-diff.js +88 -0
  248. package/dist/tools/view-diff.js.map +1 -0
  249. package/dist/tools/view-repo-map.d.ts +18 -0
  250. package/dist/tools/view-repo-map.d.ts.map +1 -0
  251. package/dist/tools/view-repo-map.js +245 -0
  252. package/dist/tools/view-repo-map.js.map +1 -0
  253. package/dist/tools/web-fetch.d.ts +13 -0
  254. package/dist/tools/web-fetch.d.ts.map +1 -0
  255. package/dist/tools/web-fetch.js +106 -0
  256. package/dist/tools/web-fetch.js.map +1 -0
  257. package/dist/tools/web-search.d.ts +10 -0
  258. package/dist/tools/web-search.d.ts.map +1 -0
  259. package/dist/tools/web-search.js +106 -0
  260. package/dist/tools/web-search.js.map +1 -0
  261. package/dist/utils/gitignore.d.ts +10 -0
  262. package/dist/utils/gitignore.d.ts.map +1 -0
  263. package/dist/utils/gitignore.js +104 -0
  264. package/dist/utils/gitignore.js.map +1 -0
  265. package/dist/utils/lazy-apply.d.ts +45 -0
  266. package/dist/utils/lazy-apply.d.ts.map +1 -0
  267. package/dist/utils/lazy-apply.js +164 -0
  268. package/dist/utils/lazy-apply.js.map +1 -0
  269. package/dist/utils/memory.d.ts +36 -0
  270. package/dist/utils/memory.d.ts.map +1 -0
  271. package/dist/utils/memory.js +136 -0
  272. package/dist/utils/memory.js.map +1 -0
  273. package/dist/utils/path-matching.d.ts +24 -0
  274. package/dist/utils/path-matching.d.ts.map +1 -0
  275. package/dist/utils/path-matching.js +116 -0
  276. package/dist/utils/path-matching.js.map +1 -0
  277. package/dist/utils/path-safety.d.ts +13 -0
  278. package/dist/utils/path-safety.d.ts.map +1 -0
  279. package/dist/utils/path-safety.js +54 -0
  280. package/dist/utils/path-safety.js.map +1 -0
  281. package/dist/utils/project-config.d.ts +18 -0
  282. package/dist/utils/project-config.d.ts.map +1 -0
  283. package/dist/utils/project-config.js +76 -0
  284. package/dist/utils/project-config.js.map +1 -0
  285. package/dist/utils/search-match.d.ts +63 -0
  286. package/dist/utils/search-match.d.ts.map +1 -0
  287. package/dist/utils/search-match.js +426 -0
  288. package/dist/utils/search-match.js.map +1 -0
  289. package/dist/utils/shell-paths.d.ts +17 -0
  290. package/dist/utils/shell-paths.d.ts.map +1 -0
  291. package/dist/utils/shell-paths.js +107 -0
  292. package/dist/utils/shell-paths.js.map +1 -0
  293. package/dist/utils/streaming-diff.d.ts +45 -0
  294. package/dist/utils/streaming-diff.d.ts.map +1 -0
  295. package/dist/utils/streaming-diff.js +230 -0
  296. package/dist/utils/streaming-diff.js.map +1 -0
  297. package/dist/utils/todo.d.ts +47 -0
  298. package/dist/utils/todo.d.ts.map +1 -0
  299. package/dist/utils/todo.js +102 -0
  300. package/dist/utils/todo.js.map +1 -0
  301. package/package.json +23 -0
  302. package/src/agents/coordinator.ts +240 -0
  303. package/src/context-providers/clipboard.ts +48 -0
  304. package/src/context-providers/codebase.ts +274 -0
  305. package/src/context-providers/diff.ts +66 -0
  306. package/src/context-providers/docs.ts +160 -0
  307. package/src/context-providers/file-include.ts +54 -0
  308. package/src/context-providers/folder.ts +106 -0
  309. package/src/context-providers/git.ts +72 -0
  310. package/src/context-providers/index.ts +26 -0
  311. package/src/context-providers/open-files.ts +113 -0
  312. package/src/context-providers/problems.ts +100 -0
  313. package/src/context-providers/registry.ts +99 -0
  314. package/src/context-providers/terminal.ts +58 -0
  315. package/src/context-providers/tree.ts +161 -0
  316. package/src/context-providers/types.ts +84 -0
  317. package/src/context-providers/url.ts +138 -0
  318. package/src/effort/index.ts +177 -0
  319. package/src/hooks/index.ts +148 -0
  320. package/src/index.ts +114 -0
  321. package/src/indexing/README.md +267 -0
  322. package/src/indexing/chunker.ts +206 -0
  323. package/src/indexing/database.ts +299 -0
  324. package/src/indexing/index.ts +15 -0
  325. package/src/indexing/indexer.ts +383 -0
  326. package/src/indexing/recent-edits-cache.ts +150 -0
  327. package/src/indexing/types.ts +44 -0
  328. package/src/mcp/index.ts +33 -0
  329. package/src/mcp/manager.ts +385 -0
  330. package/src/oauth.ts +330 -0
  331. package/src/permissions/index.ts +1011 -0
  332. package/src/plan/index.ts +20 -0
  333. package/src/plan/manager.ts +233 -0
  334. package/src/rules/index.ts +28 -0
  335. package/src/rules/manager.ts +276 -0
  336. package/src/rules/types.ts +40 -0
  337. package/src/sandbox/filesystem.ts +135 -0
  338. package/src/sandbox/index.ts +9 -0
  339. package/src/sandbox/manager.ts +213 -0
  340. package/src/sandbox/network.ts +101 -0
  341. package/src/sandbox/types.ts +63 -0
  342. package/src/tools/ast-edit.ts +493 -0
  343. package/src/tools/code-verify.ts +143 -0
  344. package/src/tools/codebase-search.ts +117 -0
  345. package/src/tools/file-delete.ts +155 -0
  346. package/src/tools/file-edit.ts +115 -0
  347. package/src/tools/file-read.ts +195 -0
  348. package/src/tools/file-run.ts +158 -0
  349. package/src/tools/file-write.ts +104 -0
  350. package/src/tools/glob-search.ts +80 -0
  351. package/src/tools/grep-search.ts +120 -0
  352. package/src/tools/list-dir.ts +172 -0
  353. package/src/tools/multi-edit.ts +138 -0
  354. package/src/tools/notebook-edit.ts +342 -0
  355. package/src/tools/registry.ts +43 -0
  356. package/src/tools/shell-exec.ts +251 -0
  357. package/src/tools/sub-agent-manager.ts +183 -0
  358. package/src/tools/sub-agent-status.ts +67 -0
  359. package/src/tools/sub-agent-terminate.ts +62 -0
  360. package/src/tools/sub-agent.ts +162 -0
  361. package/src/tools/system-info.ts +248 -0
  362. package/src/tools/todo.ts +149 -0
  363. package/src/tools/types.ts +21 -0
  364. package/src/tools/view-diff.ts +99 -0
  365. package/src/tools/view-repo-map.ts +249 -0
  366. package/src/tools/web-fetch.ts +118 -0
  367. package/src/tools/web-search.ts +129 -0
  368. package/src/utils/gitignore.ts +73 -0
  369. package/src/utils/lazy-apply.ts +189 -0
  370. package/src/utils/memory.ts +124 -0
  371. package/src/utils/path-matching.ts +84 -0
  372. package/src/utils/path-safety.ts +19 -0
  373. package/src/utils/project-config.ts +41 -0
  374. package/src/utils/search-match.ts +495 -0
  375. package/src/utils/shell-paths.ts +79 -0
  376. package/src/utils/streaming-diff.ts +260 -0
  377. package/src/utils/todo.ts +115 -0
  378. package/tsconfig.json +18 -0
@@ -0,0 +1,443 @@
1
+ "use strict";
2
+ /**
3
+ * AST Edit Tool — Tree-sitter powered structural code editing.
4
+ *
5
+ * Uses tree-sitter to parse source code into an AST, then performs
6
+ * targeted edits on specific AST nodes (functions, classes, methods,
7
+ * imports, etc.) by name rather than by string matching.
8
+ *
9
+ * This is more reliable than string-based editing for:
10
+ * - Renaming functions/methods/classes across a file
11
+ * - Replacing entire function bodies
12
+ * - Adding/removing imports
13
+ * - Inserting methods into classes
14
+ * - Extracting or inlining code blocks
15
+ */
16
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ var desc = Object.getOwnPropertyDescriptor(m, k);
19
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
20
+ desc = { enumerable: true, get: function() { return m[k]; } };
21
+ }
22
+ Object.defineProperty(o, k2, desc);
23
+ }) : (function(o, m, k, k2) {
24
+ if (k2 === undefined) k2 = k;
25
+ o[k2] = m[k];
26
+ }));
27
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
28
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
29
+ }) : function(o, v) {
30
+ o["default"] = v;
31
+ });
32
+ var __importStar = (this && this.__importStar) || (function () {
33
+ var ownKeys = function(o) {
34
+ ownKeys = Object.getOwnPropertyNames || function (o) {
35
+ var ar = [];
36
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
37
+ return ar;
38
+ };
39
+ return ownKeys(o);
40
+ };
41
+ return function (mod) {
42
+ if (mod && mod.__esModule) return mod;
43
+ var result = {};
44
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
45
+ __setModuleDefault(result, mod);
46
+ return result;
47
+ };
48
+ })();
49
+ Object.defineProperty(exports, "__esModule", { value: true });
50
+ exports.ASTEditTool = void 0;
51
+ const fs = __importStar(require("fs"));
52
+ const path_safety_1 = require("../utils/path-safety");
53
+ // Tree-sitter types (loaded dynamically to keep it optional)
54
+ let Parser = null;
55
+ const languageCache = new Map();
56
+ /** Supported languages and their tree-sitter package names */
57
+ const LANGUAGE_MAP = {
58
+ ".ts": "tree-sitter-typescript/typescript",
59
+ ".tsx": "tree-sitter-typescript/tsx",
60
+ ".js": "tree-sitter-javascript",
61
+ ".jsx": "tree-sitter-javascript",
62
+ ".py": "tree-sitter-python",
63
+ ".rs": "tree-sitter-rust",
64
+ ".go": "tree-sitter-go",
65
+ ".java": "tree-sitter-java",
66
+ ".c": "tree-sitter-c",
67
+ ".cpp": "tree-sitter-cpp",
68
+ ".rb": "tree-sitter-ruby",
69
+ ".css": "tree-sitter-css",
70
+ ".json": "tree-sitter-json",
71
+ };
72
+ class ASTEditTool {
73
+ definition = {
74
+ name: "ast_edit",
75
+ description: `Perform structural edits on source code using Tree-sitter AST parsing. More reliable than string matching for targeting specific code structures.
76
+
77
+ Supported operations:
78
+ - replace: Replace an entire AST node (function, class, etc.) with new content
79
+ - rename: Rename a function, class, method, variable, or type
80
+ - delete: Remove an AST node entirely
81
+ - insert_before/insert_after: Insert content before or after a named node
82
+ - replace_body: Replace only the body of a function/method/class (keeps signature)
83
+
84
+ Supported languages: TypeScript, JavaScript, Python, Rust, Go, Java, C, C++, Ruby, CSS, JSON.
85
+
86
+ Use this when string-matching edits are fragile or when you need to target code by structure rather than text.`,
87
+ inputSchema: {
88
+ type: "object",
89
+ properties: {
90
+ file_path: {
91
+ type: "string",
92
+ description: "Path to the file to edit",
93
+ },
94
+ operations: {
95
+ type: "array",
96
+ description: "Array of AST edit operations to apply sequentially",
97
+ items: {
98
+ type: "object",
99
+ properties: {
100
+ node_type: {
101
+ type: "string",
102
+ enum: ["function", "class", "method", "import", "variable", "type", "interface", "enum", "block", "expression"],
103
+ description: "Type of AST node to target",
104
+ },
105
+ name: {
106
+ type: "string",
107
+ description: "Name of the node (function name, class name, variable name, import module name, etc.)",
108
+ },
109
+ action: {
110
+ type: "string",
111
+ enum: ["replace", "rename", "delete", "insert_before", "insert_after", "replace_body"],
112
+ description: "Action to perform on the node",
113
+ },
114
+ content: {
115
+ type: "string",
116
+ description: "New content (for replace, insert_before, insert_after, replace_body actions)",
117
+ },
118
+ new_name: {
119
+ type: "string",
120
+ description: "New name (for rename action)",
121
+ },
122
+ },
123
+ required: ["node_type", "name", "action"],
124
+ },
125
+ },
126
+ },
127
+ required: ["file_path", "operations"],
128
+ },
129
+ requiresPermission: true,
130
+ permissionMessage: (input) => {
131
+ const ops = input.operations;
132
+ return `AST edit: ${input.file_path} (${Array.isArray(ops) ? ops.length : "?"} operation(s))`;
133
+ },
134
+ };
135
+ workingDir;
136
+ sandboxManager;
137
+ constructor(workingDir, sandboxManager) {
138
+ this.workingDir = workingDir;
139
+ this.sandboxManager = sandboxManager;
140
+ }
141
+ async execute(input) {
142
+ let filePath;
143
+ try {
144
+ filePath = (0, path_safety_1.safePath)(input.file_path, this.workingDir);
145
+ }
146
+ catch (err) {
147
+ return { success: false, output: "", error: err.message };
148
+ }
149
+ if (this.sandboxManager) {
150
+ const check = this.sandboxManager.checkFileWrite(filePath);
151
+ if (!check.allowed) {
152
+ return { success: false, output: "", error: check.reason || "Sandbox: write access denied" };
153
+ }
154
+ }
155
+ if (!fs.existsSync(filePath)) {
156
+ return { success: false, output: "", error: `File not found: ${filePath}` };
157
+ }
158
+ const operations = input.operations;
159
+ if (!Array.isArray(operations) || operations.length === 0) {
160
+ return { success: false, output: "", error: "operations must be a non-empty array" };
161
+ }
162
+ // Initialize tree-sitter
163
+ const initResult = await this.initParser(filePath);
164
+ if (!initResult.success) {
165
+ return initResult;
166
+ }
167
+ let content = fs.readFileSync(filePath, "utf-8");
168
+ const originalContent = content;
169
+ const results = [];
170
+ for (let i = 0; i < operations.length; i++) {
171
+ const op = operations[i];
172
+ // Validate operation
173
+ if (op.action === "rename" && !op.new_name) {
174
+ return { success: false, output: "", error: `Operation ${i + 1}: rename requires new_name` };
175
+ }
176
+ if ((op.action === "replace" || op.action === "insert_before" || op.action === "insert_after" || op.action === "replace_body") && op.content === undefined) {
177
+ return { success: false, output: "", error: `Operation ${i + 1}: ${op.action} requires content` };
178
+ }
179
+ try {
180
+ const result = this.applyOperation(content, filePath, op);
181
+ content = result.content;
182
+ results.push(`${i + 1}. ${op.action} ${op.node_type} "${op.name}" — ${result.message}`);
183
+ }
184
+ catch (err) {
185
+ return { success: false, output: results.join("\n"), error: `Operation ${i + 1} failed: ${err.message}` };
186
+ }
187
+ }
188
+ // Write result
189
+ fs.writeFileSync(filePath, content, "utf-8");
190
+ // Generate diff summary
191
+ const oldLines = originalContent.split("\n");
192
+ const newLines = content.split("\n");
193
+ const diffHeader = `--- a/${input.file_path}\n+++ b/${input.file_path}\n@@ -1,${oldLines.length} +1,${newLines.length} @@`;
194
+ return {
195
+ success: true,
196
+ output: `AST-edited ${filePath}: ${operations.length} operation(s)\n\n${results.join("\n")}\n\n${diffHeader}`,
197
+ };
198
+ }
199
+ /**
200
+ * Initialize tree-sitter parser for the given file's language.
201
+ */
202
+ async initParser(filePath) {
203
+ const ext = filePath.substring(filePath.lastIndexOf(".")).toLowerCase();
204
+ const langPackage = LANGUAGE_MAP[ext];
205
+ if (!langPackage) {
206
+ return {
207
+ success: false,
208
+ output: "",
209
+ error: `Unsupported file type: ${ext}. Supported: ${Object.keys(LANGUAGE_MAP).join(", ")}`,
210
+ };
211
+ }
212
+ try {
213
+ if (!Parser) {
214
+ Parser = require("tree-sitter");
215
+ }
216
+ if (!languageCache.has(langPackage)) {
217
+ const lang = require(langPackage);
218
+ languageCache.set(langPackage, lang);
219
+ }
220
+ return { success: true, output: "" };
221
+ }
222
+ catch {
223
+ return {
224
+ success: false,
225
+ output: "",
226
+ error: `Tree-sitter not available. Install with: npm install tree-sitter ${langPackage}`,
227
+ };
228
+ }
229
+ }
230
+ /**
231
+ * Parse source code and apply a single AST operation.
232
+ */
233
+ applyOperation(content, filePath, op) {
234
+ const ext = filePath.substring(filePath.lastIndexOf(".")).toLowerCase();
235
+ const langPackage = LANGUAGE_MAP[ext];
236
+ const language = languageCache.get(langPackage);
237
+ const parser = new Parser();
238
+ parser.setLanguage(language);
239
+ const tree = parser.parse(content);
240
+ // Find the target node
241
+ const node = this.findNode(tree.rootNode, op.node_type, op.name);
242
+ if (!node) {
243
+ throw new Error(`Could not find ${op.node_type} named "${op.name}" in AST`);
244
+ }
245
+ const startIdx = node.startIndex;
246
+ const endIdx = node.endIndex;
247
+ switch (op.action) {
248
+ case "replace":
249
+ return {
250
+ content: content.substring(0, startIdx) + op.content + content.substring(endIdx),
251
+ message: `replaced (${node.startPosition.row + 1}:${node.startPosition.column}-${node.endPosition.row + 1}:${node.endPosition.column})`,
252
+ };
253
+ case "delete":
254
+ // Delete the node and any trailing newline
255
+ let deleteEnd = endIdx;
256
+ if (content[deleteEnd] === "\n")
257
+ deleteEnd++;
258
+ return {
259
+ content: content.substring(0, startIdx) + content.substring(deleteEnd),
260
+ message: `deleted (${node.startPosition.row + 1}:${node.startPosition.column}-${node.endPosition.row + 1}:${node.endPosition.column})`,
261
+ };
262
+ case "rename":
263
+ return this.renameNode(content, node, op.name, op.new_name);
264
+ case "insert_before":
265
+ return {
266
+ content: content.substring(0, startIdx) + op.content + "\n" + content.substring(startIdx),
267
+ message: `inserted before (line ${node.startPosition.row + 1})`,
268
+ };
269
+ case "insert_after":
270
+ return {
271
+ content: content.substring(0, endIdx) + "\n" + op.content + content.substring(endIdx),
272
+ message: `inserted after (line ${node.endPosition.row + 1})`,
273
+ };
274
+ case "replace_body": {
275
+ const body = this.findBody(node);
276
+ if (!body) {
277
+ throw new Error(`No body found for ${op.node_type} "${op.name}"`);
278
+ }
279
+ return {
280
+ content: content.substring(0, body.startIndex) + op.content + content.substring(body.endIndex),
281
+ message: `body replaced (${body.startPosition.row + 1}:${body.startPosition.column}-${body.endPosition.row + 1}:${body.endPosition.column})`,
282
+ };
283
+ }
284
+ default:
285
+ throw new Error(`Unknown action: ${op.action}`);
286
+ }
287
+ }
288
+ /**
289
+ * Find an AST node by type and name.
290
+ */
291
+ findNode(rootNode, nodeType, name) {
292
+ const matches = [];
293
+ this.walkTree(rootNode, (node) => {
294
+ if (this.matchesNodeType(node, nodeType) && this.getNodeName(node) === name) {
295
+ matches.push(node);
296
+ }
297
+ });
298
+ return matches[0] || null;
299
+ }
300
+ /**
301
+ * Walk the AST tree depth-first, calling visitor on each node.
302
+ */
303
+ walkTree(node, visitor) {
304
+ visitor(node);
305
+ for (let i = 0; i < node.childCount; i++) {
306
+ this.walkTree(node.child(i), visitor);
307
+ }
308
+ }
309
+ /**
310
+ * Check if an AST node matches the requested type category.
311
+ */
312
+ matchesNodeType(node, nodeType) {
313
+ const type = node.type;
314
+ switch (nodeType) {
315
+ case "function":
316
+ return [
317
+ "function_declaration", "function_definition", "function_item",
318
+ "arrow_function", "method_definition", "function_expression",
319
+ "export_statement", // may wrap a function
320
+ ].includes(type);
321
+ case "class":
322
+ return [
323
+ "class_declaration", "class_definition", "class_statement",
324
+ "struct_item", "impl_item",
325
+ ].includes(type);
326
+ case "method":
327
+ return [
328
+ "method_definition", "method_declaration", "function_item",
329
+ "public_method_definition",
330
+ ].includes(type);
331
+ case "import":
332
+ return [
333
+ "import_statement", "import_declaration", "use_declaration",
334
+ "import_from_statement", "include_statement",
335
+ ].includes(type);
336
+ case "variable":
337
+ return [
338
+ "variable_declaration", "lexical_declaration", "const_declaration",
339
+ "let_declaration", "variable_declarator", "assignment_expression",
340
+ "static_item", "const_item",
341
+ ].includes(type);
342
+ case "type":
343
+ return [
344
+ "type_alias_declaration", "type_definition", "typedef_declaration",
345
+ ].includes(type);
346
+ case "interface":
347
+ return [
348
+ "interface_declaration", "interface_definition",
349
+ ].includes(type);
350
+ case "enum":
351
+ return [
352
+ "enum_declaration", "enum_definition", "enum_item",
353
+ ].includes(type);
354
+ case "block":
355
+ return [
356
+ "statement_block", "block", "compound_statement",
357
+ "block_expression",
358
+ ].includes(type);
359
+ case "expression":
360
+ return [
361
+ "expression_statement", "call_expression", "assignment_expression",
362
+ ].includes(type);
363
+ default:
364
+ return false;
365
+ }
366
+ }
367
+ /**
368
+ * Extract the name identifier from an AST node.
369
+ */
370
+ getNodeName(node) {
371
+ // Direct name child
372
+ const nameNode = node.childForFieldName?.("name");
373
+ if (nameNode)
374
+ return nameNode.text;
375
+ // Check for declarator (variable declarations)
376
+ const declarator = node.childForFieldName?.("declarator");
377
+ if (declarator) {
378
+ const declName = declarator.childForFieldName?.("name");
379
+ if (declName)
380
+ return declName.text;
381
+ return declarator.text;
382
+ }
383
+ // For export statements, check the declaration inside
384
+ if (node.type === "export_statement") {
385
+ const decl = node.childForFieldName?.("declaration");
386
+ if (decl)
387
+ return this.getNodeName(decl);
388
+ }
389
+ // For imports, try to get the module/source name
390
+ if (node.type?.includes("import")) {
391
+ const source = node.childForFieldName?.("source") || node.childForFieldName?.("module_name");
392
+ if (source)
393
+ return source.text?.replace(/['"]/g, "");
394
+ }
395
+ // For lexical_declaration, check first declarator child
396
+ for (let i = 0; i < node.childCount; i++) {
397
+ const child = node.child(i);
398
+ if (child.type === "variable_declarator") {
399
+ const childName = child.childForFieldName?.("name");
400
+ if (childName)
401
+ return childName.text;
402
+ }
403
+ }
404
+ return null;
405
+ }
406
+ /**
407
+ * Find the body/block node within a function, method, or class.
408
+ */
409
+ findBody(node) {
410
+ // Common body field names
411
+ const bodyNode = node.childForFieldName?.("body") || node.childForFieldName?.("block");
412
+ if (bodyNode)
413
+ return bodyNode;
414
+ // Fallback: find first block-type child
415
+ for (let i = 0; i < node.childCount; i++) {
416
+ const child = node.child(i);
417
+ if (["statement_block", "block", "compound_statement", "class_body"].includes(child.type)) {
418
+ return child;
419
+ }
420
+ }
421
+ return null;
422
+ }
423
+ /**
424
+ * Rename a node by replacing all occurrences of the old name with the new name
425
+ * within the node's text range.
426
+ */
427
+ renameNode(content, node, oldName, newName) {
428
+ const nodeText = content.substring(node.startIndex, node.endIndex);
429
+ // Replace identifier occurrences (word-boundary aware)
430
+ const pattern = new RegExp(`\\b${escapeRegex(oldName)}\\b`, "g");
431
+ const updatedText = nodeText.replace(pattern, newName);
432
+ const count = (nodeText.match(pattern) || []).length;
433
+ return {
434
+ content: content.substring(0, node.startIndex) + updatedText + content.substring(node.endIndex),
435
+ message: `renamed ${count} occurrence(s) of "${oldName}" → "${newName}"`,
436
+ };
437
+ }
438
+ }
439
+ exports.ASTEditTool = ASTEditTool;
440
+ function escapeRegex(str) {
441
+ return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
442
+ }
443
+ //# sourceMappingURL=ast-edit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-edit.js","sourceRoot":"","sources":["../../src/tools/ast-edit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { BaseTool, ToolDefinition, ToolResult } from "./types";
2
+ export declare class CodeVerifyTool implements BaseTool {
3
+ definition: ToolDefinition;
4
+ private workingDir;
5
+ constructor(workingDir: string);
6
+ execute(input: Record<string, unknown>): Promise<ToolResult>;
7
+ }
8
+ //# sourceMappingURL=code-verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-verify.d.ts","sourceRoot":"","sources":["../../src/tools/code-verify.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAqDpE,qBAAa,cAAe,YAAW,QAAQ;IAC7C,UAAU,EAAE,cAAc,CAsBxB;IAEF,OAAO,CAAC,UAAU,CAAS;gBACf,UAAU,EAAE,MAAM;IAIxB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;CAwDnE"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.CodeVerifyTool = void 0;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const child_process_1 = require("child_process");
40
+ const path_safety_1 = require("../utils/path-safety");
41
+ /** Map file extensions to the command that checks their syntax/types */
42
+ const CHECKERS = {
43
+ // JavaScript — Node's --check flag validates syntax without running
44
+ ".js": (f) => `node --check "${f}"`,
45
+ ".mjs": (f) => `node --check "${f}"`,
46
+ ".cjs": (f) => `node --check "${f}"`,
47
+ // TypeScript — tsc with --noEmit to type-check without producing output
48
+ ".ts": (f, cwd) => {
49
+ const tsconfig = path.join(cwd, "tsconfig.json");
50
+ if (fs.existsSync(tsconfig)) {
51
+ return `npx tsc --noEmit --pretty "${f}"`;
52
+ }
53
+ return `npx tsc --noEmit --pretty --esModuleInterop --resolveJsonModule "${f}"`;
54
+ },
55
+ ".tsx": (f, cwd) => {
56
+ const tsconfig = path.join(cwd, "tsconfig.json");
57
+ if (fs.existsSync(tsconfig)) {
58
+ return `npx tsc --noEmit --pretty --jsx react-jsx "${f}"`;
59
+ }
60
+ return `npx tsc --noEmit --pretty --esModuleInterop --resolveJsonModule --jsx react-jsx "${f}"`;
61
+ },
62
+ // Python — py_compile checks syntax
63
+ ".py": (f) => `python3 -m py_compile "${f}"`,
64
+ // Ruby — -c flag checks syntax
65
+ ".rb": (f) => `ruby -c "${f}"`,
66
+ // Shell — bash -n checks syntax without executing
67
+ ".sh": (f) => `bash -n "${f}"`,
68
+ ".bash": (f) => `bash -n "${f}"`,
69
+ ".zsh": (f) => `zsh -n "${f}"`,
70
+ // Go — vet checks for common errors
71
+ ".go": (f) => `go vet "${f}"`,
72
+ // PHP — lint mode
73
+ ".php": (f) => `php -l "${f}"`,
74
+ // Perl — check syntax
75
+ ".pl": (f) => `perl -c "${f}"`,
76
+ // Swift — just parse/typecheck
77
+ ".swift": (f) => `swiftc -typecheck "${f}"`,
78
+ // JSON — validate structure
79
+ ".json": (f) => `node -e "JSON.parse(require('fs').readFileSync('${f.replace(/'/g, "\\'")}','utf8'));console.log('Valid JSON')"`,
80
+ };
81
+ class CodeVerifyTool {
82
+ definition = {
83
+ name: "code_verify",
84
+ description: "Verify that code in a file is syntactically correct and (where possible) type-safe. " +
85
+ "Runs language-specific checks: node --check for JS, tsc --noEmit for TS, py_compile for Python, etc. " +
86
+ "Use after writing or editing code to catch errors before running.",
87
+ inputSchema: {
88
+ type: "object",
89
+ properties: {
90
+ file_path: {
91
+ type: "string",
92
+ description: "Path to the file to verify",
93
+ },
94
+ timeout: {
95
+ type: "number",
96
+ description: "Timeout in ms. Default: 30000",
97
+ },
98
+ },
99
+ required: ["file_path"],
100
+ },
101
+ requiresPermission: false,
102
+ permissionMessage: (input) => `Verify code: ${input.file_path}`,
103
+ };
104
+ workingDir;
105
+ constructor(workingDir) {
106
+ this.workingDir = workingDir;
107
+ }
108
+ async execute(input) {
109
+ let filePath;
110
+ try {
111
+ filePath = (0, path_safety_1.safePath)(input.file_path, this.workingDir);
112
+ }
113
+ catch (err) {
114
+ return { success: false, output: "", error: err.message };
115
+ }
116
+ const timeout = input.timeout || 30000;
117
+ if (!fs.existsSync(filePath)) {
118
+ return { success: false, output: "", error: `File not found: ${filePath}` };
119
+ }
120
+ const ext = path.extname(filePath).toLowerCase();
121
+ const checkerFn = CHECKERS[ext];
122
+ if (!checkerFn) {
123
+ return {
124
+ success: false,
125
+ output: "",
126
+ error: `No verifier for ${ext} files. Supported: ${Object.keys(CHECKERS).join(", ")}`,
127
+ };
128
+ }
129
+ const command = checkerFn(filePath, this.workingDir);
130
+ return new Promise((resolve) => {
131
+ (0, child_process_1.exec)(command, { cwd: this.workingDir, timeout, maxBuffer: 10 * 1024 * 1024, env: { ...process.env } }, (error, stdout, stderr) => {
132
+ const outputParts = [];
133
+ if (stdout)
134
+ outputParts.push(stdout.trimEnd());
135
+ if (stderr)
136
+ outputParts.push(stderr.trimEnd());
137
+ const output = outputParts.join("\n") || "(no output)";
138
+ if (error?.killed) {
139
+ return resolve({ success: false, output, error: `Timed out after ${timeout}ms` });
140
+ }
141
+ if (error) {
142
+ resolve({
143
+ success: false,
144
+ output,
145
+ error: `Verification failed (exit code ${error.code}). See output for details.`,
146
+ });
147
+ }
148
+ else {
149
+ resolve({
150
+ success: true,
151
+ output: output === "(no output)" ? "Code verification passed — no errors found." : output,
152
+ });
153
+ }
154
+ });
155
+ });
156
+ }
157
+ }
158
+ exports.CodeVerifyTool = CodeVerifyTool;
159
+ //# sourceMappingURL=code-verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"code-verify.js","sourceRoot":"","sources":["../../src/tools/code-verify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Codebase Search Tool — semantic + full-text search across the indexed codebase.
3
+ *
4
+ * Uses the indexing system (SQLite FTS5 + optional embeddings) for fast,
5
+ * ranked code retrieval. Falls back to runtime grep if index not available.
6
+ */
7
+ import type { BaseTool, ToolDefinition, ToolResult } from "./types";
8
+ export declare class CodebaseSearchTool implements BaseTool {
9
+ definition: ToolDefinition;
10
+ private indexer;
11
+ private workingDir;
12
+ private indexPromise;
13
+ constructor(workingDir: string);
14
+ execute(input: Record<string, unknown>): Promise<ToolResult>;
15
+ private ensureIndex;
16
+ }
17
+ //# sourceMappingURL=codebase-search.d.ts.map