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/database/sql.ts"],"names":["SQLToolAction","GetMetadata","Query","SQLToolOutput","JSONToolOutput","SQLTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","query","string","optional","emitter","Emitter","root","child","namespace","creator","options","connection","dialect","ValidationError","message","propertyName","schema","provider","storage","validateInput","input","ToolInputValidationError","register","sequelize","Sequelize","authenticate","error","ToolError","isRetryable","isFatal","_run","_options","metadata","getMetadata","executeQuery","isReadOnlyQuery","success","results","Array","isArray","length","schemaHint","errorMessage","normalizedQuery","trim","toUpperCase","startsWith","destroy","cache","Cache","getInstance","entry","get","clear","data","close"],"mappings":"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","file":"sql.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Sequelize, Options } from \"sequelize\";\nimport { Provider, getMetadata } from \"@/tools/database/metadata.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ValidationError } from \"ajv\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ninterface ToolOptions extends BaseToolOptions {\n provider: Provider;\n connection: Options;\n}\n\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SQLToolAction = {\n GetMetadata: \"GET_METADATA\",\n Query: \"QUERY\",\n} as const;\n\nexport class SQLToolOutput extends JSONToolOutput<any> {}\n\nexport class SQLTool extends Tool<SQLToolOutput, ToolOptions, ToolRunOptions> {\n name = \"SQLTool\";\n\n description = `Converts natural language to SQL query and executes it. IMPORTANT: strictly follow this order of actions:\n 1. ${SQLToolAction.GetMetadata} - get database tables structure (metadata)\n 2. ${SQLToolAction.Query} - execute the generated SQL query`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(SQLToolAction)\n .describe(\n `The action to perform. ${SQLToolAction.GetMetadata} get database tables structure, ${SQLToolAction.Query} execute the SQL query`,\n ),\n query: z\n .string()\n .optional()\n .describe(`The SQL query to be executed, required for ${SQLToolAction.Query} action`),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, SQLToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"database\", \"sql\"],\n creator: this,\n });\n\n public constructor(options: ToolOptions) {\n super(options);\n if (!options.connection.dialect) {\n throw new ValidationError([\n {\n message: \"Property is required\",\n propertyName: \"connection.dialect\",\n },\n ]);\n }\n if (\n !options.connection.schema &&\n (options.provider === \"oracle\" || options.provider === \"db2\")\n ) {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.schema\",\n },\n ]);\n }\n if (!options.connection.storage && options.provider === \"sqlite\") {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.storage\",\n },\n ]);\n }\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action === SQLToolAction.Query && !input.query) {\n throw new ToolInputValidationError(\n `SQL Query is required for ${SQLToolAction.Query} action.`,\n );\n }\n }\n\n static {\n this.register();\n }\n\n @Cache()\n protected async connection(): Promise<Sequelize> {\n try {\n const sequelize = new Sequelize(this.options.connection);\n\n await sequelize.authenticate();\n return sequelize;\n } catch (error) {\n throw new ToolError(`Unable to connect to database: ${error}`, [], {\n isRetryable: false,\n isFatal: true,\n });\n }\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<ToolRunOptions>,\n ): Promise<SQLToolOutput> {\n const { provider, connection } = this.options;\n const { schema } = connection;\n\n if (input.action === SQLToolAction.GetMetadata) {\n const sequelize = await this.connection();\n const metadata = await getMetadata(sequelize, provider, schema);\n return new SQLToolOutput(metadata);\n }\n\n if (input.action === SQLToolAction.Query) {\n return await this.executeQuery(input.query!, provider, schema);\n }\n\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n\n protected async executeQuery(\n query: string,\n provider: Provider,\n schema: string | undefined,\n ): Promise<SQLToolOutput> {\n if (!this.isReadOnlyQuery(query)) {\n return new JSONToolOutput({\n success: false,\n error: \"Invalid query. Only SELECT queries are allowed.\",\n });\n }\n\n try {\n const sequelize = await this.connection();\n const [results] = await sequelize.query(query);\n if (Array.isArray(results) && results.length > 0) {\n return new JSONToolOutput({ success: true, results });\n }\n\n return new JSONToolOutput({\n success: false,\n message: `No rows selected`,\n });\n } catch (error) {\n const schemaHint = schema\n ? `Fully qualify the table names by appending the schema name \"${schema}\" as a prefix, for example: ${schema}.table_name`\n : \"\";\n const errorMessage = `Generate a correct query that retrieves data using the appropriate ${provider} dialect.\n ${schemaHint}\n The original request was: ${query}, and the error was: ${error.message}.`;\n throw new ToolError(errorMessage);\n }\n }\n\n private isReadOnlyQuery(query: string): boolean {\n const normalizedQuery = query.trim().toUpperCase();\n return (\n normalizedQuery.startsWith(\"SELECT\") ||\n normalizedQuery.startsWith(\"SHOW\") ||\n normalizedQuery.startsWith(\"DESC\")\n );\n }\n\n public async destroy(): Promise<void> {\n // @ts-expect-error protected property\n const cache = Cache.getInstance(this, \"connection\");\n const entry = cache.get();\n\n if (entry) {\n cache.clear();\n\n try {\n await entry.data.close();\n } catch (error) {\n throw new ToolError(`Failed to close the database connection`, [error]);\n }\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/database/sql.ts"],"names":["SQLToolAction","GetMetadata","Query","SQLToolOutput","JSONToolOutput","SQLTool","Tool","name","description","inputSchema","z","object","action","nativeEnum","describe","query","string","optional","emitter","Emitter","root","child","namespace","creator","options","connection","dialect","ValidationError","message","propertyName","schema","provider","storage","validateInput","input","ToolInputValidationError","register","sequelize","Sequelize","authenticate","error","ToolError","isRetryable","isFatal","_run","_options","metadata","getMetadata","executeQuery","isReadOnlyQuery","success","results","Array","isArray","length","schemaHint","errorMessage","normalizedQuery","trim","toUpperCase","startsWith","destroy","cache","Cache","getInstance","entry","get","clear","data","close"],"mappings":"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","file":"sql.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Tool,\n ToolInput,\n ToolError,\n BaseToolOptions,\n BaseToolRunOptions,\n JSONToolOutput,\n ToolInputValidationError,\n ToolEmitter,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Sequelize, Options } from \"sequelize\";\nimport { Provider, getMetadata } from \"@/tools/database/metadata.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ValidationError } from \"ajv\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ninterface ToolOptions extends BaseToolOptions {\n provider: Provider;\n connection: Options;\n}\n\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SQLToolAction = {\n GetMetadata: \"GET_METADATA\",\n Query: \"QUERY\",\n} as const;\n\nexport class SQLToolOutput extends JSONToolOutput<any> {}\n\nexport class SQLTool extends Tool<SQLToolOutput, ToolOptions, ToolRunOptions> {\n name = \"SQLTool\";\n\n description = `Converts natural language to SQL query and executes it. IMPORTANT: strictly follow this order of actions:\n 1. ${SQLToolAction.GetMetadata} - get database tables structure (metadata)\n 2. ${SQLToolAction.Query} - execute the generated SQL query`;\n\n inputSchema() {\n return z.object({\n action: z\n .nativeEnum(SQLToolAction)\n .describe(\n `The action to perform. ${SQLToolAction.GetMetadata} get database tables structure, ${SQLToolAction.Query} execute the SQL query`,\n ),\n query: z\n .string()\n .optional()\n .describe(`The SQL query to be executed, required for ${SQLToolAction.Query} action`),\n });\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, SQLToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"database\", \"sql\"],\n creator: this,\n });\n\n public constructor(options: ToolOptions) {\n super(options);\n if (!options.connection.dialect) {\n throw new ValidationError([\n {\n message: \"Property is required\",\n propertyName: \"connection.dialect\",\n },\n ]);\n }\n if (\n !options.connection.schema &&\n (options.provider === \"oracle\" || options.provider === \"db2\")\n ) {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.schema\",\n },\n ]);\n }\n if (!options.connection.storage && options.provider === \"sqlite\") {\n throw new ValidationError([\n {\n message: `Property is required for ${options.provider}`,\n propertyName: \"connection.storage\",\n },\n ]);\n }\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n input: unknown,\n ): asserts input is ToolInput<this> {\n super.validateInput(schema, input);\n if (input.action === SQLToolAction.Query && !input.query) {\n throw new ToolInputValidationError(\n `SQL Query is required for ${SQLToolAction.Query} action.`,\n );\n }\n }\n\n static {\n this.register();\n }\n\n @Cache()\n protected async connection(): Promise<Sequelize> {\n try {\n const sequelize = new Sequelize(this.options.connection);\n\n await sequelize.authenticate();\n return sequelize;\n } catch (error) {\n throw new ToolError(`Unable to connect to database: ${error}`, [], {\n isRetryable: false,\n isFatal: true,\n });\n }\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<ToolRunOptions>,\n ): Promise<SQLToolOutput> {\n const { provider, connection } = this.options;\n const { schema } = connection;\n\n if (input.action === SQLToolAction.GetMetadata) {\n const sequelize = await this.connection();\n const metadata = await getMetadata(sequelize, provider, schema);\n return new SQLToolOutput(metadata);\n }\n\n if (input.action === SQLToolAction.Query) {\n return await this.executeQuery(input.query!, provider, schema);\n }\n\n throw new ToolError(`Invalid action specified: ${input.action}`);\n }\n\n protected async executeQuery(\n query: string,\n provider: Provider,\n schema: string | undefined,\n ): Promise<SQLToolOutput> {\n if (!this.isReadOnlyQuery(query)) {\n return new JSONToolOutput({\n success: false,\n error: \"Invalid query. Only SELECT queries are allowed.\",\n });\n }\n\n try {\n const sequelize = await this.connection();\n const [results] = await sequelize.query(query);\n if (Array.isArray(results) && results.length > 0) {\n return new JSONToolOutput({ success: true, results });\n }\n\n return new JSONToolOutput({\n success: false,\n message: `No rows selected`,\n });\n } catch (error) {\n const schemaHint = schema\n ? `Fully qualify the table names by appending the schema name \"${schema}\" as a prefix, for example: ${schema}.table_name`\n : \"\";\n const errorMessage = `Generate a correct query that retrieves data using the appropriate ${provider} dialect.\n ${schemaHint}\n The original request was: ${query}, and the error was: ${error.message}.`;\n throw new ToolError(errorMessage);\n }\n }\n\n private isReadOnlyQuery(query: string): boolean {\n const normalizedQuery = query.trim().toUpperCase();\n return (\n normalizedQuery.startsWith(\"SELECT\") ||\n normalizedQuery.startsWith(\"SHOW\") ||\n normalizedQuery.startsWith(\"DESC\")\n );\n }\n\n public async destroy(): Promise<void> {\n // @ts-expect-error protected property\n const cache = Cache.getInstance(this, \"connection\");\n const entry = cache.get();\n\n if (entry) {\n cache.clear();\n\n try {\n await entry.data.close();\n } catch (error) {\n throw new ToolError(`Failed to close the database connection`, [error]);\n }\n }\n }\n}\n"]}
@@ -2,7 +2,7 @@ import { BaseToolOptions, Tool, StringToolOutput, ToolEmitter, ToolInput, BaseTo
2
2
  import { z } from 'zod';
3
3
  import { GetRunContext } from '../context.cjs';
4
4
  import { PromptTemplate } from '../template.cjs';
5
- import { m as ChatModel } from '../chat-BZ55YQab.cjs';
5
+ import { m as ChatModel } from '../chat-CRb3vUVg.cjs';
6
6
  import 'ajv';
7
7
  import '../errors.cjs';
8
8
  import '../internals/types.cjs';
@@ -12,7 +12,7 @@ import 'promise-based-task';
12
12
  import '../cache/base.cjs';
13
13
  import '../internals/helpers/schema.cjs';
14
14
  import 'zod-to-json-schema';
15
- import '../emitter-pJzHC_AM.cjs';
15
+ import '../emitter-DpqUYjXH.cjs';
16
16
  import '../internals/helpers/promise.cjs';
17
17
  import '../backend/message.cjs';
18
18
  import 'ai';
@@ -2,7 +2,7 @@ import { BaseToolOptions, Tool, StringToolOutput, ToolEmitter, ToolInput, BaseTo
2
2
  import { z } from 'zod';
3
3
  import { GetRunContext } from '../context.js';
4
4
  import { PromptTemplate } from '../template.js';
5
- import { m as ChatModel } from '../chat-BBoOSvzm.js';
5
+ import { m as ChatModel } from '../chat-C0s-o6ll.js';
6
6
  import 'ajv';
7
7
  import '../errors.js';
8
8
  import '../internals/types.js';
@@ -12,7 +12,7 @@ import 'promise-based-task';
12
12
  import '../cache/base.js';
13
13
  import '../internals/helpers/schema.js';
14
14
  import 'zod-to-json-schema';
15
- import '../emitter-BqpLJQVb.js';
15
+ import '../emitter-CZFbzlUi.js';
16
16
  import '../internals/helpers/promise.js';
17
17
  import '../backend/message.js';
18
18
  import 'ai';
@@ -12,7 +12,7 @@ import '../cache/base.cjs';
12
12
  import '../internals/helpers/schema.cjs';
13
13
  import 'zod';
14
14
  import 'zod-to-json-schema';
15
- import '../emitter-pJzHC_AM.cjs';
15
+ import '../emitter-DpqUYjXH.cjs';
16
16
  import '../internals/helpers/promise.cjs';
17
17
 
18
18
  /**
@@ -12,7 +12,7 @@ import '../cache/base.js';
12
12
  import '../internals/helpers/schema.js';
13
13
  import 'zod';
14
14
  import 'zod-to-json-schema';
15
- import '../emitter-BqpLJQVb.js';
15
+ import '../emitter-CZFbzlUi.js';
16
16
  import '../internals/helpers/promise.js';
17
17
 
18
18
  /**
@@ -1,7 +1,7 @@
1
1
  import { BaseCache } from '../cache/base.cjs';
2
2
  import * as promise_based_task from 'promise-based-task';
3
3
  import { BaseToolOptions, StringToolOutput, Tool, ToolEmitter, BaseToolRunOptions } from './base.cjs';
4
- import { C as Callback, E as Emitter } from '../emitter-pJzHC_AM.cjs';
4
+ import { C as Callback, E as Emitter } from '../emitter-DpqUYjXH.cjs';
5
5
  import { GetRunContext } from '../context.cjs';
6
6
  import { SchemaObject } from 'ajv';
7
7
  import '../internals/serializable.cjs';
@@ -1,7 +1,7 @@
1
1
  import { BaseCache } from '../cache/base.js';
2
2
  import * as promise_based_task from 'promise-based-task';
3
3
  import { BaseToolOptions, StringToolOutput, Tool, ToolEmitter, BaseToolRunOptions } from './base.js';
4
- import { C as Callback, E as Emitter } from '../emitter-BqpLJQVb.js';
4
+ import { C as Callback, E as Emitter } from '../emitter-CZFbzlUi.js';
5
5
  import { GetRunContext } from '../context.js';
6
6
  import { SchemaObject } from 'ajv';
7
7
  import '../internals/serializable.js';
@@ -2,7 +2,7 @@ import { ToolOutput } from '../base.cjs';
2
2
  import { PythonFile } from './storage.cjs';
3
3
  import 'ajv';
4
4
  import '../../context.cjs';
5
- import '../../emitter-pJzHC_AM.cjs';
5
+ import '../../emitter-DpqUYjXH.cjs';
6
6
  import '../../internals/types.cjs';
7
7
  import '../../internals/helpers/guards.cjs';
8
8
  import '../../internals/serializable.cjs';
@@ -2,7 +2,7 @@ import { ToolOutput } from '../base.js';
2
2
  import { PythonFile } from './storage.js';
3
3
  import 'ajv';
4
4
  import '../../context.js';
5
- import '../../emitter-BqpLJQVb.js';
5
+ import '../../emitter-CZFbzlUi.js';
6
6
  import '../../internals/types.js';
7
7
  import '../../internals/helpers/guards.js';
8
8
  import '../../internals/serializable.js';
@@ -7,8 +7,8 @@ import { PythonStorage, PythonFile } from './storage.cjs';
7
7
  import { PythonToolOutput } from './output.cjs';
8
8
  import { ConnectionOptions } from 'node:tls';
9
9
  import { RunContext } from '../../context.cjs';
10
- import { E as Emitter } from '../../emitter-pJzHC_AM.cjs';
11
- import { m as ChatModel } from '../../chat-BZ55YQab.cjs';
10
+ import { E as Emitter } from '../../emitter-DpqUYjXH.cjs';
11
+ import { m as ChatModel } from '../../chat-CRb3vUVg.cjs';
12
12
  import '../../internals/serializable.cjs';
13
13
  import '../../internals/types.cjs';
14
14
  import '../../internals/helpers/guards.cjs';
@@ -7,8 +7,8 @@ import { PythonStorage, PythonFile } from './storage.js';
7
7
  import { PythonToolOutput } from './output.js';
8
8
  import { ConnectionOptions } from 'node:tls';
9
9
  import { RunContext } from '../../context.js';
10
- import { E as Emitter } from '../../emitter-BqpLJQVb.js';
11
- import { m as ChatModel } from '../../chat-BBoOSvzm.js';
10
+ import { E as Emitter } from '../../emitter-CZFbzlUi.js';
11
+ import { m as ChatModel } from '../../chat-C0s-o6ll.js';
12
12
  import '../../internals/serializable.js';
13
13
  import '../../internals/types.js';
14
14
  import '../../internals/helpers/guards.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/search/base.ts"],"names":["SearchToolOutput","ToolOutput","results","sources","R","unique","map","result","url","isEmpty","length","getTextContent","JSON","stringify","join","cacheKey","WeakRefKeyFn","from","self","enumerable"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGC,SAAA,YAAA,CAAA,UAAA,EAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;;;;;;AAAA,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;;;AAgBM,MAAeA,yBAEZC,mBAAAA,CAAAA;EArBV;;;;AAsBE,EAAA,WAAA,CAA4BC,OAAAA,EAA8B;AACxD,IAAA,KAAA,EAAK,EAAA,KADqBA,OAAAA,GAAAA,OAAAA;AAE5B;AAEA,EAAA,IAIIC,OAAAA,GAAU;AACZ,IAAA,OAAOC,YAAAA,CAAEC,OAAO,IAAA,CAAKH,OAAAA,CAAQI,IAAI,CAACC,MAAAA,KAAWA,MAAAA,CAAOC,GAAG,CAAA,CAAA;AACzD;EAEAC,OAAAA,GAAU;AACR,IAAA,OAAO,IAAA,CAAKP,QAAQQ,MAAAA,KAAW,CAAA;AACjC;EAKAC,cAAAA,GAAyB;AACvB,IAAA,OAAO,IAAA,CAAKT,OAAAA,CAAQI,GAAAA,CAAI,CAACC,MAAAA,KAAWK,IAAAA,CAAKC,SAAAA,CAAUN,MAAAA,EAAQ,IAAA,EAAM,CAAA,CAAA,CAAA,CAAIO,KAAK,MAAA,CAAA;AAC5E;AACF;;;AAjBIC,IAAAA,QAAAA,EAAUC,+BAAAA,CAAaC,IAAAA,CAAuB,CAACC,IAAAA,KAASA,KAAKhB,OAAO,CAAA;IACpEiB,UAAAA,EAAY;;;;;;;AAWZJ,IAAAA,QAAAA,EAAUC,+BAAAA,CAAaC,IAAAA,CAAuB,CAACC,IAAAA,KAASA,KAAKhB,OAAO","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseToolOptions, BaseToolRunOptions, ToolOutput } from \"@/tools/base.js\";\nimport { Cache, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport * as R from \"remeda\";\n\nexport interface SearchToolOptions extends BaseToolOptions {}\n\nexport interface SearchToolRunOptions extends BaseToolRunOptions {}\n\nexport interface SearchToolResult {\n title: string;\n description: string;\n url: string;\n}\n\nexport abstract class SearchToolOutput<\n TSearchToolResult extends SearchToolResult = SearchToolResult,\n> extends ToolOutput {\n constructor(public readonly results: TSearchToolResult[]) {\n super();\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<SearchToolOutput>((self) => self.results),\n enumerable: false,\n })\n get sources() {\n return R.unique(this.results.map((result) => result.url));\n }\n\n isEmpty() {\n return this.results.length === 0;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<SearchToolOutput>((self) => self.results),\n })\n getTextContent(): string {\n return this.results.map((result) => JSON.stringify(result, null, 2)).join(\"\\n\\n\");\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/search/base.ts"],"names":["SearchToolOutput","ToolOutput","results","sources","R","unique","map","result","url","isEmpty","length","getTextContent","JSON","stringify","join","cacheKey","WeakRefKeyFn","from","self","enumerable"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBO,MAAeA,yBAEZC,mBAAAA,CAAAA;AAAAA,EAAAA;;;;AACR,EAAA,WAAA,CAA4BC,OAAAA,EAA8B;AACxD,IAAA,KAAA,EAAK,EAAA,KADqBA,OAAAA,GAAAA,OAAAA;AAE5B;AAEA,EAAA,IAIIC,OAAAA,GAAU;AACZ,IAAA,OAAOC,YAAAA,CAAEC,OAAO,IAAA,CAAKH,OAAAA,CAAQI,IAAI,CAACC,MAAAA,KAAWA,MAAAA,CAAOC,GAAG,CAAA,CAAA;AACzD;EAEAC,OAAAA,GAAU;AACR,IAAA,OAAO,IAAA,CAAKP,QAAQQ,MAAAA,KAAW,CAAA;AACjC;EAKAC,cAAAA,GAAyB;AACvB,IAAA,OAAO,IAAA,CAAKT,OAAAA,CAAQI,GAAAA,CAAI,CAACC,MAAAA,KAAWK,IAAAA,CAAKC,SAAAA,CAAUN,MAAAA,EAAQ,IAAA,EAAM,CAAA,CAAA,CAAA,CAAIO,KAAK,MAAA,CAAA;AAC5E;AACF;;;AAjBIC,IAAAA,QAAAA,EAAUC,+BAAAA,CAAaC,IAAAA,CAAuB,CAACC,IAAAA,KAASA,KAAKhB,OAAO,CAAA;IACpEiB,UAAAA,EAAY;;;;;;;AAWZJ,IAAAA,QAAAA,EAAUC,+BAAAA,CAAaC,IAAAA,CAAuB,CAACC,IAAAA,KAASA,KAAKhB,OAAO","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseToolOptions, BaseToolRunOptions, ToolOutput } from \"@/tools/base.js\";\nimport { Cache, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport * as R from \"remeda\";\n\nexport interface SearchToolOptions extends BaseToolOptions {}\n\nexport interface SearchToolRunOptions extends BaseToolRunOptions {}\n\nexport interface SearchToolResult {\n title: string;\n description: string;\n url: string;\n}\n\nexport abstract class SearchToolOutput<\n TSearchToolResult extends SearchToolResult = SearchToolResult,\n> extends ToolOutput {\n constructor(public readonly results: TSearchToolResult[]) {\n super();\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<SearchToolOutput>((self) => self.results),\n enumerable: false,\n })\n get sources() {\n return R.unique(this.results.map((result) => result.url));\n }\n\n isEmpty() {\n return this.results.length === 0;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<SearchToolOutput>((self) => self.results),\n })\n getTextContent(): string {\n return this.results.map((result) => JSON.stringify(result, null, 2)).join(\"\\n\\n\");\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { BaseToolOptions, BaseToolRunOptions, ToolOutput } from '../base.cjs';
2
2
  import 'ajv';
3
3
  import '../../context.cjs';
4
- import '../../emitter-pJzHC_AM.cjs';
4
+ import '../../emitter-DpqUYjXH.cjs';
5
5
  import '../../internals/types.cjs';
6
6
  import '../../internals/helpers/guards.cjs';
7
7
  import '../../internals/serializable.cjs';
@@ -1,7 +1,7 @@
1
1
  import { BaseToolOptions, BaseToolRunOptions, ToolOutput } from '../base.js';
2
2
  import 'ajv';
3
3
  import '../../context.js';
4
- import '../../emitter-BqpLJQVb.js';
4
+ import '../../emitter-CZFbzlUi.js';
5
5
  import '../../internals/types.js';
6
6
  import '../../internals/helpers/guards.js';
7
7
  import '../../internals/serializable.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/search/base.ts"],"names":["SearchToolOutput","ToolOutput","results","sources","R","unique","map","result","url","isEmpty","length","getTextContent","JSON","stringify","join","cacheKey","WeakRefKeyFn","from","self","enumerable"],"mappings":";;;;;;AAGC,SAAA,YAAA,CAAA,UAAA,EAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;;;;;;AAAA,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;;;AAgBM,MAAeA,yBAEZC,UAAAA,CAAAA;EArBV;;;;AAsBE,EAAA,WAAA,CAA4BC,OAAAA,EAA8B;AACxD,IAAA,KAAA,EAAK,EAAA,KADqBA,OAAAA,GAAAA,OAAAA;AAE5B;AAEA,EAAA,IAIIC,OAAAA,GAAU;AACZ,IAAA,OAAOC,CAAAA,CAAEC,OAAO,IAAA,CAAKH,OAAAA,CAAQI,IAAI,CAACC,MAAAA,KAAWA,MAAAA,CAAOC,GAAG,CAAA,CAAA;AACzD;EAEAC,OAAAA,GAAU;AACR,IAAA,OAAO,IAAA,CAAKP,QAAQQ,MAAAA,KAAW,CAAA;AACjC;EAKAC,cAAAA,GAAyB;AACvB,IAAA,OAAO,IAAA,CAAKT,OAAAA,CAAQI,GAAAA,CAAI,CAACC,MAAAA,KAAWK,IAAAA,CAAKC,SAAAA,CAAUN,MAAAA,EAAQ,IAAA,EAAM,CAAA,CAAA,CAAA,CAAIO,KAAK,MAAA,CAAA;AAC5E;AACF;;;AAjBIC,IAAAA,QAAAA,EAAUC,YAAAA,CAAaC,IAAAA,CAAuB,CAACC,IAAAA,KAASA,KAAKhB,OAAO,CAAA;IACpEiB,UAAAA,EAAY;;;;;;;AAWZJ,IAAAA,QAAAA,EAAUC,YAAAA,CAAaC,IAAAA,CAAuB,CAACC,IAAAA,KAASA,KAAKhB,OAAO","file":"base.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseToolOptions, BaseToolRunOptions, ToolOutput } from \"@/tools/base.js\";\nimport { Cache, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport * as R from \"remeda\";\n\nexport interface SearchToolOptions extends BaseToolOptions {}\n\nexport interface SearchToolRunOptions extends BaseToolRunOptions {}\n\nexport interface SearchToolResult {\n title: string;\n description: string;\n url: string;\n}\n\nexport abstract class SearchToolOutput<\n TSearchToolResult extends SearchToolResult = SearchToolResult,\n> extends ToolOutput {\n constructor(public readonly results: TSearchToolResult[]) {\n super();\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<SearchToolOutput>((self) => self.results),\n enumerable: false,\n })\n get sources() {\n return R.unique(this.results.map((result) => result.url));\n }\n\n isEmpty() {\n return this.results.length === 0;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<SearchToolOutput>((self) => self.results),\n })\n getTextContent(): string {\n return this.results.map((result) => JSON.stringify(result, null, 2)).join(\"\\n\\n\");\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/search/base.ts"],"names":["SearchToolOutput","ToolOutput","results","sources","R","unique","map","result","url","isEmpty","length","getTextContent","JSON","stringify","join","cacheKey","WeakRefKeyFn","from","self","enumerable"],"mappings":";;;;;;;;;;;;;;;;;AAmBO,MAAeA,yBAEZC,UAAAA,CAAAA;AAAAA,EAAAA;;;;AACR,EAAA,WAAA,CAA4BC,OAAAA,EAA8B;AACxD,IAAA,KAAA,EAAK,EAAA,KADqBA,OAAAA,GAAAA,OAAAA;AAE5B;AAEA,EAAA,IAIIC,OAAAA,GAAU;AACZ,IAAA,OAAOC,CAAAA,CAAEC,OAAO,IAAA,CAAKH,OAAAA,CAAQI,IAAI,CAACC,MAAAA,KAAWA,MAAAA,CAAOC,GAAG,CAAA,CAAA;AACzD;EAEAC,OAAAA,GAAU;AACR,IAAA,OAAO,IAAA,CAAKP,QAAQQ,MAAAA,KAAW,CAAA;AACjC;EAKAC,cAAAA,GAAyB;AACvB,IAAA,OAAO,IAAA,CAAKT,OAAAA,CAAQI,GAAAA,CAAI,CAACC,MAAAA,KAAWK,IAAAA,CAAKC,SAAAA,CAAUN,MAAAA,EAAQ,IAAA,EAAM,CAAA,CAAA,CAAA,CAAIO,KAAK,MAAA,CAAA;AAC5E;AACF;;;AAjBIC,IAAAA,QAAAA,EAAUC,YAAAA,CAAaC,IAAAA,CAAuB,CAACC,IAAAA,KAASA,KAAKhB,OAAO,CAAA;IACpEiB,UAAAA,EAAY;;;;;;;AAWZJ,IAAAA,QAAAA,EAAUC,YAAAA,CAAaC,IAAAA,CAAuB,CAACC,IAAAA,KAASA,KAAKhB,OAAO","file":"base.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { BaseToolOptions, BaseToolRunOptions, ToolOutput } from \"@/tools/base.js\";\nimport { Cache, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport * as R from \"remeda\";\n\nexport interface SearchToolOptions extends BaseToolOptions {}\n\nexport interface SearchToolRunOptions extends BaseToolRunOptions {}\n\nexport interface SearchToolResult {\n title: string;\n description: string;\n url: string;\n}\n\nexport abstract class SearchToolOutput<\n TSearchToolResult extends SearchToolResult = SearchToolResult,\n> extends ToolOutput {\n constructor(public readonly results: TSearchToolResult[]) {\n super();\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<SearchToolOutput>((self) => self.results),\n enumerable: false,\n })\n get sources() {\n return R.unique(this.results.map((result) => result.url));\n }\n\n isEmpty() {\n return this.results.length === 0;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<SearchToolOutput>((self) => self.results),\n })\n getTextContent(): string {\n return this.results.map((result) => JSON.stringify(result, null, 2)).join(\"\\n\\n\");\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/search/duckDuckGoSearch.ts"],"names":["DuckDuckGoSearchToolOutput","SearchToolOutput","results","register","createSnapshot","loadSnapshot","snapshot","Object","assign","DuckDuckGoSearchTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","max","options","maxResults","httpClientOptions","proxy","getEnv","rejectUnauthorized","parseEnv","asBoolean","_createClient","throttle","rawDDGSearch","default","pThrottle","limit","interval","_run","input","run","headers","HeaderGenerator","getHeaders","client","paginate","size","handler","cursor","data","noResults","done","safeSearch","SafeSearchType","MODERATE","search","offset","user_agent","signal","uri_modifier","rawUrl","url","URL","searchParams","delete","toString","nextCursor","undefined","length","stripHtml","map","result","title","enumerable"],"mappings":"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","file":"duckDuckGoSearch.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { SearchOptions, search as rawDDGSearch, SafeSearchType } from \"duck-duck-scrape\";\nimport { Options as ThrottleOptions } from \"p-throttle\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"./base.js\";\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { HeaderGenerator } from \"header-generator\";\nimport type { NeedleOptions } from \"needle\";\nimport { z } from \"zod\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { RunContext } from \"@/context.js\";\nimport { paginate } from \"@/internals/helpers/paginate.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { getEnv, parseEnv } from \"@/internals/env.js\";\n\nexport { SafeSearchType as DuckDuckGoSearchToolSearchType };\n\nexport interface DuckDuckGoSearchToolOptions extends SearchToolOptions {\n search?: SearchOptions;\n throttle?: ThrottleOptions | false;\n httpClientOptions?: NeedleOptions;\n maxResults: number;\n}\n\nexport interface DuckDuckGoSearchToolRunOptions extends SearchToolRunOptions {\n search?: SearchOptions;\n httpClientOptions?: NeedleOptions;\n}\n\nexport interface DuckDuckGoSearchToolResult extends SearchToolResult {}\n\nexport class DuckDuckGoSearchToolOutput extends SearchToolOutput<DuckDuckGoSearchToolResult> {\n constructor(public readonly results: DuckDuckGoSearchToolResult[]) {\n super(results);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n results: this.results,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class DuckDuckGoSearchTool extends Tool<\n DuckDuckGoSearchToolOutput,\n DuckDuckGoSearchToolOptions,\n DuckDuckGoSearchToolRunOptions\n> {\n name = \"DuckDuckGo\";\n description =\n \"Search for online trends, news, current events, real-time information, or research topics.\";\n\n public readonly emitter: ToolEmitter<ToolInput<this>, DuckDuckGoSearchToolOutput> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"ddg\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n return z.object({\n query: z.string({ description: `Search query` }).min(1).max(128),\n });\n }\n\n public constructor(options: Partial<DuckDuckGoSearchToolOptions> = {}) {\n super({\n ...options,\n maxResults: options?.maxResults ?? 15,\n httpClientOptions: {\n proxy: getEnv(\"BEEAI_DDG_TOOL_PROXY\"),\n rejectUnauthorized: parseEnv.asBoolean(\"BEEAI_DDG_TOOL_PROXY_VERIFY\", true),\n ...options?.httpClientOptions,\n },\n });\n }\n\n static {\n this.register();\n }\n\n @Cache({ enumerable: false })\n protected async _createClient() {\n const { throttle } = this.options;\n if (throttle === false) {\n return rawDDGSearch;\n }\n\n const { default: pThrottle } = await import(\"p-throttle\");\n return pThrottle({\n ...throttle,\n limit: throttle?.limit ?? 1,\n interval: throttle?.interval ?? 3000,\n })(rawDDGSearch);\n }\n\n protected async _run(\n { query: input }: ToolInput<this>,\n options: Partial<DuckDuckGoSearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const headers = new HeaderGenerator().getHeaders();\n const client = await this._createClient();\n\n const results = await paginate({\n size: this.options.maxResults,\n handler: async ({ cursor = 0 }) => {\n const { results: data, noResults: done } = await client(\n input,\n {\n safeSearch: SafeSearchType.MODERATE,\n ...this.options.search,\n ...options?.search,\n offset: cursor,\n },\n {\n headers,\n user_agent: headers[\"user-agent\"],\n ...this.options?.httpClientOptions,\n ...options?.httpClientOptions,\n signal: run.signal,\n uri_modifier: (rawUrl) => {\n const url = new URL(rawUrl);\n url.searchParams.delete(\"ss_mkt\");\n return url.toString();\n },\n },\n );\n\n return {\n data,\n nextCursor: done ? undefined : cursor + data.length,\n };\n },\n });\n\n const { stripHtml } = await import(\"string-strip-html\");\n\n return new DuckDuckGoSearchToolOutput(\n results.map((result) => ({\n title: stripHtml(result.title).result,\n description: stripHtml(result.description).result,\n url: result.url,\n })),\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/search/duckDuckGoSearch.ts"],"names":["DuckDuckGoSearchToolOutput","SearchToolOutput","results","register","createSnapshot","loadSnapshot","snapshot","Object","assign","DuckDuckGoSearchTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","max","options","maxResults","httpClientOptions","proxy","getEnv","rejectUnauthorized","parseEnv","asBoolean","_createClient","throttle","rawDDGSearch","default","pThrottle","limit","interval","_run","input","run","headers","HeaderGenerator","getHeaders","client","paginate","size","handler","cursor","data","noResults","done","safeSearch","SafeSearchType","MODERATE","search","offset","user_agent","signal","uri_modifier","rawUrl","url","URL","searchParams","delete","toString","nextCursor","undefined","length","stripHtml","map","result","title","enumerable"],"mappings":"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","file":"duckDuckGoSearch.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { SearchOptions, search as rawDDGSearch, SafeSearchType } from \"duck-duck-scrape\";\nimport { Options as ThrottleOptions } from \"p-throttle\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"./base.js\";\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { HeaderGenerator } from \"header-generator\";\nimport type { NeedleOptions } from \"needle\";\nimport { z } from \"zod\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { RunContext } from \"@/context.js\";\nimport { paginate } from \"@/internals/helpers/paginate.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { getEnv, parseEnv } from \"@/internals/env.js\";\n\nexport { SafeSearchType as DuckDuckGoSearchToolSearchType };\n\nexport interface DuckDuckGoSearchToolOptions extends SearchToolOptions {\n search?: SearchOptions;\n throttle?: ThrottleOptions | false;\n httpClientOptions?: NeedleOptions;\n maxResults: number;\n}\n\nexport interface DuckDuckGoSearchToolRunOptions extends SearchToolRunOptions {\n search?: SearchOptions;\n httpClientOptions?: NeedleOptions;\n}\n\nexport interface DuckDuckGoSearchToolResult extends SearchToolResult {}\n\nexport class DuckDuckGoSearchToolOutput extends SearchToolOutput<DuckDuckGoSearchToolResult> {\n constructor(public readonly results: DuckDuckGoSearchToolResult[]) {\n super(results);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n results: this.results,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class DuckDuckGoSearchTool extends Tool<\n DuckDuckGoSearchToolOutput,\n DuckDuckGoSearchToolOptions,\n DuckDuckGoSearchToolRunOptions\n> {\n name = \"DuckDuckGo\";\n description =\n \"Search for online trends, news, current events, real-time information, or research topics.\";\n\n public readonly emitter: ToolEmitter<ToolInput<this>, DuckDuckGoSearchToolOutput> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"ddg\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n return z.object({\n query: z.string({ description: `Search query` }).min(1).max(128),\n });\n }\n\n public constructor(options: Partial<DuckDuckGoSearchToolOptions> = {}) {\n super({\n ...options,\n maxResults: options?.maxResults ?? 15,\n httpClientOptions: {\n proxy: getEnv(\"BEEAI_DDG_TOOL_PROXY\"),\n rejectUnauthorized: parseEnv.asBoolean(\"BEEAI_DDG_TOOL_PROXY_VERIFY\", true),\n ...options?.httpClientOptions,\n },\n });\n }\n\n static {\n this.register();\n }\n\n @Cache({ enumerable: false })\n protected async _createClient() {\n const { throttle } = this.options;\n if (throttle === false) {\n return rawDDGSearch;\n }\n\n const { default: pThrottle } = await import(\"p-throttle\");\n return pThrottle({\n ...throttle,\n limit: throttle?.limit ?? 1,\n interval: throttle?.interval ?? 3000,\n })(rawDDGSearch);\n }\n\n protected async _run(\n { query: input }: ToolInput<this>,\n options: Partial<DuckDuckGoSearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const headers = new HeaderGenerator().getHeaders();\n const client = await this._createClient();\n\n const results = await paginate({\n size: this.options.maxResults,\n handler: async ({ cursor = 0 }) => {\n const { results: data, noResults: done } = await client(\n input,\n {\n safeSearch: SafeSearchType.MODERATE,\n ...this.options.search,\n ...options?.search,\n offset: cursor,\n },\n {\n headers,\n user_agent: headers[\"user-agent\"],\n ...this.options?.httpClientOptions,\n ...options?.httpClientOptions,\n signal: run.signal,\n uri_modifier: (rawUrl) => {\n const url = new URL(rawUrl);\n url.searchParams.delete(\"ss_mkt\");\n return url.toString();\n },\n },\n );\n\n return {\n data,\n nextCursor: done ? undefined : cursor + data.length,\n };\n },\n });\n\n const { stripHtml } = await import(\"string-strip-html\");\n\n return new DuckDuckGoSearchToolOutput(\n results.map((result) => ({\n title: stripHtml(result.title).result,\n description: stripHtml(result.description).result,\n url: result.url,\n })),\n );\n }\n}\n"]}
@@ -7,7 +7,7 @@ import { NeedleOptions } from 'needle';
7
7
  import { z } from 'zod';
8
8
  import { RunContext } from '../../context.cjs';
9
9
  import 'ajv';
10
- import '../../emitter-pJzHC_AM.cjs';
10
+ import '../../emitter-DpqUYjXH.cjs';
11
11
  import '../../internals/types.cjs';
12
12
  import '../../internals/helpers/guards.cjs';
13
13
  import '../../internals/serializable.cjs';
@@ -7,7 +7,7 @@ import { NeedleOptions } from 'needle';
7
7
  import { z } from 'zod';
8
8
  import { RunContext } from '../../context.js';
9
9
  import 'ajv';
10
- import '../../emitter-BqpLJQVb.js';
10
+ import '../../emitter-CZFbzlUi.js';
11
11
  import '../../internals/types.js';
12
12
  import '../../internals/helpers/guards.js';
13
13
  import '../../internals/serializable.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/search/duckDuckGoSearch.ts"],"names":["DuckDuckGoSearchToolOutput","SearchToolOutput","results","register","createSnapshot","loadSnapshot","snapshot","Object","assign","DuckDuckGoSearchTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","max","options","maxResults","httpClientOptions","proxy","getEnv","rejectUnauthorized","parseEnv","asBoolean","_createClient","throttle","rawDDGSearch","default","pThrottle","limit","interval","_run","input","run","headers","HeaderGenerator","getHeaders","client","paginate","size","handler","cursor","data","noResults","done","safeSearch","SafeSearchType","MODERATE","search","offset","user_agent","signal","uri_modifier","rawUrl","url","URL","searchParams","delete","toString","nextCursor","undefined","length","stripHtml","map","result","title","enumerable"],"mappings":"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","file":"duckDuckGoSearch.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { SearchOptions, search as rawDDGSearch, SafeSearchType } from \"duck-duck-scrape\";\nimport { Options as ThrottleOptions } from \"p-throttle\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"./base.js\";\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { HeaderGenerator } from \"header-generator\";\nimport type { NeedleOptions } from \"needle\";\nimport { z } from \"zod\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { RunContext } from \"@/context.js\";\nimport { paginate } from \"@/internals/helpers/paginate.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { getEnv, parseEnv } from \"@/internals/env.js\";\n\nexport { SafeSearchType as DuckDuckGoSearchToolSearchType };\n\nexport interface DuckDuckGoSearchToolOptions extends SearchToolOptions {\n search?: SearchOptions;\n throttle?: ThrottleOptions | false;\n httpClientOptions?: NeedleOptions;\n maxResults: number;\n}\n\nexport interface DuckDuckGoSearchToolRunOptions extends SearchToolRunOptions {\n search?: SearchOptions;\n httpClientOptions?: NeedleOptions;\n}\n\nexport interface DuckDuckGoSearchToolResult extends SearchToolResult {}\n\nexport class DuckDuckGoSearchToolOutput extends SearchToolOutput<DuckDuckGoSearchToolResult> {\n constructor(public readonly results: DuckDuckGoSearchToolResult[]) {\n super(results);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n results: this.results,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class DuckDuckGoSearchTool extends Tool<\n DuckDuckGoSearchToolOutput,\n DuckDuckGoSearchToolOptions,\n DuckDuckGoSearchToolRunOptions\n> {\n name = \"DuckDuckGo\";\n description =\n \"Search for online trends, news, current events, real-time information, or research topics.\";\n\n public readonly emitter: ToolEmitter<ToolInput<this>, DuckDuckGoSearchToolOutput> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"ddg\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n return z.object({\n query: z.string({ description: `Search query` }).min(1).max(128),\n });\n }\n\n public constructor(options: Partial<DuckDuckGoSearchToolOptions> = {}) {\n super({\n ...options,\n maxResults: options?.maxResults ?? 15,\n httpClientOptions: {\n proxy: getEnv(\"BEEAI_DDG_TOOL_PROXY\"),\n rejectUnauthorized: parseEnv.asBoolean(\"BEEAI_DDG_TOOL_PROXY_VERIFY\", true),\n ...options?.httpClientOptions,\n },\n });\n }\n\n static {\n this.register();\n }\n\n @Cache({ enumerable: false })\n protected async _createClient() {\n const { throttle } = this.options;\n if (throttle === false) {\n return rawDDGSearch;\n }\n\n const { default: pThrottle } = await import(\"p-throttle\");\n return pThrottle({\n ...throttle,\n limit: throttle?.limit ?? 1,\n interval: throttle?.interval ?? 3000,\n })(rawDDGSearch);\n }\n\n protected async _run(\n { query: input }: ToolInput<this>,\n options: Partial<DuckDuckGoSearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const headers = new HeaderGenerator().getHeaders();\n const client = await this._createClient();\n\n const results = await paginate({\n size: this.options.maxResults,\n handler: async ({ cursor = 0 }) => {\n const { results: data, noResults: done } = await client(\n input,\n {\n safeSearch: SafeSearchType.MODERATE,\n ...this.options.search,\n ...options?.search,\n offset: cursor,\n },\n {\n headers,\n user_agent: headers[\"user-agent\"],\n ...this.options?.httpClientOptions,\n ...options?.httpClientOptions,\n signal: run.signal,\n uri_modifier: (rawUrl) => {\n const url = new URL(rawUrl);\n url.searchParams.delete(\"ss_mkt\");\n return url.toString();\n },\n },\n );\n\n return {\n data,\n nextCursor: done ? undefined : cursor + data.length,\n };\n },\n });\n\n const { stripHtml } = await import(\"string-strip-html\");\n\n return new DuckDuckGoSearchToolOutput(\n results.map((result) => ({\n title: stripHtml(result.title).result,\n description: stripHtml(result.description).result,\n url: result.url,\n })),\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/search/duckDuckGoSearch.ts"],"names":["DuckDuckGoSearchToolOutput","SearchToolOutput","results","register","createSnapshot","loadSnapshot","snapshot","Object","assign","DuckDuckGoSearchTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","max","options","maxResults","httpClientOptions","proxy","getEnv","rejectUnauthorized","parseEnv","asBoolean","_createClient","throttle","rawDDGSearch","default","pThrottle","limit","interval","_run","input","run","headers","HeaderGenerator","getHeaders","client","paginate","size","handler","cursor","data","noResults","done","safeSearch","SafeSearchType","MODERATE","search","offset","user_agent","signal","uri_modifier","rawUrl","url","URL","searchParams","delete","toString","nextCursor","undefined","length","stripHtml","map","result","title","enumerable"],"mappings":"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","file":"duckDuckGoSearch.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { SearchOptions, search as rawDDGSearch, SafeSearchType } from \"duck-duck-scrape\";\nimport { Options as ThrottleOptions } from \"p-throttle\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"./base.js\";\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { HeaderGenerator } from \"header-generator\";\nimport type { NeedleOptions } from \"needle\";\nimport { z } from \"zod\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { RunContext } from \"@/context.js\";\nimport { paginate } from \"@/internals/helpers/paginate.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { getEnv, parseEnv } from \"@/internals/env.js\";\n\nexport { SafeSearchType as DuckDuckGoSearchToolSearchType };\n\nexport interface DuckDuckGoSearchToolOptions extends SearchToolOptions {\n search?: SearchOptions;\n throttle?: ThrottleOptions | false;\n httpClientOptions?: NeedleOptions;\n maxResults: number;\n}\n\nexport interface DuckDuckGoSearchToolRunOptions extends SearchToolRunOptions {\n search?: SearchOptions;\n httpClientOptions?: NeedleOptions;\n}\n\nexport interface DuckDuckGoSearchToolResult extends SearchToolResult {}\n\nexport class DuckDuckGoSearchToolOutput extends SearchToolOutput<DuckDuckGoSearchToolResult> {\n constructor(public readonly results: DuckDuckGoSearchToolResult[]) {\n super(results);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n results: this.results,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class DuckDuckGoSearchTool extends Tool<\n DuckDuckGoSearchToolOutput,\n DuckDuckGoSearchToolOptions,\n DuckDuckGoSearchToolRunOptions\n> {\n name = \"DuckDuckGo\";\n description =\n \"Search for online trends, news, current events, real-time information, or research topics.\";\n\n public readonly emitter: ToolEmitter<ToolInput<this>, DuckDuckGoSearchToolOutput> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"ddg\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n return z.object({\n query: z.string({ description: `Search query` }).min(1).max(128),\n });\n }\n\n public constructor(options: Partial<DuckDuckGoSearchToolOptions> = {}) {\n super({\n ...options,\n maxResults: options?.maxResults ?? 15,\n httpClientOptions: {\n proxy: getEnv(\"BEEAI_DDG_TOOL_PROXY\"),\n rejectUnauthorized: parseEnv.asBoolean(\"BEEAI_DDG_TOOL_PROXY_VERIFY\", true),\n ...options?.httpClientOptions,\n },\n });\n }\n\n static {\n this.register();\n }\n\n @Cache({ enumerable: false })\n protected async _createClient() {\n const { throttle } = this.options;\n if (throttle === false) {\n return rawDDGSearch;\n }\n\n const { default: pThrottle } = await import(\"p-throttle\");\n return pThrottle({\n ...throttle,\n limit: throttle?.limit ?? 1,\n interval: throttle?.interval ?? 3000,\n })(rawDDGSearch);\n }\n\n protected async _run(\n { query: input }: ToolInput<this>,\n options: Partial<DuckDuckGoSearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const headers = new HeaderGenerator().getHeaders();\n const client = await this._createClient();\n\n const results = await paginate({\n size: this.options.maxResults,\n handler: async ({ cursor = 0 }) => {\n const { results: data, noResults: done } = await client(\n input,\n {\n safeSearch: SafeSearchType.MODERATE,\n ...this.options.search,\n ...options?.search,\n offset: cursor,\n },\n {\n headers,\n user_agent: headers[\"user-agent\"],\n ...this.options?.httpClientOptions,\n ...options?.httpClientOptions,\n signal: run.signal,\n uri_modifier: (rawUrl) => {\n const url = new URL(rawUrl);\n url.searchParams.delete(\"ss_mkt\");\n return url.toString();\n },\n },\n );\n\n return {\n data,\n nextCursor: done ? undefined : cursor + data.length,\n };\n },\n });\n\n const { stripHtml } = await import(\"string-strip-html\");\n\n return new DuckDuckGoSearchToolOutput(\n results.map((result) => ({\n title: stripHtml(result.title).result,\n description: stripHtml(result.description).result,\n url: result.url,\n })),\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/search/googleSearch.ts"],"names":["GoogleSearchToolOutput","SearchToolOutput","results","register","createSnapshot","loadSnapshot","snapshot","Object","assign","GoogleSearchTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","max","apiKey","cseId","options","maxResults","parseEnv","ValueError","join","ValidationError","message","propertyName","client","GoogleSearchAPI","Customsearch","auth","_run","input","_options","run","paginate","size","handler","cursor","limit","maxChunkSize","data","items","cse","list","cx","q","start","num","Math","safe","signal","nextCursor","length","undefined","map","result","title","snippet","url","link"],"mappings":"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","file":"googleSearch.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { customsearch_v1 as GoogleSearchAPI } from \"@googleapis/customsearch\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"./base.js\";\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { parseEnv } from \"@/internals/env.js\";\nimport { RunContext } from \"@/context.js\";\nimport { paginate } from \"@/internals/helpers/paginate.js\";\nimport { ValidationError } from \"ajv\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface GoogleSearchToolOptions extends SearchToolOptions {\n apiKey?: string;\n cseId?: string;\n maxResults: number;\n}\n\ntype GoogleSearchToolRunOptions = SearchToolRunOptions;\n\nexport interface GoogleSearchToolResult extends SearchToolResult {}\n\nexport class GoogleSearchToolOutput extends SearchToolOutput<GoogleSearchToolResult> {\n constructor(public readonly results: GoogleSearchToolResult[]) {\n super(results);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n results: this.results,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class GoogleSearchTool extends Tool<\n GoogleSearchToolOutput,\n GoogleSearchToolOptions,\n GoogleSearchToolRunOptions\n> {\n name = \"GoogleSearch\";\n description = `Search for online trends, news, current events, real-time information, or research topics.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, GoogleSearchToolOutput> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"google\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n return z.object({\n query: z.string({ description: `Search query` }).min(1).max(2048),\n });\n }\n\n protected apiKey: string;\n protected cseId: string;\n\n public constructor(options: GoogleSearchToolOptions = { maxResults: 10 }) {\n super(options);\n\n this.apiKey = options.apiKey || parseEnv(\"GOOGLE_API_KEY\", z.string());\n this.cseId = options.cseId || parseEnv(\"GOOGLE_CSE_ID\", z.string());\n\n if (!this.apiKey || !this.cseId) {\n throw new ValueError(\n [\n `\"apiKey\" or \"cseId\" must both be provided.`,\n `Either set them directly or put them in ENV (\"GOOGLE_API_KEY\" / \"GOOGLE_CSE_ID\")`,\n ].join(\"\\n\"),\n );\n }\n\n if (options.maxResults < 1 || options.maxResults > 100) {\n throw new ValidationError([\n {\n message: \"Property 'maxResults' must be between 1 and 100\",\n propertyName: \"options.maxResults\",\n },\n ]);\n }\n }\n\n @Cache()\n protected get client(): GoogleSearchAPI.Customsearch {\n return new GoogleSearchAPI.Customsearch({\n auth: this.apiKey,\n });\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n { query: input }: ToolInput<this>,\n _options: Partial<GoogleSearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const results = await paginate({\n size: this.options.maxResults,\n handler: async ({ cursor = 0, limit }) => {\n const maxChunkSize = 10;\n\n const {\n data: { items = [] },\n } = await this.client.cse.list(\n {\n cx: this.cseId,\n q: input,\n start: cursor,\n num: Math.min(limit, maxChunkSize),\n safe: \"active\",\n },\n {\n signal: run.signal,\n },\n );\n\n return {\n data: items,\n nextCursor: items.length < maxChunkSize ? undefined : cursor + items.length,\n };\n },\n });\n\n return new GoogleSearchToolOutput(\n results.map((result) => ({\n title: result.title || \"\",\n description: result.snippet || \"\",\n url: result.link || \"\",\n })),\n );\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n apiKey: this.apiKey,\n cseId: this.cseId,\n };\n }\n\n loadSnapshot({ apiKey, cseId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, {\n apiKey,\n cseId,\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/search/googleSearch.ts"],"names":["GoogleSearchToolOutput","SearchToolOutput","results","register","createSnapshot","loadSnapshot","snapshot","Object","assign","GoogleSearchTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","max","apiKey","cseId","options","maxResults","parseEnv","ValueError","join","ValidationError","message","propertyName","client","GoogleSearchAPI","Customsearch","auth","_run","input","_options","run","paginate","size","handler","cursor","limit","maxChunkSize","data","items","cse","list","cx","q","start","num","Math","safe","signal","nextCursor","length","undefined","map","result","title","snippet","url","link"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAgCO,MAAMA,+BAA+BC,yBAAAA,CAAAA;AAAAA,EAAAA;;;;AAC1C,EAAA,WAAA,CAA4BC,OAAAA,EAAmC;AAC7D,IAAA,KAAA,CAAMA,OAAAA,CAAAA,EAAAA,IAAAA,CADoBA,OAAAA,GAAAA,OAAAA;AAE5B;EAEA;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AACf;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AACLF,MAAAA,OAAAA,EAAS,IAAA,CAAKA;AAChB,KAAA;AACF;AAEAG,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF;AAEO,MAAMG,yBAAyBC,eAAAA,CAAAA;AAAAA,EAAAA;;;EAKpCC,IAAAA,GAAO,cAAA;EACPC,WAAAA,GAAc,CAAA,0FAAA,CAAA;EAEEC,OAAAA,GACdC,mBAAAA,CAAQC,KAAKC,KAAAA,CAAM;IACjBC,SAAAA,EAAW;AAAC,MAAA,MAAA;AAAQ,MAAA,QAAA;AAAU,MAAA;;IAC9BC,OAAAA,EAAS;GACX,CAAA;EAGFC,WAAAA,GAAc;AACZ,IAAA,OAAOC,MAAEC,MAAAA,CAAO;AACdC,MAAAA,KAAAA,EAAOF,MAAEG,MAAAA,CAAO;QAAEX,WAAAA,EAAa,CAAA,YAAA;AAAe,OAAA,CAAA,CAAGY,GAAAA,CAAI,CAAA,CAAA,CAAGC,IAAI,IAAA;KAC9D,CAAA;AACF;AAEUC,EAAAA,MAAAA;AACAC,EAAAA,KAAAA;AAEV,EAAA,WAAA,CAAmBC,OAAAA,GAAmC;IAAEC,UAAAA,EAAY;GAAG,EAAG;AACxE,IAAA,KAAA,CAAMD,OAAAA,CAAAA;AAEN,IAAA,IAAA,CAAKF,SAASE,OAAAA,CAAQF,MAAAA,IAAUI,iBAAS,gBAAA,EAAkBV,KAAAA,CAAEG,QAAM,CAAA;AACnE,IAAA,IAAA,CAAKI,QAAQC,OAAAA,CAAQD,KAAAA,IAASG,iBAAS,eAAA,EAAiBV,KAAAA,CAAEG,QAAM,CAAA;AAEhE,IAAA,IAAI,CAAC,IAAA,CAAKG,MAAAA,IAAU,CAAC,KAAKC,KAAAA,EAAO;AAC/B,MAAA,MAAM,IAAII,qBAAAA,CACR;AACE,QAAA,CAAA,0CAAA,CAAA;AACA,QAAA,CAAA,gFAAA;AACAC,OAAAA,CAAAA,IAAAA,CAAK,IAAA,CAAA,CAAA;AAEX;AAEA,IAAA,IAAIJ,OAAAA,CAAQC,UAAAA,GAAa,CAAA,IAAKD,OAAAA,CAAQC,aAAa,GAAA,EAAK;AACtD,MAAA,MAAM,IAAII,mBAAAA,CAAgB;AACxB,QAAA;UACEC,OAAAA,EAAS,iDAAA;UACTC,YAAAA,EAAc;AAChB;AACD,OAAA,CAAA;AACH;AACF;AAEA,EAAA,IACcC,MAAAA,GAAuC;AACnD,IAAA,OAAO,IAAIC,6BAAgBC,YAAAA,CAAa;AACtCC,MAAAA,IAAAA,EAAM,IAAA,CAAKb;KACb,CAAA;AACF;EAEA;AACE,IAAA,IAAA,CAAKvB,QAAAA,EAAQ;AACf;AAEA,EAAA,MAAgBqC,KACd,EAAElB,KAAAA,EAAOmB,KAAAA,EAAK,EACdC,UACAC,GAAAA,EACA;AACA,IAAA,MAAMzC,OAAAA,GAAU,MAAM0C,qBAAAA,CAAS;AAC7BC,MAAAA,IAAAA,EAAM,KAAKjB,OAAAA,CAAQC,UAAAA;AACnBiB,MAAAA,OAAAA,kBAAS,MAAA,CAAA,OAAO,EAAEC,MAAAA,GAAS,CAAA,EAAGC,OAAK,KAAE;AACnC,QAAA,MAAMC,YAAAA,GAAe,EAAA;AAErB,QAAA,MAAM,EACJC,IAAAA,EAAM,EAAEC,KAAAA,GAAQ,EAAA,EAAE,EAAE,GAClB,MAAM,IAAA,CAAKf,MAAAA,CAAOgB,GAAAA,CAAIC,IAAAA,CACxB;AACEC,UAAAA,EAAAA,EAAI,IAAA,CAAK3B,KAAAA;UACT4B,CAAAA,EAAGd,KAAAA;UACHe,KAAAA,EAAOT,MAAAA;UACPU,GAAAA,EAAKC,IAAAA,CAAKlC,GAAAA,CAAIwB,KAAAA,EAAOC,YAAAA,CAAAA;UACrBU,IAAAA,EAAM;SACR,EACA;AACEC,UAAAA,MAAAA,EAAQjB,GAAAA,CAAIiB;SACd,CAAA;AAGF,QAAA,OAAO;UACLV,IAAAA,EAAMC,KAAAA;AACNU,UAAAA,UAAAA,EAAYV,KAAAA,CAAMW,MAAAA,GAASb,YAAAA,GAAec,MAAAA,GAAYhB,SAASI,KAAAA,CAAMW;AACvE,SAAA;OACF,EAtBS,SAAA;KAuBX,CAAA;AAEA,IAAA,OAAO,IAAI9D,sBAAAA,CACTE,OAAAA,CAAQ8D,GAAAA,CAAI,CAACC,MAAAA,MAAY;AACvBC,MAAAA,KAAAA,EAAOD,OAAOC,KAAAA,IAAS,EAAA;AACvBtD,MAAAA,WAAAA,EAAaqD,OAAOE,OAAAA,IAAW,EAAA;AAC/BC,MAAAA,GAAAA,EAAKH,OAAOI,IAAAA,IAAQ;AACtB,KAAA,CAAA,CAAA,CAAA;AAEJ;EAEAjE,cAAAA,GAAiB;AACf,IAAA,OAAO;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTsB,MAAAA,MAAAA,EAAQ,IAAA,CAAKA,MAAAA;AACbC,MAAAA,KAAAA,EAAO,IAAA,CAAKA;AACd,KAAA;AACF;AAEAtB,EAAAA,YAAAA,CAAa,EAAEqB,MAAAA,EAAQC,KAAAA,EAAO,GAAGrB,UAAAA,EAAoD;AACnF,IAAA,KAAA,CAAMD,aAAaC,QAAAA,CAAAA;AACnBC,IAAAA,MAAAA,CAAOC,OAAO,IAAA,EAAM;AAClBkB,MAAAA,MAAAA;AACAC,MAAAA;KACF,CAAA;AACF;AACF;;;;;;;;;yHAlE0C,YAAA,KAAA,WAAA,GAAA,MAAA,GAAAU,4BAAA,CAAA,YAAA,CAAA","file":"googleSearch.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { customsearch_v1 as GoogleSearchAPI } from \"@googleapis/customsearch\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"./base.js\";\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { parseEnv } from \"@/internals/env.js\";\nimport { RunContext } from \"@/context.js\";\nimport { paginate } from \"@/internals/helpers/paginate.js\";\nimport { ValidationError } from \"ajv\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface GoogleSearchToolOptions extends SearchToolOptions {\n apiKey?: string;\n cseId?: string;\n maxResults: number;\n}\n\ntype GoogleSearchToolRunOptions = SearchToolRunOptions;\n\nexport interface GoogleSearchToolResult extends SearchToolResult {}\n\nexport class GoogleSearchToolOutput extends SearchToolOutput<GoogleSearchToolResult> {\n constructor(public readonly results: GoogleSearchToolResult[]) {\n super(results);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n results: this.results,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class GoogleSearchTool extends Tool<\n GoogleSearchToolOutput,\n GoogleSearchToolOptions,\n GoogleSearchToolRunOptions\n> {\n name = \"GoogleSearch\";\n description = `Search for online trends, news, current events, real-time information, or research topics.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, GoogleSearchToolOutput> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"google\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n return z.object({\n query: z.string({ description: `Search query` }).min(1).max(2048),\n });\n }\n\n protected apiKey: string;\n protected cseId: string;\n\n public constructor(options: GoogleSearchToolOptions = { maxResults: 10 }) {\n super(options);\n\n this.apiKey = options.apiKey || parseEnv(\"GOOGLE_API_KEY\", z.string());\n this.cseId = options.cseId || parseEnv(\"GOOGLE_CSE_ID\", z.string());\n\n if (!this.apiKey || !this.cseId) {\n throw new ValueError(\n [\n `\"apiKey\" or \"cseId\" must both be provided.`,\n `Either set them directly or put them in ENV (\"GOOGLE_API_KEY\" / \"GOOGLE_CSE_ID\")`,\n ].join(\"\\n\"),\n );\n }\n\n if (options.maxResults < 1 || options.maxResults > 100) {\n throw new ValidationError([\n {\n message: \"Property 'maxResults' must be between 1 and 100\",\n propertyName: \"options.maxResults\",\n },\n ]);\n }\n }\n\n @Cache()\n protected get client(): GoogleSearchAPI.Customsearch {\n return new GoogleSearchAPI.Customsearch({\n auth: this.apiKey,\n });\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n { query: input }: ToolInput<this>,\n _options: Partial<GoogleSearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const results = await paginate({\n size: this.options.maxResults,\n handler: async ({ cursor = 0, limit }) => {\n const maxChunkSize = 10;\n\n const {\n data: { items = [] },\n } = await this.client.cse.list(\n {\n cx: this.cseId,\n q: input,\n start: cursor,\n num: Math.min(limit, maxChunkSize),\n safe: \"active\",\n },\n {\n signal: run.signal,\n },\n );\n\n return {\n data: items,\n nextCursor: items.length < maxChunkSize ? undefined : cursor + items.length,\n };\n },\n });\n\n return new GoogleSearchToolOutput(\n results.map((result) => ({\n title: result.title || \"\",\n description: result.snippet || \"\",\n url: result.link || \"\",\n })),\n );\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n apiKey: this.apiKey,\n cseId: this.cseId,\n };\n }\n\n loadSnapshot({ apiKey, cseId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, {\n apiKey,\n cseId,\n });\n }\n}\n"]}
@@ -5,7 +5,7 @@ import { SearchToolOptions, SearchToolResult, SearchToolOutput, SearchToolRunOpt
5
5
  import { Tool, ToolEmitter, ToolInput } from '../base.cjs';
6
6
  import { z } from 'zod';
7
7
  import { RunContext } from '../../context.cjs';
8
- import { E as Emitter } from '../../emitter-pJzHC_AM.cjs';
8
+ import { E as Emitter } from '../../emitter-DpqUYjXH.cjs';
9
9
  import '../../internals/serializable.cjs';
10
10
  import '../../internals/types.cjs';
11
11
  import '../../internals/helpers/guards.cjs';
@@ -5,7 +5,7 @@ import { SearchToolOptions, SearchToolResult, SearchToolOutput, SearchToolRunOpt
5
5
  import { Tool, ToolEmitter, ToolInput } from '../base.js';
6
6
  import { z } from 'zod';
7
7
  import { RunContext } from '../../context.js';
8
- import { E as Emitter } from '../../emitter-BqpLJQVb.js';
8
+ import { E as Emitter } from '../../emitter-CZFbzlUi.js';
9
9
  import '../../internals/serializable.js';
10
10
  import '../../internals/types.js';
11
11
  import '../../internals/helpers/guards.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/search/googleSearch.ts"],"names":["GoogleSearchToolOutput","SearchToolOutput","results","register","createSnapshot","loadSnapshot","snapshot","Object","assign","GoogleSearchTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","max","apiKey","cseId","options","maxResults","parseEnv","ValueError","join","ValidationError","message","propertyName","client","GoogleSearchAPI","Customsearch","auth","_run","input","_options","run","paginate","size","handler","cursor","limit","maxChunkSize","data","items","cse","list","cx","q","start","num","Math","safe","signal","nextCursor","length","undefined","map","result","title","snippet","url","link"],"mappings":"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","file":"googleSearch.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { customsearch_v1 as GoogleSearchAPI } from \"@googleapis/customsearch\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"./base.js\";\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { parseEnv } from \"@/internals/env.js\";\nimport { RunContext } from \"@/context.js\";\nimport { paginate } from \"@/internals/helpers/paginate.js\";\nimport { ValidationError } from \"ajv\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface GoogleSearchToolOptions extends SearchToolOptions {\n apiKey?: string;\n cseId?: string;\n maxResults: number;\n}\n\ntype GoogleSearchToolRunOptions = SearchToolRunOptions;\n\nexport interface GoogleSearchToolResult extends SearchToolResult {}\n\nexport class GoogleSearchToolOutput extends SearchToolOutput<GoogleSearchToolResult> {\n constructor(public readonly results: GoogleSearchToolResult[]) {\n super(results);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n results: this.results,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class GoogleSearchTool extends Tool<\n GoogleSearchToolOutput,\n GoogleSearchToolOptions,\n GoogleSearchToolRunOptions\n> {\n name = \"GoogleSearch\";\n description = `Search for online trends, news, current events, real-time information, or research topics.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, GoogleSearchToolOutput> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"google\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n return z.object({\n query: z.string({ description: `Search query` }).min(1).max(2048),\n });\n }\n\n protected apiKey: string;\n protected cseId: string;\n\n public constructor(options: GoogleSearchToolOptions = { maxResults: 10 }) {\n super(options);\n\n this.apiKey = options.apiKey || parseEnv(\"GOOGLE_API_KEY\", z.string());\n this.cseId = options.cseId || parseEnv(\"GOOGLE_CSE_ID\", z.string());\n\n if (!this.apiKey || !this.cseId) {\n throw new ValueError(\n [\n `\"apiKey\" or \"cseId\" must both be provided.`,\n `Either set them directly or put them in ENV (\"GOOGLE_API_KEY\" / \"GOOGLE_CSE_ID\")`,\n ].join(\"\\n\"),\n );\n }\n\n if (options.maxResults < 1 || options.maxResults > 100) {\n throw new ValidationError([\n {\n message: \"Property 'maxResults' must be between 1 and 100\",\n propertyName: \"options.maxResults\",\n },\n ]);\n }\n }\n\n @Cache()\n protected get client(): GoogleSearchAPI.Customsearch {\n return new GoogleSearchAPI.Customsearch({\n auth: this.apiKey,\n });\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n { query: input }: ToolInput<this>,\n _options: Partial<GoogleSearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const results = await paginate({\n size: this.options.maxResults,\n handler: async ({ cursor = 0, limit }) => {\n const maxChunkSize = 10;\n\n const {\n data: { items = [] },\n } = await this.client.cse.list(\n {\n cx: this.cseId,\n q: input,\n start: cursor,\n num: Math.min(limit, maxChunkSize),\n safe: \"active\",\n },\n {\n signal: run.signal,\n },\n );\n\n return {\n data: items,\n nextCursor: items.length < maxChunkSize ? undefined : cursor + items.length,\n };\n },\n });\n\n return new GoogleSearchToolOutput(\n results.map((result) => ({\n title: result.title || \"\",\n description: result.snippet || \"\",\n url: result.link || \"\",\n })),\n );\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n apiKey: this.apiKey,\n cseId: this.cseId,\n };\n }\n\n loadSnapshot({ apiKey, cseId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, {\n apiKey,\n cseId,\n });\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/search/googleSearch.ts"],"names":["GoogleSearchToolOutput","SearchToolOutput","results","register","createSnapshot","loadSnapshot","snapshot","Object","assign","GoogleSearchTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","max","apiKey","cseId","options","maxResults","parseEnv","ValueError","join","ValidationError","message","propertyName","client","GoogleSearchAPI","Customsearch","auth","_run","input","_options","run","paginate","size","handler","cursor","limit","maxChunkSize","data","items","cse","list","cx","q","start","num","Math","safe","signal","nextCursor","length","undefined","map","result","title","snippet","url","link"],"mappings":"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","file":"googleSearch.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { customsearch_v1 as GoogleSearchAPI } from \"@googleapis/customsearch\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"./base.js\";\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { parseEnv } from \"@/internals/env.js\";\nimport { RunContext } from \"@/context.js\";\nimport { paginate } from \"@/internals/helpers/paginate.js\";\nimport { ValidationError } from \"ajv\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface GoogleSearchToolOptions extends SearchToolOptions {\n apiKey?: string;\n cseId?: string;\n maxResults: number;\n}\n\ntype GoogleSearchToolRunOptions = SearchToolRunOptions;\n\nexport interface GoogleSearchToolResult extends SearchToolResult {}\n\nexport class GoogleSearchToolOutput extends SearchToolOutput<GoogleSearchToolResult> {\n constructor(public readonly results: GoogleSearchToolResult[]) {\n super(results);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n results: this.results,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class GoogleSearchTool extends Tool<\n GoogleSearchToolOutput,\n GoogleSearchToolOptions,\n GoogleSearchToolRunOptions\n> {\n name = \"GoogleSearch\";\n description = `Search for online trends, news, current events, real-time information, or research topics.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, GoogleSearchToolOutput> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"google\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n return z.object({\n query: z.string({ description: `Search query` }).min(1).max(2048),\n });\n }\n\n protected apiKey: string;\n protected cseId: string;\n\n public constructor(options: GoogleSearchToolOptions = { maxResults: 10 }) {\n super(options);\n\n this.apiKey = options.apiKey || parseEnv(\"GOOGLE_API_KEY\", z.string());\n this.cseId = options.cseId || parseEnv(\"GOOGLE_CSE_ID\", z.string());\n\n if (!this.apiKey || !this.cseId) {\n throw new ValueError(\n [\n `\"apiKey\" or \"cseId\" must both be provided.`,\n `Either set them directly or put them in ENV (\"GOOGLE_API_KEY\" / \"GOOGLE_CSE_ID\")`,\n ].join(\"\\n\"),\n );\n }\n\n if (options.maxResults < 1 || options.maxResults > 100) {\n throw new ValidationError([\n {\n message: \"Property 'maxResults' must be between 1 and 100\",\n propertyName: \"options.maxResults\",\n },\n ]);\n }\n }\n\n @Cache()\n protected get client(): GoogleSearchAPI.Customsearch {\n return new GoogleSearchAPI.Customsearch({\n auth: this.apiKey,\n });\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n { query: input }: ToolInput<this>,\n _options: Partial<GoogleSearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const results = await paginate({\n size: this.options.maxResults,\n handler: async ({ cursor = 0, limit }) => {\n const maxChunkSize = 10;\n\n const {\n data: { items = [] },\n } = await this.client.cse.list(\n {\n cx: this.cseId,\n q: input,\n start: cursor,\n num: Math.min(limit, maxChunkSize),\n safe: \"active\",\n },\n {\n signal: run.signal,\n },\n );\n\n return {\n data: items,\n nextCursor: items.length < maxChunkSize ? undefined : cursor + items.length,\n };\n },\n });\n\n return new GoogleSearchToolOutput(\n results.map((result) => ({\n title: result.title || \"\",\n description: result.snippet || \"\",\n url: result.link || \"\",\n })),\n );\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n apiKey: this.apiKey,\n cseId: this.cseId,\n };\n }\n\n loadSnapshot({ apiKey, cseId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, {\n apiKey,\n cseId,\n });\n }\n}\n"]}
@@ -11,7 +11,7 @@ import 'promise-based-task';
11
11
  import '../../cache/base.cjs';
12
12
  import '../../internals/helpers/schema.cjs';
13
13
  import 'zod-to-json-schema';
14
- import '../../emitter-pJzHC_AM.cjs';
14
+ import '../../emitter-DpqUYjXH.cjs';
15
15
  import '../../internals/helpers/promise.cjs';
16
16
 
17
17
  /**
@@ -11,7 +11,7 @@ import 'promise-based-task';
11
11
  import '../../cache/base.js';
12
12
  import '../../internals/helpers/schema.js';
13
13
  import 'zod-to-json-schema';
14
- import '../../emitter-BqpLJQVb.js';
14
+ import '../../emitter-CZFbzlUi.js';
15
15
  import '../../internals/helpers/promise.js';
16
16
 
17
17
  /**
@@ -40,6 +40,8 @@ var stringComparison__default = /*#__PURE__*/_interopDefault(stringComparison);
40
40
 
41
41
  var __defProp = Object.defineProperty;
42
42
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
43
+ var getImportMetaUrl = /* @__PURE__ */ __name(() => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href, "getImportMetaUrl");
44
+ var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
43
45
  function _ts_decorate(decorators, target, key, desc) {
44
46
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
45
47
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -267,6 +269,7 @@ class WikipediaTool extends base_cjs$1.Tool {
267
269
  }));
268
270
  }
