beeai-framework 0.1.29 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs.map +1 -1
  2. package/dist/adapters/a2a/agents/agent.d.cts +2 -2
  3. package/dist/adapters/a2a/agents/agent.d.ts +2 -2
  4. package/dist/adapters/a2a/agents/agent.js.map +1 -1
  5. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  6. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  7. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  8. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  9. package/dist/adapters/a2a/agents/utils.cjs +52 -11
  10. package/dist/adapters/a2a/agents/utils.cjs.map +1 -1
  11. package/dist/adapters/a2a/agents/utils.js +52 -11
  12. package/dist/adapters/a2a/agents/utils.js.map +1 -1
  13. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -1
  14. package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
  15. package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
  16. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -1
  17. package/dist/adapters/a2a/serve/server.cjs.map +1 -1
  18. package/dist/adapters/a2a/serve/server.d.cts +2 -2
  19. package/dist/adapters/a2a/serve/server.d.ts +2 -2
  20. package/dist/adapters/a2a/serve/server.js.map +1 -1
  21. package/dist/adapters/acp/agents/agent.cjs.map +1 -1
  22. package/dist/adapters/acp/agents/agent.d.cts +2 -2
  23. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  24. package/dist/adapters/acp/agents/agent.js.map +1 -1
  25. package/dist/adapters/acp/agents/events.d.cts +1 -1
  26. package/dist/adapters/acp/agents/events.d.ts +1 -1
  27. package/dist/adapters/agentstack/agents/agent.cjs.map +1 -1
  28. package/dist/adapters/agentstack/agents/agent.d.cts +2 -2
  29. package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
  30. package/dist/adapters/agentstack/agents/agent.js.map +1 -1
  31. package/dist/adapters/agentstack/agents/events.d.cts +1 -1
  32. package/dist/adapters/agentstack/agents/events.d.ts +1 -1
  33. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  34. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
  35. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
  36. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  37. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  38. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  39. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  40. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
  41. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
  42. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  43. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  44. package/dist/adapters/anthropic/backend/chat.d.cts +2 -2
  45. package/dist/adapters/anthropic/backend/chat.d.ts +2 -2
  46. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  47. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  48. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  49. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  50. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  51. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  52. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  53. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  54. package/dist/adapters/azure-openai/backend/chat.d.cts +3 -3
  55. package/dist/adapters/azure-openai/backend/chat.d.ts +3 -3
  56. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  57. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  58. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  59. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  60. package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
  61. package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
  62. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  63. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  64. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  65. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  66. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  67. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  68. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  69. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  70. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  71. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/google-vertex/backend/chat.d.cts +3 -3
  73. package/dist/adapters/google-vertex/backend/chat.d.ts +3 -3
  74. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  75. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  76. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  77. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  78. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  79. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  80. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  81. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  82. package/dist/adapters/groq/backend/chat.d.cts +3 -3
  83. package/dist/adapters/groq/backend/chat.d.ts +3 -3
  84. package/dist/adapters/groq/backend/chat.js.map +1 -1
  85. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  86. package/dist/adapters/groq/backend/client.js.map +1 -1
  87. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  88. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  89. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  90. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  91. package/dist/adapters/langchain/backend/chat.cjs +6 -28
  92. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  93. package/dist/adapters/langchain/backend/chat.d.cts +6 -5
  94. package/dist/adapters/langchain/backend/chat.d.ts +6 -5
  95. package/dist/adapters/langchain/backend/chat.js +6 -28
  96. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  97. package/dist/adapters/langchain/backend/embedding.cjs +3 -2
  98. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  99. package/dist/adapters/langchain/backend/embedding.d.cts +3 -3
  100. package/dist/adapters/langchain/backend/embedding.d.ts +3 -3
  101. package/dist/adapters/langchain/backend/embedding.js +3 -2
  102. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  103. package/dist/adapters/langchain/backend/utils.cjs +328 -0
  104. package/dist/adapters/langchain/backend/utils.cjs.map +1 -0
  105. package/dist/adapters/langchain/backend/utils.d.cts +39 -0
  106. package/dist/adapters/langchain/backend/utils.d.ts +39 -0
  107. package/dist/adapters/langchain/backend/utils.js +324 -0
  108. package/dist/adapters/langchain/backend/utils.js.map +1 -0
  109. package/dist/adapters/langchain/tools.cjs.map +1 -1
  110. package/dist/adapters/langchain/tools.d.cts +2 -2
  111. package/dist/adapters/langchain/tools.d.ts +2 -2
  112. package/dist/adapters/langchain/tools.js.map +1 -1
  113. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  114. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  115. package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
  116. package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
  117. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  118. package/dist/adapters/mcp/serve/server.js.map +1 -1
  119. package/dist/adapters/minimax/backend/chat.cjs +25 -0
  120. package/dist/adapters/minimax/backend/chat.cjs.map +1 -0
  121. package/dist/adapters/minimax/backend/chat.d.cts +38 -0
  122. package/dist/adapters/minimax/backend/chat.d.ts +38 -0
  123. package/dist/adapters/minimax/backend/chat.js +23 -0
  124. package/dist/adapters/minimax/backend/chat.js.map +1 -0
  125. package/dist/adapters/minimax/backend/client.cjs +31 -0
  126. package/dist/adapters/minimax/backend/client.cjs.map +1 -0
  127. package/dist/adapters/minimax/backend/client.d.cts +17 -0
  128. package/dist/adapters/minimax/backend/client.d.ts +17 -0
  129. package/dist/adapters/minimax/backend/client.js +29 -0
  130. package/dist/adapters/minimax/backend/client.js.map +1 -0
  131. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  132. package/dist/adapters/ollama/backend/chat.d.cts +2 -2
  133. package/dist/adapters/ollama/backend/chat.d.ts +2 -2
  134. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  135. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  136. package/dist/adapters/ollama/backend/client.js.map +1 -1
  137. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  138. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  139. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  140. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  141. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  142. package/dist/adapters/openai/backend/chat.d.cts +2 -2
  143. package/dist/adapters/openai/backend/chat.d.ts +2 -2
  144. package/dist/adapters/openai/backend/chat.js.map +1 -1
  145. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  146. package/dist/adapters/openai/backend/client.js.map +1 -1
  147. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  148. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  149. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  150. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  151. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  152. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  153. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  154. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  155. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  156. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  157. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  158. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  159. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  160. package/dist/adapters/vercel/backend/utils.d.cts +2 -2
  161. package/dist/adapters/vercel/backend/utils.d.ts +2 -2
  162. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  163. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  164. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  165. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  166. package/dist/adapters/watsonx/backend/chat.js +1 -1
  167. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  168. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  169. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  170. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  171. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  172. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  173. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  174. package/dist/adapters/xai/backend/chat.cjs.map +1 -1
  175. package/dist/adapters/xai/backend/chat.d.cts +2 -2
  176. package/dist/adapters/xai/backend/chat.d.ts +2 -2
  177. package/dist/adapters/xai/backend/chat.js.map +1 -1
  178. package/dist/adapters/xai/backend/client.cjs.map +1 -1
  179. package/dist/adapters/xai/backend/client.js.map +1 -1
  180. package/dist/{agent-CZGWXO-X.d.ts → agent-s3uhvAba.d.ts} +4 -4
  181. package/dist/{agent-PRlGoawI.d.cts → agent-zfT__iq9.d.cts} +4 -4
  182. package/dist/agents/base.cjs.map +1 -1
  183. package/dist/agents/base.d.cts +2 -2
  184. package/dist/agents/base.d.ts +2 -2
  185. package/dist/agents/base.js.map +1 -1
  186. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  187. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  188. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  189. package/dist/agents/experimental/replan/agent.js.map +1 -1
  190. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  191. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  192. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  193. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  194. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  195. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  196. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  197. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  198. package/dist/agents/experimental/streamlit/prompts.cjs +2 -2
  199. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  200. package/dist/agents/experimental/streamlit/prompts.js +2 -2
  201. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  202. package/dist/agents/react/agent.cjs +6 -6
  203. package/dist/agents/react/agent.cjs.map +1 -1
  204. package/dist/agents/react/agent.d.cts +4 -4
  205. package/dist/agents/react/agent.d.ts +4 -4
  206. package/dist/agents/react/agent.js.map +1 -1
  207. package/dist/agents/react/prompts.cjs.map +1 -1
  208. package/dist/agents/react/prompts.js.map +1 -1
  209. package/dist/agents/react/runners/base.cjs.map +1 -1
  210. package/dist/agents/react/runners/base.d.cts +4 -4
  211. package/dist/agents/react/runners/base.d.ts +4 -4
  212. package/dist/agents/react/runners/base.js.map +1 -1
  213. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  214. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  215. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  216. package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
  217. package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
  218. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  219. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  220. package/dist/agents/react/runners/default/runner.d.cts +4 -4
  221. package/dist/agents/react/runners/default/runner.d.ts +4 -4
  222. package/dist/agents/react/runners/default/runner.js.map +1 -1
  223. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  224. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  225. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  226. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  227. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  228. package/dist/agents/react/runners/granite/runner.d.cts +4 -4
  229. package/dist/agents/react/runners/granite/runner.d.ts +4 -4
  230. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  231. package/dist/agents/react/types.d.cts +2 -2
  232. package/dist/agents/react/types.d.ts +2 -2
  233. package/dist/agents/requirement/agent.cjs.map +1 -1
  234. package/dist/agents/requirement/agent.d.cts +5 -5
  235. package/dist/agents/requirement/agent.d.ts +5 -5
  236. package/dist/agents/requirement/agent.js.map +1 -1
  237. package/dist/agents/requirement/prompts.d.cts +8 -8
  238. package/dist/agents/requirement/prompts.d.ts +8 -8
  239. package/dist/agents/requirement/requirements/conditional.cjs.map +1 -1
  240. package/dist/agents/requirement/requirements/conditional.d.cts +5 -5
  241. package/dist/agents/requirement/requirements/conditional.d.ts +5 -5
  242. package/dist/agents/requirement/requirements/conditional.js.map +1 -1
  243. package/dist/agents/requirement/requirements/requirement.cjs.map +1 -1
  244. package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
  245. package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
  246. package/dist/agents/requirement/requirements/requirement.js.map +1 -1
  247. package/dist/agents/requirement/requirements/utils.cjs.map +1 -1
  248. package/dist/agents/requirement/requirements/utils.d.cts +1 -1
  249. package/dist/agents/requirement/requirements/utils.d.ts +1 -1
  250. package/dist/agents/requirement/requirements/utils.js.map +1 -1
  251. package/dist/agents/requirement/runner.cjs.map +1 -1
  252. package/dist/agents/requirement/runner.d.cts +5 -5
  253. package/dist/agents/requirement/runner.d.ts +5 -5
  254. package/dist/agents/requirement/runner.js.map +1 -1
  255. package/dist/agents/requirement/types.d.cts +4 -4
  256. package/dist/agents/requirement/types.d.ts +4 -4
  257. package/dist/agents/requirement/utils/llm.cjs.map +1 -1
  258. package/dist/agents/requirement/utils/llm.d.cts +4 -4
  259. package/dist/agents/requirement/utils/llm.d.ts +4 -4
  260. package/dist/agents/requirement/utils/llm.js.map +1 -1
  261. package/dist/agents/requirement/utils/tool.cjs.map +1 -1
  262. package/dist/agents/requirement/utils/tool.d.cts +4 -4
  263. package/dist/agents/requirement/utils/tool.d.ts +4 -4
  264. package/dist/agents/requirement/utils/tool.js.map +1 -1
  265. package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -1
  266. package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -1
  267. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  268. package/dist/agents/toolCalling/agent.d.cts +4 -4
  269. package/dist/agents/toolCalling/agent.d.ts +4 -4
  270. package/dist/agents/toolCalling/agent.js.map +1 -1
  271. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  272. package/dist/agents/toolCalling/prompts.js.map +1 -1
  273. package/dist/agents/toolCalling/types.d.cts +1 -1
  274. package/dist/agents/toolCalling/types.d.ts +1 -1
  275. package/dist/agents/types.d.cts +2 -2
  276. package/dist/agents/types.d.ts +2 -2
  277. package/dist/backend/backend.cjs.map +1 -1
  278. package/dist/backend/backend.d.cts +3 -3
  279. package/dist/backend/backend.d.ts +3 -3
  280. package/dist/backend/backend.js.map +1 -1
  281. package/dist/backend/chat.cjs.map +1 -1
  282. package/dist/backend/chat.d.cts +2 -2
  283. package/dist/backend/chat.d.ts +2 -2
  284. package/dist/backend/chat.js.map +1 -1
  285. package/dist/backend/client.cjs.map +1 -1
  286. package/dist/backend/client.js.map +1 -1
  287. package/dist/backend/constants.cjs +7 -0
  288. package/dist/backend/constants.cjs.map +1 -1
  289. package/dist/backend/constants.d.cts +5 -0
  290. package/dist/backend/constants.d.ts +5 -0
  291. package/dist/backend/constants.js +7 -0
  292. package/dist/backend/constants.js.map +1 -1
  293. package/dist/backend/core.d.cts +2 -2
  294. package/dist/backend/core.d.ts +2 -2
  295. package/dist/backend/embedding.cjs.map +1 -1
  296. package/dist/backend/embedding.d.cts +2 -2
  297. package/dist/backend/embedding.d.ts +2 -2
  298. package/dist/backend/embedding.js.map +1 -1
  299. package/dist/backend/errors.cjs.map +1 -1
  300. package/dist/backend/errors.d.cts +2 -2
  301. package/dist/backend/errors.d.ts +2 -2
  302. package/dist/backend/errors.js.map +1 -1
  303. package/dist/backend/message.cjs.map +1 -1
  304. package/dist/backend/message.js.map +1 -1
  305. package/dist/backend/utils.cjs.map +1 -1
  306. package/dist/backend/utils.d.cts +2 -2
  307. package/dist/backend/utils.d.ts +2 -2
  308. package/dist/backend/utils.js.map +1 -1
  309. package/dist/{base-CyFx7BRL.d.ts → base-BjzyQ8k6.d.ts} +2 -2
  310. package/dist/{base-XfWeXQ-S.d.cts → base-s3ioVIE9.d.cts} +2 -2
  311. package/dist/cache/decoratorCache.cjs.map +1 -1
  312. package/dist/cache/decoratorCache.js.map +1 -1
  313. package/dist/cache/fileCache.cjs.map +1 -1
  314. package/dist/cache/fileCache.js.map +1 -1
  315. package/dist/cache/nullCache.cjs.map +1 -1
  316. package/dist/cache/nullCache.js.map +1 -1
  317. package/dist/cache/slidingCache.cjs.map +1 -1
  318. package/dist/cache/slidingCache.js.map +1 -1
  319. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  320. package/dist/cache/unconstrainedCache.js.map +1 -1
  321. package/dist/{chat-BFl85cqt.d.cts → chat-C20nYj46.d.cts} +3 -3
  322. package/dist/{chat-BRuyDeKR.d.ts → chat-CfTNfR60.d.ts} +3 -3
  323. package/dist/context.cjs.map +1 -1
  324. package/dist/context.d.cts +1 -1
  325. package/dist/context.d.ts +1 -1
  326. package/dist/context.js.map +1 -1
  327. package/dist/emitter/emitter.cjs.map +1 -1
  328. package/dist/emitter/emitter.d.cts +1 -1
  329. package/dist/emitter/emitter.d.ts +1 -1
  330. package/dist/emitter/emitter.js.map +1 -1
  331. package/dist/emitter/types.d.cts +1 -1
  332. package/dist/emitter/types.d.ts +1 -1
  333. package/dist/emitter/utils.cjs.map +1 -1
  334. package/dist/emitter/utils.js.map +1 -1
  335. package/dist/{emitter-jN55XZZq.d.cts → emitter-D4OcelZ9.d.cts} +1 -1
  336. package/dist/{emitter-36-9MnvA.d.ts → emitter-kHxkUxco.d.ts} +1 -1
  337. package/dist/errors.cjs.map +1 -1
  338. package/dist/errors.js.map +1 -1
  339. package/dist/index.d.cts +4 -4
  340. package/dist/index.d.ts +4 -4
  341. package/dist/internals/env.cjs.map +1 -1
  342. package/dist/internals/env.js.map +1 -1
  343. package/dist/internals/fetcher.cjs.map +1 -1
  344. package/dist/internals/fetcher.d.cts +1 -1
  345. package/dist/internals/fetcher.d.ts +1 -1
  346. package/dist/internals/fetcher.js.map +1 -1
  347. package/dist/internals/helpers/array.cjs.map +1 -1
  348. package/dist/internals/helpers/array.js.map +1 -1
  349. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  350. package/dist/internals/helpers/cancellation.js.map +1 -1
  351. package/dist/internals/helpers/counter.cjs.map +1 -1
  352. package/dist/internals/helpers/counter.js.map +1 -1
  353. package/dist/internals/helpers/general.cjs.map +1 -1
  354. package/dist/internals/helpers/general.js.map +1 -1
  355. package/dist/internals/helpers/hash.cjs.map +1 -1
  356. package/dist/internals/helpers/hash.js.map +1 -1
  357. package/dist/internals/helpers/map.cjs.map +1 -1
  358. package/dist/internals/helpers/map.js.map +1 -1
  359. package/dist/internals/helpers/math.cjs.map +1 -1
  360. package/dist/internals/helpers/math.js.map +1 -1
  361. package/dist/internals/helpers/object.cjs +7 -1
  362. package/dist/internals/helpers/object.cjs.map +1 -1
  363. package/dist/internals/helpers/object.js +7 -1
  364. package/dist/internals/helpers/object.js.map +1 -1
  365. package/dist/internals/helpers/paginate.cjs.map +1 -1
  366. package/dist/internals/helpers/paginate.js.map +1 -1
  367. package/dist/internals/helpers/promise.cjs.map +1 -1
  368. package/dist/internals/helpers/promise.js.map +1 -1
  369. package/dist/internals/helpers/prototype.cjs.map +1 -1
  370. package/dist/internals/helpers/prototype.js.map +1 -1
  371. package/dist/internals/helpers/retry.cjs.map +1 -1
  372. package/dist/internals/helpers/retry.js.map +1 -1
  373. package/dist/internals/helpers/retryable.cjs.map +1 -1
  374. package/dist/internals/helpers/retryable.js.map +1 -1
  375. package/dist/internals/helpers/schema.cjs.map +1 -1
  376. package/dist/internals/helpers/schema.d.cts +4 -4
  377. package/dist/internals/helpers/schema.d.ts +4 -4
  378. package/dist/internals/helpers/schema.js.map +1 -1
  379. package/dist/internals/helpers/stream.cjs.map +1 -1
  380. package/dist/internals/helpers/stream.js.map +1 -1
  381. package/dist/internals/helpers/string.cjs.map +1 -1
  382. package/dist/internals/helpers/string.js.map +1 -1
  383. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  384. package/dist/internals/helpers/weakRef.js.map +1 -1
  385. package/dist/internals/serializable.cjs +3 -1
  386. package/dist/internals/serializable.cjs.map +1 -1
  387. package/dist/internals/serializable.d.cts +6 -0
  388. package/dist/internals/serializable.d.ts +6 -0
  389. package/dist/internals/serializable.js +3 -1
  390. package/dist/internals/serializable.js.map +1 -1
  391. package/dist/internals/types.cjs.map +1 -1
  392. package/dist/internals/types.js.map +1 -1
  393. package/dist/logger/logger.cjs.map +1 -1
  394. package/dist/logger/logger.d.cts +2 -2
  395. package/dist/logger/logger.d.ts +2 -2
  396. package/dist/logger/logger.js +2 -2
  397. package/dist/logger/logger.js.map +1 -1
  398. package/dist/logger/pretty.cjs.map +1 -1
  399. package/dist/logger/pretty.js.map +1 -1
  400. package/dist/memory/base.cjs.map +1 -1
  401. package/dist/memory/base.js.map +1 -1
  402. package/dist/memory/slidingMemory.cjs.map +1 -1
  403. package/dist/memory/slidingMemory.js.map +1 -1
  404. package/dist/memory/summarizeMemory.cjs.map +1 -1
  405. package/dist/memory/summarizeMemory.d.cts +2 -2
  406. package/dist/memory/summarizeMemory.d.ts +2 -2
  407. package/dist/memory/summarizeMemory.js.map +1 -1
  408. package/dist/memory/tokenMemory.cjs.map +1 -1
  409. package/dist/memory/tokenMemory.js.map +1 -1
  410. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  411. package/dist/memory/unconstrainedMemory.js.map +1 -1
  412. package/dist/middleware/streamToolCall.cjs.map +1 -1
  413. package/dist/middleware/streamToolCall.d.cts +2 -2
  414. package/dist/middleware/streamToolCall.d.ts +2 -2
  415. package/dist/middleware/streamToolCall.js.map +1 -1
  416. package/dist/middleware/trajectory.cjs.map +1 -1
  417. package/dist/middleware/trajectory.d.cts +2 -2
  418. package/dist/middleware/trajectory.d.ts +2 -2
  419. package/dist/middleware/trajectory.js.map +1 -1
  420. package/dist/parsers/errors.cjs.map +1 -1
  421. package/dist/parsers/errors.js.map +1 -1
  422. package/dist/parsers/field.cjs.map +1 -1
  423. package/dist/parsers/field.js.map +1 -1
  424. package/dist/parsers/linePrefix.cjs.map +1 -1
  425. package/dist/parsers/linePrefix.d.cts +1 -1
  426. package/dist/parsers/linePrefix.d.ts +1 -1
  427. package/dist/parsers/linePrefix.js.map +1 -1
  428. package/dist/serializer/error.cjs.map +1 -1
  429. package/dist/serializer/error.js.map +1 -1
  430. package/dist/serializer/serializer.cjs +16 -3
  431. package/dist/serializer/serializer.cjs.map +1 -1
  432. package/dist/serializer/serializer.d.cts +1 -1
  433. package/dist/serializer/serializer.d.ts +1 -1
  434. package/dist/serializer/serializer.js +16 -4
  435. package/dist/serializer/serializer.js.map +1 -1
  436. package/dist/serializer/utils.cjs.map +1 -1
  437. package/dist/serializer/utils.d.cts +1 -1
  438. package/dist/serializer/utils.d.ts +1 -1
  439. package/dist/serializer/utils.js.map +1 -1
  440. package/dist/{serializer-53t8gGQa.d.ts → serializer-BafOT48s.d.ts} +10 -4
  441. package/dist/{serializer-c51B2z6d.d.cts → serializer-CFDWYUco.d.cts} +10 -4
  442. package/dist/serve/server.cjs.map +1 -1
  443. package/dist/serve/server.js.map +1 -1
  444. package/dist/template.cjs.map +1 -1
  445. package/dist/template.js.map +1 -1
  446. package/dist/tools/arxiv.cjs.map +1 -1
  447. package/dist/tools/arxiv.d.cts +2 -2
  448. package/dist/tools/arxiv.d.ts +2 -2
  449. package/dist/tools/arxiv.js.map +1 -1
  450. package/dist/tools/base.cjs.map +1 -1
  451. package/dist/tools/base.d.cts +1 -1
  452. package/dist/tools/base.d.ts +1 -1
  453. package/dist/tools/base.js.map +1 -1
  454. package/dist/tools/calculator.cjs.map +1 -1
  455. package/dist/tools/calculator.d.cts +3 -3
  456. package/dist/tools/calculator.d.ts +3 -3
  457. package/dist/tools/calculator.js.map +1 -1
  458. package/dist/tools/custom.cjs.map +1 -1
  459. package/dist/tools/custom.d.cts +3 -3
  460. package/dist/tools/custom.d.ts +3 -3
  461. package/dist/tools/custom.js.map +1 -1
  462. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  463. package/dist/tools/database/elasticsearch.d.cts +3 -3
  464. package/dist/tools/database/elasticsearch.d.ts +3 -3
  465. package/dist/tools/database/elasticsearch.js.map +1 -1
  466. package/dist/tools/database/metadata.cjs.map +1 -1
  467. package/dist/tools/database/metadata.js.map +1 -1
  468. package/dist/tools/database/milvus.cjs.map +1 -1
  469. package/dist/tools/database/milvus.d.cts +5 -5
  470. package/dist/tools/database/milvus.d.ts +5 -5
  471. package/dist/tools/database/milvus.js.map +1 -1
  472. package/dist/tools/database/qdrant.cjs.map +1 -1
  473. package/dist/tools/database/qdrant.d.cts +2 -2
  474. package/dist/tools/database/qdrant.d.ts +2 -2
  475. package/dist/tools/database/qdrant.js.map +1 -1
  476. package/dist/tools/database/sql.cjs.map +1 -1
  477. package/dist/tools/database/sql.d.cts +2 -2
  478. package/dist/tools/database/sql.d.ts +2 -2
  479. package/dist/tools/database/sql.js.map +1 -1
  480. package/dist/tools/handoff.cjs.map +1 -1
  481. package/dist/tools/handoff.d.cts +2 -2
  482. package/dist/tools/handoff.d.ts +2 -2
  483. package/dist/tools/handoff.js.map +1 -1
  484. package/dist/tools/llm.cjs +1 -1
  485. package/dist/tools/llm.cjs.map +1 -1
  486. package/dist/tools/llm.d.cts +3 -3
  487. package/dist/tools/llm.d.ts +3 -3
  488. package/dist/tools/llm.js +1 -1
  489. package/dist/tools/llm.js.map +1 -1
  490. package/dist/tools/mcp.cjs.map +1 -1
  491. package/dist/tools/mcp.d.cts +2 -2
  492. package/dist/tools/mcp.d.ts +2 -2
  493. package/dist/tools/mcp.js.map +1 -1
  494. package/dist/tools/openapi.cjs.map +1 -1
  495. package/dist/tools/openapi.d.cts +2 -2
  496. package/dist/tools/openapi.d.ts +2 -2
  497. package/dist/tools/openapi.js.map +1 -1
  498. package/dist/tools/python/output.cjs.map +1 -1
  499. package/dist/tools/python/output.d.cts +1 -1
  500. package/dist/tools/python/output.d.ts +1 -1
  501. package/dist/tools/python/output.js.map +1 -1
  502. package/dist/tools/python/python.cjs +5 -2
  503. package/dist/tools/python/python.cjs.map +1 -1
  504. package/dist/tools/python/python.d.cts +3 -3
  505. package/dist/tools/python/python.d.ts +3 -3
  506. package/dist/tools/python/python.js +5 -2
  507. package/dist/tools/python/python.js.map +1 -1
  508. package/dist/tools/python/storage.cjs.map +1 -1
  509. package/dist/tools/python/storage.js.map +1 -1
  510. package/dist/tools/search/base.cjs.map +1 -1
  511. package/dist/tools/search/base.d.cts +2 -2
  512. package/dist/tools/search/base.d.ts +2 -2
  513. package/dist/tools/search/base.js.map +1 -1
  514. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  515. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
  516. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
  517. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  518. package/dist/tools/search/googleSearch.cjs.map +1 -1
  519. package/dist/tools/search/googleSearch.d.cts +2 -2
  520. package/dist/tools/search/googleSearch.d.ts +2 -2
  521. package/dist/tools/search/googleSearch.js.map +1 -1
  522. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  523. package/dist/tools/search/searXNGSearch.d.cts +2 -2
  524. package/dist/tools/search/searXNGSearch.d.ts +2 -2
  525. package/dist/tools/search/searXNGSearch.js.map +1 -1
  526. package/dist/tools/search/wikipedia.cjs.map +1 -1
  527. package/dist/tools/search/wikipedia.d.cts +3 -3
  528. package/dist/tools/search/wikipedia.d.ts +3 -3
  529. package/dist/tools/search/wikipedia.js.map +1 -1
  530. package/dist/tools/similarity.cjs.map +1 -1
  531. package/dist/tools/similarity.d.cts +2 -2
  532. package/dist/tools/similarity.d.ts +2 -2
  533. package/dist/tools/similarity.js.map +1 -1
  534. package/dist/tools/think.cjs.map +1 -1
  535. package/dist/tools/think.d.cts +2 -2
  536. package/dist/tools/think.d.ts +2 -2
  537. package/dist/tools/think.js.map +1 -1
  538. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  539. package/dist/tools/weather/openMeteo.d.cts +2 -2
  540. package/dist/tools/weather/openMeteo.d.ts +2 -2
  541. package/dist/tools/weather/openMeteo.js.map +1 -1
  542. package/dist/tools/web/webCrawler.cjs.map +1 -1
  543. package/dist/tools/web/webCrawler.d.cts +2 -2
  544. package/dist/tools/web/webCrawler.d.ts +2 -2
  545. package/dist/tools/web/webCrawler.js.map +1 -1
  546. package/dist/{types-CkEtV8R9.d.cts → types-BNsa3W7Z.d.cts} +4 -4
  547. package/dist/{types-BQ-3LdkE.d.ts → types-DYtzF6ya.d.ts} +4 -4
  548. package/dist/version.cjs +1 -1
  549. package/dist/version.js +1 -1
  550. package/dist/workflows/agent.cjs.map +1 -1
  551. package/dist/workflows/agent.d.cts +40 -40
  552. package/dist/workflows/agent.d.ts +40 -40
  553. package/dist/workflows/agent.js.map +1 -1
  554. package/dist/workflows/workflow.cjs.map +1 -1
  555. package/dist/workflows/workflow.d.cts +1 -1
  556. package/dist/workflows/workflow.d.ts +1 -1
  557. package/dist/workflows/workflow.js.map +1 -1
  558. package/package.json +33 -10
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/python/storage.ts"],"names":["PythonStorage","Serializable","TemporaryStorage","files","list","slice","upload","map","file","id","pythonId","filename","download","filter","every","f","createSnapshot","loadSnapshot","snapshot","Object","assign","LocalPythonStorage","input","ignoredFiles","Set","init","fs","promises","mkdir","localWorkingDir","recursive","interpreterWorkingDir","readdir","withFileTypes","Promise","all","isFile","has","name","computeHash","path","join","toString","fileList","filesystemFile","find","copyFile","hash","crypto","createHash","pipeline","createReadStream","digest","shallowCopy"],"mappings":"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","file":"storage.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { PathLike } from \"fs\";\nimport * as crypto from \"node:crypto\";\nimport { pipeline } from \"node:stream/promises\";\nimport fs, { createReadStream } from \"node:fs\";\nimport { copyFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport interface PythonFile {\n id: string;\n pythonId: string;\n filename: string;\n}\n\nexport interface PythonUploadFile {\n id: string;\n filename: string;\n}\n\nexport interface PythonDownloadFile {\n id?: string;\n filename: string;\n pythonId: string;\n}\n\nexport abstract class PythonStorage extends Serializable {\n /**\n * List all files that code interpreter can use.\n */\n abstract list(): Promise<PythonFile[]>;\n\n /**\n * Prepare subset of available files to code interpreter.\n */\n abstract upload(files: PythonUploadFile[]): Promise<PythonFile[]>;\n\n /**\n * Process updated/modified/deleted files from code interpreter response.\n */\n abstract download(files: PythonDownloadFile[]): Promise<PythonFile[]>;\n}\n\nexport class TemporaryStorage extends PythonStorage {\n protected files: PythonFile[] = [];\n\n async list() {\n return this.files.slice();\n }\n\n async upload(files: PythonUploadFile[]): Promise<PythonFile[]> {\n return files.map((file) => ({\n id: file.id,\n pythonId: file.id,\n filename: file.filename,\n }));\n }\n\n async download(files: PythonDownloadFile[]) {\n this.files = [\n ...this.files.filter((file) => files.every((f) => f.filename !== file.filename)),\n ...files.map((file) => ({ id: file.pythonId, ...file })),\n ];\n return this.files.slice();\n }\n\n createSnapshot() {\n return { files: this.files.slice() };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\ninterface Input {\n localWorkingDir: PathLike;\n interpreterWorkingDir: PathLike;\n ignoredFiles?: Set<string>;\n}\n\nexport class LocalPythonStorage extends PythonStorage {\n protected readonly input: Required<Input>;\n\n constructor(input: Input) {\n super();\n this.input = {\n ...input,\n ignoredFiles: input?.ignoredFiles ?? new Set([\".gitkeep\"]),\n };\n }\n\n @Cache()\n protected async init() {\n await fs.promises.mkdir(this.input.localWorkingDir, { recursive: true });\n await fs.promises.mkdir(this.input.interpreterWorkingDir, { recursive: true });\n }\n\n async list(): Promise<PythonFile[]> {\n await this.init();\n\n const files = await fs.promises.readdir(this.input.localWorkingDir, {\n withFileTypes: true,\n recursive: false,\n });\n return Promise.all(\n files\n .filter((file) => file.isFile() && !this.input.ignoredFiles.has(file.name))\n .map(async (file) => {\n const pythonId = await this.computeHash(\n path.join(this.input.localWorkingDir.toString(), file.name),\n );\n\n return {\n id: pythonId,\n filename: file.name,\n pythonId,\n };\n }),\n );\n }\n\n async upload(files: PythonUploadFile[]): Promise<PythonFile[]> {\n await this.init();\n\n const fileList = await this.list();\n\n await Promise.all(\n files.map((file) => {\n const filesystemFile = fileList.find((filesystemFile) => filesystemFile.id === file.id)!;\n return copyFile(\n path.join(this.input.localWorkingDir.toString(), filesystemFile.filename),\n path.join(this.input.interpreterWorkingDir.toString(), filesystemFile.id),\n );\n }),\n );\n return files.map((file) => ({ ...file, pythonId: file.id }));\n }\n\n async download(files: PythonDownloadFile[]) {\n await this.init();\n\n await Promise.all(\n files.map((file) =>\n copyFile(\n path.join(this.input.interpreterWorkingDir.toString(), file.pythonId),\n path.join(this.input.localWorkingDir.toString(), file.filename),\n ),\n ),\n );\n return files.map((file) => ({ ...file, id: file.pythonId }));\n }\n\n protected async computeHash(file: PathLike) {\n const hash = crypto.createHash(\"sha256\");\n await pipeline(createReadStream(file), hash);\n return hash.digest(\"hex\");\n }\n\n createSnapshot() {\n return { input: shallowCopy(this.input) };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/python/storage.ts"],"names":["PythonStorage","Serializable","TemporaryStorage","files","list","slice","upload","map","file","id","pythonId","filename","download","filter","every","f","createSnapshot","loadSnapshot","snapshot","Object","assign","LocalPythonStorage","input","ignoredFiles","Set","init","fs","promises","mkdir","localWorkingDir","recursive","interpreterWorkingDir","readdir","withFileTypes","Promise","all","isFile","has","name","computeHash","path","join","toString","fileList","filesystemFile","find","copyFile","hash","crypto","createHash","pipeline","createReadStream","digest","shallowCopy"],"mappings":"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","file":"storage.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { PathLike } from \"fs\";\nimport * as crypto from \"node:crypto\";\nimport { pipeline } from \"node:stream/promises\";\nimport fs, { createReadStream } from \"node:fs\";\nimport { copyFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport interface PythonFile {\n id: string;\n pythonId: string;\n filename: string;\n}\n\nexport interface PythonUploadFile {\n id: string;\n filename: string;\n}\n\nexport interface PythonDownloadFile {\n id?: string;\n filename: string;\n pythonId: string;\n}\n\nexport abstract class PythonStorage extends Serializable {\n /**\n * List all files that code interpreter can use.\n */\n abstract list(): Promise<PythonFile[]>;\n\n /**\n * Prepare subset of available files to code interpreter.\n */\n abstract upload(files: PythonUploadFile[]): Promise<PythonFile[]>;\n\n /**\n * Process updated/modified/deleted files from code interpreter response.\n */\n abstract download(files: PythonDownloadFile[]): Promise<PythonFile[]>;\n}\n\nexport class TemporaryStorage extends PythonStorage {\n protected files: PythonFile[] = [];\n\n async list() {\n return this.files.slice();\n }\n\n async upload(files: PythonUploadFile[]): Promise<PythonFile[]> {\n return files.map((file) => ({\n id: file.id,\n pythonId: file.id,\n filename: file.filename,\n }));\n }\n\n async download(files: PythonDownloadFile[]) {\n this.files = [\n ...this.files.filter((file) => files.every((f) => f.filename !== file.filename)),\n ...files.map((file) => ({ id: file.pythonId, ...file })),\n ];\n return this.files.slice();\n }\n\n createSnapshot() {\n return { files: this.files.slice() };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\ninterface Input {\n localWorkingDir: PathLike;\n interpreterWorkingDir: PathLike;\n ignoredFiles?: Set<string>;\n}\n\nexport class LocalPythonStorage extends PythonStorage {\n protected readonly input: Required<Input>;\n\n constructor(input: Input) {\n super();\n this.input = {\n ...input,\n ignoredFiles: input?.ignoredFiles ?? new Set([\".gitkeep\"]),\n };\n }\n\n @Cache()\n protected async init() {\n await fs.promises.mkdir(this.input.localWorkingDir, { recursive: true });\n await fs.promises.mkdir(this.input.interpreterWorkingDir, { recursive: true });\n }\n\n async list(): Promise<PythonFile[]> {\n await this.init();\n\n const files = await fs.promises.readdir(this.input.localWorkingDir, {\n withFileTypes: true,\n recursive: false,\n });\n return Promise.all(\n files\n .filter((file) => file.isFile() && !this.input.ignoredFiles.has(file.name))\n .map(async (file) => {\n const pythonId = await this.computeHash(\n path.join(this.input.localWorkingDir.toString(), file.name),\n );\n\n return {\n id: pythonId,\n filename: file.name,\n pythonId,\n };\n }),\n );\n }\n\n async upload(files: PythonUploadFile[]): Promise<PythonFile[]> {\n await this.init();\n\n const fileList = await this.list();\n\n await Promise.all(\n files.map((file) => {\n const filesystemFile = fileList.find((filesystemFile) => filesystemFile.id === file.id)!;\n return copyFile(\n path.join(this.input.localWorkingDir.toString(), filesystemFile.filename),\n path.join(this.input.interpreterWorkingDir.toString(), filesystemFile.id),\n );\n }),\n );\n return files.map((file) => ({ ...file, pythonId: file.id }));\n }\n\n async download(files: PythonDownloadFile[]) {\n await this.init();\n\n await Promise.all(\n files.map((file) =>\n copyFile(\n path.join(this.input.interpreterWorkingDir.toString(), file.pythonId),\n path.join(this.input.localWorkingDir.toString(), file.filename),\n ),\n ),\n );\n return files.map((file) => ({ ...file, id: file.pythonId }));\n }\n\n protected async computeHash(file: PathLike) {\n const hash = crypto.createHash(\"sha256\");\n await pipeline(createReadStream(file), hash);\n return hash.digest(\"hex\");\n }\n\n createSnapshot() {\n return { input: shallowCopy(this.input) };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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
+ {"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,EAAA;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,EAAA;EAEAC,OAAAA,GAAU;AACR,IAAA,OAAO,IAAA,CAAKP,QAAQQ,MAAAA,KAAW,CAAA;AACjC,EAAA;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,EAAA;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
- import { BaseToolOptions, BaseToolRunOptions, ToolOutput } from '../base.cjs';
1
+ import { BaseToolOptions, ToolOutput, BaseToolRunOptions } from '../base.cjs';
2
2
  import 'ajv';
3
3
  import '../../context.cjs';
4
- import '../../emitter-jN55XZZq.cjs';
4
+ import '../../emitter-D4OcelZ9.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
- import { BaseToolOptions, BaseToolRunOptions, ToolOutput } from '../base.js';
1
+ import { BaseToolOptions, ToolOutput, BaseToolRunOptions } from '../base.js';
2
2
  import 'ajv';
3
3
  import '../../context.js';
4
- import '../../emitter-36-9MnvA.js';
4
+ import '../../emitter-kHxkUxco.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":";;;;;;;;;;;;;;;;;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
+ {"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,EAAA;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,EAAA;EAEAC,OAAAA,GAAU;AACR,IAAA,OAAO,IAAA,CAAKP,QAAQQ,MAAAA,KAAW,CAAA;AACjC,EAAA;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,EAAA;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"]}
@@ -1,13 +1,13 @@
1
1
  import { SearchOptions, search } from 'duck-duck-scrape';
