beeai-framework 0.1.16 → 0.1.17

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 (627) hide show
  1. package/dist/adapters/acp/agents/agent.cjs.map +1 -1
  2. package/dist/adapters/acp/agents/agent.d.cts +3 -14
  3. package/dist/adapters/acp/agents/agent.d.ts +3 -14
  4. package/dist/adapters/acp/agents/agent.js.map +1 -1
  5. package/dist/adapters/acp/agents/events.d.cts +2 -13
  6. package/dist/adapters/acp/agents/events.d.ts +2 -13
  7. package/dist/adapters/acp/agents/types.d.cts +1 -12
  8. package/dist/adapters/acp/agents/types.d.ts +1 -12
  9. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  10. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +3 -14
  11. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +3 -14
  12. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  13. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  14. package/dist/adapters/amazon-bedrock/backend/client.d.cts +1 -12
  15. package/dist/adapters/amazon-bedrock/backend/client.d.ts +1 -12
  16. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  17. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  18. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +3 -14
  19. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +3 -14
  20. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  21. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  22. package/dist/adapters/anthropic/backend/chat.d.cts +3 -14
  23. package/dist/adapters/anthropic/backend/chat.d.ts +3 -14
  24. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  25. package/dist/adapters/anthropic/backend/client.cjs +1 -4
  26. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  27. package/dist/adapters/anthropic/backend/client.d.cts +1 -12
  28. package/dist/adapters/anthropic/backend/client.d.ts +1 -12
  29. package/dist/adapters/anthropic/backend/client.js +3 -6
  30. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  31. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  32. package/dist/adapters/anthropic/backend/embedding.d.cts +3 -14
  33. package/dist/adapters/anthropic/backend/embedding.d.ts +3 -14
  34. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  35. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  36. package/dist/adapters/azure-openai/backend/chat.d.cts +3 -14
  37. package/dist/adapters/azure-openai/backend/chat.d.ts +3 -14
  38. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  39. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  40. package/dist/adapters/azure-openai/backend/client.d.cts +1 -12
  41. package/dist/adapters/azure-openai/backend/client.d.ts +1 -12
  42. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  43. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  44. package/dist/adapters/azure-openai/backend/embedding.d.cts +3 -14
  45. package/dist/adapters/azure-openai/backend/embedding.d.ts +3 -14
  46. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  47. package/dist/adapters/beeai_platform/agents/agent.cjs.map +1 -1
  48. package/dist/adapters/beeai_platform/agents/agent.d.cts +2 -2
  49. package/dist/adapters/beeai_platform/agents/agent.d.ts +2 -2
  50. package/dist/adapters/beeai_platform/agents/agent.js.map +1 -1
  51. package/dist/adapters/beeai_platform/agents/events.d.cts +2 -13
  52. package/dist/adapters/beeai_platform/agents/events.d.ts +2 -13
  53. package/dist/adapters/beeai_platform/agents/types.d.cts +1 -12
  54. package/dist/adapters/beeai_platform/agents/types.d.ts +1 -12
  55. package/dist/adapters/dummy/backend/chat.cjs +9 -9
  56. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  57. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  58. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  59. package/dist/adapters/dummy/backend/chat.js +9 -9
  60. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  61. package/dist/adapters/dummy/backend/embedding.cjs +9 -9
  62. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  63. package/dist/adapters/dummy/backend/embedding.d.cts +3 -14
  64. package/dist/adapters/dummy/backend/embedding.d.ts +3 -14
  65. package/dist/adapters/dummy/backend/embedding.js +9 -9
  66. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  67. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  68. package/dist/adapters/google-vertex/backend/chat.d.cts +3 -14
  69. package/dist/adapters/google-vertex/backend/chat.d.ts +3 -14
  70. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  71. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  72. package/dist/adapters/google-vertex/backend/client.d.cts +1 -12
  73. package/dist/adapters/google-vertex/backend/client.d.ts +1 -12
  74. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  75. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  76. package/dist/adapters/google-vertex/backend/embedding.d.cts +3 -14
  77. package/dist/adapters/google-vertex/backend/embedding.d.ts +3 -14
  78. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  79. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  80. package/dist/adapters/groq/backend/chat.d.cts +3 -14
  81. package/dist/adapters/groq/backend/chat.d.ts +3 -14
  82. package/dist/adapters/groq/backend/chat.js.map +1 -1
  83. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  84. package/dist/adapters/groq/backend/client.d.cts +1 -12
  85. package/dist/adapters/groq/backend/client.d.ts +1 -12
  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 +3 -14
  89. package/dist/adapters/groq/backend/embedding.d.ts +3 -14
  90. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  91. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  92. package/dist/adapters/langchain/backend/chat.d.cts +2 -2
  93. package/dist/adapters/langchain/backend/chat.d.ts +2 -2
  94. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  95. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  96. package/dist/adapters/langchain/backend/embedding.d.cts +3 -14
  97. package/dist/adapters/langchain/backend/embedding.d.ts +3 -14
  98. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  99. package/dist/adapters/langchain/tools.cjs.map +1 -1
  100. package/dist/adapters/langchain/tools.d.cts +1 -1
  101. package/dist/adapters/langchain/tools.d.ts +1 -1
  102. package/dist/adapters/langchain/tools.js.map +1 -1
  103. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  104. package/dist/adapters/mcp/serve/http_server.d.cts +1 -12
  105. package/dist/adapters/mcp/serve/http_server.d.ts +1 -12
  106. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  107. package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
  108. package/dist/adapters/mcp/serve/in_memory_store.d.cts +1 -12
  109. package/dist/adapters/mcp/serve/in_memory_store.d.ts +1 -12
  110. package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
  111. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  112. package/dist/adapters/mcp/serve/server.d.cts +1 -12
  113. package/dist/adapters/mcp/serve/server.d.ts +1 -12
  114. package/dist/adapters/mcp/serve/server.js.map +1 -1
  115. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  116. package/dist/adapters/ollama/backend/chat.d.cts +3 -14
  117. package/dist/adapters/ollama/backend/chat.d.ts +3 -14
  118. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  119. package/dist/adapters/ollama/backend/client.cjs +12 -3
  120. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  121. package/dist/adapters/ollama/backend/client.d.cts +4 -13
  122. package/dist/adapters/ollama/backend/client.d.ts +4 -13
  123. package/dist/adapters/ollama/backend/client.js +13 -4
  124. package/dist/adapters/ollama/backend/client.js.map +1 -1
  125. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  126. package/dist/adapters/ollama/backend/embedding.d.cts +3 -14
  127. package/dist/adapters/ollama/backend/embedding.d.ts +3 -14
  128. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  129. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  130. package/dist/adapters/openai/backend/chat.d.cts +3 -14
  131. package/dist/adapters/openai/backend/chat.d.ts +3 -14
  132. package/dist/adapters/openai/backend/chat.js.map +1 -1
  133. package/dist/adapters/openai/backend/client.cjs +1 -4
  134. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  135. package/dist/adapters/openai/backend/client.d.cts +1 -12
  136. package/dist/adapters/openai/backend/client.d.ts +1 -12
  137. package/dist/adapters/openai/backend/client.js +3 -6
  138. package/dist/adapters/openai/backend/client.js.map +1 -1
  139. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  140. package/dist/adapters/openai/backend/embedding.d.cts +3 -14
  141. package/dist/adapters/openai/backend/embedding.d.ts +3 -14
  142. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  143. package/dist/adapters/vercel/backend/chat.cjs +2 -2
  144. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  145. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  146. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  147. package/dist/adapters/vercel/backend/chat.js +2 -2
  148. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  149. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  150. package/dist/adapters/vercel/backend/embedding.d.cts +3 -14
  151. package/dist/adapters/vercel/backend/embedding.d.ts +3 -14
  152. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  153. package/dist/adapters/vercel/backend/utils.cjs +11 -2
  154. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  155. package/dist/adapters/vercel/backend/utils.d.cts +3 -13
  156. package/dist/adapters/vercel/backend/utils.d.ts +3 -13
  157. package/dist/adapters/vercel/backend/utils.js +11 -3
  158. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  159. package/dist/adapters/watsonx/backend/chat.cjs +13 -13
  160. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  161. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  162. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  163. package/dist/adapters/watsonx/backend/chat.js +13 -13
  164. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  165. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  166. package/dist/adapters/watsonx/backend/client.d.cts +1 -12
  167. package/dist/adapters/watsonx/backend/client.d.ts +1 -12
  168. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  169. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  170. package/dist/adapters/watsonx/backend/embedding.d.cts +3 -14
  171. package/dist/adapters/watsonx/backend/embedding.d.ts +3 -14
  172. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  173. package/dist/adapters/xai/backend/chat.cjs +24 -0
  174. package/dist/adapters/xai/backend/chat.cjs.map +1 -0
  175. package/dist/adapters/xai/backend/chat.d.cts +39 -0
  176. package/dist/adapters/xai/backend/chat.d.ts +39 -0
  177. package/dist/adapters/xai/backend/chat.js +22 -0
  178. package/dist/adapters/xai/backend/chat.js.map +1 -0
  179. package/dist/adapters/xai/backend/client.cjs +26 -0
  180. package/dist/adapters/xai/backend/client.cjs.map +1 -0
  181. package/dist/adapters/xai/backend/client.d.cts +17 -0
  182. package/dist/adapters/xai/backend/client.d.ts +17 -0
  183. package/dist/adapters/xai/backend/client.js +24 -0
  184. package/dist/adapters/xai/backend/client.js.map +1 -0
  185. package/dist/{agent-CgsoqVL5.d.ts → agent-CUzHyTQd.d.ts} +3 -3
  186. package/dist/{agent-Ca5UE2P1.d.cts → agent-Cqh2zuKJ.d.cts} +3 -3
  187. package/dist/agents/base.cjs.map +1 -1
  188. package/dist/agents/base.d.cts +2 -2
  189. package/dist/agents/base.d.ts +2 -2
  190. package/dist/agents/base.js.map +1 -1
  191. package/dist/agents/experimental/replan/agent.cjs +8 -8
  192. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  193. package/dist/agents/experimental/replan/agent.d.cts +4 -15
  194. package/dist/agents/experimental/replan/agent.d.ts +4 -15
  195. package/dist/agents/experimental/replan/agent.js +8 -8
  196. package/dist/agents/experimental/replan/agent.js.map +1 -1
  197. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  198. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  199. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  200. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  201. package/dist/agents/experimental/streamlit/agent.cjs +9 -9
  202. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  203. package/dist/agents/experimental/streamlit/agent.d.cts +4 -15
  204. package/dist/agents/experimental/streamlit/agent.d.ts +4 -15
  205. package/dist/agents/experimental/streamlit/agent.js +9 -9
  206. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  207. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  208. package/dist/agents/experimental/streamlit/prompts.d.cts +1 -12
  209. package/dist/agents/experimental/streamlit/prompts.d.ts +1 -12
  210. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  211. package/dist/agents/react/agent.cjs +8 -8
  212. package/dist/agents/react/agent.cjs.map +1 -1
  213. package/dist/agents/react/agent.d.cts +4 -4
  214. package/dist/agents/react/agent.d.ts +4 -4
  215. package/dist/agents/react/agent.js +8 -8
  216. package/dist/agents/react/agent.js.map +1 -1
  217. package/dist/agents/react/prompts.cjs.map +1 -1
  218. package/dist/agents/react/prompts.d.cts +2 -13
  219. package/dist/agents/react/prompts.d.ts +2 -13
  220. package/dist/agents/react/prompts.js.map +1 -1
  221. package/dist/agents/react/runners/base.cjs +2 -2
  222. package/dist/agents/react/runners/base.cjs.map +1 -1
  223. package/dist/agents/react/runners/base.d.cts +4 -4
  224. package/dist/agents/react/runners/base.d.ts +4 -4
  225. package/dist/agents/react/runners/base.js +2 -2
  226. package/dist/agents/react/runners/base.js.map +1 -1
  227. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  228. package/dist/agents/react/runners/deep-think/prompts.d.cts +2 -13
  229. package/dist/agents/react/runners/deep-think/prompts.d.ts +2 -13
  230. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  231. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  232. package/dist/agents/react/runners/deep-think/runner.d.cts +5 -5
  233. package/dist/agents/react/runners/deep-think/runner.d.ts +5 -5
  234. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  235. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  236. package/dist/agents/react/runners/default/runner.d.cts +5 -5
  237. package/dist/agents/react/runners/default/runner.d.ts +5 -5
  238. package/dist/agents/react/runners/default/runner.js.map +1 -1
  239. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  240. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  241. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  242. package/dist/agents/react/runners/granite/prompts.d.cts +2 -13
  243. package/dist/agents/react/runners/granite/prompts.d.ts +2 -13
  244. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  245. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  246. package/dist/agents/react/runners/granite/runner.d.cts +5 -5
  247. package/dist/agents/react/runners/granite/runner.d.ts +5 -5
  248. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  249. package/dist/agents/react/types.d.cts +3 -14
  250. package/dist/agents/react/types.d.ts +3 -14
  251. package/dist/agents/toolCalling/agent.cjs +8 -8
  252. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  253. package/dist/agents/toolCalling/agent.d.cts +4 -15
  254. package/dist/agents/toolCalling/agent.d.ts +4 -15
  255. package/dist/agents/toolCalling/agent.js +8 -8
  256. package/dist/agents/toolCalling/agent.js.map +1 -1
  257. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  258. package/dist/agents/toolCalling/prompts.d.cts +1 -12
  259. package/dist/agents/toolCalling/prompts.d.ts +1 -12
  260. package/dist/agents/toolCalling/prompts.js.map +1 -1
  261. package/dist/agents/toolCalling/types.d.cts +2 -13
  262. package/dist/agents/toolCalling/types.d.ts +2 -13
  263. package/dist/agents/types.d.cts +2 -2
  264. package/dist/agents/types.d.ts +2 -2
  265. package/dist/backend/backend.cjs.map +1 -1
  266. package/dist/backend/backend.d.cts +3 -14
  267. package/dist/backend/backend.d.ts +3 -14
  268. package/dist/backend/backend.js.map +1 -1
  269. package/dist/backend/chat.cjs.map +1 -1
  270. package/dist/backend/chat.d.cts +2 -2
  271. package/dist/backend/chat.d.ts +2 -2
  272. package/dist/backend/chat.js.map +1 -1
  273. package/dist/backend/client.cjs.map +1 -1
  274. package/dist/backend/client.d.cts +1 -12
  275. package/dist/backend/client.d.ts +1 -12
  276. package/dist/backend/client.js.map +1 -1
  277. package/dist/backend/constants.cjs +8 -0
  278. package/dist/backend/constants.cjs.map +1 -1
  279. package/dist/backend/constants.d.cts +6 -12
  280. package/dist/backend/constants.d.ts +6 -12
  281. package/dist/backend/constants.js +8 -0
  282. package/dist/backend/constants.js.map +1 -1
  283. package/dist/backend/core.d.cts +2 -2
  284. package/dist/backend/core.d.ts +2 -2
  285. package/dist/backend/embedding.cjs.map +1 -1
  286. package/dist/backend/embedding.d.cts +2 -2
  287. package/dist/backend/embedding.d.ts +2 -2
  288. package/dist/backend/embedding.js.map +1 -1
  289. package/dist/backend/errors.cjs.map +1 -1
  290. package/dist/backend/errors.d.cts +1 -12
  291. package/dist/backend/errors.d.ts +1 -12
  292. package/dist/backend/errors.js.map +1 -1
  293. package/dist/backend/message.cjs.map +1 -1
  294. package/dist/backend/message.d.cts +1 -12
  295. package/dist/backend/message.d.ts +1 -12
  296. package/dist/backend/message.js.map +1 -1
  297. package/dist/backend/utils.cjs.map +1 -1
  298. package/dist/backend/utils.d.cts +2 -2
  299. package/dist/backend/utils.d.ts +2 -2
  300. package/dist/backend/utils.js.map +1 -1
  301. package/dist/{base-szR2Izbt.d.cts → base-Bc-Xv1jG.d.cts} +2 -13
  302. package/dist/{base-BOCDDBvG.d.ts → base-BrMAtrc_.d.ts} +2 -13
  303. package/dist/cache/base.cjs.map +1 -1
  304. package/dist/cache/base.d.cts +1 -12
  305. package/dist/cache/base.d.ts +1 -12
  306. package/dist/cache/base.js.map +1 -1
  307. package/dist/cache/decoratorCache.cjs +2 -2
  308. package/dist/cache/decoratorCache.cjs.map +1 -1
  309. package/dist/cache/decoratorCache.d.cts +1 -12
  310. package/dist/cache/decoratorCache.d.ts +1 -12
  311. package/dist/cache/decoratorCache.js +2 -2
  312. package/dist/cache/decoratorCache.js.map +1 -1
  313. package/dist/cache/fileCache.cjs.map +1 -1
  314. package/dist/cache/fileCache.d.cts +1 -12
  315. package/dist/cache/fileCache.d.ts +1 -12
  316. package/dist/cache/fileCache.js.map +1 -1
  317. package/dist/cache/nullCache.cjs.map +1 -1
  318. package/dist/cache/nullCache.d.cts +1 -12
  319. package/dist/cache/nullCache.d.ts +1 -12
  320. package/dist/cache/nullCache.js.map +1 -1
  321. package/dist/cache/slidingCache.cjs.map +1 -1
  322. package/dist/cache/slidingCache.d.cts +1 -12
  323. package/dist/cache/slidingCache.d.ts +1 -12
  324. package/dist/cache/slidingCache.js.map +1 -1
  325. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  326. package/dist/cache/unconstrainedCache.d.cts +1 -12
  327. package/dist/cache/unconstrainedCache.d.ts +1 -12
  328. package/dist/cache/unconstrainedCache.js.map +1 -1
  329. package/dist/{chat-DvMzAHj6.d.cts → chat-CR4yfOR9.d.cts} +3 -14
  330. package/dist/{chat-BdN8hGWn.d.ts → chat-W9j8T6UU.d.ts} +3 -14
  331. package/dist/context.cjs +3 -4
  332. package/dist/context.cjs.map +1 -1
  333. package/dist/context.d.cts +2 -13
  334. package/dist/context.d.ts +2 -13
  335. package/dist/context.js +3 -4
  336. package/dist/context.js.map +1 -1
  337. package/dist/emitter/emitter.cjs.map +1 -1
  338. package/dist/emitter/emitter.d.cts +1 -1
  339. package/dist/emitter/emitter.d.ts +1 -1
  340. package/dist/emitter/emitter.js.map +1 -1
  341. package/dist/emitter/errors.cjs.map +1 -1
  342. package/dist/emitter/errors.d.cts +1 -12
  343. package/dist/emitter/errors.d.ts +1 -12
  344. package/dist/emitter/errors.js.map +1 -1
  345. package/dist/emitter/types.d.cts +1 -1
  346. package/dist/emitter/types.d.ts +1 -1
  347. package/dist/emitter/utils.cjs.map +1 -1
  348. package/dist/emitter/utils.d.cts +1 -12
  349. package/dist/emitter/utils.d.ts +1 -12
  350. package/dist/emitter/utils.js.map +1 -1
  351. package/dist/{emitter-C3dO-s2P.d.ts → emitter-C9nwGLt6.d.ts} +3 -25
  352. package/dist/{emitter-D5Mu0EEH.d.cts → emitter-DWEsd-ud.d.cts} +3 -25
  353. package/dist/errors.cjs.map +1 -1
  354. package/dist/errors.d.cts +1 -12
  355. package/dist/errors.d.ts +1 -12
  356. package/dist/errors.js.map +1 -1
  357. package/dist/index.d.cts +4 -4
  358. package/dist/index.d.ts +4 -4
  359. package/dist/internals/env.cjs.map +1 -1
  360. package/dist/internals/env.d.cts +1 -12
  361. package/dist/internals/env.d.ts +1 -12
  362. package/dist/internals/env.js.map +1 -1
  363. package/dist/internals/fetcher.cjs +8 -8
  364. package/dist/internals/fetcher.cjs.map +1 -1
  365. package/dist/internals/fetcher.d.cts +2 -13
  366. package/dist/internals/fetcher.d.ts +2 -13
  367. package/dist/internals/fetcher.js +8 -8
  368. package/dist/internals/fetcher.js.map +1 -1
  369. package/dist/internals/helpers/array.cjs.map +1 -1
  370. package/dist/internals/helpers/array.d.cts +1 -12
  371. package/dist/internals/helpers/array.d.ts +1 -12
  372. package/dist/internals/helpers/array.js.map +1 -1
  373. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  374. package/dist/internals/helpers/cancellation.d.cts +1 -12
  375. package/dist/internals/helpers/cancellation.d.ts +1 -12
  376. package/dist/internals/helpers/cancellation.js.map +1 -1
  377. package/dist/internals/helpers/counter.cjs.map +1 -1
  378. package/dist/internals/helpers/counter.d.cts +1 -12
  379. package/dist/internals/helpers/counter.d.ts +1 -12
  380. package/dist/internals/helpers/counter.js.map +1 -1
  381. package/dist/internals/helpers/general.cjs.map +1 -1
  382. package/dist/internals/helpers/general.d.cts +1 -12
  383. package/dist/internals/helpers/general.d.ts +1 -12
  384. package/dist/internals/helpers/general.js.map +1 -1
  385. package/dist/internals/helpers/guards.cjs.map +1 -1
  386. package/dist/internals/helpers/guards.d.cts +1 -12
  387. package/dist/internals/helpers/guards.d.ts +1 -12
  388. package/dist/internals/helpers/guards.js.map +1 -1
  389. package/dist/internals/helpers/hash.cjs.map +1 -1
  390. package/dist/internals/helpers/hash.d.cts +1 -12
  391. package/dist/internals/helpers/hash.d.ts +1 -12
  392. package/dist/internals/helpers/hash.js.map +1 -1
  393. package/dist/internals/helpers/map.cjs.map +1 -1
  394. package/dist/internals/helpers/map.d.cts +1 -12
  395. package/dist/internals/helpers/map.d.ts +1 -12
  396. package/dist/internals/helpers/map.js.map +1 -1
  397. package/dist/internals/helpers/math.cjs.map +1 -1
  398. package/dist/internals/helpers/math.d.cts +1 -12
  399. package/dist/internals/helpers/math.d.ts +1 -12
  400. package/dist/internals/helpers/math.js.map +1 -1
  401. package/dist/internals/helpers/number.cjs.map +1 -1
  402. package/dist/internals/helpers/number.d.cts +1 -12
  403. package/dist/internals/helpers/number.d.ts +1 -12
  404. package/dist/internals/helpers/number.js.map +1 -1
  405. package/dist/internals/helpers/object.cjs.map +1 -1
  406. package/dist/internals/helpers/object.d.cts +1 -12
  407. package/dist/internals/helpers/object.d.ts +1 -12
  408. package/dist/internals/helpers/object.js.map +1 -1
  409. package/dist/internals/helpers/paginate.cjs.map +1 -1
  410. package/dist/internals/helpers/paginate.d.cts +1 -12
  411. package/dist/internals/helpers/paginate.d.ts +1 -12
  412. package/dist/internals/helpers/paginate.js.map +1 -1
  413. package/dist/internals/helpers/promise.cjs +1 -3
  414. package/dist/internals/helpers/promise.cjs.map +1 -1
  415. package/dist/internals/helpers/promise.d.cts +1 -12
  416. package/dist/internals/helpers/promise.d.ts +1 -12
  417. package/dist/internals/helpers/promise.js +1 -3
  418. package/dist/internals/helpers/promise.js.map +1 -1
  419. package/dist/internals/helpers/prototype.cjs.map +1 -1
  420. package/dist/internals/helpers/prototype.d.cts +1 -12
  421. package/dist/internals/helpers/prototype.d.ts +1 -12
  422. package/dist/internals/helpers/prototype.js.map +1 -1
  423. package/dist/internals/helpers/retry.cjs.map +1 -1
  424. package/dist/internals/helpers/retry.d.cts +1 -12
  425. package/dist/internals/helpers/retry.d.ts +1 -12
  426. package/dist/internals/helpers/retry.js.map +1 -1
  427. package/dist/internals/helpers/retryable.cjs.map +1 -1
  428. package/dist/internals/helpers/retryable.d.cts +1 -12
  429. package/dist/internals/helpers/retryable.d.ts +1 -12
  430. package/dist/internals/helpers/retryable.js.map +1 -1
  431. package/dist/internals/helpers/schema.cjs.map +1 -1
  432. package/dist/internals/helpers/schema.d.cts +1 -12
  433. package/dist/internals/helpers/schema.d.ts +1 -12
  434. package/dist/internals/helpers/schema.js.map +1 -1
  435. package/dist/internals/helpers/stream.cjs.map +1 -1
  436. package/dist/internals/helpers/stream.d.cts +1 -12
  437. package/dist/internals/helpers/stream.d.ts +1 -12
  438. package/dist/internals/helpers/stream.js.map +1 -1
  439. package/dist/internals/helpers/string.cjs.map +1 -1
  440. package/dist/internals/helpers/string.d.cts +1 -12
  441. package/dist/internals/helpers/string.d.ts +1 -12
  442. package/dist/internals/helpers/string.js.map +1 -1
  443. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  444. package/dist/internals/helpers/weakRef.d.cts +1 -12
  445. package/dist/internals/helpers/weakRef.d.ts +1 -12
  446. package/dist/internals/helpers/weakRef.js.map +1 -1
  447. package/dist/internals/serializable.cjs.map +1 -1
  448. package/dist/internals/serializable.d.cts +1 -12
  449. package/dist/internals/serializable.d.ts +1 -12
  450. package/dist/internals/serializable.js.map +1 -1
  451. package/dist/internals/types.cjs.map +1 -1
  452. package/dist/internals/types.d.cts +1 -12
  453. package/dist/internals/types.d.ts +1 -12
  454. package/dist/internals/types.js.map +1 -1
  455. package/dist/logger/logger.cjs.map +1 -1
  456. package/dist/logger/logger.js.map +1 -1
  457. package/dist/logger/pretty.cjs.map +1 -1
  458. package/dist/logger/pretty.js.map +1 -1
  459. package/dist/memory/base.cjs.map +1 -1
  460. package/dist/memory/base.js.map +1 -1
  461. package/dist/memory/slidingMemory.cjs.map +1 -1
  462. package/dist/memory/slidingMemory.js.map +1 -1
  463. package/dist/memory/summarizeMemory.cjs.map +1 -1
  464. package/dist/memory/summarizeMemory.d.cts +2 -2
  465. package/dist/memory/summarizeMemory.d.ts +2 -2
  466. package/dist/memory/summarizeMemory.js.map +1 -1
  467. package/dist/memory/tokenMemory.cjs.map +1 -1
  468. package/dist/memory/tokenMemory.js.map +1 -1
  469. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  470. package/dist/memory/unconstrainedMemory.js.map +1 -1
  471. package/dist/parsers/errors.cjs.map +1 -1
  472. package/dist/parsers/errors.d.cts +1 -12
  473. package/dist/parsers/errors.d.ts +1 -12
  474. package/dist/parsers/errors.js.map +1 -1
  475. package/dist/parsers/field.cjs +2 -2
  476. package/dist/parsers/field.cjs.map +1 -1
  477. package/dist/parsers/field.js +2 -2
  478. package/dist/parsers/field.js.map +1 -1
  479. package/dist/parsers/linePrefix.cjs +15 -15
  480. package/dist/parsers/linePrefix.cjs.map +1 -1
  481. package/dist/parsers/linePrefix.d.cts +2 -13
  482. package/dist/parsers/linePrefix.d.ts +2 -13
  483. package/dist/parsers/linePrefix.js +15 -15
  484. package/dist/parsers/linePrefix.js.map +1 -1
  485. package/dist/serializer/error.cjs.map +1 -1
  486. package/dist/serializer/error.d.cts +1 -12
  487. package/dist/serializer/error.d.ts +1 -12
  488. package/dist/serializer/error.js.map +1 -1
  489. package/dist/serializer/serializer.cjs.map +1 -1
  490. package/dist/serializer/serializer.d.cts +1 -1
  491. package/dist/serializer/serializer.d.ts +1 -1
  492. package/dist/serializer/serializer.js.map +1 -1
  493. package/dist/serializer/utils.cjs +1 -2
  494. package/dist/serializer/utils.cjs.map +1 -1
  495. package/dist/serializer/utils.d.cts +1 -1
  496. package/dist/serializer/utils.d.ts +1 -1
  497. package/dist/serializer/utils.js +1 -2
  498. package/dist/serializer/utils.js.map +1 -1
  499. package/dist/{serializer-Dz4AIM2O.d.cts → serializer-BKn50Vnx.d.cts} +2 -24
  500. package/dist/{serializer-BswFRdT8.d.ts → serializer-CQxucveV.d.ts} +2 -24
  501. package/dist/serve/server.cjs +1 -2
  502. package/dist/serve/server.cjs.map +1 -1
  503. package/dist/serve/server.d.cts +1 -12
  504. package/dist/serve/server.d.ts +1 -12
  505. package/dist/serve/server.js +1 -2
  506. package/dist/serve/server.js.map +1 -1
  507. package/dist/template.cjs.map +1 -1
  508. package/dist/template.d.cts +1 -12
  509. package/dist/template.d.ts +1 -12
  510. package/dist/template.js.map +1 -1
  511. package/dist/tools/arxiv.cjs.map +1 -1
  512. package/dist/tools/arxiv.d.cts +2 -13
  513. package/dist/tools/arxiv.d.ts +2 -13
  514. package/dist/tools/arxiv.js.map +1 -1
  515. package/dist/tools/base.cjs.map +1 -1
  516. package/dist/tools/base.d.cts +1 -1
  517. package/dist/tools/base.d.ts +1 -1
  518. package/dist/tools/base.js.map +1 -1
  519. package/dist/tools/calculator.cjs.map +1 -1
  520. package/dist/tools/calculator.d.cts +2 -13
  521. package/dist/tools/calculator.d.ts +2 -13
  522. package/dist/tools/calculator.js.map +1 -1
  523. package/dist/tools/custom.cjs.map +1 -1
  524. package/dist/tools/custom.d.cts +3 -14
  525. package/dist/tools/custom.d.ts +3 -14
  526. package/dist/tools/custom.js.map +1 -1
  527. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  528. package/dist/tools/database/elasticsearch.d.cts +2 -13
  529. package/dist/tools/database/elasticsearch.d.ts +2 -13
  530. package/dist/tools/database/elasticsearch.js.map +1 -1
  531. package/dist/tools/database/metadata.cjs.map +1 -1
  532. package/dist/tools/database/metadata.d.cts +1 -12
  533. package/dist/tools/database/metadata.d.ts +1 -12
  534. package/dist/tools/database/metadata.js.map +1 -1
  535. package/dist/tools/database/milvus.cjs.map +1 -1
  536. package/dist/tools/database/milvus.d.cts +2 -13
  537. package/dist/tools/database/milvus.d.ts +2 -13
  538. package/dist/tools/database/milvus.js.map +1 -1
  539. package/dist/tools/database/qdrant.cjs.map +1 -1
  540. package/dist/tools/database/qdrant.d.cts +2 -13
  541. package/dist/tools/database/qdrant.d.ts +2 -13
  542. package/dist/tools/database/qdrant.js.map +1 -1
  543. package/dist/tools/database/sql.cjs.map +1 -1
  544. package/dist/tools/database/sql.d.cts +2 -13
  545. package/dist/tools/database/sql.d.ts +2 -13
  546. package/dist/tools/database/sql.js.map +1 -1
  547. package/dist/tools/llm.cjs +3 -3
  548. package/dist/tools/llm.cjs.map +1 -1
  549. package/dist/tools/llm.d.cts +3 -14
  550. package/dist/tools/llm.d.ts +3 -14
  551. package/dist/tools/llm.js +3 -3
  552. package/dist/tools/llm.js.map +1 -1
  553. package/dist/tools/mcp.cjs +2 -1
  554. package/dist/tools/mcp.cjs.map +1 -1
  555. package/dist/tools/mcp.d.cts +2 -13
  556. package/dist/tools/mcp.d.ts +2 -13
  557. package/dist/tools/mcp.js +2 -1
  558. package/dist/tools/mcp.js.map +1 -1
  559. package/dist/tools/openapi.cjs.map +1 -1
  560. package/dist/tools/openapi.d.cts +1 -1
  561. package/dist/tools/openapi.d.ts +1 -1
  562. package/dist/tools/openapi.js.map +1 -1
  563. package/dist/tools/python/output.cjs.map +1 -1
  564. package/dist/tools/python/output.d.cts +2 -13
  565. package/dist/tools/python/output.d.ts +2 -13
  566. package/dist/tools/python/output.js.map +1 -1
  567. package/dist/tools/python/python.cjs.map +1 -1
  568. package/dist/tools/python/python.d.cts +2 -2
  569. package/dist/tools/python/python.d.ts +2 -2
  570. package/dist/tools/python/python.js.map +1 -1
  571. package/dist/tools/python/storage.cjs.map +1 -1
  572. package/dist/tools/python/storage.d.cts +1 -12
  573. package/dist/tools/python/storage.d.ts +1 -12
  574. package/dist/tools/python/storage.js.map +1 -1
  575. package/dist/tools/search/base.cjs.map +1 -1
  576. package/dist/tools/search/base.d.cts +2 -13
  577. package/dist/tools/search/base.d.ts +2 -13
  578. package/dist/tools/search/base.js.map +1 -1
  579. package/dist/tools/search/duckDuckGoSearch.cjs +7 -1
  580. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  581. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -13
  582. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -13
  583. package/dist/tools/search/duckDuckGoSearch.js +7 -1
  584. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  585. package/dist/tools/search/googleSearch.cjs.map +1 -1
  586. package/dist/tools/search/googleSearch.d.cts +1 -1
  587. package/dist/tools/search/googleSearch.d.ts +1 -1
  588. package/dist/tools/search/googleSearch.js.map +1 -1
  589. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  590. package/dist/tools/search/searXNGSearch.d.cts +2 -13
  591. package/dist/tools/search/searXNGSearch.d.ts +2 -13
  592. package/dist/tools/search/searXNGSearch.js.map +1 -1
  593. package/dist/tools/search/wikipedia.cjs +11 -11
  594. package/dist/tools/search/wikipedia.cjs.map +1 -1
  595. package/dist/tools/search/wikipedia.d.cts +1 -1
  596. package/dist/tools/search/wikipedia.d.ts +1 -1
  597. package/dist/tools/search/wikipedia.js +11 -11
  598. package/dist/tools/search/wikipedia.js.map +1 -1
  599. package/dist/tools/similarity.cjs.map +1 -1
  600. package/dist/tools/similarity.d.cts +2 -13
  601. package/dist/tools/similarity.d.ts +2 -13
  602. package/dist/tools/similarity.js.map +1 -1
  603. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  604. package/dist/tools/weather/openMeteo.d.cts +2 -13
  605. package/dist/tools/weather/openMeteo.d.ts +2 -13
  606. package/dist/tools/weather/openMeteo.js.map +1 -1
  607. package/dist/tools/web/webCrawler.cjs.map +1 -1
  608. package/dist/tools/web/webCrawler.d.cts +1 -1
  609. package/dist/tools/web/webCrawler.d.ts +1 -1
  610. package/dist/tools/web/webCrawler.js.map +1 -1
  611. package/dist/version.cjs +1 -1
  612. package/dist/version.cjs.map +1 -1
  613. package/dist/version.d.cts +1 -12
  614. package/dist/version.d.ts +1 -12
  615. package/dist/version.js +1 -1
  616. package/dist/version.js.map +1 -1
  617. package/dist/workflows/agent.cjs.map +1 -1
  618. package/dist/workflows/agent.d.cts +3 -3
  619. package/dist/workflows/agent.d.ts +3 -3
  620. package/dist/workflows/agent.js.map +1 -1
  621. package/dist/workflows/workflow.cjs +3 -3
  622. package/dist/workflows/workflow.cjs.map +1 -1
  623. package/dist/workflows/workflow.d.cts +1 -1
  624. package/dist/workflows/workflow.d.ts +1 -1
  625. package/dist/workflows/workflow.js +3 -3
  626. package/dist/workflows/workflow.js.map +1 -1
  627. package/package.json +37 -73
