beeai-framework 0.1.28 → 0.1.30

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 (564) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs.map +1 -1
  2. package/dist/adapters/a2a/agents/agent.d.cts +2 -2
  3. package/dist/adapters/a2a/agents/agent.d.ts +2 -2
  4. package/dist/adapters/a2a/agents/agent.js.map +1 -1
  5. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  6. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  7. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  8. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  9. package/dist/adapters/a2a/agents/utils.cjs +52 -11
  10. package/dist/adapters/a2a/agents/utils.cjs.map +1 -1
  11. package/dist/adapters/a2a/agents/utils.js +52 -11
  12. package/dist/adapters/a2a/agents/utils.js.map +1 -1
  13. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -1
  14. package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
  15. package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
  16. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -1
  17. package/dist/adapters/a2a/serve/server.cjs.map +1 -1
  18. package/dist/adapters/a2a/serve/server.d.cts +2 -2
  19. package/dist/adapters/a2a/serve/server.d.ts +2 -2
  20. package/dist/adapters/a2a/serve/server.js.map +1 -1
  21. package/dist/adapters/acp/agents/agent.cjs.map +1 -1
  22. package/dist/adapters/acp/agents/agent.d.cts +2 -2
  23. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  24. package/dist/adapters/acp/agents/agent.js.map +1 -1
  25. package/dist/adapters/acp/agents/events.d.cts +1 -1
  26. package/dist/adapters/acp/agents/events.d.ts +1 -1
  27. package/dist/adapters/agentstack/agents/agent.cjs.map +1 -1
  28. package/dist/adapters/agentstack/agents/agent.d.cts +2 -2
  29. package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
  30. package/dist/adapters/agentstack/agents/agent.js.map +1 -1
  31. package/dist/adapters/agentstack/agents/events.d.cts +1 -1
  32. package/dist/adapters/agentstack/agents/events.d.ts +1 -1
  33. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  34. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
  35. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
  36. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  37. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  38. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  39. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  40. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
  41. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
  42. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  43. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  44. package/dist/adapters/anthropic/backend/chat.d.cts +3 -3
  45. package/dist/adapters/anthropic/backend/chat.d.ts +3 -3
  46. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  47. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  48. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  49. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  50. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  51. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  52. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  53. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  54. package/dist/adapters/azure-openai/backend/chat.d.cts +3 -3
  55. package/dist/adapters/azure-openai/backend/chat.d.ts +3 -3
  56. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  57. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  58. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  59. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  60. package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
  61. package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
  62. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  63. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  64. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  65. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  66. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  67. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  68. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  69. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  70. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  71. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/google-vertex/backend/chat.d.cts +3 -3
  73. package/dist/adapters/google-vertex/backend/chat.d.ts +3 -3
  74. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  75. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  76. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  77. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  78. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  79. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  80. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  81. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  82. package/dist/adapters/groq/backend/chat.d.cts +3 -3
  83. package/dist/adapters/groq/backend/chat.d.ts +3 -3
  84. package/dist/adapters/groq/backend/chat.js.map +1 -1
  85. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  86. package/dist/adapters/groq/backend/client.js.map +1 -1
  87. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  88. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  89. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  90. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  91. package/dist/adapters/langchain/backend/chat.cjs +6 -28
  92. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  93. package/dist/adapters/langchain/backend/chat.d.cts +6 -5
  94. package/dist/adapters/langchain/backend/chat.d.ts +6 -5
  95. package/dist/adapters/langchain/backend/chat.js +6 -28
  96. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  97. package/dist/adapters/langchain/backend/embedding.cjs +3 -2
  98. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  99. package/dist/adapters/langchain/backend/embedding.d.cts +3 -3
  100. package/dist/adapters/langchain/backend/embedding.d.ts +3 -3
  101. package/dist/adapters/langchain/backend/embedding.js +3 -2
  102. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  103. package/dist/adapters/langchain/backend/utils.cjs +328 -0
  104. package/dist/adapters/langchain/backend/utils.cjs.map +1 -0
  105. package/dist/adapters/langchain/backend/utils.d.cts +39 -0
  106. package/dist/adapters/langchain/backend/utils.d.ts +39 -0
  107. package/dist/adapters/langchain/backend/utils.js +324 -0
  108. package/dist/adapters/langchain/backend/utils.js.map +1 -0
  109. package/dist/adapters/langchain/tools.cjs.map +1 -1
  110. package/dist/adapters/langchain/tools.d.cts +2 -2
  111. package/dist/adapters/langchain/tools.d.ts +2 -2
  112. package/dist/adapters/langchain/tools.js.map +1 -1
  113. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  114. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  115. package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
  116. package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
  117. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  118. package/dist/adapters/mcp/serve/server.js.map +1 -1
  119. package/dist/adapters/minimax/backend/chat.cjs +25 -0
  120. package/dist/adapters/minimax/backend/chat.cjs.map +1 -0
  121. package/dist/adapters/minimax/backend/chat.d.cts +38 -0
  122. package/dist/adapters/minimax/backend/chat.d.ts +38 -0
  123. package/dist/adapters/minimax/backend/chat.js +23 -0
  124. package/dist/adapters/minimax/backend/chat.js.map +1 -0
  125. package/dist/adapters/minimax/backend/client.cjs +31 -0
  126. package/dist/adapters/minimax/backend/client.cjs.map +1 -0
  127. package/dist/adapters/minimax/backend/client.d.cts +17 -0
  128. package/dist/adapters/minimax/backend/client.d.ts +17 -0
  129. package/dist/adapters/minimax/backend/client.js +29 -0
  130. package/dist/adapters/minimax/backend/client.js.map +1 -0
  131. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  132. package/dist/adapters/ollama/backend/chat.d.cts +2 -2
  133. package/dist/adapters/ollama/backend/chat.d.ts +2 -2
  134. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  135. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  136. package/dist/adapters/ollama/backend/client.js.map +1 -1
  137. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  138. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  139. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  140. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  141. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  142. package/dist/adapters/openai/backend/chat.d.cts +2 -2
  143. package/dist/adapters/openai/backend/chat.d.ts +2 -2
  144. package/dist/adapters/openai/backend/chat.js.map +1 -1
  145. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  146. package/dist/adapters/openai/backend/client.js.map +1 -1
  147. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  148. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  149. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  150. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  151. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  152. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  153. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  154. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  155. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  156. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  157. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  158. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  159. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  160. package/dist/adapters/vercel/backend/utils.d.cts +2 -2
  161. package/dist/adapters/vercel/backend/utils.d.ts +2 -2
  162. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  163. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  164. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  165. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  166. package/dist/adapters/watsonx/backend/chat.js +1 -1
  167. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  168. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  169. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  170. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  171. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  172. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  173. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  174. package/dist/adapters/xai/backend/chat.cjs.map +1 -1
  175. package/dist/adapters/xai/backend/chat.d.cts +2 -2
  176. package/dist/adapters/xai/backend/chat.d.ts +2 -2
  177. package/dist/adapters/xai/backend/chat.js.map +1 -1
  178. package/dist/adapters/xai/backend/client.cjs.map +1 -1
  179. package/dist/adapters/xai/backend/client.js.map +1 -1
  180. package/dist/{agent-BAVf6-xf.d.ts → agent-s3uhvAba.d.ts} +5 -5
  181. package/dist/{agent-DHO-oJQf.d.cts → agent-zfT__iq9.d.cts} +5 -5
  182. package/dist/agents/base.cjs.map +1 -1
  183. package/dist/agents/base.d.cts +2 -2
  184. package/dist/agents/base.d.ts +2 -2
  185. package/dist/agents/base.js.map +1 -1
  186. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  187. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  188. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  189. package/dist/agents/experimental/replan/agent.js.map +1 -1
  190. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  191. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  192. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  193. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  194. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  195. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  196. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  197. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  198. package/dist/agents/experimental/streamlit/prompts.cjs +2 -2
  199. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  200. package/dist/agents/experimental/streamlit/prompts.js +2 -2
  201. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  202. package/dist/agents/react/agent.cjs +6 -6
  203. package/dist/agents/react/agent.cjs.map +1 -1
  204. package/dist/agents/react/agent.d.cts +4 -4
  205. package/dist/agents/react/agent.d.ts +4 -4
  206. package/dist/agents/react/agent.js.map +1 -1
  207. package/dist/agents/react/prompts.cjs.map +1 -1
  208. package/dist/agents/react/prompts.d.cts +1 -1
  209. package/dist/agents/react/prompts.d.ts +1 -1
  210. package/dist/agents/react/prompts.js.map +1 -1
  211. package/dist/agents/react/runners/base.cjs.map +1 -1
  212. package/dist/agents/react/runners/base.d.cts +4 -4
  213. package/dist/agents/react/runners/base.d.ts +4 -4
  214. package/dist/agents/react/runners/base.js.map +1 -1
  215. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  216. package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -1
  217. package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -1
  218. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  219. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  220. package/dist/agents/react/runners/deep-think/runner.d.cts +5 -5
  221. package/dist/agents/react/runners/deep-think/runner.d.ts +5 -5
  222. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  223. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  224. package/dist/agents/react/runners/default/runner.d.cts +5 -5
  225. package/dist/agents/react/runners/default/runner.d.ts +5 -5
  226. package/dist/agents/react/runners/default/runner.js.map +1 -1
  227. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  228. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  229. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  230. package/dist/agents/react/runners/granite/prompts.d.cts +1 -1
  231. package/dist/agents/react/runners/granite/prompts.d.ts +1 -1
  232. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  233. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  234. package/dist/agents/react/runners/granite/runner.d.cts +5 -5
  235. package/dist/agents/react/runners/granite/runner.d.ts +5 -5
  236. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  237. package/dist/agents/react/types.d.cts +2 -2
  238. package/dist/agents/react/types.d.ts +2 -2
  239. package/dist/agents/requirement/agent.cjs.map +1 -1
  240. package/dist/agents/requirement/agent.d.cts +5 -5
  241. package/dist/agents/requirement/agent.d.ts +5 -5
  242. package/dist/agents/requirement/agent.js.map +1 -1
  243. package/dist/agents/requirement/prompts.d.cts +2 -2
  244. package/dist/agents/requirement/prompts.d.ts +2 -2
  245. package/dist/agents/requirement/requirements/conditional.cjs.map +1 -1
  246. package/dist/agents/requirement/requirements/conditional.d.cts +5 -5
  247. package/dist/agents/requirement/requirements/conditional.d.ts +5 -5
  248. package/dist/agents/requirement/requirements/conditional.js.map +1 -1
  249. package/dist/agents/requirement/requirements/requirement.cjs.map +1 -1
  250. package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
  251. package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
  252. package/dist/agents/requirement/requirements/requirement.js.map +1 -1
  253. package/dist/agents/requirement/requirements/utils.cjs.map +1 -1
  254. package/dist/agents/requirement/requirements/utils.d.cts +1 -1
  255. package/dist/agents/requirement/requirements/utils.d.ts +1 -1
  256. package/dist/agents/requirement/requirements/utils.js.map +1 -1
  257. package/dist/agents/requirement/runner.cjs.map +1 -1
  258. package/dist/agents/requirement/runner.d.cts +5 -5
  259. package/dist/agents/requirement/runner.d.ts +5 -5
  260. package/dist/agents/requirement/runner.js.map +1 -1
  261. package/dist/agents/requirement/types.d.cts +4 -4
  262. package/dist/agents/requirement/types.d.ts +4 -4
  263. package/dist/agents/requirement/utils/llm.cjs.map +1 -1
  264. package/dist/agents/requirement/utils/llm.d.cts +4 -4
  265. package/dist/agents/requirement/utils/llm.d.ts +4 -4
  266. package/dist/agents/requirement/utils/llm.js.map +1 -1
  267. package/dist/agents/requirement/utils/tool.cjs.map +1 -1
  268. package/dist/agents/requirement/utils/tool.d.cts +4 -4
  269. package/dist/agents/requirement/utils/tool.d.ts +4 -4
  270. package/dist/agents/requirement/utils/tool.js.map +1 -1
  271. package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -1
  272. package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -1
  273. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  274. package/dist/agents/toolCalling/agent.d.cts +4 -4
  275. package/dist/agents/toolCalling/agent.d.ts +4 -4
  276. package/dist/agents/toolCalling/agent.js.map +1 -1
  277. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  278. package/dist/agents/toolCalling/prompts.js.map +1 -1
  279. package/dist/agents/toolCalling/types.d.cts +1 -1
  280. package/dist/agents/toolCalling/types.d.ts +1 -1
  281. package/dist/agents/types.d.cts +2 -2
  282. package/dist/agents/types.d.ts +2 -2
  283. package/dist/backend/backend.cjs.map +1 -1
  284. package/dist/backend/backend.d.cts +3 -3
  285. package/dist/backend/backend.d.ts +3 -3
  286. package/dist/backend/backend.js.map +1 -1
  287. package/dist/backend/chat.cjs.map +1 -1
  288. package/dist/backend/chat.d.cts +2 -2
  289. package/dist/backend/chat.d.ts +2 -2
  290. package/dist/backend/chat.js.map +1 -1
  291. package/dist/backend/client.cjs.map +1 -1
  292. package/dist/backend/client.js.map +1 -1
  293. package/dist/backend/constants.cjs +7 -0
  294. package/dist/backend/constants.cjs.map +1 -1
  295. package/dist/backend/constants.d.cts +5 -0
  296. package/dist/backend/constants.d.ts +5 -0
  297. package/dist/backend/constants.js +7 -0
  298. package/dist/backend/constants.js.map +1 -1
  299. package/dist/backend/core.d.cts +2 -2
  300. package/dist/backend/core.d.ts +2 -2
  301. package/dist/backend/embedding.cjs.map +1 -1
  302. package/dist/backend/embedding.d.cts +2 -2
  303. package/dist/backend/embedding.d.ts +2 -2
  304. package/dist/backend/embedding.js.map +1 -1
  305. package/dist/backend/errors.cjs.map +1 -1
  306. package/dist/backend/errors.d.cts +2 -2
  307. package/dist/backend/errors.d.ts +2 -2
  308. package/dist/backend/errors.js.map +1 -1
  309. package/dist/backend/message.cjs.map +1 -1
  310. package/dist/backend/message.js.map +1 -1
  311. package/dist/backend/utils.cjs.map +1 -1
  312. package/dist/backend/utils.d.cts +2 -2
  313. package/dist/backend/utils.d.ts +2 -2
  314. package/dist/backend/utils.js.map +1 -1
  315. package/dist/{base-BfhNzUYf.d.ts → base-BjzyQ8k6.d.ts} +2 -2
  316. package/dist/{base-BqzN2QwB.d.cts → base-s3ioVIE9.d.cts} +2 -2
  317. package/dist/cache/decoratorCache.cjs.map +1 -1
  318. package/dist/cache/decoratorCache.js.map +1 -1
  319. package/dist/cache/fileCache.cjs.map +1 -1
  320. package/dist/cache/fileCache.js.map +1 -1
  321. package/dist/cache/nullCache.cjs.map +1 -1
  322. package/dist/cache/nullCache.js.map +1 -1
  323. package/dist/cache/slidingCache.cjs.map +1 -1
  324. package/dist/cache/slidingCache.js.map +1 -1
  325. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  326. package/dist/cache/unconstrainedCache.js.map +1 -1
  327. package/dist/{chat-DaqV3woF.d.cts → chat-C20nYj46.d.cts} +3 -3
  328. package/dist/{chat-DTxmaKP0.d.ts → chat-CfTNfR60.d.ts} +3 -3
  329. package/dist/context.cjs.map +1 -1
  330. package/dist/context.d.cts +1 -1
  331. package/dist/context.d.ts +1 -1
  332. package/dist/context.js.map +1 -1
  333. package/dist/emitter/emitter.cjs.map +1 -1
  334. package/dist/emitter/emitter.d.cts +1 -1
  335. package/dist/emitter/emitter.d.ts +1 -1
  336. package/dist/emitter/emitter.js.map +1 -1
  337. package/dist/emitter/types.d.cts +1 -1
  338. package/dist/emitter/types.d.ts +1 -1
  339. package/dist/emitter/utils.cjs.map +1 -1
  340. package/dist/emitter/utils.js.map +1 -1
  341. package/dist/{emitter-UkIkNrek.d.cts → emitter-D4OcelZ9.d.cts} +2 -2
  342. package/dist/{emitter-CL56qab4.d.ts → emitter-kHxkUxco.d.ts} +2 -2
  343. package/dist/errors.cjs.map +1 -1
  344. package/dist/errors.js.map +1 -1
  345. package/dist/index.d.cts +4 -4
  346. package/dist/index.d.ts +4 -4
  347. package/dist/internals/env.cjs.map +1 -1
  348. package/dist/internals/env.js.map +1 -1
  349. package/dist/internals/fetcher.cjs.map +1 -1
  350. package/dist/internals/fetcher.d.cts +1 -1
  351. package/dist/internals/fetcher.d.ts +1 -1
  352. package/dist/internals/fetcher.js.map +1 -1
  353. package/dist/internals/helpers/array.cjs.map +1 -1
  354. package/dist/internals/helpers/array.js.map +1 -1
  355. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  356. package/dist/internals/helpers/cancellation.js.map +1 -1
  357. package/dist/internals/helpers/counter.cjs.map +1 -1
  358. package/dist/internals/helpers/counter.js.map +1 -1
  359. package/dist/internals/helpers/general.cjs.map +1 -1
  360. package/dist/internals/helpers/general.js.map +1 -1
  361. package/dist/internals/helpers/hash.cjs.map +1 -1
  362. package/dist/internals/helpers/hash.js.map +1 -1
  363. package/dist/internals/helpers/map.cjs.map +1 -1
  364. package/dist/internals/helpers/map.js.map +1 -1
  365. package/dist/internals/helpers/math.cjs.map +1 -1
  366. package/dist/internals/helpers/math.js.map +1 -1
  367. package/dist/internals/helpers/object.cjs +7 -1
  368. package/dist/internals/helpers/object.cjs.map +1 -1
  369. package/dist/internals/helpers/object.js +7 -1
  370. package/dist/internals/helpers/object.js.map +1 -1
  371. package/dist/internals/helpers/paginate.cjs.map +1 -1
  372. package/dist/internals/helpers/paginate.js.map +1 -1
  373. package/dist/internals/helpers/promise.cjs.map +1 -1
  374. package/dist/internals/helpers/promise.js.map +1 -1
  375. package/dist/internals/helpers/prototype.cjs.map +1 -1
  376. package/dist/internals/helpers/prototype.js.map +1 -1
  377. package/dist/internals/helpers/retry.cjs.map +1 -1
  378. package/dist/internals/helpers/retry.js.map +1 -1
  379. package/dist/internals/helpers/retryable.cjs.map +1 -1
  380. package/dist/internals/helpers/retryable.js.map +1 -1
  381. package/dist/internals/helpers/schema.cjs.map +1 -1
  382. package/dist/internals/helpers/schema.d.cts +4 -4
  383. package/dist/internals/helpers/schema.d.ts +4 -4
  384. package/dist/internals/helpers/schema.js.map +1 -1
  385. package/dist/internals/helpers/stream.cjs.map +1 -1
  386. package/dist/internals/helpers/stream.js.map +1 -1
  387. package/dist/internals/helpers/string.cjs.map +1 -1
  388. package/dist/internals/helpers/string.js.map +1 -1
  389. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  390. package/dist/internals/helpers/weakRef.js.map +1 -1
  391. package/dist/internals/serializable.cjs +3 -1
  392. package/dist/internals/serializable.cjs.map +1 -1
  393. package/dist/internals/serializable.d.cts +6 -0
  394. package/dist/internals/serializable.d.ts +6 -0
  395. package/dist/internals/serializable.js +3 -1
  396. package/dist/internals/serializable.js.map +1 -1
  397. package/dist/internals/types.cjs.map +1 -1
  398. package/dist/internals/types.js.map +1 -1
  399. package/dist/logger/logger.cjs.map +1 -1
  400. package/dist/logger/logger.d.cts +2 -2
  401. package/dist/logger/logger.d.ts +2 -2
  402. package/dist/logger/logger.js +2 -2
  403. package/dist/logger/logger.js.map +1 -1
  404. package/dist/logger/pretty.cjs.map +1 -1
  405. package/dist/logger/pretty.js.map +1 -1
  406. package/dist/memory/base.cjs.map +1 -1
  407. package/dist/memory/base.js.map +1 -1
  408. package/dist/memory/slidingMemory.cjs.map +1 -1
  409. package/dist/memory/slidingMemory.js.map +1 -1
  410. package/dist/memory/summarizeMemory.cjs.map +1 -1
  411. package/dist/memory/summarizeMemory.d.cts +2 -2
  412. package/dist/memory/summarizeMemory.d.ts +2 -2
  413. package/dist/memory/summarizeMemory.js.map +1 -1
  414. package/dist/memory/tokenMemory.cjs.map +1 -1
  415. package/dist/memory/tokenMemory.js.map +1 -1
  416. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  417. package/dist/memory/unconstrainedMemory.js.map +1 -1
  418. package/dist/middleware/streamToolCall.cjs.map +1 -1
  419. package/dist/middleware/streamToolCall.d.cts +2 -2
  420. package/dist/middleware/streamToolCall.d.ts +2 -2
  421. package/dist/middleware/streamToolCall.js.map +1 -1
  422. package/dist/middleware/trajectory.cjs.map +1 -1
  423. package/dist/middleware/trajectory.d.cts +2 -2
  424. package/dist/middleware/trajectory.d.ts +2 -2
  425. package/dist/middleware/trajectory.js.map +1 -1
  426. package/dist/parsers/errors.cjs.map +1 -1
  427. package/dist/parsers/errors.js.map +1 -1
  428. package/dist/parsers/field.cjs.map +1 -1
  429. package/dist/parsers/field.js.map +1 -1
  430. package/dist/parsers/linePrefix.cjs.map +1 -1
  431. package/dist/parsers/linePrefix.d.cts +1 -1
  432. package/dist/parsers/linePrefix.d.ts +1 -1
  433. package/dist/parsers/linePrefix.js.map +1 -1
  434. package/dist/serializer/error.cjs.map +1 -1
  435. package/dist/serializer/error.js.map +1 -1
  436. package/dist/serializer/serializer.cjs +16 -3
  437. package/dist/serializer/serializer.cjs.map +1 -1
  438. package/dist/serializer/serializer.d.cts +1 -1
  439. package/dist/serializer/serializer.d.ts +1 -1
  440. package/dist/serializer/serializer.js +16 -4
  441. package/dist/serializer/serializer.js.map +1 -1
  442. package/dist/serializer/utils.cjs.map +1 -1
  443. package/dist/serializer/utils.d.cts +1 -1
  444. package/dist/serializer/utils.d.ts +1 -1
  445. package/dist/serializer/utils.js.map +1 -1
  446. package/dist/{serializer-53t8gGQa.d.ts → serializer-BafOT48s.d.ts} +10 -4
  447. package/dist/{serializer-c51B2z6d.d.cts → serializer-CFDWYUco.d.cts} +10 -4
  448. package/dist/serve/server.cjs.map +1 -1
  449. package/dist/serve/server.js.map +1 -1
  450. package/dist/template.cjs.map +1 -1
  451. package/dist/template.js.map +1 -1
  452. package/dist/tools/arxiv.cjs.map +1 -1
  453. package/dist/tools/arxiv.d.cts +2 -2
  454. package/dist/tools/arxiv.d.ts +2 -2
  455. package/dist/tools/arxiv.js.map +1 -1
  456. package/dist/tools/base.cjs.map +1 -1
  457. package/dist/tools/base.d.cts +1 -1
  458. package/dist/tools/base.d.ts +1 -1
  459. package/dist/tools/base.js.map +1 -1
  460. package/dist/tools/calculator.cjs.map +1 -1
  461. package/dist/tools/calculator.d.cts +3 -3
  462. package/dist/tools/calculator.d.ts +3 -3
  463. package/dist/tools/calculator.js.map +1 -1
  464. package/dist/tools/custom.cjs.map +1 -1
  465. package/dist/tools/custom.d.cts +3 -3
  466. package/dist/tools/custom.d.ts +3 -3
  467. package/dist/tools/custom.js.map +1 -1
  468. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  469. package/dist/tools/database/elasticsearch.d.cts +3 -3
  470. package/dist/tools/database/elasticsearch.d.ts +3 -3
  471. package/dist/tools/database/elasticsearch.js.map +1 -1
  472. package/dist/tools/database/metadata.cjs.map +1 -1
  473. package/dist/tools/database/metadata.js.map +1 -1
  474. package/dist/tools/database/milvus.cjs.map +1 -1
  475. package/dist/tools/database/milvus.d.cts +3 -3
  476. package/dist/tools/database/milvus.d.ts +3 -3
  477. package/dist/tools/database/milvus.js.map +1 -1
  478. package/dist/tools/database/qdrant.cjs.map +1 -1
  479. package/dist/tools/database/qdrant.d.cts +2 -2
  480. package/dist/tools/database/qdrant.d.ts +2 -2
  481. package/dist/tools/database/qdrant.js.map +1 -1
  482. package/dist/tools/database/sql.cjs.map +1 -1
  483. package/dist/tools/database/sql.d.cts +2 -2
  484. package/dist/tools/database/sql.d.ts +2 -2
  485. package/dist/tools/database/sql.js.map +1 -1
  486. package/dist/tools/handoff.cjs.map +1 -1
  487. package/dist/tools/handoff.d.cts +2 -2
  488. package/dist/tools/handoff.d.ts +2 -2
  489. package/dist/tools/handoff.js.map +1 -1
  490. package/dist/tools/llm.cjs +1 -1
  491. package/dist/tools/llm.cjs.map +1 -1
  492. package/dist/tools/llm.d.cts +3 -3
  493. package/dist/tools/llm.d.ts +3 -3
  494. package/dist/tools/llm.js +1 -1
  495. package/dist/tools/llm.js.map +1 -1
  496. package/dist/tools/mcp.cjs.map +1 -1
  497. package/dist/tools/mcp.d.cts +2 -2
  498. package/dist/tools/mcp.d.ts +2 -2
  499. package/dist/tools/mcp.js.map +1 -1
  500. package/dist/tools/openapi.cjs.map +1 -1
  501. package/dist/tools/openapi.d.cts +2 -2
  502. package/dist/tools/openapi.d.ts +2 -2
  503. package/dist/tools/openapi.js.map +1 -1
  504. package/dist/tools/python/output.cjs.map +1 -1
  505. package/dist/tools/python/output.d.cts +1 -1
  506. package/dist/tools/python/output.d.ts +1 -1
  507. package/dist/tools/python/output.js.map +1 -1
  508. package/dist/tools/python/python.cjs +5 -2
  509. package/dist/tools/python/python.cjs.map +1 -1
  510. package/dist/tools/python/python.d.cts +3 -3
  511. package/dist/tools/python/python.d.ts +3 -3
  512. package/dist/tools/python/python.js +5 -2
  513. package/dist/tools/python/python.js.map +1 -1
  514. package/dist/tools/python/storage.cjs.map +1 -1
  515. package/dist/tools/python/storage.js.map +1 -1
  516. package/dist/tools/search/base.cjs.map +1 -1
  517. package/dist/tools/search/base.d.cts +2 -2
  518. package/dist/tools/search/base.d.ts +2 -2
  519. package/dist/tools/search/base.js.map +1 -1
  520. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  521. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
  522. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
  523. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  524. package/dist/tools/search/googleSearch.cjs.map +1 -1
  525. package/dist/tools/search/googleSearch.d.cts +2 -2
  526. package/dist/tools/search/googleSearch.d.ts +2 -2
  527. package/dist/tools/search/googleSearch.js.map +1 -1
  528. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  529. package/dist/tools/search/searXNGSearch.d.cts +2 -2
  530. package/dist/tools/search/searXNGSearch.d.ts +2 -2
  531. package/dist/tools/search/searXNGSearch.js.map +1 -1
  532. package/dist/tools/search/wikipedia.cjs.map +1 -1
  533. package/dist/tools/search/wikipedia.d.cts +3 -3
  534. package/dist/tools/search/wikipedia.d.ts +3 -3
  535. package/dist/tools/search/wikipedia.js.map +1 -1
  536. package/dist/tools/similarity.cjs.map +1 -1
  537. package/dist/tools/similarity.d.cts +2 -2
  538. package/dist/tools/similarity.d.ts +2 -2
  539. package/dist/tools/similarity.js.map +1 -1
  540. package/dist/tools/think.cjs.map +1 -1
  541. package/dist/tools/think.d.cts +2 -2
  542. package/dist/tools/think.d.ts +2 -2
  543. package/dist/tools/think.js.map +1 -1
  544. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  545. package/dist/tools/weather/openMeteo.d.cts +2 -2
  546. package/dist/tools/weather/openMeteo.d.ts +2 -2
  547. package/dist/tools/weather/openMeteo.js.map +1 -1
  548. package/dist/tools/web/webCrawler.cjs.map +1 -1
  549. package/dist/tools/web/webCrawler.d.cts +2 -2
  550. package/dist/tools/web/webCrawler.d.ts +2 -2
  551. package/dist/tools/web/webCrawler.js.map +1 -1
  552. package/dist/{types-YoNQSxQH.d.cts → types-BNsa3W7Z.d.cts} +4 -4
  553. package/dist/{types-YT-WdK3m.d.ts → types-DYtzF6ya.d.ts} +4 -4
  554. package/dist/version.cjs +1 -1
  555. package/dist/version.js +1 -1
  556. package/dist/workflows/agent.cjs.map +1 -1
  557. package/dist/workflows/agent.d.cts +40 -40
  558. package/dist/workflows/agent.d.ts +40 -40
  559. package/dist/workflows/agent.js.map +1 -1
  560. package/dist/workflows/workflow.cjs.map +1 -1
  561. package/dist/workflows/workflow.d.cts +1 -1
  562. package/dist/workflows/workflow.d.ts +1 -1
  563. package/dist/workflows/workflow.js.map +1 -1
  564. package/package.json +38 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/database/qdrant.ts"],"names":["QdrantAction","QdrantDatabaseTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","collectionName","string","optional","vector","array","number","vectors","topK","coerce","int","default","filter","record","any","payload","ids","or","emitter","Emitter","root","child","namespace","creator","validateInput","schema","input","ToolInputValidationError","register","client","QdrantClient","options","connection","_run","_options","collections","listCollections","JSONToolOutput","ToolError","collectionInfo","getCollectionInfo","searchResults","search","insertResults","insert","deleteResults","delete","response","getCollections","map","collection","error","getCollection","points","index","id","uuidv4","upsert","searchParams","query","limit","with_payload"],"mappings":"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","file":"qdrant.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { QdrantClient, QdrantClientParams } from \"@qdrant/js-client-rest\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { z } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface QdrantToolOptions extends BaseToolOptions, QdrantClientParams {\n connection: QdrantClientParams;\n}\n\nexport type QdrantSearchToolResult = any;\n\nexport enum QdrantAction {\n ListCollections = \"ListCollections\",\n GetCollectionInfo = \"GetCollectionInfo\",\n Search = \"Search\",\n Insert = \"Insert\",\n Delete = \"Delete\",\n}\n\nexport class QdrantDatabaseTool extends Tool<\n JSONToolOutput<QdrantSearchToolResult>,\n QdrantToolOptions\n> {\n name = \"QdrantDatabaseTool\";\n\n description = `Can query data from a Qdrant vector database. IMPORTANT: strictly follow this order of actions:\n 1. ${QdrantAction.ListCollections} - List all the Qdrant collections\n 2. ${QdrantAction.GetCollectionInfo} - Get information about a Qdrant collection\n 3. ${QdrantAction.Insert} - Insert data into a Qdrant collection\n 3. ${QdrantAction.Search} - Perform search on a Qdrant collection\n 4. ${QdrantAction.Delete} - Delete from a Qdrant collection`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(QdrantAction)\n .describe(\n `The action to perform. ${QdrantAction.ListCollections} lists all collections, ${QdrantAction.GetCollectionInfo} fetches details for a specified collection, ${QdrantAction.Search} executes a vector search, ${QdrantAction.Insert} inserts new vectors, and ${QdrantAction.Delete} removes vectors.`,\n ),\n collectionName: z\n .string()\n .optional()\n .describe(\n `The name of the collection to query, required for ${QdrantAction.GetCollectionInfo}, ${QdrantAction.Search}, ${QdrantAction.Insert}, and ${QdrantAction.Delete}`,\n ),\n vector: z\n .array(z.number())\n .optional()\n .describe(`The vector to search for, required for ${QdrantAction.Search}.`),\n vectors: z\n .array(z.array(z.number()))\n .optional()\n .describe(`The vectors to insert, required for ${QdrantAction.Insert}.`),\n topK: z.coerce\n .number()\n .int()\n .default(10)\n .optional()\n .describe(`The number of nearest neighbors to return.`),\n filter: z\n .record(z.string(), z.any())\n .optional()\n .describe(`Optional filter for ${QdrantAction.Search}.`),\n payload: z\n .array(z.record(z.string(), z.any()))\n .optional()\n .describe(`Additional payload to insert with vectors.`),\n ids: z\n .array(z.string().or(z.number()))\n .optional()\n .describe(`Array of IDs to delete or insert.`),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, JSONToolOutput<QdrantSearchToolResult>> =\n Emitter.root.child({\n namespace: [\"tool\", \"database\", \"qdrant\"],\n creator: this,\n });\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action != QdrantAction.ListCollections && !input.collectionName) {\n throw new ToolInputValidationError(\n `Collection name is required for ${QdrantAction.GetCollectionInfo}, ${QdrantAction.Search}, ${QdrantAction.Insert}, and ${QdrantAction.Delete} actions.`,\n );\n }\n if (input.action === QdrantAction.Search && (!input.collectionName || !input.vector)) {\n throw new ToolInputValidationError(`Vector is required for ${QdrantAction.Search} action.`);\n }\n if (input.action === QdrantAction.Insert && (!input.collectionName || !input.vectors)) {\n throw new ToolInputValidationError(`Vectors are required for ${QdrantAction.Insert} action.`);\n }\n }\n\n static {\n this.register();\n }\n\n @Cache()\n protected async client(): Promise<QdrantClient> {\n return new QdrantClient(this.options.connection);\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n ): Promise<JSONToolOutput<any>> {\n switch (input.action) {\n case QdrantAction.ListCollections: {\n const collections = await this.listCollections();\n return new JSONToolOutput(collections);\n }\n\n case QdrantAction.GetCollectionInfo: {\n if (!input.collectionName) {\n throw new ToolError(\"A collection name is required for Qdrant GetCollectionInfo action\");\n }\n const collectionInfo = await this.getCollectionInfo(input.collectionName);\n return new JSONToolOutput(collectionInfo);\n }\n\n case QdrantAction.Search: {\n if (!input.collectionName || !input.vector) {\n throw new ToolError(\"A collection name and vector are required for Qdrant Search action\");\n }\n const searchResults = await this.search(input);\n return new JSONToolOutput(searchResults);\n }\n\n case QdrantAction.Insert: {\n if (!input.collectionName || !input.vectors) {\n throw new ToolError(\n \"A collection name and vectors are required for Qdrant Insert action\",\n );\n }\n const insertResults = await this.insert(input);\n return new JSONToolOutput(insertResults);\n }\n\n case QdrantAction.Delete: {\n if (!input.collectionName || !input.ids) {\n throw new ToolError(\"Collection name and ids are required for Qdrant Delete action\");\n }\n const deleteResults = await this.delete(input);\n return new JSONToolOutput(deleteResults);\n }\n\n default: {\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n }\n }\n\n protected async listCollections(): Promise<string[]> {\n try {\n const client = await this.client();\n const response = await client.getCollections();\n\n return response.collections.map((collection) => collection.name);\n } catch (error) {\n throw new ToolError(`Failed to list collections from Qdrant: ${error}`);\n }\n }\n\n protected async getCollectionInfo(collectionName: string): Promise<any> {\n const client = await this.client();\n const response = await client.getCollection(collectionName);\n return response;\n }\n\n protected async insert(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const points = input.vectors!.map((vector, index) => ({\n id: input?.ids?.[index] ?? uuidv4(),\n vector: vector,\n payload: input?.payload?.[index] || {},\n }));\n\n const response = await client.upsert(input.collectionName as string, {\n points: points,\n });\n\n return response;\n }\n\n protected async search(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const searchParams: any = {\n query: input.vector,\n limit: input.topK || 10,\n with_payload: true,\n filter: input.filter,\n };\n\n const response = await client.query(input.collectionName as string, searchParams);\n return response;\n }\n\n protected async delete(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const response = await client.delete(input.collectionName as string, {\n points: input.ids!,\n });\n\n return response;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/database/qdrant.ts"],"names":["QdrantAction","QdrantDatabaseTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","collectionName","string","optional","vector","array","number","vectors","topK","coerce","int","default","filter","record","any","payload","ids","or","emitter","Emitter","root","child","namespace","creator","validateInput","schema","input","ToolInputValidationError","register","client","QdrantClient","options","connection","_run","_options","collections","listCollections","JSONToolOutput","ToolError","collectionInfo","getCollectionInfo","searchResults","search","insertResults","insert","deleteResults","delete","response","getCollections","map","collection","error","getCollection","points","index","id","uuidv4","upsert","searchParams","query","limit","with_payload"],"mappings":"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","file":"qdrant.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { QdrantClient, QdrantClientParams } from \"@qdrant/js-client-rest\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { z } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface QdrantToolOptions extends BaseToolOptions, QdrantClientParams {\n connection: QdrantClientParams;\n}\n\nexport type QdrantSearchToolResult = any;\n\nexport enum QdrantAction {\n ListCollections = \"ListCollections\",\n GetCollectionInfo = \"GetCollectionInfo\",\n Search = \"Search\",\n Insert = \"Insert\",\n Delete = \"Delete\",\n}\n\nexport class QdrantDatabaseTool extends Tool<\n JSONToolOutput<QdrantSearchToolResult>,\n QdrantToolOptions\n> {\n name = \"QdrantDatabaseTool\";\n\n description = `Can query data from a Qdrant vector database. IMPORTANT: strictly follow this order of actions:\n 1. ${QdrantAction.ListCollections} - List all the Qdrant collections\n 2. ${QdrantAction.GetCollectionInfo} - Get information about a Qdrant collection\n 3. ${QdrantAction.Insert} - Insert data into a Qdrant collection\n 3. ${QdrantAction.Search} - Perform search on a Qdrant collection\n 4. ${QdrantAction.Delete} - Delete from a Qdrant collection`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(QdrantAction)\n .describe(\n `The action to perform. ${QdrantAction.ListCollections} lists all collections, ${QdrantAction.GetCollectionInfo} fetches details for a specified collection, ${QdrantAction.Search} executes a vector search, ${QdrantAction.Insert} inserts new vectors, and ${QdrantAction.Delete} removes vectors.`,\n ),\n collectionName: z\n .string()\n .optional()\n .describe(\n `The name of the collection to query, required for ${QdrantAction.GetCollectionInfo}, ${QdrantAction.Search}, ${QdrantAction.Insert}, and ${QdrantAction.Delete}`,\n ),\n vector: z\n .array(z.number())\n .optional()\n .describe(`The vector to search for, required for ${QdrantAction.Search}.`),\n vectors: z\n .array(z.array(z.number()))\n .optional()\n .describe(`The vectors to insert, required for ${QdrantAction.Insert}.`),\n topK: z.coerce\n .number()\n .int()\n .default(10)\n .optional()\n .describe(`The number of nearest neighbors to return.`),\n filter: z\n .record(z.string(), z.any())\n .optional()\n .describe(`Optional filter for ${QdrantAction.Search}.`),\n payload: z\n .array(z.record(z.string(), z.any()))\n .optional()\n .describe(`Additional payload to insert with vectors.`),\n ids: z\n .array(z.string().or(z.number()))\n .optional()\n .describe(`Array of IDs to delete or insert.`),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, JSONToolOutput<QdrantSearchToolResult>> =\n Emitter.root.child({\n namespace: [\"tool\", \"database\", \"qdrant\"],\n creator: this,\n });\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action != QdrantAction.ListCollections && !input.collectionName) {\n throw new ToolInputValidationError(\n `Collection name is required for ${QdrantAction.GetCollectionInfo}, ${QdrantAction.Search}, ${QdrantAction.Insert}, and ${QdrantAction.Delete} actions.`,\n );\n }\n if (input.action === QdrantAction.Search && (!input.collectionName || !input.vector)) {\n throw new ToolInputValidationError(`Vector is required for ${QdrantAction.Search} action.`);\n }\n if (input.action === QdrantAction.Insert && (!input.collectionName || !input.vectors)) {\n throw new ToolInputValidationError(`Vectors are required for ${QdrantAction.Insert} action.`);\n }\n }\n\n static {\n this.register();\n }\n\n @Cache()\n protected async client(): Promise<QdrantClient> {\n return new QdrantClient(this.options.connection);\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n ): Promise<JSONToolOutput<any>> {\n switch (input.action) {\n case QdrantAction.ListCollections: {\n const collections = await this.listCollections();\n return new JSONToolOutput(collections);\n }\n\n case QdrantAction.GetCollectionInfo: {\n if (!input.collectionName) {\n throw new ToolError(\"A collection name is required for Qdrant GetCollectionInfo action\");\n }\n const collectionInfo = await this.getCollectionInfo(input.collectionName);\n return new JSONToolOutput(collectionInfo);\n }\n\n case QdrantAction.Search: {\n if (!input.collectionName || !input.vector) {\n throw new ToolError(\"A collection name and vector are required for Qdrant Search action\");\n }\n const searchResults = await this.search(input);\n return new JSONToolOutput(searchResults);\n }\n\n case QdrantAction.Insert: {\n if (!input.collectionName || !input.vectors) {\n throw new ToolError(\n \"A collection name and vectors are required for Qdrant Insert action\",\n );\n }\n const insertResults = await this.insert(input);\n return new JSONToolOutput(insertResults);\n }\n\n case QdrantAction.Delete: {\n if (!input.collectionName || !input.ids) {\n throw new ToolError(\"Collection name and ids are required for Qdrant Delete action\");\n }\n const deleteResults = await this.delete(input);\n return new JSONToolOutput(deleteResults);\n }\n\n default: {\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n }\n }\n\n protected async listCollections(): Promise<string[]> {\n try {\n const client = await this.client();\n const response = await client.getCollections();\n\n return response.collections.map((collection) => collection.name);\n } catch (error) {\n throw new ToolError(`Failed to list collections from Qdrant: ${error}`);\n }\n }\n\n protected async getCollectionInfo(collectionName: string): Promise<any> {\n const client = await this.client();\n const response = await client.getCollection(collectionName);\n return response;\n }\n\n protected async insert(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const points = input.vectors!.map((vector, index) => ({\n id: input?.ids?.[index] ?? uuidv4(),\n vector: vector,\n payload: input?.payload?.[index] || {},\n }));\n\n const response = await client.upsert(input.collectionName as string, {\n points: points,\n });\n\n return response;\n }\n\n protected async search(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const searchParams: any = {\n query: input.vector,\n limit: input.topK || 10,\n with_payload: true,\n filter: input.filter,\n };\n\n const response = await client.query(input.collectionName as string, searchParams);\n return response;\n }\n\n protected async delete(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const response = await client.delete(input.collectionName as string, {\n points: input.ids!,\n });\n\n return response;\n }\n}\n"]}