269
271
  async _run({ query: input }, _options) {
272
+ await patchAxiosUserAgent();
270
273
  const runOptions = this._createRunOptions(_options);
271
274
  const { results: searchRawResults, suggestion } = await wiki__default.default.default.search(input, {
272
275
  suggestion: Boolean(_options?.search?.suggestion),
@@ -331,6 +334,28 @@ _ts_decorate([
331
334
  _ts_metadata("design:type", typeof WikipediaToolRunOptions === "undefined" ? Object : WikipediaToolRunOptions),
332
335
  _ts_metadata("design:paramtypes", [])
333
336
  ], WikipediaTool.prototype, "_defaultRunOptions", null);
337
+ async function patchAxiosUserAgent() {
338
+ if (patchAxiosUserAgent.patched) {
339
+ return;
340
+ }
341
+ patchAxiosUserAgent.patched = true;
342
+ const doPatch = /* @__PURE__ */ __name((entry) => {
343
+ entry.defaults.headers.common["User-Agent"] = "BeeAI Framework";
344
+ }, "doPatch");
345
+ const { default: axios } = await import('axios');
346
+ doPatch(axios);
347
+ try {
348
+ const { createRequire } = await import('node:module');
349
+ const require2 = createRequire(importMetaUrl);
350
+ const { default: axiosCjs } = await require2("axios");
351
+ if (axiosCjs !== axios) {
352
+ doPatch(axiosCjs);
353
+ }
354
+ } catch {
355
+ }
356
+ }
357
+ __name(patchAxiosUserAgent, "patchAxiosUserAgent");
358
+ patchAxiosUserAgent.patched = false;
334
359
 
335
360
  exports.WikipediaTool = WikipediaTool;
336
361
  exports.WikipediaToolOutput = WikipediaToolOutput;