beeai-framework 0.1.19 → 0.1.21

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 (375) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs +4 -4
  2. package/dist/adapters/a2a/agents/agent.cjs.map +1 -1
  3. package/dist/adapters/a2a/agents/agent.d.cts +2 -2
  4. package/dist/adapters/a2a/agents/agent.d.ts +2 -2
  5. package/dist/adapters/a2a/agents/agent.js +4 -4
  6. package/dist/adapters/a2a/agents/agent.js.map +1 -1
  7. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  8. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  9. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  10. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  11. package/dist/adapters/a2a/agents/utils.cjs +2 -2
  12. package/dist/adapters/a2a/agents/utils.cjs.map +1 -1
  13. package/dist/adapters/a2a/agents/utils.js +2 -2
  14. package/dist/adapters/a2a/agents/utils.js.map +1 -1
  15. package/dist/adapters/a2a/serve/agent_executor.cjs +1 -3
  16. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -1
  17. package/dist/adapters/a2a/serve/agent_executor.d.cts +4 -3
  18. package/dist/adapters/a2a/serve/agent_executor.d.ts +4 -3
  19. package/dist/adapters/a2a/serve/agent_executor.js +1 -3
  20. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -1
  21. package/dist/adapters/a2a/serve/server.cjs +15 -0
  22. package/dist/adapters/a2a/serve/server.cjs.map +1 -1
  23. package/dist/adapters/a2a/serve/server.d.cts +4 -2
  24. package/dist/adapters/a2a/serve/server.d.ts +4 -2
  25. package/dist/adapters/a2a/serve/server.js +15 -0
  26. package/dist/adapters/a2a/serve/server.js.map +1 -1
  27. package/dist/adapters/acp/agents/agent.d.cts +2 -2
  28. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  29. package/dist/adapters/acp/agents/events.d.cts +1 -1
  30. package/dist/adapters/acp/agents/events.d.ts +1 -1
  31. package/dist/adapters/{beeai_platform → agentstack}/agents/agent.cjs +4 -4
  32. package/dist/adapters/agentstack/agents/agent.cjs.map +1 -0
  33. package/dist/adapters/{beeai_platform → agentstack}/agents/agent.d.cts +12 -12
  34. package/dist/adapters/{beeai_platform → agentstack}/agents/agent.d.ts +12 -12
  35. package/dist/adapters/{beeai_platform → agentstack}/agents/agent.js +4 -4
  36. package/dist/adapters/agentstack/agents/agent.js.map +1 -0
  37. package/dist/adapters/agentstack/agents/events.d.cts +23 -0
  38. package/dist/adapters/agentstack/agents/events.d.ts +23 -0
  39. package/dist/adapters/{beeai_platform → agentstack}/agents/types.d.cts +4 -4
  40. package/dist/adapters/{beeai_platform → agentstack}/agents/types.d.ts +4 -4
  41. package/dist/adapters/amazon-bedrock/backend/chat.cjs +3 -2
  42. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  43. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +5 -6
  44. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +5 -6
  45. package/dist/adapters/amazon-bedrock/backend/chat.js +3 -2
  46. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  47. package/dist/adapters/amazon-bedrock/backend/embedding.cjs +2 -2
  48. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  49. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +4 -4
  50. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +4 -4
  51. package/dist/adapters/amazon-bedrock/backend/embedding.js +2 -2
  52. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  53. package/dist/adapters/anthropic/backend/chat.cjs +3 -2
  54. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  55. package/dist/adapters/anthropic/backend/chat.d.cts +5 -6
  56. package/dist/adapters/anthropic/backend/chat.d.ts +5 -6
  57. package/dist/adapters/anthropic/backend/chat.js +3 -2
  58. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  59. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  60. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  61. package/dist/adapters/azure-openai/backend/chat.cjs +3 -2
  62. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  63. package/dist/adapters/azure-openai/backend/chat.d.cts +5 -6
  64. package/dist/adapters/azure-openai/backend/chat.d.ts +5 -6
  65. package/dist/adapters/azure-openai/backend/chat.js +3 -2
  66. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  67. package/dist/adapters/azure-openai/backend/embedding.cjs +2 -2
  68. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  69. package/dist/adapters/azure-openai/backend/embedding.d.cts +3 -3
  70. package/dist/adapters/azure-openai/backend/embedding.d.ts +3 -3
  71. package/dist/adapters/azure-openai/backend/embedding.js +2 -2
  72. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  73. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  74. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  75. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  76. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  77. package/dist/adapters/google-vertex/backend/chat.cjs +3 -2
  78. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  79. package/dist/adapters/google-vertex/backend/chat.d.cts +5 -6
  80. package/dist/adapters/google-vertex/backend/chat.d.ts +5 -6
  81. package/dist/adapters/google-vertex/backend/chat.js +3 -2
  82. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  83. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  84. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  85. package/dist/adapters/groq/backend/chat.cjs +3 -2
  86. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  87. package/dist/adapters/groq/backend/chat.d.cts +5 -6
  88. package/dist/adapters/groq/backend/chat.d.ts +5 -6
  89. package/dist/adapters/groq/backend/chat.js +3 -2
  90. package/dist/adapters/groq/backend/chat.js.map +1 -1
  91. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  92. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  93. package/dist/adapters/langchain/backend/chat.cjs +6 -5
  94. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  95. package/dist/adapters/langchain/backend/chat.d.cts +2 -2
  96. package/dist/adapters/langchain/backend/chat.d.ts +2 -2
  97. package/dist/adapters/langchain/backend/chat.js +6 -5
  98. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  99. package/dist/adapters/langchain/backend/embedding.d.cts +3 -3
  100. package/dist/adapters/langchain/backend/embedding.d.ts +3 -3
  101. package/dist/adapters/langchain/tools.d.cts +1 -1
  102. package/dist/adapters/langchain/tools.d.ts +1 -1
  103. package/dist/adapters/mcp/serve/server.cjs +12 -4
  104. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  105. package/dist/adapters/mcp/serve/server.d.cts +1 -1
  106. package/dist/adapters/mcp/serve/server.d.ts +1 -1
  107. package/dist/adapters/mcp/serve/server.js +12 -4
  108. package/dist/adapters/mcp/serve/server.js.map +1 -1
  109. package/dist/adapters/ollama/backend/chat.cjs +1 -4
  110. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  111. package/dist/adapters/ollama/backend/chat.d.cts +4 -4
  112. package/dist/adapters/ollama/backend/chat.d.ts +4 -4
  113. package/dist/adapters/ollama/backend/chat.js +1 -4
  114. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  115. package/dist/adapters/ollama/backend/client.cjs +2 -2
  116. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  117. package/dist/adapters/ollama/backend/client.d.cts +1 -1
  118. package/dist/adapters/ollama/backend/client.d.ts +1 -1
  119. package/dist/adapters/ollama/backend/client.js +1 -1
  120. package/dist/adapters/ollama/backend/client.js.map +1 -1
  121. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  122. package/dist/adapters/ollama/backend/embedding.d.cts +3 -3
  123. package/dist/adapters/ollama/backend/embedding.d.ts +3 -3
  124. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  125. package/dist/adapters/openai/backend/chat.cjs +3 -2
  126. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  127. package/dist/adapters/openai/backend/chat.d.cts +5 -6
  128. package/dist/adapters/openai/backend/chat.d.ts +5 -6
  129. package/dist/adapters/openai/backend/chat.js +3 -2
  130. package/dist/adapters/openai/backend/chat.js.map +1 -1
  131. package/dist/adapters/openai/backend/client.cjs +2 -11
  132. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  133. package/dist/adapters/openai/backend/client.js +3 -12
  134. package/dist/adapters/openai/backend/client.js.map +1 -1
  135. package/dist/adapters/openai/backend/embedding.cjs +2 -2
  136. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  137. package/dist/adapters/openai/backend/embedding.d.cts +4 -4
  138. package/dist/adapters/openai/backend/embedding.d.ts +4 -4
  139. package/dist/adapters/openai/backend/embedding.js +2 -2
  140. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  141. package/dist/adapters/vercel/backend/chat.cjs +26 -21
  142. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  143. package/dist/adapters/vercel/backend/chat.d.cts +6 -4
  144. package/dist/adapters/vercel/backend/chat.d.ts +6 -4
  145. package/dist/adapters/vercel/backend/chat.js +27 -22
  146. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  147. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  148. package/dist/adapters/vercel/backend/embedding.d.cts +3 -3
  149. package/dist/adapters/vercel/backend/embedding.d.ts +3 -3
  150. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  151. package/dist/adapters/vercel/backend/utils.cjs +11 -0
  152. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  153. package/dist/adapters/vercel/backend/utils.d.cts +19 -2
  154. package/dist/adapters/vercel/backend/utils.d.ts +19 -2
  155. package/dist/adapters/vercel/backend/utils.js +11 -1
  156. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  157. package/dist/adapters/watsonx/backend/chat.cjs +10 -4
  158. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  159. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  160. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  161. package/dist/adapters/watsonx/backend/chat.js +10 -4
  162. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  163. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  164. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  165. package/dist/adapters/xai/backend/chat.cjs +3 -2
  166. package/dist/adapters/xai/backend/chat.cjs.map +1 -1
  167. package/dist/adapters/xai/backend/chat.d.cts +5 -6
  168. package/dist/adapters/xai/backend/chat.d.ts +5 -6
  169. package/dist/adapters/xai/backend/chat.js +3 -2
  170. package/dist/adapters/xai/backend/chat.js.map +1 -1
  171. package/dist/{agent-7NzfPC6d.d.ts → agent-CHebzsQB.d.ts} +4 -4
  172. package/dist/{agent-B6pOfx0K.d.cts → agent-DvvVGvLr.d.cts} +4 -4
  173. package/dist/agents/base.d.cts +2 -2
  174. package/dist/agents/base.d.ts +2 -2
  175. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  176. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  177. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  178. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  179. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  180. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  181. package/dist/agents/react/agent.d.cts +5 -4
  182. package/dist/agents/react/agent.d.ts +5 -4
  183. package/dist/agents/react/prompts.d.cts +1 -1
  184. package/dist/agents/react/prompts.d.ts +1 -1
  185. package/dist/agents/react/runners/base.cjs.map +1 -1
  186. package/dist/agents/react/runners/base.d.cts +5 -4
  187. package/dist/agents/react/runners/base.d.ts +5 -4
  188. package/dist/agents/react/runners/base.js.map +1 -1
  189. package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -1
  190. package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -1
  191. package/dist/agents/react/runners/deep-think/runner.d.cts +6 -5
  192. package/dist/agents/react/runners/deep-think/runner.d.ts +6 -5
  193. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  194. package/dist/agents/react/runners/default/runner.d.cts +6 -5
  195. package/dist/agents/react/runners/default/runner.d.ts +6 -5
  196. package/dist/agents/react/runners/default/runner.js.map +1 -1
  197. package/dist/agents/react/runners/granite/prompts.d.cts +1 -1
  198. package/dist/agents/react/runners/granite/prompts.d.ts +1 -1
  199. package/dist/agents/react/runners/granite/runner.cjs +4 -2
  200. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  201. package/dist/agents/react/runners/granite/runner.d.cts +6 -5
  202. package/dist/agents/react/runners/granite/runner.d.ts +6 -5
  203. package/dist/agents/react/runners/granite/runner.js +4 -2
  204. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  205. package/dist/agents/react/types.d.cts +3 -2
  206. package/dist/agents/react/types.d.ts +3 -2
  207. package/dist/agents/toolCalling/agent.cjs +9 -5
  208. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  209. package/dist/agents/toolCalling/agent.d.cts +3 -3
  210. package/dist/agents/toolCalling/agent.d.ts +3 -3
  211. package/dist/agents/toolCalling/agent.js +9 -5
  212. package/dist/agents/toolCalling/agent.js.map +1 -1
  213. package/dist/agents/toolCalling/types.d.cts +1 -1
  214. package/dist/agents/toolCalling/types.d.ts +1 -1
  215. package/dist/agents/types.d.cts +2 -2
  216. package/dist/agents/types.d.ts +2 -2
  217. package/dist/backend/backend.d.cts +2 -2
  218. package/dist/backend/backend.d.ts +2 -2
  219. package/dist/backend/chat.cjs +1 -1
  220. package/dist/backend/chat.cjs.map +1 -1
  221. package/dist/backend/chat.d.cts +2 -2
  222. package/dist/backend/chat.d.ts +2 -2
  223. package/dist/backend/chat.js +1 -1
  224. package/dist/backend/chat.js.map +1 -1
  225. package/dist/backend/core.d.cts +2 -2
  226. package/dist/backend/core.d.ts +2 -2
  227. package/dist/backend/embedding.d.cts +2 -2
  228. package/dist/backend/embedding.d.ts +2 -2
  229. package/dist/backend/message.cjs +59 -3
  230. package/dist/backend/message.cjs.map +1 -1
  231. package/dist/backend/message.d.cts +3 -0
  232. package/dist/backend/message.d.ts +3 -0
  233. package/dist/backend/message.js +59 -3
  234. package/dist/backend/message.js.map +1 -1
  235. package/dist/backend/utils.d.cts +2 -2
  236. package/dist/backend/utils.d.ts +2 -2
  237. package/dist/{base-Bguef5Dg.d.ts → base-BQgDlcGa.d.ts} +1 -1
  238. package/dist/{base-C1hO5EJe.d.cts → base-CwcxwybB.d.cts} +1 -1
  239. package/dist/cache/fileCache.cjs.map +1 -1
  240. package/dist/cache/fileCache.js.map +1 -1
  241. package/dist/{chat-BBoOSvzm.d.ts → chat-C0s-o6ll.d.ts} +4 -2
  242. package/dist/{chat-BZ55YQab.d.cts → chat-CRb3vUVg.d.cts} +4 -2
  243. package/dist/context.d.cts +1 -1
  244. package/dist/context.d.ts +1 -1
  245. package/dist/emitter/emitter.d.cts +1 -1
  246. package/dist/emitter/emitter.d.ts +1 -1
  247. package/dist/emitter/types.d.cts +1 -1
  248. package/dist/emitter/types.d.ts +1 -1
  249. package/dist/{emitter-BqpLJQVb.d.ts → emitter-CZFbzlUi.d.ts} +3 -3
  250. package/dist/{emitter-pJzHC_AM.d.cts → emitter-DpqUYjXH.d.cts} +3 -3
  251. package/dist/index.d.cts +3 -3
  252. package/dist/index.d.ts +3 -3
  253. package/dist/internals/fetcher.d.cts +1 -1
  254. package/dist/internals/fetcher.d.ts +1 -1
  255. package/dist/internals/helpers/array.cjs +35 -0
  256. package/dist/internals/helpers/array.cjs.map +1 -1
  257. package/dist/internals/helpers/array.d.cts +6 -1
  258. package/dist/internals/helpers/array.d.ts +6 -1
  259. package/dist/internals/helpers/array.js +35 -1
  260. package/dist/internals/helpers/array.js.map +1 -1
  261. package/dist/internals/helpers/object.cjs +30 -5
  262. package/dist/internals/helpers/object.cjs.map +1 -1
  263. package/dist/internals/helpers/object.d.cts +3 -2
  264. package/dist/internals/helpers/object.d.ts +3 -2
  265. package/dist/internals/helpers/object.js +29 -5
  266. package/dist/internals/helpers/object.js.map +1 -1
  267. package/dist/logger/logger.cjs +8 -4
  268. package/dist/logger/logger.cjs.map +1 -1
  269. package/dist/logger/logger.d.cts +21 -15
  270. package/dist/logger/logger.d.ts +21 -15
  271. package/dist/logger/logger.js +6 -3
  272. package/dist/logger/logger.js.map +1 -1
  273. package/dist/logger/pretty.cjs +2 -2
  274. package/dist/logger/pretty.cjs.map +1 -1
  275. package/dist/logger/pretty.js +2 -2
  276. package/dist/logger/pretty.js.map +1 -1
  277. package/dist/memory/summarizeMemory.d.cts +2 -2
  278. package/dist/memory/summarizeMemory.d.ts +2 -2
  279. package/dist/parsers/linePrefix.cjs.map +1 -1
  280. package/dist/parsers/linePrefix.d.cts +4 -8
  281. package/dist/parsers/linePrefix.d.ts +4 -8
  282. package/dist/parsers/linePrefix.js.map +1 -1
  283. package/dist/serializer/utils.cjs.map +1 -1
  284. package/dist/serializer/utils.js.map +1 -1
  285. package/dist/tools/arxiv.cjs.map +1 -1
  286. package/dist/tools/arxiv.d.cts +1 -1
  287. package/dist/tools/arxiv.d.ts +1 -1
  288. package/dist/tools/arxiv.js.map +1 -1
  289. package/dist/tools/base.cjs.map +1 -1
  290. package/dist/tools/base.d.cts +1 -1
  291. package/dist/tools/base.d.ts +1 -1
  292. package/dist/tools/base.js.map +1 -1
  293. package/dist/tools/calculator.d.cts +1 -1
  294. package/dist/tools/calculator.d.ts +1 -1
  295. package/dist/tools/custom.d.cts +2 -2
  296. package/dist/tools/custom.d.ts +2 -2
  297. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  298. package/dist/tools/database/elasticsearch.d.cts +1 -1
  299. package/dist/tools/database/elasticsearch.d.ts +1 -1
  300. package/dist/tools/database/elasticsearch.js.map +1 -1
  301. package/dist/tools/database/milvus.cjs +3 -3
  302. package/dist/tools/database/milvus.cjs.map +1 -1
  303. package/dist/tools/database/milvus.d.cts +1 -1
  304. package/dist/tools/database/milvus.d.ts +1 -1
  305. package/dist/tools/database/milvus.js +3 -3
  306. package/dist/tools/database/milvus.js.map +1 -1
  307. package/dist/tools/database/qdrant.cjs +2 -2
  308. package/dist/tools/database/qdrant.cjs.map +1 -1
  309. package/dist/tools/database/qdrant.d.cts +1 -1
  310. package/dist/tools/database/qdrant.d.ts +1 -1
  311. package/dist/tools/database/qdrant.js +2 -2
  312. package/dist/tools/database/qdrant.js.map +1 -1
  313. package/dist/tools/database/sql.cjs.map +1 -1
  314. package/dist/tools/database/sql.d.cts +1 -1
  315. package/dist/tools/database/sql.d.ts +1 -1
  316. package/dist/tools/database/sql.js.map +1 -1
  317. package/dist/tools/llm.d.cts +2 -2
  318. package/dist/tools/llm.d.ts +2 -2
  319. package/dist/tools/mcp.d.cts +1 -1
  320. package/dist/tools/mcp.d.ts +1 -1
  321. package/dist/tools/openapi.d.cts +1 -1
  322. package/dist/tools/openapi.d.ts +1 -1
  323. package/dist/tools/python/output.d.cts +1 -1
  324. package/dist/tools/python/output.d.ts +1 -1
  325. package/dist/tools/python/python.d.cts +2 -2
  326. package/dist/tools/python/python.d.ts +2 -2
  327. package/dist/tools/search/base.cjs.map +1 -1
  328. package/dist/tools/search/base.d.cts +1 -1
  329. package/dist/tools/search/base.d.ts +1 -1
  330. package/dist/tools/search/base.js.map +1 -1
  331. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  332. package/dist/tools/search/duckDuckGoSearch.d.cts +1 -1
  333. package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
  334. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  335. package/dist/tools/search/googleSearch.cjs.map +1 -1
  336. package/dist/tools/search/googleSearch.d.cts +1 -1
  337. package/dist/tools/search/googleSearch.d.ts +1 -1
  338. package/dist/tools/search/googleSearch.js.map +1 -1
  339. package/dist/tools/search/searXNGSearch.d.cts +1 -1
  340. package/dist/tools/search/searXNGSearch.d.ts +1 -1
  341. package/dist/tools/search/wikipedia.cjs +25 -0
  342. package/dist/tools/search/wikipedia.cjs.map +1 -1
  343. package/dist/tools/search/wikipedia.d.cts +2 -3
  344. package/dist/tools/search/wikipedia.d.ts +2 -3
  345. package/dist/tools/search/wikipedia.js +23 -0
  346. package/dist/tools/search/wikipedia.js.map +1 -1
  347. package/dist/tools/similarity.d.cts +1 -1
  348. package/dist/tools/similarity.d.ts +1 -1
  349. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  350. package/dist/tools/weather/openMeteo.d.cts +1 -1
  351. package/dist/tools/weather/openMeteo.d.ts +1 -1
  352. package/dist/tools/weather/openMeteo.js.map +1 -1
  353. package/dist/tools/web/webCrawler.cjs.map +1 -1
  354. package/dist/tools/web/webCrawler.d.cts +1 -1
  355. package/dist/tools/web/webCrawler.d.ts +1 -1
  356. package/dist/tools/web/webCrawler.js.map +1 -1
  357. package/dist/version.cjs +1 -1
  358. package/dist/version.js +1 -1
  359. package/dist/workflows/agent.d.cts +3 -3
  360. package/dist/workflows/agent.d.ts +3 -3
  361. package/dist/workflows/workflow.d.cts +1 -1
  362. package/dist/workflows/workflow.d.ts +1 -1
  363. package/package.json +68 -67
  364. package/dist/adapters/beeai_platform/agents/agent.cjs.map +0 -1
  365. package/dist/adapters/beeai_platform/agents/agent.js.map +0 -1
  366. package/dist/adapters/beeai_platform/agents/events.d.cts +0 -23
  367. package/dist/adapters/beeai_platform/agents/events.d.ts +0 -23
  368. /package/dist/adapters/{beeai_platform → agentstack}/agents/events.cjs +0 -0
  369. /package/dist/adapters/{beeai_platform → agentstack}/agents/events.cjs.map +0 -0
  370. /package/dist/adapters/{beeai_platform → agentstack}/agents/events.js +0 -0
  371. /package/dist/adapters/{beeai_platform → agentstack}/agents/events.js.map +0 -0
  372. /package/dist/adapters/{beeai_platform → agentstack}/agents/types.cjs +0 -0
  373. /package/dist/adapters/{beeai_platform → agentstack}/agents/types.cjs.map +0 -0
  374. /package/dist/adapters/{beeai_platform → agentstack}/agents/types.js +0 -0
  375. /package/dist/adapters/{beeai_platform → agentstack}/agents/types.js.map +0 -0
