toolpack-sdk 0.1.0-SNAPSHOT

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 (967) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +815 -0
  3. package/dist/client/base-agent-context.d.ts +16 -0
  4. package/dist/client/base-agent-context.d.ts.map +1 -0
  5. package/dist/client/base-agent-context.js +26 -0
  6. package/dist/client/base-agent-context.js.map +1 -0
  7. package/dist/client/index.d.ts +142 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +1246 -0
  10. package/dist/client/index.js.map +1 -0
  11. package/dist/client/query-classifier.d.ts +27 -0
  12. package/dist/client/query-classifier.d.ts.map +1 -0
  13. package/dist/client/query-classifier.js +98 -0
  14. package/dist/client/query-classifier.js.map +1 -0
  15. package/dist/client/tool-orchestrator.d.ts +42 -0
  16. package/dist/client/tool-orchestrator.d.ts.map +1 -0
  17. package/dist/client/tool-orchestrator.js +156 -0
  18. package/dist/client/tool-orchestrator.js.map +1 -0
  19. package/dist/errors/index.d.ts +31 -0
  20. package/dist/errors/index.d.ts.map +1 -0
  21. package/dist/errors/index.js +72 -0
  22. package/dist/errors/index.js.map +1 -0
  23. package/dist/index.d.ts +11 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +27 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/mcp/client.d.ts +56 -0
  28. package/dist/mcp/client.d.ts.map +1 -0
  29. package/dist/mcp/client.js +290 -0
  30. package/dist/mcp/client.js.map +1 -0
  31. package/dist/mcp/index.d.ts +3 -0
  32. package/dist/mcp/index.d.ts.map +1 -0
  33. package/dist/mcp/index.js +10 -0
  34. package/dist/mcp/index.js.map +1 -0
  35. package/dist/mcp/types.d.ts +31 -0
  36. package/dist/mcp/types.d.ts.map +1 -0
  37. package/dist/mcp/types.js +3 -0
  38. package/dist/mcp/types.js.map +1 -0
  39. package/dist/modes/built-in-modes.d.ts +29 -0
  40. package/dist/modes/built-in-modes.d.ts.map +1 -0
  41. package/dist/modes/built-in-modes.js +106 -0
  42. package/dist/modes/built-in-modes.js.map +1 -0
  43. package/dist/modes/create-mode.d.ts +59 -0
  44. package/dist/modes/create-mode.d.ts.map +1 -0
  45. package/dist/modes/create-mode.js +35 -0
  46. package/dist/modes/create-mode.js.map +1 -0
  47. package/dist/modes/index.d.ts +5 -0
  48. package/dist/modes/index.d.ts.map +1 -0
  49. package/dist/modes/index.js +13 -0
  50. package/dist/modes/index.js.map +1 -0
  51. package/dist/modes/mode-registry.d.ts +50 -0
  52. package/dist/modes/mode-registry.d.ts.map +1 -0
  53. package/dist/modes/mode-registry.js +127 -0
  54. package/dist/modes/mode-registry.js.map +1 -0
  55. package/dist/modes/mode-types.d.ts +82 -0
  56. package/dist/modes/mode-types.d.ts.map +1 -0
  57. package/dist/modes/mode-types.js +3 -0
  58. package/dist/modes/mode-types.js.map +1 -0
  59. package/dist/providers/anthropic/index.d.ts +38 -0
  60. package/dist/providers/anthropic/index.d.ts.map +1 -0
  61. package/dist/providers/anthropic/index.js +390 -0
  62. package/dist/providers/anthropic/index.js.map +1 -0
  63. package/dist/providers/base/index.d.ts +54 -0
  64. package/dist/providers/base/index.d.ts.map +1 -0
  65. package/dist/providers/base/index.js +56 -0
  66. package/dist/providers/base/index.js.map +1 -0
  67. package/dist/providers/config.d.ts +58 -0
  68. package/dist/providers/config.d.ts.map +1 -0
  69. package/dist/providers/config.js +106 -0
  70. package/dist/providers/config.js.map +1 -0
  71. package/dist/providers/gemini/index.d.ts +27 -0
  72. package/dist/providers/gemini/index.d.ts.map +1 -0
  73. package/dist/providers/gemini/index.js +391 -0
  74. package/dist/providers/gemini/index.js.map +1 -0
  75. package/dist/providers/index.d.ts +11 -0
  76. package/dist/providers/index.d.ts.map +1 -0
  77. package/dist/providers/index.js +40 -0
  78. package/dist/providers/index.js.map +1 -0
  79. package/dist/providers/media-utils.d.ts +21 -0
  80. package/dist/providers/media-utils.d.ts.map +1 -0
  81. package/dist/providers/media-utils.js +129 -0
  82. package/dist/providers/media-utils.js.map +1 -0
  83. package/dist/providers/ollama/adapter.d.ts +67 -0
  84. package/dist/providers/ollama/adapter.d.ts.map +1 -0
  85. package/dist/providers/ollama/adapter.js +371 -0
  86. package/dist/providers/ollama/adapter.js.map +1 -0
  87. package/dist/providers/ollama/http.d.ts +9 -0
  88. package/dist/providers/ollama/http.d.ts.map +1 -0
  89. package/dist/providers/ollama/http.js +125 -0
  90. package/dist/providers/ollama/http.js.map +1 -0
  91. package/dist/providers/ollama/index.d.ts +4 -0
  92. package/dist/providers/ollama/index.d.ts.map +1 -0
  93. package/dist/providers/ollama/index.js +11 -0
  94. package/dist/providers/ollama/index.js.map +1 -0
  95. package/dist/providers/ollama/provider.d.ts +38 -0
  96. package/dist/providers/ollama/provider.d.ts.map +1 -0
  97. package/dist/providers/ollama/provider.js +165 -0
  98. package/dist/providers/ollama/provider.js.map +1 -0
  99. package/dist/providers/ollama/slm-healer.d.ts +46 -0
  100. package/dist/providers/ollama/slm-healer.d.ts.map +1 -0
  101. package/dist/providers/ollama/slm-healer.js +214 -0
  102. package/dist/providers/ollama/slm-healer.js.map +1 -0
  103. package/dist/providers/ollama/slm-registry.d.ts +47 -0
  104. package/dist/providers/ollama/slm-registry.d.ts.map +1 -0
  105. package/dist/providers/ollama/slm-registry.js +101 -0
  106. package/dist/providers/ollama/slm-registry.js.map +1 -0
  107. package/dist/providers/openai/index.d.ts +22 -0
  108. package/dist/providers/openai/index.d.ts.map +1 -0
  109. package/dist/providers/openai/index.js +393 -0
  110. package/dist/providers/openai/index.js.map +1 -0
  111. package/dist/providers/provider-logger.d.ts +29 -0
  112. package/dist/providers/provider-logger.d.ts.map +1 -0
  113. package/dist/providers/provider-logger.js +86 -0
  114. package/dist/providers/provider-logger.js.map +1 -0
  115. package/dist/toolpack.d.ts +142 -0
  116. package/dist/toolpack.d.ts.map +1 -0
  117. package/dist/toolpack.js +485 -0
  118. package/dist/toolpack.js.map +1 -0
  119. package/dist/tools/cloud-tools/index.d.ts +7 -0
  120. package/dist/tools/cloud-tools/index.d.ts.map +1 -0
  121. package/dist/tools/cloud-tools/index.js +34 -0
  122. package/dist/tools/cloud-tools/index.js.map +1 -0
  123. package/dist/tools/cloud-tools/providers/netlify.d.ts +9 -0
  124. package/dist/tools/cloud-tools/providers/netlify.d.ts.map +1 -0
  125. package/dist/tools/cloud-tools/providers/netlify.js +19 -0
  126. package/dist/tools/cloud-tools/providers/netlify.js.map +1 -0
  127. package/dist/tools/cloud-tools/tools/deploy/index.d.ts +3 -0
  128. package/dist/tools/cloud-tools/tools/deploy/index.d.ts.map +1 -0
  129. package/dist/tools/cloud-tools/tools/deploy/index.js +38 -0
  130. package/dist/tools/cloud-tools/tools/deploy/index.js.map +1 -0
  131. package/dist/tools/cloud-tools/tools/deploy/schema.d.ts +3 -0
  132. package/dist/tools/cloud-tools/tools/deploy/schema.d.ts.map +1 -0
  133. package/dist/tools/cloud-tools/tools/deploy/schema.js +22 -0
  134. package/dist/tools/cloud-tools/tools/deploy/schema.js.map +1 -0
  135. package/dist/tools/cloud-tools/tools/list/index.d.ts +3 -0
  136. package/dist/tools/cloud-tools/tools/list/index.d.ts.map +1 -0
  137. package/dist/tools/cloud-tools/tools/list/index.js +42 -0
  138. package/dist/tools/cloud-tools/tools/list/index.js.map +1 -0
  139. package/dist/tools/cloud-tools/tools/list/schema.d.ts +3 -0
  140. package/dist/tools/cloud-tools/tools/list/schema.d.ts.map +1 -0
  141. package/dist/tools/cloud-tools/tools/list/schema.js +19 -0
  142. package/dist/tools/cloud-tools/tools/list/schema.js.map +1 -0
  143. package/dist/tools/cloud-tools/tools/status/index.d.ts +3 -0
  144. package/dist/tools/cloud-tools/tools/status/index.d.ts.map +1 -0
  145. package/dist/tools/cloud-tools/tools/status/index.js +32 -0
  146. package/dist/tools/cloud-tools/tools/status/index.js.map +1 -0
  147. package/dist/tools/cloud-tools/tools/status/schema.d.ts +3 -0
  148. package/dist/tools/cloud-tools/tools/status/schema.d.ts.map +1 -0
  149. package/dist/tools/cloud-tools/tools/status/schema.js +18 -0
  150. package/dist/tools/cloud-tools/tools/status/schema.js.map +1 -0
  151. package/dist/tools/coding-tools/index.d.ts +15 -0
  152. package/dist/tools/coding-tools/index.d.ts.map +1 -0
  153. package/dist/tools/coding-tools/index.js +84 -0
  154. package/dist/tools/coding-tools/index.js.map +1 -0
  155. package/dist/tools/coding-tools/parsers/babel-parser.d.ts +16 -0
  156. package/dist/tools/coding-tools/parsers/babel-parser.d.ts.map +1 -0
  157. package/dist/tools/coding-tools/parsers/babel-parser.js +589 -0
  158. package/dist/tools/coding-tools/parsers/babel-parser.js.map +1 -0
  159. package/dist/tools/coding-tools/parsers/file-index.d.ts +16 -0
  160. package/dist/tools/coding-tools/parsers/file-index.d.ts.map +1 -0
  161. package/dist/tools/coding-tools/parsers/file-index.js +98 -0
  162. package/dist/tools/coding-tools/parsers/file-index.js.map +1 -0
  163. package/dist/tools/coding-tools/parsers/grammar-manager.d.ts +9 -0
  164. package/dist/tools/coding-tools/parsers/grammar-manager.d.ts.map +1 -0
  165. package/dist/tools/coding-tools/parsers/grammar-manager.js +112 -0
  166. package/dist/tools/coding-tools/parsers/grammar-manager.js.map +1 -0
  167. package/dist/tools/coding-tools/parsers/language-detector.d.ts +3 -0
  168. package/dist/tools/coding-tools/parsers/language-detector.d.ts.map +1 -0
  169. package/dist/tools/coding-tools/parsers/language-detector.js +43 -0
  170. package/dist/tools/coding-tools/parsers/language-detector.js.map +1 -0
  171. package/dist/tools/coding-tools/parsers/parser-factory.d.ts +10 -0
  172. package/dist/tools/coding-tools/parsers/parser-factory.d.ts.map +1 -0
  173. package/dist/tools/coding-tools/parsers/parser-factory.js +37 -0
  174. package/dist/tools/coding-tools/parsers/parser-factory.js.map +1 -0
  175. package/dist/tools/coding-tools/parsers/parsing-context.d.ts +15 -0
  176. package/dist/tools/coding-tools/parsers/parsing-context.d.ts.map +1 -0
  177. package/dist/tools/coding-tools/parsers/parsing-context.js +118 -0
  178. package/dist/tools/coding-tools/parsers/parsing-context.js.map +1 -0
  179. package/dist/tools/coding-tools/parsers/queries/cpp.d.ts +3 -0
  180. package/dist/tools/coding-tools/parsers/queries/cpp.d.ts.map +1 -0
  181. package/dist/tools/coding-tools/parsers/queries/cpp.js +33 -0
  182. package/dist/tools/coding-tools/parsers/queries/cpp.js.map +1 -0
  183. package/dist/tools/coding-tools/parsers/queries/go.d.ts +3 -0
  184. package/dist/tools/coding-tools/parsers/queries/go.d.ts.map +1 -0
  185. package/dist/tools/coding-tools/parsers/queries/go.js +39 -0
  186. package/dist/tools/coding-tools/parsers/queries/go.js.map +1 -0
  187. package/dist/tools/coding-tools/parsers/queries/index.d.ts +10 -0
  188. package/dist/tools/coding-tools/parsers/queries/index.d.ts.map +1 -0
  189. package/dist/tools/coding-tools/parsers/queries/index.js +9 -0
  190. package/dist/tools/coding-tools/parsers/queries/index.js.map +1 -0
  191. package/dist/tools/coding-tools/parsers/queries/java.d.ts +3 -0
  192. package/dist/tools/coding-tools/parsers/queries/java.d.ts.map +1 -0
  193. package/dist/tools/coding-tools/parsers/queries/java.js +32 -0
  194. package/dist/tools/coding-tools/parsers/queries/java.js.map +1 -0
  195. package/dist/tools/coding-tools/parsers/queries/python.d.ts +3 -0
  196. package/dist/tools/coding-tools/parsers/queries/python.d.ts.map +1 -0
  197. package/dist/tools/coding-tools/parsers/queries/python.js +29 -0
  198. package/dist/tools/coding-tools/parsers/queries/python.js.map +1 -0
  199. package/dist/tools/coding-tools/parsers/queries/rust.d.ts +3 -0
  200. package/dist/tools/coding-tools/parsers/queries/rust.d.ts.map +1 -0
  201. package/dist/tools/coding-tools/parsers/queries/rust.js +33 -0
  202. package/dist/tools/coding-tools/parsers/queries/rust.js.map +1 -0
  203. package/dist/tools/coding-tools/parsers/shared.d.ts +7 -0
  204. package/dist/tools/coding-tools/parsers/shared.d.ts.map +1 -0
  205. package/dist/tools/coding-tools/parsers/shared.js +10 -0
  206. package/dist/tools/coding-tools/parsers/shared.js.map +1 -0
  207. package/dist/tools/coding-tools/parsers/tree-sitter-parser.d.ts +24 -0
  208. package/dist/tools/coding-tools/parsers/tree-sitter-parser.d.ts.map +1 -0
  209. package/dist/tools/coding-tools/parsers/tree-sitter-parser.js +210 -0
  210. package/dist/tools/coding-tools/parsers/tree-sitter-parser.js.map +1 -0
  211. package/dist/tools/coding-tools/parsers/types.d.ts +81 -0
  212. package/dist/tools/coding-tools/parsers/types.d.ts.map +1 -0
  213. package/dist/tools/coding-tools/parsers/types.js +3 -0
  214. package/dist/tools/coding-tools/parsers/types.js.map +1 -0
  215. package/dist/tools/coding-tools/tools/extract-function/index.d.ts +3 -0
  216. package/dist/tools/coding-tools/tools/extract-function/index.d.ts.map +1 -0
  217. package/dist/tools/coding-tools/tools/extract-function/index.js +64 -0
  218. package/dist/tools/coding-tools/tools/extract-function/index.js.map +1 -0
  219. package/dist/tools/coding-tools/tools/extract-function/schema.d.ts +15 -0
  220. package/dist/tools/coding-tools/tools/extract-function/schema.d.ts.map +1 -0
  221. package/dist/tools/coding-tools/tools/extract-function/schema.js +38 -0
  222. package/dist/tools/coding-tools/tools/extract-function/schema.js.map +1 -0
  223. package/dist/tools/coding-tools/tools/find-references/index.d.ts +3 -0
  224. package/dist/tools/coding-tools/tools/find-references/index.d.ts.map +1 -0
  225. package/dist/tools/coding-tools/tools/find-references/index.js +70 -0
  226. package/dist/tools/coding-tools/tools/find-references/index.js.map +1 -0
  227. package/dist/tools/coding-tools/tools/find-references/schema.d.ts +7 -0
  228. package/dist/tools/coding-tools/tools/find-references/schema.d.ts.map +1 -0
  229. package/dist/tools/coding-tools/tools/find-references/schema.js +26 -0
  230. package/dist/tools/coding-tools/tools/find-references/schema.js.map +1 -0
  231. package/dist/tools/coding-tools/tools/find-symbol/index.d.ts +3 -0
  232. package/dist/tools/coding-tools/tools/find-symbol/index.d.ts.map +1 -0
  233. package/dist/tools/coding-tools/tools/find-symbol/index.js +85 -0
  234. package/dist/tools/coding-tools/tools/find-symbol/index.js.map +1 -0
  235. package/dist/tools/coding-tools/tools/find-symbol/schema.d.ts +7 -0
  236. package/dist/tools/coding-tools/tools/find-symbol/schema.d.ts.map +1 -0
  237. package/dist/tools/coding-tools/tools/find-symbol/schema.js +26 -0
  238. package/dist/tools/coding-tools/tools/find-symbol/schema.js.map +1 -0
  239. package/dist/tools/coding-tools/tools/get-call-hierarchy/index.d.ts +3 -0
  240. package/dist/tools/coding-tools/tools/get-call-hierarchy/index.d.ts.map +1 -0
  241. package/dist/tools/coding-tools/tools/get-call-hierarchy/index.js +55 -0
  242. package/dist/tools/coding-tools/tools/get-call-hierarchy/index.js.map +1 -0
  243. package/dist/tools/coding-tools/tools/get-call-hierarchy/schema.d.ts +12 -0
  244. package/dist/tools/coding-tools/tools/get-call-hierarchy/schema.d.ts.map +1 -0
  245. package/dist/tools/coding-tools/tools/get-call-hierarchy/schema.js +26 -0
  246. package/dist/tools/coding-tools/tools/get-call-hierarchy/schema.js.map +1 -0
  247. package/dist/tools/coding-tools/tools/get-diagnostics/index.d.ts +3 -0
  248. package/dist/tools/coding-tools/tools/get-diagnostics/index.d.ts.map +1 -0
  249. package/dist/tools/coding-tools/tools/get-diagnostics/index.js +51 -0
  250. package/dist/tools/coding-tools/tools/get-diagnostics/index.js.map +1 -0
  251. package/dist/tools/coding-tools/tools/get-diagnostics/schema.d.ts +10 -0
  252. package/dist/tools/coding-tools/tools/get-diagnostics/schema.d.ts.map +1 -0
  253. package/dist/tools/coding-tools/tools/get-diagnostics/schema.js +18 -0
  254. package/dist/tools/coding-tools/tools/get-diagnostics/schema.js.map +1 -0
  255. package/dist/tools/coding-tools/tools/get-exports/index.d.ts +3 -0
  256. package/dist/tools/coding-tools/tools/get-exports/index.d.ts.map +1 -0
  257. package/dist/tools/coding-tools/tools/get-exports/index.js +51 -0
  258. package/dist/tools/coding-tools/tools/get-exports/index.js.map +1 -0
  259. package/dist/tools/coding-tools/tools/get-exports/schema.d.ts +10 -0
  260. package/dist/tools/coding-tools/tools/get-exports/schema.d.ts.map +1 -0
  261. package/dist/tools/coding-tools/tools/get-exports/schema.js +18 -0
  262. package/dist/tools/coding-tools/tools/get-exports/schema.js.map +1 -0
  263. package/dist/tools/coding-tools/tools/get-imports/index.d.ts +3 -0
  264. package/dist/tools/coding-tools/tools/get-imports/index.d.ts.map +1 -0
  265. package/dist/tools/coding-tools/tools/get-imports/index.js +37 -0
  266. package/dist/tools/coding-tools/tools/get-imports/index.js.map +1 -0
  267. package/dist/tools/coding-tools/tools/get-imports/schema.d.ts +7 -0
  268. package/dist/tools/coding-tools/tools/get-imports/schema.d.ts.map +1 -0
  269. package/dist/tools/coding-tools/tools/get-imports/schema.js +18 -0
  270. package/dist/tools/coding-tools/tools/get-imports/schema.js.map +1 -0
  271. package/dist/tools/coding-tools/tools/get-outline/index.d.ts +3 -0
  272. package/dist/tools/coding-tools/tools/get-outline/index.d.ts.map +1 -0
  273. package/dist/tools/coding-tools/tools/get-outline/index.js +51 -0
  274. package/dist/tools/coding-tools/tools/get-outline/index.js.map +1 -0
  275. package/dist/tools/coding-tools/tools/get-outline/schema.d.ts +10 -0
  276. package/dist/tools/coding-tools/tools/get-outline/schema.d.ts.map +1 -0
  277. package/dist/tools/coding-tools/tools/get-outline/schema.js +18 -0
  278. package/dist/tools/coding-tools/tools/get-outline/schema.js.map +1 -0
  279. package/dist/tools/coding-tools/tools/get-symbols/index.d.ts +3 -0
  280. package/dist/tools/coding-tools/tools/get-symbols/index.d.ts.map +1 -0
  281. package/dist/tools/coding-tools/tools/get-symbols/index.js +38 -0
  282. package/dist/tools/coding-tools/tools/get-symbols/index.js.map +1 -0
  283. package/dist/tools/coding-tools/tools/get-symbols/schema.d.ts +7 -0
  284. package/dist/tools/coding-tools/tools/get-symbols/schema.d.ts.map +1 -0
  285. package/dist/tools/coding-tools/tools/get-symbols/schema.js +22 -0
  286. package/dist/tools/coding-tools/tools/get-symbols/schema.js.map +1 -0
  287. package/dist/tools/coding-tools/tools/go-to-definition/index.d.ts +3 -0
  288. package/dist/tools/coding-tools/tools/go-to-definition/index.d.ts.map +1 -0
  289. package/dist/tools/coding-tools/tools/go-to-definition/index.js +100 -0
  290. package/dist/tools/coding-tools/tools/go-to-definition/index.js.map +1 -0
  291. package/dist/tools/coding-tools/tools/go-to-definition/schema.d.ts +7 -0
  292. package/dist/tools/coding-tools/tools/go-to-definition/schema.d.ts.map +1 -0
  293. package/dist/tools/coding-tools/tools/go-to-definition/schema.js +30 -0
  294. package/dist/tools/coding-tools/tools/go-to-definition/schema.js.map +1 -0
  295. package/dist/tools/coding-tools/tools/multi-file-edit/index.d.ts +3 -0
  296. package/dist/tools/coding-tools/tools/multi-file-edit/index.d.ts.map +1 -0
  297. package/dist/tools/coding-tools/tools/multi-file-edit/index.js +90 -0
  298. package/dist/tools/coding-tools/tools/multi-file-edit/index.js.map +1 -0
  299. package/dist/tools/coding-tools/tools/multi-file-edit/schema.d.ts +7 -0
  300. package/dist/tools/coding-tools/tools/multi-file-edit/schema.d.ts.map +1 -0
  301. package/dist/tools/coding-tools/tools/multi-file-edit/schema.js +38 -0
  302. package/dist/tools/coding-tools/tools/multi-file-edit/schema.js.map +1 -0
  303. package/dist/tools/coding-tools/tools/refactor-rename/index.d.ts +3 -0
  304. package/dist/tools/coding-tools/tools/refactor-rename/index.d.ts.map +1 -0
  305. package/dist/tools/coding-tools/tools/refactor-rename/index.js +144 -0
  306. package/dist/tools/coding-tools/tools/refactor-rename/index.js.map +1 -0
  307. package/dist/tools/coding-tools/tools/refactor-rename/schema.d.ts +7 -0
  308. package/dist/tools/coding-tools/tools/refactor-rename/schema.d.ts.map +1 -0
  309. package/dist/tools/coding-tools/tools/refactor-rename/schema.js +30 -0
  310. package/dist/tools/coding-tools/tools/refactor-rename/schema.js.map +1 -0
  311. package/dist/tools/config-loader.d.ts +11 -0
  312. package/dist/tools/config-loader.d.ts.map +1 -0
  313. package/dist/tools/config-loader.js +120 -0
  314. package/dist/tools/config-loader.js.map +1 -0
  315. package/dist/tools/create-tool-project.d.ts +14 -0
  316. package/dist/tools/create-tool-project.d.ts.map +1 -0
  317. package/dist/tools/create-tool-project.js +46 -0
  318. package/dist/tools/create-tool-project.js.map +1 -0
  319. package/dist/tools/db-tools/adapters/base.d.ts +26 -0
  320. package/dist/tools/db-tools/adapters/base.d.ts.map +1 -0
  321. package/dist/tools/db-tools/adapters/base.js +11 -0
  322. package/dist/tools/db-tools/adapters/base.js.map +1 -0
  323. package/dist/tools/db-tools/adapters/factory.d.ts +5 -0
  324. package/dist/tools/db-tools/adapters/factory.d.ts.map +1 -0
  325. package/dist/tools/db-tools/adapters/factory.js +25 -0
  326. package/dist/tools/db-tools/adapters/factory.js.map +1 -0
  327. package/dist/tools/db-tools/adapters/mysql.d.ts +9 -0
  328. package/dist/tools/db-tools/adapters/mysql.d.ts.map +1 -0
  329. package/dist/tools/db-tools/adapters/mysql.js +65 -0
  330. package/dist/tools/db-tools/adapters/mysql.js.map +1 -0
  331. package/dist/tools/db-tools/adapters/postgres.d.ts +14 -0
  332. package/dist/tools/db-tools/adapters/postgres.d.ts.map +1 -0
  333. package/dist/tools/db-tools/adapters/postgres.js +74 -0
  334. package/dist/tools/db-tools/adapters/postgres.js.map +1 -0
  335. package/dist/tools/db-tools/adapters/sqlite.d.ts +13 -0
  336. package/dist/tools/db-tools/adapters/sqlite.d.ts.map +1 -0
  337. package/dist/tools/db-tools/adapters/sqlite.js +117 -0
  338. package/dist/tools/db-tools/adapters/sqlite.js.map +1 -0
  339. package/dist/tools/db-tools/index.d.ts +11 -0
  340. package/dist/tools/db-tools/index.d.ts.map +1 -0
  341. package/dist/tools/db-tools/index.js +50 -0
  342. package/dist/tools/db-tools/index.js.map +1 -0
  343. package/dist/tools/db-tools/tools/count/index.d.ts +3 -0
  344. package/dist/tools/db-tools/tools/count/index.d.ts.map +1 -0
  345. package/dist/tools/db-tools/tools/count/index.js +32 -0
  346. package/dist/tools/db-tools/tools/count/index.js.map +1 -0
  347. package/dist/tools/db-tools/tools/count/schema.d.ts +3 -0
  348. package/dist/tools/db-tools/tools/count/schema.d.ts.map +1 -0
  349. package/dist/tools/db-tools/tools/count/schema.js +22 -0
  350. package/dist/tools/db-tools/tools/count/schema.js.map +1 -0
  351. package/dist/tools/db-tools/tools/delete/index.d.ts +3 -0
  352. package/dist/tools/db-tools/tools/delete/index.d.ts.map +1 -0
  353. package/dist/tools/db-tools/tools/delete/index.js +27 -0
  354. package/dist/tools/db-tools/tools/delete/index.js.map +1 -0
  355. package/dist/tools/db-tools/tools/delete/schema.d.ts +3 -0
  356. package/dist/tools/db-tools/tools/delete/schema.d.ts.map +1 -0
  357. package/dist/tools/db-tools/tools/delete/schema.js +22 -0
  358. package/dist/tools/db-tools/tools/delete/schema.js.map +1 -0
  359. package/dist/tools/db-tools/tools/insert/index.d.ts +3 -0
  360. package/dist/tools/db-tools/tools/insert/index.d.ts.map +1 -0
  361. package/dist/tools/db-tools/tools/insert/index.js +33 -0
  362. package/dist/tools/db-tools/tools/insert/index.js.map +1 -0
  363. package/dist/tools/db-tools/tools/insert/schema.d.ts +3 -0
  364. package/dist/tools/db-tools/tools/insert/schema.d.ts.map +1 -0
  365. package/dist/tools/db-tools/tools/insert/schema.js +22 -0
  366. package/dist/tools/db-tools/tools/insert/schema.js.map +1 -0
  367. package/dist/tools/db-tools/tools/query/index.d.ts +3 -0
  368. package/dist/tools/db-tools/tools/query/index.d.ts.map +1 -0
  369. package/dist/tools/db-tools/tools/query/index.js +29 -0
  370. package/dist/tools/db-tools/tools/query/index.js.map +1 -0
  371. package/dist/tools/db-tools/tools/query/schema.d.ts +3 -0
  372. package/dist/tools/db-tools/tools/query/schema.d.ts.map +1 -0
  373. package/dist/tools/db-tools/tools/query/schema.js +24 -0
  374. package/dist/tools/db-tools/tools/query/schema.js.map +1 -0
  375. package/dist/tools/db-tools/tools/schema/index.d.ts +3 -0
  376. package/dist/tools/db-tools/tools/schema/index.d.ts.map +1 -0
  377. package/dist/tools/db-tools/tools/schema/index.js +25 -0
  378. package/dist/tools/db-tools/tools/schema/index.js.map +1 -0
  379. package/dist/tools/db-tools/tools/schema/schema.d.ts +3 -0
  380. package/dist/tools/db-tools/tools/schema/schema.d.ts.map +1 -0
  381. package/dist/tools/db-tools/tools/schema/schema.js +18 -0
  382. package/dist/tools/db-tools/tools/schema/schema.js.map +1 -0
  383. package/dist/tools/db-tools/tools/tables/index.d.ts +3 -0
  384. package/dist/tools/db-tools/tools/tables/index.d.ts.map +1 -0
  385. package/dist/tools/db-tools/tools/tables/index.js +24 -0
  386. package/dist/tools/db-tools/tools/tables/index.js.map +1 -0
  387. package/dist/tools/db-tools/tools/tables/schema.d.ts +3 -0
  388. package/dist/tools/db-tools/tools/tables/schema.d.ts.map +1 -0
  389. package/dist/tools/db-tools/tools/tables/schema.js +14 -0
  390. package/dist/tools/db-tools/tools/tables/schema.js.map +1 -0
  391. package/dist/tools/db-tools/tools/update/index.d.ts +3 -0
  392. package/dist/tools/db-tools/tools/update/index.d.ts.map +1 -0
  393. package/dist/tools/db-tools/tools/update/index.js +33 -0
  394. package/dist/tools/db-tools/tools/update/index.js.map +1 -0
  395. package/dist/tools/db-tools/tools/update/schema.d.ts +3 -0
  396. package/dist/tools/db-tools/tools/update/schema.d.ts.map +1 -0
  397. package/dist/tools/db-tools/tools/update/schema.js +26 -0
  398. package/dist/tools/db-tools/tools/update/schema.js.map +1 -0
  399. package/dist/tools/diff-tools/index.d.ts +7 -0
  400. package/dist/tools/diff-tools/index.d.ts.map +1 -0
  401. package/dist/tools/diff-tools/index.js +34 -0
  402. package/dist/tools/diff-tools/index.js.map +1 -0
  403. package/dist/tools/diff-tools/tools/apply/index.d.ts +3 -0
  404. package/dist/tools/diff-tools/tools/apply/index.d.ts.map +1 -0
  405. package/dist/tools/diff-tools/tools/apply/index.js +63 -0
  406. package/dist/tools/diff-tools/tools/apply/index.js.map +1 -0
  407. package/dist/tools/diff-tools/tools/apply/schema.d.ts +3 -0
  408. package/dist/tools/diff-tools/tools/apply/schema.d.ts.map +1 -0
  409. package/dist/tools/diff-tools/tools/apply/schema.js +18 -0
  410. package/dist/tools/diff-tools/tools/apply/schema.js.map +1 -0
  411. package/dist/tools/diff-tools/tools/create/index.d.ts +3 -0
  412. package/dist/tools/diff-tools/tools/create/index.d.ts.map +1 -0
  413. package/dist/tools/diff-tools/tools/create/index.js +59 -0
  414. package/dist/tools/diff-tools/tools/create/index.js.map +1 -0
  415. package/dist/tools/diff-tools/tools/create/schema.d.ts +3 -0
  416. package/dist/tools/diff-tools/tools/create/schema.d.ts.map +1 -0
  417. package/dist/tools/diff-tools/tools/create/schema.js +27 -0
  418. package/dist/tools/diff-tools/tools/create/schema.js.map +1 -0
  419. package/dist/tools/diff-tools/tools/preview/index.d.ts +3 -0
  420. package/dist/tools/diff-tools/tools/preview/index.d.ts.map +1 -0
  421. package/dist/tools/diff-tools/tools/preview/index.js +62 -0
  422. package/dist/tools/diff-tools/tools/preview/index.js.map +1 -0
  423. package/dist/tools/diff-tools/tools/preview/schema.d.ts +3 -0
  424. package/dist/tools/diff-tools/tools/preview/schema.d.ts.map +1 -0
  425. package/dist/tools/diff-tools/tools/preview/schema.js +18 -0
  426. package/dist/tools/diff-tools/tools/preview/schema.js.map +1 -0
  427. package/dist/tools/exec-tools/index.d.ts +9 -0
  428. package/dist/tools/exec-tools/index.d.ts.map +1 -0
  429. package/dist/tools/exec-tools/index.js +42 -0
  430. package/dist/tools/exec-tools/index.js.map +1 -0
  431. package/dist/tools/exec-tools/process-registry.d.ts +23 -0
  432. package/dist/tools/exec-tools/process-registry.d.ts.map +1 -0
  433. package/dist/tools/exec-tools/process-registry.js +66 -0
  434. package/dist/tools/exec-tools/process-registry.js.map +1 -0
  435. package/dist/tools/exec-tools/tools/kill/index.d.ts +3 -0
  436. package/dist/tools/exec-tools/tools/kill/index.d.ts.map +1 -0
  437. package/dist/tools/exec-tools/tools/kill/index.js +31 -0
  438. package/dist/tools/exec-tools/tools/kill/index.js.map +1 -0
  439. package/dist/tools/exec-tools/tools/kill/schema.d.ts +7 -0
  440. package/dist/tools/exec-tools/tools/kill/schema.d.ts.map +1 -0
  441. package/dist/tools/exec-tools/tools/kill/schema.js +18 -0
  442. package/dist/tools/exec-tools/tools/kill/schema.js.map +1 -0
  443. package/dist/tools/exec-tools/tools/list-processes/index.d.ts +3 -0
  444. package/dist/tools/exec-tools/tools/list-processes/index.d.ts.map +1 -0
  445. package/dist/tools/exec-tools/tools/list-processes/index.js +21 -0
  446. package/dist/tools/exec-tools/tools/list-processes/index.js.map +1 -0
  447. package/dist/tools/exec-tools/tools/list-processes/schema.d.ts +7 -0
  448. package/dist/tools/exec-tools/tools/list-processes/schema.d.ts.map +1 -0
  449. package/dist/tools/exec-tools/tools/list-processes/schema.js +12 -0
  450. package/dist/tools/exec-tools/tools/list-processes/schema.js.map +1 -0
  451. package/dist/tools/exec-tools/tools/read-output/index.d.ts +3 -0
  452. package/dist/tools/exec-tools/tools/read-output/index.d.ts.map +1 -0
  453. package/dist/tools/exec-tools/tools/read-output/index.js +32 -0
  454. package/dist/tools/exec-tools/tools/read-output/index.js.map +1 -0
  455. package/dist/tools/exec-tools/tools/read-output/schema.d.ts +7 -0
  456. package/dist/tools/exec-tools/tools/read-output/schema.d.ts.map +1 -0
  457. package/dist/tools/exec-tools/tools/read-output/schema.js +18 -0
  458. package/dist/tools/exec-tools/tools/read-output/schema.js.map +1 -0
  459. package/dist/tools/exec-tools/tools/run/index.d.ts +3 -0
  460. package/dist/tools/exec-tools/tools/run/index.d.ts.map +1 -0
  461. package/dist/tools/exec-tools/tools/run/index.js +38 -0
  462. package/dist/tools/exec-tools/tools/run/index.js.map +1 -0
  463. package/dist/tools/exec-tools/tools/run/schema.d.ts +7 -0
  464. package/dist/tools/exec-tools/tools/run/schema.d.ts.map +1 -0
  465. package/dist/tools/exec-tools/tools/run/schema.js +27 -0
  466. package/dist/tools/exec-tools/tools/run/schema.js.map +1 -0
  467. package/dist/tools/exec-tools/tools/run-background/index.d.ts +3 -0
  468. package/dist/tools/exec-tools/tools/run-background/index.d.ts.map +1 -0
  469. package/dist/tools/exec-tools/tools/run-background/index.js +35 -0
  470. package/dist/tools/exec-tools/tools/run-background/index.js.map +1 -0
  471. package/dist/tools/exec-tools/tools/run-background/schema.d.ts +7 -0
  472. package/dist/tools/exec-tools/tools/run-background/schema.d.ts.map +1 -0
  473. package/dist/tools/exec-tools/tools/run-background/schema.js +22 -0
  474. package/dist/tools/exec-tools/tools/run-background/schema.js.map +1 -0
  475. package/dist/tools/exec-tools/tools/run-shell/index.d.ts +3 -0
  476. package/dist/tools/exec-tools/tools/run-shell/index.d.ts.map +1 -0
  477. package/dist/tools/exec-tools/tools/run-shell/index.js +46 -0
  478. package/dist/tools/exec-tools/tools/run-shell/index.js.map +1 -0
  479. package/dist/tools/exec-tools/tools/run-shell/schema.d.ts +7 -0
  480. package/dist/tools/exec-tools/tools/run-shell/schema.d.ts.map +1 -0
  481. package/dist/tools/exec-tools/tools/run-shell/schema.js +27 -0
  482. package/dist/tools/exec-tools/tools/run-shell/schema.js.map +1 -0
  483. package/dist/tools/fs-tools/index.d.ts +21 -0
  484. package/dist/tools/fs-tools/index.d.ts.map +1 -0
  485. package/dist/tools/fs-tools/index.js +86 -0
  486. package/dist/tools/fs-tools/index.js.map +1 -0
  487. package/dist/tools/fs-tools/tools/append-file/index.d.ts +3 -0
  488. package/dist/tools/fs-tools/tools/append-file/index.d.ts.map +1 -0
  489. package/dist/tools/fs-tools/tools/append-file/index.js +66 -0
  490. package/dist/tools/fs-tools/tools/append-file/index.js.map +1 -0
  491. package/dist/tools/fs-tools/tools/append-file/schema.d.ts +7 -0
  492. package/dist/tools/fs-tools/tools/append-file/schema.d.ts.map +1 -0
  493. package/dist/tools/fs-tools/tools/append-file/schema.js +27 -0
  494. package/dist/tools/fs-tools/tools/append-file/schema.js.map +1 -0
  495. package/dist/tools/fs-tools/tools/batch-read/index.d.ts +3 -0
  496. package/dist/tools/fs-tools/tools/batch-read/index.d.ts.map +1 -0
  497. package/dist/tools/fs-tools/tools/batch-read/index.js +54 -0
  498. package/dist/tools/fs-tools/tools/batch-read/index.js.map +1 -0
  499. package/dist/tools/fs-tools/tools/batch-read/schema.d.ts +7 -0
  500. package/dist/tools/fs-tools/tools/batch-read/schema.d.ts.map +1 -0
  501. package/dist/tools/fs-tools/tools/batch-read/schema.js +27 -0
  502. package/dist/tools/fs-tools/tools/batch-read/schema.js.map +1 -0
  503. package/dist/tools/fs-tools/tools/batch-write/index.d.ts +3 -0
  504. package/dist/tools/fs-tools/tools/batch-write/index.d.ts.map +1 -0
  505. package/dist/tools/fs-tools/tools/batch-write/index.js +75 -0
  506. package/dist/tools/fs-tools/tools/batch-write/index.js.map +1 -0
  507. package/dist/tools/fs-tools/tools/batch-write/schema.d.ts +7 -0
  508. package/dist/tools/fs-tools/tools/batch-write/schema.d.ts.map +1 -0
  509. package/dist/tools/fs-tools/tools/batch-write/schema.js +37 -0
  510. package/dist/tools/fs-tools/tools/batch-write/schema.js.map +1 -0
  511. package/dist/tools/fs-tools/tools/copy/index.d.ts +3 -0
  512. package/dist/tools/fs-tools/tools/copy/index.d.ts.map +1 -0
  513. package/dist/tools/fs-tools/tools/copy/index.js +85 -0
  514. package/dist/tools/fs-tools/tools/copy/index.js.map +1 -0
  515. package/dist/tools/fs-tools/tools/copy/schema.d.ts +7 -0
  516. package/dist/tools/fs-tools/tools/copy/schema.d.ts.map +1 -0
  517. package/dist/tools/fs-tools/tools/copy/schema.js +22 -0
  518. package/dist/tools/fs-tools/tools/copy/schema.js.map +1 -0
  519. package/dist/tools/fs-tools/tools/create-dir/index.d.ts +3 -0
  520. package/dist/tools/fs-tools/tools/create-dir/index.d.ts.map +1 -0
  521. package/dist/tools/fs-tools/tools/create-dir/index.js +63 -0
  522. package/dist/tools/fs-tools/tools/create-dir/index.js.map +1 -0
  523. package/dist/tools/fs-tools/tools/create-dir/schema.d.ts +7 -0
  524. package/dist/tools/fs-tools/tools/create-dir/schema.d.ts.map +1 -0
  525. package/dist/tools/fs-tools/tools/create-dir/schema.js +23 -0
  526. package/dist/tools/fs-tools/tools/create-dir/schema.js.map +1 -0
  527. package/dist/tools/fs-tools/tools/delete-dir/index.d.ts +3 -0
  528. package/dist/tools/fs-tools/tools/delete-dir/index.d.ts.map +1 -0
  529. package/dist/tools/fs-tools/tools/delete-dir/index.js +36 -0
  530. package/dist/tools/fs-tools/tools/delete-dir/index.js.map +1 -0
  531. package/dist/tools/fs-tools/tools/delete-dir/schema.d.ts +7 -0
  532. package/dist/tools/fs-tools/tools/delete-dir/schema.d.ts.map +1 -0
  533. package/dist/tools/fs-tools/tools/delete-dir/schema.js +22 -0
  534. package/dist/tools/fs-tools/tools/delete-dir/schema.js.map +1 -0
  535. package/dist/tools/fs-tools/tools/delete-file/index.d.ts +3 -0
  536. package/dist/tools/fs-tools/tools/delete-file/index.d.ts.map +1 -0
  537. package/dist/tools/fs-tools/tools/delete-file/index.js +62 -0
  538. package/dist/tools/fs-tools/tools/delete-file/index.js.map +1 -0
  539. package/dist/tools/fs-tools/tools/delete-file/schema.d.ts +7 -0
  540. package/dist/tools/fs-tools/tools/delete-file/schema.d.ts.map +1 -0
  541. package/dist/tools/fs-tools/tools/delete-file/schema.js +18 -0
  542. package/dist/tools/fs-tools/tools/delete-file/schema.js.map +1 -0
  543. package/dist/tools/fs-tools/tools/exists/index.d.ts +3 -0
  544. package/dist/tools/fs-tools/tools/exists/index.d.ts.map +1 -0
  545. package/dist/tools/fs-tools/tools/exists/index.js +55 -0
  546. package/dist/tools/fs-tools/tools/exists/index.js.map +1 -0
  547. package/dist/tools/fs-tools/tools/exists/schema.d.ts +7 -0
  548. package/dist/tools/fs-tools/tools/exists/schema.d.ts.map +1 -0
  549. package/dist/tools/fs-tools/tools/exists/schema.js +18 -0
  550. package/dist/tools/fs-tools/tools/exists/schema.js.map +1 -0
  551. package/dist/tools/fs-tools/tools/glob/index.d.ts +3 -0
  552. package/dist/tools/fs-tools/tools/glob/index.d.ts.map +1 -0
  553. package/dist/tools/fs-tools/tools/glob/index.js +46 -0
  554. package/dist/tools/fs-tools/tools/glob/index.js.map +1 -0
  555. package/dist/tools/fs-tools/tools/glob/schema.d.ts +7 -0
  556. package/dist/tools/fs-tools/tools/glob/schema.d.ts.map +1 -0
  557. package/dist/tools/fs-tools/tools/glob/schema.js +39 -0
  558. package/dist/tools/fs-tools/tools/glob/schema.js.map +1 -0
  559. package/dist/tools/fs-tools/tools/list-dir/index.d.ts +3 -0
  560. package/dist/tools/fs-tools/tools/list-dir/index.d.ts.map +1 -0
  561. package/dist/tools/fs-tools/tools/list-dir/index.js +82 -0
  562. package/dist/tools/fs-tools/tools/list-dir/index.js.map +1 -0
  563. package/dist/tools/fs-tools/tools/list-dir/schema.d.ts +7 -0
  564. package/dist/tools/fs-tools/tools/list-dir/schema.d.ts.map +1 -0
  565. package/dist/tools/fs-tools/tools/list-dir/schema.js +23 -0
  566. package/dist/tools/fs-tools/tools/list-dir/schema.js.map +1 -0
  567. package/dist/tools/fs-tools/tools/move/index.d.ts +3 -0
  568. package/dist/tools/fs-tools/tools/move/index.d.ts.map +1 -0
  569. package/dist/tools/fs-tools/tools/move/index.js +68 -0
  570. package/dist/tools/fs-tools/tools/move/index.js.map +1 -0
  571. package/dist/tools/fs-tools/tools/move/schema.d.ts +7 -0
  572. package/dist/tools/fs-tools/tools/move/schema.d.ts.map +1 -0
  573. package/dist/tools/fs-tools/tools/move/schema.js +22 -0
  574. package/dist/tools/fs-tools/tools/move/schema.js.map +1 -0
  575. package/dist/tools/fs-tools/tools/read-file/index.d.ts +3 -0
  576. package/dist/tools/fs-tools/tools/read-file/index.d.ts.map +1 -0
  577. package/dist/tools/fs-tools/tools/read-file/index.js +63 -0
  578. package/dist/tools/fs-tools/tools/read-file/index.js.map +1 -0
  579. package/dist/tools/fs-tools/tools/read-file/schema.d.ts +7 -0
  580. package/dist/tools/fs-tools/tools/read-file/schema.d.ts.map +1 -0
  581. package/dist/tools/fs-tools/tools/read-file/schema.js +23 -0
  582. package/dist/tools/fs-tools/tools/read-file/schema.js.map +1 -0
  583. package/dist/tools/fs-tools/tools/read-file-range/index.d.ts +3 -0
  584. package/dist/tools/fs-tools/tools/read-file-range/index.d.ts.map +1 -0
  585. package/dist/tools/fs-tools/tools/read-file-range/index.js +84 -0
  586. package/dist/tools/fs-tools/tools/read-file-range/index.js.map +1 -0
  587. package/dist/tools/fs-tools/tools/read-file-range/schema.d.ts +7 -0
  588. package/dist/tools/fs-tools/tools/read-file-range/schema.d.ts.map +1 -0
  589. package/dist/tools/fs-tools/tools/read-file-range/schema.js +26 -0
  590. package/dist/tools/fs-tools/tools/read-file-range/schema.js.map +1 -0
  591. package/dist/tools/fs-tools/tools/replace-in-file/index.d.ts +3 -0
  592. package/dist/tools/fs-tools/tools/replace-in-file/index.d.ts.map +1 -0
  593. package/dist/tools/fs-tools/tools/replace-in-file/index.js +82 -0
  594. package/dist/tools/fs-tools/tools/replace-in-file/index.js.map +1 -0
  595. package/dist/tools/fs-tools/tools/replace-in-file/schema.d.ts +7 -0
  596. package/dist/tools/fs-tools/tools/replace-in-file/schema.d.ts.map +1 -0
  597. package/dist/tools/fs-tools/tools/replace-in-file/schema.js +26 -0
  598. package/dist/tools/fs-tools/tools/replace-in-file/schema.js.map +1 -0
  599. package/dist/tools/fs-tools/tools/search/index.d.ts +3 -0
  600. package/dist/tools/fs-tools/tools/search/index.d.ts.map +1 -0
  601. package/dist/tools/fs-tools/tools/search/index.js +119 -0
  602. package/dist/tools/fs-tools/tools/search/index.js.map +1 -0
  603. package/dist/tools/fs-tools/tools/search/schema.d.ts +7 -0
  604. package/dist/tools/fs-tools/tools/search/schema.d.ts.map +1 -0
  605. package/dist/tools/fs-tools/tools/search/schema.js +42 -0
  606. package/dist/tools/fs-tools/tools/search/schema.js.map +1 -0
  607. package/dist/tools/fs-tools/tools/stat/index.d.ts +3 -0
  608. package/dist/tools/fs-tools/tools/stat/index.d.ts.map +1 -0
  609. package/dist/tools/fs-tools/tools/stat/index.js +66 -0
  610. package/dist/tools/fs-tools/tools/stat/index.js.map +1 -0
  611. package/dist/tools/fs-tools/tools/stat/schema.d.ts +7 -0
  612. package/dist/tools/fs-tools/tools/stat/schema.d.ts.map +1 -0
  613. package/dist/tools/fs-tools/tools/stat/schema.js +18 -0
  614. package/dist/tools/fs-tools/tools/stat/schema.js.map +1 -0
  615. package/dist/tools/fs-tools/tools/tree/index.d.ts +3 -0
  616. package/dist/tools/fs-tools/tools/tree/index.d.ts.map +1 -0
  617. package/dist/tools/fs-tools/tools/tree/index.js +92 -0
  618. package/dist/tools/fs-tools/tools/tree/index.js.map +1 -0
  619. package/dist/tools/fs-tools/tools/tree/schema.d.ts +7 -0
  620. package/dist/tools/fs-tools/tools/tree/schema.d.ts.map +1 -0
  621. package/dist/tools/fs-tools/tools/tree/schema.js +23 -0
  622. package/dist/tools/fs-tools/tools/tree/schema.js.map +1 -0
  623. package/dist/tools/fs-tools/tools/write-file/index.d.ts +3 -0
  624. package/dist/tools/fs-tools/tools/write-file/index.d.ts.map +1 -0
  625. package/dist/tools/fs-tools/tools/write-file/index.js +66 -0
  626. package/dist/tools/fs-tools/tools/write-file/index.js.map +1 -0
  627. package/dist/tools/fs-tools/tools/write-file/schema.d.ts +7 -0
  628. package/dist/tools/fs-tools/tools/write-file/schema.d.ts.map +1 -0
  629. package/dist/tools/fs-tools/tools/write-file/schema.js +27 -0
  630. package/dist/tools/fs-tools/tools/write-file/schema.js.map +1 -0
  631. package/dist/tools/git-tools/index.d.ts +13 -0
  632. package/dist/tools/git-tools/index.d.ts.map +1 -0
  633. package/dist/tools/git-tools/index.js +58 -0
  634. package/dist/tools/git-tools/index.js.map +1 -0
  635. package/dist/tools/git-tools/tools/add/index.d.ts +3 -0
  636. package/dist/tools/git-tools/tools/add/index.d.ts.map +1 -0
  637. package/dist/tools/git-tools/tools/add/index.js +24 -0
  638. package/dist/tools/git-tools/tools/add/index.js.map +1 -0
  639. package/dist/tools/git-tools/tools/add/schema.d.ts +3 -0
  640. package/dist/tools/git-tools/tools/add/schema.d.ts.map +1 -0
  641. package/dist/tools/git-tools/tools/add/schema.js +14 -0
  642. package/dist/tools/git-tools/tools/add/schema.js.map +1 -0
  643. package/dist/tools/git-tools/tools/blame/index.d.ts +3 -0
  644. package/dist/tools/git-tools/tools/blame/index.d.ts.map +1 -0
  645. package/dist/tools/git-tools/tools/blame/index.js +24 -0
  646. package/dist/tools/git-tools/tools/blame/index.js.map +1 -0
  647. package/dist/tools/git-tools/tools/blame/schema.d.ts +3 -0
  648. package/dist/tools/git-tools/tools/blame/schema.d.ts.map +1 -0
  649. package/dist/tools/git-tools/tools/blame/schema.js +14 -0
  650. package/dist/tools/git-tools/tools/blame/schema.js.map +1 -0
  651. package/dist/tools/git-tools/tools/branch-create/index.d.ts +3 -0
  652. package/dist/tools/git-tools/tools/branch-create/index.d.ts.map +1 -0
  653. package/dist/tools/git-tools/tools/branch-create/index.js +42 -0
  654. package/dist/tools/git-tools/tools/branch-create/index.js.map +1 -0
  655. package/dist/tools/git-tools/tools/branch-create/schema.d.ts +3 -0
  656. package/dist/tools/git-tools/tools/branch-create/schema.d.ts.map +1 -0
  657. package/dist/tools/git-tools/tools/branch-create/schema.js +23 -0
  658. package/dist/tools/git-tools/tools/branch-create/schema.js.map +1 -0
  659. package/dist/tools/git-tools/tools/branch-list/index.d.ts +3 -0
  660. package/dist/tools/git-tools/tools/branch-list/index.d.ts.map +1 -0
  661. package/dist/tools/git-tools/tools/branch-list/index.js +25 -0
  662. package/dist/tools/git-tools/tools/branch-list/index.js.map +1 -0
  663. package/dist/tools/git-tools/tools/branch-list/schema.d.ts +3 -0
  664. package/dist/tools/git-tools/tools/branch-list/schema.d.ts.map +1 -0
  665. package/dist/tools/git-tools/tools/branch-list/schema.js +14 -0
  666. package/dist/tools/git-tools/tools/branch-list/schema.js.map +1 -0
  667. package/dist/tools/git-tools/tools/checkout/index.d.ts +3 -0
  668. package/dist/tools/git-tools/tools/checkout/index.d.ts.map +1 -0
  669. package/dist/tools/git-tools/tools/checkout/index.js +24 -0
  670. package/dist/tools/git-tools/tools/checkout/index.js.map +1 -0
  671. package/dist/tools/git-tools/tools/checkout/schema.d.ts +3 -0
  672. package/dist/tools/git-tools/tools/checkout/schema.d.ts.map +1 -0
  673. package/dist/tools/git-tools/tools/checkout/schema.js +14 -0
  674. package/dist/tools/git-tools/tools/checkout/schema.js.map +1 -0
  675. package/dist/tools/git-tools/tools/commit/index.d.ts +3 -0
  676. package/dist/tools/git-tools/tools/commit/index.d.ts.map +1 -0
  677. package/dist/tools/git-tools/tools/commit/index.js +29 -0
  678. package/dist/tools/git-tools/tools/commit/index.js.map +1 -0
  679. package/dist/tools/git-tools/tools/commit/schema.d.ts +3 -0
  680. package/dist/tools/git-tools/tools/commit/schema.d.ts.map +1 -0
  681. package/dist/tools/git-tools/tools/commit/schema.js +14 -0
  682. package/dist/tools/git-tools/tools/commit/schema.js.map +1 -0
  683. package/dist/tools/git-tools/tools/diff/index.d.ts +3 -0
  684. package/dist/tools/git-tools/tools/diff/index.d.ts.map +1 -0
  685. package/dist/tools/git-tools/tools/diff/index.js +35 -0
  686. package/dist/tools/git-tools/tools/diff/index.js.map +1 -0
  687. package/dist/tools/git-tools/tools/diff/schema.d.ts +3 -0
  688. package/dist/tools/git-tools/tools/diff/schema.d.ts.map +1 -0
  689. package/dist/tools/git-tools/tools/diff/schema.js +18 -0
  690. package/dist/tools/git-tools/tools/diff/schema.js.map +1 -0
  691. package/dist/tools/git-tools/tools/log/index.d.ts +3 -0
  692. package/dist/tools/git-tools/tools/log/index.d.ts.map +1 -0
  693. package/dist/tools/git-tools/tools/log/index.js +35 -0
  694. package/dist/tools/git-tools/tools/log/index.js.map +1 -0
  695. package/dist/tools/git-tools/tools/log/schema.d.ts +3 -0
  696. package/dist/tools/git-tools/tools/log/schema.d.ts.map +1 -0
  697. package/dist/tools/git-tools/tools/log/schema.js +18 -0
  698. package/dist/tools/git-tools/tools/log/schema.js.map +1 -0
  699. package/dist/tools/git-tools/tools/status/index.d.ts +3 -0
  700. package/dist/tools/git-tools/tools/status/index.d.ts.map +1 -0
  701. package/dist/tools/git-tools/tools/status/index.js +50 -0
  702. package/dist/tools/git-tools/tools/status/index.js.map +1 -0
  703. package/dist/tools/git-tools/tools/status/schema.d.ts +3 -0
  704. package/dist/tools/git-tools/tools/status/schema.d.ts.map +1 -0
  705. package/dist/tools/git-tools/tools/status/schema.js +13 -0
  706. package/dist/tools/git-tools/tools/status/schema.js.map +1 -0
  707. package/dist/tools/git-tools/utils.d.ts +3 -0
  708. package/dist/tools/git-tools/utils.d.ts.map +1 -0
  709. package/dist/tools/git-tools/utils.js +13 -0
  710. package/dist/tools/git-tools/utils.js.map +1 -0
  711. package/dist/tools/http-tools/index.d.ts +8 -0
  712. package/dist/tools/http-tools/index.d.ts.map +1 -0
  713. package/dist/tools/http-tools/index.js +33 -0
  714. package/dist/tools/http-tools/index.js.map +1 -0
  715. package/dist/tools/http-tools/tools/delete/index.d.ts +3 -0
  716. package/dist/tools/http-tools/tools/delete/index.d.ts.map +1 -0
  717. package/dist/tools/http-tools/tools/delete/index.js +34 -0
  718. package/dist/tools/http-tools/tools/delete/index.js.map +1 -0
  719. package/dist/tools/http-tools/tools/delete/schema.d.ts +7 -0
  720. package/dist/tools/http-tools/tools/delete/schema.d.ts.map +1 -0
  721. package/dist/tools/http-tools/tools/delete/schema.js +22 -0
  722. package/dist/tools/http-tools/tools/delete/schema.js.map +1 -0
  723. package/dist/tools/http-tools/tools/download/index.d.ts +3 -0
  724. package/dist/tools/http-tools/tools/download/index.d.ts.map +1 -0
  725. package/dist/tools/http-tools/tools/download/index.js +77 -0
  726. package/dist/tools/http-tools/tools/download/index.js.map +1 -0
  727. package/dist/tools/http-tools/tools/download/schema.d.ts +7 -0
  728. package/dist/tools/http-tools/tools/download/schema.d.ts.map +1 -0
  729. package/dist/tools/http-tools/tools/download/schema.js +26 -0
  730. package/dist/tools/http-tools/tools/download/schema.js.map +1 -0
  731. package/dist/tools/http-tools/tools/get/index.d.ts +3 -0
  732. package/dist/tools/http-tools/tools/get/index.d.ts.map +1 -0
  733. package/dist/tools/http-tools/tools/get/index.js +37 -0
  734. package/dist/tools/http-tools/tools/get/index.js.map +1 -0
  735. package/dist/tools/http-tools/tools/get/schema.d.ts +7 -0
  736. package/dist/tools/http-tools/tools/get/schema.d.ts.map +1 -0
  737. package/dist/tools/http-tools/tools/get/schema.js +22 -0
  738. package/dist/tools/http-tools/tools/get/schema.js.map +1 -0
  739. package/dist/tools/http-tools/tools/post/index.d.ts +3 -0
  740. package/dist/tools/http-tools/tools/post/index.d.ts.map +1 -0
  741. package/dist/tools/http-tools/tools/post/index.js +46 -0
  742. package/dist/tools/http-tools/tools/post/index.js.map +1 -0
  743. package/dist/tools/http-tools/tools/post/schema.d.ts +7 -0
  744. package/dist/tools/http-tools/tools/post/schema.d.ts.map +1 -0
  745. package/dist/tools/http-tools/tools/post/schema.js +26 -0
  746. package/dist/tools/http-tools/tools/post/schema.js.map +1 -0
  747. package/dist/tools/http-tools/tools/put/index.d.ts +3 -0
  748. package/dist/tools/http-tools/tools/put/index.d.ts.map +1 -0
  749. package/dist/tools/http-tools/tools/put/index.js +45 -0
  750. package/dist/tools/http-tools/tools/put/index.js.map +1 -0
  751. package/dist/tools/http-tools/tools/put/schema.d.ts +7 -0
  752. package/dist/tools/http-tools/tools/put/schema.d.ts.map +1 -0
  753. package/dist/tools/http-tools/tools/put/schema.js +26 -0
  754. package/dist/tools/http-tools/tools/put/schema.js.map +1 -0
  755. package/dist/tools/index.d.ts +17 -0
  756. package/dist/tools/index.d.ts.map +1 -0
  757. package/dist/tools/index.js +120 -0
  758. package/dist/tools/index.js.map +1 -0
  759. package/dist/tools/registry.d.ts +108 -0
  760. package/dist/tools/registry.d.ts.map +1 -0
  761. package/dist/tools/registry.js +217 -0
  762. package/dist/tools/registry.js.map +1 -0
  763. package/dist/tools/router.d.ts +40 -0
  764. package/dist/tools/router.d.ts.map +1 -0
  765. package/dist/tools/router.js +127 -0
  766. package/dist/tools/router.js.map +1 -0
  767. package/dist/tools/search/bm25-engine.d.ts +65 -0
  768. package/dist/tools/search/bm25-engine.d.ts.map +1 -0
  769. package/dist/tools/search/bm25-engine.js +218 -0
  770. package/dist/tools/search/bm25-engine.js.map +1 -0
  771. package/dist/tools/search/index.d.ts +11 -0
  772. package/dist/tools/search/index.d.ts.map +1 -0
  773. package/dist/tools/search/index.js +21 -0
  774. package/dist/tools/search/index.js.map +1 -0
  775. package/dist/tools/search/system-prompt.d.ts +20 -0
  776. package/dist/tools/search/system-prompt.d.ts.map +1 -0
  777. package/dist/tools/search/system-prompt.js +62 -0
  778. package/dist/tools/search/system-prompt.js.map +1 -0
  779. package/dist/tools/search/tool-cache.d.ts +56 -0
  780. package/dist/tools/search/tool-cache.d.ts.map +1 -0
  781. package/dist/tools/search/tool-cache.js +107 -0
  782. package/dist/tools/search/tool-cache.js.map +1 -0
  783. package/dist/tools/search/tool-search.d.ts +21 -0
  784. package/dist/tools/search/tool-search.d.ts.map +1 -0
  785. package/dist/tools/search/tool-search.js +66 -0
  786. package/dist/tools/search/tool-search.js.map +1 -0
  787. package/dist/tools/system-tools/index.d.ts +8 -0
  788. package/dist/tools/system-tools/index.d.ts.map +1 -0
  789. package/dist/tools/system-tools/index.js +39 -0
  790. package/dist/tools/system-tools/index.js.map +1 -0
  791. package/dist/tools/system-tools/tools/cwd/index.d.ts +3 -0
  792. package/dist/tools/system-tools/tools/cwd/index.d.ts.map +1 -0
  793. package/dist/tools/system-tools/tools/cwd/index.js +16 -0
  794. package/dist/tools/system-tools/tools/cwd/index.js.map +1 -0
  795. package/dist/tools/system-tools/tools/cwd/schema.d.ts +7 -0
  796. package/dist/tools/system-tools/tools/cwd/schema.d.ts.map +1 -0
  797. package/dist/tools/system-tools/tools/cwd/schema.js +12 -0
  798. package/dist/tools/system-tools/tools/cwd/schema.js.map +1 -0
  799. package/dist/tools/system-tools/tools/disk-usage/index.d.ts +3 -0
  800. package/dist/tools/system-tools/tools/disk-usage/index.d.ts.map +1 -0
  801. package/dist/tools/system-tools/tools/disk-usage/index.js +41 -0
  802. package/dist/tools/system-tools/tools/disk-usage/index.js.map +1 -0
  803. package/dist/tools/system-tools/tools/disk-usage/schema.d.ts +7 -0
  804. package/dist/tools/system-tools/tools/disk-usage/schema.d.ts.map +1 -0
  805. package/dist/tools/system-tools/tools/disk-usage/schema.js +18 -0
  806. package/dist/tools/system-tools/tools/disk-usage/schema.js.map +1 -0
  807. package/dist/tools/system-tools/tools/env/index.d.ts +3 -0
  808. package/dist/tools/system-tools/tools/env/index.d.ts.map +1 -0
  809. package/dist/tools/system-tools/tools/env/index.js +32 -0
  810. package/dist/tools/system-tools/tools/env/index.js.map +1 -0
  811. package/dist/tools/system-tools/tools/env/schema.d.ts +7 -0
  812. package/dist/tools/system-tools/tools/env/schema.d.ts.map +1 -0
  813. package/dist/tools/system-tools/tools/env/schema.js +17 -0
  814. package/dist/tools/system-tools/tools/env/schema.js.map +1 -0
  815. package/dist/tools/system-tools/tools/info/index.d.ts +3 -0
  816. package/dist/tools/system-tools/tools/info/index.d.ts.map +1 -0
  817. package/dist/tools/system-tools/tools/info/index.js +68 -0
  818. package/dist/tools/system-tools/tools/info/index.js.map +1 -0
  819. package/dist/tools/system-tools/tools/info/schema.d.ts +7 -0
  820. package/dist/tools/system-tools/tools/info/schema.d.ts.map +1 -0
  821. package/dist/tools/system-tools/tools/info/schema.js +12 -0
  822. package/dist/tools/system-tools/tools/info/schema.js.map +1 -0
  823. package/dist/tools/system-tools/tools/set-env/index.d.ts +3 -0
  824. package/dist/tools/system-tools/tools/set-env/index.d.ts.map +1 -0
  825. package/dist/tools/system-tools/tools/set-env/index.js +29 -0
  826. package/dist/tools/system-tools/tools/set-env/index.js.map +1 -0
  827. package/dist/tools/system-tools/tools/set-env/schema.d.ts +7 -0
  828. package/dist/tools/system-tools/tools/set-env/schema.d.ts.map +1 -0
  829. package/dist/tools/system-tools/tools/set-env/schema.js +22 -0
  830. package/dist/tools/system-tools/tools/set-env/schema.js.map +1 -0
  831. package/dist/tools/types.d.ts +118 -0
  832. package/dist/tools/types.d.ts.map +1 -0
  833. package/dist/tools/types.js +27 -0
  834. package/dist/tools/types.js.map +1 -0
  835. package/dist/tools/web-tools/index.d.ts +12 -0
  836. package/dist/tools/web-tools/index.d.ts.map +1 -0
  837. package/dist/tools/web-tools/index.js +53 -0
  838. package/dist/tools/web-tools/index.js.map +1 -0
  839. package/dist/tools/web-tools/tools/extract-links/index.d.ts +3 -0
  840. package/dist/tools/web-tools/tools/extract-links/index.d.ts.map +1 -0
  841. package/dist/tools/web-tools/tools/extract-links/index.js +125 -0
  842. package/dist/tools/web-tools/tools/extract-links/index.js.map +1 -0
  843. package/dist/tools/web-tools/tools/extract-links/schema.d.ts +7 -0
  844. package/dist/tools/web-tools/tools/extract-links/schema.d.ts.map +1 -0
  845. package/dist/tools/web-tools/tools/extract-links/schema.js +27 -0
  846. package/dist/tools/web-tools/tools/extract-links/schema.js.map +1 -0
  847. package/dist/tools/web-tools/tools/feed/index.d.ts +3 -0
  848. package/dist/tools/web-tools/tools/feed/index.d.ts.map +1 -0
  849. package/dist/tools/web-tools/tools/feed/index.js +41 -0
  850. package/dist/tools/web-tools/tools/feed/index.js.map +1 -0
  851. package/dist/tools/web-tools/tools/feed/schema.d.ts +7 -0
  852. package/dist/tools/web-tools/tools/feed/schema.d.ts.map +1 -0
  853. package/dist/tools/web-tools/tools/feed/schema.js +28 -0
  854. package/dist/tools/web-tools/tools/feed/schema.js.map +1 -0
  855. package/dist/tools/web-tools/tools/fetch/extractor.d.ts +37 -0
  856. package/dist/tools/web-tools/tools/fetch/extractor.d.ts.map +1 -0
  857. package/dist/tools/web-tools/tools/fetch/extractor.js +196 -0
  858. package/dist/tools/web-tools/tools/fetch/extractor.js.map +1 -0
  859. package/dist/tools/web-tools/tools/fetch/index.d.ts +3 -0
  860. package/dist/tools/web-tools/tools/fetch/index.d.ts.map +1 -0
  861. package/dist/tools/web-tools/tools/fetch/index.js +65 -0
  862. package/dist/tools/web-tools/tools/fetch/index.js.map +1 -0
  863. package/dist/tools/web-tools/tools/fetch/schema.d.ts +7 -0
  864. package/dist/tools/web-tools/tools/fetch/schema.d.ts.map +1 -0
  865. package/dist/tools/web-tools/tools/fetch/schema.js +33 -0
  866. package/dist/tools/web-tools/tools/fetch/schema.js.map +1 -0
  867. package/dist/tools/web-tools/tools/map/index.d.ts +3 -0
  868. package/dist/tools/web-tools/tools/map/index.d.ts.map +1 -0
  869. package/dist/tools/web-tools/tools/map/index.js +101 -0
  870. package/dist/tools/web-tools/tools/map/index.js.map +1 -0
  871. package/dist/tools/web-tools/tools/map/schema.d.ts +7 -0
  872. package/dist/tools/web-tools/tools/map/schema.d.ts.map +1 -0
  873. package/dist/tools/web-tools/tools/map/schema.js +23 -0
  874. package/dist/tools/web-tools/tools/map/schema.js.map +1 -0
  875. package/dist/tools/web-tools/tools/metadata/index.d.ts +3 -0
  876. package/dist/tools/web-tools/tools/metadata/index.d.ts.map +1 -0
  877. package/dist/tools/web-tools/tools/metadata/index.js +113 -0
  878. package/dist/tools/web-tools/tools/metadata/index.js.map +1 -0
  879. package/dist/tools/web-tools/tools/metadata/schema.d.ts +7 -0
  880. package/dist/tools/web-tools/tools/metadata/schema.d.ts.map +1 -0
  881. package/dist/tools/web-tools/tools/metadata/schema.js +23 -0
  882. package/dist/tools/web-tools/tools/metadata/schema.js.map +1 -0
  883. package/dist/tools/web-tools/tools/scrape/index.d.ts +3 -0
  884. package/dist/tools/web-tools/tools/scrape/index.d.ts.map +1 -0
  885. package/dist/tools/web-tools/tools/scrape/index.js +249 -0
  886. package/dist/tools/web-tools/tools/scrape/index.js.map +1 -0
  887. package/dist/tools/web-tools/tools/scrape/schema.d.ts +7 -0
  888. package/dist/tools/web-tools/tools/scrape/schema.d.ts.map +1 -0
  889. package/dist/tools/web-tools/tools/scrape/schema.js +42 -0
  890. package/dist/tools/web-tools/tools/scrape/schema.js.map +1 -0
  891. package/dist/tools/web-tools/tools/screenshot/index.d.ts +3 -0
  892. package/dist/tools/web-tools/tools/screenshot/index.d.ts.map +1 -0
  893. package/dist/tools/web-tools/tools/screenshot/index.js +57 -0
  894. package/dist/tools/web-tools/tools/screenshot/index.js.map +1 -0
  895. package/dist/tools/web-tools/tools/screenshot/schema.d.ts +7 -0
  896. package/dist/tools/web-tools/tools/screenshot/schema.d.ts.map +1 -0
  897. package/dist/tools/web-tools/tools/screenshot/schema.js +37 -0
  898. package/dist/tools/web-tools/tools/screenshot/schema.js.map +1 -0
  899. package/dist/tools/web-tools/tools/search/index.d.ts +3 -0
  900. package/dist/tools/web-tools/tools/search/index.d.ts.map +1 -0
  901. package/dist/tools/web-tools/tools/search/index.js +252 -0
  902. package/dist/tools/web-tools/tools/search/index.js.map +1 -0
  903. package/dist/tools/web-tools/tools/search/schema.d.ts +7 -0
  904. package/dist/tools/web-tools/tools/search/schema.d.ts.map +1 -0
  905. package/dist/tools/web-tools/tools/search/schema.js +38 -0
  906. package/dist/tools/web-tools/tools/search/schema.js.map +1 -0
  907. package/dist/tools/web-tools/tools/sitemap/index.d.ts +3 -0
  908. package/dist/tools/web-tools/tools/sitemap/index.d.ts.map +1 -0
  909. package/dist/tools/web-tools/tools/sitemap/index.js +153 -0
  910. package/dist/tools/web-tools/tools/sitemap/index.js.map +1 -0
  911. package/dist/tools/web-tools/tools/sitemap/schema.d.ts +7 -0
  912. package/dist/tools/web-tools/tools/sitemap/schema.d.ts.map +1 -0
  913. package/dist/tools/web-tools/tools/sitemap/schema.js +28 -0
  914. package/dist/tools/web-tools/tools/sitemap/schema.js.map +1 -0
  915. package/dist/tools/web-tools/utils/puppeteer-loader.d.ts +6 -0
  916. package/dist/tools/web-tools/utils/puppeteer-loader.d.ts.map +1 -0
  917. package/dist/tools/web-tools/utils/puppeteer-loader.js +17 -0
  918. package/dist/tools/web-tools/utils/puppeteer-loader.js.map +1 -0
  919. package/dist/tools/web-tools/utils/rss-loader.d.ts +10 -0
  920. package/dist/tools/web-tools/utils/rss-loader.d.ts.map +1 -0
  921. package/dist/tools/web-tools/utils/rss-loader.js +17 -0
  922. package/dist/tools/web-tools/utils/rss-loader.js.map +1 -0
  923. package/dist/types/index.d.ts +221 -0
  924. package/dist/types/index.d.ts.map +1 -0
  925. package/dist/types/index.js +3 -0
  926. package/dist/types/index.js.map +1 -0
  927. package/dist/utils/global-config-loader.d.ts +13 -0
  928. package/dist/utils/global-config-loader.d.ts.map +1 -0
  929. package/dist/utils/global-config-loader.js +83 -0
  930. package/dist/utils/global-config-loader.js.map +1 -0
  931. package/dist/utils/home-config.d.ts +40 -0
  932. package/dist/utils/home-config.d.ts.map +1 -0
  933. package/dist/utils/home-config.js +112 -0
  934. package/dist/utils/home-config.js.map +1 -0
  935. package/dist/utils/runtime-config-loader.d.ts +22 -0
  936. package/dist/utils/runtime-config-loader.d.ts.map +1 -0
  937. package/dist/utils/runtime-config-loader.js +168 -0
  938. package/dist/utils/runtime-config-loader.js.map +1 -0
  939. package/dist/workflows/index.d.ts +6 -0
  940. package/dist/workflows/index.d.ts.map +1 -0
  941. package/dist/workflows/index.js +22 -0
  942. package/dist/workflows/index.js.map +1 -0
  943. package/dist/workflows/planning/plan-types.d.ts +50 -0
  944. package/dist/workflows/planning/plan-types.d.ts.map +1 -0
  945. package/dist/workflows/planning/plan-types.js +3 -0
  946. package/dist/workflows/planning/plan-types.js.map +1 -0
  947. package/dist/workflows/planning/planner.d.ts +20 -0
  948. package/dist/workflows/planning/planner.d.ts.map +1 -0
  949. package/dist/workflows/planning/planner.js +132 -0
  950. package/dist/workflows/planning/planner.js.map +1 -0
  951. package/dist/workflows/steps/step-executor.d.ts +32 -0
  952. package/dist/workflows/steps/step-executor.d.ts.map +1 -0
  953. package/dist/workflows/steps/step-executor.js +212 -0
  954. package/dist/workflows/steps/step-executor.js.map +1 -0
  955. package/dist/workflows/steps/step-tracker.d.ts +14 -0
  956. package/dist/workflows/steps/step-tracker.d.ts.map +1 -0
  957. package/dist/workflows/steps/step-tracker.js +72 -0
  958. package/dist/workflows/steps/step-tracker.js.map +1 -0
  959. package/dist/workflows/workflow-executor.d.ts +95 -0
  960. package/dist/workflows/workflow-executor.d.ts.map +1 -0
  961. package/dist/workflows/workflow-executor.js +741 -0
  962. package/dist/workflows/workflow-executor.js.map +1 -0
  963. package/dist/workflows/workflow-types.d.ts +102 -0
  964. package/dist/workflows/workflow-types.d.ts.map +1 -0
  965. package/dist/workflows/workflow-types.js +12 -0
  966. package/dist/workflows/workflow-types.js.map +1 -0
  967. package/package.json +105 -0