@@ -1,10 +1,10 @@
1
- import { BaseToolOptions, Tool, JSONToolOutput, ToolEmitter, ToolInput, BaseToolRunOptions } from '../base.cjs';
1
+ import { Tool, JSONToolOutput, BaseToolOptions, ToolEmitter, ToolInput, BaseToolRunOptions } from '../base.cjs';
2
2
  import { AnyToolSchemaLike } from '../../internals/helpers/schema.cjs';
3
3
  import { QdrantClientParams, QdrantClient } from '@qdrant/js-client-rest';
4
4
  import { z } from 'zod';
5
5
  import 'ajv';
6
6
  import '../../context.cjs';
7
- import '../../emitter-UkIkNrek.cjs';
7
+ import '../../emitter-D4OcelZ9.cjs';
8
8
  import '../../internals/types.cjs';
9
9
  import '../../internals/helpers/guards.cjs';
10
10
  import '../../internals/serializable.cjs';
@@ -1,10 +1,10 @@
1
- import { BaseToolOptions, Tool, JSONToolOutput, ToolEmitter, ToolInput, BaseToolRunOptions } from '../base.js';
1
+ import { Tool, JSONToolOutput, BaseToolOptions, ToolEmitter, ToolInput, BaseToolRunOptions } from '../base.js';
2
2
  import { AnyToolSchemaLike } from '../../internals/helpers/schema.js';
