@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,178 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { parse } from '@ast-grep/napi';
7
+ import { LANGUAGE_MAP, JAVASCRIPT_FAMILY_EXTENSIONS, } from '../../utils/ast-grep-utils.js';
8
+ import { KEYWORDS, COMMENT_PREFIXES } from './constants.js';
9
+ /**
10
+ * ASTQueryExtractor handles AST parsing with @ast-grep/napi and declaration extraction.
11
+ */
12
+ export class ASTQueryExtractor {
13
+ constructor() { }
14
+ async extractDeclarations(filePath, content) {
15
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- intentional falsy coalescing: file extension may be empty string, should fall through to empty
16
+ const extension = (filePath.split('.').pop() || '').toLowerCase();
17
+ const lang = LANGUAGE_MAP[extension];
18
+ if (!lang) {
19
+ return this.fallbackExtraction(content, 'unknown');
20
+ }
21
+ try {
22
+ const root = parse(lang, content);
23
+ const declarations = [];
24
+ const sgRoot = root.root();
25
+ if (JAVASCRIPT_FAMILY_EXTENSIONS.includes(extension)) {
26
+ this.extractJsFamilyDeclarations(sgRoot, declarations);
27
+ }
28
+ else if (extension === 'py') {
29
+ this.extractPythonDeclarations(sgRoot, declarations);
30
+ }
31
+ else {
32
+ return this.fallbackExtraction(content, extension);
33
+ }
34
+ return declarations;
35
+ }
36
+ catch {
37
+ return this.fallbackExtraction(content, extension);
38
+ }
39
+ }
40
+ extractJsFamilyDeclarations(sgRoot, declarations) {
41
+ // Functions
42
+ sgRoot.findAll({ rule: { kind: 'function_declaration' } }).forEach((n) => {
43
+ const nameNode = n.field('name');
44
+ const paramsNode = n.field('parameters');
45
+ const returnTypeNode = n.field('return_type');
46
+ if (nameNode != null) {
47
+ const signature = this.buildSignature(paramsNode, returnTypeNode);
48
+ declarations.push(this.nodeToDeclaration(n, nameNode.text(), 'function', signature));
49
+ }
50
+ });
51
+ // Methods
52
+ sgRoot.findAll({ rule: { kind: 'method_definition' } }).forEach((n) => {
53
+ const nameNode = n.field('name');
54
+ const paramsNode = n.field('parameters');
55
+ const returnTypeNode = n.field('return_type');
56
+ if (nameNode != null) {
57
+ const signature = this.buildSignature(paramsNode, returnTypeNode);
58
+ declarations.push(this.nodeToDeclaration(n, nameNode.text(), 'function', signature));
59
+ }
60
+ });
61
+ // Classes
62
+ sgRoot.findAll({ rule: { kind: 'class_declaration' } }).forEach((n) => {
63
+ const nameNode = n.field('name');
64
+ if (nameNode != null) {
65
+ declarations.push(this.nodeToDeclaration(n, nameNode.text(), 'class'));
66
+ }
67
+ });
68
+ // Variables
69
+ sgRoot.findAll({ rule: { kind: 'variable_declarator' } }).forEach((n) => {
70
+ const nameNode = n.field('name');
71
+ if (nameNode != null) {
72
+ declarations.push(this.nodeToDeclaration(n, nameNode.text(), 'variable'));
73
+ }
74
+ });
75
+ // Imports
76
+ sgRoot.findAll({ rule: { kind: 'import_statement' } }).forEach((n) => {
77
+ const sourceNode = n.field('source');
78
+ declarations.push(this.nodeToDeclaration(n, sourceNode != null ? sourceNode.text() : 'import', 'import'));
79
+ });
80
+ }
81
+ extractPythonDeclarations(sgRoot, declarations) {
82
+ sgRoot.findAll({ rule: { kind: 'function_definition' } }).forEach((n) => {
83
+ const nameNode = n.field('name');
84
+ const paramsNode = n.field('parameters');
85
+ const returnTypeNode = n.field('return_type');
86
+ if (nameNode != null) {
87
+ const signature = this.buildPythonSignature(paramsNode, returnTypeNode);
88
+ declarations.push(this.nodeToDeclaration(n, nameNode.text(), 'function', signature));
89
+ }
90
+ });
91
+ sgRoot.findAll({ rule: { kind: 'class_definition' } }).forEach((n) => {
92
+ const nameNode = n.field('name');
93
+ if (nameNode != null) {
94
+ declarations.push(this.nodeToDeclaration(n, nameNode.text(), 'class'));
95
+ }
96
+ });
97
+ }
98
+ buildSignature(paramsNode, returnTypeNode) {
99
+ let signature = paramsNode != null ? paramsNode.text() : '()';
100
+ if (returnTypeNode != null) {
101
+ signature += returnTypeNode.text();
102
+ }
103
+ return signature;
104
+ }
105
+ buildPythonSignature(paramsNode, returnTypeNode) {
106
+ let signature = paramsNode != null ? paramsNode.text() : '()';
107
+ if (returnTypeNode != null) {
108
+ signature += ` -> ${returnTypeNode.text()}`;
109
+ }
110
+ return signature;
111
+ }
112
+ nodeToDeclaration(n, name, type, signature) {
113
+ const range = n.range();
114
+ return {
115
+ name,
116
+ type,
117
+ line: range.start.line + 1,
118
+ column: range.start.column,
119
+ range: {
120
+ start: { line: range.start.line + 1, column: range.start.column },
121
+ end: { line: range.end.line + 1, column: range.end.column },
122
+ },
123
+ visibility: 'public',
124
+ signature,
125
+ };
126
+ }
127
+ fallbackExtraction(content, _language) {
128
+ // Keep the regex-based fallback for robustness
129
+ const declarations = [];
130
+ const lines = content.split('\n');
131
+ lines.forEach((line, index) => {
132
+ const trimmed = line.trim();
133
+ const isComment = COMMENT_PREFIXES.some((prefix) => trimmed.startsWith(prefix));
134
+ if (!trimmed || isComment)
135
+ return;
136
+ if (line.includes(KEYWORDS.FUNCTION) ||
137
+ line.includes(KEYWORDS.DEF) ||
138
+ line.includes(KEYWORDS.CLASS)) {
139
+ const name = this.extractNameBasic(trimmed);
140
+ const column = Math.max(0, line.indexOf(name));
141
+ declarations.push({
142
+ name,
143
+ type: trimmed.includes(KEYWORDS.CLASS) ? 'class' : 'function',
144
+ line: index + 1,
145
+ column,
146
+ signature: this.extractSignatureBasic(trimmed),
147
+ });
148
+ }
149
+ });
150
+ return declarations.map((decl) => ({
151
+ ...decl,
152
+ range: {
153
+ start: { line: decl.line, column: decl.column },
154
+ end: { line: decl.line, column: decl.column + decl.name.length },
155
+ },
156
+ visibility: 'public',
157
+ signature: decl.signature,
158
+ }));
159
+ }
160
+ extractNameBasic(line) {
161
+ // eslint-disable-next-line sonarjs/regular-expr -- Static regex reviewed for lint hardening; behavior preserved.
162
+ const match = line.match(/(?:function|def|class)\s+(\w+)/);
163
+ return match ? match[1] : 'unknown';
164
+ }
165
+ extractSignatureBasic(line) {
166
+ // Capture parameters: ( ... ). Use index scanning instead of a regex to
167
+ // avoid polynomial backtracking on lines with many unmatched parentheses.
168
+ const open = line.indexOf('(');
169
+ if (open !== -1) {
170
+ const close = line.indexOf(')', open + 1);
171
+ if (close !== -1) {
172
+ return `(${line.slice(open + 1, close)})`;
173
+ }
174
+ }
175
+ return '';
176
+ }
177
+ }
178
+ //# sourceMappingURL=ast-query-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-query-extractor.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/ast-query-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ *
6
+ * AST Read File Tool Invocation - Handles execution of file read operations with context
7
+ */
8
+ import { type ToolInvocation, type ToolLocation, type ToolResult } from '../tools.js';
9
+ import type { IToolHost } from '../../interfaces/index.js';
10
+ import type { AnsiOutput } from '../../utils/terminalSerializer.js';
11
+ import type { ASTReadFileToolParams } from './types.js';
12
+ import type { ASTContextCollector } from './context-collector.js';
13
+ export declare class ASTReadFileToolInvocation implements ToolInvocation<ASTReadFileToolParams, ToolResult> {
14
+ private readonly host;
15
+ params: ASTReadFileToolParams;
16
+ private readonly contextCollector;
17
+ constructor(host: IToolHost, params: ASTReadFileToolParams, contextCollector: ASTContextCollector);
18
+ toolLocations(): ToolLocation[];
19
+ getDescription(): string;
20
+ shouldConfirmExecute(): Promise<false>;
21
+ execute(_signal?: AbortSignal, _updateOutput?: (output: string | AnsiOutput) => void, _terminalColumns?: number, _terminalRows?: number, _setPidCallback?: (pid: number) => void): Promise<ToolResult>;
22
+ private computeLineRange;
23
+ private buildReadLlmContent;
24
+ private formatConnectedFilesContext;
25
+ private handleReadError;
26
+ }
@@ -0,0 +1,149 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ *
6
+ * AST Read File Tool Invocation - Handles execution of file read operations with context
7
+ */
8
+ import * as path from 'path';
9
+ import fs from 'fs';
10
+ import { ToolErrorType } from '../../types/tool-error.js';
11
+ import { makeRelative, shortenPath } from '../../utils/paths.js';
12
+ import { isNodeError } from '../../utils/errors.js';
13
+ import { countLines } from '../../utils/fileUtils.js';
14
+ import { ASTConfig } from './ast-config.js';
15
+ export class ASTReadFileToolInvocation {
16
+ host;
17
+ params;
18
+ contextCollector;
19
+ constructor(host, params, contextCollector) {
20
+ this.host = host;
21
+ this.params = params;
22
+ this.contextCollector = contextCollector;
23
+ }
24
+ toolLocations() {
25
+ return [{ path: this.params.file_path, line: this.params.offset }];
26
+ }
27
+ getDescription() {
28
+ const relativePath = makeRelative(this.params.file_path, this.host.getTargetDir());
29
+ return shortenPath(relativePath);
30
+ }
31
+ async shouldConfirmExecute() {
32
+ return false; // Read operations don't need confirmation
33
+ }
34
+ async execute(_signal, _updateOutput, _terminalColumns, _terminalRows, _setPidCallback) {
35
+ try {
36
+ const fileSystemService = this.host.getFileSystemService?.();
37
+ const content = fileSystemService?.readTextFile
38
+ ? await fileSystemService.readTextFile(this.params.file_path)
39
+ : await fs.promises.readFile(this.params.file_path, 'utf-8');
40
+ const { selectedContent, startLine, endLine, totalLineCount } = this.computeLineRange(content);
41
+ const workspaceRoot = this.host.getTargetDir();
42
+ const enhancedContext = await this.contextCollector.collectEnhancedContext(this.params.file_path, content, workspaceRoot);
43
+ const readLlmContent = this.buildReadLlmContent(enhancedContext, workspaceRoot, startLine, endLine, totalLineCount);
44
+ return {
45
+ llmContent: readLlmContent,
46
+ returnDisplay: {
47
+ content: selectedContent,
48
+ fileName: path.basename(this.params.file_path),
49
+ filePath: this.params.file_path,
50
+ metadata: {
51
+ language: enhancedContext.language,
52
+ declarationsCount: enhancedContext.declarations.length,
53
+ },
54
+ },
55
+ };
56
+ }
57
+ catch (error) {
58
+ return this.handleReadError(error);
59
+ }
60
+ }
61
+ computeLineRange(content) {
62
+ const lines = content.split('\n');
63
+ const totalLineCount = countLines(lines);
64
+ const startLine = Math.min(typeof this.params.offset === 'number' && this.params.offset > 0
65
+ ? Math.max(1, this.params.offset) - 1
66
+ : 0, totalLineCount);
67
+ const endLine = typeof this.params.limit === 'number' && this.params.limit > 0
68
+ ? Math.min(totalLineCount, startLine + this.params.limit)
69
+ : totalLineCount;
70
+ const selectedContent = lines.slice(startLine, endLine).join('\n');
71
+ return { selectedContent, startLine, endLine, totalLineCount };
72
+ }
73
+ buildReadLlmContent(enhancedContext, workspaceRoot, startLine, endLine, totalLineCount) {
74
+ return [
75
+ `LLXPRT READ: ${this.params.file_path}`,
76
+ `- Language: ${enhancedContext.language}`,
77
+ `- Lines ${Math.min(startLine + 1, totalLineCount)}-${endLine} of ${totalLineCount}`,
78
+ `- Declarations: ${enhancedContext.declarations.length}`,
79
+ '',
80
+ 'CONTEXT ANALYSIS:',
81
+ ...enhancedContext.declarations.map((decl) => `- ${decl.type}: ${decl.name}${decl.signature ?? ''} (line ${decl.line})`),
82
+ '',
83
+ 'RELEVANT SNIPPETS:',
84
+ ...enhancedContext.relevantSnippets
85
+ .slice(0, ASTConfig.MAX_DISPLAY_RESULTS)
86
+ .map((snippet) => `- Line ${snippet.line}: ${snippet.text.substring(0, 60)}...`),
87
+ this.formatConnectedFilesContext(enhancedContext, workspaceRoot),
88
+ ]
89
+ .flat()
90
+ .filter(Boolean)
91
+ .join('\n');
92
+ }
93
+ formatConnectedFilesContext(enhancedContext, workspaceRoot) {
94
+ if (!enhancedContext.connectedFiles ||
95
+ enhancedContext.connectedFiles.length === 0) {
96
+ return [];
97
+ }
98
+ return [
99
+ '',
100
+ 'WORKING SET CONTEXT:',
101
+ ...enhancedContext.connectedFiles
102
+ .map((file) => {
103
+ const relPath = makeRelative(file.filePath, workspaceRoot);
104
+ if (file.declarations.length === 0)
105
+ return `- ${relPath} (No declarations)`;
106
+ return [
107
+ `- ${relPath}:`,
108
+ ...file.declarations.map((d) => ` - ${d.type}: ${d.name}${d.signature ?? ''}`),
109
+ ];
110
+ })
111
+ .flat(),
112
+ ];
113
+ }
114
+ handleReadError(error) {
115
+ const errorMsg = error instanceof Error ? error.message : String(error);
116
+ let errorType = ToolErrorType.READ_CONTENT_FAILURE;
117
+ if (isNodeError(error)) {
118
+ switch (error.code) {
119
+ case 'ENOENT':
120
+ errorType = ToolErrorType.FILE_NOT_FOUND;
121
+ break;
122
+ case 'EACCES':
123
+ errorType = ToolErrorType.PERMISSION_DENIED;
124
+ break;
125
+ case 'EISDIR':
126
+ errorType = ToolErrorType.TARGET_IS_DIRECTORY;
127
+ break;
128
+ case 'EMFILE':
129
+ case 'ENFILE':
130
+ errorType = ToolErrorType.READ_CONTENT_FAILURE;
131
+ break;
132
+ default:
133
+ errorType = ToolErrorType.READ_CONTENT_FAILURE;
134
+ }
135
+ }
136
+ else {
137
+ errorType = ToolErrorType.UNKNOWN;
138
+ }
139
+ return {
140
+ llmContent: `Error reading file: ${errorMsg}`,
141
+ returnDisplay: `Error reading file: ${errorMsg}`,
142
+ error: {
143
+ message: errorMsg,
144
+ type: errorType,
145
+ },
146
+ };
147
+ }
148
+ }
149
+ //# sourceMappingURL=ast-read-file-invocation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast-read-file-invocation.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/ast-read-file-invocation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Code keywords used for pattern matching and analysis.
8
+ */
9
+ export declare const KEYWORDS: {
10
+ readonly FUNCTION: "function";
11
+ readonly DEF: "def";
12
+ readonly CLASS: "class";
13
+ readonly IF: "if";
14
+ readonly FOR: "for";
15
+ readonly WHILE: "while";
16
+ readonly RETURN: "return";
17
+ readonly IMPORT: "import ";
18
+ readonly FROM: "from ";
19
+ };
20
+ /**
21
+ * Comment prefixes for various languages.
22
+ */
23
+ export declare const COMMENT_PREFIXES: string[];
24
+ /**
25
+ * Regex patterns for code analysis.
26
+ */
27
+ export declare const REGEX: {
28
+ readonly IMPORT_MODULE: RegExp;
29
+ };
30
+ export { LANGUAGE_MAP, JAVASCRIPT_FAMILY_EXTENSIONS, } from '../../utils/ast-grep-utils.js';
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ // ===== Code Keywords =====
7
+ /**
8
+ * Code keywords used for pattern matching and analysis.
9
+ */
10
+ export const KEYWORDS = {
11
+ FUNCTION: 'function',
12
+ DEF: 'def',
13
+ CLASS: 'class',
14
+ IF: 'if',
15
+ FOR: 'for',
16
+ WHILE: 'while',
17
+ RETURN: 'return',
18
+ IMPORT: 'import ',
19
+ FROM: 'from ',
20
+ };
21
+ // ===== Comment Patterns =====
22
+ /**
23
+ * Comment prefixes for various languages.
24
+ */
25
+ export const COMMENT_PREFIXES = ['//', '#', '*', '/*', '*/'];
26
+ // ===== Regex Patterns =====
27
+ /**
28
+ * Regex patterns for code analysis.
29
+ */
30
+ export const REGEX = {
31
+ // eslint-disable-next-line sonarjs/regular-expr -- Static regex reviewed for lint hardening; behavior preserved.
32
+ IMPORT_MODULE: /(?:import|from)\s+['"]([^'"]+)['"]/,
33
+ };
34
+ // Re-export shared language mapping from utils
35
+ export { LANGUAGE_MAP, JAVASCRIPT_FAMILY_EXTENSIONS, } from '../../utils/ast-grep-utils.js';
36
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,4BAA4B;AAC5B;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE,UAAU;IACpB,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,EAAE,EAAE,IAAI;IACR,GAAG,EAAE,KAAK;IACV,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,OAAO;CACL,CAAC;AAEX,+BAA+B;AAC/B;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE7D,6BAA6B;AAC7B;;GAEG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,iHAAiH;IACjH,aAAa,EAAE,oCAAoC;CAC3C,CAAC;AAEX,+CAA+C;AAC/C,OAAO,EACL,YAAY,EACZ,4BAA4B,GAC7B,MAAM,+BAA+B,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ *
6
+ * Context collector orchestrates all AST context gathering operations.
7
+ */
8
+ import type { ASTContext, EnhancedASTContext, EnhancedDeclaration } from './types.js';
9
+ /**
10
+ * Prioritize important symbols from declarations for lazy cross-file lookups.
11
+ * [CCR] Reason: Prevents querying low-value symbols (like parameters or local vars) to preserve I/O.
12
+ * @internal Exported for testing only. Not part of public API.
13
+ */
14
+ export declare function prioritizeSymbolsFromDeclarations(declarations: EnhancedDeclaration[]): string[];
15
+ /**
16
+ * Orchestrates all AST context gathering: local analysis, working set, and cross-file relationships.
17
+ */
18
+ export declare class ASTContextCollector {
19
+ private astExtractor;
20
+ private repoProvider;
21
+ private relationshipAnalyzer;
22
+ constructor();
23
+ collectContext(filePath: string, content: string): Promise<ASTContext>;
24
+ collectEnhancedContext(targetFilePath: string, content: string, workspaceRoot: string): Promise<EnhancedASTContext>;
25
+ }
@@ -0,0 +1,115 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ *
6
+ * Context collector orchestrates all AST context gathering operations.
7
+ */
8
+ import { debugLogger } from '../../utils/debugLogger.js';
9
+ import { ASTConfig } from './ast-config.js';
10
+ import { detectLanguage, extractImports } from './language-analysis.js';
11
+ import { ASTQueryExtractor } from './ast-query-extractor.js';
12
+ import { RepositoryContextProvider } from './repository-context-provider.js';
13
+ import { CrossFileRelationshipAnalyzer, getWorkspaceFiles, } from './cross-file-analyzer.js';
14
+ import { parseAST, collectSnippets, buildLanguageContext, optimizeContextCollection, } from './local-context-analyzer.js';
15
+ import { enrichWithWorkingSetContext } from './workspace-context-provider.js';
16
+ const logger = debugLogger;
17
+ /**
18
+ * Prioritize important symbols from declarations for lazy cross-file lookups.
19
+ * [CCR] Reason: Prevents querying low-value symbols (like parameters or local vars) to preserve I/O.
20
+ * @internal Exported for testing only. Not part of public API.
21
+ */
22
+ export function prioritizeSymbolsFromDeclarations(declarations) {
23
+ const scores = new Map();
24
+ // eslint-disable-next-line sonarjs/too-many-break-or-continue-in-loop -- Existing structure is intentionally preserved; refactoring this boundary is outside the lint slice.
25
+ for (const decl of declarations) {
26
+ if (decl.name.length < ASTConfig.MIN_SYMBOL_LENGTH)
27
+ continue;
28
+ let score = 0;
29
+ if (decl.type === 'class')
30
+ score += 10;
31
+ if (decl.type === 'function')
32
+ score += 5;
33
+ if (score === 0)
34
+ continue;
35
+ if (decl.visibility === 'public')
36
+ score += 3;
37
+ scores.set(decl.name, (scores.get(decl.name) ?? 0) + score);
38
+ }
39
+ return Array.from(scores.entries())
40
+ .sort((a, b) => b[1] - a[1])
41
+ .map(([name]) => name)
42
+ .slice(0, ASTConfig.MAX_RELATED_SYMBOLS);
43
+ }
44
+ /**
45
+ * Orchestrates all AST context gathering: local analysis, working set, and cross-file relationships.
46
+ */
47
+ export class ASTContextCollector {
48
+ astExtractor;
49
+ repoProvider;
50
+ relationshipAnalyzer;
51
+ constructor() {
52
+ this.astExtractor = new ASTQueryExtractor();
53
+ this.repoProvider = new RepositoryContextProvider();
54
+ this.relationshipAnalyzer = new CrossFileRelationshipAnalyzer();
55
+ }
56
+ async collectContext(filePath, content) {
57
+ const language = detectLanguage(filePath);
58
+ return {
59
+ filePath,
60
+ language,
61
+ fileSize: content.length,
62
+ astNodes: await parseAST(content, language),
63
+ declarations: await this.astExtractor.extractDeclarations(filePath, content),
64
+ imports: extractImports(content, language),
65
+ relevantSnippets: collectSnippets(content),
66
+ languageContext: buildLanguageContext(content, language),
67
+ };
68
+ }
69
+ async collectEnhancedContext(targetFilePath, content, workspaceRoot) {
70
+ const startTime = Date.now();
71
+ const startMemory = process.memoryUsage().heapUsed;
72
+ // Base context
73
+ const baseContext = await this.collectContext(targetFilePath, content);
74
+ const enhancedContext = {
75
+ ...baseContext,
76
+ declarations: baseContext.declarations,
77
+ connectedFiles: [],
78
+ };
79
+ // Context optimization
80
+ enhancedContext.relevantSnippets = optimizeContextCollection(enhancedContext.declarations, content, workspaceRoot);
81
+ // Phase 2: Working Set Context (Git-based)
82
+ const connectedFiles = await enrichWithWorkingSetContext(targetFilePath, workspaceRoot, this.repoProvider, this.astExtractor);
83
+ enhancedContext.connectedFiles = connectedFiles;
84
+ // Phase 3: Repository context and Cross-file Relationships
85
+ const repoContext = await this.repoProvider.collectRepositoryContext(workspaceRoot);
86
+ enhancedContext.repositoryContext = repoContext ?? undefined;
87
+ // [CCR] Relation: Cross-file relationship analysis segment.
88
+ // Reason: Optimized to use on-demand findInFiles instead of eager indexing.
89
+ if (repoContext) {
90
+ if (ASTConfig.ENABLE_SYMBOL_INDEXING) {
91
+ const workspaceFiles = await getWorkspaceFiles(workspaceRoot);
92
+ await this.relationshipAnalyzer.buildSymbolIndex(workspaceFiles);
93
+ const relatedFiles = await this.relationshipAnalyzer.findRelatedFiles(targetFilePath);
94
+ enhancedContext.relatedFiles = relatedFiles;
95
+ }
96
+ // Prioritize symbols for Lazy search
97
+ const topSymbols = prioritizeSymbolsFromDeclarations(enhancedContext.declarations);
98
+ // Execute atomic queries with strict limits and Survivability (Promise.allSettled)
99
+ const relatedSymbolsTasks = topSymbols.map((symbol) => this.relationshipAnalyzer.findRelatedSymbols(symbol, workspaceRoot));
100
+ const relatedSymbolsResults = await Promise.allSettled(relatedSymbolsTasks);
101
+ enhancedContext.relatedSymbols = relatedSymbolsResults
102
+ .filter((r) => r.status === 'fulfilled')
103
+ .map((r) => r.value)
104
+ .flat();
105
+ }
106
+ const duration = Date.now() - startTime;
107
+ const memoryDelta = (process.memoryUsage().heapUsed - startMemory) / 1024 / 1024;
108
+ const symbolCount = enhancedContext.relatedSymbols !== undefined
109
+ ? enhancedContext.relatedSymbols.length
110
+ : 0;
111
+ logger.debug(`collectEnhancedContext Metrics: ${duration}ms, Delta: ${memoryDelta.toFixed(2)}MB, Symbols: ${symbolCount}`);
112
+ return enhancedContext;
113
+ }
114
+ }
115
+ //# sourceMappingURL=context-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-collector.js","sourceRoot":"","sources":["../../../../src/tools/ast-edit/context-collector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Vybestack LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ *
6
+ * Context optimizer for snippet deduplication and context size management.
7
+ */
8
+ import type { CodeSnippet } from './types.js';
9
+ /**
10
+ * Handles optimization of code context including snippet management and prompt clipping.
11
+ */
12
+ export declare class ContextOptimizer {
13
+ /**
14
+ * Clip prompt to fit max length limit (corresponds to AST clip_prompt)
15
+ */
16
+ static clipPrompt(prompt: string, maxLength: number): string;
17
+ /**
18
+ * Check UTF-16 character boundary
19
+ */
20
+ private static isCharBoundary;
21
+ /**
22
+ * Manage snippets by priority and budget (corresponds to AST snippet collection)
23
+ */
24
+ static optimizeSnippets(snippets: CodeSnippet[], maxChars?: number): CodeSnippet[];
25
+ /**
26
+ * Truncate overly long snippets
27
+ */
28
+ static truncateSnippet(snippet: CodeSnippet): CodeSnippet;
29
+ }