@@ -1 +1 @@
1
- {"version":3,"sources":["arxiv.ts"],"names":["SortType","RELEVANCE","LAST_UPDATED_DATE","SUBMITTED_DATE","SortOrder","ASCENDING","DESCENDING","FilterType","ALL","TITLE","AUTHOR","ABSTRACT","COMMENT","JOURNAL_REFERENCE","SUBJECT_CATEGORY","REPORT_NUMBER","FilterTypeMapping","all","title","author","abstract","comment","journal_reference","subject_category","report_number","Separators","AND","OR","ANDNOT","ArXivToolOutput","JSONToolOutput","isEmpty","result","totalResults","entries","length","extractId","value","replace","ArXivTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","entrySchema","z","object","field","nativeEnum","default","string","min","ids","array","optional","search_query","include","nonempty","describe","exclude","start","number","int","maxResults","max","register","validateInput","schema","rawInput","ToolInputValidationError","_prepareParams","input","createURLParams","max_results","id_list","undefined","map","tag","join","filter","Boolean","sortBy","sortOrder","_run","_options","run","params","url","decodeURIComponent","toString","response","fetch","signal","data","_parseResponse","parser","XMLParser","allowBooleanAttributes","alwaysCreateTextNode","attributeNamePrefix","attributesGroupName","cdataPropName","ignoreAttributes","numberParseOptions","hex","leadingZeros","parseAttributeValue","parseTagValue","preserveOrder","removeNSPrefix","textNodeName","trimValues","ignoreDeclaration","text","parsedData","parse","ok","ToolError","Error","JSON","stringify","getProp","castArray","Math","startIndex","itemsPerPage","entry","pickBy","id","summary","published","updated","authors","affiliation","doi","journalReference","journal_ref","primaryCategory","primary_category","categories","category","links","link","isDefined"],"mappings":"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","file":"arxiv.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolError,\n ToolInput,\n ToolInputValidationError,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { isDefined, isEmpty, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ntype ToolOptions = BaseToolOptions;\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SortType = {\n RELEVANCE: \"relevance\",\n LAST_UPDATED_DATE: \"lastUpdatedDate\",\n SUBMITTED_DATE: \"submittedDate\",\n} as const;\n\nexport const SortOrder = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\",\n} as const;\n\nexport const FilterType = {\n ALL: \"all\",\n TITLE: \"title\",\n AUTHOR: \"author\",\n ABSTRACT: \"abstract\",\n COMMENT: \"comment\",\n JOURNAL_REFERENCE: \"journal_reference\",\n SUBJECT_CATEGORY: \"subject_category\",\n REPORT_NUMBER: \"report_number\",\n} as const;\n\nconst FilterTypeMapping: Record<ValueOf<typeof FilterType>, string> = {\n all: \"all\",\n title: \"ti\",\n author: \"au\",\n abstract: \"abs\",\n comment: \"co\",\n journal_reference: \"jr\",\n subject_category: \"cat\",\n report_number: \"rn\",\n};\n\nexport const Separators = {\n AND: \"+AND+\",\n OR: \"+OR+\",\n ANDNOT: \"+ANDNOT+\",\n} as const;\n\nexport interface ArXivResponse {\n totalResults: number;\n startIndex: number;\n itemsPerPage: number;\n entries: {\n id: string;\n title: string;\n summary: string;\n published: string;\n updated: string;\n authors: { name: string; affiliation: string[] }[];\n doi: string;\n comment: string;\n journalReference: string;\n primaryCategory: string;\n categories: string[];\n links: string[];\n }[];\n}\n\nexport class ArXivToolOutput extends JSONToolOutput<ArXivResponse> {\n isEmpty(): boolean {\n return !this.result || this.result.totalResults === 0 || this.result.entries.length === 0;\n }\n}\n\nconst extractId = (value: string) =>\n value\n .replace(\"https://arxiv.org/abs/\", \"\")\n .replace(\"https://arxiv.org/pdf/\", \"\")\n .replace(/v\\d$/, \"\");\n\nexport class ArXivTool extends Tool<ArXivToolOutput, ToolOptions, ToolRunOptions> {\n name = \"ArXiv\";\n description = `Retrieves research articles published on arXiv including related metadata.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, ArXivToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"arxiv\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n const entrySchema = z.object({\n field: z.nativeEnum(FilterType).default(FilterType.ALL),\n value: z.string().min(1),\n });\n\n return z\n .object({\n ids: z.array(z.string().min(1)).optional(),\n search_query: z\n .object({\n include: z.array(entrySchema).nonempty().describe(\"Filters to include results.\"),\n exclude: z.array(entrySchema).optional().describe(\"Filters to exclude results.\"),\n })\n .optional(),\n start: z.number().int().min(0).default(0),\n maxResults: z.number().int().min(1).max(100).default(5),\n })\n .describe(\"Sorting by date is not supported.\");\n }\n\n static {\n this.register();\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n super.validateInput(schema, rawInput);\n if (isEmpty(rawInput.ids ?? []) && !rawInput.search_query) {\n throw new ToolInputValidationError(\n `The 'search_query' property must be non-empty if the 'ids' property is not provided!`,\n );\n }\n }\n\n protected _prepareParams(input: ToolInput<typeof this>) {\n return createURLParams({\n start: input.start,\n max_results: input.maxResults,\n id_list: isEmpty(input.ids ?? []) ? undefined : input.ids?.map(extractId),\n search_query:\n input.search_query &&\n [\n input.search_query.include\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.AND),\n (input.search_query.exclude ?? [])\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.ANDNOT),\n ]\n .filter(Boolean)\n .join(Separators.ANDNOT),\n sortBy: SortType.RELEVANCE,\n sortOrder: SortOrder.DESCENDING,\n });\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = this._prepareParams(input);\n const url = `https://export.arxiv.org/api/query?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n const data = await this._parseResponse(response);\n return new ArXivToolOutput(data);\n }\n\n protected async _parseResponse(response: Response): Promise<ArXivResponse> {\n const parser = new XMLParser({\n allowBooleanAttributes: true,\n alwaysCreateTextNode: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n cdataPropName: \"#cdata\",\n ignoreAttributes: true,\n numberParseOptions: { hex: false, leadingZeros: true },\n parseAttributeValue: false,\n parseTagValue: true,\n preserveOrder: false,\n removeNSPrefix: true,\n textNodeName: \"#text\",\n trimValues: true,\n ignoreDeclaration: true,\n });\n\n const text = await response.text();\n const parsedData = parser.parse(text);\n\n if (!response.ok) {\n throw new ToolError(\"Request to ArXiv API has failed!\", [\n new Error(JSON.stringify(getProp(parsedData, [\"feed\", \"entry\"], parsedData), null, 2)),\n ]);\n }\n\n let entries: Record<string, any>[] = getProp(parsedData, [\"feed\", \"entry\"], []);\n entries = castArray(entries);\n\n return {\n totalResults: Math.max(getProp(parsedData, [\"feed\", \"totalResults\"], 0), entries.length),\n startIndex: getProp(parsedData, [\"feed\", \"startIndex\"], 0),\n itemsPerPage: getProp(parsedData, [\"feed\", \"itemsPerPage\"], 0),\n entries: entries.map((entry) =>\n pickBy(\n {\n id: extractId(entry.id),\n url: entry.id,\n title: entry.title,\n summary: entry.summary,\n published: entry.published,\n updated: entry.updated,\n authors: castArray(entry.author)\n .filter(Boolean)\n .map((author: any) => ({\n name: author.name,\n affiliation: castArray(author.affiliation ?? []),\n })),\n doi: entry.doi,\n comment: entry.comment,\n journalReference: entry.journal_ref,\n primaryCategory: entry.primary_category,\n categories: castArray(entry.category).filter(Boolean),\n links: castArray(entry.link).filter(Boolean),\n },\n isDefined,\n ),\n ),\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/arxiv.ts"],"names":["SortType","RELEVANCE","LAST_UPDATED_DATE","SUBMITTED_DATE","SortOrder","ASCENDING","DESCENDING","FilterType","ALL","TITLE","AUTHOR","ABSTRACT","COMMENT","JOURNAL_REFERENCE","SUBJECT_CATEGORY","REPORT_NUMBER","FilterTypeMapping","all","title","author","abstract","comment","journal_reference","subject_category","report_number","Separators","AND","OR","ANDNOT","ArXivToolOutput","JSONToolOutput","isEmpty","result","totalResults","entries","length","extractId","value","replace","ArXivTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","entrySchema","z","object","field","nativeEnum","default","string","min","ids","array","optional","search_query","include","nonempty","describe","exclude","start","number","int","maxResults","max","register","validateInput","schema","rawInput","ToolInputValidationError","_prepareParams","input","createURLParams","max_results","id_list","undefined","map","tag","join","filter","Boolean","sortBy","sortOrder","_run","_options","run","params","url","decodeURIComponent","toString","response","fetch","signal","data","_parseResponse","parser","XMLParser","allowBooleanAttributes","alwaysCreateTextNode","attributeNamePrefix","attributesGroupName","cdataPropName","ignoreAttributes","numberParseOptions","hex","leadingZeros","parseAttributeValue","parseTagValue","preserveOrder","removeNSPrefix","textNodeName","trimValues","ignoreDeclaration","text","parsedData","parse","ok","ToolError","Error","JSON","stringify","getProp","castArray","Math","startIndex","itemsPerPage","entry","pickBy","id","summary","published","updated","authors","affiliation","doi","journalReference","journal_ref","primaryCategory","primary_category","categories","category","links","link","isDefined"],"mappings":"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","file":"arxiv.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 ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolError,\n ToolInput,\n ToolInputValidationError,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { isDefined, isEmpty, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ntype ToolOptions = BaseToolOptions;\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SortType = {\n RELEVANCE: \"relevance\",\n LAST_UPDATED_DATE: \"lastUpdatedDate\",\n SUBMITTED_DATE: \"submittedDate\",\n} as const;\n\nexport const SortOrder = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\",\n} as const;\n\nexport const FilterType = {\n ALL: \"all\",\n TITLE: \"title\",\n AUTHOR: \"author\",\n ABSTRACT: \"abstract\",\n COMMENT: \"comment\",\n JOURNAL_REFERENCE: \"journal_reference\",\n SUBJECT_CATEGORY: \"subject_category\",\n REPORT_NUMBER: \"report_number\",\n} as const;\n\nconst FilterTypeMapping: Record<ValueOf<typeof FilterType>, string> = {\n all: \"all\",\n title: \"ti\",\n author: \"au\",\n abstract: \"abs\",\n comment: \"co\",\n journal_reference: \"jr\",\n subject_category: \"cat\",\n report_number: \"rn\",\n};\n\nexport const Separators = {\n AND: \"+AND+\",\n OR: \"+OR+\",\n ANDNOT: \"+ANDNOT+\",\n} as const;\n\nexport interface ArXivResponse {\n totalResults: number;\n startIndex: number;\n itemsPerPage: number;\n entries: {\n id: string;\n title: string;\n summary: string;\n published: string;\n updated: string;\n authors: { name: string; affiliation: string[] }[];\n doi: string;\n comment: string;\n journalReference: string;\n primaryCategory: string;\n categories: string[];\n links: string[];\n }[];\n}\n\nexport class ArXivToolOutput extends JSONToolOutput<ArXivResponse> {\n isEmpty(): boolean {\n return !this.result || this.result.totalResults === 0 || this.result.entries.length === 0;\n }\n}\n\nconst extractId = (value: string) =>\n value\n .replace(\"https://arxiv.org/abs/\", \"\")\n .replace(\"https://arxiv.org/pdf/\", \"\")\n .replace(/v\\d$/, \"\");\n\nexport class ArXivTool extends Tool<ArXivToolOutput, ToolOptions, ToolRunOptions> {\n name = \"ArXiv\";\n description = `Retrieves research articles published on arXiv including related metadata.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, ArXivToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"arxiv\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n const entrySchema = z.object({\n field: z.nativeEnum(FilterType).default(FilterType.ALL),\n value: z.string().min(1),\n });\n\n return z\n .object({\n ids: z.array(z.string().min(1)).optional(),\n search_query: z\n .object({\n include: z.array(entrySchema).nonempty().describe(\"Filters to include results.\"),\n exclude: z.array(entrySchema).optional().describe(\"Filters to exclude results.\"),\n })\n .optional(),\n start: z.number().int().min(0).default(0),\n maxResults: z.number().int().min(1).max(100).default(5),\n })\n .describe(\"Sorting by date is not supported.\");\n }\n\n static {\n this.register();\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n super.validateInput(schema, rawInput);\n if (isEmpty(rawInput.ids ?? []) && !rawInput.search_query) {\n throw new ToolInputValidationError(\n `The 'search_query' property must be non-empty if the 'ids' property is not provided!`,\n );\n }\n }\n\n protected _prepareParams(input: ToolInput<typeof this>) {\n return createURLParams({\n start: input.start,\n max_results: input.maxResults,\n id_list: isEmpty(input.ids ?? []) ? undefined : input.ids?.map(extractId),\n search_query:\n input.search_query &&\n [\n input.search_query.include\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.AND),\n (input.search_query.exclude ?? [])\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.ANDNOT),\n ]\n .filter(Boolean)\n .join(Separators.ANDNOT),\n sortBy: SortType.RELEVANCE,\n sortOrder: SortOrder.DESCENDING,\n });\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = this._prepareParams(input);\n const url = `https://export.arxiv.org/api/query?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n const data = await this._parseResponse(response);\n return new ArXivToolOutput(data);\n }\n\n protected async _parseResponse(response: Response): Promise<ArXivResponse> {\n const parser = new XMLParser({\n allowBooleanAttributes: true,\n alwaysCreateTextNode: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n cdataPropName: \"#cdata\",\n ignoreAttributes: true,\n numberParseOptions: { hex: false, leadingZeros: true },\n parseAttributeValue: false,\n parseTagValue: true,\n preserveOrder: false,\n removeNSPrefix: true,\n textNodeName: \"#text\",\n trimValues: true,\n ignoreDeclaration: true,\n });\n\n const text = await response.text();\n const parsedData = parser.parse(text);\n\n if (!response.ok) {\n throw new ToolError(\"Request to ArXiv API has failed!\", [\n new Error(JSON.stringify(getProp(parsedData, [\"feed\", \"entry\"], parsedData), null, 2)),\n ]);\n }\n\n let entries: Record<string, any>[] = getProp(parsedData, [\"feed\", \"entry\"], []);\n entries = castArray(entries);\n\n return {\n totalResults: Math.max(getProp(parsedData, [\"feed\", \"totalResults\"], 0), entries.length),\n startIndex: getProp(parsedData, [\"feed\", \"startIndex\"], 0),\n itemsPerPage: getProp(parsedData, [\"feed\", \"itemsPerPage\"], 0),\n entries: entries.map((entry) =>\n pickBy(\n {\n id: extractId(entry.id),\n url: entry.id,\n title: entry.title,\n summary: entry.summary,\n published: entry.published,\n updated: entry.updated,\n authors: castArray(entry.author)\n .filter(Boolean)\n .map((author: any) => ({\n name: author.name,\n affiliation: castArray(author.affiliation ?? []),\n })),\n doi: entry.doi,\n comment: entry.comment,\n journalReference: entry.journal_ref,\n primaryCategory: entry.primary_category,\n categories: castArray(entry.category).filter(Boolean),\n links: castArray(entry.link).filter(Boolean),\n },\n isDefined,\n ),\n ),\n };\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","constructor","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcC,SAAA,YAAA,CAAA,UAAA,EAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;;;;;;AAAA,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;;;AA2BM,MAAMA,kBAAkBC,yBAAAA,CAAAA;EAzC/B;;;AAyC+C;AAExC,MAAMC,iCAAiCF,SAAAA,CAAAA;EA3C9C;;;AA4CEG,EAAAA,gBAAAA;EAEAC,WAAYC,CAAAA,OAAAA,EAAiBF,gBAAkC,GAAA,EAAI,EAAA;AACjE,IAAME,KAAAA,CAAAA,OAAAA,EAAS,EAAE,CAAA;AACjB,IAAA,IAAA,CAAKF,gBAAmBA,GAAAA,gBAAAA;AAC1B;AACF;AAkBO,MAAeG,mBAAmBC,6BAAAA,CAAAA;EApEzC;;;EAwEEC,QAAW,GAAA;AACT,IAAA,OAAO,KAAKC,cAAc,EAAA;AAC5B;AACF;AAEO,MAAMC,yBAAyBJ,UAAAA,CAAAA;EA7EtC;;;;;EA8EEF,WACkBO,CAAAA,MAAAA,GAAS,IACTC,GAChB,EAAA;AACA,IAAA,KAAA,EAAK,EAAA,IAAA,CAHWD,MAAAA,GAAAA,MAAAA,EAAAA,KACAC,GAAAA,GAAAA,GAAAA;AAGhB,IAAA,IAAA,CAAKD,SAASA,MAAU,IAAA,EAAA;AAC1B;EAEA;AACE,IAAA,IAAA,CAAKE,QAAQ,EAAA;AACf;EAEAC,OAAU,GAAA;AACR,IAAA,OAAO,CAAC,IAAKH,CAAAA,MAAAA;AACf;EAKAF,cAAyB,GAAA;AACvB,IAAO,OAAA,IAAA,CAAKE,OAAOH,QAAQ,EAAA;AAC7B;EAEAO,cAAiB,GAAA;AACf,IAAO,OAAA;AACLJ,MAAAA,MAAAA,EAAQ,IAAKA,CAAAA,MAAAA;AACbC,MAAAA,GAAAA,EAAK,IAAKA,CAAAA;AACZ,KAAA;AACF;AAEAI,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF;;;IAhBIG,QAAUC,EAAAA,+BAAAA,CAAaC,IAAuB,CAAA,CAACC,IAAS,KAAA;MAACA,IAAKZ,CAAAA;AAAO,KAAA;;;;;;AAkBlE,MAAMa,uBAA0BlB,UAAAA,CAAAA;EAjHvC;;;;;AAkHEF,EAAAA,WAAAA,CACkBO,QACAC,GAChB,EAAA;AACA,IAAA,KAAA,EAAK,EAAA,IAAA,CAHWD,MAAAA,GAAAA,MAAAA,EAAAA,KACAC,GAAAA,GAAAA,GAAAA;AAGlB;EAEA;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;EAEAC,OAAU,GAAA;AACR,IAAA,OAAO,CAAC,IAAKH,CAAAA,MAAAA,IAAUc,YAAEX,CAAAA,OAAAA,CAAQ,KAAKH,MAAM,CAAA;AAC9C;EAEAF,cAAyB,GAAA;AACvB,IAAOiB,OAAAA,IAAAA,CAAKC,SAAU,CAAA,IAAA,CAAKhB,MAAM,CAAA;AACnC;EAEAI,cAAiB,GAAA;AACf,IAAO,OAAA;AACLJ,MAAAA,MAAAA,EAAQ,IAAKA,CAAAA,MAAAA;AACbC,MAAAA,GAAAA,EAAK,IAAKA,CAAAA;AACZ,KAAA;AACF;AAEAI,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF;AAoCO,MAAeW,aAIZrB,6BAAAA,CAAAA;EAvLV;;;AA2LkBsB,EAAAA,KAAAA;AACAC,EAAAA,OAAAA;AAEhB,EAAA,OAAcC,WAAc,GAAA;AAC1BC,IAAAA,MAAAA,EAAQC,OAAO,QAAA;AACjB,GAAA;AAMA7B,EAAAA,WAAAA,CAAAA,GAAe8B,IAA2C,EAAA;AACxD,IAAK,KAAA,EAAA;AAEL,IAAM,MAAA,CAACJ,OAAAA,CAAWI,GAAAA,IAAAA;AAClB,IAAKJ,IAAAA,CAAAA,OAAAA,GAAUA,WAAY,EAAC;AAC5B,IAAA,IAAA,CAAKD,QAAQC,OAASD,EAAAA,KAAAA,GAAQC,OAAQD,CAAAA,KAAAA,GAAQ,IAAIM,uBAAAA,EAAAA;AACpD;AAEUC,EAAAA,OAAAA,CAAQC,GAAUC,OAAc,EAAA;AACxC,IAAA,IAAID,aAAarC,SAAW,EAAA;AAC1BkB,MAAOC,MAAAA,CAAAA,MAAAA,CAAOkB,CAAEC,CAAAA,OAAAA,EAASA,OAAAA,CAAAA;AACzB,MAAOD,OAAAA,CAAAA;KACF,MAAA;AACL,MAAA,OAAO,IAAIrC,SAAAA,CAAU,CAAS,MAAA,EAAA,IAAA,CAAKuC,IAAI,CAA4B,wBAAA,CAAA,EAAA;AAACF,QAAAA;AAAI,OAAA,EAAA;AACtEC,QAAAA;OACF,CAAA;AACF;AACF;EAEAE,GAAIC,CAAAA,KAAAA,EAA2BX,OAAgC,GAAA,EAAI,EAAA;AACjEW,IAAAA,KAAAA,GAAQC,sBAAYD,KAAAA,CAAAA;AACpBX,IAAAA,OAAAA,GAAUY,sBAAYZ,OAAAA,CAAAA;AAEtB,IAAOa,OAAAA,sBAAAA,CAAWC,MAChB,IACA,EAAA;AAAEC,MAAAA,MAAAA,EAAQf,OAASe,EAAAA,MAAAA;MAAQC,MAAQ,EAAA;AAACL,QAAAA,KAAAA;AAAOX,QAAAA;;AAAkB,KAAA,EAC7D,OAAOU,GAAAA,KAAAA;AACL,MAAA,MAAMO,IAAO,GAAA;AAAEN,QAAAA,KAAAA;AAAOX,QAAAA;AAAQ,OAAA;AAC9B,MAAA,IAAIkB,eAAkB,GAAA,KAAA;AAEtB,MAAI,IAAA;AACFP,QAAAA,KAAAA,GAAQvB,OAAOC,MAAO,CAAA;UAAE8B,GAAKR,EAAAA;SAAS,EAAA;UAAEQ,GAAK,EAAA,MAAM,IAAKC,CAAAA,KAAAA,CAAMT,KAAAA;AAAO,SAAA,CAAGQ,CAAAA,GAAAA;AAExE,QAAME,MAAAA,MAAAA,GAAS,MAAM,IAAIC,uBAAU,CAAA;AACjCC,UAAAA,QAAAA,kBAAU,MAAA,CAAA,YAAA;AACRL,YAAkB,eAAA,GAAA,KAAA;AAClB,YAAMR,MAAAA,GAAAA,CAAIc,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;cAAE,GAAGR;aAAK,CAAA;AAC1C,YAAA,OAAO,IAAKlB,CAAAA,KAAAA,CAAM2B,OACd,GAAA,MAAM,KAAKC,UAAWhB,CAAAA,KAAAA,EAAOX,OAASU,EAAAA,GAAAA,IACtC,MAAM,IAAA,CAAKkB,IAAKjB,CAAAA,KAAAA,EAAOX,SAASU,GAAAA,CAAAA;WAL5B,EAAA,UAAA,CAAA;AAOVmB,UAAAA,OAAAA,gCAAgBC,KAAAA,KAAAA;AACdZ,YAAkB,eAAA,GAAA,IAAA;AAClB,YAAMR,MAAAA,GAAAA,CAAIc,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;cAC9BK,KAAO,EAAA,IAAA,CAAKxB,OAAQwB,CAAAA,KAAAA,EAAOb,IAAAA,CAAAA;cAC3B,GAAGA;aACL,CAAA;AACA,YAAI,IAAA,IAAA,CAAKjB,QAAQ+B,WAAaC,EAAAA,IAAAA,CAAK,CAACC,GAAQH,KAAAA,KAAAA,YAAiBG,GAAAA,CAAM,EAAA;AACjE,cAAMH,MAAAA,KAAAA;AACR;WARO,EAAA,SAAA,CAAA;UAUTI,OAAS,kBAAA,MAAA,CAAA,OAAOC,GAAGL,KAAAA,KAAAA;AACjB,YAAMpB,MAAAA,GAAAA,CAAIc,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;cAAE,GAAGR,IAAAA;cAAMa,KAAO,EAAA,IAAA,CAAKxB,OAAQwB,CAAAA,KAAAA,EAAOb,IAAAA;aAAM,CAAA;WADrE,EAAA,SAAA,CAAA;UAGTmB,MAAQ,EAAA;YACN,GAAG,IAAA,CAAKC,mBAAoBrC,CAAAA,OAAAA,EAASsC,YAAAA,CAAAA;AACrCvB,YAAAA,MAAAA,EAAQf,OAASe,EAAAA;AACnB;AACF,SAAA,EAAGwB,GAAG,EAAA;AAEN,QAAM7B,MAAAA,GAAAA,CAAIc,OAAQC,CAAAA,IAAAA,CAAK,SAAW,EAAA;AAAEJ,UAAAA,MAAAA;UAAQ,GAAGJ;SAAK,CAAA;AACpD,QAAOI,OAAAA,MAAAA;AACT,OAAA,CAAA,OAASd,CAAG,EAAA;AACV,QAAA,MAAMuB,KAAQ,GAAA,IAAA,CAAKxB,OAAQC,CAAAA,CAAAA,EAAGU,IAAAA,CAAAA;AAC9B,QAAA,IAAI,CAACC,eAAiB,EAAA;AACpB,UAAMR,MAAAA,GAAAA,CAAIc,OAAQC,CAAAA,IAAAA,CAAK,OAAS,EAAA;AAC9BK,YAAAA,KAAAA;AACA9B,YAAAA,OAAAA;AACAW,YAAAA;WACF,CAAA;AACF;AACA,QAAMmB,MAAAA,KAAAA;OACR,SAAA;AACE,QAAA,MAAMpB,GAAIc,CAAAA,OAAAA,CAAQC,IAAK,CAAA,QAAA,EAAU,IAAA,CAAA;AACnC;KACF,CAAA;AAEJ;EAEA,MAAgBE,UAAAA,CACdhB,KACAX,EAAAA,OAAAA,EACAU,GACkB,EAAA;AAClB,IAAA,MAAM8B,MAAMC,kCAAgB,CAAA;AAC1B9B,MAAAA,KAAAA;AACAX,MAAAA,OAAAA,EAASL,YAAE+C,CAAAA,IAAAA,CAAK1C,OAAY,IAAA,EAAoB,EAAA;AAAC,QAAA,QAAA;AAAU,QAAA;AAAe,OAAA;KAC5E,CAAA;AAEA,IAAA,MAAM2C,UAAa,GAAA,MAAM,IAAK5C,CAAAA,KAAAA,CAAMwC,IAAIC,GAAAA,CAAAA;AACxC,IAAA,IAAIG,eAAeC,MAAW,EAAA;AAC5B,MAAOD,OAAAA,UAAAA;AACT;AAEA,IAAME,MAAAA,IAAAA,GAAO,IAAIC,qBAAAA,EAAAA;AACjB,IAAA,MAAM,IAAK/C,CAAAA,KAAAA,CAAMgD,GAAIP,CAAAA,GAAAA,EAAKK,IAAAA,CAAAA;AAC1B,IAAA,IAAA,CAAKjB,IAAKjB,CAAAA,KAAAA,EAAOX,OAASU,EAAAA,GAAAA,EACvBsC,IAAK,CAAA,CAACC,GAAQJ,KAAAA,IAAAA,CAAKK,QAAQD,GAAAA,CAAAA,CAC3BE,CAAAA,KAAAA,CAAM,OAAOC,GAAAA,KAAAA;AACZ,MAAKP,KAAAA,IAAAA,CAAKQ,OAAOD,GAAAA,CAAAA;AACjB,MAAM,MAAA,IAAA,CAAKrD,KAAMuD,CAAAA,MAAAA,CAAOd,GAAAA,CAAAA;KAC1B,CAAA;AACF,IAAOK,OAAAA,IAAAA;AACT;AAEA,EAAA,MAAaU,UAAa,GAAA;AACxB,IAAM,MAAA,IAAA,CAAKxD,MAAMyD,KAAK,EAAA;AACxB;AAQA,EAAA,MAAMC,kBAAqB,GAAA;AACzB,IAAA,OAAOC,uBAAa,CAAA,MAAM,IAAKC,CAAAA,WAAAA,EAAW,CAAA;AAC5C;AAEA,EAAA,OAAOC,OAAOC,KAA+B,EAAA;AAC3C,IAAA,OAAOA,KAAiB/D,YAAAA,IAAAA,IAAQ,MAAU+D,IAAAA,KAAAA,IAAS,aAAiBA,IAAAA,KAAAA;AACtE;AAEQxB,EAAAA,mBAAAA,CAAAA,GAAuByB,SAA0D,EAAA;AACvF,IAAA,MAAMC,cAAyC,GAAA;MAC7CC,UAAY,EAAA,CAAA;MACZC,MAAQ,EAAA;AACV,KAAA;AAEA,IAAA,OAAOtE,aAAEuE,IACP,CAAA;AAACH,MAAAA,cAAAA;AAAgB,MAAA,IAAA,CAAK/D,OAAQsC,CAAAA,YAAAA;AAAiBwB,MAAAA,GAAAA;AAC/CnE,KAAAA,EAAAA,YAAAA,CAAEwE,OAAOxE,YAAEyE,CAAAA,QAAQ,GACnBzE,YAAE0E,CAAAA,GAAAA,CAAI,CAAC1D,KAAAA,KAAAA;AACL,MAAA,MAAMX,OAA2B,GAAA;QAC/BgE,UAAYrD,EAAAA,KAAAA,CAAMqD,cAAcD,cAAeC,CAAAA,UAAAA;QAC/CC,MAAQtD,EAAAA,KAAAA,CAAMsD,UAAUF,cAAeC,CAAAA;AACzC,OAAA;AACA,MAAA,OAAOrE,YAAE2E,CAAAA,MAAAA,CAAOtE,OAASL,EAAAA,YAAAA,CAAE4E,SAAS,CAAA;KACtC,CAAA,EACA5E,aAAE6E,QAAQ,CAAA;AAEd;AAEA,EAAA,MAAMpD,MAAMT,KAAiF,EAAA;AAC3F,IAAM8D,MAAAA,MAAAA,GAAS,MAAM,IAAA,CAAKd,WAAW,EAAA;AACrC,IAAA,IAAIc,MAAQ,EAAA;AACVC,MAAAA,yBAAAA,CAAeD,MAAQ,EAAA;QACrBjE,OAAS,EAAA;AACPmE,UAAAA,IAAAA,EAAM,KAAKrG,WAAYmC,CAAAA,IAAAA;UACvBmE,IAAM,EAAA,CAAA,oCAAA,EAAuC,IAAKC,CAAAA,aAAAA,CAAcpE,IAAI,CAAA,SAAA,CAAA;AACpEgE,UAAAA,MAAAA;UACAK,OAAS,EAAA,IAAA;UACTC,WAAa,EAAA;AACf;OACF,CAAA;AACF;AAEA,IAAMC,MAAAA,IAAAA,GAAOpE,sBAAYD,KAAAA,CAAAA;AACzB,IAAA,IAAA,CAAKsE,gBAAgBD,IAAAA,CAAAA;AACrB,IAAKH,IAAAA,CAAAA,aAAAA,CAAcJ,QAAQO,IAAAA,CAAAA;AAC3B,IAAOA,OAAAA,IAAAA;AACT;;AAGUC,EAAAA,eAAAA,CAAgBC,QAAyB,EAAA;AAAC;AAE1CL,EAAAA,aAAAA,CACRJ,QACAS,QACqC,EAAA;AACrC,IAAMC,MAAAA,SAAAA,GAAYC,iCAAsBX,MAAAA,CAAAA;AACxC,IAAMY,MAAAA,OAAAA,GAAUF,UAAUD,QAAAA,CAAAA;AAC1B,IAAA,IAAI,CAACG,OAAS,EAAA;AACZ,MAAA,MAAM,IAAIjH,wBAAAA;AACR,QAAA;AACE,UAAA,CAAA,2DAAA,CAAA;AACA,UAAA,CAAA,eAAA,EAAkBwB,IAAKC,CAAAA,SAAAA,CAAU6D,uBAAae,CAAAA,MAAAA,CAAAA,CAAAA,CAAAA,CAAAA,CAAAA;AAC9C,UAAA,CAAA,mBAAA,EAAsB7E,IAAKC,CAAAA,SAAAA,CAAUsF,SAAUG,CAAAA,MAAM,CAAA,CAAA;AACrDC,SAAAA,CAAAA,IAAAA,CAAK,IAAA,CAAA;;QAEPJ,SAAUG,CAAAA;AAAM,OAAA;AAEpB;AACF;EAEArG,cAAkD,GAAA;AAChD,IAAO,OAAA;AACLwB,MAAAA,IAAAA,EAAM,IAAKA,CAAAA,IAAAA;AACX+E,MAAAA,WAAAA,EAAa,IAAKA,CAAAA,WAAAA;AAClBzF,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;MACZC,OAASY,EAAAA,qBAAAA,CAAY,KAAKZ,OAAO,CAAA;AACjCwB,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAChB,KAAA;AACF;AAEAtC,EAAAA,YAAAA,CAAaC,QAAiD,EAAA;AAC5DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AAEA+E,EAAAA,IAAAA,CAEES,MACAc,MAQA,EAAA;AACA,IAAA,OAAO,IAAIC,WAAmF,CAAA;AAC5FjF,MAAAA,IAAAA,EAAM,IAAKA,CAAAA,IAAAA;AACX+E,MAAAA,WAAAA,EAAa,IAAKA,CAAAA,WAAAA;AAClBxF,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACd2D,MAAAA,WAAAA,EAAa,KAAKA,WAAW,EAAA;MAC7BgC,OAAS,kBAAA,MAAA,CAAA,OAAOhF,KAAwBX,EAAAA,OAAAA,EAASU,GAAAA,KAAAA;AAC/C,QAAA,MAAMkF,UAAa,GAAA,MAAM,IAAKlF,CAAAA,GAAAA,CAAIC,OAAOX,OAAAA,CAAAA;AACzC,QAAA,MAAM6F,YAAeJ,GAAAA,MAAAA,CAAO9E,KAAOiF,EAAAA,UAAAA,EAAY5F,SAASU,GAAAA,CAAAA;AACxD,QAAO,OAAA,MAAMiE,IAAKjE,CAAAA,GAAAA,CAAImF,YAAAA,CAAAA;OAHf,EAAA,SAAA;KAKX,CAAA;AACF;AAEAC,EAAAA,MAAAA,CAEErB,MACAgB,EAAAA,MAAAA,EAKA3B,SAGI,GAAA,EACJ,EAAA;AACA,IAAA,OAAO,IAAI4B,WAA8D,CAAA;MACvEjF,IAAMqD,EAAAA,SAAAA,EAAWrD,QAAQ,IAAKA,CAAAA,IAAAA;MAC9B+E,WAAa1B,EAAAA,SAAAA,EAAWrD,QAAQ,IAAK+E,CAAAA,WAAAA;MACrCxF,OAASY,EAAAA,qBAAAA,CAAY,KAAKZ,OAAO,CAAA;MACjC2D,WAAac,EAAAA,MAAAA;MACbkB,OAAS,kBAAA,MAAA,CAAA,OAAOhF,KAAwBX,EAAAA,OAAAA,EAASU,GAAAA,KAAAA;AAC/C,QAAA,MAAMmF,YAAeJ,GAAAA,MAAAA,CAAO9E,KAAOX,EAAAA,OAAAA,EAASU,GAAAA,CAAAA;AAC5C,QAAA,OAAO,MAAM,IAAA,CAAKA,GAAImF,CAAAA,YAAAA,EAAc7F,OAAAA,CAAAA;OAF7B,EAAA,SAAA;KAIX,CAAA;AACF;AACF;AAIO,MAAM0F,oBAMH5F,IAAAA,CAAAA;EAxcV;;;EAycE;AACE,IAAA,IAAA,CAAKf,QAAQ,EAAA;AACf;AAIiBgH,EAAAA,YAAAA;AAEAJ,EAAAA,OAAAA;EAEjBhC,WAA4B,GAAA;AAC1B,IAAA,OAAO,IAAKoC,CAAAA,YAAAA;AACd;AAEAzH,EAAAA,WAAAA,CAAY0H,MAUT,EAAA;AACDC,IACED,oBAAAA,CAAAA,MAAAA,EACAE,MAAEC,MAAO,CAAA;AACP1F,MAAAA,IAAAA,EAAMyF,MACHE,MAAO,CAAA;QAAE7H,OAAS,EAAA;AAAwB,OAAA,EAC1C8H,MAAO,CAAA,CAACC,QAAQ,mBAAoBC,CAAAA,IAAAA,CAAKD,GAAAA,CAAM,EAAA;QAC9C/H,OAAS,EAAA;OACX,CAAA;AACFiH,MAAAA,WAAAA,EAAaU,MACVE,MAAO,CAAA;QAAE7H,OAAS,EAAA;AAA+B,OAAA,EACjD8H,MAAO,CAAA,CAACC,GAAQA,KAAAA,GAAAA,IAAOA,QAAQ,EAAI,EAAA;QAAE/H,OAAS,EAAA;OAA+B,CAAA;AAChFoF,MAAAA,WAAAA,EAAauC,MAAEM,KAAM,CAAA;AAACN,QAAAA,KAAAA,CAAEO,WAAWC,aAAAA,CAAAA;AAAYR,QAAAA,KAAAA,CAAEC,MAAO,CAAA,EAAC,CAAA,CAAGQ,WAAW;AAAK,OAAA,EAAA;QAC1EpI,OAAS,EAAA;OACX,CAAA;AACAoH,MAAAA,OAAAA,EAASO,MAAEU,QAAQ,EAAA;AACnB5G,MAAAA,OAAAA,EAASkG,MAAEC,MAAO,CAAA,EAAC,CAAGQ,CAAAA,WAAAA,GAAcE,QAAQ;AAC9C,KAAA,CAAA,CAAA;AAEF,IAAA,KAAA,CAAK,GAAK;MAACb,MAAOhG,CAAAA;AAAQ,KAAA,CAAA;AAC1B,IAAA,IAAA,CAAKS,OAAOuF,MAAOvF,CAAAA,IAAAA;AACnB,IAAA,IAAA,CAAK+E,cAAcQ,MAAOR,CAAAA,WAAAA;AAC1B,IAAA,IAAA,CAAKO,eAAeC,MAAOrC,CAAAA,WAAAA;AAC3B,IAAA,IAAA,CAAKgC,UAAUK,MAAOL,CAAAA,OAAAA;AACtB,IAAKnE,IAAAA,CAAAA,OAAAA,GAAUsF,mBAAQC,CAAAA,IAAAA,CAAKC,KAAM,CAAA;MAChCC,SAAW,EAAA;AAAC,QAAA,MAAA;AAAQ,QAAA,SAAA;AAAWC,QAAAA,aAAAA,CAAY,KAAKzG,IAAI;;MACpD0G,OAAS,EAAA;KACX,CAAA;AACF;EAEUvF,IACRwF,CAAAA,GAAAA,EACApH,SACAU,GACkB,EAAA;AAClB,IAAA,OAAO,IAAKiF,CAAAA,OAAAA,CAAQyB,GAAKpH,EAAAA,OAAAA,EAASU,GAAAA,CAAAA;AACpC;EAEAzB,cAAiB,GAAA;AACf,IAAO,OAAA;AAAE,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AAAkB0G,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AAASI,MAAAA,YAAAA,EAAc,IAAKA,CAAAA;AAAa,KAAA;AAC7F;AAEA7G,EAAAA,YAAAA,CAAa,EAAEyG,OAAAA,EAAS,GAAGxG,QAAAA,EAAoD,EAAA;AAC7E,IAAA,KAAA,CAAMD,aAAaC,QAAAA,CAAAA;AACnBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;AAAEsG,MAAAA;KAAQ,CAAA;AAChC;AACF","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
@@ -7,7 +7,7 @@ import { Task } from 'promise-based-task';
7
7
  import { BaseCache } from '../cache/base.cjs';
8
8
  import { AnyToolSchemaLike, FromSchemaLikeRaw, FromSchemaLike } from '../internals/helpers/schema.cjs';
9
9
  import { ZodSchema, z } from 'zod';
10
- import { E as Emitter, C as Callback } from '../emitter-D5Mu0EEH.cjs';
10
+ import { E as Emitter, C as Callback } from '../emitter-DWEsd-ud.cjs';
11
11
  import '../internals/helpers/promise.cjs';
12
12
  import '../internals/types.cjs';
13
13
  import '../internals/helpers/guards.cjs';
@@ -7,7 +7,7 @@ import { Task } from 'promise-based-task';
7
7
  import { BaseCache } from '../cache/base.js';
8
8
  import { AnyToolSchemaLike, FromSchemaLikeRaw, FromSchemaLike } from '../internals/helpers/schema.js';
9
9
  import { ZodSchema, z } from 'zod';
10
- import { E as Emitter, C as Callback } from '../emitter-C3dO-s2P.js';
10
+ import { E as Emitter, C as Callback } from '../emitter-C9nwGLt6.js';
11
11
  import '../internals/helpers/promise.js';
12
12
  import '../internals/types.js';
13
13
  import '../internals/helpers/guards.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","constructor","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["calculator.ts"],"names":["CalculatorTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","expression","string","min","describe","limitedEvaluate","constructor","config","imports","options","math","create","all","evaluate","import","Error","createUnit","reviver","parse","simplify","derivative","resolve","override","_run","result","StringToolOutput"],"mappings":";;;;;;;;;AAoCO,MAAMA,uBAAuBC,aAAAA,CAAAA;EApCpC;;;EAqCEC,IAAO,GAAA,YAAA;EACPC,WAAc,GAAA,CAAA;;EAGEC,OAA0DC,GAAAA,mBAAAA,CAAQC,KAAKC,KAAM,CAAA;IAC3FC,SAAW,EAAA;AAAC,MAAA,MAAA;AAAQ,MAAA;;IACpBC,OAAS,EAAA;GACX,CAAA;EAEAC,WAAc,GAAA;AACZ,IAAA,OAAOC,MAAEC,MAAO,CAAA;AACdC,MAAAA,UAAAA,EAAYF,MACTG,MAAM,EAAA,CACNC,IAAI,CAAA,CAAA,CACJC,SACC,CAAkH,gHAAA,CAAA;KAExH,CAAA;AACF;AAEUC,EAAAA,eAAAA;AAEVC,EAAAA,WAAAA,CAAY,EAAEC,MAAQC,EAAAA,OAAAA,EAAS,GAAGC,OAAAA,EAAAA,GAAiC,EAAI,EAAA;AACrE,IAAA,KAAA,CAAMA,OAAAA,CAAAA;AACN,IAAMC,MAAAA,IAAAA,GAAOC,aAAOC,CAAAA,UAAAA,EAAKL,MAAAA,CAAAA;AACzB,IAAA,IAAA,CAAKF,kBAAkBK,IAAKG,CAAAA,QAAAA;AAE5BH,IAAAA,IAAAA,CAAKI,MACH,CAAA;;AAEEA,MAAAA,MAAAA,kBAAQ,MAAA,CAAA,WAAA;AACN,QAAM,MAAA,IAAIC,MAAM,6BAAA,CAAA;OADV,EAAA,QAAA,CAAA;AAGRC,MAAAA,UAAAA,kBAAY,MAAA,CAAA,WAAA;AACV,QAAM,MAAA,IAAID,MAAM,iCAAA,CAAA;OADN,EAAA,YAAA,CAAA;AAGZE,MAAAA,OAAAA,kBAAS,MAAA,CAAA,WAAA;AACP,QAAM,MAAA,IAAIF,MAAM,8BAAA,CAAA;OADT,EAAA,SAAA,CAAA;;AAKTF,MAAAA,QAAAA,kBAAU,MAAA,CAAA,WAAA;AACR,QAAM,MAAA,IAAIE,MAAM,+BAAA,CAAA;OADR,EAAA,UAAA,CAAA;AAGVG,MAAAA,KAAAA,kBAAO,MAAA,CAAA,WAAA;AACL,QAAM,MAAA,IAAIH,MAAM,4BAAA,CAAA;OADX,EAAA,OAAA,CAAA;AAGPI,MAAAA,QAAAA,kBAAU,MAAA,CAAA,WAAA;AACR,QAAM,MAAA,IAAIJ,MAAM,+BAAA,CAAA;OADR,EAAA,UAAA,CAAA;AAGVK,MAAAA,UAAAA,kBAAY,MAAA,CAAA,WAAA;AACV,QAAM,MAAA,IAAIL,MAAM,iCAAA,CAAA;OADN,EAAA,YAAA,CAAA;AAGZM,MAAAA,OAAAA,kBAAS,MAAA,CAAA,WAAA;AACP,QAAM,MAAA,IAAIN,MAAM,8BAAA,CAAA;OADT,EAAA,SAAA;KAIX,EAAA;MAAEO,QAAU,EAAA,IAAA;AAAM,MAAA,GAAGd,OAASC,EAAAA;KAAQ,CAAA;AAE1C;EAEA,MAAgBc,IAAAA,CAAK,EAAEtB,UAAAA,EAA+B,EAAA;AACpD,IAAMuB,MAAAA,MAAAA,GAAS,IAAKnB,CAAAA,eAAAA,CAAgBJ,UAAAA,CAAAA;AACpC,IAAO,OAAA,IAAIwB,0BAAiBD,MAAAA,CAAAA;AAC9B;AACF","file":"calculator.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ToolEmitter, StringToolOutput, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { create, all, evaluate, ImportOptions, ImportObject, ConfigOptions } from \"mathjs\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface CalculatorToolInput {\n config?: ConfigOptions;\n imports?: {\n entries: ImportObject | ImportObject[];\n options?: ImportOptions;\n };\n}\n\n/**\n * Waring: The CalculatorTool enbales the agent (and by proxy the user) to execute arbirtary\n * expressions via mathjs.\n *\n * Please consider the security and stability risks documented at\n * https://mathjs.org/docs/expressions/security.html before using this tool.\n */\nexport class CalculatorTool extends Tool<StringToolOutput> {\n name = \"Calculator\";\n description = `A calculator tool that performs basic arithmetic operations like addition, subtraction, multiplication, and division. \nOnly use the calculator tool if you need to perform a calculation.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"calculator\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n expression: z\n .string()\n .min(1)\n .describe(\n `The mathematical expression to evaluate (e.g., \"2 + 3 * 4\"). Use Mathjs basic expression syntax. Constants only.`,\n ),\n });\n }\n\n protected limitedEvaluate: typeof evaluate;\n\n constructor({ config, imports, ...options }: CalculatorToolInput = {}) {\n super(options);\n const math = create(all, config);\n this.limitedEvaluate = math.evaluate;\n // Disable use of potentially vulnerable functions\n math.import(\n {\n // most important (hardly any functional impact)\n import: function () {\n throw new Error(\"Function import is disabled\");\n },\n createUnit: function () {\n throw new Error(\"Function createUnit is disabled\");\n },\n reviver: function () {\n throw new Error(\"Function reviver is disabled\");\n },\n\n // extra (has functional impact)\n evaluate: function () {\n throw new Error(\"Function evaluate is disabled\");\n },\n parse: function () {\n throw new Error(\"Function parse is disabled\");\n },\n simplify: function () {\n throw new Error(\"Function simplify is disabled\");\n },\n derivative: function () {\n throw new Error(\"Function derivative is disabled\");\n },\n resolve: function () {\n throw new Error(\"Function resolve is disabled\");\n },\n },\n { override: true, ...imports?.options },\n );\n }\n\n protected async _run({ expression }: ToolInput<this>) {\n const result = this.limitedEvaluate(expression);\n return new StringToolOutput(result);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/calculator.ts"],"names":["CalculatorTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","expression","string","min","describe","limitedEvaluate","config","imports","options","math","create","all","evaluate","import","Error","createUnit","reviver","parse","simplify","derivative","resolve","override","_run","result","StringToolOutput"],"mappings":";;;;;;;;;AAyBO,MAAMA,uBAAuBC,aAAAA,CAAAA;EAzBpC;;;EA0BEC,IAAAA,GAAO,YAAA;EACPC,WAAAA,GAAc,CAAA;;EAGEC,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,UAAAA,EAAYF,MACTG,MAAAA,EAAM,CACNC,IAAI,CAAA,CAAA,CACJC,SACC,CAAA,gHAAA,CAAkH;KAExH,CAAA;AACF;AAEUC,EAAAA,eAAAA;AAEV,EAAA,WAAA,CAAY,EAAEC,MAAAA,EAAQC,OAAAA,EAAS,GAAGC,OAAAA,EAAAA,GAAiC,EAAC,EAAG;AACrE,IAAA,KAAA,CAAMA,OAAAA,CAAAA;AACN,IAAA,MAAMC,IAAAA,GAAOC,aAAAA,CAAOC,UAAAA,EAAKL,MAAAA,CAAAA;AACzB,IAAA,IAAA,CAAKD,kBAAkBI,IAAAA,CAAKG,QAAAA;AAE5BH,IAAAA,IAAAA,CAAKI,MAAAA,CACH;;AAEEA,MAAAA,MAAAA,kBAAQ,MAAA,CAAA,WAAA;AACN,QAAA,MAAM,IAAIC,MAAM,6BAAA,CAAA;OAClB,EAFQ,QAAA,CAAA;AAGRC,MAAAA,UAAAA,kBAAY,MAAA,CAAA,WAAA;AACV,QAAA,MAAM,IAAID,MAAM,iCAAA,CAAA;OAClB,EAFY,YAAA,CAAA;AAGZE,MAAAA,OAAAA,kBAAS,MAAA,CAAA,WAAA;AACP,QAAA,MAAM,IAAIF,MAAM,8BAAA,CAAA;OAClB,EAFS,SAAA,CAAA;;AAKTF,MAAAA,QAAAA,kBAAU,MAAA,CAAA,WAAA;AACR,QAAA,MAAM,IAAIE,MAAM,+BAAA,CAAA;OAClB,EAFU,UAAA,CAAA;AAGVG,MAAAA,KAAAA,kBAAO,MAAA,CAAA,WAAA;AACL,QAAA,MAAM,IAAIH,MAAM,4BAAA,CAAA;OAClB,EAFO,OAAA,CAAA;AAGPI,MAAAA,QAAAA,kBAAU,MAAA,CAAA,WAAA;AACR,QAAA,MAAM,IAAIJ,MAAM,+BAAA,CAAA;OAClB,EAFU,UAAA,CAAA;AAGVK,MAAAA,UAAAA,kBAAY,MAAA,CAAA,WAAA;AACV,QAAA,MAAM,IAAIL,MAAM,iCAAA,CAAA;OAClB,EAFY,YAAA,CAAA;AAGZM,MAAAA,OAAAA,kBAAS,MAAA,CAAA,WAAA;AACP,QAAA,MAAM,IAAIN,MAAM,8BAAA,CAAA;OAClB,EAFS,SAAA;KAGX,EACA;MAAEO,QAAAA,EAAU,IAAA;AAAM,MAAA,GAAGd,OAAAA,EAASC;KAAQ,CAAA;AAE1C;EAEA,MAAgBc,IAAAA,CAAK,EAAErB,UAAAA,EAAU,EAAqB;AACpD,IAAA,MAAMsB,MAAAA,GAAS,IAAA,CAAKlB,eAAAA,CAAgBJ,UAAAA,CAAAA;AACpC,IAAA,OAAO,IAAIuB,0BAAiBD,MAAAA,CAAAA;AAC9B;AACF","file":"calculator.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ToolEmitter, StringToolOutput, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { create, all, evaluate, ImportOptions, ImportObject, ConfigOptions } from \"mathjs\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface CalculatorToolInput {\n config?: ConfigOptions;\n imports?: {\n entries: ImportObject | ImportObject[];\n options?: ImportOptions;\n };\n}\n\n/**\n * Waring: The CalculatorTool enbales the agent (and by proxy the user) to execute arbirtary\n * expressions via mathjs.\n *\n * Please consider the security and stability risks documented at\n * https://mathjs.org/docs/expressions/security.html before using this tool.\n */\nexport class CalculatorTool extends Tool<StringToolOutput> {\n name = \"Calculator\";\n description = `A calculator tool that performs basic arithmetic operations like addition, subtraction, multiplication, and division. \nOnly use the calculator tool if you need to perform a calculation.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"calculator\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n expression: z\n .string()\n .min(1)\n .describe(\n `The mathematical expression to evaluate (e.g., \"2 + 3 * 4\"). Use Mathjs basic expression syntax. Constants only.`,\n ),\n });\n }\n\n protected limitedEvaluate: typeof evaluate;\n\n constructor({ config, imports, ...options }: CalculatorToolInput = {}) {\n super(options);\n const math = create(all, config);\n this.limitedEvaluate = math.evaluate;\n // Disable use of potentially vulnerable functions\n math.import(\n {\n // most important (hardly any functional impact)\n import: function () {\n throw new Error(\"Function import is disabled\");\n },\n createUnit: function () {\n throw new Error(\"Function createUnit is disabled\");\n },\n reviver: function () {\n throw new Error(\"Function reviver is disabled\");\n },\n\n // extra (has functional impact)\n evaluate: function () {\n throw new Error(\"Function evaluate is disabled\");\n },\n parse: function () {\n throw new Error(\"Function parse is disabled\");\n },\n simplify: function () {\n throw new Error(\"Function simplify is disabled\");\n },\n derivative: function () {\n throw new Error(\"Function derivative is disabled\");\n },\n resolve: function () {\n throw new Error(\"Function resolve is disabled\");\n },\n },\n { override: true, ...imports?.options },\n );\n }\n\n protected async _run({ expression }: ToolInput<this>) {\n const result = this.limitedEvaluate(expression);\n return new StringToolOutput(result);\n }\n}\n"]}
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  import { ConfigOptions, ImportObject, ImportOptions, evaluate } from 'mathjs';
4
4
  import 'ajv';
5
5
  import '../context.cjs';
6
- import '../emitter-D5Mu0EEH.cjs';
6
+ import '../emitter-DWEsd-ud.cjs';
7
7
  import '../internals/types.cjs';
8
8
  import '../internals/helpers/guards.cjs';
9
9
  import '../internals/serializable.cjs';
@@ -16,18 +16,7 @@ import 'zod-to-json-schema';
16
16
 
17
17
  /**
18
18
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
19
- *
20
- * Licensed under the Apache License, Version 2.0 (the "License");
21
- * you may not use this file except in compliance with the License.
22
- * You may obtain a copy of the License at
23
- *
24
- * http://www.apache.org/licenses/LICENSE-2.0
25
- *
26
- * Unless required by applicable law or agreed to in writing, software
27
- * distributed under the License is distributed on an "AS IS" BASIS,
28
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
- * See the License for the specific language governing permissions and
30
- * limitations under the License.
19
+ * SPDX-License-Identifier: Apache-2.0
31
20
  */
32
21
 
33
22
  interface CalculatorToolInput {
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  import { ConfigOptions, ImportObject, ImportOptions, evaluate } from 'mathjs';
4
4
  import 'ajv';
5
5
  import '../context.js';
6
- import '../emitter-C3dO-s2P.js';
6
+ import '../emitter-C9nwGLt6.js';
7
7
  import '../internals/types.js';
8
8
  import '../internals/helpers/guards.js';
9
9
  import '../internals/serializable.js';
@@ -16,18 +16,7 @@ import 'zod-to-json-schema';
16
16
 
17
17
  /**
18
18
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
19
- *
20
- * Licensed under the Apache License, Version 2.0 (the "License");
21
- * you may not use this file except in compliance with the License.
22
- * You may obtain a copy of the License at
23
- *
24
- * http://www.apache.org/licenses/LICENSE-2.0
25
- *
26
- * Unless required by applicable law or agreed to in writing, software
27
- * distributed under the License is distributed on an "AS IS" BASIS,
28
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
- * See the License for the specific language governing permissions and
30
- * limitations under the License.
19
+ * SPDX-License-Identifier: Apache-2.0
31
20
  */
32
21
 
33
22
  interface CalculatorToolInput {
@@ -1 +1 @@
1
- {"version":3,"sources":["calculator.ts"],"names":["CalculatorTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","expression","string","min","describe","limitedEvaluate","constructor","config","imports","options","math","create","all","evaluate","import","Error","createUnit","reviver","parse","simplify","derivative","resolve","override","_run","result","StringToolOutput"],"mappings":";;;;;;;AAoCO,MAAMA,uBAAuBC,IAAAA,CAAAA;EApCpC;;;EAqCEC,IAAO,GAAA,YAAA;EACPC,WAAc,GAAA,CAAA;;EAGEC,OAA0DC,GAAAA,OAAAA,CAAQC,KAAKC,KAAM,CAAA;IAC3FC,SAAW,EAAA;AAAC,MAAA,MAAA;AAAQ,MAAA;;IACpBC,OAAS,EAAA;GACX,CAAA;EAEAC,WAAc,GAAA;AACZ,IAAA,OAAOC,EAAEC,MAAO,CAAA;AACdC,MAAAA,UAAAA,EAAYF,EACTG,MAAM,EAAA,CACNC,IAAI,CAAA,CAAA,CACJC,SACC,CAAkH,gHAAA,CAAA;KAExH,CAAA;AACF;AAEUC,EAAAA,eAAAA;AAEVC,EAAAA,WAAAA,CAAY,EAAEC,MAAQC,EAAAA,OAAAA,EAAS,GAAGC,OAAAA,EAAAA,GAAiC,EAAI,EAAA;AACrE,IAAA,KAAA,CAAMA,OAAAA,CAAAA;AACN,IAAMC,MAAAA,IAAAA,GAAOC,MAAOC,CAAAA,GAAAA,EAAKL,MAAAA,CAAAA;AACzB,IAAA,IAAA,CAAKF,kBAAkBK,IAAKG,CAAAA,QAAAA;AAE5BH,IAAAA,IAAAA,CAAKI,MACH,CAAA;;AAEEA,MAAAA,MAAAA,kBAAQ,MAAA,CAAA,WAAA;AACN,QAAM,MAAA,IAAIC,MAAM,6BAAA,CAAA;OADV,EAAA,QAAA,CAAA;AAGRC,MAAAA,UAAAA,kBAAY,MAAA,CAAA,WAAA;AACV,QAAM,MAAA,IAAID,MAAM,iCAAA,CAAA;OADN,EAAA,YAAA,CAAA;AAGZE,MAAAA,OAAAA,kBAAS,MAAA,CAAA,WAAA;AACP,QAAM,MAAA,IAAIF,MAAM,8BAAA,CAAA;OADT,EAAA,SAAA,CAAA;;AAKTF,MAAAA,QAAAA,kBAAU,MAAA,CAAA,WAAA;AACR,QAAM,MAAA,IAAIE,MAAM,+BAAA,CAAA;OADR,EAAA,UAAA,CAAA;AAGVG,MAAAA,KAAAA,kBAAO,MAAA,CAAA,WAAA;AACL,QAAM,MAAA,IAAIH,MAAM,4BAAA,CAAA;OADX,EAAA,OAAA,CAAA;AAGPI,MAAAA,QAAAA,kBAAU,MAAA,CAAA,WAAA;AACR,QAAM,MAAA,IAAIJ,MAAM,+BAAA,CAAA;OADR,EAAA,UAAA,CAAA;AAGVK,MAAAA,UAAAA,kBAAY,MAAA,CAAA,WAAA;AACV,QAAM,MAAA,IAAIL,MAAM,iCAAA,CAAA;OADN,EAAA,YAAA,CAAA;AAGZM,MAAAA,OAAAA,kBAAS,MAAA,CAAA,WAAA;AACP,QAAM,MAAA,IAAIN,MAAM,8BAAA,CAAA;OADT,EAAA,SAAA;KAIX,EAAA;MAAEO,QAAU,EAAA,IAAA;AAAM,MAAA,GAAGd,OAASC,EAAAA;KAAQ,CAAA;AAE1C;EAEA,MAAgBc,IAAAA,CAAK,EAAEtB,UAAAA,EAA+B,EAAA;AACpD,IAAMuB,MAAAA,MAAAA,GAAS,IAAKnB,CAAAA,eAAAA,CAAgBJ,UAAAA,CAAAA;AACpC,IAAO,OAAA,IAAIwB,iBAAiBD,MAAAA,CAAAA;AAC9B;AACF","file":"calculator.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ToolEmitter, StringToolOutput, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { create, all, evaluate, ImportOptions, ImportObject, ConfigOptions } from \"mathjs\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface CalculatorToolInput {\n config?: ConfigOptions;\n imports?: {\n entries: ImportObject | ImportObject[];\n options?: ImportOptions;\n };\n}\n\n/**\n * Waring: The CalculatorTool enbales the agent (and by proxy the user) to execute arbirtary\n * expressions via mathjs.\n *\n * Please consider the security and stability risks documented at\n * https://mathjs.org/docs/expressions/security.html before using this tool.\n */\nexport class CalculatorTool extends Tool<StringToolOutput> {\n name = \"Calculator\";\n description = `A calculator tool that performs basic arithmetic operations like addition, subtraction, multiplication, and division. \nOnly use the calculator tool if you need to perform a calculation.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"calculator\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n expression: z\n .string()\n .min(1)\n .describe(\n `The mathematical expression to evaluate (e.g., \"2 + 3 * 4\"). Use Mathjs basic expression syntax. Constants only.`,\n ),\n });\n }\n\n protected limitedEvaluate: typeof evaluate;\n\n constructor({ config, imports, ...options }: CalculatorToolInput = {}) {\n super(options);\n const math = create(all, config);\n this.limitedEvaluate = math.evaluate;\n // Disable use of potentially vulnerable functions\n math.import(\n {\n // most important (hardly any functional impact)\n import: function () {\n throw new Error(\"Function import is disabled\");\n },\n createUnit: function () {\n throw new Error(\"Function createUnit is disabled\");\n },\n reviver: function () {\n throw new Error(\"Function reviver is disabled\");\n },\n\n // extra (has functional impact)\n evaluate: function () {\n throw new Error(\"Function evaluate is disabled\");\n },\n parse: function () {\n throw new Error(\"Function parse is disabled\");\n },\n simplify: function () {\n throw new Error(\"Function simplify is disabled\");\n },\n derivative: function () {\n throw new Error(\"Function derivative is disabled\");\n },\n resolve: function () {\n throw new Error(\"Function resolve is disabled\");\n },\n },\n { override: true, ...imports?.options },\n );\n }\n\n protected async _run({ expression }: ToolInput<this>) {\n const result = this.limitedEvaluate(expression);\n return new StringToolOutput(result);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/calculator.ts"],"names":["CalculatorTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","expression","string","min","describe","limitedEvaluate","config","imports","options","math","create","all","evaluate","import","Error","createUnit","reviver","parse","simplify","derivative","resolve","override","_run","result","StringToolOutput"],"mappings":";;;;;;;AAyBO,MAAMA,uBAAuBC,IAAAA,CAAAA;EAzBpC;;;EA0BEC,IAAAA,GAAO,YAAA;EACPC,WAAAA,GAAc,CAAA;;EAGEC,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,UAAAA,EAAYF,EACTG,MAAAA,EAAM,CACNC,IAAI,CAAA,CAAA,CACJC,SACC,CAAA,gHAAA,CAAkH;KAExH,CAAA;AACF;AAEUC,EAAAA,eAAAA;AAEV,EAAA,WAAA,CAAY,EAAEC,MAAAA,EAAQC,OAAAA,EAAS,GAAGC,OAAAA,EAAAA,GAAiC,EAAC,EAAG;AACrE,IAAA,KAAA,CAAMA,OAAAA,CAAAA;AACN,IAAA,MAAMC,IAAAA,GAAOC,MAAAA,CAAOC,GAAAA,EAAKL,MAAAA,CAAAA;AACzB,IAAA,IAAA,CAAKD,kBAAkBI,IAAAA,CAAKG,QAAAA;AAE5BH,IAAAA,IAAAA,CAAKI,MAAAA,CACH;;AAEEA,MAAAA,MAAAA,kBAAQ,MAAA,CAAA,WAAA;AACN,QAAA,MAAM,IAAIC,MAAM,6BAAA,CAAA;OAClB,EAFQ,QAAA,CAAA;AAGRC,MAAAA,UAAAA,kBAAY,MAAA,CAAA,WAAA;AACV,QAAA,MAAM,IAAID,MAAM,iCAAA,CAAA;OAClB,EAFY,YAAA,CAAA;AAGZE,MAAAA,OAAAA,kBAAS,MAAA,CAAA,WAAA;AACP,QAAA,MAAM,IAAIF,MAAM,8BAAA,CAAA;OAClB,EAFS,SAAA,CAAA;;AAKTF,MAAAA,QAAAA,kBAAU,MAAA,CAAA,WAAA;AACR,QAAA,MAAM,IAAIE,MAAM,+BAAA,CAAA;OAClB,EAFU,UAAA,CAAA;AAGVG,MAAAA,KAAAA,kBAAO,MAAA,CAAA,WAAA;AACL,QAAA,MAAM,IAAIH,MAAM,4BAAA,CAAA;OAClB,EAFO,OAAA,CAAA;AAGPI,MAAAA,QAAAA,kBAAU,MAAA,CAAA,WAAA;AACR,QAAA,MAAM,IAAIJ,MAAM,+BAAA,CAAA;OAClB,EAFU,UAAA,CAAA;AAGVK,MAAAA,UAAAA,kBAAY,MAAA,CAAA,WAAA;AACV,QAAA,MAAM,IAAIL,MAAM,iCAAA,CAAA;OAClB,EAFY,YAAA,CAAA;AAGZM,MAAAA,OAAAA,kBAAS,MAAA,CAAA,WAAA;AACP,QAAA,MAAM,IAAIN,MAAM,8BAAA,CAAA;OAClB,EAFS,SAAA;KAGX,EACA;MAAEO,QAAAA,EAAU,IAAA;AAAM,MAAA,GAAGd,OAAAA,EAASC;KAAQ,CAAA;AAE1C;EAEA,MAAgBc,IAAAA,CAAK,EAAErB,UAAAA,EAAU,EAAqB;AACpD,IAAA,MAAMsB,MAAAA,GAAS,IAAA,CAAKlB,eAAAA,CAAgBJ,UAAAA,CAAAA;AACpC,IAAA,OAAO,IAAIuB,iBAAiBD,MAAAA,CAAAA;AAC9B;AACF","file":"calculator.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ToolEmitter, StringToolOutput, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { create, all, evaluate, ImportOptions, ImportObject, ConfigOptions } from \"mathjs\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface CalculatorToolInput {\n config?: ConfigOptions;\n imports?: {\n entries: ImportObject | ImportObject[];\n options?: ImportOptions;\n };\n}\n\n/**\n * Waring: The CalculatorTool enbales the agent (and by proxy the user) to execute arbirtary\n * expressions via mathjs.\n *\n * Please consider the security and stability risks documented at\n * https://mathjs.org/docs/expressions/security.html before using this tool.\n */\nexport class CalculatorTool extends Tool<StringToolOutput> {\n name = \"Calculator\";\n description = `A calculator tool that performs basic arithmetic operations like addition, subtraction, multiplication, and division. \nOnly use the calculator tool if you need to perform a calculation.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"calculator\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n expression: z\n .string()\n .min(1)\n .describe(\n `The mathematical expression to evaluate (e.g., \"2 + 3 * 4\"). Use Mathjs basic expression syntax. Constants only.`,\n ),\n });\n }\n\n protected limitedEvaluate: typeof evaluate;\n\n constructor({ config, imports, ...options }: CalculatorToolInput = {}) {\n super(options);\n const math = create(all, config);\n this.limitedEvaluate = math.evaluate;\n // Disable use of potentially vulnerable functions\n math.import(\n {\n // most important (hardly any functional impact)\n import: function () {\n throw new Error(\"Function import is disabled\");\n },\n createUnit: function () {\n throw new Error(\"Function createUnit is disabled\");\n },\n reviver: function () {\n throw new Error(\"Function reviver is disabled\");\n },\n\n // extra (has functional impact)\n evaluate: function () {\n throw new Error(\"Function evaluate is disabled\");\n },\n parse: function () {\n throw new Error(\"Function parse is disabled\");\n },\n simplify: function () {\n throw new Error(\"Function simplify is disabled\");\n },\n derivative: function () {\n throw new Error(\"Function derivative is disabled\");\n },\n resolve: function () {\n throw new Error(\"Function resolve is disabled\");\n },\n },\n { override: true, ...imports?.options },\n );\n }\n\n protected async _run({ expression }: ToolInput<this>) {\n const result = this.limitedEvaluate(expression);\n return new StringToolOutput(result);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["custom.ts"],"names":["CustomToolCreateError","FrameworkError","CustomToolExecuteError","toolOptionsSchema","z","object","codeInterpreter","url","string","connectionOptions","any","optional","sourceCode","min","name","description","inputSchema","passthrough","CustomTool","Tool","emitter","Emitter","root","child","namespace","creator","options","register","validate","_run","input","run","result","callCodeInterpreter","body","tool_source_code","tool_input_json","JSON","stringify","env","merge","omitUndefined","signal","stderr","StringToolOutput","tool_output_json","e","ToolError","message","loadSnapshot","snapshot","fromSourceCode","error_messages","join","tool_name","tool_description","parse","tool_input_schema_json"],"mappings":"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","file":"custom.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n StringToolOutput,\n Tool,\n ToolInput,\n} from \"@/tools/base.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { z } from \"zod\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { callCodeInterpreter, CodeInterpreterOptions } from \"./python/python.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { ToolError } from \"@/tools/base.js\";\nimport { merge } from \"remeda\";\nimport { omitUndefined } from \"@/internals/helpers/object.js\";\n\nexport class CustomToolCreateError extends FrameworkError {}\nexport class CustomToolExecuteError extends FrameworkError {}\n\nconst toolOptionsSchema = z\n .object({\n codeInterpreter: z.object({\n url: z.string().url(),\n connectionOptions: z.any().optional(),\n }),\n sourceCode: z.string().min(1),\n name: z.string().min(1),\n description: z.string().min(1),\n inputSchema: z.any(),\n })\n .passthrough();\n\ntype CustomToolEnv = Record<string, string | boolean | null | undefined | number>;\n\nexport type CustomToolOptions = z.output<typeof toolOptionsSchema> &\n BaseToolOptions & { env?: CustomToolEnv };\n\nexport type CustomToolRunOptions = Pick<CustomToolOptions, \"env\"> & BaseToolRunOptions;\n\nexport class CustomTool extends Tool<StringToolOutput, CustomToolOptions, CustomToolRunOptions> {\n name: string;\n description: string;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"custom\"],\n creator: this,\n });\n\n public inputSchema() {\n return this.options.inputSchema;\n }\n\n static {\n this.register();\n }\n\n public constructor(options: CustomToolOptions) {\n validate(options, toolOptionsSchema);\n super(options);\n this.name = options.name;\n this.description = options.description;\n }\n\n protected async _run(\n input: any,\n options: Partial<CustomToolRunOptions>,\n run: RunContext<typeof this>,\n ) {\n try {\n const result = await callCodeInterpreter({\n url: `${this.options.codeInterpreter.url}/v1/execute-custom-tool`,\n body: {\n tool_source_code: this.options.sourceCode,\n tool_input_json: JSON.stringify(input),\n env: merge(omitUndefined(this.options.env ?? {}), omitUndefined(options.env ?? {})),\n },\n signal: run.signal,\n });\n\n if (result.stderr) {\n throw new CustomToolExecuteError(result.stderr);\n }\n\n return new StringToolOutput(result.tool_output_json);\n } catch (e) {\n if (e instanceof ToolError) {\n throw new CustomToolExecuteError(e.message, [e]);\n } else {\n throw e;\n }\n }\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void {\n super.loadSnapshot(snapshot);\n }\n\n static async fromSourceCode(\n { env, ...codeInterpreter }: CodeInterpreterOptions & Pick<CustomToolOptions, \"env\">,\n sourceCode: string,\n ) {\n try {\n const result = await callCodeInterpreter({\n url: `${codeInterpreter.url}/v1/parse-custom-tool`,\n body: {\n tool_source_code: sourceCode,\n },\n });\n\n if (result.error_messages) {\n throw new CustomToolCreateError(result.error_messages.join(\"\\n\"));\n }\n\n return new CustomTool({\n codeInterpreter,\n sourceCode,\n name: result.tool_name,\n description: result.tool_description,\n inputSchema: JSON.parse(result.tool_input_schema_json),\n env,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n throw new CustomToolCreateError(e.message, [e]);\n } else {\n throw e;\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/custom.ts"],"names":["CustomToolCreateError","FrameworkError","CustomToolExecuteError","toolOptionsSchema","z","object","codeInterpreter","url","string","connectionOptions","any","optional","sourceCode","min","name","description","inputSchema","passthrough","CustomTool","Tool","emitter","Emitter","root","child","namespace","creator","options","register","validate","_run","input","run","result","callCodeInterpreter","body","tool_source_code","tool_input_json","JSON","stringify","env","merge","omitUndefined","signal","stderr","StringToolOutput","tool_output_json","e","ToolError","message","loadSnapshot","snapshot","fromSourceCode","error_messages","join","tool_name","tool_description","parse","tool_input_schema_json"],"mappings":"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","file":"custom.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 ToolEmitter,\n StringToolOutput,\n Tool,\n ToolInput,\n} from \"@/tools/base.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { z } from \"zod\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { callCodeInterpreter, CodeInterpreterOptions } from \"./python/python.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { ToolError } from \"@/tools/base.js\";\nimport { merge } from \"remeda\";\nimport { omitUndefined } from \"@/internals/helpers/object.js\";\n\nexport class CustomToolCreateError extends FrameworkError {}\nexport class CustomToolExecuteError extends FrameworkError {}\n\nconst toolOptionsSchema = z\n .object({\n codeInterpreter: z.object({\n url: z.string().url(),\n connectionOptions: z.any().optional(),\n }),\n sourceCode: z.string().min(1),\n name: z.string().min(1),\n description: z.string().min(1),\n inputSchema: z.any(),\n })\n .passthrough();\n\ntype CustomToolEnv = Record<string, string | boolean | null | undefined | number>;\n\nexport type CustomToolOptions = z.output<typeof toolOptionsSchema> &\n BaseToolOptions & { env?: CustomToolEnv };\n\nexport type CustomToolRunOptions = Pick<CustomToolOptions, \"env\"> & BaseToolRunOptions;\n\nexport class CustomTool extends Tool<StringToolOutput, CustomToolOptions, CustomToolRunOptions> {\n name: string;\n description: string;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, StringToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"custom\"],\n creator: this,\n });\n\n public inputSchema() {\n return this.options.inputSchema;\n }\n\n static {\n this.register();\n }\n\n public constructor(options: CustomToolOptions) {\n validate(options, toolOptionsSchema);\n super(options);\n this.name = options.name;\n this.description = options.description;\n }\n\n protected async _run(\n input: any,\n options: Partial<CustomToolRunOptions>,\n run: RunContext<typeof this>,\n ) {\n try {\n const result = await callCodeInterpreter({\n url: `${this.options.codeInterpreter.url}/v1/execute-custom-tool`,\n body: {\n tool_source_code: this.options.sourceCode,\n tool_input_json: JSON.stringify(input),\n env: merge(omitUndefined(this.options.env ?? {}), omitUndefined(options.env ?? {})),\n },\n signal: run.signal,\n });\n\n if (result.stderr) {\n throw new CustomToolExecuteError(result.stderr);\n }\n\n return new StringToolOutput(result.tool_output_json);\n } catch (e) {\n if (e instanceof ToolError) {\n throw new CustomToolExecuteError(e.message, [e]);\n } else {\n throw e;\n }\n }\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void {\n super.loadSnapshot(snapshot);\n }\n\n static async fromSourceCode(\n { env, ...codeInterpreter }: CodeInterpreterOptions & Pick<CustomToolOptions, \"env\">,\n sourceCode: string,\n ) {\n try {\n const result = await callCodeInterpreter({\n url: `${codeInterpreter.url}/v1/parse-custom-tool`,\n body: {\n tool_source_code: sourceCode,\n },\n });\n\n if (result.error_messages) {\n throw new CustomToolCreateError(result.error_messages.join(\"\\n\"));\n }\n\n return new CustomTool({\n codeInterpreter,\n sourceCode,\n name: result.tool_name,\n description: result.tool_description,\n inputSchema: JSON.parse(result.tool_input_schema_json),\n env,\n });\n } catch (e) {\n if (e instanceof ToolError) {\n throw new CustomToolCreateError(e.message, [e]);\n } else {\n throw e;\n }\n }\n }\n}\n"]}