3
3
  import { QdrantClientParams, QdrantClient } from '@qdrant/js-client-rest';
4
4
  import { z } from 'zod';
5
5
  import 'ajv';
6
6
  import '../../context.js';
7
- import '../../emitter-CL56qab4.js';
7
+ import '../../emitter-kHxkUxco.js';
8
8
  import '../../internals/types.js';
9
9
  import '../../internals/helpers/guards.js';
10
10
  import '../../internals/serializable.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/database/qdrant.ts"],"names":["QdrantAction","QdrantDatabaseTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","collectionName","string","optional","vector","array","number","vectors","topK","coerce","int","default","filter","record","any","payload","ids","or","emitter","Emitter","root","child","namespace","creator","validateInput","schema","input","ToolInputValidationError","register","client","QdrantClient","options","connection","_run","_options","collections","listCollections","JSONToolOutput","ToolError","collectionInfo","getCollectionInfo","searchResults","search","insertResults","insert","deleteResults","delete","response","getCollections","map","collection","error","getCollection","points","index","id","uuidv4","upsert","searchParams","query","limit","with_payload"],"mappings":"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","file":"qdrant.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { QdrantClient, QdrantClientParams } from \"@qdrant/js-client-rest\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { z } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface QdrantToolOptions extends BaseToolOptions, QdrantClientParams {\n connection: QdrantClientParams;\n}\n\nexport type QdrantSearchToolResult = any;\n\nexport enum QdrantAction {\n ListCollections = \"ListCollections\",\n GetCollectionInfo = \"GetCollectionInfo\",\n Search = \"Search\",\n Insert = \"Insert\",\n Delete = \"Delete\",\n}\n\nexport class QdrantDatabaseTool extends Tool<\n JSONToolOutput<QdrantSearchToolResult>,\n QdrantToolOptions\n> {\n name = \"QdrantDatabaseTool\";\n\n description = `Can query data from a Qdrant vector database. IMPORTANT: strictly follow this order of actions:\n 1. ${QdrantAction.ListCollections} - List all the Qdrant collections\n 2. ${QdrantAction.GetCollectionInfo} - Get information about a Qdrant collection\n 3. ${QdrantAction.Insert} - Insert data into a Qdrant collection\n 3. ${QdrantAction.Search} - Perform search on a Qdrant collection\n 4. ${QdrantAction.Delete} - Delete from a Qdrant collection`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(QdrantAction)\n .describe(\n `The action to perform. ${QdrantAction.ListCollections} lists all collections, ${QdrantAction.GetCollectionInfo} fetches details for a specified collection, ${QdrantAction.Search} executes a vector search, ${QdrantAction.Insert} inserts new vectors, and ${QdrantAction.Delete} removes vectors.`,\n ),\n collectionName: z\n .string()\n .optional()\n .describe(\n `The name of the collection to query, required for ${QdrantAction.GetCollectionInfo}, ${QdrantAction.Search}, ${QdrantAction.Insert}, and ${QdrantAction.Delete}`,\n ),\n vector: z\n .array(z.number())\n .optional()\n .describe(`The vector to search for, required for ${QdrantAction.Search}.`),\n vectors: z\n .array(z.array(z.number()))\n .optional()\n .describe(`The vectors to insert, required for ${QdrantAction.Insert}.`),\n topK: z.coerce\n .number()\n .int()\n .default(10)\n .optional()\n .describe(`The number of nearest neighbors to return.`),\n filter: z\n .record(z.string(), z.any())\n .optional()\n .describe(`Optional filter for ${QdrantAction.Search}.`),\n payload: z\n .array(z.record(z.string(), z.any()))\n .optional()\n .describe(`Additional payload to insert with vectors.`),\n ids: z\n .array(z.string().or(z.number()))\n .optional()\n .describe(`Array of IDs to delete or insert.`),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, JSONToolOutput<QdrantSearchToolResult>> =\n Emitter.root.child({\n namespace: [\"tool\", \"database\", \"qdrant\"],\n creator: this,\n });\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action != QdrantAction.ListCollections && !input.collectionName) {\n throw new ToolInputValidationError(\n `Collection name is required for ${QdrantAction.GetCollectionInfo}, ${QdrantAction.Search}, ${QdrantAction.Insert}, and ${QdrantAction.Delete} actions.`,\n );\n }\n if (input.action === QdrantAction.Search && (!input.collectionName || !input.vector)) {\n throw new ToolInputValidationError(`Vector is required for ${QdrantAction.Search} action.`);\n }\n if (input.action === QdrantAction.Insert && (!input.collectionName || !input.vectors)) {\n throw new ToolInputValidationError(`Vectors are required for ${QdrantAction.Insert} action.`);\n }\n }\n\n static {\n this.register();\n }\n\n @Cache()\n protected async client(): Promise<QdrantClient> {\n return new QdrantClient(this.options.connection);\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n ): Promise<JSONToolOutput<any>> {\n switch (input.action) {\n case QdrantAction.ListCollections: {\n const collections = await this.listCollections();\n return new JSONToolOutput(collections);\n }\n\n case QdrantAction.GetCollectionInfo: {\n if (!input.collectionName) {\n throw new ToolError(\"A collection name is required for Qdrant GetCollectionInfo action\");\n }\n const collectionInfo = await this.getCollectionInfo(input.collectionName);\n return new JSONToolOutput(collectionInfo);\n }\n\n case QdrantAction.Search: {\n if (!input.collectionName || !input.vector) {\n throw new ToolError(\"A collection name and vector are required for Qdrant Search action\");\n }\n const searchResults = await this.search(input);\n return new JSONToolOutput(searchResults);\n }\n\n case QdrantAction.Insert: {\n if (!input.collectionName || !input.vectors) {\n throw new ToolError(\n \"A collection name and vectors are required for Qdrant Insert action\",\n );\n }\n const insertResults = await this.insert(input);\n return new JSONToolOutput(insertResults);\n }\n\n case QdrantAction.Delete: {\n if (!input.collectionName || !input.ids) {\n throw new ToolError(\"Collection name and ids are required for Qdrant Delete action\");\n }\n const deleteResults = await this.delete(input);\n return new JSONToolOutput(deleteResults);\n }\n\n default: {\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n }\n }\n\n protected async listCollections(): Promise<string[]> {\n try {\n const client = await this.client();\n const response = await client.getCollections();\n\n return response.collections.map((collection) => collection.name);\n } catch (error) {\n throw new ToolError(`Failed to list collections from Qdrant: ${error}`);\n }\n }\n\n protected async getCollectionInfo(collectionName: string): Promise<any> {\n const client = await this.client();\n const response = await client.getCollection(collectionName);\n return response;\n }\n\n protected async insert(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const points = input.vectors!.map((vector, index) => ({\n id: input?.ids?.[index] ?? uuidv4(),\n vector: vector,\n payload: input?.payload?.[index] || {},\n }));\n\n const response = await client.upsert(input.collectionName as string, {\n points: points,\n });\n\n return response;\n }\n\n protected async search(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const searchParams: any = {\n query: input.vector,\n limit: input.topK || 10,\n with_payload: true,\n filter: input.filter,\n };\n\n const response = await client.query(input.collectionName as string, searchParams);\n return response;\n }\n\n protected async delete(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const response = await client.delete(input.collectionName as string, {\n points: input.ids!,\n });\n\n return response;\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/database/qdrant.ts"],"names":["QdrantAction","QdrantDatabaseTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","collectionName","string","optional","vector","array","number","vectors","topK","coerce","int","default","filter","record","any","payload","ids","or","emitter","Emitter","root","child","namespace","creator","validateInput","schema","input","ToolInputValidationError","register","client","QdrantClient","options","connection","_run","_options","collections","listCollections","JSONToolOutput","ToolError","collectionInfo","getCollectionInfo","searchResults","search","insertResults","insert","deleteResults","delete","response","getCollections","map","collection","error","getCollection","points","index","id","uuidv4","upsert","searchParams","query","limit","with_payload"],"mappings":"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","file":"qdrant.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { QdrantClient, QdrantClientParams } from \"@qdrant/js-client-rest\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport { z } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface QdrantToolOptions extends BaseToolOptions, QdrantClientParams {\n connection: QdrantClientParams;\n}\n\nexport type QdrantSearchToolResult = any;\n\nexport enum QdrantAction {\n ListCollections = \"ListCollections\",\n GetCollectionInfo = \"GetCollectionInfo\",\n Search = \"Search\",\n Insert = \"Insert\",\n Delete = \"Delete\",\n}\n\nexport class QdrantDatabaseTool extends Tool<\n JSONToolOutput<QdrantSearchToolResult>,\n QdrantToolOptions\n> {\n name = \"QdrantDatabaseTool\";\n\n description = `Can query data from a Qdrant vector database. IMPORTANT: strictly follow this order of actions:\n 1. ${QdrantAction.ListCollections} - List all the Qdrant collections\n 2. ${QdrantAction.GetCollectionInfo} - Get information about a Qdrant collection\n 3. ${QdrantAction.Insert} - Insert data into a Qdrant collection\n 3. ${QdrantAction.Search} - Perform search on a Qdrant collection\n 4. ${QdrantAction.Delete} - Delete from a Qdrant collection`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(QdrantAction)\n .describe(\n `The action to perform. ${QdrantAction.ListCollections} lists all collections, ${QdrantAction.GetCollectionInfo} fetches details for a specified collection, ${QdrantAction.Search} executes a vector search, ${QdrantAction.Insert} inserts new vectors, and ${QdrantAction.Delete} removes vectors.`,\n ),\n collectionName: z\n .string()\n .optional()\n .describe(\n `The name of the collection to query, required for ${QdrantAction.GetCollectionInfo}, ${QdrantAction.Search}, ${QdrantAction.Insert}, and ${QdrantAction.Delete}`,\n ),\n vector: z\n .array(z.number())\n .optional()\n .describe(`The vector to search for, required for ${QdrantAction.Search}.`),\n vectors: z\n .array(z.array(z.number()))\n .optional()\n .describe(`The vectors to insert, required for ${QdrantAction.Insert}.`),\n topK: z.coerce\n .number()\n .int()\n .default(10)\n .optional()\n .describe(`The number of nearest neighbors to return.`),\n filter: z\n .record(z.string(), z.any())\n .optional()\n .describe(`Optional filter for ${QdrantAction.Search}.`),\n payload: z\n .array(z.record(z.string(), z.any()))\n .optional()\n .describe(`Additional payload to insert with vectors.`),\n ids: z\n .array(z.string().or(z.number()))\n .optional()\n .describe(`Array of IDs to delete or insert.`),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, JSONToolOutput<QdrantSearchToolResult>> =\n Emitter.root.child({\n namespace: [\"tool\", \"database\", \"qdrant\"],\n creator: this,\n });\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action != QdrantAction.ListCollections && !input.collectionName) {\n throw new ToolInputValidationError(\n `Collection name is required for ${QdrantAction.GetCollectionInfo}, ${QdrantAction.Search}, ${QdrantAction.Insert}, and ${QdrantAction.Delete} actions.`,\n );\n }\n if (input.action === QdrantAction.Search && (!input.collectionName || !input.vector)) {\n throw new ToolInputValidationError(`Vector is required for ${QdrantAction.Search} action.`);\n }\n if (input.action === QdrantAction.Insert && (!input.collectionName || !input.vectors)) {\n throw new ToolInputValidationError(`Vectors are required for ${QdrantAction.Insert} action.`);\n }\n }\n\n static {\n this.register();\n }\n\n @Cache()\n protected async client(): Promise<QdrantClient> {\n return new QdrantClient(this.options.connection);\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n ): Promise<JSONToolOutput<any>> {\n switch (input.action) {\n case QdrantAction.ListCollections: {\n const collections = await this.listCollections();\n return new JSONToolOutput(collections);\n }\n\n case QdrantAction.GetCollectionInfo: {\n if (!input.collectionName) {\n throw new ToolError(\"A collection name is required for Qdrant GetCollectionInfo action\");\n }\n const collectionInfo = await this.getCollectionInfo(input.collectionName);\n return new JSONToolOutput(collectionInfo);\n }\n\n case QdrantAction.Search: {\n if (!input.collectionName || !input.vector) {\n throw new ToolError(\"A collection name and vector are required for Qdrant Search action\");\n }\n const searchResults = await this.search(input);\n return new JSONToolOutput(searchResults);\n }\n\n case QdrantAction.Insert: {\n if (!input.collectionName || !input.vectors) {\n throw new ToolError(\n \"A collection name and vectors are required for Qdrant Insert action\",\n );\n }\n const insertResults = await this.insert(input);\n return new JSONToolOutput(insertResults);\n }\n\n case QdrantAction.Delete: {\n if (!input.collectionName || !input.ids) {\n throw new ToolError(\"Collection name and ids are required for Qdrant Delete action\");\n }\n const deleteResults = await this.delete(input);\n return new JSONToolOutput(deleteResults);\n }\n\n default: {\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n }\n }\n\n protected async listCollections(): Promise<string[]> {\n try {\n const client = await this.client();\n const response = await client.getCollections();\n\n return response.collections.map((collection) => collection.name);\n } catch (error) {\n throw new ToolError(`Failed to list collections from Qdrant: ${error}`);\n }\n }\n\n protected async getCollectionInfo(collectionName: string): Promise<any> {\n const client = await this.client();\n const response = await client.getCollection(collectionName);\n return response;\n }\n\n protected async insert(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const points = input.vectors!.map((vector, index) => ({\n id: input?.ids?.[index] ?? uuidv4(),\n vector: vector,\n payload: input?.payload?.[index] || {},\n }));\n\n const response = await client.upsert(input.collectionName as string, {\n points: points,\n });\n\n return response;\n }\n\n protected async search(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const searchParams: any = {\n query: input.vector,\n limit: input.topK || 10,\n with_payload: true,\n filter: input.filter,\n };\n\n const response = await client.query(input.collectionName as string, searchParams);\n return response;\n }\n\n protected async delete(input: ToolInput<this>): Promise<any> {\n const client = await this.client();\n\n const response = await client.delete(input.collectionName as string, {\n points: input.ids!,\n });\n\n return response;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/database/sql.ts"],"names":["SQLToolAction","GetMetadata","Query","SQLToolOutput","JSONToolOutput","SQLTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","query","string","optional","emitter","Emitter","root","child","namespace","creator","options","connection","dialect","ValidationError","message","propertyName","schema","provider","storage","validateInput","input","ToolInputValidationError","register","sequelize","Sequelize","authenticate","error","ToolError","isRetryable","isFatal","_run","_options","metadata","getMetadata","executeQuery","isReadOnlyQuery","success","results","Array","isArray","length","schemaHint","errorMessage","normalizedQuery","trim","toUpperCase","startsWith","destroy","cache","Cache","getInstance","entry","get","clear","data","close"],"mappings":"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","file":"sql.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Sequelize, Options } from \"sequelize\";\nimport { Provider, getMetadata } from \"@/tools/database/metadata.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ValidationError } from \"ajv\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ninterface ToolOptions extends BaseToolOptions {\n provider: Provider;\n connection: Options;\n}\n\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SQLToolAction = {\n GetMetadata: \"GET_METADATA\",\n Query: \"QUERY\",\n} as const;\n\nexport class SQLToolOutput extends JSONToolOutput<any> {}\n\nexport class SQLTool extends Tool<SQLToolOutput, ToolOptions, ToolRunOptions> {\n name = \"SQLTool\";\n\n description = `Converts natural language to SQL query and executes it. IMPORTANT: strictly follow this order of actions:\n 1. ${SQLToolAction.GetMetadata} - get database tables structure (metadata)\n 2. ${SQLToolAction.Query} - execute the generated SQL query`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(SQLToolAction)\n .describe(\n `The action to perform. ${SQLToolAction.GetMetadata} get database tables structure, ${SQLToolAction.Query} execute the SQL query`,\n ),\n query: z\n .string()\n .optional()\n .describe(`The SQL query to be executed, required for ${SQLToolAction.Query} action`),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, SQLToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"database\", \"sql\"],\n creator: this,\n });\n\n public constructor(options: ToolOptions) {\n super(options);\n if (!options.connection.dialect) {\n throw new ValidationError([\n {\n message: \"Property is required\",\n propertyName: \"connection.dialect\",\n },\n ]);\n }\n if (\n !options.connection.schema &&\n (options.provider === \"oracle\" || options.provider === \"db2\")\n ) {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.schema\",\n },\n ]);\n }\n if (!options.connection.storage && options.provider === \"sqlite\") {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.storage\",\n },\n ]);\n }\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action === SQLToolAction.Query && !input.query) {\n throw new ToolInputValidationError(\n `SQL Query is required for ${SQLToolAction.Query} action.`,\n );\n }\n }\n\n static {\n this.register();\n }\n\n @Cache()\n protected async connection(): Promise<Sequelize> {\n try {\n const sequelize = new Sequelize(this.options.connection);\n\n await sequelize.authenticate();\n return sequelize;\n } catch (error) {\n throw new ToolError(`Unable to connect to database: ${error}`, [], {\n isRetryable: false,\n isFatal: true,\n });\n }\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<ToolRunOptions>,\n ): Promise<SQLToolOutput> {\n const { provider, connection } = this.options;\n const { schema } = connection;\n\n if (input.action === SQLToolAction.GetMetadata) {\n const sequelize = await this.connection();\n const metadata = await getMetadata(sequelize, provider, schema);\n return new SQLToolOutput(metadata);\n }\n\n if (input.action === SQLToolAction.Query) {\n return await this.executeQuery(input.query!, provider, schema);\n }\n\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n\n protected async executeQuery(\n query: string,\n provider: Provider,\n schema: string | undefined,\n ): Promise<SQLToolOutput> {\n if (!this.isReadOnlyQuery(query)) {\n return new JSONToolOutput({\n success: false,\n error: \"Invalid query. Only SELECT queries are allowed.\",\n });\n }\n\n try {\n const sequelize = await this.connection();\n const [results] = await sequelize.query(query);\n if (Array.isArray(results) && results.length > 0) {\n return new JSONToolOutput({ success: true, results });\n }\n\n return new JSONToolOutput({\n success: false,\n message: `No rows selected`,\n });\n } catch (error) {\n const schemaHint = schema\n ? `Fully qualify the table names by appending the schema name \"${schema}\" as a prefix, for example: ${schema}.table_name`\n : \"\";\n const errorMessage = `Generate a correct query that retrieves data using the appropriate ${provider} dialect.\n ${schemaHint}\n The original request was: ${query}, and the error was: ${error.message}.`;\n throw new ToolError(errorMessage);\n }\n }\n\n private isReadOnlyQuery(query: string): boolean {\n const normalizedQuery = query.trim().toUpperCase();\n return (\n normalizedQuery.startsWith(\"SELECT\") ||\n normalizedQuery.startsWith(\"SHOW\") ||\n normalizedQuery.startsWith(\"DESC\")\n );\n }\n\n public async destroy(): Promise<void> {\n // @ts-expect-error protected property\n const cache = Cache.getInstance(this, \"connection\");\n const entry = cache.get();\n\n if (entry) {\n cache.clear();\n\n try {\n await entry.data.close();\n } catch (error) {\n throw new ToolError(`Failed to close the database connection`, [error]);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/database/sql.ts"],"names":["SQLToolAction","GetMetadata","Query","SQLToolOutput","JSONToolOutput","SQLTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","query","string","optional","emitter","Emitter","root","child","namespace","creator","options","connection","dialect","ValidationError","message","propertyName","schema","provider","storage","validateInput","input","ToolInputValidationError","register","sequelize","Sequelize","authenticate","error","ToolError","isRetryable","isFatal","_run","_options","metadata","getMetadata","executeQuery","isReadOnlyQuery","success","results","Array","isArray","length","schemaHint","errorMessage","normalizedQuery","trim","toUpperCase","startsWith","destroy","cache","Cache","getInstance","entry","get","clear","data","close"],"mappings":"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","file":"sql.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Sequelize, Options } from \"sequelize\";\nimport { Provider, getMetadata } from \"@/tools/database/metadata.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ValidationError } from \"ajv\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ninterface ToolOptions extends BaseToolOptions {\n provider: Provider;\n connection: Options;\n}\n\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SQLToolAction = {\n GetMetadata: \"GET_METADATA\",\n Query: \"QUERY\",\n} as const;\n\nexport class SQLToolOutput extends JSONToolOutput<any> {}\n\nexport class SQLTool extends Tool<SQLToolOutput, ToolOptions, ToolRunOptions> {\n name = \"SQLTool\";\n\n description = `Converts natural language to SQL query and executes it. IMPORTANT: strictly follow this order of actions:\n 1. ${SQLToolAction.GetMetadata} - get database tables structure (metadata)\n 2. ${SQLToolAction.Query} - execute the generated SQL query`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(SQLToolAction)\n .describe(\n `The action to perform. ${SQLToolAction.GetMetadata} get database tables structure, ${SQLToolAction.Query} execute the SQL query`,\n ),\n query: z\n .string()\n .optional()\n .describe(`The SQL query to be executed, required for ${SQLToolAction.Query} action`),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, SQLToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"database\", \"sql\"],\n creator: this,\n });\n\n public constructor(options: ToolOptions) {\n super(options);\n if (!options.connection.dialect) {\n throw new ValidationError([\n {\n message: \"Property is required\",\n propertyName: \"connection.dialect\",\n },\n ]);\n }\n if (\n !options.connection.schema &&\n (options.provider === \"oracle\" || options.provider === \"db2\")\n ) {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.schema\",\n },\n ]);\n }\n if (!options.connection.storage && options.provider === \"sqlite\") {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.storage\",\n },\n ]);\n }\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action === SQLToolAction.Query && !input.query) {\n throw new ToolInputValidationError(\n `SQL Query is required for ${SQLToolAction.Query} action.`,\n );\n }\n }\n\n static {\n this.register();\n }\n\n @Cache()\n protected async connection(): Promise<Sequelize> {\n try {\n const sequelize = new Sequelize(this.options.connection);\n\n await sequelize.authenticate();\n return sequelize;\n } catch (error) {\n throw new ToolError(`Unable to connect to database: ${error}`, [], {\n isRetryable: false,\n isFatal: true,\n });\n }\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<ToolRunOptions>,\n ): Promise<SQLToolOutput> {\n const { provider, connection } = this.options;\n const { schema } = connection;\n\n if (input.action === SQLToolAction.GetMetadata) {\n const sequelize = await this.connection();\n const metadata = await getMetadata(sequelize, provider, schema);\n return new SQLToolOutput(metadata);\n }\n\n if (input.action === SQLToolAction.Query) {\n return await this.executeQuery(input.query!, provider, schema);\n }\n\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n\n protected async executeQuery(\n query: string,\n provider: Provider,\n schema: string | undefined,\n ): Promise<SQLToolOutput> {\n if (!this.isReadOnlyQuery(query)) {\n return new JSONToolOutput({\n success: false,\n error: \"Invalid query. Only SELECT queries are allowed.\",\n });\n }\n\n try {\n const sequelize = await this.connection();\n const [results] = await sequelize.query(query);\n if (Array.isArray(results) && results.length > 0) {\n return new JSONToolOutput({ success: true, results });\n }\n\n return new JSONToolOutput({\n success: false,\n message: `No rows selected`,\n });\n } catch (error) {\n const schemaHint = schema\n ? `Fully qualify the table names by appending the schema name \"${schema}\" as a prefix, for example: ${schema}.table_name`\n : \"\";\n const errorMessage = `Generate a correct query that retrieves data using the appropriate ${provider} dialect.\n ${schemaHint}\n The original request was: ${query}, and the error was: ${error.message}.`;\n throw new ToolError(errorMessage);\n }\n }\n\n private isReadOnlyQuery(query: string): boolean {\n const normalizedQuery = query.trim().toUpperCase();\n return (\n normalizedQuery.startsWith(\"SELECT\") ||\n normalizedQuery.startsWith(\"SHOW\") ||\n normalizedQuery.startsWith(\"DESC\")\n );\n }\n\n public async destroy(): Promise<void> {\n // @ts-expect-error protected property\n const cache = Cache.getInstance(this, \"connection\");\n const entry = cache.get();\n\n if (entry) {\n cache.clear();\n\n try {\n await entry.data.close();\n } catch (error) {\n throw new ToolError(`Failed to close the database connection`, [error]);\n }\n }\n }\n}\n"]}
