@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,623 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Kind, BaseTool, BaseToolInvocation, } from './tools.js';
7
+ import { spawn } from 'node:child_process';
8
+ import { StringDecoder } from 'node:string_decoder';
9
+ import { parse } from 'shell-quote';
10
+ import { ToolErrorType } from '../types/tool-error.js';
11
+ import { safeJsonStringify } from '../utils/safeJsonStringify.js';
12
+ import { debugLogger } from '../utils/debugLogger.js';
13
+ import { normalizeToolName } from '../formatters/toolNameUtils.js';
14
+ export const DISCOVERED_TOOL_PREFIX = 'discovered_tool_';
15
+ function isDiscoveredMcpTool(tool) {
16
+ return (typeof tool.serverName === 'string' &&
17
+ tool.serverName !== '');
18
+ }
19
+ export class DiscoveredTool extends BaseTool {
20
+ config;
21
+ description;
22
+ parameterSchema;
23
+ /**
24
+ * @plan PLAN-20260309-MESSAGEBUS-DI-REMEDIATION.P05
25
+ * @requirement REQ-D01-001.2
26
+ * @pseudocode lines 56-72
27
+ */
28
+ constructor(config, name, description, parameterSchema, messageBus) {
29
+ const discoveryCmd = config.getToolDiscoveryCommand?.() ?? '';
30
+ const callCommand = config.getToolCallCommand?.() ?? '';
31
+ description += `
32
+
33
+ This tool was discovered from the project by executing the command \`${discoveryCmd}\` on project root.
34
+ When called, this tool will execute the command \`${callCommand} ${name}\` on project root.
35
+ Tool discovery and call commands can be configured in project or user settings.
36
+
37
+ When called, the tool call command is executed as a subprocess.
38
+ On success, tool output is returned as a json string.
39
+ Otherwise, the following information is returned:
40
+
41
+ Stdout: Output on stdout stream. Can be \`(empty)\` or partial.
42
+ Stderr: Output on stderr stream. Can be \`(empty)\` or partial.
43
+ Error: Error or \`(none)\` if no error was reported for the subprocess.
44
+ Exit Code: Exit code or \`(none)\` if terminated by signal.
45
+ Signal: Signal number or \`(none)\` if no signal was received.
46
+ `;
47
+ super(name, name, description, Kind.Other, parameterSchema, false, // isOutputMarkdown
48
+ false, // canUpdateOutput
49
+ messageBus);
50
+ this.config = config;
51
+ this.description = description;
52
+ this.parameterSchema = parameterSchema;
53
+ }
54
+ /**
55
+ * @plan PLAN-20260309-MESSAGEBUS-DI-REMEDIATION.P05
56
+ * @requirement REQ-D01-001.2
57
+ * @pseudocode lines 56-72
58
+ */
59
+ build(params) {
60
+ return new DiscoveredToolInvocation(this, params, this.requireMessageBus());
61
+ }
62
+ async execute(params, signal, _updateOutput) {
63
+ const callCommand = this.config.getToolCallCommand?.() ?? '';
64
+ const child = spawn(callCommand, [this.name]);
65
+ child.stdin.write(JSON.stringify(params));
66
+ child.stdin.end();
67
+ const { stdout, stderr, error, code, exitSignal } = await this.runChildProcess(child, signal);
68
+ return this.buildChildProcessResult(stdout, stderr, error, code, exitSignal);
69
+ }
70
+ async runChildProcess(child, signal) {
71
+ let stdout = '';
72
+ let stderr = '';
73
+ let error = null;
74
+ let code = null;
75
+ let exitSignal = null;
76
+ const abortHandler = () => {
77
+ if (!child.killed) {
78
+ child.kill('SIGTERM');
79
+ }
80
+ };
81
+ signal.addEventListener('abort', abortHandler);
82
+ try {
83
+ await new Promise((resolve) => {
84
+ const onStdout = (data) => {
85
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
86
+ stdout += data?.toString();
87
+ };
88
+ const onStderr = (data) => {
89
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
90
+ stderr += data?.toString();
91
+ };
92
+ const onError = (err) => {
93
+ error = err;
94
+ };
95
+ const onClose = (_code, _signal) => {
96
+ code = _code;
97
+ exitSignal = _signal;
98
+ cleanup();
99
+ resolve();
100
+ };
101
+ const cleanup = () => {
102
+ child.stdout.removeListener('data', onStdout);
103
+ child.stderr.removeListener('data', onStderr);
104
+ child.removeListener('error', onError);
105
+ child.removeListener('close', onClose);
106
+ if (child.connected) {
107
+ child.disconnect();
108
+ }
109
+ };
110
+ child.stdout.on('data', onStdout);
111
+ child.stderr.on('data', onStderr);
112
+ child.on('error', onError);
113
+ child.on('close', onClose);
114
+ });
115
+ }
116
+ finally {
117
+ signal.removeEventListener('abort', abortHandler);
118
+ }
119
+ return { stdout, stderr, error, code, exitSignal };
120
+ }
121
+ buildChildProcessResult(stdout, stderr, error, code, exitSignal) {
122
+ /* eslint-disable @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types. */
123
+ if (error !== null ||
124
+ code !== 0 ||
125
+ exitSignal !== null ||
126
+ stderr.length > 0) {
127
+ /* eslint-enable @typescript-eslint/no-unnecessary-condition */
128
+ const llmContent = [
129
+ `Stdout: ${stdout.length > 0 ? stdout : '(empty)'}`,
130
+ `Stderr: ${stderr.length > 0 ? stderr : '(empty)'}`,
131
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
132
+ `Error: ${error ?? '(none)'}`,
133
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
134
+ `Exit Code: ${code ?? '(none)'}`,
135
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
136
+ `Signal: ${exitSignal ?? '(none)'}`,
137
+ ].join('\n');
138
+ return {
139
+ llmContent,
140
+ returnDisplay: llmContent,
141
+ error: {
142
+ message: llmContent,
143
+ type: ToolErrorType.DISCOVERED_TOOL_EXECUTION_ERROR,
144
+ },
145
+ };
146
+ }
147
+ return {
148
+ llmContent: stdout,
149
+ returnDisplay: stdout,
150
+ };
151
+ }
152
+ }
153
+ class DiscoveredToolInvocation extends BaseToolInvocation {
154
+ tool;
155
+ /**
156
+ * @plan PLAN-20260309-MESSAGEBUS-DI-REMEDIATION.P05
157
+ * @requirement REQ-D01-001.2
158
+ * @pseudocode lines 56-72
159
+ */
160
+ constructor(tool, params, messageBus) {
161
+ super(params, messageBus);
162
+ this.tool = tool;
163
+ }
164
+ getDescription() {
165
+ return safeJsonStringify(this.params);
166
+ }
167
+ async execute(signal, updateOutput) {
168
+ return this.tool.execute(this.params, signal, updateOutput);
169
+ }
170
+ }
171
+ export class ToolRegistry {
172
+ tools = new Map();
173
+ config;
174
+ logger = debugLogger;
175
+ discoveryLock = null;
176
+ messageBus;
177
+ /**
178
+ * @plan PLAN-20260309-MESSAGEBUS-DI-REMEDIATION.P11
179
+ * @requirement REQ-D01-002
180
+ * @requirement REQ-D01-003
181
+ * @pseudocode lines 122-133
182
+ */
183
+ constructor(config, messageBus) {
184
+ this.config = config;
185
+ this.messageBus = messageBus;
186
+ }
187
+ getToolGovernance() {
188
+ const rawEphemerals = typeof this.config.getEphemeralSettings === 'function'
189
+ ? this.config.getEphemeralSettings()
190
+ : undefined;
191
+ const ephemerals =
192
+ // eslint-disable-next-line sonarjs/expression-complexity -- Existing structure is intentionally preserved; refactoring this boundary is outside the lint slice.
193
+ rawEphemerals !== null &&
194
+ rawEphemerals !== undefined &&
195
+ rawEphemerals !== false &&
196
+ rawEphemerals !== 0 &&
197
+ rawEphemerals !== ''
198
+ ? rawEphemerals
199
+ : {};
200
+ const allowedRaw = Array.isArray(ephemerals['tools.allowed'])
201
+ ? ephemerals['tools.allowed']
202
+ : [];
203
+ const disabledRaw = Array.isArray(ephemerals['tools.disabled'])
204
+ ? ephemerals['tools.disabled']
205
+ : // eslint-disable-next-line sonarjs/no-nested-conditional -- Existing structure is intentionally preserved; refactoring this boundary is outside the lint slice.
206
+ Array.isArray(ephemerals['disabled-tools'])
207
+ ? ephemerals['disabled-tools']
208
+ : [];
209
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
210
+ const excludedRaw = this.config.getExcludeTools?.() ?? [];
211
+ return {
212
+ allowed: new Set(
213
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- intentional falsy coalescing: empty string normalized name should fall through to original name
214
+ allowedRaw.map((name) => normalizeToolName(name) || name)),
215
+ disabled: new Set(
216
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- intentional falsy coalescing: empty string normalized name should fall through to original name
217
+ disabledRaw.map((name) => normalizeToolName(name) || name)),
218
+ excluded: new Set(
219
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- intentional falsy coalescing: empty string normalized name should fall through to original name
220
+ excludedRaw.map((name) => normalizeToolName(name) || name)),
221
+ };
222
+ }
223
+ isToolActive(toolName, governance) {
224
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- intentional falsy coalescing: empty string normalized name should fall through to original name
225
+ const canonical = normalizeToolName(toolName) || toolName;
226
+ if (governance.excluded.has(canonical)) {
227
+ return false;
228
+ }
229
+ if (governance.disabled.has(canonical)) {
230
+ return false;
231
+ }
232
+ if (governance.allowed.size > 0 && !governance.allowed.has(canonical)) {
233
+ return false;
234
+ }
235
+ return true;
236
+ }
237
+ /**
238
+ * Registers a tool definition.
239
+ * @param tool - The tool object containing schema and execution logic.
240
+ */
241
+ registerTool(tool) {
242
+ this.registerToolIntoMap(tool, this.tools);
243
+ }
244
+ /**
245
+ * Unregisters a tool definition by name.
246
+ *
247
+ * @param name - The name of the tool to unregister.
248
+ */
249
+ unregisterTool(name) {
250
+ this.tools.delete(name);
251
+ }
252
+ /**
253
+ * Sorts tools as:
254
+ * 1. Built in tools.
255
+ * 2. Discovered tools.
256
+ * 3. MCP tools ordered by server name.
257
+ *
258
+ * This is a stable sort in that ties preserve existing order.
259
+ */
260
+ sortTools() {
261
+ const getPriority = (tool) => {
262
+ if (isDiscoveredMcpTool(tool))
263
+ return 2;
264
+ if (tool instanceof DiscoveredTool)
265
+ return 1;
266
+ return 0; // Built-in
267
+ };
268
+ this.tools = new Map(Array.from(this.tools.entries()).sort((a, b) => {
269
+ const toolA = a[1];
270
+ const toolB = b[1];
271
+ const priorityA = getPriority(toolA);
272
+ const priorityB = getPriority(toolB);
273
+ if (priorityA !== priorityB) {
274
+ return priorityA - priorityB;
275
+ }
276
+ if (priorityA === 2) {
277
+ const serverA = isDiscoveredMcpTool(toolA) ? toolA.serverName : '';
278
+ const serverB = isDiscoveredMcpTool(toolB) ? toolB.serverName : '';
279
+ return serverA.localeCompare(serverB);
280
+ }
281
+ return 0;
282
+ }));
283
+ }
284
+ /**
285
+ * Builds a new tool map with only non-discovered tools (core tools).
286
+ * This is used for atomic updates to avoid race conditions.
287
+ */
288
+ buildCoreToolsMap() {
289
+ const coreTools = new Map();
290
+ for (const [name, tool] of this.tools.entries()) {
291
+ if (!(tool instanceof DiscoveredTool || isDiscoveredMcpTool(tool))) {
292
+ coreTools.set(name, tool);
293
+ }
294
+ }
295
+ return coreTools;
296
+ }
297
+ /**
298
+ * Removes all tools from a specific MCP server.
299
+ * @param serverName The name of the server to remove tools from.
300
+ */
301
+ removeMcpToolsByServer(serverName) {
302
+ for (const [name, tool] of this.tools.entries()) {
303
+ if (isDiscoveredMcpTool(tool) && tool.serverName === serverName) {
304
+ this.tools.delete(name);
305
+ }
306
+ }
307
+ }
308
+ /**
309
+ * Discovers tools from project (if available and configured).
310
+ * Can be called multiple times to update discovered tools.
311
+ * This will ONLY discover tools from the command line, NOT from MCP servers.
312
+ * Uses truly atomic updates to prevent race conditions.
313
+ */
314
+ async discoverAllTools() {
315
+ await this.withDiscoveryLock(async () => {
316
+ const newTools = this.buildCoreToolsMap();
317
+ this.config.getPromptRegistry?.()?.clear();
318
+ await this.discoverAndRegisterToolsFromCommand(newTools);
319
+ this.tools = newTools;
320
+ });
321
+ }
322
+ async discoverAndRegisterToolsFromCommand(targetMap) {
323
+ const discoveryCmd = this.config.getToolDiscoveryCommand?.();
324
+ if (!discoveryCmd) {
325
+ return;
326
+ }
327
+ try {
328
+ const stdout = await this.runDiscoveryCommand(discoveryCmd);
329
+ const functions = this.parseDiscoveredFunctions(stdout);
330
+ this.registerDiscoveredFunctions(functions, targetMap);
331
+ }
332
+ catch (e) {
333
+ this.logger.error(() => `Tool discovery command "${discoveryCmd}" failed:`, { error: e });
334
+ throw e;
335
+ }
336
+ }
337
+ async runDiscoveryCommand(discoveryCmd) {
338
+ const cmdParts = parse(discoveryCmd);
339
+ if (cmdParts.length === 0) {
340
+ throw new Error('Tool discovery command is empty or contains only whitespace.');
341
+ }
342
+ const proc = spawn(cmdParts[0], cmdParts.slice(1));
343
+ let stdout = '';
344
+ const stdoutDecoder = new StringDecoder('utf8');
345
+ let stderr = '';
346
+ const stderrDecoder = new StringDecoder('utf8');
347
+ let sizeLimitExceeded = false;
348
+ const MAX_STDOUT_SIZE = 10 * 1024 * 1024; // 10MB limit
349
+ const MAX_STDERR_SIZE = 10 * 1024 * 1024; // 10MB limit
350
+ let stdoutByteLength = 0;
351
+ let stderrByteLength = 0;
352
+ proc.stdout.on('data', (data) => {
353
+ if (sizeLimitExceeded)
354
+ return;
355
+ if (stdoutByteLength + data.length > MAX_STDOUT_SIZE) {
356
+ sizeLimitExceeded = true;
357
+ proc.kill();
358
+ return;
359
+ }
360
+ stdoutByteLength += data.length;
361
+ stdout += stdoutDecoder.write(data);
362
+ });
363
+ proc.stderr.on('data', (data) => {
364
+ if (sizeLimitExceeded)
365
+ return;
366
+ if (stderrByteLength + data.length > MAX_STDERR_SIZE) {
367
+ sizeLimitExceeded = true;
368
+ proc.kill();
369
+ return;
370
+ }
371
+ stderrByteLength += data.length;
372
+ stderr += stderrDecoder.write(data);
373
+ });
374
+ await new Promise((resolve, reject) => {
375
+ proc.on('error', reject);
376
+ proc.on('close', (code) => {
377
+ stdout += stdoutDecoder.end();
378
+ stderr += stderrDecoder.end();
379
+ if (sizeLimitExceeded) {
380
+ reject(new Error(`Tool discovery command output exceeded size limit of ${MAX_STDOUT_SIZE} bytes.`));
381
+ return;
382
+ }
383
+ if (code !== 0) {
384
+ this.logger.error(() => `Command failed with code ${code}`);
385
+ this.logger.error(() => stderr);
386
+ reject(new Error(`Tool discovery command failed with exit code ${code}`));
387
+ return;
388
+ }
389
+ resolve();
390
+ });
391
+ });
392
+ return stdout;
393
+ }
394
+ parseDiscoveredFunctions(stdout) {
395
+ const functions = [];
396
+ const discoveredItems = JSON.parse(stdout.trim());
397
+ if (discoveredItems === null ||
398
+ discoveredItems === undefined ||
399
+ !Array.isArray(discoveredItems)) {
400
+ throw new Error('Tool discovery command did not return a JSON array of tools.');
401
+ }
402
+ for (const tool of discoveredItems) {
403
+ if (tool !== null && typeof tool === 'object') {
404
+ // eslint-disable-next-line sonarjs/nested-control-flow -- Existing structure is intentionally preserved; refactoring this boundary is outside the lint slice.
405
+ if (Array.isArray(tool['function_declarations'])) {
406
+ functions.push(...tool['function_declarations']);
407
+ }
408
+ else if (Array.isArray(tool['functionDeclarations'])) {
409
+ functions.push(...tool['functionDeclarations']);
410
+ }
411
+ else if (typeof tool['name'] === 'string' && tool['name'] !== '') {
412
+ functions.push(tool);
413
+ }
414
+ }
415
+ }
416
+ return functions;
417
+ }
418
+ registerDiscoveredFunctions(functions, targetMap) {
419
+ for (const func of functions) {
420
+ if (func.name === undefined || func.name === '') {
421
+ this.logger.warn(() => 'Discovered a tool with no name. Skipping.');
422
+ continue;
423
+ }
424
+ const parameters =
425
+ // eslint-disable-next-line sonarjs/expression-complexity -- Existing structure is intentionally preserved; refactoring this boundary is outside the lint slice.
426
+ func.parametersJsonSchema !== undefined &&
427
+ func.parametersJsonSchema !== null &&
428
+ typeof func.parametersJsonSchema === 'object' &&
429
+ !Array.isArray(func.parametersJsonSchema)
430
+ ? func.parametersJsonSchema
431
+ : {};
432
+ this.registerToolIntoMap(new DiscoveredTool(this.config, `discovered_tool_${func.name}`, func.description ?? '', parameters, this.messageBus), targetMap);
433
+ }
434
+ }
435
+ /**
436
+ * Gets schema transformation config based on current settings.
437
+ * Used to conditionally hide tool parameters that are disabled by settings.
438
+ */
439
+ getSchemaTransforms() {
440
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
441
+ const settingsService = this.config.getSettingsService?.();
442
+ // Global setting from /settings (subagents.asyncEnabled)
443
+ let globalAsyncEnabled = true;
444
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
445
+ if (settingsService !== undefined) {
446
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
447
+ const globalSettings = settingsService.getAllGlobalSettings?.();
448
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
449
+ const subagentsSettings = globalSettings?.['subagents'];
450
+ globalAsyncEnabled = subagentsSettings?.asyncEnabled !== false;
451
+ }
452
+ // Profile setting from /set (subagents.async.enabled)
453
+ const profileAsyncEnabled =
454
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- BN4-C-P01: preserve defensive runtime boundary guard despite current static types.
455
+ settingsService?.get?.('subagents.async.enabled') !== false;
456
+ return {
457
+ hideTaskAsync: globalAsyncEnabled !== true || profileAsyncEnabled !== true,
458
+ };
459
+ }
460
+ /**
461
+ * Applies schema transformations based on settings.
462
+ * Removes parameters that are disabled by user/profile settings.
463
+ */
464
+ applySchemaTransforms(schema, transforms) {
465
+ // Hide 'async' parameter from task tool when async subagents are disabled
466
+ if (schema.name === 'task' && transforms.hideTaskAsync) {
467
+ const newSchema = structuredClone(schema);
468
+ const jsonSchema = newSchema.parametersJsonSchema;
469
+ if (jsonSchema?.properties) {
470
+ delete jsonSchema.properties.async;
471
+ }
472
+ return newSchema;
473
+ }
474
+ return schema;
475
+ }
476
+ /**
477
+ * Retrieves the list of tool schemas (FunctionDeclaration array).
478
+ * Extracts the declarations from the ToolListUnion structure.
479
+ * Includes discovered (vs registered) tools if configured.
480
+ * Filters out disabled tools based on ephemeral settings.
481
+ * Applies schema transformations to hide disabled parameters.
482
+ * @returns An array of FunctionDeclarations.
483
+ */
484
+ getFunctionDeclarations() {
485
+ const governance = this.getToolGovernance();
486
+ const transforms = this.getSchemaTransforms();
487
+ const declarations = [];
488
+ this.tools.forEach((tool) => {
489
+ if (this.isToolActive(tool.name, governance)) {
490
+ declarations.push(this.applySchemaTransforms(tool.schema, transforms));
491
+ }
492
+ });
493
+ return declarations;
494
+ }
495
+ /**
496
+ * Retrieves a filtered list of tool schemas based on a list of tool names.
497
+ * Applies schema transformations to hide disabled parameters.
498
+ * @param toolNames - An array of tool names to include.
499
+ * @returns An array of FunctionDeclarations for the specified tools.
500
+ */
501
+ getFunctionDeclarationsFiltered(toolNames) {
502
+ const governance = this.getToolGovernance();
503
+ const transforms = this.getSchemaTransforms();
504
+ const declarations = [];
505
+ for (const name of toolNames) {
506
+ const tool = this.tools.get(name);
507
+ if (tool && this.isToolActive(tool.name, governance)) {
508
+ declarations.push(this.applySchemaTransforms(tool.schema, transforms));
509
+ }
510
+ }
511
+ return declarations;
512
+ }
513
+ /**
514
+ * Returns an array of all registered and discovered tool names.
515
+ */
516
+ getAllToolNames() {
517
+ return Array.from(this.tools.keys());
518
+ }
519
+ /**
520
+ * Returns an array of all registered and discovered tool instances.
521
+ */
522
+ getAllTools() {
523
+ const tools = Array.from(this.tools.values()).sort((a, b) => a.displayName.localeCompare(b.displayName));
524
+ return tools;
525
+ }
526
+ /**
527
+ * Returns an array of enabled tool instances (excludes disabled tools).
528
+ */
529
+ getEnabledTools() {
530
+ const governance = this.getToolGovernance();
531
+ return Array.from(this.tools.values())
532
+ .filter((tool) => this.isToolActive(tool.name, governance))
533
+ .sort((a, b) => a.displayName.localeCompare(b.displayName));
534
+ }
535
+ /**
536
+ * Returns an array of tools registered from a specific MCP server.
537
+ */
538
+ getToolsByServer(serverName) {
539
+ const serverTools = [];
540
+ for (const tool of this.tools.values()) {
541
+ if (isDiscoveredMcpTool(tool) && tool.serverName === serverName) {
542
+ serverTools.push(tool);
543
+ }
544
+ }
545
+ return serverTools.sort((a, b) => a.name.localeCompare(b.name));
546
+ }
547
+ /**
548
+ * Get the definition of a specific tool.
549
+ * @param name The name of the tool to retrieve
550
+ * @param context Optional context to inject into the tool instance
551
+ */
552
+ getTool(name, context) {
553
+ // Try original name first (most common case)
554
+ let tool = this.tools.get(name);
555
+ // If not found, try normalized name for fuzzy matching
556
+ if (!tool) {
557
+ const normalizedName = normalizeToolName(name);
558
+ if (normalizedName && normalizedName !== name) {
559
+ tool = this.tools.get(normalizedName);
560
+ }
561
+ }
562
+ // If still not found and the name includes '__', try fallback lookup by fully qualified name
563
+ if (!tool && name.includes('__')) {
564
+ for (const t of this.tools.values()) {
565
+ if (isDiscoveredMcpTool(t) &&
566
+ typeof t.getFullyQualifiedName === 'function' &&
567
+ t.getFullyQualifiedName() === name) {
568
+ tool = t;
569
+ break;
570
+ }
571
+ }
572
+ }
573
+ if (!tool) {
574
+ const missingTool = void 0;
575
+ return missingTool;
576
+ }
577
+ const governance = this.getToolGovernance();
578
+ if (!this.isToolActive(tool.name, governance)) {
579
+ const inactiveTool = void 0;
580
+ return inactiveTool;
581
+ }
582
+ // Inject context into tool instance
583
+ if (context && 'context' in tool) {
584
+ tool.context = context;
585
+ }
586
+ return tool;
587
+ }
588
+ /**
589
+ * @plan PLAN-20260309-MESSAGEBUS-DI-REMEDIATION.P05
590
+ * @requirement REQ-D01-001.2
591
+ * @pseudocode lines 56-72
592
+ */
593
+ registerToolIntoMap(tool, targetMap) {
594
+ // Normalize the tool name for consistent storage and lookup
595
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing -- intentional falsy coalescing: empty string tool name should fall through to original name
596
+ const normalizedName = normalizeToolName(tool.name) || tool.name;
597
+ if (targetMap.has(normalizedName) && !isDiscoveredMcpTool(tool)) {
598
+ // For non-MCP tools, log warning and overwrite
599
+ // For MCP tools, we assume they already have unique names from generateMcpToolName(serverName, toolName)
600
+ // so we simply overwrite (this should not happen in normal operation)
601
+ this.logger.warn(() => `Tool with name "${tool.name}" (normalized: "${normalizedName}") is already registered. Overwriting.`);
602
+ }
603
+ // Store the tool with the normalized name for consistent lookup
604
+ targetMap.set(normalizedName, tool);
605
+ }
606
+ async withDiscoveryLock(task) {
607
+ while (this.discoveryLock) {
608
+ await this.discoveryLock;
609
+ }
610
+ let release = () => { };
611
+ this.discoveryLock = new Promise((resolve) => {
612
+ release = () => resolve();
613
+ });
614
+ try {
615
+ return await task();
616
+ }
617
+ finally {
618
+ release();
619
+ this.discoveryLock = null;
620
+ }
621
+ }
622
+ }
623
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../src/tools/tool-registry.ts"],"names":[],"mappings":"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"}