2
2
  export { SafeSearchType as DuckDuckGoSearchToolSearchType } from 'duck-duck-scrape';
3
3
  import { Options } from 'p-throttle';
4
- import { SearchToolOptions, SearchToolRunOptions, SearchToolResult, SearchToolOutput } from './base.cjs';
4
+ import { SearchToolOutput, SearchToolResult, SearchToolOptions, SearchToolRunOptions } from './base.cjs';
5
5
  import { Tool, ToolEmitter, ToolInput } from '../base.cjs';
6
6
  import { NeedleOptions } from 'needle';
7
7
  import { z } from 'zod';
8
8
  import { RunContext } from '../../context.cjs';
9
9
  import 'ajv';
10
- import '../../emitter-jN55XZZq.cjs';
10
+ import '../../emitter-D4OcelZ9.cjs';
11
11
  import '../../internals/types.cjs';
12
12
  import '../../internals/helpers/guards.cjs';
13
13
  import '../../internals/serializable.cjs';
@@ -1,13 +1,13 @@
1
1
  import { SearchOptions, search } from 'duck-duck-scrape';
2
2
  export { SafeSearchType as DuckDuckGoSearchToolSearchType } from 'duck-duck-scrape';
3
3
  import { Options } from 'p-throttle';
4
- import { SearchToolOptions, SearchToolRunOptions, SearchToolResult, SearchToolOutput } from './base.js';
4
+ import { SearchToolOutput, SearchToolResult, SearchToolOptions, SearchToolRunOptions } from './base.js';
5
5
  import { Tool, ToolEmitter, ToolInput } from '../base.js';