@@ -1,11 +1,11 @@
1
- import { JSONToolOutput, Tool, BaseToolOptions, BaseToolRunOptions, ToolEmitter, ToolInput } from '../base.cjs';
1
+ import { Tool, JSONToolOutput, BaseToolOptions, BaseToolRunOptions, ToolEmitter, ToolInput } from '../base.cjs';
2
2
  import { z } from 'zod';
3
3
  import { Options, Sequelize } from 'sequelize';
4
4
  import { Provider } from './metadata.cjs';
5
5
  import { AnyToolSchemaLike } from '../../internals/helpers/schema.cjs';
6
6
  import 'ajv';
7
7
  import '../../context.cjs';
8
- import '../../emitter-UkIkNrek.cjs';
8
+ import '../../emitter-D4OcelZ9.cjs';
9
9
  import '../../internals/types.cjs';
10
10
  import '../../internals/helpers/guards.cjs';
11
11
  import '../../internals/serializable.cjs';
@@ -1,11 +1,11 @@
1
- import { JSONToolOutput, Tool, BaseToolOptions, BaseToolRunOptions, ToolEmitter, ToolInput } from '../base.js';
1
+ import { Tool, JSONToolOutput, BaseToolOptions, BaseToolRunOptions, ToolEmitter, ToolInput } from '../base.js';
2
2
  import { z } from 'zod';
3
3
  import { Options, Sequelize } from 'sequelize';
4
4
  import { Provider } from './metadata.js';
5
5
  import { AnyToolSchemaLike } from '../../internals/helpers/schema.js';
6
6
  import 'ajv';
7
7
  import '../../context.js';
8
- import '../../emitter-CL56qab4.js';
8
+ import '../../emitter-kHxkUxco.js';
9
9
  import '../../internals/types.js';
10
10
  import '../../internals/helpers/guards.js';
