@vybestack/llxprt-code-tools 0.10.0-nightly.260613.1adad3b34

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 (364) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +294 -0
  3. package/dist/.last_build +0 -0
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +2 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/src/__tests__/fixtures/filesystem-tool-fixtures.d.ts +29 -0
  8. package/dist/src/__tests__/fixtures/filesystem-tool-fixtures.js +30 -0
  9. package/dist/src/__tests__/fixtures/filesystem-tool-fixtures.js.map +1 -0
  10. package/dist/src/__tests__/fixtures/key-storage-fixtures.d.ts +39 -0
  11. package/dist/src/__tests__/fixtures/key-storage-fixtures.js +53 -0
  12. package/dist/src/__tests__/fixtures/key-storage-fixtures.js.map +1 -0
  13. package/dist/src/__tests__/fixtures/provider-formatting-fixtures.d.ts +140 -0
  14. package/dist/src/__tests__/fixtures/provider-formatting-fixtures.js +157 -0
  15. package/dist/src/__tests__/fixtures/provider-formatting-fixtures.js.map +1 -0
  16. package/dist/src/__tests__/red-test-helpers.d.ts +14 -0
  17. package/dist/src/__tests__/red-test-helpers.js +18 -0
  18. package/dist/src/__tests__/red-test-helpers.js.map +1 -0
  19. package/dist/src/formatters/IToolFormatter.d.ts +84 -0
  20. package/dist/src/formatters/IToolFormatter.js +6 -0
  21. package/dist/src/formatters/IToolFormatter.js.map +1 -0
  22. package/dist/src/formatters/ToolFormatter.d.ts +94 -0
  23. package/dist/src/formatters/ToolFormatter.js +379 -0
  24. package/dist/src/formatters/ToolFormatter.js.map +1 -0
  25. package/dist/src/formatters/ToolIdStrategy.d.ts +79 -0
  26. package/dist/src/formatters/ToolIdStrategy.js +173 -0
  27. package/dist/src/formatters/ToolIdStrategy.js.map +1 -0
  28. package/dist/src/formatters/doubleEscapeUtils.d.ts +46 -0
  29. package/dist/src/formatters/doubleEscapeUtils.js +223 -0
  30. package/dist/src/formatters/doubleEscapeUtils.js.map +1 -0
  31. package/dist/src/formatters/index.d.ts +21 -0
  32. package/dist/src/formatters/index.js +12 -0
  33. package/dist/src/formatters/index.js.map +1 -0
  34. package/dist/src/formatters/toolIdNormalization.d.ts +28 -0
  35. package/dist/src/formatters/toolIdNormalization.js +97 -0
  36. package/dist/src/formatters/toolIdNormalization.js.map +1 -0
  37. package/dist/src/formatters/toolNameUtils.d.ts +43 -0
  38. package/dist/src/formatters/toolNameUtils.js +143 -0
  39. package/dist/src/formatters/toolNameUtils.js.map +1 -0
  40. package/dist/src/index.d.ts +88 -0
  41. package/dist/src/index.js +68 -0
  42. package/dist/src/index.js.map +1 -0
  43. package/dist/src/interfaces/IAsyncTaskService.d.ts +57 -0
  44. package/dist/src/interfaces/IAsyncTaskService.js +6 -0
  45. package/dist/src/interfaces/IAsyncTaskService.js.map +1 -0
  46. package/dist/src/interfaces/IIdeService.d.ts +62 -0
  47. package/dist/src/interfaces/IIdeService.js +6 -0
  48. package/dist/src/interfaces/IIdeService.js.map +1 -0
  49. package/dist/src/interfaces/ILspService.d.ts +54 -0
  50. package/dist/src/interfaces/ILspService.js +6 -0
  51. package/dist/src/interfaces/ILspService.js.map +1 -0
  52. package/dist/src/interfaces/IMcpToolService.d.ts +47 -0
  53. package/dist/src/interfaces/IMcpToolService.js +6 -0
  54. package/dist/src/interfaces/IMcpToolService.js.map +1 -0
  55. package/dist/src/interfaces/IPromptRegistryService.d.ts +51 -0
  56. package/dist/src/interfaces/IPromptRegistryService.js +6 -0
  57. package/dist/src/interfaces/IPromptRegistryService.js.map +1 -0
  58. package/dist/src/interfaces/ISettingsService.d.ts +50 -0
  59. package/dist/src/interfaces/ISettingsService.js +6 -0
  60. package/dist/src/interfaces/ISettingsService.js.map +1 -0
  61. package/dist/src/interfaces/IShellExecutionService.d.ts +55 -0
  62. package/dist/src/interfaces/IShellExecutionService.js +6 -0
  63. package/dist/src/interfaces/IShellExecutionService.js.map +1 -0
  64. package/dist/src/interfaces/IShellToolHost.d.ts +176 -0
  65. package/dist/src/interfaces/IShellToolHost.js +6 -0
  66. package/dist/src/interfaces/IShellToolHost.js.map +1 -0
  67. package/dist/src/interfaces/ISkillService.d.ts +69 -0
  68. package/dist/src/interfaces/ISkillService.js +6 -0
  69. package/dist/src/interfaces/ISkillService.js.map +1 -0
  70. package/dist/src/interfaces/IStorageService.d.ts +42 -0
  71. package/dist/src/interfaces/IStorageService.js +6 -0
  72. package/dist/src/interfaces/IStorageService.js.map +1 -0
  73. package/dist/src/interfaces/ISubagentService.d.ts +112 -0
  74. package/dist/src/interfaces/ISubagentService.js +6 -0
  75. package/dist/src/interfaces/ISubagentService.js.map +1 -0
  76. package/dist/src/interfaces/ITaskToolHost.d.ts +185 -0
  77. package/dist/src/interfaces/ITaskToolHost.js +6 -0
  78. package/dist/src/interfaces/ITaskToolHost.js.map +1 -0
  79. package/dist/src/interfaces/ITodoService.d.ts +79 -0
  80. package/dist/src/interfaces/ITodoService.js +6 -0
  81. package/dist/src/interfaces/ITodoService.js.map +1 -0
  82. package/dist/src/interfaces/IToolHost.d.ts +91 -0
  83. package/dist/src/interfaces/IToolHost.js +6 -0
  84. package/dist/src/interfaces/IToolHost.js.map +1 -0
  85. package/dist/src/interfaces/IToolKeyStorage.d.ts +62 -0
  86. package/dist/src/interfaces/IToolKeyStorage.js +6 -0
  87. package/dist/src/interfaces/IToolKeyStorage.js.map +1 -0
  88. package/dist/src/interfaces/IToolMessageBus.d.ts +63 -0
  89. package/dist/src/interfaces/IToolMessageBus.js +6 -0
  90. package/dist/src/interfaces/IToolMessageBus.js.map +1 -0
  91. package/dist/src/interfaces/IToolRegistryHost.d.ts +43 -0
  92. package/dist/src/interfaces/IToolRegistryHost.js +6 -0
  93. package/dist/src/interfaces/IToolRegistryHost.js.map +1 -0
  94. package/dist/src/interfaces/IWebSearchService.d.ts +16 -0
  95. package/dist/src/interfaces/IWebSearchService.js +7 -0
  96. package/dist/src/interfaces/IWebSearchService.js.map +1 -0
  97. package/dist/src/interfaces/index.d.ts +33 -0
  98. package/dist/src/interfaces/index.js +6 -0
  99. package/dist/src/interfaces/index.js.map +1 -0
  100. package/dist/src/tools/activate-skill.d.ts +26 -0
  101. package/dist/src/tools/activate-skill.js +121 -0
  102. package/dist/src/tools/activate-skill.js.map +1 -0
  103. package/dist/src/tools/apply-patch.d.ts +65 -0
  104. package/dist/src/tools/apply-patch.js +528 -0
  105. package/dist/src/tools/apply-patch.js.map +1 -0
  106. package/dist/src/tools/ast-edit/ast-config.d.ts +67 -0
  107. package/dist/src/tools/ast-edit/ast-config.js +72 -0
  108. package/dist/src/tools/ast-edit/ast-config.js.map +1 -0
  109. package/dist/src/tools/ast-edit/ast-edit-invocation.d.ts +40 -0
  110. package/dist/src/tools/ast-edit/ast-edit-invocation.js +410 -0
  111. package/dist/src/tools/ast-edit/ast-edit-invocation.js.map +1 -0
  112. package/dist/src/tools/ast-edit/ast-query-extractor.d.ts +21 -0
  113. package/dist/src/tools/ast-edit/ast-query-extractor.js +178 -0
  114. package/dist/src/tools/ast-edit/ast-query-extractor.js.map +1 -0
  115. package/dist/src/tools/ast-edit/ast-read-file-invocation.d.ts +26 -0
  116. package/dist/src/tools/ast-edit/ast-read-file-invocation.js +149 -0
  117. package/dist/src/tools/ast-edit/ast-read-file-invocation.js.map +1 -0
  118. package/dist/src/tools/ast-edit/constants.d.ts +30 -0
  119. package/dist/src/tools/ast-edit/constants.js +36 -0
  120. package/dist/src/tools/ast-edit/constants.js.map +1 -0
  121. package/dist/src/tools/ast-edit/context-collector.d.ts +25 -0
  122. package/dist/src/tools/ast-edit/context-collector.js +115 -0
  123. package/dist/src/tools/ast-edit/context-collector.js.map +1 -0
  124. package/dist/src/tools/ast-edit/context-optimizer.d.ts +29 -0
  125. package/dist/src/tools/ast-edit/context-optimizer.js +86 -0
  126. package/dist/src/tools/ast-edit/context-optimizer.js.map +1 -0
  127. package/dist/src/tools/ast-edit/cross-file-analyzer.d.ts +41 -0
  128. package/dist/src/tools/ast-edit/cross-file-analyzer.js +294 -0
  129. package/dist/src/tools/ast-edit/cross-file-analyzer.js.map +1 -0
  130. package/dist/src/tools/ast-edit/edit-calculator.d.ts +71 -0
  131. package/dist/src/tools/ast-edit/edit-calculator.js +249 -0
  132. package/dist/src/tools/ast-edit/edit-calculator.js.map +1 -0
  133. package/dist/src/tools/ast-edit/edit-helpers.d.ts +22 -0
  134. package/dist/src/tools/ast-edit/edit-helpers.js +36 -0
  135. package/dist/src/tools/ast-edit/edit-helpers.js.map +1 -0
  136. package/dist/src/tools/ast-edit/language-analysis.d.ts +19 -0
  137. package/dist/src/tools/ast-edit/language-analysis.js +123 -0
  138. package/dist/src/tools/ast-edit/language-analysis.js.map +1 -0
  139. package/dist/src/tools/ast-edit/local-context-analyzer.d.ts +84 -0
  140. package/dist/src/tools/ast-edit/local-context-analyzer.js +267 -0
  141. package/dist/src/tools/ast-edit/local-context-analyzer.js.map +1 -0
  142. package/dist/src/tools/ast-edit/repository-context-provider.d.ts +22 -0
  143. package/dist/src/tools/ast-edit/repository-context-provider.js +139 -0
  144. package/dist/src/tools/ast-edit/repository-context-provider.js.map +1 -0
  145. package/dist/src/tools/ast-edit/types.d.ts +155 -0
  146. package/dist/src/tools/ast-edit/types.js +7 -0
  147. package/dist/src/tools/ast-edit/types.js.map +1 -0
  148. package/dist/src/tools/ast-edit/workspace-context-provider.d.ts +22 -0
  149. package/dist/src/tools/ast-edit/workspace-context-provider.js +39 -0
  150. package/dist/src/tools/ast-edit/workspace-context-provider.js.map +1 -0
  151. package/dist/src/tools/ast-edit.d.ts +43 -0
  152. package/dist/src/tools/ast-edit.js +183 -0
  153. package/dist/src/tools/ast-edit.js.map +1 -0
  154. package/dist/src/tools/ast-grep.d.ts +22 -0
  155. package/dist/src/tools/ast-grep.js +291 -0
  156. package/dist/src/tools/ast-grep.js.map +1 -0
  157. package/dist/src/tools/check-async-tasks.d.ts +46 -0
  158. package/dist/src/tools/check-async-tasks.js +241 -0
  159. package/dist/src/tools/check-async-tasks.js.map +1 -0
  160. package/dist/src/tools/codesearch.d.ts +25 -0
  161. package/dist/src/tools/codesearch.js +153 -0
  162. package/dist/src/tools/codesearch.js.map +1 -0
  163. package/dist/src/tools/delete_line_range.d.ts +41 -0
  164. package/dist/src/tools/delete_line_range.js +238 -0
  165. package/dist/src/tools/delete_line_range.js.map +1 -0
  166. package/dist/src/tools/direct-web-fetch.d.ts +22 -0
  167. package/dist/src/tools/direct-web-fetch.js +215 -0
  168. package/dist/src/tools/direct-web-fetch.js.map +1 -0
  169. package/dist/src/tools/edit-utils.d.ts +53 -0
  170. package/dist/src/tools/edit-utils.js +250 -0
  171. package/dist/src/tools/edit-utils.js.map +1 -0
  172. package/dist/src/tools/edit.d.ts +70 -0
  173. package/dist/src/tools/edit.js +816 -0
  174. package/dist/src/tools/edit.js.map +1 -0
  175. package/dist/src/tools/exa-web-search.d.ts +27 -0
  176. package/dist/src/tools/exa-web-search.js +153 -0
  177. package/dist/src/tools/exa-web-search.js.map +1 -0
  178. package/dist/src/tools/glob.d.ts +55 -0
  179. package/dist/src/tools/glob.js +284 -0
  180. package/dist/src/tools/glob.js.map +1 -0
  181. package/dist/src/tools/google-web-fetch.d.ts +34 -0
  182. package/dist/src/tools/google-web-fetch.js +417 -0
  183. package/dist/src/tools/google-web-fetch.js.map +1 -0
  184. package/dist/src/tools/google-web-search-invocation.d.ts +53 -0
  185. package/dist/src/tools/google-web-search-invocation.js +180 -0
  186. package/dist/src/tools/google-web-search-invocation.js.map +1 -0
  187. package/dist/src/tools/google-web-search.d.ts +16 -0
  188. package/dist/src/tools/google-web-search.js +34 -0
  189. package/dist/src/tools/google-web-search.js.map +1 -0
  190. package/dist/src/tools/grep.d.ts +56 -0
  191. package/dist/src/tools/grep.js +883 -0
  192. package/dist/src/tools/grep.js.map +1 -0
  193. package/dist/src/tools/insert_at_line.d.ts +41 -0
  194. package/dist/src/tools/insert_at_line.js +287 -0
  195. package/dist/src/tools/insert_at_line.js.map +1 -0
  196. package/dist/src/tools/list-subagents.d.ts +31 -0
  197. package/dist/src/tools/list-subagents.js +122 -0
  198. package/dist/src/tools/list-subagents.js.map +1 -0
  199. package/dist/src/tools/ls.d.ts +71 -0
  200. package/dist/src/tools/ls.js +238 -0
  201. package/dist/src/tools/ls.js.map +1 -0
  202. package/dist/src/tools/memoryTool.d.ts +66 -0
  203. package/dist/src/tools/memoryTool.js +435 -0
  204. package/dist/src/tools/memoryTool.js.map +1 -0
  205. package/dist/src/tools/modifiable-tool.d.ts +37 -0
  206. package/dist/src/tools/modifiable-tool.js +120 -0
  207. package/dist/src/tools/modifiable-tool.js.map +1 -0
  208. package/dist/src/tools/read-file.d.ts +49 -0
  209. package/dist/src/tools/read-file.js +279 -0
  210. package/dist/src/tools/read-file.js.map +1 -0
  211. package/dist/src/tools/read-many-files.d.ts +60 -0
  212. package/dist/src/tools/read-many-files.js +529 -0
  213. package/dist/src/tools/read-many-files.js.map +1 -0
  214. package/dist/src/tools/read_line_range.d.ts +47 -0
  215. package/dist/src/tools/read_line_range.js +248 -0
  216. package/dist/src/tools/read_line_range.js.map +1 -0
  217. package/dist/src/tools/ripGrep.d.ts +41 -0
  218. package/dist/src/tools/ripGrep.js +395 -0
  219. package/dist/src/tools/ripGrep.js.map +1 -0
  220. package/dist/src/tools/shell.d.ts +60 -0
  221. package/dist/src/tools/shell.js +735 -0
  222. package/dist/src/tools/shell.js.map +1 -0
  223. package/dist/src/tools/structural-analysis.d.ts +27 -0
  224. package/dist/src/tools/structural-analysis.js +1089 -0
  225. package/dist/src/tools/structural-analysis.js.map +1 -0
  226. package/dist/src/tools/stubs.d.ts +10 -0
  227. package/dist/src/tools/stubs.js +6 -0
  228. package/dist/src/tools/stubs.js.map +1 -0
  229. package/dist/src/tools/task.d.ts +41 -0
  230. package/dist/src/tools/task.js +195 -0
  231. package/dist/src/tools/task.js.map +1 -0
  232. package/dist/src/tools/todo-events.d.ts +22 -0
  233. package/dist/src/tools/todo-events.js +24 -0
  234. package/dist/src/tools/todo-events.js.map +1 -0
  235. package/dist/src/tools/todo-pause.d.ts +29 -0
  236. package/dist/src/tools/todo-pause.js +172 -0
  237. package/dist/src/tools/todo-pause.js.map +1 -0
  238. package/dist/src/tools/todo-read.d.ts +18 -0
  239. package/dist/src/tools/todo-read.js +98 -0
  240. package/dist/src/tools/todo-read.js.map +1 -0
  241. package/dist/src/tools/todo-store.d.ts +35 -0
  242. package/dist/src/tools/todo-store.js +124 -0
  243. package/dist/src/tools/todo-store.js.map +1 -0
  244. package/dist/src/tools/todo-write.d.ts +29 -0
  245. package/dist/src/tools/todo-write.js +366 -0
  246. package/dist/src/tools/todo-write.js.map +1 -0
  247. package/dist/src/tools/tool-registry.d.ts +156 -0
  248. package/dist/src/tools/tool-registry.js +623 -0
  249. package/dist/src/tools/tool-registry.js.map +1 -0
  250. package/dist/src/tools/tools.d.ts +403 -0
  251. package/dist/src/tools/tools.js +519 -0
  252. package/dist/src/tools/tools.js.map +1 -0
  253. package/dist/src/tools/write-file.d.ts +45 -0
  254. package/dist/src/tools/write-file.js +320 -0
  255. package/dist/src/tools/write-file.js.map +1 -0
  256. package/dist/src/types/index.d.ts +17 -0
  257. package/dist/src/types/index.js +9 -0
  258. package/dist/src/types/index.js.map +1 -0
  259. package/dist/src/types/provider-content-types.d.ts +56 -0
  260. package/dist/src/types/provider-content-types.js +6 -0
  261. package/dist/src/types/provider-content-types.js.map +1 -0
  262. package/dist/src/types/todo-schemas.d.ts +263 -0
  263. package/dist/src/types/todo-schemas.js +32 -0
  264. package/dist/src/types/todo-schemas.js.map +1 -0
  265. package/dist/src/types/tool-confirmation-types.d.ts +34 -0
  266. package/dist/src/types/tool-confirmation-types.js +29 -0
  267. package/dist/src/types/tool-confirmation-types.js.map +1 -0
  268. package/dist/src/types/tool-context.d.ts +31 -0
  269. package/dist/src/types/tool-context.js +6 -0
  270. package/dist/src/types/tool-context.js.map +1 -0
  271. package/dist/src/types/tool-error.d.ts +69 -0
  272. package/dist/src/types/tool-error.js +94 -0
  273. package/dist/src/types/tool-error.js.map +1 -0
  274. package/dist/src/types/tool-names.d.ts +57 -0
  275. package/dist/src/types/tool-names.js +64 -0
  276. package/dist/src/types/tool-names.js.map +1 -0
  277. package/dist/src/utils/EmojiFilter.d.ts +134 -0
  278. package/dist/src/utils/EmojiFilter.js +370 -0
  279. package/dist/src/utils/EmojiFilter.js.map +1 -0
  280. package/dist/src/utils/ast-grep-utils.d.ts +42 -0
  281. package/dist/src/utils/ast-grep-utils.js +140 -0
  282. package/dist/src/utils/ast-grep-utils.js.map +1 -0
  283. package/dist/src/utils/debugLogger.d.ts +11 -0
  284. package/dist/src/utils/debugLogger.js +16 -0
  285. package/dist/src/utils/debugLogger.js.map +1 -0
  286. package/dist/src/utils/diffOptions.d.ts +14 -0
  287. package/dist/src/utils/diffOptions.js +46 -0
  288. package/dist/src/utils/diffOptions.js.map +1 -0
  289. package/dist/src/utils/editor.d.ts +39 -0
  290. package/dist/src/utils/editor.js +212 -0
  291. package/dist/src/utils/editor.js.map +1 -0
  292. package/dist/src/utils/ensure-dirs.d.ts +10 -0
  293. package/dist/src/utils/ensure-dirs.js +16 -0
  294. package/dist/src/utils/ensure-dirs.js.map +1 -0
  295. package/dist/src/utils/errors.d.ts +59 -0
  296. package/dist/src/utils/errors.js +178 -0
  297. package/dist/src/utils/errors.js.map +1 -0
  298. package/dist/src/utils/fetch.d.ts +11 -0
  299. package/dist/src/utils/fetch.js +74 -0
  300. package/dist/src/utils/fetch.js.map +1 -0
  301. package/dist/src/utils/fileUtils.d.ts +32 -0
  302. package/dist/src/utils/fileUtils.js +363 -0
  303. package/dist/src/utils/fileUtils.js.map +1 -0
  304. package/dist/src/utils/fuzzy-replacer.d.ts +61 -0
  305. package/dist/src/utils/fuzzy-replacer.js +492 -0
  306. package/dist/src/utils/fuzzy-replacer.js.map +1 -0
  307. package/dist/src/utils/gitLineChanges.d.ts +12 -0
  308. package/dist/src/utils/gitLineChanges.js +171 -0
  309. package/dist/src/utils/gitLineChanges.js.map +1 -0
  310. package/dist/src/utils/gitUtils.d.ts +6 -0
  311. package/dist/src/utils/gitUtils.js +31 -0
  312. package/dist/src/utils/gitUtils.js.map +1 -0
  313. package/dist/src/utils/lsp-diagnostics-helper.d.ts +27 -0
  314. package/dist/src/utils/lsp-diagnostics-helper.js +62 -0
  315. package/dist/src/utils/lsp-diagnostics-helper.js.map +1 -0
  316. package/dist/src/utils/mediaUtils.d.ts +38 -0
  317. package/dist/src/utils/mediaUtils.js +22 -0
  318. package/dist/src/utils/mediaUtils.js.map +1 -0
  319. package/dist/src/utils/pathValidation.d.ts +7 -0
  320. package/dist/src/utils/pathValidation.js +39 -0
  321. package/dist/src/utils/pathValidation.js.map +1 -0
  322. package/dist/src/utils/paths.d.ts +7 -0
  323. package/dist/src/utils/paths.js +158 -0
  324. package/dist/src/utils/paths.js.map +1 -0
  325. package/dist/src/utils/resolveTextSearchTarget.d.ts +17 -0
  326. package/dist/src/utils/resolveTextSearchTarget.js +45 -0
  327. package/dist/src/utils/resolveTextSearchTarget.js.map +1 -0
  328. package/dist/src/utils/retry.d.ts +17 -0
  329. package/dist/src/utils/retry.js +185 -0
  330. package/dist/src/utils/retry.js.map +1 -0
  331. package/dist/src/utils/ripgrepPathResolver.d.ts +23 -0
  332. package/dist/src/utils/ripgrepPathResolver.js +179 -0
  333. package/dist/src/utils/ripgrepPathResolver.js.map +1 -0
  334. package/dist/src/utils/safeJsonStringify.d.ts +9 -0
  335. package/dist/src/utils/safeJsonStringify.js +21 -0
  336. package/dist/src/utils/safeJsonStringify.js.map +1 -0
  337. package/dist/src/utils/schemaValidator.d.ts +13 -0
  338. package/dist/src/utils/schemaValidator.js +275 -0
  339. package/dist/src/utils/schemaValidator.js.map +1 -0
  340. package/dist/src/utils/terminalSerializer.d.ts +33 -0
  341. package/dist/src/utils/terminalSerializer.js +6 -0
  342. package/dist/src/utils/terminalSerializer.js.map +1 -0
  343. package/dist/src/utils/todoContextTracker.d.ts +12 -0
  344. package/dist/src/utils/todoContextTracker.js +28 -0
  345. package/dist/src/utils/todoContextTracker.js.map +1 -0
  346. package/dist/src/utils/todoFormatter.d.ts +24 -0
  347. package/dist/src/utils/todoFormatter.js +157 -0
  348. package/dist/src/utils/todoFormatter.js.map +1 -0
  349. package/dist/src/utils/todoReminderService.d.ts +22 -0
  350. package/dist/src/utils/todoReminderService.js +43 -0
  351. package/dist/src/utils/todoReminderService.js.map +1 -0
  352. package/dist/src/utils/tool-key-storage-facade.d.ts +32 -0
  353. package/dist/src/utils/tool-key-storage-facade.js +56 -0
  354. package/dist/src/utils/tool-key-storage-facade.js.map +1 -0
  355. package/dist/src/utils/tool-key-storage-types.d.ts +56 -0
  356. package/dist/src/utils/tool-key-storage-types.js +56 -0
  357. package/dist/src/utils/tool-key-storage-types.js.map +1 -0
  358. package/dist/src/utils/toolOutputLimiter.d.ts +29 -0
  359. package/dist/src/utils/toolOutputLimiter.js +107 -0
  360. package/dist/src/utils/toolOutputLimiter.js.map +1 -0
  361. package/dist/src/utils/unicodeUtils.d.ts +55 -0
  362. package/dist/src/utils/unicodeUtils.js +129 -0
  363. package/dist/src/utils/unicodeUtils.js.map +1 -0
  364. package/package.json +75 -0