6
6
  import { NeedleOptions } from 'needle';
7
7
  import { z } from 'zod';
8
8
  import { RunContext } from '../../context.js';
9
9
  import 'ajv';
10
- import '../../emitter-36-9MnvA.js';
10
+ import '../../emitter-kHxkUxco.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":"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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,11 +1,11 @@
1
1
  import { BaseCache } from '../../cache/base.cjs';
2
2
  import * as promise_based_task from 'promise-based-task';
3
3
  import { customsearch_v1 } from '@googleapis/customsearch';
4
- import { SearchToolOptions, SearchToolResult, SearchToolOutput, SearchToolRunOptions } from './base.cjs';
4
+ import { SearchToolOutput, SearchToolResult, SearchToolOptions, SearchToolRunOptions } from './base.cjs';
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-jN55XZZq.cjs';
8
+ import { E as Emitter } from '../../emitter-D4OcelZ9.cjs';
9
9
  import '../../internals/serializable.cjs';
10
10
  import '../../internals/types.cjs';
11
11
  import '../../internals/helpers/guards.cjs';
@@ -1,11 +1,11 @@
1
1
  import { BaseCache } from '../../cache/base.js';
2
2
  import * as promise_based_task from 'promise-based-task';
3
3
  import { customsearch_v1 } from '@googleapis/customsearch';