11
11
  import '../../internals/serializable.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/database/sql.ts"],"names":["SQLToolAction","GetMetadata","Query","SQLToolOutput","JSONToolOutput","SQLTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","query","string","optional","emitter","Emitter","root","child","namespace","creator","options","connection","dialect","ValidationError","message","propertyName","schema","provider","storage","validateInput","input","ToolInputValidationError","register","sequelize","Sequelize","authenticate","error","ToolError","isRetryable","isFatal","_run","_options","metadata","getMetadata","executeQuery","isReadOnlyQuery","success","results","Array","isArray","length","schemaHint","errorMessage","normalizedQuery","trim","toUpperCase","startsWith","destroy","cache","Cache","getInstance","entry","get","clear","data","close"],"mappings":"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","file":"sql.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Sequelize, Options } from \"sequelize\";\nimport { Provider, getMetadata } from \"@/tools/database/metadata.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ValidationError } from \"ajv\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ninterface ToolOptions extends BaseToolOptions {\n provider: Provider;\n connection: Options;\n}\n\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SQLToolAction = {\n GetMetadata: \"GET_METADATA\",\n Query: \"QUERY\",\n} as const;\n\nexport class SQLToolOutput extends JSONToolOutput<any> {}\n\nexport class SQLTool extends Tool<SQLToolOutput, ToolOptions, ToolRunOptions> {\n name = \"SQLTool\";\n\n description = `Converts natural language to SQL query and executes it. IMPORTANT: strictly follow this order of actions:\n 1. ${SQLToolAction.GetMetadata} - get database tables structure (metadata)\n 2. ${SQLToolAction.Query} - execute the generated SQL query`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(SQLToolAction)\n .describe(\n `The action to perform. ${SQLToolAction.GetMetadata} get database tables structure, ${SQLToolAction.Query} execute the SQL query`,\n ),\n query: z\n .string()\n .optional()\n .describe(`The SQL query to be executed, required for ${SQLToolAction.Query} action`),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, SQLToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"database\", \"sql\"],\n creator: this,\n });\n\n public constructor(options: ToolOptions) {\n super(options);\n if (!options.connection.dialect) {\n throw new ValidationError([\n {\n message: \"Property is required\",\n propertyName: \"connection.dialect\",\n },\n ]);\n }\n if (\n !options.connection.schema &&\n (options.provider === \"oracle\" || options.provider === \"db2\")\n ) {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.schema\",\n },\n ]);\n }\n if (!options.connection.storage && options.provider === \"sqlite\") {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.storage\",\n },\n ]);\n }\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action === SQLToolAction.Query && !input.query) {\n throw new ToolInputValidationError(\n `SQL Query is required for ${SQLToolAction.Query} action.`,\n );\n }\n }\n\n static {\n this.register();\n }\n\n @Cache()\n protected async connection(): Promise<Sequelize> {\n try {\n const sequelize = new Sequelize(this.options.connection);\n\n await sequelize.authenticate();\n return sequelize;\n } catch (error) {\n throw new ToolError(`Unable to connect to database: ${error}`, [], {\n isRetryable: false,\n isFatal: true,\n });\n }\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<ToolRunOptions>,\n ): Promise<SQLToolOutput> {\n const { provider, connection } = this.options;\n const { schema } = connection;\n\n if (input.action === SQLToolAction.GetMetadata) {\n const sequelize = await this.connection();\n const metadata = await getMetadata(sequelize, provider, schema);\n return new SQLToolOutput(metadata);\n }\n\n if (input.action === SQLToolAction.Query) {\n return await this.executeQuery(input.query!, provider, schema);\n }\n\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n\n protected async executeQuery(\n query: string,\n provider: Provider,\n schema: string | undefined,\n ): Promise<SQLToolOutput> {\n if (!this.isReadOnlyQuery(query)) {\n return new JSONToolOutput({\n success: false,\n error: \"Invalid query. Only SELECT queries are allowed.\",\n });\n }\n\n try {\n const sequelize = await this.connection();\n const [results] = await sequelize.query(query);\n if (Array.isArray(results) && results.length > 0) {\n return new JSONToolOutput({ success: true, results });\n }\n\n return new JSONToolOutput({\n success: false,\n message: `No rows selected`,\n });\n } catch (error) {\n const schemaHint = schema\n ? `Fully qualify the table names by appending the schema name \"${schema}\" as a prefix, for example: ${schema}.table_name`\n : \"\";\n const errorMessage = `Generate a correct query that retrieves data using the appropriate ${provider} dialect.\n ${schemaHint}\n The original request was: ${query}, and the error was: ${error.message}.`;\n throw new ToolError(errorMessage);\n }\n }\n\n private isReadOnlyQuery(query: string): boolean {\n const normalizedQuery = query.trim().toUpperCase();\n return (\n normalizedQuery.startsWith(\"SELECT\") ||\n normalizedQuery.startsWith(\"SHOW\") ||\n normalizedQuery.startsWith(\"DESC\")\n );\n }\n\n public async destroy(): Promise<void> {\n // @ts-expect-error protected property\n const cache = Cache.getInstance(this, \"connection\");\n const entry = cache.get();\n\n if (entry) {\n cache.clear();\n\n try {\n await entry.data.close();\n } catch (error) {\n throw new ToolError(`Failed to close the database connection`, [error]);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/database/sql.ts"],"names":["SQLToolAction","GetMetadata","Query","SQLToolOutput","JSONToolOutput","SQLTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","query","string","optional","emitter","Emitter","root","child","namespace","creator","options","connection","dialect","ValidationError","message","propertyName","schema","provider","storage","validateInput","input","ToolInputValidationError","register","sequelize","Sequelize","authenticate","error","ToolError","isRetryable","isFatal","_run","_options","metadata","getMetadata","executeQuery","isReadOnlyQuery","success","results","Array","isArray","length","schemaHint","errorMessage","normalizedQuery","trim","toUpperCase","startsWith","destroy","cache","Cache","getInstance","entry","get","clear","data","close"],"mappings":"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","file":"sql.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Sequelize, Options } from \"sequelize\";\nimport { Provider, getMetadata } from \"@/tools/database/metadata.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ValidationError } from \"ajv\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ninterface ToolOptions extends BaseToolOptions {\n provider: Provider;\n connection: Options;\n}\n\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SQLToolAction = {\n GetMetadata: \"GET_METADATA\",\n Query: \"QUERY\",\n} as const;\n\nexport class SQLToolOutput extends JSONToolOutput<any> {}\n\nexport class SQLTool extends Tool<SQLToolOutput, ToolOptions, ToolRunOptions> {\n name = \"SQLTool\";\n\n description = `Converts natural language to SQL query and executes it. IMPORTANT: strictly follow this order of actions:\n 1. ${SQLToolAction.GetMetadata} - get database tables structure (metadata)\n 2. ${SQLToolAction.Query} - execute the generated SQL query`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(SQLToolAction)\n .describe(\n `The action to perform. ${SQLToolAction.GetMetadata} get database tables structure, ${SQLToolAction.Query} execute the SQL query`,\n ),\n query: z\n .string()\n .optional()\n .describe(`The SQL query to be executed, required for ${SQLToolAction.Query} action`),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, SQLToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"database\", \"sql\"],\n creator: this,\n });\n\n public constructor(options: ToolOptions) {\n super(options);\n if (!options.connection.dialect) {\n throw new ValidationError([\n {\n message: \"Property is required\",\n propertyName: \"connection.dialect\",\n },\n ]);\n }\n if (\n !options.connection.schema &&\n (options.provider === \"oracle\" || options.provider === \"db2\")\n ) {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.schema\",\n },\n ]);\n }\n if (!options.connection.storage && options.provider === \"sqlite\") {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.storage\",\n },\n ]);\n }\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action === SQLToolAction.Query && !input.query) {\n throw new ToolInputValidationError(\n `SQL Query is required for ${SQLToolAction.Query} action.`,\n );\n }\n }\n\n static {\n this.register();\n }\n\n @Cache()\n protected async connection(): Promise<Sequelize> {\n try {\n const sequelize = new Sequelize(this.options.connection);\n\n await sequelize.authenticate();\n return sequelize;\n } catch (error) {\n throw new ToolError(`Unable to connect to database: ${error}`, [], {\n isRetryable: false,\n isFatal: true,\n });\n }\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<ToolRunOptions>,\n ): Promise<SQLToolOutput> {\n const { provider, connection } = this.options;\n const { schema } = connection;\n\n if (input.action === SQLToolAction.GetMetadata) {\n const sequelize = await this.connection();\n const metadata = await getMetadata(sequelize, provider, schema);\n return new SQLToolOutput(metadata);\n }\n\n if (input.action === SQLToolAction.Query) {\n return await this.executeQuery(input.query!, provider, schema);\n }\n\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n\n protected async executeQuery(\n query: string,\n provider: Provider,\n schema: string | undefined,\n ): Promise<SQLToolOutput> {\n if (!this.isReadOnlyQuery(query)) {\n return new JSONToolOutput({\n success: false,\n error: \"Invalid query. Only SELECT queries are allowed.\",\n });\n }\n\n try {\n const sequelize = await this.connection();\n const [results] = await sequelize.query(query);\n if (Array.isArray(results) && results.length > 0) {\n return new JSONToolOutput({ success: true, results });\n }\n\n return new JSONToolOutput({\n success: false,\n message: `No rows selected`,\n });\n } catch (error) {\n const schemaHint = schema\n ? `Fully qualify the table names by appending the schema name \"${schema}\" as a prefix, for example: ${schema}.table_name`\n : \"\";\n const errorMessage = `Generate a correct query that retrieves data using the appropriate ${provider} dialect.\n ${schemaHint}\n The original request was: ${query}, and the error was: ${error.message}.`;\n throw new ToolError(errorMessage);\n }\n }\n\n private isReadOnlyQuery(query: string): boolean {\n const normalizedQuery = query.trim().toUpperCase();\n return (\n normalizedQuery.startsWith(\"SELECT\") ||\n normalizedQuery.startsWith(\"SHOW\") ||\n normalizedQuery.startsWith(\"DESC\")\n );\n }\n\n public async destroy(): Promise<void> {\n // @ts-expect-error protected property\n const cache = Cache.getInstance(this, \"connection\");\n const entry = cache.get();\n\n if (entry) {\n cache.clear();\n\n try {\n await entry.data.close();\n } catch (error) {\n throw new ToolError(`Failed to close the database connection`, [error]);\n }\n }\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tools/handoff.ts"],"names":["HandoffTool","Tool","propagateInputs","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","task","string","describe","target","options","toCamelCase","meta","_run","input","run","memory","getProp","context","contextKeys","Memory","ToolError","isRetryable","isFatal","messages","filter","msg","SystemMessage","lastValidMsgIndex","findLastIndex","AssistantMessage","getToolCalls","length","slice","push","UserMessage","clone","reset","addMany","response","prompt","StringToolOutput","result","text"],"mappings":";;;;;;;;;;;AA4BO,MAAMA,oBAAoBC,aAAAA,CAAAA;EA5BjC;;;;AA6BmBC,EAAAA,eAAAA;AACVC,EAAAA,IAAAA;AACAC,EAAAA,WAAAA;EAESC,OAAAA,GAA0DC,mBAAAA,CAAQC,KAAKC,KAAAA,CAAM;IAC3FC,SAAAA,EAAW;AAAC,MAAA,MAAA;AAAQ,MAAA;;IACpBC,OAAAA,EAAS;GACX,CAAA;EAEAC,WAAAA,GAAc;AACZ,IAAA,OAAOC,MAAEC,MAAAA,CAAO;AACdC,MAAAA,IAAAA,EAAMF,KAAAA,CACHG,MAAAA,EAAM,CACNC,QAAAA,CAAS,uEAAA;KACd,CAAA;AACF;AAEA,EAAA,WAAA,CACUC,QACRC,OAAAA,EACA;AACA,IAAA,KAAA,EAAK,EAAA,KAHGD,MAAAA,GAAAA,MAAAA;AAIR,IAAA,IAAA,CAAKd,OAAOgB,kBAAAA,CAAYD,OAAAA,EAASf,QAAQ,IAAA,CAAKc,MAAAA,CAAOG,KAAKjB,IAAI,CAAA;AAC9D,IAAA,IAAA,CAAKC,WAAAA,GAAcc,OAAAA,EAASd,WAAAA,IAAe,IAAA,CAAKa,OAAOG,IAAAA,CAAKhB,WAAAA;AAC5D,IAAA,IAAA,CAAKF,eAAAA,GAAkBgB,SAAShB,eAAAA,IAAmB,IAAA;AACrD;EAEA,MAAgBmB,IAAAA,CACdC,KAAAA,EACAJ,OAAAA,EACAK,GAAAA,EAC2B;AAC3B,IAAA,MAAMC,MAAAA,GAASC,kBAAAA,CAAQF,GAAAA,CAAIG,OAAAA,EAAS;AAACzB,MAAAA,aAAAA,CAAK0B,WAAAA,CAAYC;AAAO,KAAA,CAAA;AAE7D,IAAA,IAAI,CAACJ,MAAAA,EAAQ;AACX,MAAA,MAAM,IAAIK,kBAAAA,CAAU,CAAA,+BAAA,CAAA,EAAmC,EAAA,EAAI;QACzDC,WAAAA,EAAa,KAAA;QACbC,OAAAA,EAAS;OACX,CAAA;AACF;AAEA,IAAA,IAAIC,QAAAA,GAAsBR,OAAOQ,QAAAA,CAASC,MAAAA,CAAO,CAACC,GAAAA,KAAQ,EAAEA,eAAeC,yBAAAA,CAAY,CAAA;AAEvF,IAAA,MAAMC,iBAAAA,GAAoBC,oBAAAA,CACxBL,QAAAA,EACA,CAACE,GAAAA,KAAQA,GAAAA,YAAeI,4BAAAA,IAAAA,CAAqBJ,GAAAA,CAAIK,YAAAA,EAAY,EAAIC,MAAAA,IAAU,CAAA,IAAK,CAAA,CAAA;AAGlF,IAAA,IAAIJ,sBAAsB,EAAA,EAAI;AAC5BJ,MAAAA,QAAAA,GAAWA,QAAAA,CAASS,KAAAA,CAAM,CAAA,EAAGL,iBAAAA,CAAAA;AAC/B;AAEA,IAAA,IAAI,KAAKlC,eAAAA,EAAiB;AACxB8B,MAAAA,QAAAA,CAASU,IAAAA,CAAK,IAAIC,uBAAAA,CAAYrB,KAAAA,CAAMR,IAAI,CAAA,CAAA;AAC1C;AAEA,IAAA,MAAMG,MAAAA,GAAS,MAAM,IAAA,CAAKA,MAAAA,CAAO2B,KAAAA,EAAK;AACtC3B,IAAAA,MAAAA,CAAOO,OAAOqB,KAAAA,EAAK;AACnB,IAAA,MAAM5B,MAAAA,CAAOO,MAAAA,CAAOsB,OAAAA,CAAQd,QAAAA,CAAAA;AAE5B,IAAA,MAAMe,QAAAA,GAAW,MAAM9B,MAAAA,CAAOM,GAAAA,CAAI;MAAEyB,MAAAA,EAAQ;KAAK,CAAA;AAEjD,IAAA,OAAO,IAAIC,yBAAAA,CAAiBF,QAAAA,CAASG,MAAAA,CAAOC,IAAI,CAAA;AAClD;AACF","file":"handoff.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { z } from \"zod\";\nimport {\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolEmitter,\n ToolError,\n ToolInput,\n} from \"./base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { AnyAgent } from \"@/agents/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { findLastIndex, toCamelCase } from \"remeda\";\n\nexport interface HandoffToolInput {\n name?: string;\n description?: string;\n propagateInputs?: boolean;\n}\n\nexport class HandoffTool extends Tool<StringToolOutput> {\n private readonly propagateInputs: boolean;\n public name: string;\n public description: string;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"handoff\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n task: z\n .string()\n .describe(\"Clearly defined task for the agent to work on based on his abilities.\"),\n });\n }\n\n constructor(\n private target: AnyAgent,\n options?: HandoffToolInput,\n ) {\n super();\n this.name = toCamelCase(options?.name || this.target.meta.name);\n this.description = options?.description || this.target.meta.description;\n this.propagateInputs = options?.propagateInputs ?? true;\n }\n\n protected async _run(\n input: ToolInput<this>,\n options: Partial<BaseToolRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<StringToolOutput> {\n const memory = getProp(run.context, [Tool.contextKeys.Memory]) as BaseMemory;\n\n if (!memory) {\n throw new ToolError(`No memory found in the context.`, [], {\n isRetryable: false,\n isFatal: true,\n });\n }\n\n let messages: Message[] = memory.messages.filter((msg) => !(msg instanceof SystemMessage));\n\n const lastValidMsgIndex = findLastIndex(\n messages,\n (msg) => msg instanceof AssistantMessage && (msg.getToolCalls()?.length ?? 0) > 0,\n );\n\n if (lastValidMsgIndex !== -1) {\n messages = messages.slice(0, lastValidMsgIndex);\n }\n\n if (this.propagateInputs) {\n messages.push(new UserMessage(input.task));\n }\n\n const target = await this.target.clone();\n target.memory.reset();\n await target.memory.addMany(messages);\n\n const response = await target.run({ prompt: null });\n\n return new StringToolOutput(response.result.text);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/handoff.ts"],"names":["HandoffTool","Tool","propagateInputs","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","task","string","describe","target","options","toCamelCase","meta","_run","input","run","memory","getProp","context","contextKeys","Memory","ToolError","isRetryable","isFatal","messages","filter","msg","SystemMessage","lastValidMsgIndex","findLastIndex","AssistantMessage","getToolCalls","length","slice","push","UserMessage","clone","reset","addMany","response","prompt","StringToolOutput","result","text"],"mappings":";;;;;;;;;;;AA4BO,MAAMA,oBAAoBC,aAAAA,CAAAA;EA5BjC;;;;AA6BmBC,EAAAA,eAAAA;AACVC,EAAAA,IAAAA;AACAC,EAAAA,WAAAA;EAESC,OAAAA,GAA0DC,mBAAAA,CAAQC,KAAKC,KAAAA,CAAM;IAC3FC,SAAAA,EAAW;AAAC,MAAA,MAAA;AAAQ,MAAA;;IACpBC,OAAAA,EAAS;GACX,CAAA;EAEAC,WAAAA,GAAc;AACZ,IAAA,OAAOC,MAAEC,MAAAA,CAAO;AACdC,MAAAA,IAAAA,EAAMF,KAAAA,CACHG,MAAAA,EAAM,CACNC,QAAAA,CAAS,uEAAA;KACd,CAAA;AACF,EAAA;AAEA,EAAA,WAAA,CACUC,QACRC,OAAAA,EACA;AACA,IAAA,KAAA,EAAK,EAAA,KAHGD,MAAAA,GAAAA,MAAAA;AAIR,IAAA,IAAA,CAAKd,OAAOgB,kBAAAA,CAAYD,OAAAA,EAASf,QAAQ,IAAA,CAAKc,MAAAA,CAAOG,KAAKjB,IAAI,CAAA;AAC9D,IAAA,IAAA,CAAKC,WAAAA,GAAcc,OAAAA,EAASd,WAAAA,IAAe,IAAA,CAAKa,OAAOG,IAAAA,CAAKhB,WAAAA;AAC5D,IAAA,IAAA,CAAKF,eAAAA,GAAkBgB,SAAShB,eAAAA,IAAmB,IAAA;AACrD,EAAA;EAEA,MAAgBmB,IAAAA,CACdC,KAAAA,EACAJ,OAAAA,EACAK,GAAAA,EAC2B;AAC3B,IAAA,MAAMC,MAAAA,GAASC,kBAAAA,CAAQF,GAAAA,CAAIG,OAAAA,EAAS;AAACzB,MAAAA,aAAAA,CAAK0B,WAAAA,CAAYC;AAAO,KAAA,CAAA;AAE7D,IAAA,IAAI,CAACJ,MAAAA,EAAQ;AACX,MAAA,MAAM,IAAIK,kBAAAA,CAAU,CAAA,+BAAA,CAAA,EAAmC,EAAA,EAAI;QACzDC,WAAAA,EAAa,KAAA;QACbC,OAAAA,EAAS;OACX,CAAA;AACF,IAAA;AAEA,IAAA,IAAIC,QAAAA,GAAsBR,OAAOQ,QAAAA,CAASC,MAAAA,CAAO,CAACC,GAAAA,KAAQ,EAAEA,eAAeC,yBAAAA,CAAY,CAAA;AAEvF,IAAA,MAAMC,iBAAAA,GAAoBC,oBAAAA,CACxBL,QAAAA,EACA,CAACE,GAAAA,KAAQA,GAAAA,YAAeI,4BAAAA,IAAAA,CAAqBJ,GAAAA,CAAIK,YAAAA,EAAY,EAAIC,MAAAA,IAAU,CAAA,IAAK,CAAA,CAAA;AAGlF,IAAA,IAAIJ,sBAAsB,EAAA,EAAI;AAC5BJ,MAAAA,QAAAA,GAAWA,QAAAA,CAASS,KAAAA,CAAM,CAAA,EAAGL,iBAAAA,CAAAA;AAC/B,IAAA;AAEA,IAAA,IAAI,KAAKlC,eAAAA,EAAiB;AACxB8B,MAAAA,QAAAA,CAASU,IAAAA,CAAK,IAAIC,uBAAAA,CAAYrB,KAAAA,CAAMR,IAAI,CAAA,CAAA;AAC1C,IAAA;AAEA,IAAA,MAAMG,MAAAA,GAAS,MAAM,IAAA,CAAKA,MAAAA,CAAO2B,KAAAA,EAAK;AACtC3B,IAAAA,MAAAA,CAAOO,OAAOqB,KAAAA,EAAK;AACnB,IAAA,MAAM5B,MAAAA,CAAOO,MAAAA,CAAOsB,OAAAA,CAAQd,QAAAA,CAAAA;AAE5B,IAAA,MAAMe,QAAAA,GAAW,MAAM9B,MAAAA,CAAOM,GAAAA,CAAI;MAAEyB,MAAAA,EAAQ;KAAK,CAAA;AAEjD,IAAA,OAAO,IAAIC,yBAAAA,CAAiBF,QAAAA,CAASG,MAAAA,CAAOC,IAAI,CAAA;AAClD,EAAA;AACF","file":"handoff.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { z } from \"zod\";\nimport {\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolEmitter,\n ToolError,\n ToolInput,\n} from \"./base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { AnyAgent } from \"@/agents/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { findLastIndex, toCamelCase } from \"remeda\";\n\nexport interface HandoffToolInput {\n name?: string;\n description?: string;\n propagateInputs?: boolean;\n}\n\nexport class HandoffTool extends Tool<StringToolOutput> {\n private readonly propagateInputs: boolean;\n public name: string;\n public description: string;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"handoff\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n task: z\n .string()\n .describe(\"Clearly defined task for the agent to work on based on his abilities.\"),\n });\n }\n\n constructor(\n private target: AnyAgent,\n options?: HandoffToolInput,\n ) {\n super();\n this.name = toCamelCase(options?.name || this.target.meta.name);\n this.description = options?.description || this.target.meta.description;\n this.propagateInputs = options?.propagateInputs ?? true;\n }\n\n protected async _run(\n input: ToolInput<this>,\n options: Partial<BaseToolRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<StringToolOutput> {\n const memory = getProp(run.context, [Tool.contextKeys.Memory]) as BaseMemory;\n\n if (!memory) {\n throw new ToolError(`No memory found in the context.`, [], {\n isRetryable: false,\n isFatal: true,\n });\n }\n\n let messages: Message[] = memory.messages.filter((msg) => !(msg instanceof SystemMessage));\n\n const lastValidMsgIndex = findLastIndex(\n messages,\n (msg) => msg instanceof AssistantMessage && (msg.getToolCalls()?.length ?? 0) > 0,\n );\n\n if (lastValidMsgIndex !== -1) {\n messages = messages.slice(0, lastValidMsgIndex);\n }\n\n if (this.propagateInputs) {\n messages.push(new UserMessage(input.task));\n }\n\n const target = await this.target.clone();\n target.memory.reset();\n await target.memory.addMany(messages);\n\n const response = await target.run({ prompt: null });\n\n return new StringToolOutput(response.result.text);\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { Tool, StringToolOutput, ToolEmitter, ToolInput, BaseToolRunOptions } from './base.cjs';