@@ -1 +1 @@
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":";;;;;;;;;;;;AAGC,SAAA,YAAA,CAAA,UAAA,EAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;;;;;;AAAA,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;;;AA2BM,MAAMA,QAAAA,GAAW;EACtBC,SAAAA,EAAW,WAAA;EACXC,iBAAAA,EAAmB,iBAAA;EACnBC,cAAAA,EAAgB;AAClB;AAEO,MAAMC,SAAAA,GAAY;EACvBC,SAAAA,EAAW,WAAA;EACXC,UAAAA,EAAY;AACd;AAEO,MAAMC,UAAAA,GAAa;EACxBC,GAAAA,EAAK,KAAA;EACLC,KAAAA,EAAO,OAAA;EACPC,MAAAA,EAAQ,QAAA;EACRC,QAAAA,EAAU,UAAA;EACVC,OAAAA,EAAS,SAAA;EACTC,iBAAAA,EAAmB,mBAAA;EACnBC,gBAAAA,EAAkB,kBAAA;EAClBC,aAAAA,EAAe;AACjB;AAEA,MAAMC,iBAAAA,GAAgE;EACpEC,GAAAA,EAAK,KAAA;EACLC,KAAAA,EAAO,IAAA;EACPC,MAAAA,EAAQ,IAAA;EACRC,QAAAA,EAAU,KAAA;EACVC,OAAAA,EAAS,IAAA;EACTC,iBAAAA,EAAmB,IAAA;EACnBC,gBAAAA,EAAkB,KAAA;EAClBC,aAAAA,EAAe;AACjB,CAAA;AAEO,MAAMC,UAAAA,GAAa;EACxBC,GAAAA,EAAK,OAAA;EACLC,EAAAA,EAAI,MAAA;EACJC,MAAAA,EAAQ;AACV;AAsBO,MAAMC,wBAAwBC,cAAAA,CAAAA;EAzFrC;;;EA0FEC,OAAAA,GAAmB;AACjB,IAAA,OAAO,CAAC,IAAA,CAAKC,MAAAA,IAAU,IAAA,CAAKA,MAAAA,CAAOC,iBAAiB,CAAA,IAAK,IAAA,CAAKD,MAAAA,CAAOE,OAAAA,CAAQC,MAAAA,KAAW,CAAA;AAC1F;AACF;AAEA,MAAMC,SAAAA,mBAAY,MAAA,CAAA,CAACC,KAAAA,KACjBA,KAAAA,CACGC,QAAQ,wBAAA,EAA0B,EAAA,CAAA,CAClCA,OAAAA,CAAQ,0BAA0B,EAAA,CAAA,CAClCA,OAAAA,CAAQ,MAAA,EAAQ,EAAA,CAAA,EAJH,WAAA,CAAA;AAMX,MAAMC,kBAAkBC,IAAAA,CAAAA;EArG/B;;;EAsGEC,IAAAA,GAAO,OAAA;EACPC,WAAAA,GAAc,CAAA,0EAAA,CAAA;EAEEC,OAAAA,GAAyDC,OAAAA,CAAQC,KAAKC,KAAAA,CAAM;IAC1FC,SAAAA,EAAW;AAAC,MAAA,MAAA;AAAQ,MAAA,QAAA;AAAU,MAAA;;IAC9BC,OAAAA,EAAS;GACX,CAAA;EAGAC,WAAAA,GAAc;AACZ,IAAA,MAAMC,WAAAA,GAAcC,EAAEC,MAAAA,CAAO;AAC3BC,MAAAA,KAAAA,EAAOF,EAAEG,UAAAA,CAAW/C,UAAAA,CAAAA,CAAYgD,OAAAA,CAAQhD,WAAWC,GAAG,CAAA;AACtD6B,MAAAA,KAAAA,EAAOc,CAAAA,CAAEK,MAAAA,EAAM,CAAGC,GAAAA,CAAI,CAAA;KACxB,CAAA;AAEA,IAAA,OAAON,EACJC,MAAAA,CAAO;MACNM,GAAAA,EAAKP,CAAAA,CAAEQ,MAAMR,CAAAA,CAAEK,MAAAA,GAASC,GAAAA,CAAI,CAAA,CAAA,CAAA,CAAIG,QAAAA,EAAQ;AACxCC,MAAAA,YAAAA,EAAcV,EACXC,MAAAA,CAAO;AACNU,QAAAA,OAAAA,EAASX,EAAEQ,KAAAA,CAAMT,WAAAA,EAAaa,QAAAA,EAAQ,CAAGC,SAAS,6BAAA,CAAA;AAClDC,QAAAA,OAAAA,EAASd,EAAEQ,KAAAA,CAAMT,WAAAA,EAAaU,QAAAA,EAAQ,CAAGI,SAAS,6BAAA;AACpD,OAAA,EACCJ,QAAAA,EAAQ;MACXM,KAAAA,EAAOf,CAAAA,CAAEgB,QAAM,CAAGC,GAAAA,GAAMX,GAAAA,CAAI,CAAA,CAAA,CAAGF,OAAAA,CAAQ,CAAA,CAAA;AACvCc,MAAAA,UAAAA,EAAYlB,CAAAA,CAAEgB,MAAAA,EAAM,CAAGC,GAAAA,EAAG,CAAGX,GAAAA,CAAI,CAAA,CAAA,CAAGa,GAAAA,CAAI,GAAA,CAAA,CAAKf,OAAAA,CAAQ,CAAA;KACvD,CAAA,CACCS,SAAS,mCAAA,CAAA;AACd;EAEA;AACE,IAAA,IAAA,CAAKO,QAAAA,EAAQ;AACf;AAEUC,EAAAA,aAAAA,CACRC,QACAC,QAAAA,EACqC;AACrC,IAAA,KAAA,CAAMF,aAAAA,CAAcC,QAAQC,QAAAA,CAAAA;AAC5B,IAAA,IAAI3C,OAAAA,CAAQ2C,SAAShB,GAAAA,IAAO,EAAE,CAAA,IAAK,CAACgB,SAASb,YAAAA,EAAc;AACzD,MAAA,MAAM,IAAIc,yBACR,CAAA,oFAAA,CAAsF,CAAA;AAE1F;AACF;AAEUC,EAAAA,cAAAA,CAAeC,KAAAA,EAA+B;AACtD,IAAA,OAAOC,eAAAA,CAAgB;AACrBZ,MAAAA,KAAAA,EAAOW,KAAAA,CAAMX,KAAAA;AACba,MAAAA,WAAAA,EAAaF,KAAAA,CAAMR,UAAAA;MACnBW,OAAAA,EAASjD,OAAAA,CAAQ8C,KAAAA,CAAMnB,GAAAA,IAAO,EAAE,IAAIuB,MAAAA,GAAYJ,KAAAA,CAAMnB,GAAAA,EAAKwB,GAAAA,CAAI9C,SAAAA,CAAAA;AAC/DyB,MAAAA,YAAAA,EACEgB,MAAMhB,YAAAA,IACN;AACEgB,QAAAA,KAAAA,CAAMhB,aAAaC,OAAAA,CAChBoB,GAAAA,CAAI,CAACC,GAAAA,KAAQ,GAAGnE,iBAAAA,CAAkBmE,GAAAA,CAAI9B,KAAK,CAAC,IAAI8B,GAAAA,CAAI9C,KAAK,EAAE,CAAA,CAC3D+C,IAAAA,CAAK3D,WAAWC,GAAG,CAAA;AACrBmD,QAAAA,CAAAA,KAAAA,CAAMhB,aAAaI,OAAAA,IAAW,IAC5BiB,GAAAA,CAAI,CAACC,QAAQ,CAAA,EAAGnE,iBAAAA,CAAkBmE,IAAI9B,KAAK,CAAC,IAAI8B,GAAAA,CAAI9C,KAAK,EAAE,CAAA,CAC3D+C,IAAAA,CAAK3D,WAAWG,MAAM;AAExByD,OAAAA,CAAAA,MAAAA,CAAOC,OAAAA,CAAAA,CACPF,IAAAA,CAAK3D,UAAAA,CAAWG,MAAM,CAAA;AAC3B2D,MAAAA,MAAAA,EAAQvF,QAAAA,CAASC,SAAAA;AACjBuF,MAAAA,SAAAA,EAAWpF,SAAAA,CAAUE;KACvB,CAAA;AACF;EAEA,MAAgBmF,IAAAA,CACdZ,KAAAA,EACAa,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,MAAAA,GAAS,IAAA,CAAKhB,cAAAA,CAAeC,KAAAA,CAAAA;AACnC,IAAA,MAAMgB,MAAM,CAAA,mCAAA,EAAsCC,kBAAAA,CAAmBF,MAAAA,CAAOG,QAAAA,EAAQ,CAAA,CAAA,CAAA;AACpF,IAAA,MAAMC,QAAAA,GAAW,MAAMC,KAAAA,CAAMJ,GAAAA,EAAK;AAChCK,MAAAA,MAAAA,EAAQP,GAAAA,CAAIO;KACd,CAAA;AACA,IAAA,MAAMC,IAAAA,GAAO,MAAM,IAAA,CAAKC,cAAAA,CAAeJ,QAAAA,CAAAA;AACvC,IAAA,OAAO,IAAInE,gBAAgBsE,IAAAA,CAAAA;AAC7B;AAEA,EAAA,MAAgBC,eAAeJ,QAAAA,EAA4C;AACzE,IAAA,MAAMK,MAAAA,GAAS,IAAIC,SAAAA,CAAU;MAC3BC,sBAAAA,EAAwB,IAAA;MACxBC,oBAAAA,EAAsB,KAAA;MACtBC,mBAAAA,EAAqB,IAAA;MACrBC,mBAAAA,EAAqB,KAAA;MACrBC,aAAAA,EAAe,QAAA;MACfC,gBAAAA,EAAkB,IAAA;MAClBC,kBAAAA,EAAoB;QAAEC,GAAAA,EAAK,KAAA;QAAOC,YAAAA,EAAc;AAAK,OAAA;MACrDC,mBAAAA,EAAqB,KAAA;MACrBC,aAAAA,EAAe,IAAA;MACfC,aAAAA,EAAe,KAAA;MACfC,cAAAA,EAAgB,IAAA;MAChBC,YAAAA,EAAc,OAAA;MACdC,UAAAA,EAAY,IAAA;MACZC,iBAAAA,EAAmB;KACrB,CAAA;AAEA,IAAA,MAAMC,IAAAA,GAAO,MAAMvB,QAAAA,CAASuB,IAAAA,EAAI;AAChC,IAAA,MAAMC,UAAAA,GAAanB,MAAAA,CAAOoB,KAAAA,CAAMF,IAAAA,CAAAA;AAEhC,IAAA,IAAI,CAACvB,SAAS0B,EAAAA,EAAI;AAChB,MAAA,MAAM,IAAIC,UAAU,kCAAA,EAAoC;AACtD,QAAA,IAAIC,KAAAA,CAAMC,IAAAA,CAAKC,SAAAA,CAAUC,OAAAA,CAAQP,UAAAA,EAAY;AAAC,UAAA,MAAA;AAAQ,UAAA;WAAUA,UAAAA,CAAAA,EAAa,IAAA,EAAM,CAAA,CAAA;AACpF,OAAA,CAAA;AACH;AAEA,IAAA,IAAItF,OAAAA,GAAiC6F,QAAQP,UAAAA,EAAY;AAAC,MAAA,MAAA;AAAQ,MAAA;AAAU,KAAA,EAAA,EAAE,CAAA;AAC9EtF,IAAAA,OAAAA,GAAU8F,UAAU9F,OAAAA,CAAAA;AAEpB,IAAA,OAAO;MACLD,YAAAA,EAAcgG,IAAAA,CAAK3D,GAAAA,CAAIyD,OAAAA,CAAQP,UAAAA,EAAY;AAAC,QAAA,MAAA;AAAQ,QAAA;SAAiB,CAAA,CAAA,EAAItF,QAAQC,MAAM,CAAA;AACvF+F,MAAAA,UAAAA,EAAYH,QAAQP,UAAAA,EAAY;AAAC,QAAA,MAAA;AAAQ,QAAA;SAAe,CAAA,CAAA;AACxDW,MAAAA,YAAAA,EAAcJ,QAAQP,UAAAA,EAAY;AAAC,QAAA,MAAA;AAAQ,QAAA;SAAiB,CAAA,CAAA;AAC5DtF,MAAAA,OAAAA,EAASA,OAAAA,CAAQgD,GAAAA,CAAI,CAACkD,KAAAA,KACpBC,MAAAA,CACE;QACEC,EAAAA,EAAIlG,SAAAA,CAAUgG,MAAME,EAAE,CAAA;AACtBzC,QAAAA,GAAAA,EAAKuC,KAAAA,CAAME,EAAAA;AACXpH,QAAAA,KAAAA,EAAOkH,KAAAA,CAAMlH,KAAAA;AACbqH,QAAAA,OAAAA,EAASH,KAAAA,CAAMG,OAAAA;AACfC,QAAAA,SAAAA,EAAWJ,KAAAA,CAAMI,SAAAA;AACjBC,QAAAA,OAAAA,EAASL,KAAAA,CAAMK,OAAAA;QACfC,OAAAA,EAASV,SAAAA,CAAUI,MAAMjH,MAAM,CAAA,CAC5BkE,OAAOC,OAAAA,CAAAA,CACPJ,GAAAA,CAAI,CAAC/D,MAAAA,MAAiB;AACrBsB,UAAAA,IAAAA,EAAMtB,MAAAA,CAAOsB,IAAAA;AACbkG,UAAAA,WAAAA,EAAaX,SAAAA,CAAU7G,MAAAA,CAAOwH,WAAAA,IAAe,EAAE;SACjD,CAAA,CAAA;AACFC,QAAAA,GAAAA,EAAKR,KAAAA,CAAMQ,GAAAA;AACXvH,QAAAA,OAAAA,EAAS+G,KAAAA,CAAM/G,OAAAA;AACfwH,QAAAA,gBAAAA,EAAkBT,KAAAA,CAAMU,WAAAA;AACxBC,QAAAA,eAAAA,EAAiBX,KAAAA,CAAMY,gBAAAA;AACvBC,QAAAA,UAAAA,EAAYjB,SAAAA,CAAUI,KAAAA,CAAMc,QAAQ,CAAA,CAAE7D,OAAOC,OAAAA,CAAAA;AAC7C6D,QAAAA,KAAAA,EAAOnB,SAAAA,CAAUI,KAAAA,CAAMgB,IAAI,CAAA,CAAE/D,OAAOC,OAAAA;AACtC,OAAA,EACA+D,SAAAA,CAAAA;AAGN,KAAA;AACF;AACF","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
+ {"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":["../../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"]}
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-pJzHC_AM.cjs';
10
+ import { E as Emitter, C as Callback } from '../emitter-DpqUYjXH.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-BqpLJQVb.js';
10
+ import { E as Emitter, C as Callback } from '../emitter-CZFbzlUi.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":["../../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
+ {"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"]}
@@ -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-pJzHC_AM.cjs';
6
+ import '../emitter-DpqUYjXH.cjs';
7
7
  import '../internals/types.cjs';