4
- import { SearchToolOptions, SearchToolResult, SearchToolOutput, SearchToolRunOptions } from './base.js';
4
+ import { SearchToolOutput, SearchToolResult, SearchToolOptions, SearchToolRunOptions } from './base.js';
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-36-9MnvA.js';
8
+ import { E as Emitter } from '../../emitter-kHxkUxco.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"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/search/searXNGSearch.ts"],"names":["SearXNGToolOutput","SearchToolOutput","register","createSnapshot","results","loadSnapshot","snapshot","Object","assign","SearXNGTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","describe","options","maxResults","ValidationError","message","propertyName","_run","input","_options","run","params","createURLParams","q","format","baseUrl","parseEnv","url","decodeURIComponent","toString","response","fetch","signal","ok","Error","text","data","json","slice","map","result","title","content"],"mappings":";;;;;;;;;;;;AA4BO,MAAMA,0BAA0BC,yBAAAA,CAAAA;EA5BvC;;;EA6BE;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AACf;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AACLC,MAAAA,OAAAA,EAAS,IAAA,CAAKA;AAChB,KAAA;AACF;AAEAC,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF;AAEO,MAAMG,oBAAoBC,eAAAA,CAAAA;EA5CjC;;;EAiDEC,IAAAA,GAAO,YAAA;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;EAEFC,WAAAA,GAAc;AACZ,IAAA,OAAOC,MAAEC,MAAAA,CAAO;AACdC,MAAAA,KAAAA,EAAOF,MAAEG,MAAAA,EAAM,CAAGC,IAAI,CAAA,CAAA,CAAGC,SAAS,CAAA,iBAAA,CAAmB;KACvD,CAAA;AACF;AAEA,EAAA,WAAA,CAAmBC,OAAAA,GAA8B;IAAEC,UAAAA,EAAY;GAAG,EAAG;AACnE,IAAA,KAAA,CAAMD,OAAAA,CAAAA;AAEN,IAAA,IAAIA,OAAAA,CAAQC,UAAAA,GAAa,CAAA,IAAKD,OAAAA,CAAQC,aAAa,GAAA,EAAK;AACtD,MAAA,MAAM,IAAIC,mBAAAA,CAAgB;AACxB,QAAA;UACEC,OAAAA,EAAS,iDAAA;UACTC,YAAAA,EAAc;AAChB;AACD,OAAA,CAAA;AACH;AACF;EAEA,MAAgBC,IAAAA,CACdC,KAAAA,EACAC,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,SAASC,2BAAAA,CAAgB;AAC7BC,MAAAA,CAAAA,EAAGL,KAAAA,CAAMV,KAAAA;MACTgB,MAAAA,EAAQ;KACV,CAAA;AAEA,IAAA,MAAMC,OAAAA,GAAU,KAAKb,OAAAA,CAAQa,OAAAA,IAAWC,iBAAS,kBAAA,EAAoBpB,KAAAA,CAAEG,QAAM,CAAA;AAC7E,IAAA,MAAMkB,GAAAA,GAAM,GAAGF,OAAAA,CAAAA,CAAAA,EAAWG,mBAAmBP,MAAAA,CAAOQ,QAAAA,EAAQ,CAAA,CAAA,CAAA;AAC5D,IAAA,MAAMC,QAAAA,GAAW,MAAMC,KAAAA,CAAMJ,GAAAA,EAAK;AAChCK,MAAAA,MAAAA,EAAQZ,GAAAA,CAAIY;KACd,CAAA;AAEA,IAAA,IAAI,CAACF,SAASG,EAAAA,EAAI;AAChB,MAAA,MAAM,IAAIC,KAAAA,CAAM,MAAMJ,QAAAA,CAASK,MAAI,CAAA;AACrC;AAEA,IAAA,MAAMC,IAAAA,GAAO,MAAMN,QAAAA,CAASO,IAAAA,EAAI;AAEhC,IAAA,OAAO,IAAInD,iBAAAA,CACTkD,IAAAA,CAAK9C,OAAAA,CACFgD,KAAAA,CAAM,CAAA,EAAG,IAAA,CAAK1B,OAAAA,CAAQC,UAAU,CAAA,CAChC0B,GAAAA,CAAI,CAACC,MAAAA,MAA6D;AACjEb,MAAAA,GAAAA,EAAKa,OAAOb,GAAAA,IAAO,EAAA;AACnBc,MAAAA,KAAAA,EAAOD,OAAOC,KAAAA,IAAS,EAAA;AACvB3C,MAAAA,WAAAA,EAAa0C,OAAOE,OAAAA,IAAW;AACjC,KAAA,CAAA,CAAA,CAAA;AAEN;AACF","file":"searXNGSearch.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { RunContext } from \"@/context.js\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"@/tools/search/base.js\";\nimport { ValidationError } from \"ajv\";\nimport { parseEnv } from \"@/internals/env.js\";\n\nexport interface SearXNGToolOptions extends SearchToolOptions {\n baseUrl?: string;\n maxResults: number;\n}\n\ntype SearXNGToolRunOptions = SearchToolRunOptions;\n\nexport interface SearXNGToolResult extends SearchToolResult {}\n\nexport class SearXNGToolOutput extends SearchToolOutput<SearXNGToolResult> {\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 SearXNGTool extends Tool<\n SearXNGToolOutput,\n SearXNGToolOptions,\n SearXNGToolRunOptions\n> {\n name = \"Web Search\";\n description = `Search for online trends, news, current events, real-time information, or research topics.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, SearchToolOutput<SearXNGToolResult>> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"searXNG\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n query: z.string().min(1).describe(`Web search query.`),\n });\n }\n\n public constructor(options: SearXNGToolOptions = { maxResults: 10 }) {\n super(options);\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 protected async _run(\n input: ToolInput<this>,\n _options: Partial<SearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = createURLParams({\n q: input.query,\n format: \"json\",\n });\n\n const baseUrl = this.options.baseUrl || parseEnv(\"SEARXNG_BASE_URL\", z.string());\n const url = `${baseUrl}?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n\n if (!response.ok) {\n throw new Error(await response.text());\n }\n\n const data = await response.json();\n\n return new SearXNGToolOutput(\n data.results\n .slice(0, this.options.maxResults)\n .map((result: { url: string; title: string; content: string }) => ({\n url: result.url || \"\",\n title: result.title || \"\",\n description: result.content || \"\",\n })),\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/search/searXNGSearch.ts"],"names":["SearXNGToolOutput","SearchToolOutput","register","createSnapshot","results","loadSnapshot","snapshot","Object","assign","SearXNGTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","describe","options","maxResults","ValidationError","message","propertyName","_run","input","_options","run","params","createURLParams","q","format","baseUrl","parseEnv","url","decodeURIComponent","toString","response","fetch","signal","ok","Error","text","data","json","slice","map","result","title","content"],"mappings":";;;;;;;;;;;;AA4BO,MAAMA,0BAA0BC,yBAAAA,CAAAA;EA5BvC;;;EA6BE;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AACf;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AACLC,MAAAA,OAAAA,EAAS,IAAA,CAAKA;AAChB,KAAA;AACF,EAAA;AAEAC,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB,EAAA;AACF;AAEO,MAAMG,oBAAoBC,eAAAA,CAAAA;EA5CjC;;;EAiDEC,IAAAA,GAAO,YAAA;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;EAEFC,WAAAA,GAAc;AACZ,IAAA,OAAOC,MAAEC,MAAAA,CAAO;AACdC,MAAAA,KAAAA,EAAOF,MAAEG,MAAAA,EAAM,CAAGC,IAAI,CAAA,CAAA,CAAGC,SAAS,CAAA,iBAAA,CAAmB;KACvD,CAAA;AACF,EAAA;AAEA,EAAA,WAAA,CAAmBC,OAAAA,GAA8B;IAAEC,UAAAA,EAAY;GAAG,EAAG;AACnE,IAAA,KAAA,CAAMD,OAAAA,CAAAA;AAEN,IAAA,IAAIA,OAAAA,CAAQC,UAAAA,GAAa,CAAA,IAAKD,OAAAA,CAAQC,aAAa,GAAA,EAAK;AACtD,MAAA,MAAM,IAAIC,mBAAAA,CAAgB;AACxB,QAAA;UACEC,OAAAA,EAAS,iDAAA;UACTC,YAAAA,EAAc;AAChB;AACD,OAAA,CAAA;AACH,IAAA;AACF,EAAA;EAEA,MAAgBC,IAAAA,CACdC,KAAAA,EACAC,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,SAASC,2BAAAA,CAAgB;AAC7BC,MAAAA,CAAAA,EAAGL,KAAAA,CAAMV,KAAAA;MACTgB,MAAAA,EAAQ;KACV,CAAA;AAEA,IAAA,MAAMC,OAAAA,GAAU,KAAKb,OAAAA,CAAQa,OAAAA,IAAWC,iBAAS,kBAAA,EAAoBpB,KAAAA,CAAEG,QAAM,CAAA;AAC7E,IAAA,MAAMkB,GAAAA,GAAM,GAAGF,OAAAA,CAAAA,CAAAA,EAAWG,mBAAmBP,MAAAA,CAAOQ,QAAAA,EAAQ,CAAA,CAAA,CAAA;AAC5D,IAAA,MAAMC,QAAAA,GAAW,MAAMC,KAAAA,CAAMJ,GAAAA,EAAK;AAChCK,MAAAA,MAAAA,EAAQZ,GAAAA,CAAIY;KACd,CAAA;AAEA,IAAA,IAAI,CAACF,SAASG,EAAAA,EAAI;AAChB,MAAA,MAAM,IAAIC,KAAAA,CAAM,MAAMJ,QAAAA,CAASK,MAAI,CAAA;AACrC,IAAA;AAEA,IAAA,MAAMC,IAAAA,GAAO,MAAMN,QAAAA,CAASO,IAAAA,EAAI;AAEhC,IAAA,OAAO,IAAInD,iBAAAA,CACTkD,IAAAA,CAAK9C,OAAAA,CACFgD,KAAAA,CAAM,CAAA,EAAG,IAAA,CAAK1B,OAAAA,CAAQC,UAAU,CAAA,CAChC0B,GAAAA,CAAI,CAACC,MAAAA,MAA6D;AACjEb,MAAAA,GAAAA,EAAKa,OAAOb,GAAAA,IAAO,EAAA;AACnBc,MAAAA,KAAAA,EAAOD,OAAOC,KAAAA,IAAS,EAAA;AACvB3C,MAAAA,WAAAA,EAAa0C,OAAOE,OAAAA,IAAW;AACjC,KAAA,CAAA,CAAA,CAAA;AAEN,EAAA;AACF","file":"searXNGSearch.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { RunContext } from \"@/context.js\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"@/tools/search/base.js\";\nimport { ValidationError } from \"ajv\";\nimport { parseEnv } from \"@/internals/env.js\";\n\nexport interface SearXNGToolOptions extends SearchToolOptions {\n baseUrl?: string;\n maxResults: number;\n}\n\ntype SearXNGToolRunOptions = SearchToolRunOptions;\n\nexport interface SearXNGToolResult extends SearchToolResult {}\n\nexport class SearXNGToolOutput extends SearchToolOutput<SearXNGToolResult> {\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 SearXNGTool extends Tool<\n SearXNGToolOutput,\n SearXNGToolOptions,\n SearXNGToolRunOptions\n> {\n name = \"Web Search\";\n description = `Search for online trends, news, current events, real-time information, or research topics.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, SearchToolOutput<SearXNGToolResult>> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"searXNG\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n query: z.string().min(1).describe(`Web search query.`),\n });\n }\n\n public constructor(options: SearXNGToolOptions = { maxResults: 10 }) {\n super(options);\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 protected async _run(\n input: ToolInput<this>,\n _options: Partial<SearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = createURLParams({\n q: input.query,\n format: \"json\",\n });\n\n const baseUrl = this.options.baseUrl || parseEnv(\"SEARXNG_BASE_URL\", z.string());\n const url = `${baseUrl}?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n\n if (!response.ok) {\n throw new Error(await response.text());\n }\n\n const data = await response.json();\n\n return new SearXNGToolOutput(\n data.results\n .slice(0, this.options.maxResults)\n .map((result: { url: string; title: string; content: string }) => ({\n url: result.url || \"\",\n title: result.title || \"\",\n description: result.content || \"\",\n })),\n );\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Tool, ToolEmitter, ToolInput } from '../base.cjs';
2
2
  import { z } from 'zod';