3
- import { b as AnyAgent } from '../base-BqzN2QwB.cjs';
3
+ import { b as AnyAgent } from '../base-s3ioVIE9.cjs';
4
4
  import { GetRunContext } from '../context.cjs';
5
5
  import 'ajv';
6
6
  import '../errors.cjs';
@@ -11,7 +11,7 @@ import 'promise-based-task';
11
11
  import '../cache/base.cjs';
12
12
  import '../internals/helpers/schema.cjs';
13
13
  import 'zod-to-json-schema';
14
- import '../emitter-UkIkNrek.cjs';
14
+ import '../emitter-D4OcelZ9.cjs';
15
15
  import '../internals/helpers/promise.cjs';
16
16
  import '../memory/base.cjs';
17
17
  import '../backend/message.cjs';
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { Tool, StringToolOutput, ToolEmitter, ToolInput, BaseToolRunOptions } from './base.js';
3
- import { b as AnyAgent } from '../base-BfhNzUYf.js';
3
+ import { b as AnyAgent } from '../base-BjzyQ8k6.js';
4
4
  import { GetRunContext } from '../context.js';
5
5
  import 'ajv';
6
6
  import '../errors.js';
@@ -11,7 +11,7 @@ import 'promise-based-task';
11
11
  import '../cache/base.js';
12
12
  import '../internals/helpers/schema.js';
13
13
  import 'zod-to-json-schema';
14
- import '../emitter-CL56qab4.js';
14
+ import '../emitter-kHxkUxco.js';
15
15
  import '../internals/helpers/promise.js';
16
16
  import '../memory/base.js';
17
17
  import '../backend/message.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tools/handoff.ts"],"names":["HandoffTool","Tool","propagateInputs","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","task","string","describe","target","options","toCamelCase","meta","_run","input","run","memory","getProp","context","contextKeys","Memory","ToolError","isRetryable","isFatal","messages","filter","msg","SystemMessage","lastValidMsgIndex","findLastIndex","AssistantMessage","getToolCalls","length","slice","push","UserMessage","clone","reset","addMany","response","prompt","StringToolOutput","result","text"],"mappings":";;;;;;;;;AA4BO,MAAMA,oBAAoBC,IAAAA,CAAAA;EA5BjC;;;;AA6BmBC,EAAAA,eAAAA;AACVC,EAAAA,IAAAA;AACAC,EAAAA,WAAAA;EAESC,OAAAA,GAA0DC,OAAAA,CAAQC,KAAKC,KAAAA,CAAM;IAC3FC,SAAAA,EAAW;AAAC,MAAA,MAAA;AAAQ,MAAA;;IACpBC,OAAAA,EAAS;GACX,CAAA;EAEAC,WAAAA,GAAc;AACZ,IAAA,OAAOC,EAAEC,MAAAA,CAAO;AACdC,MAAAA,IAAAA,EAAMF,CAAAA,CACHG,MAAAA,EAAM,CACNC,QAAAA,CAAS,uEAAA;KACd,CAAA;AACF;AAEA,EAAA,WAAA,CACUC,QACRC,OAAAA,EACA;AACA,IAAA,KAAA,EAAK,EAAA,KAHGD,MAAAA,GAAAA,MAAAA;AAIR,IAAA,IAAA,CAAKd,OAAOgB,WAAAA,CAAYD,OAAAA,EAASf,QAAQ,IAAA,CAAKc,MAAAA,CAAOG,KAAKjB,IAAI,CAAA;AAC9D,IAAA,IAAA,CAAKC,WAAAA,GAAcc,OAAAA,EAASd,WAAAA,IAAe,IAAA,CAAKa,OAAOG,IAAAA,CAAKhB,WAAAA;AAC5D,IAAA,IAAA,CAAKF,eAAAA,GAAkBgB,SAAShB,eAAAA,IAAmB,IAAA;AACrD;EAEA,MAAgBmB,IAAAA,CACdC,KAAAA,EACAJ,OAAAA,EACAK,GAAAA,EAC2B;AAC3B,IAAA,MAAMC,MAAAA,GAASC,OAAAA,CAAQF,GAAAA,CAAIG,OAAAA,EAAS;AAACzB,MAAAA,IAAAA,CAAK0B,WAAAA,CAAYC;AAAO,KAAA,CAAA;AAE7D,IAAA,IAAI,CAACJ,MAAAA,EAAQ;AACX,MAAA,MAAM,IAAIK,SAAAA,CAAU,CAAA,+BAAA,CAAA,EAAmC,EAAA,EAAI;QACzDC,WAAAA,EAAa,KAAA;QACbC,OAAAA,EAAS;OACX,CAAA;AACF;AAEA,IAAA,IAAIC,QAAAA,GAAsBR,OAAOQ,QAAAA,CAASC,MAAAA,CAAO,CAACC,GAAAA,KAAQ,EAAEA,eAAeC,aAAAA,CAAY,CAAA;AAEvF,IAAA,MAAMC,iBAAAA,GAAoBC,aAAAA,CACxBL,QAAAA,EACA,CAACE,GAAAA,KAAQA,GAAAA,YAAeI,gBAAAA,IAAAA,CAAqBJ,GAAAA,CAAIK,YAAAA,EAAY,EAAIC,MAAAA,IAAU,CAAA,IAAK,CAAA,CAAA;AAGlF,IAAA,IAAIJ,sBAAsB,EAAA,EAAI;AAC5BJ,MAAAA,QAAAA,GAAWA,QAAAA,CAASS,KAAAA,CAAM,CAAA,EAAGL,iBAAAA,CAAAA;AAC/B;AAEA,IAAA,IAAI,KAAKlC,eAAAA,EAAiB;AACxB8B,MAAAA,QAAAA,CAASU,IAAAA,CAAK,IAAIC,WAAAA,CAAYrB,KAAAA,CAAMR,IAAI,CAAA,CAAA;AAC1C;AAEA,IAAA,MAAMG,MAAAA,GAAS,MAAM,IAAA,CAAKA,MAAAA,CAAO2B,KAAAA,EAAK;AACtC3B,IAAAA,MAAAA,CAAOO,OAAOqB,KAAAA,EAAK;AACnB,IAAA,MAAM5B,MAAAA,CAAOO,MAAAA,CAAOsB,OAAAA,CAAQd,QAAAA,CAAAA;AAE5B,IAAA,MAAMe,QAAAA,GAAW,MAAM9B,MAAAA,CAAOM,GAAAA,CAAI;MAAEyB,MAAAA,EAAQ;KAAK,CAAA;AAEjD,IAAA,OAAO,IAAIC,gBAAAA,CAAiBF,QAAAA,CAASG,MAAAA,CAAOC,IAAI,CAAA;AAClD;AACF","file":"handoff.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { z } from \"zod\";\nimport {\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolEmitter,\n ToolError,\n ToolInput,\n} from \"./base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { AnyAgent } from \"@/agents/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { findLastIndex, toCamelCase } from \"remeda\";\n\nexport interface HandoffToolInput {\n name?: string;\n description?: string;\n propagateInputs?: boolean;\n}\n\nexport class HandoffTool extends Tool<StringToolOutput> {\n private readonly propagateInputs: boolean;\n public name: string;\n public description: string;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"handoff\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n task: z\n .string()\n .describe(\"Clearly defined task for the agent to work on based on his abilities.\"),\n });\n }\n\n constructor(\n private target: AnyAgent,\n options?: HandoffToolInput,\n ) {\n super();\n this.name = toCamelCase(options?.name || this.target.meta.name);\n this.description = options?.description || this.target.meta.description;\n this.propagateInputs = options?.propagateInputs ?? true;\n }\n\n protected async _run(\n input: ToolInput<this>,\n options: Partial<BaseToolRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<StringToolOutput> {\n const memory = getProp(run.context, [Tool.contextKeys.Memory]) as BaseMemory;\n\n if (!memory) {\n throw new ToolError(`No memory found in the context.`, [], {\n isRetryable: false,\n isFatal: true,\n });\n }\n\n let messages: Message[] = memory.messages.filter((msg) => !(msg instanceof SystemMessage));\n\n const lastValidMsgIndex = findLastIndex(\n messages,\n (msg) => msg instanceof AssistantMessage && (msg.getToolCalls()?.length ?? 0) > 0,\n );\n\n if (lastValidMsgIndex !== -1) {\n messages = messages.slice(0, lastValidMsgIndex);\n }\n\n if (this.propagateInputs) {\n messages.push(new UserMessage(input.task));\n }\n\n const target = await this.target.clone();\n target.memory.reset();\n await target.memory.addMany(messages);\n\n const response = await target.run({ prompt: null });\n\n return new StringToolOutput(response.result.text);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/handoff.ts"],"names":["HandoffTool","Tool","propagateInputs","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","task","string","describe","target","options","toCamelCase","meta","_run","input","run","memory","getProp","context","contextKeys","Memory","ToolError","isRetryable","isFatal","messages","filter","msg","SystemMessage","lastValidMsgIndex","findLastIndex","AssistantMessage","getToolCalls","length","slice","push","UserMessage","clone","reset","addMany","response","prompt","StringToolOutput","result","text"],"mappings":";;;;;;;;;AA4BO,MAAMA,oBAAoBC,IAAAA,CAAAA;EA5BjC;;;;AA6BmBC,EAAAA,eAAAA;AACVC,EAAAA,IAAAA;AACAC,EAAAA,WAAAA;EAESC,OAAAA,GAA0DC,OAAAA,CAAQC,KAAKC,KAAAA,CAAM;IAC3FC,SAAAA,EAAW;AAAC,MAAA,MAAA;AAAQ,MAAA;;IACpBC,OAAAA,EAAS;GACX,CAAA;EAEAC,WAAAA,GAAc;AACZ,IAAA,OAAOC,EAAEC,MAAAA,CAAO;AACdC,MAAAA,IAAAA,EAAMF,CAAAA,CACHG,MAAAA,EAAM,CACNC,QAAAA,CAAS,uEAAA;KACd,CAAA;AACF,EAAA;AAEA,EAAA,WAAA,CACUC,QACRC,OAAAA,EACA;AACA,IAAA,KAAA,EAAK,EAAA,KAHGD,MAAAA,GAAAA,MAAAA;AAIR,IAAA,IAAA,CAAKd,OAAOgB,WAAAA,CAAYD,OAAAA,EAASf,QAAQ,IAAA,CAAKc,MAAAA,CAAOG,KAAKjB,IAAI,CAAA;AAC9D,IAAA,IAAA,CAAKC,WAAAA,GAAcc,OAAAA,EAASd,WAAAA,IAAe,IAAA,CAAKa,OAAOG,IAAAA,CAAKhB,WAAAA;AAC5D,IAAA,IAAA,CAAKF,eAAAA,GAAkBgB,SAAShB,eAAAA,IAAmB,IAAA;AACrD,EAAA;EAEA,MAAgBmB,IAAAA,CACdC,KAAAA,EACAJ,OAAAA,EACAK,GAAAA,EAC2B;AAC3B,IAAA,MAAMC,MAAAA,GAASC,OAAAA,CAAQF,GAAAA,CAAIG,OAAAA,EAAS;AAACzB,MAAAA,IAAAA,CAAK0B,WAAAA,CAAYC;AAAO,KAAA,CAAA;AAE7D,IAAA,IAAI,CAACJ,MAAAA,EAAQ;AACX,MAAA,MAAM,IAAIK,SAAAA,CAAU,CAAA,+BAAA,CAAA,EAAmC,EAAA,EAAI;QACzDC,WAAAA,EAAa,KAAA;QACbC,OAAAA,EAAS;OACX,CAAA;AACF,IAAA;AAEA,IAAA,IAAIC,QAAAA,GAAsBR,OAAOQ,QAAAA,CAASC,MAAAA,CAAO,CAACC,GAAAA,KAAQ,EAAEA,eAAeC,aAAAA,CAAY,CAAA;AAEvF,IAAA,MAAMC,iBAAAA,GAAoBC,aAAAA,CACxBL,QAAAA,EACA,CAACE,GAAAA,KAAQA,GAAAA,YAAeI,gBAAAA,IAAAA,CAAqBJ,GAAAA,CAAIK,YAAAA,EAAY,EAAIC,MAAAA,IAAU,CAAA,IAAK,CAAA,CAAA;AAGlF,IAAA,IAAIJ,sBAAsB,EAAA,EAAI;AAC5BJ,MAAAA,QAAAA,GAAWA,QAAAA,CAASS,KAAAA,CAAM,CAAA,EAAGL,iBAAAA,CAAAA;AAC/B,IAAA;AAEA,IAAA,IAAI,KAAKlC,eAAAA,EAAiB;AACxB8B,MAAAA,QAAAA,CAASU,IAAAA,CAAK,IAAIC,WAAAA,CAAYrB,KAAAA,CAAMR,IAAI,CAAA,CAAA;AAC1C,IAAA;AAEA,IAAA,MAAMG,MAAAA,GAAS,MAAM,IAAA,CAAKA,MAAAA,CAAO2B,KAAAA,EAAK;AACtC3B,IAAAA,MAAAA,CAAOO,OAAOqB,KAAAA,EAAK;AACnB,IAAA,MAAM5B,MAAAA,CAAOO,MAAAA,CAAOsB,OAAAA,CAAQd,QAAAA,CAAAA;AAE5B,IAAA,MAAMe,QAAAA,GAAW,MAAM9B,MAAAA,CAAOM,GAAAA,CAAI;MAAEyB,MAAAA,EAAQ;KAAK,CAAA;AAEjD,IAAA,OAAO,IAAIC,gBAAAA,CAAiBF,QAAAA,CAASG,MAAAA,CAAOC,IAAI,CAAA;AAClD,EAAA;AACF","file":"handoff.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { z } from \"zod\";\nimport {\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolEmitter,\n ToolError,\n ToolInput,\n} from \"./base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { AnyAgent } from \"@/agents/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { findLastIndex, toCamelCase } from \"remeda\";\n\nexport interface HandoffToolInput {\n name?: string;\n description?: string;\n propagateInputs?: boolean;\n}\n\nexport class HandoffTool extends Tool<StringToolOutput> {\n private readonly propagateInputs: boolean;\n public name: string;\n public description: string;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"handoff\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n task: z\n .string()\n .describe(\"Clearly defined task for the agent to work on based on his abilities.\"),\n });\n }\n\n constructor(\n private target: AnyAgent,\n options?: HandoffToolInput,\n ) {\n super();\n this.name = toCamelCase(options?.name || this.target.meta.name);\n this.description = options?.description || this.target.meta.description;\n this.propagateInputs = options?.propagateInputs ?? true;\n }\n\n protected async _run(\n input: ToolInput<this>,\n options: Partial<BaseToolRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<StringToolOutput> {\n const memory = getProp(run.context, [Tool.contextKeys.Memory]) as BaseMemory;\n\n if (!memory) {\n throw new ToolError(`No memory found in the context.`, [], {\n isRetryable: false,\n isFatal: true,\n });\n }\n\n let messages: Message[] = memory.messages.filter((msg) => !(msg instanceof SystemMessage));\n\n const lastValidMsgIndex = findLastIndex(\n messages,\n (msg) => msg instanceof AssistantMessage && (msg.getToolCalls()?.length ?? 0) > 0,\n );\n\n if (lastValidMsgIndex !== -1) {\n messages = messages.slice(0, lastValidMsgIndex);\n }\n\n if (this.propagateInputs) {\n messages.push(new UserMessage(input.task));\n }\n\n const target = await this.target.clone();\n target.memory.reset();\n await target.memory.addMany(messages);\n\n const response = await target.run({ prompt: null });\n\n return new StringToolOutput(response.result.text);\n }\n}\n"]}