8
8
  import '../internals/helpers/guards.cjs';
9
9
  import '../internals/serializable.cjs';
@@ -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-BqpLJQVb.js';
6
+ import '../emitter-CZFbzlUi.js';
7
7
  import '../internals/types.js';
8
8
  import '../internals/helpers/guards.js';
9
9
  import '../internals/serializable.js';
@@ -11,14 +11,14 @@ import 'promise-based-task';
11
11
  import '../cache/base.cjs';
12
12
  import '../internals/helpers/schema.cjs';
13
13
  import 'zod-to-json-schema';
14
- import '../emitter-pJzHC_AM.cjs';
14
+ import '../emitter-DpqUYjXH.cjs';
15
15
  import '../internals/helpers/promise.cjs';
16
16
  import '../template.cjs';
17
17
  import './python/storage.cjs';
18
18
  import 'fs';
19
19
  import './python/output.cjs';
20
20
  import 'node:tls';
21
- import '../chat-BZ55YQab.cjs';
21
+ import '../chat-CRb3vUVg.cjs';
22
22
  import '../backend/message.cjs';
23
23
  import 'ai';
24
24
  import '../backend/constants.cjs';
@@ -11,14 +11,14 @@ import 'promise-based-task';
11
11
  import '../cache/base.js';
12
12
  import '../internals/helpers/schema.js';
