@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,379 @@
1
+ /**
2
+ * @plan:PLAN-20260608-ISSUE1585.P05
3
+ * @requirement:REQ-API-001, REQ-TEMPORARY-INTERFACES
4
+ */
5
+ import { processToolParameters as doubleEscapeProcessToolParameters, logDoubleEscapingInChunk, } from './doubleEscapeUtils.js';
6
+ /** Set of values considered missing/falsy in legacy schema checks. */
7
+ const MISSING_SCHEMA_VALUES = new Set([false, 0, '', undefined, null]);
8
+ function isMissingGeminiSchema(value) {
9
+ return MISSING_SCHEMA_VALUES.has(value);
10
+ }
11
+ function isMissingToolCallSlot(slot) {
12
+ return MISSING_SCHEMA_VALUES.has(slot);
13
+ }
14
+ function isNonEmptyString(value) {
15
+ return typeof value === 'string' && value !== '';
16
+ }
17
+ function isValidObject(value) {
18
+ return value !== undefined && value !== null && typeof value === 'object';
19
+ }
20
+ function isRequiredMissing(requiredValue) {
21
+ if (Array.isArray(requiredValue)) {
22
+ return requiredValue.length === 0;
23
+ }
24
+ return MISSING_SCHEMA_VALUES.has(requiredValue);
25
+ }
26
+ /**
27
+ * Converts Gemini-format tool declarations to various provider formats.
28
+ *
29
+ * This implementation is self-contained with no core logger dependency.
30
+ * Logging is replaced with silent operation.
31
+ */
32
+ export class ToolFormatter {
33
+ /**
34
+ * Convert Gemini format tools directly to OpenAI format.
35
+ */
36
+ convertGeminiToOpenAI(geminiTools) {
37
+ if (!geminiTools) {
38
+ return undefined;
39
+ }
40
+ const openAITools = geminiTools.flatMap((toolGroup) => {
41
+ if (!Array.isArray(toolGroup.functionDeclarations)) {
42
+ return [];
43
+ }
44
+ return toolGroup.functionDeclarations.map((decl) => {
45
+ const schema = decl.parametersJsonSchema;
46
+ if (isMissingGeminiSchema(schema)) {
47
+ throw new Error(`Tool "${decl.name}" is missing parametersJsonSchema — legacy schema fallback has been removed. ` +
48
+ `Ensure all tool declarations provide parametersJsonSchema at construction time.`);
49
+ }
50
+ const convertedParams = this.convertGeminiSchemaToStandard(schema);
51
+ return {
52
+ type: 'function',
53
+ function: {
54
+ name: decl.name,
55
+ description: decl.description ?? '',
56
+ parameters: convertedParams,
57
+ },
58
+ };
59
+ });
60
+ });
61
+ return openAITools;
62
+ }
63
+ /**
64
+ * Convert Gemini format tools directly to Anthropic format.
65
+ */
66
+ convertGeminiToAnthropic(geminiTools) {
67
+ if (!geminiTools)
68
+ return undefined;
69
+ const anthropicTools = geminiTools.flatMap((toolGroup) => toolGroup.functionDeclarations.map((decl) => {
70
+ const schema = decl.parametersJsonSchema;
71
+ if (isMissingGeminiSchema(schema)) {
72
+ throw new Error(`Tool "${decl.name}" is missing parametersJsonSchema — legacy schema fallback has been removed. ` +
73
+ `Ensure all tool declarations provide parametersJsonSchema at construction time.`);
74
+ }
75
+ const convertedParams = this.convertGeminiSchemaToStandard(schema);
76
+ return {
77
+ name: decl.name,
78
+ description: decl.description ?? '',
79
+ input_schema: {
80
+ type: 'object',
81
+ ...convertedParams,
82
+ },
83
+ };
84
+ }));
85
+ return anthropicTools;
86
+ }
87
+ /**
88
+ * Convert Gemini format tools to the specified provider format.
89
+ */
90
+ convertGeminiToFormat(geminiTools, format = 'openai') {
91
+ if (!geminiTools) {
92
+ return undefined;
93
+ }
94
+ if (format === 'openai' ||
95
+ format === 'qwen' ||
96
+ format === 'deepseek' ||
97
+ format === 'kimi') {
98
+ return this.convertGeminiToOpenAI(geminiTools);
99
+ }
100
+ if (format === 'anthropic') {
101
+ return this.convertGeminiToAnthropic(geminiTools);
102
+ }
103
+ // For other formats, convert to generic then use toProviderFormat
104
+ const itools = geminiTools.flatMap((toolGroup) => {
105
+ if (!Array.isArray(toolGroup.functionDeclarations)) {
106
+ return [];
107
+ }
108
+ return toolGroup.functionDeclarations.map((decl) => {
109
+ const schema = decl.parametersJsonSchema;
110
+ if (isMissingGeminiSchema(schema)) {
111
+ throw new Error(`Tool "${decl.name}" is missing parametersJsonSchema — legacy schema fallback has been removed. ` +
112
+ `Ensure all tool declarations provide parametersJsonSchema at construction time.`);
113
+ }
114
+ return {
115
+ type: 'function',
116
+ function: {
117
+ name: decl.name,
118
+ description: decl.description ?? '',
119
+ parameters: schema,
120
+ },
121
+ };
122
+ });
123
+ });
124
+ return this.toProviderFormat(itools, format);
125
+ }
126
+ /**
127
+ * Converts Gemini schema format to standard JSON Schema format.
128
+ */
129
+ convertGeminiSchemaToStandard(schema) {
130
+ if (schema === null || schema === undefined || typeof schema !== 'object') {
131
+ return schema;
132
+ }
133
+ const newSchema = { ...schema };
134
+ this.convertSchemaProperties(newSchema);
135
+ this.convertSchemaItems(newSchema);
136
+ this.normalizeSchemaType(newSchema);
137
+ this.ensureRequiredForObjects(newSchema);
138
+ this.normalizeEnumValues(newSchema);
139
+ this.convertStringLengthConstraints(newSchema);
140
+ return newSchema;
141
+ }
142
+ convertSchemaProperties(newSchema) {
143
+ if (isValidObject(newSchema.properties)) {
144
+ const newProperties = {};
145
+ for (const [key, value] of Object.entries(newSchema.properties)) {
146
+ newProperties[key] = this.convertGeminiSchemaToStandard(value);
147
+ }
148
+ newSchema.properties = newProperties;
149
+ }
150
+ }
151
+ convertSchemaItems(newSchema) {
152
+ if (newSchema.items !== undefined && newSchema.items !== null) {
153
+ if (Array.isArray(newSchema.items)) {
154
+ newSchema.items = newSchema.items.map((item) => this.convertGeminiSchemaToStandard(item));
155
+ }
156
+ else {
157
+ newSchema.items = this.convertGeminiSchemaToStandard(newSchema.items);
158
+ }
159
+ }
160
+ }
161
+ normalizeSchemaType(newSchema) {
162
+ const typeValue = newSchema.type;
163
+ if (!isMissingGeminiSchema(typeValue) && typeValue !== '') {
164
+ newSchema.type = String(newSchema.type).toLowerCase();
165
+ }
166
+ }
167
+ ensureRequiredForObjects(newSchema) {
168
+ if (newSchema.type === 'object' && isRequiredMissing(newSchema.required)) {
169
+ newSchema.required = [];
170
+ }
171
+ }
172
+ normalizeEnumValues(newSchema) {
173
+ if (Array.isArray(newSchema.enum)) {
174
+ newSchema.enum = newSchema.enum.map((v) => String(v));
175
+ }
176
+ }
177
+ convertStringLengthConstraints(newSchema) {
178
+ if (isNonEmptyString(newSchema.minLength)) {
179
+ const minLengthNum = parseInt(newSchema.minLength, 10);
180
+ if (!isNaN(minLengthNum)) {
181
+ newSchema.minLength = minLengthNum;
182
+ }
183
+ else {
184
+ delete newSchema.minLength;
185
+ }
186
+ }
187
+ if (isNonEmptyString(newSchema.maxLength)) {
188
+ const maxLengthNum = parseInt(newSchema.maxLength, 10);
189
+ if (!isNaN(maxLengthNum)) {
190
+ newSchema.maxLength = maxLengthNum;
191
+ }
192
+ else {
193
+ delete newSchema.maxLength;
194
+ }
195
+ }
196
+ }
197
+ toProviderFormat(tools, format) {
198
+ switch (format) {
199
+ case 'openai':
200
+ case 'deepseek':
201
+ case 'qwen':
202
+ case 'kimi':
203
+ return tools.map((tool) => {
204
+ const convertedParams = this.convertGeminiSchemaToStandard(tool.function.parameters);
205
+ return {
206
+ type: 'function',
207
+ function: {
208
+ name: tool.function.name,
209
+ description: tool.function.description,
210
+ parameters: convertedParams,
211
+ },
212
+ };
213
+ });
214
+ case 'anthropic':
215
+ return tools.map((tool) => ({
216
+ name: tool.function.name,
217
+ description: tool.function.description ?? '',
218
+ input_schema: {
219
+ type: 'object',
220
+ ...tool.function.parameters,
221
+ },
222
+ }));
223
+ case 'hermes':
224
+ case 'xml':
225
+ return tools.map((tool) => ({
226
+ name: tool.function.name,
227
+ description: tool.function.description ?? '',
228
+ parameters: tool.function.parameters,
229
+ }));
230
+ case 'gemma':
231
+ return tools.map((tool) => ({
232
+ type: 'function',
233
+ function: {
234
+ name: tool.function.name,
235
+ description: tool.function.description,
236
+ parameters: this.convertGeminiSchemaToStandard(tool.function.parameters),
237
+ },
238
+ }));
239
+ default:
240
+ throw new Error(`Tool format '${format}' not yet implemented`);
241
+ }
242
+ }
243
+ fromProviderFormat(rawToolCall, format) {
244
+ switch (format) {
245
+ case 'openai':
246
+ case 'deepseek':
247
+ case 'qwen':
248
+ case 'kimi':
249
+ case 'gemma':
250
+ return this.fromOpenAIFormat(rawToolCall, format);
251
+ case 'anthropic':
252
+ return this.fromAnthropicFormat(rawToolCall);
253
+ case 'hermes':
254
+ return this.fromTextParserFormat(rawToolCall, 'hermes');
255
+ case 'xml':
256
+ return this.fromTextParserFormat(rawToolCall, 'xml');
257
+ default:
258
+ throw new Error(`Tool format '${format}' not yet implemented`);
259
+ }
260
+ }
261
+ fromOpenAIFormat(rawToolCall, format) {
262
+ const openAiToolCall = rawToolCall;
263
+ if (!openAiToolCall.function?.name || !openAiToolCall.function.arguments) {
264
+ throw new Error(`Invalid ${format} tool call format`);
265
+ }
266
+ const parameters = doubleEscapeProcessToolParameters(openAiToolCall.function.arguments, openAiToolCall.function.name, format);
267
+ return [
268
+ {
269
+ type: 'tool_call',
270
+ id: openAiToolCall.id,
271
+ name: openAiToolCall.function.name,
272
+ parameters,
273
+ },
274
+ ];
275
+ }
276
+ fromAnthropicFormat(rawToolCall) {
277
+ const anthropicToolCall = rawToolCall;
278
+ if (!anthropicToolCall.id || !anthropicToolCall.name) {
279
+ throw new Error('Invalid anthropic tool call format');
280
+ }
281
+ return [
282
+ {
283
+ type: 'tool_call',
284
+ id: anthropicToolCall.id,
285
+ name: anthropicToolCall.name,
286
+ parameters: anthropicToolCall.input ?? {},
287
+ },
288
+ ];
289
+ }
290
+ fromTextParserFormat(rawToolCall, prefix) {
291
+ const textToolCall = rawToolCall;
292
+ if (!textToolCall.name) {
293
+ throw new Error(`Invalid ${prefix} tool call format`);
294
+ }
295
+ const arguments_ = textToolCall.arguments;
296
+ return [
297
+ {
298
+ type: 'tool_call',
299
+ id: `${prefix}_${Date.now()}_${Math.random().toString(36).substring(7)}`,
300
+ name: textToolCall.name,
301
+ parameters: arguments_ ?? {},
302
+ },
303
+ ];
304
+ }
305
+ /**
306
+ * Handles streaming tool call accumulation for OpenAI-compatible providers.
307
+ */
308
+ accumulateStreamingToolCall(deltaToolCall, accumulatedToolCalls, format) {
309
+ switch (format) {
310
+ case 'openai':
311
+ case 'deepseek':
312
+ case 'qwen':
313
+ case 'kimi':
314
+ case 'gemma':
315
+ this.accumulateOpenAIStreamingToolCall(deltaToolCall, accumulatedToolCalls, format);
316
+ break;
317
+ case 'hermes':
318
+ case 'xml':
319
+ case 'llama':
320
+ break;
321
+ default:
322
+ throw new Error(`Streaming accumulation for format '${format}' not yet implemented`);
323
+ }
324
+ }
325
+ accumulateOpenAIStreamingToolCall(deltaToolCall, accumulatedToolCalls, format) {
326
+ if (deltaToolCall.index === undefined)
327
+ return;
328
+ const existingSlot = accumulatedToolCalls[deltaToolCall.index];
329
+ if (isMissingToolCallSlot(existingSlot)) {
330
+ accumulatedToolCalls[deltaToolCall.index] = {
331
+ type: 'tool_call',
332
+ id: deltaToolCall.id ?? '',
333
+ name: '',
334
+ parameters: {},
335
+ };
336
+ }
337
+ const tc = accumulatedToolCalls[deltaToolCall.index];
338
+ if (deltaToolCall.id)
339
+ tc.id = deltaToolCall.id;
340
+ if (deltaToolCall.function?.name)
341
+ tc.name = deltaToolCall.function.name;
342
+ if (deltaToolCall.function?.arguments) {
343
+ this.accumulateStreamingArguments(tc, deltaToolCall.function.arguments, deltaToolCall.index, format);
344
+ }
345
+ }
346
+ accumulateStreamingArguments(tc, chunk, index, format) {
347
+ if (!('_argumentsString' in tc)) {
348
+ tc._argumentsString = '';
349
+ }
350
+ if (format === 'qwen') {
351
+ logDoubleEscapingInChunk(chunk || '', tc.name || 'unknown', format);
352
+ }
353
+ tc._argumentsString += chunk;
354
+ try {
355
+ const argsStr = tc
356
+ ._argumentsString;
357
+ if (argsStr.trim()) {
358
+ tc.parameters = doubleEscapeProcessToolParameters(argsStr, tc.name || 'unknown', format);
359
+ }
360
+ }
361
+ catch {
362
+ // Keep accumulating
363
+ }
364
+ void index;
365
+ }
366
+ /**
367
+ * Formats tools for the OpenAI Responses API.
368
+ */
369
+ toResponsesTool(tools) {
370
+ return tools.map((tool) => ({
371
+ type: 'function',
372
+ name: tool.function.name,
373
+ description: tool.function.description || null,
374
+ parameters: this.convertGeminiSchemaToStandard(tool.function.parameters) ?? null,
375
+ strict: null,
376
+ }));
377
+ }
378
+ }
379
+ //# sourceMappingURL=ToolFormatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolFormatter.js","sourceRoot":"","sources":["../../../src/formatters/ToolFormatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ /**
2
+ * @plan:PLAN-20260608-ISSUE1585.P05
3
+ * @requirement:REQ-API-001, REQ-TEMPORARY-INTERFACES
4
+ */
5
+ /**
6
+ * @license
7
+ * Copyright 2025 Vybestack LLC
8
+ * SPDX-License-Identifier: Apache-2.0
9
+ */
10
+ /**
11
+ * Package-local tool ID strategy module.
12
+ *
13
+ * Provides different strategies for resolving tool call IDs
14
+ * based on the tool format being used. Self-contained with
15
+ * zero core dependencies.
16
+ */
17
+ import type { ToolCallBlock } from './IToolFormatter.js';
18
+ import type { ToolFormat } from './IToolFormatter.js';
19
+ /**
20
+ * A generic content block that may contain tool calls or tool responses.
21
+ */
22
+ export interface ContentBlock {
23
+ type: string;
24
+ id?: string;
25
+ name?: string;
26
+ callId?: string;
27
+ toolName?: string;
28
+ }
29
+ /**
30
+ * Interface for mapping tool IDs to provider-specific formats.
31
+ */
32
+ export interface ToolIdMapper {
33
+ /** Resolves a tool call's internal ID to the provider-specific format. */
34
+ resolveToolCallId(tc: ToolCallBlock): string;
35
+ /** Resolves a tool response's callId to the provider-specific format. */
36
+ resolveToolResponseId(tr: {
37
+ callId: string;
38
+ toolName: string;
39
+ }): string;
40
+ }
41
+ /**
42
+ * Interface for creating tool ID mappers based on content.
43
+ */
44
+ export interface ToolIdStrategy {
45
+ /** Creates a mapper that can resolve tool IDs for the given content. */
46
+ createMapper(contents: Array<{
47
+ blocks?: ContentBlock[];
48
+ }>): ToolIdMapper;
49
+ }
50
+ /**
51
+ * Checks if a model name indicates a Kimi K2 model.
52
+ */
53
+ export declare function isKimiModel(model: string): boolean;
54
+ /**
55
+ * Checks if a model name indicates a DeepSeek reasoner model.
56
+ */
57
+ export declare function isDeepSeekReasonerModel(model: string): boolean;
58
+ /**
59
+ * Checks if a model name indicates a Mistral model.
60
+ */
61
+ export declare function isMistralModel(model: string): boolean;
62
+ /**
63
+ * Kimi K2 strategy: IDs in format functions.{toolName}:{globalIndex}
64
+ */
65
+ export declare const kimiStrategy: ToolIdStrategy;
66
+ /**
67
+ * Standard strategy: Converts to OpenAI call_xxx format.
68
+ */
69
+ export declare const standardStrategy: ToolIdStrategy;
70
+ /**
71
+ * Mistral strategy: IDs in 9-character alphanumeric format.
72
+ */
73
+ export declare const mistralStrategy: ToolIdStrategy;
74
+ /**
75
+ * Gets the appropriate tool ID strategy for a given tool format.
76
+ * @param format - The tool format being used.
77
+ * @returns The strategy to use for ID resolution.
78
+ */
79
+ export declare function getToolIdStrategy(format: ToolFormat): ToolIdStrategy;
@@ -0,0 +1,173 @@
1
+ /**
2
+ * @plan:PLAN-20260608-ISSUE1585.P05
3
+ * @requirement:REQ-API-001, REQ-TEMPORARY-INTERFACES
4
+ */
5
+ import { normalizeToOpenAIToolId } from './toolIdNormalization.js';
6
+ import crypto from 'node:crypto';
7
+ /**
8
+ * Checks if a model name indicates a Kimi K2 model.
9
+ */
10
+ export function isKimiModel(model) {
11
+ const lowerModel = model.toLowerCase();
12
+ if (lowerModel.includes('kimi')) {
13
+ return true;
14
+ }
15
+ const k2Pattern = /(?:^|[^a-z0-9])k2(?:[^a-z0-9]|$)/;
16
+ return k2Pattern.test(lowerModel);
17
+ }
18
+ /**
19
+ * Checks if a model name indicates a DeepSeek reasoner model.
20
+ */
21
+ export function isDeepSeekReasonerModel(model) {
22
+ return model.toLowerCase().includes('deepseek-reasoner');
23
+ }
24
+ /**
25
+ * Checks if a model name indicates a Mistral model.
26
+ */
27
+ export function isMistralModel(model) {
28
+ const lowerModel = model.toLowerCase();
29
+ return (lowerModel.includes('mistral') ||
30
+ lowerModel.includes('devstral') ||
31
+ lowerModel.includes('codestral') ||
32
+ lowerModel.includes('pixtral') ||
33
+ lowerModel.includes('ministral'));
34
+ }
35
+ /**
36
+ * Kimi K2 strategy: IDs in format functions.{toolName}:{globalIndex}
37
+ */
38
+ export const kimiStrategy = {
39
+ createMapper(contents) {
40
+ const idToK2Id = new Map();
41
+ let globalIndex = 0;
42
+ for (const content of contents) {
43
+ for (const block of content.blocks ?? []) {
44
+ if (block.type === 'tool_call' && block.id && block.name) {
45
+ const k2Id = `functions.${block.name}:${globalIndex}`;
46
+ idToK2Id.set(block.id, k2Id);
47
+ globalIndex++;
48
+ }
49
+ }
50
+ }
51
+ return {
52
+ resolveToolCallId(tc) {
53
+ return idToK2Id.get(tc.id) ?? `functions.${tc.name}:${globalIndex++}`;
54
+ },
55
+ resolveToolResponseId(tr) {
56
+ const k2Id = idToK2Id.get(tr.callId);
57
+ if (k2Id) {
58
+ return k2Id;
59
+ }
60
+ return `functions.${tr.toolName}:${globalIndex++}`;
61
+ },
62
+ };
63
+ },
64
+ };
65
+ /**
66
+ * Standard strategy: Converts to OpenAI call_xxx format.
67
+ */
68
+ export const standardStrategy = {
69
+ createMapper(_contents) {
70
+ return {
71
+ resolveToolCallId(tc) {
72
+ return normalizeToOpenAIToolId(tc.id);
73
+ },
74
+ resolveToolResponseId(tr) {
75
+ return normalizeToOpenAIToolId(tr.callId);
76
+ },
77
+ };
78
+ },
79
+ };
80
+ const MISTRAL_CHARS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
81
+ function base62FromHex(hex) {
82
+ const base = BigInt(MISTRAL_CHARS.length);
83
+ let value = BigInt(`0x${hex}`);
84
+ let result = '';
85
+ if (value === BigInt(0)) {
86
+ return '0';
87
+ }
88
+ while (value > 0) {
89
+ const remainder = value % base;
90
+ result = MISTRAL_CHARS[Number(remainder)] + result;
91
+ value = value / base;
92
+ }
93
+ return result;
94
+ }
95
+ function generateDeterministicMistralId(seed, salt) {
96
+ const hash = crypto
97
+ .createHash('sha256')
98
+ .update(`${seed}|${salt}`)
99
+ .digest('hex');
100
+ const base62 = base62FromHex(hash);
101
+ const padded = base62.padStart(9, 'a');
102
+ return padded.slice(0, 9);
103
+ }
104
+ function toMistralToolId(id, used) {
105
+ if (/^[a-zA-Z0-9]{9}$/.test(id)) {
106
+ return id;
107
+ }
108
+ let salt = 0;
109
+ while (salt <= Number.MAX_SAFE_INTEGER) {
110
+ const candidate = generateDeterministicMistralId(id, salt);
111
+ if (!used.has(candidate)) {
112
+ return candidate;
113
+ }
114
+ salt += 1;
115
+ }
116
+ throw new Error('Unable to generate a unique Mistral tool ID.');
117
+ }
118
+ /**
119
+ * Mistral strategy: IDs in 9-character alphanumeric format.
120
+ */
121
+ export const mistralStrategy = {
122
+ createMapper(contents) {
123
+ const idToMistralId = new Map();
124
+ const usedIds = new Set();
125
+ for (const content of contents) {
126
+ for (const block of content.blocks ?? []) {
127
+ if (block.type === 'tool_call' &&
128
+ block.id &&
129
+ !idToMistralId.has(block.id)) {
130
+ const mistralId = toMistralToolId(block.id, usedIds);
131
+ idToMistralId.set(block.id, mistralId);
132
+ usedIds.add(mistralId);
133
+ }
134
+ }
135
+ }
136
+ return {
137
+ resolveToolCallId(tc) {
138
+ let mistralId = idToMistralId.get(tc.id);
139
+ if (!mistralId) {
140
+ mistralId = toMistralToolId(tc.id, usedIds);
141
+ idToMistralId.set(tc.id, mistralId);
142
+ usedIds.add(mistralId);
143
+ }
144
+ return mistralId;
145
+ },
146
+ resolveToolResponseId(tr) {
147
+ const mistralId = idToMistralId.get(tr.callId);
148
+ if (mistralId) {
149
+ return mistralId;
150
+ }
151
+ const newId = toMistralToolId(tr.callId, usedIds);
152
+ idToMistralId.set(tr.callId, newId);
153
+ usedIds.add(newId);
154
+ return newId;
155
+ },
156
+ };
157
+ },
158
+ };
159
+ /**
160
+ * Gets the appropriate tool ID strategy for a given tool format.
161
+ * @param format - The tool format being used.
162
+ * @returns The strategy to use for ID resolution.
163
+ */
164
+ export function getToolIdStrategy(format) {
165
+ if (format === 'kimi') {
166
+ return kimiStrategy;
167
+ }
168
+ if (format === 'mistral') {
169
+ return mistralStrategy;
170
+ }
171
+ return standardStrategy;
172
+ }
173
+ //# sourceMappingURL=ToolIdStrategy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolIdStrategy.js","sourceRoot":"","sources":["../../../src/formatters/ToolIdStrategy.ts"],"names":[],"mappings":"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"}