@@ -0,0 +1,67 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Internal configuration for AST analysis tools.
8
+ * Contains constants and feature flags for context collection, performance optimization, and language support.
9
+ */
10
+ export declare class ASTConfig {
11
+ static readonly CONTEXT_DEPTH = 5;
12
+ static readonly MAX_SNIPPETS = 10;
13
+ static readonly ENABLE_AST_PARSING = true;
14
+ static readonly DEFAULT_DRY_RUN = true;
15
+ static readonly MAX_SNIPPET_CHARS = 1000;
16
+ static readonly CHUNK_SIZE = 500;
17
+ static readonly SNIPPET_TRUNCATE_LENGTH = 200;
18
+ /**
19
+ * Whether to build a full in-memory symbol index.
20
+ * [CCR] Reason: Disabled by default to prevent memory leaks and CLI crashes in large repos.
21
+ * Can be overridden via environment variable: LLXPRT_ENABLE_SYMBOL_INDEXING=true
22
+ */
23
+ static get ENABLE_SYMBOL_INDEXING(): boolean;
24
+ /**
25
+ * Maximum symbols to query across the workspace per file.
26
+ */
27
+ static readonly MAX_RELATED_SYMBOLS = 5;
28
+ /**
29
+ * Maximum results to return per symbol query.
30
+ */
31
+ static readonly MAX_RESULTS_PER_SYMBOL = 10;
32
+ /**
33
+ * Timeout for a single symbol relationship lookup.
34
+ */
35
+ static readonly FIND_RELATED_TIMEOUT_MS = 3000;
36
+ /**
37
+ * Minimum length for a symbol to be considered for cross-file lookup.
38
+ */
39
+ static readonly MIN_SYMBOL_LENGTH = 3;
40
+ /**
41
+ * Maximum workspace files to scan. Abort if exceeded to prevent OOM.
42
+ * [CCR] Reason: Safeguard against memory exhaustion in very large monorepos.
43
+ */
44
+ static readonly MAX_WORKSPACE_FILES = 10000;
45
+ /**
46
+ * Maximum display results for related symbols in output.
47
+ */
48
+ static readonly MAX_DISPLAY_RESULTS = 5;
49
+ static readonly SUPPORTED_LANGUAGES: {
50
+ ts: string;
51
+ js: string;
52
+ jsx: string;
53
+ tsx: string;
54
+ py: string;
55
+ rb: string;
56
+ go: string;
57
+ rs: string;
58
+ java: string;
59
+ cpp: string;
60
+ c: string;
61
+ html: string;
62
+ css: string;
63
+ json: string;
64
+ yaml: string;
65
+ yml: string;
66
+ };
67
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import process from 'node:process';
7
+ /**
8
+ * Internal configuration for AST analysis tools.
9
+ * Contains constants and feature flags for context collection, performance optimization, and language support.
10
+ */
11
+ export class ASTConfig {
12
+ static CONTEXT_DEPTH = 5;
13
+ static MAX_SNIPPETS = 10;
14
+ static ENABLE_AST_PARSING = true;
15
+ static DEFAULT_DRY_RUN = true;
16
+ static MAX_SNIPPET_CHARS = 1000; // Increased budget
17
+ static CHUNK_SIZE = 500;
18
+ static SNIPPET_TRUNCATE_LENGTH = 200;
19
+ // Section: Performance Optimization Constants
20
+ /**
21
+ * Whether to build a full in-memory symbol index.
22
+ * [CCR] Reason: Disabled by default to prevent memory leaks and CLI crashes in large repos.
23
+ * Can be overridden via environment variable: LLXPRT_ENABLE_SYMBOL_INDEXING=true
24
+ */
25
+ static get ENABLE_SYMBOL_INDEXING() {
26
+ return process.env.LLXPRT_ENABLE_SYMBOL_INDEXING === 'true';
27
+ }
28
+ /**
29
+ * Maximum symbols to query across the workspace per file.
30
+ */
31
+ static MAX_RELATED_SYMBOLS = 5;
32
+ /**
33
+ * Maximum results to return per symbol query.
34
+ */
35
+ static MAX_RESULTS_PER_SYMBOL = 10;
36
+ /**
37
+ * Timeout for a single symbol relationship lookup.
38
+ */
39
+ static FIND_RELATED_TIMEOUT_MS = 3000;
40
+ /**
41
+ * Minimum length for a symbol to be considered for cross-file lookup.
42
+ */
43
+ static MIN_SYMBOL_LENGTH = 3;
44
+ /**
45
+ * Maximum workspace files to scan. Abort if exceeded to prevent OOM.
46
+ * [CCR] Reason: Safeguard against memory exhaustion in very large monorepos.
47
+ */
48
+ static MAX_WORKSPACE_FILES = 10000;
49
+ /**
50
+ * Maximum display results for related symbols in output.
51
+ */
52
+ static MAX_DISPLAY_RESULTS = 5;
53
+ static SUPPORTED_LANGUAGES = {
54
+ ts: 'typescript',
55
+ js: 'javascript',
56
+ jsx: 'javascript',
57
+ tsx: 'typescript',
58
+ py: 'python',
59
+ rb: 'ruby',
60
+ go: 'go',
61
+ rs: 'rust',
62
+ java: 'java',
63
+ cpp: 'cpp',
64
+ c: 'c',
65
+ html: 'html',
66
+ css: 'css',
67
+ json: 'json',
68
+ yaml: 'yaml',
69
+ yml: 'yaml',
70
+ };
71
+ }
72
+ //# sourceMappingURL=ast-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-config.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/ast-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC;;;GAGG;AACH,MAAM,OAAO,SAAS;IACpB,MAAM,CAAU,aAAa,GAAG,CAAC,CAAC;IAClC,MAAM,CAAU,YAAY,GAAG,EAAE,CAAC;IAClC,MAAM,CAAU,kBAAkB,GAAG,IAAI,CAAC;IAC1C,MAAM,CAAU,eAAe,GAAG,IAAI,CAAC;IACvC,MAAM,CAAU,iBAAiB,GAAG,IAAI,CAAC,CAAC,mBAAmB;IAC7D,MAAM,CAAU,UAAU,GAAG,GAAG,CAAC;IACjC,MAAM,CAAU,uBAAuB,GAAG,GAAG,CAAC;IAE9C,8CAA8C;IAC9C;;;;OAIG;IACH,MAAM,KAAK,sBAAsB;QAC/B,OAAO,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,MAAM,CAAC;IAC9D,CAAC;IACD;;OAEG;IACH,MAAM,CAAU,mBAAmB,GAAG,CAAC,CAAC;IACxC;;OAEG;IACH,MAAM,CAAU,sBAAsB,GAAG,EAAE,CAAC;IAC5C;;OAEG;IACH,MAAM,CAAU,uBAAuB,GAAG,IAAI,CAAC;IAC/C;;OAEG;IACH,MAAM,CAAU,iBAAiB,GAAG,CAAC,CAAC;IACtC;;;OAGG;IACH,MAAM,CAAU,mBAAmB,GAAG,KAAK,CAAC;IAC5C;;OAEG;IACH,MAAM,CAAU,mBAAmB,GAAG,CAAC,CAAC;IAExC,MAAM,CAAU,mBAAmB,GAAG;QACpC,EAAE,EAAE,YAAY;QAChB,EAAE,EAAE,YAAY;QAChB,GAAG,EAAE,YAAY;QACjB,GAAG,EAAE,YAAY;QACjB,EAAE,EAAE,QAAQ;QACZ,EAAE,EAAE,MAAM;QACV,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,KAAK;QACV,CAAC,EAAE,GAAG;QACN,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,KAAK;QACV,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,MAAM;QACZ,GAAG,EAAE,MAAM;KACZ,CAAC"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ *
6
+ * AST Edit Tool Invocation - Handles execution of edit operations
7
+ */
8
+ import type { ToolCallConfirmationDetails, ToolInvocation, ToolLocation } from '../tools.js';
9
+ import { type ToolResult } from '../tools.js';
10
+ import type { IToolHost, ILspService } from '../../interfaces/index.js';
11
+ import type { AnsiOutput } from '../../utils/terminalSerializer.js';
12
+ import type { ASTEditToolParams } from './types.js';
13
+ import type { ASTContextCollector } from './context-collector.js';
14
+ import { type CalculatedEdit } from './edit-calculator.js';
15
+ export declare class ASTEditToolInvocation implements ToolInvocation<ASTEditToolParams, ToolResult> {
16
+ private readonly host;
17
+ params: ASTEditToolParams;
18
+ private readonly contextCollector;
19
+ private readonly lspService?;
20
+ constructor(host: IToolHost, params: ASTEditToolParams, contextCollector: ASTContextCollector, lspService?: ILspService | undefined);
21
+ toolLocations(): ToolLocation[];
22
+ shouldConfirmExecute(abortSignal: AbortSignal): Promise<ToolCallConfirmationDetails | false>;
23
+ getDescription(): string;
24
+ execute(signal: AbortSignal, _updateOutput?: (output: string | AnsiOutput) => void, _terminalColumns?: number, _terminalRows?: number, _setPidCallback?: (pid: number) => void): Promise<ToolResult>;
25
+ private executePreview;
26
+ private detectNewFile;
27
+ private checkFreshness;
28
+ private buildPreviewLlmContent;
29
+ private formatConnectedFilesContext;
30
+ private formatRelatedSymbols;
31
+ private executeApply;
32
+ private writeEditResult;
33
+ private appendLspDiagnostics;
34
+ private getEffectiveLspService;
35
+ private normalizeLegacyDiagnostic;
36
+ protected calculateEdit(params: ASTEditToolParams, abortSignal: AbortSignal): Promise<CalculatedEdit>;
37
+ private readFileContent;
38
+ private validateASTSyntax;
39
+ protected getFileLastModified(filePath: string): Promise<number | null>;
40
+ }
@@ -0,0 +1,410 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ *
6
+ * AST Edit Tool Invocation - Handles execution of edit operations
7
+ */
8
+ /* eslint-disable complexity, sonarjs/cognitive-complexity -- Phase 5: legacy core boundary retained while larger decomposition continues. */
9
+ import * as path from 'path';
10
+ import { promises as fsPromises } from 'fs';
11
+ import * as Diff from 'diff';
12
+ import { ToolConfirmationOutcome, } from '../tools.js';
13
+ import { ToolErrorType } from '../../types/tool-error.js';
14
+ import { makeRelative, shortenPath } from '../../utils/paths.js';
15
+ import { isNodeError } from '../../utils/errors.js';
16
+ import { DEFAULT_CREATE_PATCH_OPTIONS } from '../../utils/diffOptions.js';
17
+ import { collectLspDiagnosticsBlock } from '../../utils/lsp-diagnostics-helper.js';
18
+ import { ensureParentDirectoriesExist } from '../../utils/ensure-dirs.js';
19
+ import { ASTConfig } from './ast-config.js';
20
+ import { applyReplacement } from './edit-helpers.js';
21
+ import { calculateEdit, validateASTSyntax, getFileLastModified, } from './edit-calculator.js';
22
+ export class ASTEditToolInvocation {
23
+ host;
24
+ params;
25
+ contextCollector;
26
+ lspService;
27
+ constructor(host, params, contextCollector, lspService) {
28
+ this.host = host;
29
+ this.params = params;
30
+ this.contextCollector = contextCollector;
31
+ this.lspService = lspService;
32
+ }
33
+ toolLocations() {
34
+ return [{ path: this.params.file_path }];
35
+ }
36
+ async shouldConfirmExecute(abortSignal) {
37
+ // For preview mode, return false to let execute method handle it
38
+ if (this.params.force !== true) {
39
+ return false;
40
+ }
41
+ // For execution mode, check if confirmation is needed
42
+ const approvalMode = this.host.getApprovalMode();
43
+ if (approvalMode === 'auto' ||
44
+ approvalMode === 'autoEdit' ||
45
+ approvalMode === 'yolo') {
46
+ return false;
47
+ }
48
+ // Confirmation logic for execution mode
49
+ const editData = await this.calculateEdit(this.params, abortSignal);
50
+ if (editData.error) {
51
+ return false;
52
+ }
53
+ const fileName = path.basename(this.params.file_path);
54
+ const fileDiff = Diff.createPatch(fileName, editData.currentContent ?? '', editData.newContent, 'Current', 'Proposed', DEFAULT_CREATE_PATCH_OPTIONS);
55
+ const confirmationDetails = {
56
+ type: 'edit',
57
+ title: `Confirm Edit: ${shortenPath(makeRelative(this.params.file_path, this.host.getTargetDir()))}`,
58
+ fileName,
59
+ filePath: this.params.file_path,
60
+ fileDiff,
61
+ originalContent: editData.currentContent,
62
+ newContent: editData.newContent,
63
+ onConfirm: async (outcome) => {
64
+ if (outcome === ToolConfirmationOutcome.ProceedAlways) {
65
+ this.host.setApprovalMode('autoEdit');
66
+ }
67
+ },
68
+ metadata: {
69
+ astValidation: editData.astValidation,
70
+ fileFreshness: editData.fileFreshness,
71
+ },
72
+ };
73
+ return confirmationDetails;
74
+ }
75
+ getDescription() {
76
+ const relativePath = makeRelative(this.params.file_path, this.host.getTargetDir());
77
+ if (this.params.old_string === '') {
78
+ return `Create ${shortenPath(relativePath)}`;
79
+ }
80
+ const oldFirstLine = this.params.old_string.split('\n')[0];
81
+ const newFirstLine = this.params.new_string.split('\n')[0];
82
+ const oldStringSnippet = oldFirstLine.substring(0, 30) + (oldFirstLine.length > 30 ? '...' : '');
83
+ const newStringSnippet = newFirstLine.substring(0, 30) + (newFirstLine.length > 30 ? '...' : '');
84
+ if (this.params.old_string === this.params.new_string) {
85
+ return `No file changes to ${shortenPath(relativePath)}`;
86
+ }
87
+ const forceIndicator = this.params.force === true ? ' [EXECUTE] ' : ' [PREVIEW] ';
88
+ return `${forceIndicator}${shortenPath(relativePath)}: ${oldStringSnippet} => ${newStringSnippet}`;
89
+ }
90
+ async execute(signal, _updateOutput, _terminalColumns, _terminalRows, _setPidCallback) {
91
+ // Step 1: Preview mode (force: false or unset)
92
+ if (this.params.force !== true) {
93
+ return this.executePreview(signal);
94
+ }
95
+ // Step 2: Execution mode (force: true)
96
+ return this.executeApply(signal);
97
+ }
98
+ async executePreview(_signal) {
99
+ try {
100
+ const rawCurrentContent = await this.readFileContent();
101
+ const currentContent = rawCurrentContent.replace(/\r\n/g, '\n');
102
+ const currentMtime = await this.getFileLastModified(this.params.file_path);
103
+ const isNewFile = this.detectNewFile(rawCurrentContent, currentMtime);
104
+ const freshnessError = this.checkFreshness(currentMtime);
105
+ if (freshnessError)
106
+ return freshnessError;
107
+ const workspaceRoot = this.host.getTargetDir();
108
+ const enhancedContext = await this.contextCollector.collectEnhancedContext(this.params.file_path, currentContent, workspaceRoot);
109
+ const newContent = applyReplacement(currentContent, this.params.old_string, this.params.new_string, isNewFile);
110
+ const astValidation = this.validateASTSyntax(this.params.file_path, newContent);
111
+ const fileName = path.basename(this.params.file_path);
112
+ const fileDiff = Diff.createPatch(fileName, currentContent, newContent, 'Current', 'Proposed', DEFAULT_CREATE_PATCH_OPTIONS);
113
+ const editPreviewLlmContent = this.buildPreviewLlmContent(enhancedContext, astValidation, currentMtime, workspaceRoot);
114
+ const returnDisplay = {
115
+ fileDiff,
116
+ fileName,
117
+ originalContent: currentContent,
118
+ newContent,
119
+ metadata: { astValidation, currentMtime },
120
+ };
121
+ return {
122
+ llmContent: editPreviewLlmContent,
123
+ returnDisplay,
124
+ };
125
+ }
126
+ catch (error) {
127
+ const errorMsg = error instanceof Error ? error.message : String(error);
128
+ return {
129
+ llmContent: `Error preparing preview: ${errorMsg}`,
130
+ returnDisplay: `Error preparing preview: ${errorMsg}`,
131
+ error: {
132
+ message: errorMsg,
133
+ type: ToolErrorType.EDIT_PREPARATION_FAILURE,
134
+ },
135
+ };
136
+ }
137
+ }
138
+ detectNewFile(rawCurrentContent, mtime) {
139
+ if (this.params.old_string === '' && rawCurrentContent === '') {
140
+ return mtime === null;
141
+ }
142
+ return false;
143
+ }
144
+ checkFreshness(currentMtime) {
145
+ if (this.params.last_modified !== undefined &&
146
+ currentMtime !== null &&
147
+ currentMtime > this.params.last_modified) {
148
+ const errorMessage = `File ${this.params.file_path} mismatch. Expected mtime <= ${this.params.last_modified}, but found ${currentMtime}.`;
149
+ const displayMessage = `File has been modified since it was last read. Please read the file again to get the latest content.`;
150
+ const rawErrorMessage = JSON.stringify({
151
+ message: errorMessage,
152
+ current_mtime: currentMtime,
153
+ your_mtime: this.params.last_modified,
154
+ });
155
+ return {
156
+ llmContent: rawErrorMessage,
157
+ returnDisplay: `Error: ${displayMessage}`,
158
+ error: {
159
+ message: rawErrorMessage,
160
+ type: ToolErrorType.FILE_MODIFIED_CONFLICT,
161
+ },
162
+ };
163
+ }
164
+ return null;
165
+ }
166
+ buildPreviewLlmContent(enhancedContext, astValidation, currentMtime, workspaceRoot) {
167
+ return [
168
+ `LLXPRT EDIT PREVIEW: ${this.params.file_path}`,
169
+ `- Context: ${enhancedContext.language} file with ${enhancedContext.declarations.length} declarations`,
170
+ `- Functions: ${enhancedContext.languageContext.functions.length}`,
171
+ `- Classes: ${enhancedContext.languageContext.classes.length}`,
172
+ `- AST validation: ${astValidation.valid ? 'PASSED' : 'FAILED'}`,
173
+ `- Relevant snippets: ${enhancedContext.relevantSnippets.length} found`,
174
+ enhancedContext.repositoryContext
175
+ ? `- Repository: ${enhancedContext.repositoryContext.gitUrl}`
176
+ : '',
177
+ enhancedContext.relatedFiles
178
+ ? `- Related files: ${enhancedContext.relatedFiles.length}`
179
+ : '',
180
+ this.formatConnectedFilesContext(enhancedContext, workspaceRoot),
181
+ !astValidation.valid
182
+ ? `- AST errors: ${astValidation.errors.join(', ')}`
183
+ : '',
184
+ currentMtime !== null ? `- Timestamp: ${currentMtime}` : '',
185
+ '',
186
+ 'ENHANCED CONTEXT ANALYSIS:',
187
+ ...enhancedContext.declarations.map((decl) => `- ${decl.type}: ${decl.name} (line ${decl.line})`),
188
+ this.formatRelatedSymbols(enhancedContext),
189
+ '',
190
+ 'NEXT STEP: Call again with force: true to apply changes',
191
+ ]
192
+ .flat()
193
+ .filter(Boolean)
194
+ .join('\n');
195
+ }
196
+ formatConnectedFilesContext(enhancedContext, workspaceRoot) {
197
+ if (!enhancedContext.connectedFiles ||
198
+ enhancedContext.connectedFiles.length === 0) {
199
+ return [];
200
+ }
201
+ return [
202
+ '',
203
+ 'WORKING SET CONTEXT:',
204
+ ...enhancedContext.connectedFiles
205
+ .map((file) => {
206
+ const relPath = makeRelative(file.filePath, workspaceRoot);
207
+ if (file.declarations.length === 0)
208
+ return `- ${relPath} (No declarations)`;
209
+ return [
210
+ `- ${relPath}:`,
211
+ ...file.declarations.map((d) => ` - ${d.type}: ${d.name}${d.signature ?? ''}`),
212
+ ];
213
+ })
214
+ .flat(),
215
+ ];
216
+ }
217
+ formatRelatedSymbols(enhancedContext) {
218
+ if (!enhancedContext.relatedSymbols ||
219
+ enhancedContext.relatedSymbols.length === 0) {
220
+ return [];
221
+ }
222
+ return [
223
+ '',
224
+ 'RELATED SYMBOLS:',
225
+ ...enhancedContext.relatedSymbols
226
+ .slice(0, ASTConfig.MAX_DISPLAY_RESULTS)
227
+ .map((symbol) => `- ${symbol.type}: ${symbol.filePath}:${symbol.line}`),
228
+ ];
229
+ }
230
+ async executeApply(signal) {
231
+ let editData;
232
+ try {
233
+ editData = await this.calculateEdit(this.params, signal);
234
+ }
235
+ catch (error) {
236
+ const errorMsg = error instanceof Error ? error.message : String(error);
237
+ return {
238
+ llmContent: `Error preparing edit: ${errorMsg}`,
239
+ returnDisplay: `Error preparing edit: ${errorMsg}`,
240
+ error: {
241
+ message: errorMsg,
242
+ type: ToolErrorType.EDIT_PREPARATION_FAILURE,
243
+ },
244
+ };
245
+ }
246
+ if (editData.error) {
247
+ return {
248
+ llmContent: editData.error.raw,
249
+ returnDisplay: `Error: ${editData.error.display}`,
250
+ error: {
251
+ message: editData.error.raw,
252
+ type: editData.error.type,
253
+ },
254
+ };
255
+ }
256
+ return this.writeEditResult(editData);
257
+ }
258
+ async writeEditResult(editData) {
259
+ try {
260
+ await ensureParentDirectoriesExist(this.params.file_path);
261
+ await fsPromises.writeFile(this.params.file_path, editData.newContent, 'utf-8');
262
+ const fileName = path.basename(this.params.file_path);
263
+ const fileDiff = Diff.createPatch(fileName, editData.currentContent ?? '', editData.newContent, 'Current', 'Applied', DEFAULT_CREATE_PATCH_OPTIONS);
264
+ const displayResult = {
265
+ fileDiff,
266
+ fileName,
267
+ originalContent: editData.currentContent,
268
+ newContent: editData.newContent,
269
+ applied: true,
270
+ metadata: { astValidation: editData.astValidation },
271
+ };
272
+ const llmSuccessMessageParts = [
273
+ `Successfully applied edit to: ${this.params.file_path}`,
274
+ `- Changes: ${editData.occurrences} replacement(s) applied`,
275
+ `- AST validation: ${editData.astValidation?.valid === true ? 'PASSED' : 'FAILED'}`,
276
+ ];
277
+ await this.appendLspDiagnostics(llmSuccessMessageParts);
278
+ return {
279
+ llmContent: llmSuccessMessageParts.join('\n\n'),
280
+ returnDisplay: displayResult,
281
+ };
282
+ }
283
+ catch (error) {
284
+ const errorMsg = error instanceof Error ? error.message : String(error);
285
+ return {
286
+ llmContent: `Error executing edit: ${errorMsg}`,
287
+ returnDisplay: `Error writing file: ${errorMsg}`,
288
+ error: {
289
+ message: errorMsg,
290
+ type: ToolErrorType.FILE_WRITE_FAILURE,
291
+ },
292
+ };
293
+ }
294
+ }
295
+ // @plan PLAN-20250212-LSP.P31
296
+ // @requirement REQ-DIAG-010
297
+ async appendLspDiagnostics(llmParts) {
298
+ try {
299
+ const lspService = this.getEffectiveLspService();
300
+ if (!lspService) {
301
+ return;
302
+ }
303
+ const diagBlock = await collectLspDiagnosticsBlock(lspService, this.host, this.params.file_path);
304
+ if (diagBlock) {
305
+ llmParts.push(diagBlock);
306
+ }
307
+ }
308
+ catch {
309
+ // LSP failure must never fail the edit (REQ-GRACE-050, REQ-GRACE-055)
310
+ }
311
+ }
312
+ getEffectiveLspService() {
313
+ if (this.lspService) {
314
+ return this.lspService;
315
+ }
316
+ const legacyHost = this.host;
317
+ const client = legacyHost.getLspServiceClient?.();
318
+ if (!client || client.isAlive?.() === false) {
319
+ return undefined;
320
+ }
321
+ return {
322
+ getDiagnostics: (filePath) => {
323
+ const diagnostics = (client.getDiagnostics?.(filePath) ??
324
+ []);
325
+ return diagnostics.map((diagnostic) => {
326
+ const value = diagnostic;
327
+ return {
328
+ message: String(value.message ?? ''),
329
+ severity: typeof value.severity === 'number'
330
+ ? value.severity === 1
331
+ ? 'error'
332
+ : String(value.severity)
333
+ : String(value.severity ?? 'error'),
334
+ line: value.range?.start?.line !== undefined
335
+ ? value.range.start.line + 1
336
+ : undefined,
337
+ column: value.range?.start?.character !== undefined
338
+ ? value.range.start.character + 1
339
+ : undefined,
340
+ };
341
+ });
342
+ },
343
+ waitForDiagnostics: async (filePath, timeout) => {
344
+ const checker = client;
345
+ if (checker.checkFile) {
346
+ const controller = new AbortController();
347
+ const timeoutId = timeout
348
+ ? setTimeout(() => controller.abort(), timeout)
349
+ : undefined;
350
+ try {
351
+ return (await checker.checkFile(filePath, controller.signal)).map((diagnostic) => this.normalizeLegacyDiagnostic(diagnostic));
352
+ }
353
+ finally {
354
+ if (timeoutId)
355
+ clearTimeout(timeoutId);
356
+ }
357
+ }
358
+ return this.getEffectiveLspService().getDiagnostics(filePath);
359
+ },
360
+ getLspConfig: () => legacyHost.getLspConfig?.(),
361
+ };
362
+ }
363
+ normalizeLegacyDiagnostic(diagnostic) {
364
+ const value = diagnostic;
365
+ return {
366
+ message: String(value.message ?? ''),
367
+ severity: typeof value.severity === 'number'
368
+ ? value.severity === 1
369
+ ? 'error'
370
+ : String(value.severity)
371
+ : String(value.severity ?? 'error'),
372
+ line: value.line ??
373
+ (value.range?.start?.line !== undefined
374
+ ? value.range.start.line + 1
375
+ : undefined),
376
+ column: value.column ??
377
+ (value.range?.start?.character !== undefined
378
+ ? value.range.start.character + 1
379
+ : undefined),
380
+ code: typeof value.code === 'string' || typeof value.code === 'number'
381
+ ? value.code
382
+ : undefined,
383
+ source: value.source,
384
+ };
385
+ }
386
+ async calculateEdit(params, abortSignal) {
387
+ return calculateEdit(params, this.host, abortSignal);
388
+ }
389
+ async readFileContent() {
390
+ try {
391
+ const fileSystemService = this.host.getFileSystemService?.();
392
+ return fileSystemService?.readTextFile
393
+ ? await fileSystemService.readTextFile(this.params.file_path)
394
+ : await fsPromises.readFile(this.params.file_path, 'utf-8');
395
+ }
396
+ catch (error) {
397
+ if (isNodeError(error) && error.code === 'ENOENT') {
398
+ return '';
399
+ }
400
+ throw error;
401
+ }
402
+ }
403
+ validateASTSyntax(filePath, content) {
404
+ return validateASTSyntax(filePath, content);
405
+ }
406
+ async getFileLastModified(filePath) {
407
+ return getFileLastModified(filePath);
408
+ }
409
+ }
410
+ //# sourceMappingURL=ast-edit-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-edit-invocation.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/ast-edit-invocation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { EnhancedDeclaration } from './types.js';
7
+ /**
8
+ * ASTQueryExtractor handles AST parsing with @ast-grep/napi and declaration extraction.
9
+ */
10
+ export declare class ASTQueryExtractor {
11
+ constructor();
12
+ extractDeclarations(filePath: string, content: string): Promise<EnhancedDeclaration[]>;
13
+ private extractJsFamilyDeclarations;
14
+ private extractPythonDeclarations;
15
+ private buildSignature;
16
+ private buildPythonSignature;
17
+ private nodeToDeclaration;
18
+ private fallbackExtraction;
19
+ private extractNameBasic;
20
+ private extractSignatureBasic;
21
+ }