@@ -0,0 +1,1246 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AIClient = void 0;
4
+ const events_1 = require("events");
5
+ const errors_1 = require("../errors");
6
+ const router_js_1 = require("../tools/router.js");
7
+ const types_js_1 = require("../tools/types.js");
8
+ const index_js_1 = require("../tools/search/index.js");
9
+ const base_agent_context_js_1 = require("./base-agent-context.js");
10
+ const query_classifier_js_1 = require("./query-classifier.js");
11
+ const tool_orchestrator_js_1 = require("./tool-orchestrator.js");
12
+ const provider_logger_1 = require("../providers/provider-logger");
13
+ let REQUEST_SEQ = 0;
14
+ function newRequestId() {
15
+ REQUEST_SEQ += 1;
16
+ return `${Date.now()}-${REQUEST_SEQ}`;
17
+ }
18
+ function logRequestMessages(requestId, messages) {
19
+ if (!(0, provider_logger_1.isVerbose)())
20
+ return;
21
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Messages (${messages.length}):`);
22
+ messages.forEach((m, i) => {
23
+ const preview = (0, provider_logger_1.safePreview)(m.content, 300);
24
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] #${i} role=${m.role} content=${preview}`);
25
+ });
26
+ }
27
+ function extractLastUserText(messages) {
28
+ for (let i = messages.length - 1; i >= 0; i--) {
29
+ const m = messages[i];
30
+ if (m?.role !== 'user')
31
+ continue;
32
+ const c = m?.content;
33
+ if (typeof c === 'string')
34
+ return c;
35
+ if (Array.isArray(c)) {
36
+ return c
37
+ .map((p) => (p?.type === 'text' ? p.text : ''))
38
+ .filter(Boolean)
39
+ .join('\n');
40
+ }
41
+ return '';
42
+ }
43
+ return '';
44
+ }
45
+ function inferNeedsTools(messages) {
46
+ const text = extractLastUserText(messages).toLowerCase();
47
+ if (!text)
48
+ return false;
49
+ const patterns = [
50
+ /\b(list|show|print|display)\b.*\b(files|folders|directory|dir)\b/,
51
+ /\b(current|this)\b.*\b(directory|folder|repo|repository)\b/,
52
+ /\b(read|open|view)\b.*\b(file|log|config|json|yaml|env)\b/,
53
+ /\b(write|create|update|modify|edit|patch|delete|remove|rename|move|copy)\b.*\b(file|folder|directory)\b/,
54
+ /\b(run|execute)\b.*\b(command|shell|script|tests?)\b/,
55
+ /\b(http|get|post|put|delete|download|fetch|curl)\b/,
56
+ /\b(web|search|scrape|crawl|map)\b/,
57
+ /https?:\/\//, // Contains a URL
58
+ ];
59
+ return patterns.some(r => r.test(text));
60
+ }
61
+ function isAfterToolCall(messages, maxDistance) {
62
+ // Find the last tool call in the conversation
63
+ let lastToolCallIndex = -1;
64
+ for (let i = messages.length - 1; i >= 0; i--) {
65
+ const msg = messages[i];
66
+ if (msg.role === 'tool' || (msg.role === 'assistant' && msg.tool_calls && msg.tool_calls.length > 0)) {
67
+ lastToolCallIndex = i;
68
+ break;
69
+ }
70
+ }
71
+ if (lastToolCallIndex === -1)
72
+ return false;
73
+ // Check if current message is within maxDistance messages after the tool call
74
+ const distance = messages.length - 1 - lastToolCallIndex;
75
+ return distance > 0 && distance <= maxDistance;
76
+ }
77
+ function getFastModelForProvider(providerName) {
78
+ const defaultFastModels = {
79
+ openai: 'gpt-4.1-mini',
80
+ anthropic: 'claude-3-haiku-20240307',
81
+ gemini: 'gemini-2.0-flash-exp',
82
+ ollama: 'llama3.2',
83
+ };
84
+ return defaultFastModels[providerName] || 'default';
85
+ }
86
+ function extractToolContext(messages) {
87
+ // Extract context from recent tool calls (last 2 tool rounds)
88
+ const toolInfo = [];
89
+ let toolRoundsFound = 0;
90
+ for (let i = messages.length - 1; i >= 0 && toolRoundsFound < 2; i--) {
91
+ const msg = messages[i];
92
+ // Extract from assistant's tool calls
93
+ if (msg.role === 'assistant' && msg.tool_calls && msg.tool_calls.length > 0) {
94
+ toolRoundsFound++;
95
+ for (const toolCall of msg.tool_calls) {
96
+ const toolName = toolCall.function?.name || 'unknown';
97
+ const args = toolCall.function?.arguments;
98
+ // Extract relevant context from arguments
99
+ let context = `Tool: ${toolName}`;
100
+ if (args) {
101
+ try {
102
+ const parsedArgs = typeof args === 'string' ? JSON.parse(args) : args;
103
+ // Extract URLs, file paths, sections, queries
104
+ if (parsedArgs.url)
105
+ context += ` (URL: ${parsedArgs.url})`;
106
+ if (parsedArgs.file_path)
107
+ context += ` (File: ${parsedArgs.file_path})`;
108
+ if (parsedArgs.section)
109
+ context += ` (Section: ${parsedArgs.section})`;
110
+ if (parsedArgs.query)
111
+ context += ` (Query: ${parsedArgs.query})`;
112
+ if (parsedArgs.command)
113
+ context += ` (Command: ${parsedArgs.command.substring(0, 50)})`;
114
+ }
115
+ catch (e) {
116
+ // Ignore parse errors
117
+ }
118
+ }
119
+ toolInfo.push(context);
120
+ }
121
+ }
122
+ }
123
+ return toolInfo.length > 0 ? toolInfo.join(', ') : 'None';
124
+ }
125
+ async function inferNeedsToolsWithAI(provider, providerName, messages, fastModel) {
126
+ const requestId = newRequestId();
127
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] inferNeedsToolsWithAI() provider=${providerName} model=${fastModel}`);
128
+ // Extract tool context from recent tool calls
129
+ const toolContext = extractToolContext(messages);
130
+ // Get the last user message
131
+ const lastUserMessage = messages.filter((m) => m.role === 'user').slice(-1)[0];
132
+ const userMessage = lastUserMessage?.content || '';
133
+ // Build context-aware prompt
134
+ const prompt = `Recent tool usage: ${toolContext}
135
+
136
+ User's new message: "${userMessage}"
137
+
138
+ Does this message:
139
+ 1. Ask about the same topic/context as recent tools? OR
140
+ 2. Request new information that requires external tools (web search, file access, commands)?
141
+
142
+ If the message is general knowledge (math, definitions, explanations) or completely unrelated to recent tool context, answer NO.
143
+ If it asks about the same context OR needs new external information, answer YES.
144
+
145
+ Answer only: YES or NO`;
146
+ try {
147
+ const response = await provider.generate({
148
+ model: fastModel,
149
+ messages: [{ role: 'user', content: prompt }],
150
+ max_tokens: 10,
151
+ temperature: 0,
152
+ });
153
+ const answer = (response.content || '').trim().toUpperCase();
154
+ const needsTools = answer.startsWith('YES');
155
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] inferNeedsToolsWithAI() context="${toolContext}" message="${userMessage.substring(0, 50)}" result=${needsTools} (raw: ${answer})`);
156
+ return needsTools;
157
+ }
158
+ catch (error) {
159
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] inferNeedsToolsWithAI() error=${error} - falling back to false`);
160
+ return false;
161
+ }
162
+ }
163
+ function inferLookupOnly(messages) {
164
+ const text = extractLastUserText(messages).toLowerCase();
165
+ if (!text)
166
+ return false;
167
+ const lookupPatterns = [
168
+ /\b(list|show|print|display)\b.*\b(files|folders|directory|dir)\b/,
169
+ /\b(current|this)\b.*\b(directory|folder|repo|repository)\b/,
170
+ /\b(read|open|view)\b.*\b(file|log|config|json|yaml|env)\b/,
171
+ ];
172
+ const mutatingPatterns = [
173
+ /\b(write|create|update|modify|edit|patch|delete|remove|rename|move|copy)\b/,
174
+ /\b(run|execute)\b.*\b(command|shell|script|tests?)\b/,
175
+ /\b(http|get|post|put|delete|download|fetch|curl)\b/,
176
+ /\b(web|search|scrape|crawl)\b/,
177
+ ];
178
+ return lookupPatterns.some(r => r.test(text)) && !mutatingPatterns.some(r => r.test(text));
179
+ }
180
+ const TOOL_RESULT_MAX_CHARS = (() => {
181
+ const raw = process.env.TOOLPACK_SDK_TOOL_RESULT_MAX_CHARS;
182
+ const n = raw ? Number(raw) : NaN;
183
+ return Number.isFinite(n) && n > 0 ? n : 20_000;
184
+ })();
185
+ class AIClient extends events_1.EventEmitter {
186
+ providers;
187
+ defaultProvider;
188
+ toolRegistry;
189
+ toolsConfig;
190
+ toolRouter;
191
+ bm25Engine;
192
+ queryClassifier;
193
+ toolOrchestrator;
194
+ activeMode = null;
195
+ overrideSystemPrompt;
196
+ disableBaseContext;
197
+ constructor(config) {
198
+ super();
199
+ this.providers = new Map(Object.entries(config.providers));
200
+ this.defaultProvider = config.defaultProvider;
201
+ this.toolRegistry = config.toolRegistry;
202
+ this.toolsConfig = config.toolsConfig || types_js_1.DEFAULT_TOOLS_CONFIG;
203
+ this.toolRouter = new router_js_1.ToolRouter();
204
+ this.bm25Engine = new index_js_1.BM25SearchEngine();
205
+ this.queryClassifier = new query_classifier_js_1.QueryClassifier();
206
+ this.toolOrchestrator = new tool_orchestrator_js_1.ToolOrchestrator();
207
+ this.overrideSystemPrompt = config.systemPrompt;
208
+ this.disableBaseContext = config.disableBaseContext || false;
209
+ // Index tools for BM25 search if registry is provided
210
+ if (this.toolRegistry) {
211
+ this.bm25Engine.index(this.toolRegistry.getAll());
212
+ }
213
+ }
214
+ /**
215
+ * Register a new provider instance.
216
+ */
217
+ registerProvider(name, provider) {
218
+ this.providers.set(name, provider);
219
+ }
220
+ /**
221
+ * Get a provider by name, or the default if none specified.
222
+ */
223
+ getProvider(name) {
224
+ const providerName = name || this.defaultProvider;
225
+ if (!providerName) {
226
+ throw new errors_1.SDKError('No provider specified and no default provider configured', 'NO_PROVIDER_CONFIGURED', 400);
227
+ }
228
+ const provider = this.providers.get(providerName);
229
+ if (!provider) {
230
+ throw new errors_1.SDKError(`Provider '${providerName}' not found`, 'PROVIDER_NOT_FOUND', 404);
231
+ }
232
+ return provider;
233
+ }
234
+ /**
235
+ * Set the default provider for this client.
236
+ */
237
+ setDefaultProvider(name) {
238
+ if (!this.providers.has(name)) {
239
+ throw new errors_1.SDKError(`Provider '${name}' not found`, 'PROVIDER_NOT_FOUND', 404);
240
+ }
241
+ this.defaultProvider = name;
242
+ }
243
+ /**
244
+ * Get the tool registry.
245
+ */
246
+ getToolRegistry() {
247
+ return this.toolRegistry;
248
+ }
249
+ /**
250
+ * Get all registered providers.
251
+ * Returns a copy of the internal map to prevent direct mutation.
252
+ */
253
+ getProviders() {
254
+ return new Map(this.providers);
255
+ }
256
+ /**
257
+ * Set or replace the tool registry.
258
+ */
259
+ setToolRegistry(registry) {
260
+ this.toolRegistry = registry;
261
+ }
262
+ /**
263
+ * Update tools config.
264
+ */
265
+ setToolsConfig(config) {
266
+ this.toolsConfig = config;
267
+ }
268
+ /**
269
+ * Set the override system prompt directly via code.
270
+ */
271
+ setSystemPrompt(prompt) {
272
+ this.overrideSystemPrompt = prompt;
273
+ }
274
+ /**
275
+ * Set the active mode. Pass null to clear.
276
+ */
277
+ setMode(mode) {
278
+ this.activeMode = mode;
279
+ (0, provider_logger_1.log)(`[AIClient] Mode set to: ${mode ? mode.displayName : 'none (cleared)'}`);
280
+ }
281
+ /**
282
+ * Get the currently active mode.
283
+ */
284
+ getMode() {
285
+ return this.activeMode;
286
+ }
287
+ /**
288
+ * Re-index tools for BM25 search.
289
+ * Call this after adding/removing tools from the registry.
290
+ */
291
+ reindexTools() {
292
+ if (this.toolRegistry) {
293
+ this.bm25Engine.index(this.toolRegistry.getAll());
294
+ (0, provider_logger_1.log)(`[AIClient] Re-indexed ${this.bm25Engine.getIndexedCount()} tools for BM25 search`);
295
+ }
296
+ }
297
+ /**
298
+ * Clear the tool discovery cache (call when starting a new conversation).
299
+ */
300
+ clearToolDiscoveryCache() {
301
+ this.toolRouter.clearDiscoveryCache();
302
+ }
303
+ /**
304
+ * unified generate completion
305
+ * When tools are enabled and autoExecute is true, handles the full
306
+ * tool call → execute → send result → get final answer loop.
307
+ */
308
+ async generate(request, providerName) {
309
+ const provider = this.getProvider(providerName);
310
+ try {
311
+ const requestId = newRequestId();
312
+ // System prompt injection chain (base → override → mode)
313
+ let modeAwareRequest = this.injectBaseAgentContext(request);
314
+ modeAwareRequest = this.injectOverrideSystemPrompt(modeAwareRequest);
315
+ modeAwareRequest = this.injectModeSystemPrompt(modeAwareRequest);
316
+ // Resolve tools to send with the request
317
+ const resolvedProviderName = providerName || this.defaultProvider;
318
+ const enrichedRequest = await this.enrichRequestWithTools(modeAwareRequest);
319
+ const policy = (process.env.TOOLPACK_SDK_TOOL_CHOICE_POLICY || this.toolsConfig.toolChoicePolicy || 'auto');
320
+ const hasTools = (enrichedRequest.tools?.length || 0) > 0;
321
+ const toolChoiceWasSet = enrichedRequest.tool_choice != null;
322
+ // Hybrid tool detection: regex first, then AI for follow-ups
323
+ let needsTools = inferNeedsTools(enrichedRequest.messages);
324
+ const intelligentDetection = this.toolsConfig.intelligentToolDetection;
325
+ let aiInferenceUsed = false;
326
+ if (!needsTools && intelligentDetection?.enabled && hasTools) {
327
+ const afterToolCall = isAfterToolCall(enrichedRequest.messages, intelligentDetection.maxFollowUpMessages);
328
+ if (afterToolCall) {
329
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Message is after tool call, using AI to infer tool needs`);
330
+ const fastModel = getFastModelForProvider(resolvedProviderName || 'openai');
331
+ needsTools = await inferNeedsToolsWithAI(provider, resolvedProviderName || 'openai', enrichedRequest.messages, fastModel);
332
+ aiInferenceUsed = true;
333
+ }
334
+ }
335
+ const lookupOnly = inferLookupOnly(enrichedRequest.messages);
336
+ const shouldForceRequired = !toolChoiceWasSet && hasTools && (policy === 'required' || (policy === 'required_for_actions' && needsTools));
337
+ const shouldForceNone = !toolChoiceWasSet && hasTools && aiInferenceUsed && !needsTools;
338
+ if (shouldForceRequired) {
339
+ enrichedRequest.tool_choice = 'required';
340
+ }
341
+ else if (shouldForceNone) {
342
+ enrichedRequest.tool_choice = 'none';
343
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] AI inference determined no tools needed, setting tool_choice=none`);
344
+ }
345
+ const providerClass = provider?.constructor?.name || 'UnknownProvider';
346
+ const outboundReq = { ...enrichedRequest, __toolpack_request_id: requestId };
347
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] generate() start provider=${resolvedProviderName} class=${providerClass} model=${enrichedRequest.model} messages=${enrichedRequest.messages.length} tools=${enrichedRequest.tools?.length || 0} tool_choice=${enrichedRequest.tool_choice ?? 'unset'} policy=${policy} needsTools=${needsTools} autoExecute=${this.toolsConfig.enabled && this.toolsConfig.autoExecute}`);
348
+ logRequestMessages(requestId, enrichedRequest.messages);
349
+ let response = await provider.generate(outboundReq);
350
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] generate() initial response finish_reason=${response.finish_reason ?? 'unknown'} tool_calls=${response.tool_calls?.length || 0} content_preview=${(0, provider_logger_1.safePreview)(response.content || '', 200)}`);
351
+ // Auto-execute tool call loop
352
+ if (this.toolsConfig.enabled && this.toolsConfig.autoExecute && this.toolRegistry) {
353
+ // Classify query to adjust maxToolRounds
354
+ const userMessage = extractLastUserText(enrichedRequest.messages);
355
+ const classification = this.queryClassifier.classify(userMessage);
356
+ const baseMaxRounds = this.toolsConfig.maxToolRounds;
357
+ const maxRounds = this.queryClassifier.getToolRoundsAdjustment(classification, baseMaxRounds);
358
+ if (maxRounds !== baseMaxRounds) {
359
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Query classified as ${classification.type} (confidence: ${classification.confidence.toFixed(2)}), adjusted maxToolRounds: ${baseMaxRounds} → ${maxRounds}`);
360
+ }
361
+ else {
362
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Query classified as ${classification.type} (confidence: ${classification.confidence.toFixed(2)}), keeping maxToolRounds: ${maxRounds}`);
363
+ }
364
+ let rounds = 0;
365
+ const messages = [...enrichedRequest.messages];
366
+ if (response.tool_calls && response.tool_calls.length > 0) {
367
+ (0, provider_logger_1.log)(`[AIClient] Received ${response.tool_calls.length} tool call(s): ${response.tool_calls.map(tc => tc.name).join(', ')}`);
368
+ }
369
+ while (response.tool_calls && response.tool_calls.length > 0 && rounds < maxRounds) {
370
+ rounds++;
371
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] generate() tool round ${rounds}/${maxRounds} tool_calls=${response.tool_calls.length}`);
372
+ // Add assistant message with tool calls to conversation
373
+ messages.push({
374
+ role: 'assistant',
375
+ content: response.content || '',
376
+ tool_calls: response.tool_calls.map(tc => ({
377
+ id: tc.id,
378
+ type: 'function',
379
+ function: {
380
+ name: tc.name,
381
+ arguments: JSON.stringify(tc.arguments),
382
+ },
383
+ })),
384
+ });
385
+ // Execute tools with smart parallel/sequential orchestration
386
+ const useParallel = this.toolOrchestrator.shouldUseParallelExecution(response.tool_calls);
387
+ // Apply fan-out limits for web.fetch to prevent context overflow
388
+ const MAX_WEB_FETCH_CALLS = 3;
389
+ let toolCallsToExecute = response.tool_calls;
390
+ const webFetchCalls = response.tool_calls.filter(tc => tc.name === 'web.fetch');
391
+ if (webFetchCalls.length > MAX_WEB_FETCH_CALLS) {
392
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Limiting web.fetch calls from ${webFetchCalls.length} → ${MAX_WEB_FETCH_CALLS} to prevent context overflow`);
393
+ const limitedWebFetch = webFetchCalls.slice(0, MAX_WEB_FETCH_CALLS);
394
+ const otherCalls = response.tool_calls.filter(tc => tc.name !== 'web.fetch');
395
+ toolCallsToExecute = [...otherCalls, ...limitedWebFetch];
396
+ // Add placeholder responses for excluded web.fetch calls to avoid orphaned tool_call_ids
397
+ const excludedWebFetch = webFetchCalls.slice(MAX_WEB_FETCH_CALLS);
398
+ for (const tc of excludedWebFetch) {
399
+ messages.push({
400
+ role: 'tool',
401
+ tool_call_id: tc.id,
402
+ content: '[Skipped: web.fetch fan-out limit exceeded]',
403
+ });
404
+ }
405
+ }
406
+ // Track tool output budget for this round
407
+ const MAX_TOOL_OUTPUT_PER_ROUND = 50_000;
408
+ let roundOutputSize = 0;
409
+ if (useParallel) {
410
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Using parallel execution for ${toolCallsToExecute.length} tools`);
411
+ const toolResults = await this.toolOrchestrator.executeWithDependencies(toolCallsToExecute, (toolCall) => this.executeTool(toolCall), 5 // maxConcurrent
412
+ );
413
+ // Add results in original order with budget tracking
414
+ let parallelBudgetExceeded = false;
415
+ for (const toolCall of toolCallsToExecute) {
416
+ if (parallelBudgetExceeded) {
417
+ messages.push({
418
+ role: 'tool',
419
+ tool_call_id: toolCall.id,
420
+ content: '[Skipped: tool output budget exceeded for this round]',
421
+ });
422
+ continue;
423
+ }
424
+ const result = toolResults.get(toolCall.id);
425
+ const resultStr = typeof result === 'string' ? result : JSON.stringify(result);
426
+ // Check budget before adding
427
+ if (roundOutputSize + resultStr.length > MAX_TOOL_OUTPUT_PER_ROUND) {
428
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Tool output budget exceeded (${MAX_TOOL_OUTPUT_PER_ROUND} chars), adding placeholder for remaining tools`);
429
+ messages.push({
430
+ role: 'tool',
431
+ tool_call_id: toolCall.id,
432
+ content: '[Skipped: tool output budget exceeded for this round]',
433
+ });
434
+ parallelBudgetExceeded = true;
435
+ continue;
436
+ }
437
+ const content = typeof result === 'string' && result.length > TOOL_RESULT_MAX_CHARS
438
+ ? `${result.slice(0, TOOL_RESULT_MAX_CHARS)}\n[TRUNCATED tool result: ${result.length} chars]`
439
+ : result;
440
+ const contentStr = typeof content === 'string' ? content : JSON.stringify(content);
441
+ roundOutputSize += contentStr.length;
442
+ messages.push({
443
+ role: 'tool',
444
+ tool_call_id: toolCall.id,
445
+ content,
446
+ });
447
+ }
448
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Round tool output size: ${roundOutputSize} chars (budget: ${MAX_TOOL_OUTPUT_PER_ROUND})`);
449
+ }
450
+ else {
451
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Using sequential execution for ${toolCallsToExecute.length} tools`);
452
+ // Sequential execution with budget tracking
453
+ let seqBudgetExceeded = false;
454
+ for (const toolCall of toolCallsToExecute) {
455
+ if (seqBudgetExceeded) {
456
+ messages.push({
457
+ role: 'tool',
458
+ tool_call_id: toolCall.id,
459
+ content: '[Skipped: tool output budget exceeded for this round]',
460
+ });
461
+ continue;
462
+ }
463
+ const result = await this.executeTool(toolCall);
464
+ const resultStr = typeof result === 'string' ? result : JSON.stringify(result);
465
+ // Check budget before adding
466
+ if (roundOutputSize + resultStr.length > MAX_TOOL_OUTPUT_PER_ROUND) {
467
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Tool output budget exceeded (${MAX_TOOL_OUTPUT_PER_ROUND} chars), adding placeholder for remaining tools`);
468
+ messages.push({
469
+ role: 'tool',
470
+ tool_call_id: toolCall.id,
471
+ content: '[Skipped: tool output budget exceeded for this round]',
472
+ });
473
+ seqBudgetExceeded = true;
474
+ continue;
475
+ }
476
+ const content = typeof result === 'string' && result.length > TOOL_RESULT_MAX_CHARS
477
+ ? `${result.slice(0, TOOL_RESULT_MAX_CHARS)}\n[TRUNCATED tool result: ${result.length} chars]`
478
+ : result;
479
+ const contentStr = typeof content === 'string' ? content : JSON.stringify(content);
480
+ roundOutputSize += contentStr.length;
481
+ messages.push({
482
+ role: 'tool',
483
+ tool_call_id: toolCall.id,
484
+ content,
485
+ });
486
+ }
487
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Round tool output size: ${roundOutputSize} chars (budget: ${MAX_TOOL_OUTPUT_PER_ROUND})`);
488
+ }
489
+ // Call the model again with updated messages
490
+ const rawFollowupReq = { ...enrichedRequest, messages, __toolpack_request_id: requestId };
491
+ // Re-enrich to include any tools discovered in the previous round
492
+ const followupReq = await this.enrichRequestWithTools(rawFollowupReq);
493
+ if (followupReq.tool_choice === 'required') {
494
+ followupReq.tool_choice = lookupOnly ? 'none' : 'auto';
495
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] generate() followup tool_choice override required->${followupReq.tool_choice}`);
496
+ }
497
+ if ((0, provider_logger_1.isVerbose)()) {
498
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] generate() followup request messages=${messages.length}`);
499
+ logRequestMessages(requestId, messages);
500
+ }
501
+ response = await provider.generate(followupReq);
502
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] generate() followup response finish_reason=${response.finish_reason ?? 'unknown'} tool_calls=${response.tool_calls?.length || 0} content_preview=${(0, provider_logger_1.safePreview)(response.content || '', 200)}`);
503
+ }
504
+ }
505
+ return response;
506
+ }
507
+ catch (error) {
508
+ throw this.wrapError(error);
509
+ }
510
+ }
511
+ /**
512
+ * unified stream completion
513
+ * When tools are enabled and autoExecute is true, handles tool calls
514
+ * by collecting them, executing, and re-calling the model.
515
+ */
516
+ async *stream(request, providerName) {
517
+ const provider = this.getProvider(providerName);
518
+ try {
519
+ const requestId = newRequestId();
520
+ const resolvedProviderName = providerName || this.defaultProvider;
521
+ // System prompt injection chain (base → override → mode)
522
+ let modeAwareRequest = this.injectBaseAgentContext(request);
523
+ modeAwareRequest = this.injectOverrideSystemPrompt(modeAwareRequest);
524
+ modeAwareRequest = this.injectModeSystemPrompt(modeAwareRequest);
525
+ const enrichedRequest = await this.enrichRequestWithTools(modeAwareRequest);
526
+ const policy = (process.env.TOOLPACK_SDK_TOOL_CHOICE_POLICY || this.toolsConfig.toolChoicePolicy || 'auto');
527
+ const hasTools = (enrichedRequest.tools?.length || 0) > 0;
528
+ const toolChoiceWasSet = enrichedRequest.tool_choice != null;
529
+ // Hybrid tool detection: regex first, then AI for follow-ups
530
+ let needsTools = inferNeedsTools(enrichedRequest.messages);
531
+ const intelligentDetection = this.toolsConfig.intelligentToolDetection;
532
+ let aiInferenceUsed = false;
533
+ if (!needsTools && intelligentDetection?.enabled && hasTools) {
534
+ const afterToolCall = isAfterToolCall(enrichedRequest.messages, intelligentDetection.maxFollowUpMessages);
535
+ if (afterToolCall) {
536
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Message is after tool call, using AI to infer tool needs`);
537
+ const fastModel = getFastModelForProvider(resolvedProviderName || 'openai');
538
+ needsTools = await inferNeedsToolsWithAI(provider, resolvedProviderName || 'openai', enrichedRequest.messages, fastModel);
539
+ aiInferenceUsed = true;
540
+ }
541
+ }
542
+ const lookupOnly = inferLookupOnly(enrichedRequest.messages);
543
+ const shouldForceRequired = !toolChoiceWasSet && hasTools && (policy === 'required' || (policy === 'required_for_actions' && needsTools));
544
+ const shouldForceNone = !toolChoiceWasSet && hasTools && aiInferenceUsed && !needsTools;
545
+ if (shouldForceRequired) {
546
+ enrichedRequest.tool_choice = 'required';
547
+ }
548
+ else if (shouldForceNone) {
549
+ enrichedRequest.tool_choice = 'none';
550
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] AI inference determined no tools needed, setting tool_choice=none`);
551
+ }
552
+ const providerClass = provider?.constructor?.name || 'UnknownProvider';
553
+ const baseReq = { ...enrichedRequest, __toolpack_request_id: requestId };
554
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() start provider=${resolvedProviderName} class=${providerClass} model=${enrichedRequest.model} messages=${enrichedRequest.messages.length} tools=${enrichedRequest.tools?.length || 0} tool_choice=${enrichedRequest.tool_choice ?? 'unset'} policy=${policy} needsTools=${needsTools} autoExecute=${this.toolsConfig.enabled && this.toolsConfig.autoExecute}`);
555
+ logRequestMessages(requestId, enrichedRequest.messages);
556
+ if (!this.toolsConfig.enabled || !this.toolsConfig.autoExecute || !this.toolRegistry) {
557
+ yield* provider.stream(baseReq);
558
+ return;
559
+ }
560
+ const messages = [...enrichedRequest.messages];
561
+ let rounds = 0;
562
+ // Classify query to adjust maxToolRounds (same as generate())
563
+ const userMessage = extractLastUserText(enrichedRequest.messages);
564
+ const classification = this.queryClassifier.classify(userMessage);
565
+ const baseMaxRounds = this.toolsConfig.maxToolRounds;
566
+ const maxRounds = this.queryClassifier.getToolRoundsAdjustment(classification, baseMaxRounds);
567
+ if (maxRounds !== baseMaxRounds) {
568
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() Query classified as ${classification.type} (confidence: ${classification.confidence.toFixed(2)}), adjusted maxToolRounds: ${baseMaxRounds} → ${maxRounds}`);
569
+ }
570
+ while (rounds <= maxRounds) {
571
+ // Check for abort signal at start of each round
572
+ if (request.signal?.aborted) {
573
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() aborted by signal`);
574
+ return;
575
+ }
576
+ let accumulatedContent = '';
577
+ const pendingToolCalls = [];
578
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() round_start ${rounds + 1}/${maxRounds}`);
579
+ let lastFinishReason = null;
580
+ const rawRoundReq = { ...baseReq, messages };
581
+ // Re-enrich to include any newly discovered tools from previous rounds
582
+ const roundReq = await this.enrichRequestWithTools(rawRoundReq);
583
+ if (rounds > 0 && roundReq.tool_choice === 'required') {
584
+ roundReq.tool_choice = lookupOnly ? 'none' : 'auto';
585
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() round_${rounds + 1} tool_choice override required->${roundReq.tool_choice}`);
586
+ }
587
+ for await (const chunk of provider.stream(roundReq)) {
588
+ // Check for abort signal during streaming
589
+ if (request.signal?.aborted) {
590
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() aborted by signal during chunk processing`);
591
+ return;
592
+ }
593
+ if (chunk.tool_calls && chunk.tool_calls.length > 0) {
594
+ pendingToolCalls.push(...chunk.tool_calls);
595
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() tool_calls_chunk count=${chunk.tool_calls.length} names=${chunk.tool_calls.map(tc => tc.name).join(', ')}`);
596
+ // Yield tool calls in the chunk so consumers can track them
597
+ yield chunk;
598
+ }
599
+ if (chunk.delta) {
600
+ accumulatedContent += chunk.delta;
601
+ yield chunk;
602
+ }
603
+ if (chunk.finish_reason) {
604
+ lastFinishReason = chunk.finish_reason;
605
+ }
606
+ if (chunk.finish_reason === 'stop') {
607
+ yield chunk;
608
+ }
609
+ }
610
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() round_end finish_reason=${lastFinishReason ?? 'unknown'} accumulated_len=${accumulatedContent.length} tool_calls_total=${pendingToolCalls.length} content_preview=${(0, provider_logger_1.safePreview)(accumulatedContent, 200)}`);
611
+ // If no tool calls, we're done
612
+ if (pendingToolCalls.length === 0) {
613
+ break;
614
+ }
615
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() received ${pendingToolCalls.length} tool call(s): ${pendingToolCalls.map(tc => tc.name).join(', ')}`);
616
+ rounds++;
617
+ if (rounds > maxRounds) {
618
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() max tool rounds (${maxRounds}) reached`);
619
+ break;
620
+ }
621
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() tool round ${rounds}/${maxRounds}`);
622
+ // Add assistant message and tool results to conversation
623
+ messages.push({
624
+ role: 'assistant',
625
+ content: accumulatedContent || '',
626
+ tool_calls: pendingToolCalls.map(tc => ({
627
+ id: tc.id,
628
+ type: 'function',
629
+ function: {
630
+ name: tc.name,
631
+ arguments: JSON.stringify(tc.arguments),
632
+ },
633
+ })),
634
+ });
635
+ // Apply fan-out limits for web.fetch to prevent context overflow
636
+ const MAX_WEB_FETCH_CALLS = 3;
637
+ let toolCallsToExecute = pendingToolCalls;
638
+ const webFetchCalls = pendingToolCalls.filter(tc => tc.name === 'web.fetch');
639
+ if (webFetchCalls.length > MAX_WEB_FETCH_CALLS) {
640
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Limiting web.fetch calls from ${webFetchCalls.length} → ${MAX_WEB_FETCH_CALLS} to prevent context overflow`);
641
+ const limitedWebFetch = webFetchCalls.slice(0, MAX_WEB_FETCH_CALLS);
642
+ const otherCalls = pendingToolCalls.filter(tc => tc.name !== 'web.fetch');
643
+ toolCallsToExecute = [...otherCalls, ...limitedWebFetch];
644
+ // Add placeholder responses for excluded web.fetch calls to avoid orphaned tool_call_ids
645
+ const excludedWebFetch = webFetchCalls.slice(MAX_WEB_FETCH_CALLS);
646
+ for (const tc of excludedWebFetch) {
647
+ messages.push({
648
+ role: 'tool',
649
+ tool_call_id: tc.id,
650
+ content: '[Skipped: web.fetch fan-out limit exceeded]',
651
+ });
652
+ }
653
+ }
654
+ // Track tool output budget for this round
655
+ const MAX_TOOL_OUTPUT_PER_ROUND = 50_000;
656
+ let roundOutputSize = 0;
657
+ let budgetExceeded = false;
658
+ // Collect heartbeat chunks to yield while tools execute
659
+ const heartbeatChunks = [];
660
+ for (const toolCall of toolCallsToExecute) {
661
+ if (budgetExceeded) {
662
+ // Still must add a tool response for every tool_call to satisfy OpenAI API
663
+ messages.push({
664
+ role: 'tool',
665
+ tool_call_id: toolCall.id,
666
+ content: '[Skipped: tool output budget exceeded for this round]',
667
+ });
668
+ continue;
669
+ }
670
+ const startTime = Date.now();
671
+ // Execute tool with heartbeat: yield empty chunks periodically
672
+ // so UI consumers (e.g. terminal animations) stay alive
673
+ let toolDone = false;
674
+ const heartbeatInterval = setInterval(() => {
675
+ if (!toolDone)
676
+ heartbeatChunks.push({ delta: '' });
677
+ }, 500);
678
+ const result = await this.executeTool(toolCall);
679
+ toolDone = true;
680
+ clearInterval(heartbeatInterval);
681
+ const duration = Date.now() - startTime;
682
+ // Yield any queued heartbeat chunks
683
+ while (heartbeatChunks.length > 0) {
684
+ yield heartbeatChunks.shift();
685
+ }
686
+ // Extra yield point for event loop
687
+ await new Promise(resolve => setTimeout(resolve, 0));
688
+ const resultStr = typeof result === 'string' ? result : JSON.stringify(result);
689
+ // Check budget before adding
690
+ if (roundOutputSize + resultStr.length > MAX_TOOL_OUTPUT_PER_ROUND) {
691
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Tool output budget exceeded (${MAX_TOOL_OUTPUT_PER_ROUND} chars), adding placeholder for remaining tools`);
692
+ messages.push({
693
+ role: 'tool',
694
+ tool_call_id: toolCall.id,
695
+ content: '[Skipped: tool output budget exceeded for this round]',
696
+ });
697
+ budgetExceeded = true;
698
+ continue;
699
+ }
700
+ const content = typeof result === 'string' && result.length > TOOL_RESULT_MAX_CHARS
701
+ ? `${result.slice(0, TOOL_RESULT_MAX_CHARS)}\n[TRUNCATED tool result: ${result.length} chars]`
702
+ : result;
703
+ const contentStr = typeof content === 'string' ? content : JSON.stringify(content);
704
+ roundOutputSize += contentStr.length;
705
+ messages.push({
706
+ role: 'tool',
707
+ tool_call_id: toolCall.id,
708
+ content,
709
+ });
710
+ // Yield a chunk with the tool result so consumers can track it
711
+ yield {
712
+ delta: '',
713
+ tool_calls: [{
714
+ ...toolCall,
715
+ result: typeof content === 'string' ? content : JSON.stringify(content),
716
+ duration,
717
+ }],
718
+ };
719
+ }
720
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] Round tool output size: ${roundOutputSize} chars (budget: ${MAX_TOOL_OUTPUT_PER_ROUND})`);
721
+ if ((0, provider_logger_1.isVerbose)()) {
722
+ (0, provider_logger_1.log)(`[AIClient][${requestId}] stream() after_tools messages=${messages.length}`);
723
+ logRequestMessages(requestId, messages);
724
+ }
725
+ }
726
+ }
727
+ catch (error) {
728
+ throw this.wrapError(error);
729
+ }
730
+ }
731
+ /**
732
+ * unified embed
733
+ */
734
+ async embed(request, providerName) {
735
+ const provider = this.getProvider(providerName);
736
+ try {
737
+ return await provider.embed(request);
738
+ }
739
+ catch (error) {
740
+ throw this.wrapError(error);
741
+ }
742
+ }
743
+ /**
744
+ * Enrich a request with tools based on the router config.
745
+ * Applies mode-based tool filtering when an active mode is set.
746
+ */
747
+ async enrichRequestWithTools(request) {
748
+ // If mode blocks ALL tools, return request with no tools
749
+ if (this.activeMode?.blockAllTools) {
750
+ (0, provider_logger_1.log)(`[AIClient] Mode "${this.activeMode.displayName}" blocks all tools`);
751
+ return request;
752
+ }
753
+ if (!this.toolsConfig.enabled || !this.toolRegistry) {
754
+ (0, provider_logger_1.log)(`[AIClient] Tools disabled or no registry`);
755
+ return request;
756
+ }
757
+ // Merge mode-specific tool search config with global config
758
+ let resolvedToolsConfig = this.toolsConfig;
759
+ if (this.activeMode?.toolSearch && this.toolsConfig.toolSearch) {
760
+ resolvedToolsConfig = {
761
+ ...this.toolsConfig,
762
+ toolSearch: {
763
+ ...this.toolsConfig.toolSearch,
764
+ ...(this.activeMode.toolSearch.enabled !== undefined ? { enabled: this.activeMode.toolSearch.enabled } : {}),
765
+ ...(this.activeMode.toolSearch.alwaysLoadedTools ? { alwaysLoadedTools: this.activeMode.toolSearch.alwaysLoadedTools } : {}),
766
+ ...(this.activeMode.toolSearch.alwaysLoadedCategories ? { alwaysLoadedCategories: this.activeMode.toolSearch.alwaysLoadedCategories } : {}),
767
+ }
768
+ };
769
+ (0, provider_logger_1.log)(`[AIClient] Merged mode toolSearch config: enabled=${resolvedToolsConfig.toolSearch?.enabled}, alwaysLoadedTools=${resolvedToolsConfig.toolSearch?.alwaysLoadedTools?.length || 0}`);
770
+ }
771
+ // If the request already has tools, only add newly discovered tools when tool.search mode is enabled
772
+ if (request.tools && request.tools.length > 0) {
773
+ if (!resolvedToolsConfig.toolSearch?.enabled || !this.toolRegistry) {
774
+ (0, provider_logger_1.log)(`[AIClient] Request already has ${request.tools.length} tools`);
775
+ return request;
776
+ }
777
+ let schemas = await this.toolRouter.resolve(request.messages, this.toolRegistry, resolvedToolsConfig);
778
+ (0, provider_logger_1.log)(`[AIClient] Resolved ${schemas.length} tools to send: ${schemas.map(s => s.name).join(', ') || 'none'}`);
779
+ if (this.activeMode && schemas.length > 0) {
780
+ const beforeCount = schemas.length;
781
+ schemas = this.filterSchemasByMode(schemas, this.activeMode);
782
+ const filteredCount = beforeCount - schemas.length;
783
+ if (filteredCount > 0) {
784
+ (0, provider_logger_1.log)(`[AIClient] Mode "${this.activeMode.displayName}" filtered out ${filteredCount} tools`);
785
+ }
786
+ }
787
+ const existingToolNames = new Set(request.tools.map(tool => tool.function.name));
788
+ const newTools = schemas
789
+ .filter(schema => !existingToolNames.has(schema.name))
790
+ .map(schema => ({
791
+ type: 'function',
792
+ function: {
793
+ name: schema.name,
794
+ description: schema.description,
795
+ parameters: schema.parameters,
796
+ },
797
+ }));
798
+ if (newTools.length === 0) {
799
+ (0, provider_logger_1.log)(`[AIClient] Request already has ${request.tools.length} tools (no new discoveries)`);
800
+ return request;
801
+ }
802
+ let enrichedRequest = {
803
+ ...request,
804
+ tools: [...request.tools, ...newTools],
805
+ };
806
+ if (resolvedToolsConfig.toolSearch?.enabled && this.toolRegistry) {
807
+ enrichedRequest = this.injectToolSearchPrompt(enrichedRequest);
808
+ }
809
+ return enrichedRequest;
810
+ }
811
+ let schemas = await this.toolRouter.resolve(request.messages, this.toolRegistry, resolvedToolsConfig);
812
+ (0, provider_logger_1.log)(`[AIClient] Resolved ${schemas.length} tools to send: ${schemas.map(s => s.name).join(', ') || 'none'}`);
813
+ // Apply mode-based filtering
814
+ if (this.activeMode && schemas.length > 0) {
815
+ const beforeCount = schemas.length;
816
+ schemas = this.filterSchemasByMode(schemas, this.activeMode);
817
+ const filteredCount = beforeCount - schemas.length;
818
+ if (filteredCount > 0) {
819
+ (0, provider_logger_1.log)(`[AIClient] Mode "${this.activeMode.displayName}" filtered out ${filteredCount} tools`);
820
+ }
821
+ }
822
+ if (schemas.length === 0) {
823
+ return request;
824
+ }
825
+ const tools = schemas.map(s => ({
826
+ type: 'function',
827
+ function: {
828
+ name: s.name,
829
+ description: s.description,
830
+ parameters: s.parameters,
831
+ },
832
+ }));
833
+ let enrichedRequest = { ...request, tools };
834
+ // Inject Tool Search system prompt if enabled
835
+ if (this.toolsConfig.toolSearch?.enabled && this.toolRegistry) {
836
+ enrichedRequest = this.injectToolSearchPrompt(enrichedRequest);
837
+ }
838
+ return enrichedRequest;
839
+ }
840
+ /**
841
+ * Filter tool schemas based on mode permissions.
842
+ * blockedTools/blockedToolCategories always take precedence.
843
+ */
844
+ filterSchemasByMode(schemas, mode) {
845
+ return schemas.filter(schema => {
846
+ // Check explicit blocks first (highest priority)
847
+ if (mode.blockedTools.includes(schema.name))
848
+ return false;
849
+ if (mode.blockedToolCategories.includes(schema.category))
850
+ return false;
851
+ // If allowlists are specified, tool must match at least one
852
+ const hasAllowedTools = mode.allowedTools.length > 0;
853
+ const hasAllowedCategories = mode.allowedToolCategories.length > 0;
854
+ if (hasAllowedTools || hasAllowedCategories) {
855
+ const nameAllowed = hasAllowedTools && mode.allowedTools.includes(schema.name);
856
+ const categoryAllowed = hasAllowedCategories && mode.allowedToolCategories.includes(schema.category);
857
+ return nameAllowed || categoryAllowed;
858
+ }
859
+ // No allowlists = everything is allowed (minus blocks)
860
+ return true;
861
+ });
862
+ }
863
+ /**
864
+ * Inject the active mode's system prompt into the request messages.
865
+ * For the "All" mode (empty systemPrompt), this is a no-op.
866
+ */
867
+ injectModeSystemPrompt(request) {
868
+ if (!this.activeMode || !this.activeMode.systemPrompt) {
869
+ (0, provider_logger_1.log)(`[AIClient] injectModeSystemPrompt: No active mode or empty systemPrompt. activeMode=${this.activeMode?.name}, systemPrompt=${this.activeMode?.systemPrompt?.substring(0, 50)}`);
870
+ return request;
871
+ }
872
+ const modePrompt = this.activeMode.systemPrompt;
873
+ (0, provider_logger_1.log)(`[AIClient] injectModeSystemPrompt: Injecting mode prompt for ${this.activeMode.name}, length=${modePrompt.length}`);
874
+ const hasSystemMessage = request.messages.some(m => m.role === 'system');
875
+ if (hasSystemMessage) {
876
+ // Prepend mode prompt to existing system message
877
+ const messages = request.messages.map(m => {
878
+ if (m.role === 'system') {
879
+ const existingContent = typeof m.content === 'string' ? m.content : '';
880
+ return {
881
+ ...m,
882
+ content: `${existingContent}\n\n${modePrompt}`
883
+ };
884
+ }
885
+ return m;
886
+ });
887
+ return { ...request, messages };
888
+ }
889
+ else {
890
+ return {
891
+ ...request,
892
+ messages: [
893
+ { role: 'system', content: modePrompt },
894
+ ...request.messages
895
+ ]
896
+ };
897
+ }
898
+ }
899
+ /**
900
+ * Inject the overriding system prompt (from AIClientConfig) into the request.
901
+ */
902
+ injectOverrideSystemPrompt(request) {
903
+ if (!this.overrideSystemPrompt) {
904
+ return request;
905
+ }
906
+ const prompt = this.overrideSystemPrompt;
907
+ const hasSystemMessage = request.messages.some(m => m.role === 'system');
908
+ if (hasSystemMessage) {
909
+ const messages = request.messages.map(m => {
910
+ if (m.role === 'system') {
911
+ const existingContent = typeof m.content === 'string' ? m.content : '';
912
+ return {
913
+ ...m,
914
+ content: `${existingContent}\n\n${prompt}`
915
+ };
916
+ }
917
+ return m;
918
+ });
919
+ return { ...request, messages };
920
+ }
921
+ else {
922
+ return {
923
+ ...request,
924
+ messages: [{ role: 'system', content: prompt }, ...request.messages]
925
+ };
926
+ }
927
+ }
928
+ /**
929
+ * Inject the Base Agent Context into the request.
930
+ * Tells the agent its CWD, tools, and to be proactive.
931
+ */
932
+ injectBaseAgentContext(request) {
933
+ // Check if active mode has per-mode baseContext config
934
+ let includeWd = true;
935
+ let includeCategories = true;
936
+ let customContext;
937
+ const disabled = this.disableBaseContext;
938
+ if (this.activeMode?.baseContext === false) {
939
+ // Mode explicitly disables base context entirely
940
+ return request;
941
+ }
942
+ else if (this.activeMode?.baseContext) {
943
+ // Mode has fine-grained base context config
944
+ includeWd = this.activeMode.baseContext.includeWorkingDirectory !== false;
945
+ includeCategories = this.activeMode.baseContext.includeToolCategories !== false;
946
+ customContext = this.activeMode.baseContext.custom;
947
+ }
948
+ const baseContext = customContext || (0, base_agent_context_js_1.generateBaseAgentContext)({
949
+ workingDirectory: process.cwd(),
950
+ toolCategories: this.toolRegistry ? this.toolRegistry.getCategories() : [],
951
+ disabled,
952
+ includeWorkingDirectory: includeWd,
953
+ includeToolCategories: includeCategories,
954
+ });
955
+ if (!baseContext) {
956
+ return request;
957
+ }
958
+ const hasSystemMessage = request.messages.some(m => m.role === 'system');
959
+ if (hasSystemMessage) {
960
+ const messages = request.messages.map(m => {
961
+ if (m.role === 'system') {
962
+ const existingContent = typeof m.content === 'string' ? m.content : '';
963
+ return {
964
+ ...m,
965
+ content: `${baseContext}\n\n${existingContent}`
966
+ };
967
+ }
968
+ return m;
969
+ });
970
+ return { ...request, messages };
971
+ }
972
+ else {
973
+ return {
974
+ ...request,
975
+ messages: [{ role: 'system', content: baseContext }, ...request.messages]
976
+ };
977
+ }
978
+ }
979
+ /**
980
+ * Inject Tool Search system prompt to guide AI to use tool.search.
981
+ */
982
+ injectToolSearchPrompt(request) {
983
+ if (!this.toolRegistry)
984
+ return request;
985
+ // Check if system message already exists
986
+ const hasSystemMessage = request.messages.some(m => m.role === 'system');
987
+ const toolSearchInstructions = `
988
+ IMPORTANT: Tool Discovery Instructions
989
+
990
+ You have access to a limited set of tools. If you need a tool that is not in your current list, you MUST use the 'tool.search' tool to discover it.
991
+
992
+ ${(0, index_js_1.generateToolCategoriesPrompt)(this.toolRegistry)}
993
+
994
+ When you need a tool:
995
+ 1. Check if it's in your current tool list
996
+ 2. If NOT found, call tool.search with a descriptive query (e.g., "delete file", "run command", "http request")
997
+ 3. After discovering tools, you can call them directly in subsequent turns
998
+
999
+ NEVER guess or hallucinate tool names. ALWAYS use tool.search to discover tools you don't have.
1000
+ `.trim();
1001
+ if (hasSystemMessage) {
1002
+ // Append to existing system message
1003
+ const messages = request.messages.map(m => {
1004
+ if (m.role === 'system') {
1005
+ const existingContent = typeof m.content === 'string' ? m.content : '';
1006
+ return {
1007
+ ...m,
1008
+ content: `${existingContent}\n\n${toolSearchInstructions}`
1009
+ };
1010
+ }
1011
+ return m;
1012
+ });
1013
+ return { ...request, messages };
1014
+ }
1015
+ else {
1016
+ // Prepend new system message
1017
+ return {
1018
+ ...request,
1019
+ messages: [
1020
+ { role: 'system', content: toolSearchInstructions },
1021
+ ...request.messages
1022
+ ]
1023
+ };
1024
+ }
1025
+ }
1026
+ /**
1027
+ * Execute a single tool call via the registry.
1028
+ * Emits 'tool:started', 'tool:completed', and 'tool:failed' events.
1029
+ */
1030
+ async executeTool(toolCall) {
1031
+ const startTime = Date.now();
1032
+ // Emit started event
1033
+ this.emit('tool:started', {
1034
+ toolName: toolCall.name,
1035
+ toolCallId: toolCall.id,
1036
+ status: 'started',
1037
+ args: toolCall.arguments,
1038
+ });
1039
+ (0, provider_logger_1.log)(`[AIClient] Executing tool: ${toolCall.name} with args: ${(0, provider_logger_1.safePreview)(toolCall.arguments, 500)}`);
1040
+ if (!this.toolRegistry) {
1041
+ const error = 'No tool registry configured';
1042
+ this.emit('tool:failed', {
1043
+ toolName: toolCall.name,
1044
+ toolCallId: toolCall.id,
1045
+ status: 'failed',
1046
+ error,
1047
+ duration: Date.now() - startTime,
1048
+ });
1049
+ return JSON.stringify({ error });
1050
+ }
1051
+ // Special handling for tool.search (BM25 search)
1052
+ if ((0, index_js_1.isToolSearchTool)(toolCall.name)) {
1053
+ const result = this.executeToolSearch(toolCall.arguments);
1054
+ const duration = Date.now() - startTime;
1055
+ this.emit('tool:completed', {
1056
+ toolName: toolCall.name,
1057
+ toolCallId: toolCall.id,
1058
+ status: 'completed',
1059
+ result: typeof result === 'string' ? result.substring(0, 200) : JSON.stringify(result).substring(0, 200),
1060
+ duration,
1061
+ });
1062
+ // Emit log event for tool.search
1063
+ this.emit('tool:log', {
1064
+ id: toolCall.id,
1065
+ name: toolCall.name,
1066
+ arguments: toolCall.arguments,
1067
+ result,
1068
+ duration,
1069
+ status: 'success',
1070
+ timestamp: Date.now(),
1071
+ });
1072
+ return result;
1073
+ }
1074
+ const tool = this.toolRegistry.get(toolCall.name);
1075
+ if (!tool) {
1076
+ (0, provider_logger_1.log)(`[AIClient] Tool '${toolCall.name}' not found in registry`);
1077
+ // Fuzzy match: detect common hallucination patterns
1078
+ const suggestion = this.findSimilarToolName(toolCall.name);
1079
+ const errorMsg = suggestion
1080
+ ? `Tool '${toolCall.name}' not found. Did you mean '${suggestion}'? Use tool.search to discover available tools.`
1081
+ : `Tool '${toolCall.name}' not found. Use tool.search to discover available tools.`;
1082
+ this.emit('tool:failed', {
1083
+ toolName: toolCall.name,
1084
+ toolCallId: toolCall.id,
1085
+ status: 'failed',
1086
+ error: errorMsg,
1087
+ duration: Date.now() - startTime,
1088
+ });
1089
+ return JSON.stringify({ error: errorMsg });
1090
+ }
1091
+ try {
1092
+ const ctx = {
1093
+ workspaceRoot: process.cwd(),
1094
+ config: this.toolsConfig?.additionalConfigurations ?? {},
1095
+ log: (msg) => (0, provider_logger_1.log)(`[Tool] ${msg}`),
1096
+ };
1097
+ const result = await tool.execute(toolCall.arguments, ctx);
1098
+ const duration = Date.now() - startTime;
1099
+ // Emit completed event
1100
+ this.emit('tool:completed', {
1101
+ toolName: toolCall.name,
1102
+ toolCallId: toolCall.id,
1103
+ status: 'completed',
1104
+ result: typeof result === 'string' ? result.substring(0, 200) : JSON.stringify(result).substring(0, 200),
1105
+ duration,
1106
+ });
1107
+ // Emit log event with full details for history/logging
1108
+ this.emit('tool:log', {
1109
+ id: toolCall.id,
1110
+ name: toolCall.name,
1111
+ arguments: toolCall.arguments,
1112
+ result,
1113
+ duration,
1114
+ status: 'success',
1115
+ timestamp: Date.now(),
1116
+ });
1117
+ (0, provider_logger_1.log)(`[AIClient] Tool ${toolCall.name} executed successfully in ${duration}ms result_len=${result?.length ?? 0}`);
1118
+ if ((0, provider_logger_1.isVerbose)()) {
1119
+ (0, provider_logger_1.log)(`[AIClient] Tool ${toolCall.name} result_preview=${(0, provider_logger_1.safePreview)(result, 400)}`);
1120
+ }
1121
+ return result;
1122
+ }
1123
+ catch (error) {
1124
+ const duration = Date.now() - startTime;
1125
+ const errorMsg = error.message || 'Tool execution failed';
1126
+ // Emit failed event
1127
+ this.emit('tool:failed', {
1128
+ toolName: toolCall.name,
1129
+ toolCallId: toolCall.id,
1130
+ status: 'failed',
1131
+ error: errorMsg,
1132
+ duration,
1133
+ });
1134
+ // Emit log event for errors too
1135
+ this.emit('tool:log', {
1136
+ id: toolCall.id,
1137
+ name: toolCall.name,
1138
+ arguments: toolCall.arguments,
1139
+ result: JSON.stringify({ error: errorMsg }),
1140
+ duration,
1141
+ status: 'error',
1142
+ timestamp: Date.now(),
1143
+ });
1144
+ (0, provider_logger_1.log)(`[AIClient] Tool ${toolCall.name} failed: ${(0, provider_logger_1.safePreview)(errorMsg, 300)}`);
1145
+ return JSON.stringify({ error: errorMsg });
1146
+ }
1147
+ }
1148
+ /**
1149
+ * Find similar tool name to detect hallucinations.
1150
+ * Detects common patterns like underscore vs dot (fs_delete_file vs fs.delete_file).
1151
+ */
1152
+ findSimilarToolName(hallucinatedName) {
1153
+ if (!this.toolRegistry)
1154
+ return null;
1155
+ const allTools = this.toolRegistry.getAll();
1156
+ // Pattern 1: underscore → dot (fs_delete_file → fs.delete_file)
1157
+ const withDot = hallucinatedName.replace(/_/g, '.');
1158
+ if (allTools.some(t => t.name === withDot)) {
1159
+ return withDot;
1160
+ }
1161
+ // Pattern 2: dot → underscore (fs.delete.file → fs.delete_file)
1162
+ const withUnderscore = hallucinatedName.replace(/\./g, '_');
1163
+ if (allTools.some(t => t.name === withUnderscore)) {
1164
+ return withUnderscore;
1165
+ }
1166
+ // Pattern 3: camelCase → dot.case (fsDeleteFile → fs.delete_file)
1167
+ const fromCamelCase = hallucinatedName
1168
+ .replace(/([a-z])([A-Z])/g, '$1_$2')
1169
+ .toLowerCase()
1170
+ .replace(/_/g, '.');
1171
+ if (allTools.some(t => t.name === fromCamelCase)) {
1172
+ return fromCamelCase;
1173
+ }
1174
+ // Pattern 4: Levenshtein distance for typos
1175
+ let bestMatch = null;
1176
+ let minDistance = Infinity;
1177
+ for (const tool of allTools) {
1178
+ const distance = this.levenshteinDistance(hallucinatedName.toLowerCase(), tool.name.toLowerCase());
1179
+ // Only suggest if very close (1-2 character difference)
1180
+ if (distance <= 2 && distance < minDistance) {
1181
+ minDistance = distance;
1182
+ bestMatch = tool.name;
1183
+ }
1184
+ }
1185
+ return bestMatch;
1186
+ }
1187
+ /**
1188
+ * Calculate Levenshtein distance between two strings.
1189
+ */
1190
+ levenshteinDistance(a, b) {
1191
+ const matrix = [];
1192
+ for (let i = 0; i <= b.length; i++) {
1193
+ matrix[i] = [i];
1194
+ }
1195
+ for (let j = 0; j <= a.length; j++) {
1196
+ matrix[0][j] = j;
1197
+ }
1198
+ for (let i = 1; i <= b.length; i++) {
1199
+ for (let j = 1; j <= a.length; j++) {
1200
+ if (b.charAt(i - 1) === a.charAt(j - 1)) {
1201
+ matrix[i][j] = matrix[i - 1][j - 1];
1202
+ }
1203
+ else {
1204
+ matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, matrix[i][j - 1] + 1, matrix[i - 1][j] + 1);
1205
+ }
1206
+ }
1207
+ }
1208
+ return matrix[b.length][a.length];
1209
+ }
1210
+ /**
1211
+ * Execute tool.search using BM25 engine.
1212
+ */
1213
+ executeToolSearch(args) {
1214
+ const { query, category } = args;
1215
+ const limit = this.toolsConfig.toolSearch?.searchResultLimit ?? 5;
1216
+ (0, provider_logger_1.log)(`[AIClient] Executing tool.search: query="${query}" category=${category || 'all'} limit=${limit}`);
1217
+ const results = this.bm25Engine.search(query, { limit, category });
1218
+ // Record discovered tools in the cache
1219
+ const toolNames = results.map(r => r.toolName);
1220
+ this.toolRouter.getDiscoveryCache().recordDiscovery(query, toolNames);
1221
+ (0, provider_logger_1.log)(`[AIClient] tool.search found ${results.length} tools: ${toolNames.join(', ') || 'none'}`);
1222
+ return JSON.stringify({
1223
+ query,
1224
+ found: results.length,
1225
+ tools: results.map(r => ({
1226
+ name: r.tool.name,
1227
+ displayName: r.tool.displayName,
1228
+ description: r.tool.description,
1229
+ category: r.tool.category,
1230
+ parameters: r.tool.parameters,
1231
+ relevanceScore: Math.round(r.score * 100) / 100,
1232
+ })),
1233
+ hint: results.length > 0
1234
+ ? `Found ${results.length} tools. You can now call any of these tools directly.`
1235
+ : `No tools found for "${query}". Try a different search term.`,
1236
+ });
1237
+ }
1238
+ wrapError(error) {
1239
+ if (error instanceof errors_1.SDKError) {
1240
+ return error;
1241
+ }
1242
+ return new errors_1.ProviderError(error.message || 'Unknown provider error', 'UNKNOWN_PROVIDER_ERROR', 500, error);
1243
+ }
1244
+ }
1245
+ exports.AIClient = AIClient;
1246
+ //# sourceMappingURL=index.js.map