3
3
  import { RunContext } from '../../context.cjs';
4
- import { SearchToolOptions, SearchToolResult, SearchToolOutput, SearchToolRunOptions } from './base.cjs';
4
+ import { SearchToolOutput, SearchToolResult, SearchToolOptions, SearchToolRunOptions } from './base.cjs';
5
5
  import 'ajv';
6
6
  import '../../errors.cjs';
7
7
  import '../../internals/types.cjs';
@@ -11,7 +11,7 @@ import 'promise-based-task';
11
11
  import '../../cache/base.cjs';
12
12
  import '../../internals/helpers/schema.cjs';
13
13
  import 'zod-to-json-schema';
14
- import '../../emitter-jN55XZZq.cjs';
14
+ import '../../emitter-D4OcelZ9.cjs';
15
15
  import '../../internals/helpers/promise.cjs';
16
16
 
17
17
  /**
@@ -1,7 +1,7 @@
1
1
  import { Tool, ToolEmitter, ToolInput } from '../base.js';
2
2
  import { z } from 'zod';
3
3
  import { RunContext } from '../../context.js';
4
- import { SearchToolOptions, SearchToolResult, SearchToolOutput, SearchToolRunOptions } from './base.js';
4
+ import { SearchToolOutput, SearchToolResult, SearchToolOptions, SearchToolRunOptions } from './base.js';
5
5
  import 'ajv';
6
6
  import '../../errors.js';
7
7
  import '../../internals/types.js';
@@ -11,7 +11,7 @@ import 'promise-based-task';
11
11
  import '../../cache/base.js';
12
12
  import '../../internals/helpers/schema.js';
13
13
  import 'zod-to-json-schema';
14
- import '../../emitter-36-9MnvA.js';
14
+ import '../../emitter-kHxkUxco.js';
15
15
  import '../../internals/helpers/promise.js';
16
16
 
17
17
  /**
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/tools/search/searXNGSearch.ts"],"names":["SearXNGToolOutput","SearchToolOutput","register","createSnapshot","results","loadSnapshot","snapshot","Object","assign","SearXNGTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","describe","options","maxResults","ValidationError","message","propertyName","_run","input","_options","run","params","createURLParams","q","format","baseUrl","parseEnv","url","decodeURIComponent","toString","response","fetch","signal","ok","Error","text","data","json","slice","map","result","title","content"],"mappings":";;;;;;;;;;AA4BO,MAAMA,0BAA0BC,gBAAAA,CAAAA;EA5BvC;;;EA6BE;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AACf;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AACLC,MAAAA,OAAAA,EAAS,IAAA,CAAKA;AAChB,KAAA;AACF;AAEAC,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF;AAEO,MAAMG,oBAAoBC,IAAAA,CAAAA;EA5CjC;;;EAiDEC,IAAAA,GAAO,YAAA;EACPC,WAAAA,GAAc,CAAA,0FAAA,CAAA;EAEEC,OAAAA,GACdC,OAAAA,CAAQC,KAAKC,KAAAA,CAAM;IACjBC,SAAAA,EAAW;AAAC,MAAA,MAAA;AAAQ,MAAA,QAAA;AAAU,MAAA;;IAC9BC,OAAAA,EAAS;GACX,CAAA;EAEFC,WAAAA,GAAc;AACZ,IAAA,OAAOC,EAAEC,MAAAA,CAAO;AACdC,MAAAA,KAAAA,EAAOF,EAAEG,MAAAA,EAAM,CAAGC,IAAI,CAAA,CAAA,CAAGC,SAAS,CAAA,iBAAA,CAAmB;KACvD,CAAA;AACF;AAEA,EAAA,WAAA,CAAmBC,OAAAA,GAA8B;IAAEC,UAAAA,EAAY;GAAG,EAAG;AACnE,IAAA,KAAA,CAAMD,OAAAA,CAAAA;AAEN,IAAA,IAAIA,OAAAA,CAAQC,UAAAA,GAAa,CAAA,IAAKD,OAAAA,CAAQC,aAAa,GAAA,EAAK;AACtD,MAAA,MAAM,IAAIC,eAAAA,CAAgB;AACxB,QAAA;UACEC,OAAAA,EAAS,iDAAA;UACTC,YAAAA,EAAc;AAChB;AACD,OAAA,CAAA;AACH;AACF;EAEA,MAAgBC,IAAAA,CACdC,KAAAA,EACAC,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,SAASC,eAAAA,CAAgB;AAC7BC,MAAAA,CAAAA,EAAGL,KAAAA,CAAMV,KAAAA;MACTgB,MAAAA,EAAQ;KACV,CAAA;AAEA,IAAA,MAAMC,OAAAA,GAAU,KAAKb,OAAAA,CAAQa,OAAAA,IAAWC,SAAS,kBAAA,EAAoBpB,CAAAA,CAAEG,QAAM,CAAA;AAC7E,IAAA,MAAMkB,GAAAA,GAAM,GAAGF,OAAAA,CAAAA,CAAAA,EAAWG,mBAAmBP,MAAAA,CAAOQ,QAAAA,EAAQ,CAAA,CAAA,CAAA;AAC5D,IAAA,MAAMC,QAAAA,GAAW,MAAMC,KAAAA,CAAMJ,GAAAA,EAAK;AAChCK,MAAAA,MAAAA,EAAQZ,GAAAA,CAAIY;KACd,CAAA;AAEA,IAAA,IAAI,CAACF,SAASG,EAAAA,EAAI;AAChB,MAAA,MAAM,IAAIC,KAAAA,CAAM,MAAMJ,QAAAA,CAASK,MAAI,CAAA;AACrC;AAEA,IAAA,MAAMC,IAAAA,GAAO,MAAMN,QAAAA,CAASO,IAAAA,EAAI;AAEhC,IAAA,OAAO,IAAInD,iBAAAA,CACTkD,IAAAA,CAAK9C,OAAAA,CACFgD,KAAAA,CAAM,CAAA,EAAG,IAAA,CAAK1B,OAAAA,CAAQC,UAAU,CAAA,CAChC0B,GAAAA,CAAI,CAACC,MAAAA,MAA6D;AACjEb,MAAAA,GAAAA,EAAKa,OAAOb,GAAAA,IAAO,EAAA;AACnBc,MAAAA,KAAAA,EAAOD,OAAOC,KAAAA,IAAS,EAAA;AACvB3C,MAAAA,WAAAA,EAAa0C,OAAOE,OAAAA,IAAW;AACjC,KAAA,CAAA,CAAA,CAAA;AAEN;AACF","file":"searXNGSearch.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { RunContext } from \"@/context.js\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"@/tools/search/base.js\";\nimport { ValidationError } from \"ajv\";\nimport { parseEnv } from \"@/internals/env.js\";\n\nexport interface SearXNGToolOptions extends SearchToolOptions {\n baseUrl?: string;\n maxResults: number;\n}\n\ntype SearXNGToolRunOptions = SearchToolRunOptions;\n\nexport interface SearXNGToolResult extends SearchToolResult {}\n\nexport class SearXNGToolOutput extends SearchToolOutput<SearXNGToolResult> {\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 SearXNGTool extends Tool<\n SearXNGToolOutput,\n SearXNGToolOptions,\n SearXNGToolRunOptions\n> {\n name = \"Web Search\";\n description = `Search for online trends, news, current events, real-time information, or research topics.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, SearchToolOutput<SearXNGToolResult>> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"searXNG\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n query: z.string().min(1).describe(`Web search query.`),\n });\n }\n\n public constructor(options: SearXNGToolOptions = { maxResults: 10 }) {\n super(options);\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 protected async _run(\n input: ToolInput<this>,\n _options: Partial<SearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = createURLParams({\n q: input.query,\n format: \"json\",\n });\n\n const baseUrl = this.options.baseUrl || parseEnv(\"SEARXNG_BASE_URL\", z.string());\n const url = `${baseUrl}?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n\n if (!response.ok) {\n throw new Error(await response.text());\n }\n\n const data = await response.json();\n\n return new SearXNGToolOutput(\n data.results\n .slice(0, this.options.maxResults)\n .map((result: { url: string; title: string; content: string }) => ({\n url: result.url || \"\",\n title: result.title || \"\",\n description: result.content || \"\",\n })),\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/search/searXNGSearch.ts"],"names":["SearXNGToolOutput","SearchToolOutput","register","createSnapshot","results","loadSnapshot","snapshot","Object","assign","SearXNGTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","describe","options","maxResults","ValidationError","message","propertyName","_run","input","_options","run","params","createURLParams","q","format","baseUrl","parseEnv","url","decodeURIComponent","toString","response","fetch","signal","ok","Error","text","data","json","slice","map","result","title","content"],"mappings":";;;;;;;;;;AA4BO,MAAMA,0BAA0BC,gBAAAA,CAAAA;EA5BvC;;;EA6BE;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AACf;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AACLC,MAAAA,OAAAA,EAAS,IAAA,CAAKA;AAChB,KAAA;AACF,EAAA;AAEAC,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB,EAAA;AACF;AAEO,MAAMG,oBAAoBC,IAAAA,CAAAA;EA5CjC;;;EAiDEC,IAAAA,GAAO,YAAA;EACPC,WAAAA,GAAc,CAAA,0FAAA,CAAA;EAEEC,OAAAA,GACdC,OAAAA,CAAQC,KAAKC,KAAAA,CAAM;IACjBC,SAAAA,EAAW;AAAC,MAAA,MAAA;AAAQ,MAAA,QAAA;AAAU,MAAA;;IAC9BC,OAAAA,EAAS;GACX,CAAA;EAEFC,WAAAA,GAAc;AACZ,IAAA,OAAOC,EAAEC,MAAAA,CAAO;AACdC,MAAAA,KAAAA,EAAOF,EAAEG,MAAAA,EAAM,CAAGC,IAAI,CAAA,CAAA,CAAGC,SAAS,CAAA,iBAAA,CAAmB;KACvD,CAAA;AACF,EAAA;AAEA,EAAA,WAAA,CAAmBC,OAAAA,GAA8B;IAAEC,UAAAA,EAAY;GAAG,EAAG;AACnE,IAAA,KAAA,CAAMD,OAAAA,CAAAA;AAEN,IAAA,IAAIA,OAAAA,CAAQC,UAAAA,GAAa,CAAA,IAAKD,OAAAA,CAAQC,aAAa,GAAA,EAAK;AACtD,MAAA,MAAM,IAAIC,eAAAA,CAAgB;AACxB,QAAA;UACEC,OAAAA,EAAS,iDAAA;UACTC,YAAAA,EAAc;AAChB;AACD,OAAA,CAAA;AACH,IAAA;AACF,EAAA;EAEA,MAAgBC,IAAAA,CACdC,KAAAA,EACAC,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,SAASC,eAAAA,CAAgB;AAC7BC,MAAAA,CAAAA,EAAGL,KAAAA,CAAMV,KAAAA;MACTgB,MAAAA,EAAQ;KACV,CAAA;AAEA,IAAA,MAAMC,OAAAA,GAAU,KAAKb,OAAAA,CAAQa,OAAAA,IAAWC,SAAS,kBAAA,EAAoBpB,CAAAA,CAAEG,QAAM,CAAA;AAC7E,IAAA,MAAMkB,GAAAA,GAAM,GAAGF,OAAAA,CAAAA,CAAAA,EAAWG,mBAAmBP,MAAAA,CAAOQ,QAAAA,EAAQ,CAAA,CAAA,CAAA;AAC5D,IAAA,MAAMC,QAAAA,GAAW,MAAMC,KAAAA,CAAMJ,GAAAA,EAAK;AAChCK,MAAAA,MAAAA,EAAQZ,GAAAA,CAAIY;KACd,CAAA;AAEA,IAAA,IAAI,CAACF,SAASG,EAAAA,EAAI;AAChB,MAAA,MAAM,IAAIC,KAAAA,CAAM,MAAMJ,QAAAA,CAASK,MAAI,CAAA;AACrC,IAAA;AAEA,IAAA,MAAMC,IAAAA,GAAO,MAAMN,QAAAA,CAASO,IAAAA,EAAI;AAEhC,IAAA,OAAO,IAAInD,iBAAAA,CACTkD,IAAAA,CAAK9C,OAAAA,CACFgD,KAAAA,CAAM,CAAA,EAAG,IAAA,CAAK1B,OAAAA,CAAQC,UAAU,CAAA,CAChC0B,GAAAA,CAAI,CAACC,MAAAA,MAA6D;AACjEb,MAAAA,GAAAA,EAAKa,OAAOb,GAAAA,IAAO,EAAA;AACnBc,MAAAA,KAAAA,EAAOD,OAAOC,KAAAA,IAAS,EAAA;AACvB3C,MAAAA,WAAAA,EAAa0C,OAAOE,OAAAA,IAAW;AACjC,KAAA,CAAA,CAAA,CAAA;AAEN,EAAA;AACF","file":"searXNGSearch.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { ToolEmitter, Tool, ToolInput } from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { RunContext } from \"@/context.js\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"@/tools/search/base.js\";\nimport { ValidationError } from \"ajv\";\nimport { parseEnv } from \"@/internals/env.js\";\n\nexport interface SearXNGToolOptions extends SearchToolOptions {\n baseUrl?: string;\n maxResults: number;\n}\n\ntype SearXNGToolRunOptions = SearchToolRunOptions;\n\nexport interface SearXNGToolResult extends SearchToolResult {}\n\nexport class SearXNGToolOutput extends SearchToolOutput<SearXNGToolResult> {\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 SearXNGTool extends Tool<\n SearXNGToolOutput,\n SearXNGToolOptions,\n SearXNGToolRunOptions\n> {\n name = \"Web Search\";\n description = `Search for online trends, news, current events, real-time information, or research topics.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, SearchToolOutput<SearXNGToolResult>> =\n Emitter.root.child({\n namespace: [\"tool\", \"search\", \"searXNG\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n query: z.string().min(1).describe(`Web search query.`),\n });\n }\n\n public constructor(options: SearXNGToolOptions = { maxResults: 10 }) {\n super(options);\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 protected async _run(\n input: ToolInput<this>,\n _options: Partial<SearchToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = createURLParams({\n q: input.query,\n format: \"json\",\n });\n\n const baseUrl = this.options.baseUrl || parseEnv(\"SEARXNG_BASE_URL\", z.string());\n const url = `${baseUrl}?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n\n if (!response.ok) {\n throw new Error(await response.text());\n }\n\n const data = await response.json();\n\n return new SearXNGToolOutput(\n data.results\n .slice(0, this.options.maxResults)\n .map((result: { url: string; title: string; content: string }) => ({\n url: result.url || \"\",\n title: result.title || \"\",\n description: result.content || \"\",\n })),\n );\n }\n}\n"]}