13
13
  import 'zod-to-json-schema';
14
- import '../emitter-BqpLJQVb.js';
14
+ import '../emitter-CZFbzlUi.js';
15
15
  import '../internals/helpers/promise.js';
16
16
  import '../template.js';
17
17
  import './python/storage.js';
18
18
  import 'fs';
19
19
  import './python/output.js';
20
20
  import 'node:tls';
21
- import '../chat-BBoOSvzm.js';
21
+ import '../chat-C0s-o6ll.js';
22
22
  import '../backend/message.js';
23
23
  import 'ai';
24
24
  import '../backend/constants.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/database/elasticsearch.ts"],"names":["ElasticSearchAction","ListIndices","GetIndexDetails","Search","ElasticSearchTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","indexName","string","optional","query","start","coerce","number","int","min","default","size","max","emitter","Emitter","root","child","namespace","creator","validateInput","schema","input","ToolInputValidationError","register","options","connection","cloud","node","nodes","ValidationError","message","propertyName","client","Client","info","error","ToolError","isRetryable","isFatal","_run","_options","run","indices","listIndices","signal","JSONToolOutput","indexDetails","getIndexDetails","response","search","aggregations","hits","map","hit","_source","cat","expand_wildcards","h","format","filter","record","index","startsWith","getMapping","parsedQuery","parseBrokenJson","searchBody","from","body"],"mappings":"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","file":"elasticsearch.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { RunContext } from \"@/context.js\";\nimport { z } from \"zod\";\nimport { ValidationError } from \"ajv\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { Client, ClientOptions, estypes as ESTypes } from \"@elastic/elasticsearch\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface ElasticSearchToolOptions extends BaseToolOptions {\n connection: ClientOptions;\n}\n\nexport type ElasticSearchToolResult =\n | ESTypes.CatIndicesResponse\n | ESTypes.IndicesGetMappingResponse\n | ESTypes.SearchResponse;\n\nexport const ElasticSearchAction = {\n ListIndices: \"LIST_INDICES\",\n GetIndexDetails: \"GET_INDEX_DETAILS\",\n Search: \"SEARCH\",\n} as const;\n\nexport class ElasticSearchTool extends Tool<\n JSONToolOutput<ElasticSearchToolResult>,\n ElasticSearchToolOptions\n> {\n name = \"ElasticSearchTool\";\n\n description = `Can query data from an ElasticSearch database. IMPORTANT: strictly follow this order of actions:\n 1. ${ElasticSearchAction.ListIndices} - retrieve a list of available indices\n 2. ${ElasticSearchAction.GetIndexDetails} - get details of index fields\n 3. ${ElasticSearchAction.Search} - perform search or aggregation query on a specific index or pass the original user query without modifications if it's a valid JSON ElasticSearch query after identifying the index`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(ElasticSearchAction)\n .describe(\n `The action to perform. ${ElasticSearchAction.ListIndices} lists all indices, ${ElasticSearchAction.GetIndexDetails} fetches details for a specified index, and ${ElasticSearchAction.Search} executes a search or aggregation query`,\n ),\n indexName: z\n .string()\n .optional()\n .describe(\n `The name of the index to query, required for ${ElasticSearchAction.GetIndexDetails} and ${ElasticSearchAction.Search}`,\n ),\n query: z\n .string()\n .optional()\n .describe(\n `Valid ElasticSearch JSON search or aggregation query for ${ElasticSearchAction.Search} action`,\n ),\n start: z.coerce\n .number()\n .int()\n .min(0)\n .default(0)\n .optional()\n .describe(\n \"The record index from which the query will start. Increase by the size of the query to get the next page of results\",\n ),\n size: z.coerce\n .number()\n .int()\n .min(0)\n .max(10)\n .default(10)\n .optional()\n .describe(\"How many records will be retrieved from the ElasticSearch query. Maximum is 10\"),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, JSONToolOutput<ElasticSearchToolResult>> =\n Emitter.root.child({\n namespace: [\"tool\", \"database\", \"elasticsearch\"],\n creator: this,\n });\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action === ElasticSearchAction.GetIndexDetails && !input.indexName) {\n throw new ToolInputValidationError(\n `Index name is required for ${ElasticSearchAction.GetIndexDetails} action.`,\n );\n }\n if (input.action === ElasticSearchAction.Search && (!input.indexName || !input.query)) {\n throw new ToolInputValidationError(\n `Both index name and query are required for ${ElasticSearchAction.Search} action.`,\n );\n }\n }\n\n static {\n this.register();\n }\n\n public constructor(options: ElasticSearchToolOptions) {\n super(options);\n if (!options.connection.cloud && !options.connection.node && !options.connection.nodes) {\n throw new ValidationError([\n {\n message: \"At least one of the properties must be provided\",\n propertyName: \"connection.cloud, connection.node, connection.nodes\",\n },\n ]);\n }\n }\n\n @Cache()\n protected async client(): Promise<Client> {\n try {\n const client = new Client(this.options.connection);\n await client.info();\n return client;\n } catch (error) {\n throw new ToolError(`Unable to connect to ElasticSearch.`, [error], {\n isRetryable: false,\n isFatal: true,\n });\n }\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ): Promise<JSONToolOutput<any>> {\n if (input.action === ElasticSearchAction.ListIndices) {\n const indices = await this.listIndices(run.signal);\n return new JSONToolOutput(indices);\n } else if (input.action === ElasticSearchAction.GetIndexDetails) {\n const indexDetails = await this.getIndexDetails(input, run.signal);\n return new JSONToolOutput(indexDetails);\n } else if (input.action === ElasticSearchAction.Search) {\n const response = await this.search(input, run.signal);\n if (response.aggregations) {\n return new JSONToolOutput(response.aggregations);\n } else {\n return new JSONToolOutput(response.hits.hits.map((hit: ESTypes.SearchHit) => hit._source));\n }\n } else {\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n }\n\n protected async listIndices(signal?: AbortSignal): Promise<ESTypes.CatIndicesResponse> {\n const client = await this.client();\n const response = await client.cat.indices(\n {\n expand_wildcards: \"open\",\n h: \"index\",\n format: \"json\",\n },\n { signal: signal },\n );\n return response\n .filter((record) => record.index && !record.index.startsWith(\".\")) // Exclude system indices\n .map((record) => ({ index: record.index }));\n }\n\n protected async getIndexDetails(\n input: ToolInput<this>,\n signal: AbortSignal,\n ): Promise<ESTypes.IndicesGetMappingResponse> {\n const client = await this.client();\n return await client.indices.getMapping(\n {\n index: input.indexName,\n },\n { signal: signal },\n );\n }\n\n protected async search(\n input: ToolInput<this>,\n signal: AbortSignal,\n ): Promise<ESTypes.SearchResponse> {\n const parsedQuery = parseBrokenJson(input.query);\n const searchBody: ESTypes.SearchRequest = {\n ...parsedQuery,\n from: parsedQuery.from || input.start,\n size: parsedQuery.size || input.size,\n };\n const client = await this.client();\n return await client.search(\n {\n index: input.indexName,\n body: searchBody,\n },\n { signal: signal },\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/database/elasticsearch.ts"],"names":["ElasticSearchAction","ListIndices","GetIndexDetails","Search","ElasticSearchTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","indexName","string","optional","query","start","coerce","number","int","min","default","size","max","emitter","Emitter","root","child","namespace","creator","validateInput","schema","input","ToolInputValidationError","register","options","connection","cloud","node","nodes","ValidationError","message","propertyName","client","Client","info","error","ToolError","isRetryable","isFatal","_run","_options","run","indices","listIndices","signal","JSONToolOutput","indexDetails","getIndexDetails","response","search","aggregations","hits","map","hit","_source","cat","expand_wildcards","h","format","filter","record","index","startsWith","getMapping","parsedQuery","parseBrokenJson","searchBody","from","body"],"mappings":"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","file":"elasticsearch.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { RunContext } from \"@/context.js\";\nimport { z } from \"zod\";\nimport { ValidationError } from \"ajv\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { Client, ClientOptions, estypes as ESTypes } from \"@elastic/elasticsearch\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface ElasticSearchToolOptions extends BaseToolOptions {\n connection: ClientOptions;\n}\n\nexport type ElasticSearchToolResult =\n | ESTypes.CatIndicesResponse\n | ESTypes.IndicesGetMappingResponse\n | ESTypes.SearchResponse;\n\nexport const ElasticSearchAction = {\n ListIndices: \"LIST_INDICES\",\n GetIndexDetails: \"GET_INDEX_DETAILS\",\n Search: \"SEARCH\",\n} as const;\n\nexport class ElasticSearchTool extends Tool<\n JSONToolOutput<ElasticSearchToolResult>,\n ElasticSearchToolOptions\n> {\n name = \"ElasticSearchTool\";\n\n description = `Can query data from an ElasticSearch database. IMPORTANT: strictly follow this order of actions:\n 1. ${ElasticSearchAction.ListIndices} - retrieve a list of available indices\n 2. ${ElasticSearchAction.GetIndexDetails} - get details of index fields\n 3. ${ElasticSearchAction.Search} - perform search or aggregation query on a specific index or pass the original user query without modifications if it's a valid JSON ElasticSearch query after identifying the index`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(ElasticSearchAction)\n .describe(\n `The action to perform. ${ElasticSearchAction.ListIndices} lists all indices, ${ElasticSearchAction.GetIndexDetails} fetches details for a specified index, and ${ElasticSearchAction.Search} executes a search or aggregation query`,\n ),\n indexName: z\n .string()\n .optional()\n .describe(\n `The name of the index to query, required for ${ElasticSearchAction.GetIndexDetails} and ${ElasticSearchAction.Search}`,\n ),\n query: z\n .string()\n .optional()\n .describe(\n `Valid ElasticSearch JSON search or aggregation query for ${ElasticSearchAction.Search} action`,\n ),\n start: z.coerce\n .number()\n .int()\n .min(0)\n .default(0)\n .optional()\n .describe(\n \"The record index from which the query will start. Increase by the size of the query to get the next page of results\",\n ),\n size: z.coerce\n .number()\n .int()\n .min(0)\n .max(10)\n .default(10)\n .optional()\n .describe(\"How many records will be retrieved from the ElasticSearch query. Maximum is 10\"),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, JSONToolOutput<ElasticSearchToolResult>> =\n Emitter.root.child({\n namespace: [\"tool\", \"database\", \"elasticsearch\"],\n creator: this,\n });\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action === ElasticSearchAction.GetIndexDetails && !input.indexName) {\n throw new ToolInputValidationError(\n `Index name is required for ${ElasticSearchAction.GetIndexDetails} action.`,\n );\n }\n if (input.action === ElasticSearchAction.Search && (!input.indexName || !input.query)) {\n throw new ToolInputValidationError(\n `Both index name and query are required for ${ElasticSearchAction.Search} action.`,\n );\n }\n }\n\n static {\n this.register();\n }\n\n public constructor(options: ElasticSearchToolOptions) {\n super(options);\n if (!options.connection.cloud && !options.connection.node && !options.connection.nodes) {\n throw new ValidationError([\n {\n message: \"At least one of the properties must be provided\",\n propertyName: \"connection.cloud, connection.node, connection.nodes\",\n },\n ]);\n }\n }\n\n @Cache()\n protected async client(): Promise<Client> {\n try {\n const client = new Client(this.options.connection);\n await client.info();\n return client;\n } catch (error) {\n throw new ToolError(`Unable to connect to ElasticSearch.`, [error], {\n isRetryable: false,\n isFatal: true,\n });\n }\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ): Promise<JSONToolOutput<any>> {\n if (input.action === ElasticSearchAction.ListIndices) {\n const indices = await this.listIndices(run.signal);\n return new JSONToolOutput(indices);\n } else if (input.action === ElasticSearchAction.GetIndexDetails) {\n const indexDetails = await this.getIndexDetails(input, run.signal);\n return new JSONToolOutput(indexDetails);\n } else if (input.action === ElasticSearchAction.Search) {\n const response = await this.search(input, run.signal);\n if (response.aggregations) {\n return new JSONToolOutput(response.aggregations);\n } else {\n return new JSONToolOutput(response.hits.hits.map((hit: ESTypes.SearchHit) => hit._source));\n }\n } else {\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n }\n\n protected async listIndices(signal?: AbortSignal): Promise<ESTypes.CatIndicesResponse> {\n const client = await this.client();\n const response = await client.cat.indices(\n {\n expand_wildcards: \"open\",\n h: \"index\",\n format: \"json\",\n },\n { signal: signal },\n );\n return response\n .filter((record) => record.index && !record.index.startsWith(\".\")) // Exclude system indices\n .map((record) => ({ index: record.index }));\n }\n\n protected async getIndexDetails(\n input: ToolInput<this>,\n signal: AbortSignal,\n ): Promise<ESTypes.IndicesGetMappingResponse> {\n const client = await this.client();\n return await client.indices.getMapping(\n {\n index: input.indexName,\n },\n { signal: signal },\n );\n }\n\n protected async search(\n input: ToolInput<this>,\n signal: AbortSignal,\n ): Promise<ESTypes.SearchResponse> {\n const parsedQuery = parseBrokenJson(input.query);\n const searchBody: ESTypes.SearchRequest = {\n ...parsedQuery,\n from: parsedQuery.from || input.start,\n size: parsedQuery.size || input.size,\n };\n const client = await this.client();\n return await client.search(\n {\n index: input.indexName,\n body: searchBody,\n },\n { signal: signal },\n );\n }\n}\n"]}
@@ -10,7 +10,7 @@ import '../../internals/helpers/guards.cjs';
10
10
  import '../../internals/serializable.cjs';
11
11
  import 'promise-based-task';
12
12
  import '../../cache/base.cjs';
13
- import '../../emitter-pJzHC_AM.cjs';
13
+ import '../../emitter-DpqUYjXH.cjs';
14
14
  import '../../internals/helpers/promise.cjs';
15
15
  import 'zod-to-json-schema';
16
16
 
@@ -10,7 +10,7 @@ import '../../internals/helpers/guards.js';
10
10
  import '../../internals/serializable.js';
11
11
  import 'promise-based-task';
12
12
  import '../../cache/base.js';
13
- import '../../emitter-BqpLJQVb.js';
13
+ import '../../emitter-CZFbzlUi.js';
14
14
  import '../../internals/helpers/promise.js';
15
15
  import 'zod-to-json-schema';
16
16