@@ -39,7 +39,7 @@ class LLMTool extends base_cjs.Tool {
39
39
  schema: zod.z.object({
40
40
  task: zod.z.string()
41
41
  }),
42
- template: `You have to accomplish a task by using Using common sense and the information contained in the conversation up to this point, complete the following task. Do not follow any previously used formats or structures.
42
+ template: `Use common sense and the information contained in the conversation up to this point to complete the following task. Do not follow any previously used formats or structures.
43
43
 
44
44
  The Task: {{task}}`
45
45
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tools/llm.ts"],"names":["LLMTool","Tool","name","description","input","emitter","Emitter","root","child","namespace","toCamelCase","filter","Boolean","creator","inputSchema","z","object","task","string","min","describe","template","PromptTemplate","schema","_run","_options","run","memory","getProp","context","contextKeys","Memory","ToolError","isFatal","isRetryable","options","output","llm","create","messages","SystemMessage","render","msg","role","Role","SYSTEM","UserMessage","StringToolOutput","getTextContent"],"mappings":";;;;;;;;;;;;AA+BO,MAAMA,gBAAgBC,aAAAA,CAAAA;EA/B7B;;;;EAgCEC,IAAAA,GAAO,KAAA;EACPC,WAAAA,GACE,wHAAA;AAGF,EAAA,WAAA,CAA+BC,KAAAA,EAAqB;AAClD,IAAA,KAAA,CAAMA,KAAAA,CAAAA,EAAAA,IAAAA,CADuBA,KAAAA,GAAAA,KAAAA;AAE7B,IAAA,IAAA,CAAKF,IAAAA,GAAOE,KAAAA,EAAOF,IAAAA,IAAQ,IAAA,CAAKA,IAAAA;AAChC,IAAA,IAAA,CAAKC,WAAAA,GAAcC,KAAAA,EAAOD,WAAAA,IAAe,IAAA,CAAKA,WAAAA;AAC9C,IAAA,IAAA,CAAKE,OAAAA,GAAUC,mBAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,MAAA;AAAQ,QAAA,KAAA;QAAOC,kBAAAA,CAAYN,KAAAA,EAAOF,QAAQ,EAAA;AAAKS,OAAAA,CAAAA,MAAAA,CAAOC,OAAAA,CAAAA;MAClEC,OAAAA,EAAS;KACX,CAAA;AACF;EAEAC,WAAAA,GAAc;AACZ,IAAA,OAAOC,MAAEC,MAAAA,CAAO;AACdC,MAAAA,IAAAA,EAAMF,MAAEG,MAAAA,EAAM,CAAGC,IAAI,CAAA,CAAA,CAAGC,SAAS,iDAAA;KACnC,CAAA;AACF;EAEA,OAAgBC,QAAAA,GAAW,IAAIC,2BAAAA,CAAe;AAC5CC,IAAAA,MAAAA,EAAQR,MAAEC,MAAAA,CAAO;AACfC,MAAAA,IAAAA,EAAMF,MAAEG,MAAAA;KACV,CAAA;IACAG,QAAAA,EAAU,CAAA;;;GAGZ,CAAA;EAEA,MAAgBG,IAAAA,CACdpB,KAAAA,EACAqB,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,MAAAA,GAASC,kBAAAA,CAAQF,GAAAA,CAAIG,OAAAA,EAAS;AAAC5B,MAAAA,aAAAA,CAAK6B,WAAAA,CAAYC;AAAO,KAAA,CAAA;AAC7D,IAAA,IAAI,CAACJ,MAAAA,EAAQ;AACX,MAAA,MAAM,IAAIK,kBAAAA,CAAU,CAAA,6BAAA,CAAA,EAAiC,EAAA,EAAI;QACvDC,OAAAA,EAAS,IAAA;QACTC,WAAAA,EAAa;OACf,CAAA;AACF;AAEA,IAAA,MAAMb,QAAAA,GAAW,IAAA,CAAKc,OAAAA,EAASd,QAAAA,IAAYrB,OAAAA,CAAQqB,QAAAA;AACnD,IAAA,MAAMe,MAAAA,GAAS,MAAM,IAAA,CAAKhC,KAAAA,CAAMiC,IAAIC,MAAAA,CAAO;MACzCC,QAAAA,EAAU;QACR,IAAIC,yBAAAA,CACFnB,SAASoB,MAAAA,CAAO;AACdxB,UAAAA,IAAAA,EAAMb,KAAAA,CAAMa;AACd,SAAA,CAAA,CAAA;AAECU,QAAAA,GAAAA,MAAAA,CAAOY,SAAS5B,MAAAA,CAAO,CAAC+B,QAAQA,GAAAA,CAAIC,IAAAA,KAASC,iBAAKC,MAAM,CAAA;QAC3D,IAAIC,uBAAAA,CACFzB,SAASoB,MAAAA,CAAO;AACdxB,UAAAA,IAAAA,EAAMb,KAAAA,CAAMa;AACd,SAAA,CAAA;;KAGN,CAAA;AAEA,IAAA,OAAO,IAAI8B,yBAAAA,CAAiBX,MAAAA,CAAOY,cAAAA,EAAc,CAAA;AACnD;AACF","file":"llm.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolEmitter,\n ToolError,\n ToolInput,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { GetRunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport type { BaseMemory } from \"@/memory/base.js\";\nimport { toCamelCase } from \"remeda\";\nimport { Role, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\n\nexport interface LLMToolInput extends BaseToolOptions {\n llm: ChatModel;\n name?: string;\n description?: string;\n template?: typeof LLMTool.template;\n}\n\nexport class LLMTool extends Tool<StringToolOutput, LLMToolInput> {\n name = \"LLM\";\n description =\n \"Uses expert LLM to work with data in the existing conversation (classification, entity extraction, summarization, ...)\";\n declare readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput>;\n\n constructor(protected readonly input: LLMToolInput) {\n super(input);\n this.name = input?.name || this.name;\n this.description = input?.description || this.description;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"llm\", toCamelCase(input?.name ?? \"\")].filter(Boolean),\n creator: this,\n });\n }\n\n inputSchema() {\n return z.object({\n task: z.string().min(1).describe(\"A clearly defined task for the LLM to complete.\"),\n });\n }\n\n static readonly template = new PromptTemplate({\n schema: z.object({\n task: z.string(),\n }),\n template: `You have to accomplish a task by using Using common sense and the information contained in the conversation up to this point, complete the following task. Do not follow any previously used formats or structures.\n\nThe Task: {{task}}`,\n });\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: GetRunContext<this>,\n ) {\n const memory = getProp(run.context, [Tool.contextKeys.Memory]) as BaseMemory;\n if (!memory) {\n throw new ToolError(`No context has been provided!`, [], {\n isFatal: true,\n isRetryable: false,\n });\n }\n\n const template = this.options?.template ?? LLMTool.template;\n const output = await this.input.llm.create({\n messages: [\n new SystemMessage(\n template.render({\n task: input.task,\n }),\n ),\n ...memory.messages.filter((msg) => msg.role !== Role.SYSTEM),\n new UserMessage(\n template.render({\n task: input.task,\n }),\n ),\n ],\n });\n\n return new StringToolOutput(output.getTextContent());\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/llm.ts"],"names":["LLMTool","Tool","name","description","input","emitter","Emitter","root","child","namespace","toCamelCase","filter","Boolean","creator","inputSchema","z","object","task","string","min","describe","template","PromptTemplate","schema","_run","_options","run","memory","getProp","context","contextKeys","Memory","ToolError","isFatal","isRetryable","options","output","llm","create","messages","SystemMessage","render","msg","role","Role","SYSTEM","UserMessage","StringToolOutput","getTextContent"],"mappings":";;;;;;;;;;;;AA+BO,MAAMA,gBAAgBC,aAAAA,CAAAA;EA/B7B;;;;EAgCEC,IAAAA,GAAO,KAAA;EACPC,WAAAA,GACE,wHAAA;AAGF,EAAA,WAAA,CAA+BC,KAAAA,EAAqB;AAClD,IAAA,KAAA,CAAMA,KAAAA,CAAAA,EAAAA,IAAAA,CADuBA,KAAAA,GAAAA,KAAAA;AAE7B,IAAA,IAAA,CAAKF,IAAAA,GAAOE,KAAAA,EAAOF,IAAAA,IAAQ,IAAA,CAAKA,IAAAA;AAChC,IAAA,IAAA,CAAKC,WAAAA,GAAcC,KAAAA,EAAOD,WAAAA,IAAe,IAAA,CAAKA,WAAAA;AAC9C,IAAA,IAAA,CAAKE,OAAAA,GAAUC,mBAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,MAAA;AAAQ,QAAA,KAAA;QAAOC,kBAAAA,CAAYN,KAAAA,EAAOF,QAAQ,EAAA;AAAKS,OAAAA,CAAAA,MAAAA,CAAOC,OAAAA,CAAAA;MAClEC,OAAAA,EAAS;KACX,CAAA;AACF,EAAA;EAEAC,WAAAA,GAAc;AACZ,IAAA,OAAOC,MAAEC,MAAAA,CAAO;AACdC,MAAAA,IAAAA,EAAMF,MAAEG,MAAAA,EAAM,CAAGC,IAAI,CAAA,CAAA,CAAGC,SAAS,iDAAA;KACnC,CAAA;AACF,EAAA;EAEA,OAAgBC,QAAAA,GAAW,IAAIC,2BAAAA,CAAe;AAC5CC,IAAAA,MAAAA,EAAQR,MAAEC,MAAAA,CAAO;AACfC,MAAAA,IAAAA,EAAMF,MAAEG,MAAAA;KACV,CAAA;IACAG,QAAAA,EAAU,CAAA;;;GAGZ,CAAA;EAEA,MAAgBG,IAAAA,CACdpB,KAAAA,EACAqB,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,MAAAA,GAASC,kBAAAA,CAAQF,GAAAA,CAAIG,OAAAA,EAAS;AAAC5B,MAAAA,aAAAA,CAAK6B,WAAAA,CAAYC;AAAO,KAAA,CAAA;AAC7D,IAAA,IAAI,CAACJ,MAAAA,EAAQ;AACX,MAAA,MAAM,IAAIK,kBAAAA,CAAU,CAAA,6BAAA,CAAA,EAAiC,EAAA,EAAI;QACvDC,OAAAA,EAAS,IAAA;QACTC,WAAAA,EAAa;OACf,CAAA;AACF,IAAA;AAEA,IAAA,MAAMb,QAAAA,GAAW,IAAA,CAAKc,OAAAA,EAASd,QAAAA,IAAYrB,OAAAA,CAAQqB,QAAAA;AACnD,IAAA,MAAMe,MAAAA,GAAS,MAAM,IAAA,CAAKhC,KAAAA,CAAMiC,IAAIC,MAAAA,CAAO;MACzCC,QAAAA,EAAU;QACR,IAAIC,yBAAAA,CACFnB,SAASoB,MAAAA,CAAO;AACdxB,UAAAA,IAAAA,EAAMb,KAAAA,CAAMa;AACd,SAAA,CAAA,CAAA;AAECU,QAAAA,GAAAA,MAAAA,CAAOY,SAAS5B,MAAAA,CAAO,CAAC+B,QAAQA,GAAAA,CAAIC,IAAAA,KAASC,iBAAKC,MAAM,CAAA;QAC3D,IAAIC,uBAAAA,CACFzB,SAASoB,MAAAA,CAAO;AACdxB,UAAAA,IAAAA,EAAMb,KAAAA,CAAMa;AACd,SAAA,CAAA;;KAGN,CAAA;AAEA,IAAA,OAAO,IAAI8B,yBAAAA,CAAiBX,MAAAA,CAAOY,cAAAA,EAAc,CAAA;AACnD,EAAA;AACF","file":"llm.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolEmitter,\n ToolError,\n ToolInput,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { GetRunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport type { BaseMemory } from \"@/memory/base.js\";\nimport { toCamelCase } from \"remeda\";\nimport { Role, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\n\nexport interface LLMToolInput extends BaseToolOptions {\n llm: ChatModel;\n name?: string;\n description?: string;\n template?: typeof LLMTool.template;\n}\n\nexport class LLMTool extends Tool<StringToolOutput, LLMToolInput> {\n name = \"LLM\";\n description =\n \"Uses expert LLM to work with data in the existing conversation (classification, entity extraction, summarization, ...)\";\n declare readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput>;\n\n constructor(protected readonly input: LLMToolInput) {\n super(input);\n this.name = input?.name || this.name;\n this.description = input?.description || this.description;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"llm\", toCamelCase(input?.name ?? \"\")].filter(Boolean),\n creator: this,\n });\n }\n\n inputSchema() {\n return z.object({\n task: z.string().min(1).describe(\"A clearly defined task for the LLM to complete.\"),\n });\n }\n\n static readonly template = new PromptTemplate({\n schema: z.object({\n task: z.string(),\n }),\n template: `Use common sense and the information contained in the conversation up to this point to complete the following task. Do not follow any previously used formats or structures.\n\nThe Task: {{task}}`,\n });\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: GetRunContext<this>,\n ) {\n const memory = getProp(run.context, [Tool.contextKeys.Memory]) as BaseMemory;\n if (!memory) {\n throw new ToolError(`No context has been provided!`, [], {\n isFatal: true,\n isRetryable: false,\n });\n }\n\n const template = this.options?.template ?? LLMTool.template;\n const output = await this.input.llm.create({\n messages: [\n new SystemMessage(\n template.render({\n task: input.task,\n }),\n ),\n ...memory.messages.filter((msg) => msg.role !== Role.SYSTEM),\n new UserMessage(\n template.render({\n task: input.task,\n }),\n ),\n ],\n });\n\n return new StringToolOutput(output.getTextContent());\n }\n}\n"]}
@@ -1,8 +1,8 @@
1
- import { BaseToolOptions, Tool, StringToolOutput, ToolEmitter, ToolInput, BaseToolRunOptions } from './base.cjs';
1
+ import { Tool, StringToolOutput, BaseToolOptions, ToolEmitter, ToolInput, BaseToolRunOptions } from './base.cjs';
2
2
  import { z } from 'zod';
3
3
  import { GetRunContext } from '../context.cjs';
4
4
  import { PromptTemplate } from '../template.cjs';
5
- import { m as ChatModel } from '../chat-DaqV3woF.cjs';
5
+ import { a as ChatModel } from '../chat-C20nYj46.cjs';
6
6
  import 'ajv';
7
7
  import '../errors.cjs';
8
8
  import '../internals/types.cjs';
@@ -12,7 +12,7 @@ import 'promise-based-task';
12
12
  import '../cache/base.cjs';
13
13
  import '../internals/helpers/schema.cjs';
14
14
  import 'zod-to-json-schema';
15
- import '../emitter-UkIkNrek.cjs';
15
+ import '../emitter-D4OcelZ9.cjs';
16
16
  import '../internals/helpers/promise.cjs';
17
17
  import '../backend/message.cjs';
18
18
  import 'ai';
@@ -1,8 +1,8 @@
1
- import { BaseToolOptions, Tool, StringToolOutput, ToolEmitter, ToolInput, BaseToolRunOptions } from './base.js';
1
+ import { Tool, StringToolOutput, BaseToolOptions, ToolEmitter, ToolInput, BaseToolRunOptions } from './base.js';
2
2
  import { z } from 'zod';
3
3
  import { GetRunContext } from '../context.js';
4
4
  import { PromptTemplate } from '../template.js';
5
- import { m as ChatModel } from '../chat-DTxmaKP0.js';
5
+ import { a as ChatModel } from '../chat-CfTNfR60.js';
6
6
  import 'ajv';
7
7
  import '../errors.js';
8
8
  import '../internals/types.js';
@@ -12,7 +12,7 @@ import 'promise-based-task';
12
12
  import '../cache/base.js';
13
13
  import '../internals/helpers/schema.js';
14
14
  import 'zod-to-json-schema';
15
- import '../emitter-CL56qab4.js';
15
+ import '../emitter-kHxkUxco.js';
16
16
  import '../internals/helpers/promise.js';
17
17
  import '../backend/message.js';
18
18
  import 'ai';
package/dist/tools/llm.js CHANGED
@@ -37,7 +37,7 @@ class LLMTool extends Tool {
37
37
  schema: z.object({
38
38
  task: z.string()
39
39
  }),
40
- template: `You have to accomplish a task by using Using common sense and the information contained in the conversation up to this point, complete the following task. Do not follow any previously used formats or structures.
40
+ template: `Use common sense and the information contained in the conversation up to this point to complete the following task. Do not follow any previously used formats or structures.
41
41
 
42
42
  The Task: {{task}}`
43
43
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tools/llm.ts"],"names":["LLMTool","Tool","name","description","input","emitter","Emitter","root","child","namespace","toCamelCase","filter","Boolean","creator","inputSchema","z","object","task","string","min","describe","template","PromptTemplate","schema","_run","_options","run","memory","getProp","context","contextKeys","Memory","ToolError","isFatal","isRetryable","options","output","llm","create","messages","SystemMessage","render","msg","role","Role","SYSTEM","UserMessage","StringToolOutput","getTextContent"],"mappings":";;;;;;;;;;AA+BO,MAAMA,gBAAgBC,IAAAA,CAAAA;EA/B7B;;;;EAgCEC,IAAAA,GAAO,KAAA;EACPC,WAAAA,GACE,wHAAA;AAGF,EAAA,WAAA,CAA+BC,KAAAA,EAAqB;AAClD,IAAA,KAAA,CAAMA,KAAAA,CAAAA,EAAAA,IAAAA,CADuBA,KAAAA,GAAAA,KAAAA;AAE7B,IAAA,IAAA,CAAKF,IAAAA,GAAOE,KAAAA,EAAOF,IAAAA,IAAQ,IAAA,CAAKA,IAAAA;AAChC,IAAA,IAAA,CAAKC,WAAAA,GAAcC,KAAAA,EAAOD,WAAAA,IAAe,IAAA,CAAKA,WAAAA;AAC9C,IAAA,IAAA,CAAKE,OAAAA,GAAUC,OAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,MAAA;AAAQ,QAAA,KAAA;QAAOC,WAAAA,CAAYN,KAAAA,EAAOF,QAAQ,EAAA;AAAKS,OAAAA,CAAAA,MAAAA,CAAOC,OAAAA,CAAAA;MAClEC,OAAAA,EAAS;KACX,CAAA;AACF;EAEAC,WAAAA,GAAc;AACZ,IAAA,OAAOC,EAAEC,MAAAA,CAAO;AACdC,MAAAA,IAAAA,EAAMF,EAAEG,MAAAA,EAAM,CAAGC,IAAI,CAAA,CAAA,CAAGC,SAAS,iDAAA;KACnC,CAAA;AACF;EAEA,OAAgBC,QAAAA,GAAW,IAAIC,cAAAA,CAAe;AAC5CC,IAAAA,MAAAA,EAAQR,EAAEC,MAAAA,CAAO;AACfC,MAAAA,IAAAA,EAAMF,EAAEG,MAAAA;KACV,CAAA;IACAG,QAAAA,EAAU,CAAA;;;GAGZ,CAAA;EAEA,MAAgBG,IAAAA,CACdpB,KAAAA,EACAqB,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,MAAAA,GAASC,OAAAA,CAAQF,GAAAA,CAAIG,OAAAA,EAAS;AAAC5B,MAAAA,IAAAA,CAAK6B,WAAAA,CAAYC;AAAO,KAAA,CAAA;AAC7D,IAAA,IAAI,CAACJ,MAAAA,EAAQ;AACX,MAAA,MAAM,IAAIK,SAAAA,CAAU,CAAA,6BAAA,CAAA,EAAiC,EAAA,EAAI;QACvDC,OAAAA,EAAS,IAAA;QACTC,WAAAA,EAAa;OACf,CAAA;AACF;AAEA,IAAA,MAAMb,QAAAA,GAAW,IAAA,CAAKc,OAAAA,EAASd,QAAAA,IAAYrB,OAAAA,CAAQqB,QAAAA;AACnD,IAAA,MAAMe,MAAAA,GAAS,MAAM,IAAA,CAAKhC,KAAAA,CAAMiC,IAAIC,MAAAA,CAAO;MACzCC,QAAAA,EAAU;QACR,IAAIC,aAAAA,CACFnB,SAASoB,MAAAA,CAAO;AACdxB,UAAAA,IAAAA,EAAMb,KAAAA,CAAMa;AACd,SAAA,CAAA,CAAA;AAECU,QAAAA,GAAAA,MAAAA,CAAOY,SAAS5B,MAAAA,CAAO,CAAC+B,QAAQA,GAAAA,CAAIC,IAAAA,KAASC,KAAKC,MAAM,CAAA;QAC3D,IAAIC,WAAAA,CACFzB,SAASoB,MAAAA,CAAO;AACdxB,UAAAA,IAAAA,EAAMb,KAAAA,CAAMa;AACd,SAAA,CAAA;;KAGN,CAAA;AAEA,IAAA,OAAO,IAAI8B,gBAAAA,CAAiBX,MAAAA,CAAOY,cAAAA,EAAc,CAAA;AACnD;AACF","file":"llm.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolEmitter,\n ToolError,\n ToolInput,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { GetRunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport type { BaseMemory } from \"@/memory/base.js\";\nimport { toCamelCase } from \"remeda\";\nimport { Role, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\n\nexport interface LLMToolInput extends BaseToolOptions {\n llm: ChatModel;\n name?: string;\n description?: string;\n template?: typeof LLMTool.template;\n}\n\nexport class LLMTool extends Tool<StringToolOutput, LLMToolInput> {\n name = \"LLM\";\n description =\n \"Uses expert LLM to work with data in the existing conversation (classification, entity extraction, summarization, ...)\";\n declare readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput>;\n\n constructor(protected readonly input: LLMToolInput) {\n super(input);\n this.name = input?.name || this.name;\n this.description = input?.description || this.description;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"llm\", toCamelCase(input?.name ?? \"\")].filter(Boolean),\n creator: this,\n });\n }\n\n inputSchema() {\n return z.object({\n task: z.string().min(1).describe(\"A clearly defined task for the LLM to complete.\"),\n });\n }\n\n static readonly template = new PromptTemplate({\n schema: z.object({\n task: z.string(),\n }),\n template: `You have to accomplish a task by using Using common sense and the information contained in the conversation up to this point, complete the following task. Do not follow any previously used formats or structures.\n\nThe Task: {{task}}`,\n });\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: GetRunContext<this>,\n ) {\n const memory = getProp(run.context, [Tool.contextKeys.Memory]) as BaseMemory;\n if (!memory) {\n throw new ToolError(`No context has been provided!`, [], {\n isFatal: true,\n isRetryable: false,\n });\n }\n\n const template = this.options?.template ?? LLMTool.template;\n const output = await this.input.llm.create({\n messages: [\n new SystemMessage(\n template.render({\n task: input.task,\n }),\n ),\n ...memory.messages.filter((msg) => msg.role !== Role.SYSTEM),\n new UserMessage(\n template.render({\n task: input.task,\n }),\n ),\n ],\n });\n\n return new StringToolOutput(output.getTextContent());\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/llm.ts"],"names":["LLMTool","Tool","name","description","input","emitter","Emitter","root","child","namespace","toCamelCase","filter","Boolean","creator","inputSchema","z","object","task","string","min","describe","template","PromptTemplate","schema","_run","_options","run","memory","getProp","context","contextKeys","Memory","ToolError","isFatal","isRetryable","options","output","llm","create","messages","SystemMessage","render","msg","role","Role","SYSTEM","UserMessage","StringToolOutput","getTextContent"],"mappings":";;;;;;;;;;AA+BO,MAAMA,gBAAgBC,IAAAA,CAAAA;EA/B7B;;;;EAgCEC,IAAAA,GAAO,KAAA;EACPC,WAAAA,GACE,wHAAA;AAGF,EAAA,WAAA,CAA+BC,KAAAA,EAAqB;AAClD,IAAA,KAAA,CAAMA,KAAAA,CAAAA,EAAAA,IAAAA,CADuBA,KAAAA,GAAAA,KAAAA;AAE7B,IAAA,IAAA,CAAKF,IAAAA,GAAOE,KAAAA,EAAOF,IAAAA,IAAQ,IAAA,CAAKA,IAAAA;AAChC,IAAA,IAAA,CAAKC,WAAAA,GAAcC,KAAAA,EAAOD,WAAAA,IAAe,IAAA,CAAKA,WAAAA;AAC9C,IAAA,IAAA,CAAKE,OAAAA,GAAUC,OAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,MAAA;AAAQ,QAAA,KAAA;QAAOC,WAAAA,CAAYN,KAAAA,EAAOF,QAAQ,EAAA;AAAKS,OAAAA,CAAAA,MAAAA,CAAOC,OAAAA,CAAAA;MAClEC,OAAAA,EAAS;KACX,CAAA;AACF,EAAA;EAEAC,WAAAA,GAAc;AACZ,IAAA,OAAOC,EAAEC,MAAAA,CAAO;AACdC,MAAAA,IAAAA,EAAMF,EAAEG,MAAAA,EAAM,CAAGC,IAAI,CAAA,CAAA,CAAGC,SAAS,iDAAA;KACnC,CAAA;AACF,EAAA;EAEA,OAAgBC,QAAAA,GAAW,IAAIC,cAAAA,CAAe;AAC5CC,IAAAA,MAAAA,EAAQR,EAAEC,MAAAA,CAAO;AACfC,MAAAA,IAAAA,EAAMF,EAAEG,MAAAA;KACV,CAAA;IACAG,QAAAA,EAAU,CAAA;;;GAGZ,CAAA;EAEA,MAAgBG,IAAAA,CACdpB,KAAAA,EACAqB,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,MAAAA,GAASC,OAAAA,CAAQF,GAAAA,CAAIG,OAAAA,EAAS;AAAC5B,MAAAA,IAAAA,CAAK6B,WAAAA,CAAYC;AAAO,KAAA,CAAA;AAC7D,IAAA,IAAI,CAACJ,MAAAA,EAAQ;AACX,MAAA,MAAM,IAAIK,SAAAA,CAAU,CAAA,6BAAA,CAAA,EAAiC,EAAA,EAAI;QACvDC,OAAAA,EAAS,IAAA;QACTC,WAAAA,EAAa;OACf,CAAA;AACF,IAAA;AAEA,IAAA,MAAMb,QAAAA,GAAW,IAAA,CAAKc,OAAAA,EAASd,QAAAA,IAAYrB,OAAAA,CAAQqB,QAAAA;AACnD,IAAA,MAAMe,MAAAA,GAAS,MAAM,IAAA,CAAKhC,KAAAA,CAAMiC,IAAIC,MAAAA,CAAO;MACzCC,QAAAA,EAAU;QACR,IAAIC,aAAAA,CACFnB,SAASoB,MAAAA,CAAO;AACdxB,UAAAA,IAAAA,EAAMb,KAAAA,CAAMa;AACd,SAAA,CAAA,CAAA;AAECU,QAAAA,GAAAA,MAAAA,CAAOY,SAAS5B,MAAAA,CAAO,CAAC+B,QAAQA,GAAAA,CAAIC,IAAAA,KAASC,KAAKC,MAAM,CAAA;QAC3D,IAAIC,WAAAA,CACFzB,SAASoB,MAAAA,CAAO;AACdxB,UAAAA,IAAAA,EAAMb,KAAAA,CAAMa;AACd,SAAA,CAAA;;KAGN,CAAA;AAEA,IAAA,OAAO,IAAI8B,gBAAAA,CAAiBX,MAAAA,CAAOY,cAAAA,EAAc,CAAA;AACnD,EAAA;AACF","file":"llm.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n StringToolOutput,\n Tool,\n ToolEmitter,\n ToolError,\n ToolInput,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { GetRunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport type { BaseMemory } from \"@/memory/base.js\";\nimport { toCamelCase } from \"remeda\";\nimport { Role, SystemMessage, UserMessage } from \"@/backend/message.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\n\nexport interface LLMToolInput extends BaseToolOptions {\n llm: ChatModel;\n name?: string;\n description?: string;\n template?: typeof LLMTool.template;\n}\n\nexport class LLMTool extends Tool<StringToolOutput, LLMToolInput> {\n name = \"LLM\";\n description =\n \"Uses expert LLM to work with data in the existing conversation (classification, entity extraction, summarization, ...)\";\n declare readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput>;\n\n constructor(protected readonly input: LLMToolInput) {\n super(input);\n this.name = input?.name || this.name;\n this.description = input?.description || this.description;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"llm\", toCamelCase(input?.name ?? \"\")].filter(Boolean),\n creator: this,\n });\n }\n\n inputSchema() {\n return z.object({\n task: z.string().min(1).describe(\"A clearly defined task for the LLM to complete.\"),\n });\n }\n\n static readonly template = new PromptTemplate({\n schema: z.object({\n task: z.string(),\n }),\n template: `Use common sense and the information contained in the conversation up to this point to complete the following task. Do not follow any previously used formats or structures.\n\nThe Task: {{task}}`,\n });\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: GetRunContext<this>,\n ) {\n const memory = getProp(run.context, [Tool.contextKeys.Memory]) as BaseMemory;\n if (!memory) {\n throw new ToolError(`No context has been provided!`, [], {\n isFatal: true,\n isRetryable: false,\n });\n }\n\n const template = this.options?.template ?? LLMTool.template;\n const output = await this.input.llm.create({\n messages: [\n new SystemMessage(\n template.render({\n task: input.task,\n }),\n ),\n ...memory.messages.filter((msg) => msg.role !== Role.SYSTEM),\n new UserMessage(\n template.render({\n task: input.task,\n }),\n ),\n ],\n });\n\n return new StringToolOutput(output.getTextContent());\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/tools/mcp.ts"],"names":["MCPToolOutput","JSONToolOutput","MCPTool","Tool","name","description","emitter","client","tool","options","Emitter","root","child","namespace","toCamelCase","creator","inputSchema","_run","input","_options","run","result","callTool","arguments","undefined","signal","fromClient","tools","paginate","size","Infinity","handler","cursor","nextCursor","listTools","data","map"],"mappings":";;;;;;;;;AAmBO,MAAMA,sBAAsBC,uBAAAA,CAAAA;EAnBnC;;;AAmBwD;AAEjD,MAAMC,gBAAgBC,aAAAA,CAAAA;EArB7B;;;AAsBkBC,EAAAA,IAAAA;AACAC,EAAAA,WAAAA;AACAC,EAAAA,OAAAA;AAEAC,EAAAA,MAAAA;AACCC,EAAAA,IAAAA;AAEjB,EAAA,WAAA,CAAmB,EAAED,MAAAA,EAAQC,IAAAA,EAAM,GAAGC,SAAAA,EAAyB;AAC7D,IAAA,KAAA,CAAMA,OAAAA,CAAAA;AACN,IAAA,IAAA,CAAKF,MAAAA,GAASA,MAAAA;AACd,IAAA,IAAA,CAAKC,IAAAA,GAAOA,IAAAA;AACZ,IAAA,IAAA,CAAKJ,OAAOI,IAAAA,CAAKJ,IAAAA;AACjB,IAAA,IAAA,CAAKC,WAAAA,GACHG,KAAKH,WAAAA,IAAe,sEAAA;AACtB,IAAA,IAAA,CAAKC,OAAAA,GAAUI,mBAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,MAAA;AAAQ,QAAA,KAAA;AAAOC,QAAAA,kBAAAA,CAAY,KAAKV,IAAI;;MAChDW,OAAAA,EAAS;KACX,CAAA;AACF;EAEOC,WAAAA,GAAc;AACnB,IAAA,OAAO,KAAKR,IAAAA,CAAKQ,WAAAA;AACnB;EAEA,MAAgBC,IAAAA,CACdC,KAAAA,EACAC,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,MAAAA,GAAS,MAAM,IAAA,CAAKd,MAAAA,CAAOe,QAAAA,CAAS;AAAElB,MAAAA,IAAAA,EAAM,IAAA,CAAKA,IAAAA;MAAMmB,SAAAA,EAAWL;AAAM,KAAA,EAAGM,MAAAA,EAAW;AAC1FC,MAAAA,MAAAA,EAAQL,GAAAA,CAAIK;KACd,CAAA;AACA,IAAA,OAAO,IAAIzB,cAAcqB,MAAAA,CAAAA;AAC3B;AAEA,EAAA,aAAoBK,WAAWnB,MAAAA,EAAuC;AACpE,IAAA,MAAMoB,KAAAA,GAAQ,MAAMC,qBAAAA,CAAS;MAC3BC,IAAAA,EAAMC,QAAAA;MACNC,OAAAA,kBAAS,MAAA,CAAA,OAAO,EAAEC,MAAAA,EAAM,KAAuB;AAC7C,QAAA,MAAM,EAAEL,KAAAA,EAAAA,MAAAA,EAAOM,YAAU,GAAK,MAAM1B,OAAO2B,SAAAA,CAAU;AAAEF,UAAAA;SAAO,CAAA;AAC9D,QAAA,OAAO;UAAEG,IAAAA,EAAMR,MAAAA;AAAOM,UAAAA;AAAW,SAAA;OACnC,EAHS,SAAA;KAIX,CAAA;AACA,IAAA,OAAON,KAAAA,CAAMS,GAAAA,CAAI,CAAC5B,IAAAA,KAAS,IAAIN,OAAAA,CAAQ;AAAEK,MAAAA,MAAAA;AAAQC,MAAAA;AAAK,KAAA,CAAA,CAAA;AACxD;AACF","file":"mcp.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseToolRunOptions, ToolEmitter, ToolInput, JSONToolOutput, Tool } from \"@/tools/base.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { Client as MCPClient } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { ListToolsResult } from \"@modelcontextprotocol/sdk/types.js\";\nimport { SchemaObject } from \"ajv\";\nimport { paginate } from \"@/internals/helpers/paginate.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport interface MCPToolInput {\n client: MCPClient;\n tool: ListToolsResult[\"tools\"][number];\n}\n\nexport class MCPToolOutput extends JSONToolOutput<any> {}\n\nexport class MCPTool extends Tool<MCPToolOutput> {\n public readonly name: string;\n public readonly description: string;\n public readonly emitter: ToolEmitter<ToolInput<this>, MCPToolOutput>;\n\n public readonly client: MCPClient;\n private readonly tool: ListToolsResult[\"tools\"][number];\n\n public constructor({ client, tool, ...options }: MCPToolInput) {\n super(options);\n this.client = client;\n this.tool = tool;\n this.name = tool.name;\n this.description =\n tool.description ?? \"No available description, use the tool based on its name and schema.\";\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"mcp\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n public inputSchema() {\n return this.tool.inputSchema as SchemaObject;\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: BaseToolRunOptions,\n run: GetRunContext<typeof this>,\n ) {\n const result = await this.client.callTool({ name: this.name, arguments: input }, undefined, {\n signal: run.signal,\n });\n return new MCPToolOutput(result);\n }\n\n public static async fromClient(client: MCPClient): Promise<MCPTool[]> {\n const tools = await paginate({\n size: Infinity,\n handler: async ({ cursor }: { cursor?: string }) => {\n const { tools, nextCursor } = await client.listTools({ cursor });\n return { data: tools, nextCursor } as const;\n },\n });\n return tools.map((tool) => new MCPTool({ client, tool }));\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/mcp.ts"],"names":["MCPToolOutput","JSONToolOutput","MCPTool","Tool","name","description","emitter","client","tool","options","Emitter","root","child","namespace","toCamelCase","creator","inputSchema","_run","input","_options","run","result","callTool","arguments","undefined","signal","fromClient","tools","paginate","size","Infinity","handler","cursor","nextCursor","listTools","data","map"],"mappings":";;;;;;;;;AAmBO,MAAMA,sBAAsBC,uBAAAA,CAAAA;EAnBnC;;;AAmBwD;AAEjD,MAAMC,gBAAgBC,aAAAA,CAAAA;EArB7B;;;AAsBkBC,EAAAA,IAAAA;AACAC,EAAAA,WAAAA;AACAC,EAAAA,OAAAA;AAEAC,EAAAA,MAAAA;AACCC,EAAAA,IAAAA;AAEjB,EAAA,WAAA,CAAmB,EAAED,MAAAA,EAAQC,IAAAA,EAAM,GAAGC,SAAAA,EAAyB;AAC7D,IAAA,KAAA,CAAMA,OAAAA,CAAAA;AACN,IAAA,IAAA,CAAKF,MAAAA,GAASA,MAAAA;AACd,IAAA,IAAA,CAAKC,IAAAA,GAAOA,IAAAA;AACZ,IAAA,IAAA,CAAKJ,OAAOI,IAAAA,CAAKJ,IAAAA;AACjB,IAAA,IAAA,CAAKC,WAAAA,GACHG,KAAKH,WAAAA,IAAe,sEAAA;AACtB,IAAA,IAAA,CAAKC,OAAAA,GAAUI,mBAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,MAAA;AAAQ,QAAA,KAAA;AAAOC,QAAAA,kBAAAA,CAAY,KAAKV,IAAI;;MAChDW,OAAAA,EAAS;KACX,CAAA;AACF,EAAA;EAEOC,WAAAA,GAAc;AACnB,IAAA,OAAO,KAAKR,IAAAA,CAAKQ,WAAAA;AACnB,EAAA;EAEA,MAAgBC,IAAAA,CACdC,KAAAA,EACAC,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,MAAAA,GAAS,MAAM,IAAA,CAAKd,MAAAA,CAAOe,QAAAA,CAAS;AAAElB,MAAAA,IAAAA,EAAM,IAAA,CAAKA,IAAAA;MAAMmB,SAAAA,EAAWL;AAAM,KAAA,EAAGM,MAAAA,EAAW;AAC1FC,MAAAA,MAAAA,EAAQL,GAAAA,CAAIK;KACd,CAAA;AACA,IAAA,OAAO,IAAIzB,cAAcqB,MAAAA,CAAAA;AAC3B,EAAA;AAEA,EAAA,aAAoBK,WAAWnB,MAAAA,EAAuC;AACpE,IAAA,MAAMoB,KAAAA,GAAQ,MAAMC,qBAAAA,CAAS;MAC3BC,IAAAA,EAAMC,QAAAA;MACNC,OAAAA,kBAAS,MAAA,CAAA,OAAO,EAAEC,MAAAA,EAAM,KAAuB;AAC7C,QAAA,MAAM,EAAEL,KAAAA,EAAAA,MAAAA,EAAOM,YAAU,GAAK,MAAM1B,OAAO2B,SAAAA,CAAU;AAAEF,UAAAA;SAAO,CAAA;AAC9D,QAAA,OAAO;UAAEG,IAAAA,EAAMR,MAAAA;AAAOM,UAAAA;AAAW,SAAA;MACnC,CAAA,EAHS,SAAA;KAIX,CAAA;AACA,IAAA,OAAON,KAAAA,CAAMS,GAAAA,CAAI,CAAC5B,IAAAA,KAAS,IAAIN,OAAAA,CAAQ;AAAEK,MAAAA,MAAAA;AAAQC,MAAAA;AAAK,KAAA,CAAA,CAAA;AACxD,EAAA;AACF","file":"mcp.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseToolRunOptions, ToolEmitter, ToolInput, JSONToolOutput, Tool } from \"@/tools/base.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { Client as MCPClient } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { ListToolsResult } from \"@modelcontextprotocol/sdk/types.js\";\nimport { SchemaObject } from \"ajv\";\nimport { paginate } from \"@/internals/helpers/paginate.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport interface MCPToolInput {\n client: MCPClient;\n tool: ListToolsResult[\"tools\"][number];\n}\n\nexport class MCPToolOutput extends JSONToolOutput<any> {}\n\nexport class MCPTool extends Tool<MCPToolOutput> {\n public readonly name: string;\n public readonly description: string;\n public readonly emitter: ToolEmitter<ToolInput<this>, MCPToolOutput>;\n\n public readonly client: MCPClient;\n private readonly tool: ListToolsResult[\"tools\"][number];\n\n public constructor({ client, tool, ...options }: MCPToolInput) {\n super(options);\n this.client = client;\n this.tool = tool;\n this.name = tool.name;\n this.description =\n tool.description ?? \"No available description, use the tool based on its name and schema.\";\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"mcp\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n public inputSchema() {\n return this.tool.inputSchema as SchemaObject;\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: BaseToolRunOptions,\n run: GetRunContext<typeof this>,\n ) {\n const result = await this.client.callTool({ name: this.name, arguments: input }, undefined, {\n signal: run.signal,\n });\n return new MCPToolOutput(result);\n }\n\n public static async fromClient(client: MCPClient): Promise<MCPTool[]> {\n const tools = await paginate({\n size: Infinity,\n handler: async ({ cursor }: { cursor?: string }) => {\n const { tools, nextCursor } = await client.listTools({ cursor });\n return { data: tools, nextCursor } as const;\n },\n });\n return tools.map((tool) => new MCPTool({ client, tool }));\n }\n}\n"]}