beeai-framework 0.1.16 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (627) hide show
  1. package/dist/adapters/acp/agents/agent.cjs.map +1 -1
  2. package/dist/adapters/acp/agents/agent.d.cts +3 -14
  3. package/dist/adapters/acp/agents/agent.d.ts +3 -14
  4. package/dist/adapters/acp/agents/agent.js.map +1 -1
  5. package/dist/adapters/acp/agents/events.d.cts +2 -13
  6. package/dist/adapters/acp/agents/events.d.ts +2 -13
  7. package/dist/adapters/acp/agents/types.d.cts +1 -12
  8. package/dist/adapters/acp/agents/types.d.ts +1 -12
  9. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  10. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +3 -14
  11. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +3 -14
  12. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  13. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  14. package/dist/adapters/amazon-bedrock/backend/client.d.cts +1 -12
  15. package/dist/adapters/amazon-bedrock/backend/client.d.ts +1 -12
  16. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  17. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  18. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +3 -14
  19. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +3 -14
  20. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  21. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  22. package/dist/adapters/anthropic/backend/chat.d.cts +3 -14
  23. package/dist/adapters/anthropic/backend/chat.d.ts +3 -14
  24. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  25. package/dist/adapters/anthropic/backend/client.cjs +1 -4
  26. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  27. package/dist/adapters/anthropic/backend/client.d.cts +1 -12
  28. package/dist/adapters/anthropic/backend/client.d.ts +1 -12
  29. package/dist/adapters/anthropic/backend/client.js +3 -6
  30. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  31. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  32. package/dist/adapters/anthropic/backend/embedding.d.cts +3 -14
  33. package/dist/adapters/anthropic/backend/embedding.d.ts +3 -14
  34. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  35. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  36. package/dist/adapters/azure-openai/backend/chat.d.cts +3 -14
  37. package/dist/adapters/azure-openai/backend/chat.d.ts +3 -14
  38. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  39. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  40. package/dist/adapters/azure-openai/backend/client.d.cts +1 -12
  41. package/dist/adapters/azure-openai/backend/client.d.ts +1 -12
  42. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  43. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  44. package/dist/adapters/azure-openai/backend/embedding.d.cts +3 -14
  45. package/dist/adapters/azure-openai/backend/embedding.d.ts +3 -14
  46. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  47. package/dist/adapters/beeai_platform/agents/agent.cjs.map +1 -1
  48. package/dist/adapters/beeai_platform/agents/agent.d.cts +2 -2
  49. package/dist/adapters/beeai_platform/agents/agent.d.ts +2 -2
  50. package/dist/adapters/beeai_platform/agents/agent.js.map +1 -1
  51. package/dist/adapters/beeai_platform/agents/events.d.cts +2 -13
  52. package/dist/adapters/beeai_platform/agents/events.d.ts +2 -13
  53. package/dist/adapters/beeai_platform/agents/types.d.cts +1 -12
  54. package/dist/adapters/beeai_platform/agents/types.d.ts +1 -12
  55. package/dist/adapters/dummy/backend/chat.cjs +9 -9
  56. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  57. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  58. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  59. package/dist/adapters/dummy/backend/chat.js +9 -9
  60. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  61. package/dist/adapters/dummy/backend/embedding.cjs +9 -9
  62. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  63. package/dist/adapters/dummy/backend/embedding.d.cts +3 -14
  64. package/dist/adapters/dummy/backend/embedding.d.ts +3 -14
  65. package/dist/adapters/dummy/backend/embedding.js +9 -9
  66. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  67. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  68. package/dist/adapters/google-vertex/backend/chat.d.cts +3 -14
  69. package/dist/adapters/google-vertex/backend/chat.d.ts +3 -14
  70. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  71. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  72. package/dist/adapters/google-vertex/backend/client.d.cts +1 -12
  73. package/dist/adapters/google-vertex/backend/client.d.ts +1 -12
  74. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  75. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  76. package/dist/adapters/google-vertex/backend/embedding.d.cts +3 -14
  77. package/dist/adapters/google-vertex/backend/embedding.d.ts +3 -14
  78. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  79. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  80. package/dist/adapters/groq/backend/chat.d.cts +3 -14
  81. package/dist/adapters/groq/backend/chat.d.ts +3 -14
  82. package/dist/adapters/groq/backend/chat.js.map +1 -1
  83. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  84. package/dist/adapters/groq/backend/client.d.cts +1 -12
  85. package/dist/adapters/groq/backend/client.d.ts +1 -12
  86. package/dist/adapters/groq/backend/client.js.map +1 -1
  87. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  88. package/dist/adapters/groq/backend/embedding.d.cts +3 -14
  89. package/dist/adapters/groq/backend/embedding.d.ts +3 -14
  90. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  91. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  92. package/dist/adapters/langchain/backend/chat.d.cts +2 -2
  93. package/dist/adapters/langchain/backend/chat.d.ts +2 -2
  94. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  95. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  96. package/dist/adapters/langchain/backend/embedding.d.cts +3 -14
  97. package/dist/adapters/langchain/backend/embedding.d.ts +3 -14
  98. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  99. package/dist/adapters/langchain/tools.cjs.map +1 -1
  100. package/dist/adapters/langchain/tools.d.cts +1 -1
  101. package/dist/adapters/langchain/tools.d.ts +1 -1
  102. package/dist/adapters/langchain/tools.js.map +1 -1
  103. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  104. package/dist/adapters/mcp/serve/http_server.d.cts +1 -12
  105. package/dist/adapters/mcp/serve/http_server.d.ts +1 -12
  106. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  107. package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
  108. package/dist/adapters/mcp/serve/in_memory_store.d.cts +1 -12
  109. package/dist/adapters/mcp/serve/in_memory_store.d.ts +1 -12
  110. package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
  111. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  112. package/dist/adapters/mcp/serve/server.d.cts +1 -12
  113. package/dist/adapters/mcp/serve/server.d.ts +1 -12
  114. package/dist/adapters/mcp/serve/server.js.map +1 -1
  115. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  116. package/dist/adapters/ollama/backend/chat.d.cts +3 -14
  117. package/dist/adapters/ollama/backend/chat.d.ts +3 -14
  118. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  119. package/dist/adapters/ollama/backend/client.cjs +12 -3
  120. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  121. package/dist/adapters/ollama/backend/client.d.cts +4 -13
  122. package/dist/adapters/ollama/backend/client.d.ts +4 -13
  123. package/dist/adapters/ollama/backend/client.js +13 -4
  124. package/dist/adapters/ollama/backend/client.js.map +1 -1
  125. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  126. package/dist/adapters/ollama/backend/embedding.d.cts +3 -14
  127. package/dist/adapters/ollama/backend/embedding.d.ts +3 -14
  128. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  129. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  130. package/dist/adapters/openai/backend/chat.d.cts +3 -14
  131. package/dist/adapters/openai/backend/chat.d.ts +3 -14
  132. package/dist/adapters/openai/backend/chat.js.map +1 -1
  133. package/dist/adapters/openai/backend/client.cjs +1 -4
  134. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  135. package/dist/adapters/openai/backend/client.d.cts +1 -12
  136. package/dist/adapters/openai/backend/client.d.ts +1 -12
  137. package/dist/adapters/openai/backend/client.js +3 -6
  138. package/dist/adapters/openai/backend/client.js.map +1 -1
  139. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  140. package/dist/adapters/openai/backend/embedding.d.cts +3 -14
  141. package/dist/adapters/openai/backend/embedding.d.ts +3 -14
  142. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  143. package/dist/adapters/vercel/backend/chat.cjs +2 -2
  144. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  145. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  146. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  147. package/dist/adapters/vercel/backend/chat.js +2 -2
  148. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  149. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  150. package/dist/adapters/vercel/backend/embedding.d.cts +3 -14
  151. package/dist/adapters/vercel/backend/embedding.d.ts +3 -14
  152. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  153. package/dist/adapters/vercel/backend/utils.cjs +11 -2
  154. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  155. package/dist/adapters/vercel/backend/utils.d.cts +3 -13
  156. package/dist/adapters/vercel/backend/utils.d.ts +3 -13
  157. package/dist/adapters/vercel/backend/utils.js +11 -3
  158. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  159. package/dist/adapters/watsonx/backend/chat.cjs +13 -13
  160. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  161. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  162. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  163. package/dist/adapters/watsonx/backend/chat.js +13 -13
  164. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  165. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  166. package/dist/adapters/watsonx/backend/client.d.cts +1 -12
  167. package/dist/adapters/watsonx/backend/client.d.ts +1 -12
  168. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  169. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  170. package/dist/adapters/watsonx/backend/embedding.d.cts +3 -14
  171. package/dist/adapters/watsonx/backend/embedding.d.ts +3 -14
  172. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  173. package/dist/adapters/xai/backend/chat.cjs +24 -0
  174. package/dist/adapters/xai/backend/chat.cjs.map +1 -0
  175. package/dist/adapters/xai/backend/chat.d.cts +39 -0
  176. package/dist/adapters/xai/backend/chat.d.ts +39 -0
  177. package/dist/adapters/xai/backend/chat.js +22 -0
  178. package/dist/adapters/xai/backend/chat.js.map +1 -0
  179. package/dist/adapters/xai/backend/client.cjs +26 -0
  180. package/dist/adapters/xai/backend/client.cjs.map +1 -0
  181. package/dist/adapters/xai/backend/client.d.cts +17 -0
  182. package/dist/adapters/xai/backend/client.d.ts +17 -0
  183. package/dist/adapters/xai/backend/client.js +24 -0
  184. package/dist/adapters/xai/backend/client.js.map +1 -0
  185. package/dist/{agent-CgsoqVL5.d.ts → agent-CUzHyTQd.d.ts} +3 -3
  186. package/dist/{agent-Ca5UE2P1.d.cts → agent-Cqh2zuKJ.d.cts} +3 -3
  187. package/dist/agents/base.cjs.map +1 -1
  188. package/dist/agents/base.d.cts +2 -2
  189. package/dist/agents/base.d.ts +2 -2
  190. package/dist/agents/base.js.map +1 -1
  191. package/dist/agents/experimental/replan/agent.cjs +8 -8
  192. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  193. package/dist/agents/experimental/replan/agent.d.cts +4 -15
  194. package/dist/agents/experimental/replan/agent.d.ts +4 -15
  195. package/dist/agents/experimental/replan/agent.js +8 -8
  196. package/dist/agents/experimental/replan/agent.js.map +1 -1
  197. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  198. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  199. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  200. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  201. package/dist/agents/experimental/streamlit/agent.cjs +9 -9
  202. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  203. package/dist/agents/experimental/streamlit/agent.d.cts +4 -15
  204. package/dist/agents/experimental/streamlit/agent.d.ts +4 -15
  205. package/dist/agents/experimental/streamlit/agent.js +9 -9
  206. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  207. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  208. package/dist/agents/experimental/streamlit/prompts.d.cts +1 -12
  209. package/dist/agents/experimental/streamlit/prompts.d.ts +1 -12
  210. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  211. package/dist/agents/react/agent.cjs +8 -8
  212. package/dist/agents/react/agent.cjs.map +1 -1
  213. package/dist/agents/react/agent.d.cts +4 -4
  214. package/dist/agents/react/agent.d.ts +4 -4
  215. package/dist/agents/react/agent.js +8 -8
  216. package/dist/agents/react/agent.js.map +1 -1
  217. package/dist/agents/react/prompts.cjs.map +1 -1
  218. package/dist/agents/react/prompts.d.cts +2 -13
  219. package/dist/agents/react/prompts.d.ts +2 -13
  220. package/dist/agents/react/prompts.js.map +1 -1
  221. package/dist/agents/react/runners/base.cjs +2 -2
  222. package/dist/agents/react/runners/base.cjs.map +1 -1
  223. package/dist/agents/react/runners/base.d.cts +4 -4
  224. package/dist/agents/react/runners/base.d.ts +4 -4
  225. package/dist/agents/react/runners/base.js +2 -2
  226. package/dist/agents/react/runners/base.js.map +1 -1
  227. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  228. package/dist/agents/react/runners/deep-think/prompts.d.cts +2 -13
  229. package/dist/agents/react/runners/deep-think/prompts.d.ts +2 -13
  230. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  231. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  232. package/dist/agents/react/runners/deep-think/runner.d.cts +5 -5
  233. package/dist/agents/react/runners/deep-think/runner.d.ts +5 -5
  234. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  235. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  236. package/dist/agents/react/runners/default/runner.d.cts +5 -5
  237. package/dist/agents/react/runners/default/runner.d.ts +5 -5
  238. package/dist/agents/react/runners/default/runner.js.map +1 -1
  239. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  240. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  241. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  242. package/dist/agents/react/runners/granite/prompts.d.cts +2 -13
  243. package/dist/agents/react/runners/granite/prompts.d.ts +2 -13
  244. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  245. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  246. package/dist/agents/react/runners/granite/runner.d.cts +5 -5
  247. package/dist/agents/react/runners/granite/runner.d.ts +5 -5
  248. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  249. package/dist/agents/react/types.d.cts +3 -14
  250. package/dist/agents/react/types.d.ts +3 -14
  251. package/dist/agents/toolCalling/agent.cjs +8 -8
  252. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  253. package/dist/agents/toolCalling/agent.d.cts +4 -15
  254. package/dist/agents/toolCalling/agent.d.ts +4 -15
  255. package/dist/agents/toolCalling/agent.js +8 -8
  256. package/dist/agents/toolCalling/agent.js.map +1 -1
  257. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  258. package/dist/agents/toolCalling/prompts.d.cts +1 -12
  259. package/dist/agents/toolCalling/prompts.d.ts +1 -12
  260. package/dist/agents/toolCalling/prompts.js.map +1 -1
  261. package/dist/agents/toolCalling/types.d.cts +2 -13
  262. package/dist/agents/toolCalling/types.d.ts +2 -13
  263. package/dist/agents/types.d.cts +2 -2
  264. package/dist/agents/types.d.ts +2 -2
  265. package/dist/backend/backend.cjs.map +1 -1
  266. package/dist/backend/backend.d.cts +3 -14
  267. package/dist/backend/backend.d.ts +3 -14
  268. package/dist/backend/backend.js.map +1 -1
  269. package/dist/backend/chat.cjs.map +1 -1
  270. package/dist/backend/chat.d.cts +2 -2
  271. package/dist/backend/chat.d.ts +2 -2
  272. package/dist/backend/chat.js.map +1 -1
  273. package/dist/backend/client.cjs.map +1 -1
  274. package/dist/backend/client.d.cts +1 -12
  275. package/dist/backend/client.d.ts +1 -12
  276. package/dist/backend/client.js.map +1 -1
  277. package/dist/backend/constants.cjs +8 -0
  278. package/dist/backend/constants.cjs.map +1 -1
  279. package/dist/backend/constants.d.cts +6 -12
  280. package/dist/backend/constants.d.ts +6 -12
  281. package/dist/backend/constants.js +8 -0
  282. package/dist/backend/constants.js.map +1 -1
  283. package/dist/backend/core.d.cts +2 -2
  284. package/dist/backend/core.d.ts +2 -2
  285. package/dist/backend/embedding.cjs.map +1 -1
  286. package/dist/backend/embedding.d.cts +2 -2
  287. package/dist/backend/embedding.d.ts +2 -2
  288. package/dist/backend/embedding.js.map +1 -1
  289. package/dist/backend/errors.cjs.map +1 -1
  290. package/dist/backend/errors.d.cts +1 -12
  291. package/dist/backend/errors.d.ts +1 -12
  292. package/dist/backend/errors.js.map +1 -1
  293. package/dist/backend/message.cjs.map +1 -1
  294. package/dist/backend/message.d.cts +1 -12
  295. package/dist/backend/message.d.ts +1 -12
  296. package/dist/backend/message.js.map +1 -1
  297. package/dist/backend/utils.cjs.map +1 -1
  298. package/dist/backend/utils.d.cts +2 -2
  299. package/dist/backend/utils.d.ts +2 -2
  300. package/dist/backend/utils.js.map +1 -1
  301. package/dist/{base-szR2Izbt.d.cts → base-Bc-Xv1jG.d.cts} +2 -13
  302. package/dist/{base-BOCDDBvG.d.ts → base-BrMAtrc_.d.ts} +2 -13
  303. package/dist/cache/base.cjs.map +1 -1
  304. package/dist/cache/base.d.cts +1 -12
  305. package/dist/cache/base.d.ts +1 -12
  306. package/dist/cache/base.js.map +1 -1
  307. package/dist/cache/decoratorCache.cjs +2 -2
  308. package/dist/cache/decoratorCache.cjs.map +1 -1
  309. package/dist/cache/decoratorCache.d.cts +1 -12
  310. package/dist/cache/decoratorCache.d.ts +1 -12
  311. package/dist/cache/decoratorCache.js +2 -2
  312. package/dist/cache/decoratorCache.js.map +1 -1
  313. package/dist/cache/fileCache.cjs.map +1 -1
  314. package/dist/cache/fileCache.d.cts +1 -12
  315. package/dist/cache/fileCache.d.ts +1 -12
  316. package/dist/cache/fileCache.js.map +1 -1
  317. package/dist/cache/nullCache.cjs.map +1 -1
  318. package/dist/cache/nullCache.d.cts +1 -12
  319. package/dist/cache/nullCache.d.ts +1 -12
  320. package/dist/cache/nullCache.js.map +1 -1
  321. package/dist/cache/slidingCache.cjs.map +1 -1
  322. package/dist/cache/slidingCache.d.cts +1 -12
  323. package/dist/cache/slidingCache.d.ts +1 -12
  324. package/dist/cache/slidingCache.js.map +1 -1
  325. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  326. package/dist/cache/unconstrainedCache.d.cts +1 -12
  327. package/dist/cache/unconstrainedCache.d.ts +1 -12
  328. package/dist/cache/unconstrainedCache.js.map +1 -1
  329. package/dist/{chat-DvMzAHj6.d.cts → chat-CR4yfOR9.d.cts} +3 -14
  330. package/dist/{chat-BdN8hGWn.d.ts → chat-W9j8T6UU.d.ts} +3 -14
  331. package/dist/context.cjs +3 -4
  332. package/dist/context.cjs.map +1 -1
  333. package/dist/context.d.cts +2 -13
  334. package/dist/context.d.ts +2 -13
  335. package/dist/context.js +3 -4
  336. package/dist/context.js.map +1 -1
  337. package/dist/emitter/emitter.cjs.map +1 -1
  338. package/dist/emitter/emitter.d.cts +1 -1
  339. package/dist/emitter/emitter.d.ts +1 -1
  340. package/dist/emitter/emitter.js.map +1 -1
  341. package/dist/emitter/errors.cjs.map +1 -1
  342. package/dist/emitter/errors.d.cts +1 -12
  343. package/dist/emitter/errors.d.ts +1 -12
  344. package/dist/emitter/errors.js.map +1 -1
  345. package/dist/emitter/types.d.cts +1 -1
  346. package/dist/emitter/types.d.ts +1 -1
  347. package/dist/emitter/utils.cjs.map +1 -1
  348. package/dist/emitter/utils.d.cts +1 -12
  349. package/dist/emitter/utils.d.ts +1 -12
  350. package/dist/emitter/utils.js.map +1 -1
  351. package/dist/{emitter-C3dO-s2P.d.ts → emitter-C9nwGLt6.d.ts} +3 -25
  352. package/dist/{emitter-D5Mu0EEH.d.cts → emitter-DWEsd-ud.d.cts} +3 -25
  353. package/dist/errors.cjs.map +1 -1
  354. package/dist/errors.d.cts +1 -12
  355. package/dist/errors.d.ts +1 -12
  356. package/dist/errors.js.map +1 -1
  357. package/dist/index.d.cts +4 -4
  358. package/dist/index.d.ts +4 -4
  359. package/dist/internals/env.cjs.map +1 -1
  360. package/dist/internals/env.d.cts +1 -12
  361. package/dist/internals/env.d.ts +1 -12
  362. package/dist/internals/env.js.map +1 -1
  363. package/dist/internals/fetcher.cjs +8 -8
  364. package/dist/internals/fetcher.cjs.map +1 -1
  365. package/dist/internals/fetcher.d.cts +2 -13
  366. package/dist/internals/fetcher.d.ts +2 -13
  367. package/dist/internals/fetcher.js +8 -8
  368. package/dist/internals/fetcher.js.map +1 -1
  369. package/dist/internals/helpers/array.cjs.map +1 -1
  370. package/dist/internals/helpers/array.d.cts +1 -12
  371. package/dist/internals/helpers/array.d.ts +1 -12
  372. package/dist/internals/helpers/array.js.map +1 -1
  373. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  374. package/dist/internals/helpers/cancellation.d.cts +1 -12
  375. package/dist/internals/helpers/cancellation.d.ts +1 -12
  376. package/dist/internals/helpers/cancellation.js.map +1 -1
  377. package/dist/internals/helpers/counter.cjs.map +1 -1
  378. package/dist/internals/helpers/counter.d.cts +1 -12
  379. package/dist/internals/helpers/counter.d.ts +1 -12
  380. package/dist/internals/helpers/counter.js.map +1 -1
  381. package/dist/internals/helpers/general.cjs.map +1 -1
  382. package/dist/internals/helpers/general.d.cts +1 -12
  383. package/dist/internals/helpers/general.d.ts +1 -12
  384. package/dist/internals/helpers/general.js.map +1 -1
  385. package/dist/internals/helpers/guards.cjs.map +1 -1
  386. package/dist/internals/helpers/guards.d.cts +1 -12
  387. package/dist/internals/helpers/guards.d.ts +1 -12
  388. package/dist/internals/helpers/guards.js.map +1 -1
  389. package/dist/internals/helpers/hash.cjs.map +1 -1
  390. package/dist/internals/helpers/hash.d.cts +1 -12
  391. package/dist/internals/helpers/hash.d.ts +1 -12
  392. package/dist/internals/helpers/hash.js.map +1 -1
  393. package/dist/internals/helpers/map.cjs.map +1 -1
  394. package/dist/internals/helpers/map.d.cts +1 -12
  395. package/dist/internals/helpers/map.d.ts +1 -12
  396. package/dist/internals/helpers/map.js.map +1 -1
  397. package/dist/internals/helpers/math.cjs.map +1 -1
  398. package/dist/internals/helpers/math.d.cts +1 -12
  399. package/dist/internals/helpers/math.d.ts +1 -12
  400. package/dist/internals/helpers/math.js.map +1 -1
  401. package/dist/internals/helpers/number.cjs.map +1 -1
  402. package/dist/internals/helpers/number.d.cts +1 -12
  403. package/dist/internals/helpers/number.d.ts +1 -12
  404. package/dist/internals/helpers/number.js.map +1 -1
  405. package/dist/internals/helpers/object.cjs.map +1 -1
  406. package/dist/internals/helpers/object.d.cts +1 -12
  407. package/dist/internals/helpers/object.d.ts +1 -12
  408. package/dist/internals/helpers/object.js.map +1 -1
  409. package/dist/internals/helpers/paginate.cjs.map +1 -1
  410. package/dist/internals/helpers/paginate.d.cts +1 -12
  411. package/dist/internals/helpers/paginate.d.ts +1 -12
  412. package/dist/internals/helpers/paginate.js.map +1 -1
  413. package/dist/internals/helpers/promise.cjs +1 -3
  414. package/dist/internals/helpers/promise.cjs.map +1 -1
  415. package/dist/internals/helpers/promise.d.cts +1 -12
  416. package/dist/internals/helpers/promise.d.ts +1 -12
  417. package/dist/internals/helpers/promise.js +1 -3
  418. package/dist/internals/helpers/promise.js.map +1 -1
  419. package/dist/internals/helpers/prototype.cjs.map +1 -1
  420. package/dist/internals/helpers/prototype.d.cts +1 -12
  421. package/dist/internals/helpers/prototype.d.ts +1 -12
  422. package/dist/internals/helpers/prototype.js.map +1 -1
  423. package/dist/internals/helpers/retry.cjs.map +1 -1
  424. package/dist/internals/helpers/retry.d.cts +1 -12
  425. package/dist/internals/helpers/retry.d.ts +1 -12
  426. package/dist/internals/helpers/retry.js.map +1 -1
  427. package/dist/internals/helpers/retryable.cjs.map +1 -1
  428. package/dist/internals/helpers/retryable.d.cts +1 -12
  429. package/dist/internals/helpers/retryable.d.ts +1 -12
  430. package/dist/internals/helpers/retryable.js.map +1 -1
  431. package/dist/internals/helpers/schema.cjs.map +1 -1
  432. package/dist/internals/helpers/schema.d.cts +1 -12
  433. package/dist/internals/helpers/schema.d.ts +1 -12
  434. package/dist/internals/helpers/schema.js.map +1 -1
  435. package/dist/internals/helpers/stream.cjs.map +1 -1
  436. package/dist/internals/helpers/stream.d.cts +1 -12
  437. package/dist/internals/helpers/stream.d.ts +1 -12
  438. package/dist/internals/helpers/stream.js.map +1 -1
  439. package/dist/internals/helpers/string.cjs.map +1 -1
  440. package/dist/internals/helpers/string.d.cts +1 -12
  441. package/dist/internals/helpers/string.d.ts +1 -12
  442. package/dist/internals/helpers/string.js.map +1 -1
  443. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  444. package/dist/internals/helpers/weakRef.d.cts +1 -12
  445. package/dist/internals/helpers/weakRef.d.ts +1 -12
  446. package/dist/internals/helpers/weakRef.js.map +1 -1
  447. package/dist/internals/serializable.cjs.map +1 -1
  448. package/dist/internals/serializable.d.cts +1 -12
  449. package/dist/internals/serializable.d.ts +1 -12
  450. package/dist/internals/serializable.js.map +1 -1
  451. package/dist/internals/types.cjs.map +1 -1
  452. package/dist/internals/types.d.cts +1 -12
  453. package/dist/internals/types.d.ts +1 -12
  454. package/dist/internals/types.js.map +1 -1
  455. package/dist/logger/logger.cjs.map +1 -1
  456. package/dist/logger/logger.js.map +1 -1
  457. package/dist/logger/pretty.cjs.map +1 -1
  458. package/dist/logger/pretty.js.map +1 -1
  459. package/dist/memory/base.cjs.map +1 -1
  460. package/dist/memory/base.js.map +1 -1
  461. package/dist/memory/slidingMemory.cjs.map +1 -1
  462. package/dist/memory/slidingMemory.js.map +1 -1
  463. package/dist/memory/summarizeMemory.cjs.map +1 -1
  464. package/dist/memory/summarizeMemory.d.cts +2 -2
  465. package/dist/memory/summarizeMemory.d.ts +2 -2
  466. package/dist/memory/summarizeMemory.js.map +1 -1
  467. package/dist/memory/tokenMemory.cjs.map +1 -1
  468. package/dist/memory/tokenMemory.js.map +1 -1
  469. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  470. package/dist/memory/unconstrainedMemory.js.map +1 -1
  471. package/dist/parsers/errors.cjs.map +1 -1
  472. package/dist/parsers/errors.d.cts +1 -12
  473. package/dist/parsers/errors.d.ts +1 -12
  474. package/dist/parsers/errors.js.map +1 -1
  475. package/dist/parsers/field.cjs +2 -2
  476. package/dist/parsers/field.cjs.map +1 -1
  477. package/dist/parsers/field.js +2 -2
  478. package/dist/parsers/field.js.map +1 -1
  479. package/dist/parsers/linePrefix.cjs +15 -15
  480. package/dist/parsers/linePrefix.cjs.map +1 -1
  481. package/dist/parsers/linePrefix.d.cts +2 -13
  482. package/dist/parsers/linePrefix.d.ts +2 -13
  483. package/dist/parsers/linePrefix.js +15 -15
  484. package/dist/parsers/linePrefix.js.map +1 -1
  485. package/dist/serializer/error.cjs.map +1 -1
  486. package/dist/serializer/error.d.cts +1 -12
  487. package/dist/serializer/error.d.ts +1 -12
  488. package/dist/serializer/error.js.map +1 -1
  489. package/dist/serializer/serializer.cjs.map +1 -1
  490. package/dist/serializer/serializer.d.cts +1 -1
  491. package/dist/serializer/serializer.d.ts +1 -1
  492. package/dist/serializer/serializer.js.map +1 -1
  493. package/dist/serializer/utils.cjs +1 -2
  494. package/dist/serializer/utils.cjs.map +1 -1
  495. package/dist/serializer/utils.d.cts +1 -1
  496. package/dist/serializer/utils.d.ts +1 -1
  497. package/dist/serializer/utils.js +1 -2
  498. package/dist/serializer/utils.js.map +1 -1
  499. package/dist/{serializer-Dz4AIM2O.d.cts → serializer-BKn50Vnx.d.cts} +2 -24
  500. package/dist/{serializer-BswFRdT8.d.ts → serializer-CQxucveV.d.ts} +2 -24
  501. package/dist/serve/server.cjs +1 -2
  502. package/dist/serve/server.cjs.map +1 -1
  503. package/dist/serve/server.d.cts +1 -12
  504. package/dist/serve/server.d.ts +1 -12
  505. package/dist/serve/server.js +1 -2
  506. package/dist/serve/server.js.map +1 -1
  507. package/dist/template.cjs.map +1 -1
  508. package/dist/template.d.cts +1 -12
  509. package/dist/template.d.ts +1 -12
  510. package/dist/template.js.map +1 -1
  511. package/dist/tools/arxiv.cjs.map +1 -1
  512. package/dist/tools/arxiv.d.cts +2 -13
  513. package/dist/tools/arxiv.d.ts +2 -13
  514. package/dist/tools/arxiv.js.map +1 -1
  515. package/dist/tools/base.cjs.map +1 -1
  516. package/dist/tools/base.d.cts +1 -1
  517. package/dist/tools/base.d.ts +1 -1
  518. package/dist/tools/base.js.map +1 -1
  519. package/dist/tools/calculator.cjs.map +1 -1
  520. package/dist/tools/calculator.d.cts +2 -13
  521. package/dist/tools/calculator.d.ts +2 -13
  522. package/dist/tools/calculator.js.map +1 -1
  523. package/dist/tools/custom.cjs.map +1 -1
  524. package/dist/tools/custom.d.cts +3 -14
  525. package/dist/tools/custom.d.ts +3 -14
  526. package/dist/tools/custom.js.map +1 -1
  527. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  528. package/dist/tools/database/elasticsearch.d.cts +2 -13
  529. package/dist/tools/database/elasticsearch.d.ts +2 -13
  530. package/dist/tools/database/elasticsearch.js.map +1 -1
  531. package/dist/tools/database/metadata.cjs.map +1 -1
  532. package/dist/tools/database/metadata.d.cts +1 -12
  533. package/dist/tools/database/metadata.d.ts +1 -12
  534. package/dist/tools/database/metadata.js.map +1 -1
  535. package/dist/tools/database/milvus.cjs.map +1 -1
  536. package/dist/tools/database/milvus.d.cts +2 -13
  537. package/dist/tools/database/milvus.d.ts +2 -13
  538. package/dist/tools/database/milvus.js.map +1 -1
  539. package/dist/tools/database/qdrant.cjs.map +1 -1
  540. package/dist/tools/database/qdrant.d.cts +2 -13
  541. package/dist/tools/database/qdrant.d.ts +2 -13
  542. package/dist/tools/database/qdrant.js.map +1 -1
  543. package/dist/tools/database/sql.cjs.map +1 -1
  544. package/dist/tools/database/sql.d.cts +2 -13
  545. package/dist/tools/database/sql.d.ts +2 -13
  546. package/dist/tools/database/sql.js.map +1 -1
  547. package/dist/tools/llm.cjs +3 -3
  548. package/dist/tools/llm.cjs.map +1 -1
  549. package/dist/tools/llm.d.cts +3 -14
  550. package/dist/tools/llm.d.ts +3 -14
  551. package/dist/tools/llm.js +3 -3
  552. package/dist/tools/llm.js.map +1 -1
  553. package/dist/tools/mcp.cjs +2 -1
  554. package/dist/tools/mcp.cjs.map +1 -1
  555. package/dist/tools/mcp.d.cts +2 -13
  556. package/dist/tools/mcp.d.ts +2 -13
  557. package/dist/tools/mcp.js +2 -1
  558. package/dist/tools/mcp.js.map +1 -1
  559. package/dist/tools/openapi.cjs.map +1 -1
  560. package/dist/tools/openapi.d.cts +1 -1
  561. package/dist/tools/openapi.d.ts +1 -1
  562. package/dist/tools/openapi.js.map +1 -1
  563. package/dist/tools/python/output.cjs.map +1 -1
  564. package/dist/tools/python/output.d.cts +2 -13
  565. package/dist/tools/python/output.d.ts +2 -13
  566. package/dist/tools/python/output.js.map +1 -1
  567. package/dist/tools/python/python.cjs.map +1 -1
  568. package/dist/tools/python/python.d.cts +2 -2
  569. package/dist/tools/python/python.d.ts +2 -2
  570. package/dist/tools/python/python.js.map +1 -1
  571. package/dist/tools/python/storage.cjs.map +1 -1
  572. package/dist/tools/python/storage.d.cts +1 -12
  573. package/dist/tools/python/storage.d.ts +1 -12
  574. package/dist/tools/python/storage.js.map +1 -1
  575. package/dist/tools/search/base.cjs.map +1 -1
  576. package/dist/tools/search/base.d.cts +2 -13
  577. package/dist/tools/search/base.d.ts +2 -13
  578. package/dist/tools/search/base.js.map +1 -1
  579. package/dist/tools/search/duckDuckGoSearch.cjs +7 -1
  580. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  581. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -13
  582. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -13
  583. package/dist/tools/search/duckDuckGoSearch.js +7 -1
  584. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  585. package/dist/tools/search/googleSearch.cjs.map +1 -1
  586. package/dist/tools/search/googleSearch.d.cts +1 -1
  587. package/dist/tools/search/googleSearch.d.ts +1 -1
  588. package/dist/tools/search/googleSearch.js.map +1 -1
  589. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  590. package/dist/tools/search/searXNGSearch.d.cts +2 -13
  591. package/dist/tools/search/searXNGSearch.d.ts +2 -13
  592. package/dist/tools/search/searXNGSearch.js.map +1 -1
  593. package/dist/tools/search/wikipedia.cjs +11 -11
  594. package/dist/tools/search/wikipedia.cjs.map +1 -1
  595. package/dist/tools/search/wikipedia.d.cts +1 -1
  596. package/dist/tools/search/wikipedia.d.ts +1 -1
  597. package/dist/tools/search/wikipedia.js +11 -11
  598. package/dist/tools/search/wikipedia.js.map +1 -1
  599. package/dist/tools/similarity.cjs.map +1 -1
  600. package/dist/tools/similarity.d.cts +2 -13
  601. package/dist/tools/similarity.d.ts +2 -13
  602. package/dist/tools/similarity.js.map +1 -1
  603. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  604. package/dist/tools/weather/openMeteo.d.cts +2 -13
  605. package/dist/tools/weather/openMeteo.d.ts +2 -13
  606. package/dist/tools/weather/openMeteo.js.map +1 -1
  607. package/dist/tools/web/webCrawler.cjs.map +1 -1
  608. package/dist/tools/web/webCrawler.d.cts +1 -1
  609. package/dist/tools/web/webCrawler.d.ts +1 -1
  610. package/dist/tools/web/webCrawler.js.map +1 -1
  611. package/dist/version.cjs +1 -1
  612. package/dist/version.cjs.map +1 -1
  613. package/dist/version.d.cts +1 -12
  614. package/dist/version.d.ts +1 -12
  615. package/dist/version.js +1 -1
  616. package/dist/version.js.map +1 -1
  617. package/dist/workflows/agent.cjs.map +1 -1
  618. package/dist/workflows/agent.d.cts +3 -3
  619. package/dist/workflows/agent.d.ts +3 -3
  620. package/dist/workflows/agent.js.map +1 -1
  621. package/dist/workflows/workflow.cjs +3 -3
  622. package/dist/workflows/workflow.cjs.map +1 -1
  623. package/dist/workflows/workflow.d.cts +1 -1
  624. package/dist/workflows/workflow.d.ts +1 -1
  625. package/dist/workflows/workflow.js +3 -3
  626. package/dist/workflows/workflow.js.map +1 -1
  627. package/package.json +37 -73
@@ -7,6 +7,7 @@ import { z } from 'zod';
7
7
  import { Cache } from '../../cache/decoratorCache.js';
8
8
  import { paginate } from '../../internals/helpers/paginate.js';
9
9
  import { Emitter } from '../../emitter/emitter.js';
10
+ import { parseEnv, getEnv } from '../../internals/env.js';
10
11
 
11
12
  var __defProp = Object.defineProperty;
12
13
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -65,7 +66,12 @@ class DuckDuckGoSearchTool extends Tool {
65
66
  constructor(options = {}) {
66
67
  super({
67
68
  ...options,
68
- maxResults: options?.maxResults ?? 15
69
+ maxResults: options?.maxResults ?? 15,
70
+ httpClientOptions: {
71
+ proxy: getEnv("BEEAI_DDG_TOOL_PROXY"),
72
+ rejectUnauthorized: parseEnv.asBoolean("BEEAI_DDG_TOOL_PROXY_VERIFY", true),
73
+ ...options?.httpClientOptions
74
+ }
69
75
  });
70
76
  }
71
77
  static {
@@ -1 +1 @@
1
- {"version":3,"sources":["duckDuckGoSearch.ts"],"names":["DuckDuckGoSearchToolOutput","SearchToolOutput","constructor","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","_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","httpClientOptions","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 *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { 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\";\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({ ...options, maxResults: options?.maxResults ?? 15 });\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":["googleSearch.ts"],"names":["GoogleSearchToolOutput","SearchToolOutput","constructor","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 *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { 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"]}
@@ -5,7 +5,7 @@ import { SearchToolOptions, SearchToolResult, SearchToolOutput, SearchToolRunOpt
5
5
  import { Tool, ToolEmitter, ToolInput } from '../base.cjs';
6
6
  import { z } from 'zod';
7
7
  import { RunContext } from '../../context.cjs';
8
- import { E as Emitter } from '../../emitter-D5Mu0EEH.cjs';
8
+ import { E as Emitter } from '../../emitter-DWEsd-ud.cjs';
9
9
  import '../../internals/serializable.cjs';
10
10
  import '../../internals/types.cjs';
11
11
  import '../../internals/helpers/guards.cjs';
@@ -5,7 +5,7 @@ import { SearchToolOptions, SearchToolResult, SearchToolOutput, SearchToolRunOpt
5
5
  import { Tool, ToolEmitter, ToolInput } from '../base.js';
6
6
  import { z } from 'zod';
7
7
  import { RunContext } from '../../context.js';
8
- import { E as Emitter } from '../../emitter-C3dO-s2P.js';
8
+ import { E as Emitter } from '../../emitter-C9nwGLt6.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":["googleSearch.ts"],"names":["GoogleSearchToolOutput","SearchToolOutput","constructor","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":";;;;;;;;;;;;;AAcC,SAAA,YAAA,CAAA,UAAA,EAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;;;;;;AAAA,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;;;AA6BM,MAAMA,+BAA+BC,gBAAAA,CAAAA;EA3C5C;;;;AA4CEC,EAAAA,WAAAA,CAA4BC,OAAmC,EAAA;AAC7D,IAAMA,KAAAA,CAAAA,OAAAA,CAAAA,EAAAA,IAAAA,CADoBA,OAAAA,GAAAA,OAAAA;AAE5B;EAEA;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACLF,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAChB,KAAA;AACF;AAEAG,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF;AAEO,MAAMG,yBAAyBC,IAAAA,CAAAA;EA/DtC;;;EAoEEC,IAAO,GAAA,cAAA;EACPC,WAAc,GAAA,CAAA,0FAAA,CAAA;EAEEC,OACdC,GAAAA,OAAAA,CAAQC,KAAKC,KAAM,CAAA;IACjBC,SAAW,EAAA;AAAC,MAAA,MAAA;AAAQ,MAAA,QAAA;AAAU,MAAA;;IAC9BC,OAAS,EAAA;GACX,CAAA;EAGFC,WAAc,GAAA;AACZ,IAAA,OAAOC,EAAEC,MAAO,CAAA;AACdC,MAAAA,KAAAA,EAAOF,EAAEG,MAAO,CAAA;QAAEX,WAAa,EAAA,CAAA,YAAA;AAAe,OAAA,CAAGY,CAAAA,GAAAA,CAAI,CAAA,CAAA,CAAGC,IAAI,IAAA;KAC9D,CAAA;AACF;AAEUC,EAAAA,MAAAA;AACAC,EAAAA,KAAAA;AAEV,EAAA,WAAA,CAAmBC,OAAmC,GAAA;IAAEC,UAAY,EAAA;GAAM,EAAA;AACxE,IAAA,KAAA,CAAMD,OAAAA,CAAAA;AAEN,IAAA,IAAA,CAAKF,SAASE,OAAQF,CAAAA,MAAAA,IAAUI,SAAS,gBAAkBV,EAAAA,CAAAA,CAAEG,QAAM,CAAA;AACnE,IAAA,IAAA,CAAKI,QAAQC,OAAQD,CAAAA,KAAAA,IAASG,SAAS,eAAiBV,EAAAA,CAAAA,CAAEG,QAAM,CAAA;AAEhE,IAAA,IAAI,CAAC,IAAA,CAAKG,MAAU,IAAA,CAAC,KAAKC,KAAO,EAAA;AAC/B,MAAA,MAAM,IAAII,UACR,CAAA;AACE,QAAA,CAAA,0CAAA,CAAA;AACA,QAAA,CAAA,gFAAA;AACAC,OAAAA,CAAAA,IAAAA,CAAK,IAAA,CAAA,CAAA;AAEX;AAEA,IAAA,IAAIJ,OAAQC,CAAAA,UAAAA,GAAa,CAAKD,IAAAA,OAAAA,CAAQC,aAAa,GAAK,EAAA;AACtD,MAAA,MAAM,IAAII,eAAgB,CAAA;AACxB,QAAA;UACEC,OAAS,EAAA,iDAAA;UACTC,YAAc,EAAA;AAChB;AACD,OAAA,CAAA;AACH;AACF;AAEA,EAAA,IACcC,MAAuC,GAAA;AACnD,IAAO,OAAA,IAAIC,gBAAgBC,YAAa,CAAA;AACtCC,MAAAA,IAAAA,EAAM,IAAKb,CAAAA;KACb,CAAA;AACF;EAEA;AACE,IAAA,IAAA,CAAKvB,QAAQ,EAAA;AACf;AAEA,EAAA,MAAgBqC,KACd,EAAElB,KAAAA,EAAOmB,KAAK,EAAA,EACdC,UACAC,GACA,EAAA;AACA,IAAMzC,MAAAA,OAAAA,GAAU,MAAM0C,QAAS,CAAA;AAC7BC,MAAAA,IAAAA,EAAM,KAAKjB,OAAQC,CAAAA,UAAAA;AACnBiB,MAAAA,OAAAA,kBAAgB,MAAA,CAAA,OAAA,EAAEC,MAAS,GAAA,CAAA,EAAGC,OAAO,KAAA;AACnC,QAAA,MAAMC,YAAe,GAAA,EAAA;AAErB,QAAA,MAAM,EACJC,IAAAA,EAAM,EAAEC,KAAAA,GAAQ,EAAA,EAAI,EAAA,GAClB,MAAM,IAAA,CAAKf,MAAOgB,CAAAA,GAAAA,CAAIC,IACxB,CAAA;AACEC,UAAAA,EAAAA,EAAI,IAAK3B,CAAAA,KAAAA;UACT4B,CAAGd,EAAAA,KAAAA;UACHe,KAAOT,EAAAA,MAAAA;UACPU,GAAKC,EAAAA,IAAAA,CAAKlC,GAAIwB,CAAAA,KAAAA,EAAOC,YAAAA,CAAAA;UACrBU,IAAM,EAAA;SAER,EAAA;AACEC,UAAAA,MAAAA,EAAQjB,GAAIiB,CAAAA;SACd,CAAA;AAGF,QAAO,OAAA;UACLV,IAAMC,EAAAA,KAAAA;AACNU,UAAAA,UAAAA,EAAYV,KAAMW,CAAAA,MAAAA,GAASb,YAAec,GAAAA,MAAAA,GAAYhB,SAASI,KAAMW,CAAAA;AACvE,SAAA;OArBO,EAAA,SAAA;KAuBX,CAAA;AAEA,IAAA,OAAO,IAAI/D,sBAAAA,CACTG,OAAQ8D,CAAAA,GAAAA,CAAI,CAACC,MAAY,MAAA;AACvBC,MAAAA,KAAAA,EAAOD,OAAOC,KAAS,IAAA,EAAA;AACvBtD,MAAAA,WAAAA,EAAaqD,OAAOE,OAAW,IAAA,EAAA;AAC/BC,MAAAA,GAAAA,EAAKH,OAAOI,IAAQ,IAAA;AACtB,KAAA,CAAA,CAAA,CAAA;AAEJ;EAEAjE,cAAiB,GAAA;AACf,IAAO,OAAA;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;AACTsB,MAAAA,MAAAA,EAAQ,IAAKA,CAAAA,MAAAA;AACbC,MAAAA,KAAAA,EAAO,IAAKA,CAAAA;AACd,KAAA;AACF;AAEAtB,EAAAA,YAAAA,CAAa,EAAEqB,MAAAA,EAAQC,KAAO,EAAA,GAAGrB,UAAoD,EAAA;AACnF,IAAA,KAAA,CAAMD,aAAaC,QAAAA,CAAAA;AACnBC,IAAAA,MAAAA,CAAOC,OAAO,IAAM,EAAA;AAClBkB,MAAAA,MAAAA;AACAC,MAAAA;KACF,CAAA;AACF;AACF;;;;;;;;;+FAlE0C,YAAA,KAAA,WAAA,GAAA,MAAA,GAAAU,eAAA,CAAA,YAAA,CAAA","file":"googleSearch.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { 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":["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":";;;;;;;;;;;;AAuCO,MAAMA,0BAA0BC,yBAAAA,CAAAA;EAvCvC;;;EAwCE;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACLC,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAChB,KAAA;AACF;AAEAC,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF;AAEO,MAAMG,oBAAoBC,eAAAA,CAAAA;EAvDjC;;;EA4DEC,IAAO,GAAA,YAAA;EACPC,WAAc,GAAA,CAAA,0FAAA,CAAA;EAEEC,OACdC,GAAAA,mBAAAA,CAAQC,KAAKC,KAAM,CAAA;IACjBC,SAAW,EAAA;AAAC,MAAA,MAAA;AAAQ,MAAA,QAAA;AAAU,MAAA;;IAC9BC,OAAS,EAAA;GACX,CAAA;EAEFC,WAAc,GAAA;AACZ,IAAA,OAAOC,MAAEC,MAAO,CAAA;AACdC,MAAAA,KAAAA,EAAOF,MAAEG,MAAM,EAAA,CAAGC,IAAI,CAAA,CAAA,CAAGC,SAAS,CAAmB,iBAAA,CAAA;KACvD,CAAA;AACF;AAEA,EAAA,WAAA,CAAmBC,OAA8B,GAAA;IAAEC,UAAY,EAAA;GAAM,EAAA;AACnE,IAAA,KAAA,CAAMD,OAAAA,CAAAA;AAEN,IAAA,IAAIA,OAAQC,CAAAA,UAAAA,GAAa,CAAKD,IAAAA,OAAAA,CAAQC,aAAa,GAAK,EAAA;AACtD,MAAA,MAAM,IAAIC,mBAAgB,CAAA;AACxB,QAAA;UACEC,OAAS,EAAA,iDAAA;UACTC,YAAc,EAAA;AAChB;AACD,OAAA,CAAA;AACH;AACF;EAEA,MAAgBC,IAAAA,CACdC,KACAC,EAAAA,QAAAA,EACAC,GACA,EAAA;AACA,IAAA,MAAMC,SAASC,2BAAgB,CAAA;AAC7BC,MAAAA,CAAAA,EAAGL,KAAMV,CAAAA,KAAAA;MACTgB,MAAQ,EAAA;KACV,CAAA;AAEA,IAAMC,MAAAA,OAAAA,GAAU,KAAKb,OAAQa,CAAAA,OAAAA,IAAWC,iBAAS,kBAAoBpB,EAAAA,KAAAA,CAAEG,QAAM,CAAA;AAC7E,IAAMkB,MAAAA,GAAAA,GAAM,GAAGF,OAAAA,CAAAA,CAAAA,EAAWG,mBAAmBP,MAAOQ,CAAAA,QAAAA,EAAQ,CAAA,CAAA,CAAA;AAC5D,IAAMC,MAAAA,QAAAA,GAAW,MAAMC,KAAAA,CAAMJ,GAAK,EAAA;AAChCK,MAAAA,MAAAA,EAAQZ,GAAIY,CAAAA;KACd,CAAA;AAEA,IAAI,IAAA,CAACF,SAASG,EAAI,EAAA;AAChB,MAAA,MAAM,IAAIC,KAAAA,CAAM,MAAMJ,QAAAA,CAASK,MAAI,CAAA;AACrC;AAEA,IAAMC,MAAAA,IAAAA,GAAO,MAAMN,QAAAA,CAASO,IAAI,EAAA;AAEhC,IAAA,OAAO,IAAInD,iBAAAA,CACTkD,IAAK9C,CAAAA,OAAAA,CACFgD,KAAM,CAAA,CAAA,EAAG,IAAK1B,CAAAA,OAAAA,CAAQC,UAAU,CAAA,CAChC0B,GAAI,CAAA,CAACC,MAA6D,MAAA;AACjEb,MAAAA,GAAAA,EAAKa,OAAOb,GAAO,IAAA,EAAA;AACnBc,MAAAA,KAAAA,EAAOD,OAAOC,KAAS,IAAA,EAAA;AACvB3C,MAAAA,WAAAA,EAAa0C,OAAOE,OAAW,IAAA;AACjC,KAAA,CAAA,CAAA,CAAA;AAEN;AACF","file":"searXNGSearch.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ToolEmitter, 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;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"]}
@@ -11,23 +11,12 @@ 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-D5Mu0EEH.cjs';
14
+ import '../../emitter-DWEsd-ud.cjs';
15
15
  import '../../internals/helpers/promise.cjs';
16
16
 
17
17
  /**
18
18
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
19
- *
20
- * Licensed under the Apache License, Version 2.0 (the "License");
21
- * you may not use this file except in compliance with the License.
22
- * You may obtain a copy of the License at
23
- *
24
- * http://www.apache.org/licenses/LICENSE-2.0
25
- *
26
- * Unless required by applicable law or agreed to in writing, software
27
- * distributed under the License is distributed on an "AS IS" BASIS,
28
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
- * See the License for the specific language governing permissions and
30
- * limitations under the License.
19
+ * SPDX-License-Identifier: Apache-2.0
31
20
  */
32
21
 
33
22
  interface SearXNGToolOptions extends SearchToolOptions {
@@ -11,23 +11,12 @@ 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-C3dO-s2P.js';
14
+ import '../../emitter-C9nwGLt6.js';
15
15
  import '../../internals/helpers/promise.js';
16
16
 
17
17
  /**
18
18
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
19
- *
20
- * Licensed under the Apache License, Version 2.0 (the "License");
21
- * you may not use this file except in compliance with the License.
22
- * You may obtain a copy of the License at
23
- *
24
- * http://www.apache.org/licenses/LICENSE-2.0
25
- *
26
- * Unless required by applicable law or agreed to in writing, software
27
- * distributed under the License is distributed on an "AS IS" BASIS,
28
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
- * See the License for the specific language governing permissions and
30
- * limitations under the License.
19
+ * SPDX-License-Identifier: Apache-2.0
31
20
  */
32
21
 
33
22
  interface SearXNGToolOptions extends SearchToolOptions {
@@ -1 +1 @@
1
- {"version":3,"sources":["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":";;;;;;;;;;AAuCO,MAAMA,0BAA0BC,gBAAAA,CAAAA;EAvCvC;;;EAwCE;AACE,IAAA,IAAA,CAAKC,QAAQ,EAAA;AACf;EAEAC,cAAiB,GAAA;AACf,IAAO,OAAA;AACLC,MAAAA,OAAAA,EAAS,IAAKA,CAAAA;AAChB,KAAA;AACF;AAEAC,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DC,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMF,QAAAA,CAAAA;AACtB;AACF;AAEO,MAAMG,oBAAoBC,IAAAA,CAAAA;EAvDjC;;;EA4DEC,IAAO,GAAA,YAAA;EACPC,WAAc,GAAA,CAAA,0FAAA,CAAA;EAEEC,OACdC,GAAAA,OAAAA,CAAQC,KAAKC,KAAM,CAAA;IACjBC,SAAW,EAAA;AAAC,MAAA,MAAA;AAAQ,MAAA,QAAA;AAAU,MAAA;;IAC9BC,OAAS,EAAA;GACX,CAAA;EAEFC,WAAc,GAAA;AACZ,IAAA,OAAOC,EAAEC,MAAO,CAAA;AACdC,MAAAA,KAAAA,EAAOF,EAAEG,MAAM,EAAA,CAAGC,IAAI,CAAA,CAAA,CAAGC,SAAS,CAAmB,iBAAA,CAAA;KACvD,CAAA;AACF;AAEA,EAAA,WAAA,CAAmBC,OAA8B,GAAA;IAAEC,UAAY,EAAA;GAAM,EAAA;AACnE,IAAA,KAAA,CAAMD,OAAAA,CAAAA;AAEN,IAAA,IAAIA,OAAQC,CAAAA,UAAAA,GAAa,CAAKD,IAAAA,OAAAA,CAAQC,aAAa,GAAK,EAAA;AACtD,MAAA,MAAM,IAAIC,eAAgB,CAAA;AACxB,QAAA;UACEC,OAAS,EAAA,iDAAA;UACTC,YAAc,EAAA;AAChB;AACD,OAAA,CAAA;AACH;AACF;EAEA,MAAgBC,IAAAA,CACdC,KACAC,EAAAA,QAAAA,EACAC,GACA,EAAA;AACA,IAAA,MAAMC,SAASC,eAAgB,CAAA;AAC7BC,MAAAA,CAAAA,EAAGL,KAAMV,CAAAA,KAAAA;MACTgB,MAAQ,EAAA;KACV,CAAA;AAEA,IAAMC,MAAAA,OAAAA,GAAU,KAAKb,OAAQa,CAAAA,OAAAA,IAAWC,SAAS,kBAAoBpB,EAAAA,CAAAA,CAAEG,QAAM,CAAA;AAC7E,IAAMkB,MAAAA,GAAAA,GAAM,GAAGF,OAAAA,CAAAA,CAAAA,EAAWG,mBAAmBP,MAAOQ,CAAAA,QAAAA,EAAQ,CAAA,CAAA,CAAA;AAC5D,IAAMC,MAAAA,QAAAA,GAAW,MAAMC,KAAAA,CAAMJ,GAAK,EAAA;AAChCK,MAAAA,MAAAA,EAAQZ,GAAIY,CAAAA;KACd,CAAA;AAEA,IAAI,IAAA,CAACF,SAASG,EAAI,EAAA;AAChB,MAAA,MAAM,IAAIC,KAAAA,CAAM,MAAMJ,QAAAA,CAASK,MAAI,CAAA;AACrC;AAEA,IAAMC,MAAAA,IAAAA,GAAO,MAAMN,QAAAA,CAASO,IAAI,EAAA;AAEhC,IAAA,OAAO,IAAInD,iBAAAA,CACTkD,IAAK9C,CAAAA,OAAAA,CACFgD,KAAM,CAAA,CAAA,EAAG,IAAK1B,CAAAA,OAAAA,CAAQC,UAAU,CAAA,CAChC0B,GAAI,CAAA,CAACC,MAA6D,MAAA;AACjEb,MAAAA,GAAAA,EAAKa,OAAOb,GAAO,IAAA,EAAA;AACnBc,MAAAA,KAAAA,EAAOD,OAAOC,KAAS,IAAA,EAAA;AACvB3C,MAAAA,WAAAA,EAAa0C,OAAOE,OAAW,IAAA;AACjC,KAAA,CAAA,CAAA,CAAA;AAEN;AACF","file":"searXNGSearch.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ToolEmitter, 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;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"]}
@@ -93,9 +93,16 @@ class WikipediaTool extends base_cjs$1.Tool {
93
93
  __name(this, "WikipediaTool");
94
94
  }
95
95
  config;
96
- name;
97
- description;
98
- emitter;
96
+ name = "Wikipedia";
97
+ description = "Search factual and historical information, including biography, history, politics, geography, society, culture, science, technology, people, animal species, mathematics, and other subjects.";
98
+ emitter = emitter_cjs.Emitter.root.child({
99
+ namespace: [
100
+ "tool",
101
+ "search",
102
+ "wikipedia"
103
+ ],
104
+ creator: this
105
+ });
99
106
  inputSchema() {
100
107
  return zod.z.object({
101
108
  query: zod.z.string({
@@ -104,14 +111,7 @@ class WikipediaTool extends base_cjs$1.Tool {
104
111
  });
105
112
  }
106
113
  constructor(config = {}) {
107
- super(config), this.config = config, this.name = "Wikipedia", this.description = "Search factual and historical information, including biography, history, politics, geography, society, culture, science, technology, people, animal species, mathematics, and other subjects.", this.emitter = emitter_cjs.Emitter.root.child({
108
- namespace: [
109
- "tool",
110
- "search",
111
- "wikipedia"
112
- ],
113
- creator: this
114
- });
114
+ super(config), this.config = config;
115
115
  }
116
116
  static {
117
117
  this.register();
@@ -1 +1 @@
1
- {"version":3,"sources":["wikipedia.ts"],"names":["wiki","default","setLang","WikipediaToolOutput","SearchToolOutput","constructor","results","maxSerializedLength","register","getTextContent","isEmpty","target","length","response","JSON","stringify","Infinity","substring","createSnapshot","loadSnapshot","snapshot","Object","assign","WikipediaTool","Tool","name","description","emitter","inputSchema","z","object","query","string","min","max","config","Emitter","root","child","namespace","creator","_mappers","categories","page","content","html","markdown","runOptions","then","result","url","URL","fullurl","base","protocol","hostname","port","filter","Boolean","join","replace","service","Turndown","use","turndownPlugin","gfm","remove","node","extraction","fields","turndown","images","intro","infobox","links","coordinates","langLinks","references","related","summary","tables","_defaultRunOptions","unwrapTags","Set","unwrapTagsSelector","Array","from","values","ignoredTags","ignoredClasses","ignoredRoles","ignoredSelector","map","cls","role","transform","output","tagName","toLowerCase","has","className","trim","split","table","querySelectorAll","colspan","parseInt","getAttribute","insertAdjacentHTML","removeAttribute","ignoredTargets","childNode","unwrapTargets","reverse","push","outerHTML","innerHTML","filters","minPageNameSimilarity","excludeOthersOnExactMatch","search","limit","suggestion","maxDescriptionLength","_createRunOptions","overrides","baseKeys","R","pipe","mergeDeep","pick","options","_run","input","_options","searchRawResults","bestCandidates","extractBestCandidates","Promise","all","pageId","redirect","preload","keys","key","asyncProperties","title","resolve","mapValues","value","catch","undefined","candidates","normalize","text","stringComparison","jaccardIndex","sortMatch","candidate","index","pageid","score","rating","sort","a","b","at","enumerable"],"mappings":"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","file":"wikipedia.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Page, pageFunctions, searchOptions } from \"wikipedia\";\nimport wiki from \"wikipedia\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport * as R from \"remeda\";\nimport { keys, mapValues } from \"remeda\";\nimport { ArrayKeys, Common } from \"@/internals/types.js\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"./base.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { z } from \"zod\";\nimport { Tool, ToolEmitter, ToolInput } from \"@/tools/base.js\";\nimport Turndown from \"turndown\";\n// @ts-expect-error missing types\nimport turndownPlugin from \"joplin-turndown-plugin-gfm\";\nimport stringComparison from \"string-comparison\";\nimport { pageResult } from \"wikipedia/dist/resultTypes.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nwiki.default.setLang(\"en\");\n\nexport interface SearchOptions extends searchOptions {}\n\nexport interface FilterOptions {\n excludeOthersOnExactMatch?: boolean;\n minPageNameSimilarity?: number;\n}\n\nexport type PageFunctions = Record<\n pageFunctions,\n {\n transform?: <T>(output: T) => T;\n }\n> & {\n markdown: {\n transform?: (output: string) => string;\n filter?: (node: HTMLElement) => boolean;\n };\n};\n\nexport interface ExtractionOptions {\n fields?: Partial<PageFunctions>;\n}\n\nexport interface OutputOptions {\n maxSerializedLength?: number;\n maxDescriptionLength?: number;\n}\n\nexport interface WikipediaToolOptions extends SearchToolOptions {\n filters?: FilterOptions;\n search?: SearchOptions;\n extraction?: ExtractionOptions;\n output?: OutputOptions;\n}\n\nexport interface WikipediaToolRunOptions extends SearchToolRunOptions {\n filters?: FilterOptions;\n search?: SearchOptions;\n extraction?: ExtractionOptions;\n output?: OutputOptions;\n}\n\ntype PageWithMarkdown = Page & { markdown: () => Promise<string> };\n\ntype ResultFields = { [K in keyof PageFunctions]: Awaited<ReturnType<PageWithMarkdown[K]>> };\n\nexport interface WikipediaToolResult extends SearchToolResult {\n fields: Partial<ResultFields>;\n}\n\nexport class WikipediaToolOutput extends SearchToolOutput<WikipediaToolResult> {\n constructor(\n public readonly results: WikipediaToolResult[],\n protected readonly maxSerializedLength: number,\n ) {\n super(results);\n }\n\n static {\n this.register();\n }\n\n @Cache()\n getTextContent(): string {\n if (this.isEmpty()) {\n return `No results were found. Try to reformat your query.`;\n }\n\n const target = this.results.length === 1 ? this.results[0] : this.results;\n const response = JSON.stringify(target);\n\n return this.maxSerializedLength < Infinity\n ? response.substring(0, this.maxSerializedLength)\n : response;\n }\n\n createSnapshot() {\n return {\n results: this.results,\n maxSerializedLength: this.maxSerializedLength,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\ninterface SearchResponse {\n results: Pick<pageResult, \"title\" | \"pageid\">[];\n suggestion: string;\n}\n\nexport class WikipediaTool extends Tool<\n WikipediaToolOutput,\n WikipediaToolOptions,\n WikipediaToolRunOptions\n> {\n name = \"Wikipedia\";\n description =\n \"Search factual and historical information, including biography, history, politics, geography, society, culture, science, technology, people, animal species, mathematics, and other subjects.\";\n\n public readonly emitter: ToolEmitter<ToolInput<this>, WikipediaToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"wikipedia\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n query: z\n .string({ description: `Name of the wikipedia page, for example 'New York'` })\n .min(1)\n .max(128),\n });\n }\n\n public constructor(public readonly config: WikipediaToolOptions = {}) {\n super(config);\n }\n\n static {\n this.register();\n }\n\n @Cache({\n enumerable: false,\n })\n protected get _mappers(): Record<\n keyof PageFunctions,\n (page: Page, runOptions: WikipediaToolRunOptions) => Promise<any>\n > {\n return {\n categories: (page) => page.categories(),\n content: (page) => page.content(),\n html: (page) => page.html(),\n markdown: async (page, runOptions) => {\n const html = await page.html().then((result) => {\n const url = new URL(page.fullurl);\n const base = `${url.protocol}//${[url.hostname, url.port].filter(Boolean).join(\":\")}`;\n return (\n result\n // Missing a protocol\n .replace(/(<img .*src=)\"(\\/\\/.*)\"/gm, `$1\"${url.protocol}$2\"`)\n .replace(/(<a .*href=)\"(\\/\\/.*)\"/gm, `$1\"${url.protocol}$2\"`)\n\n // Missing a hostname\n .replace(/(<img .*src=)\"(\\/.*)\"/gm, `$1\"${base}$2\"`)\n .replace(/(<a .*href=)\"(\\/.*)\"/gm, `$1\"${base}$2\"`)\n );\n });\n\n const service = new Turndown();\n service.use(turndownPlugin.gfm);\n return service\n .remove((node) => runOptions.extraction?.fields?.markdown?.filter?.(node) === false)\n .turndown(html);\n },\n images: (page) => page.images(),\n intro: (page) => page.intro(),\n infobox: (page) => page.infobox(),\n links: (page) => page.links(),\n coordinates: (page) => page.coordinates(),\n langLinks: (page) => page.langLinks(),\n references: (page) => page.references(),\n related: (page) => page.related(),\n summary: (page) => page.summary(),\n tables: (page) => page.tables(),\n };\n }\n\n @Cache({\n enumerable: false,\n })\n protected get _defaultRunOptions(): WikipediaToolRunOptions {\n const unwrapTags = new Set([\"a\", \"small\", \"sup\"]);\n const unwrapTagsSelector = Array.from(unwrapTags.values()).join(\",\");\n\n const ignoredTags = new Set([\n \"img\",\n \"link\",\n \"style\",\n \"abbr\",\n \"cite\",\n \"input\",\n \"sup\",\n \"bdi\",\n \"q\",\n \"figure\",\n \"audio\",\n \"track\",\n \"figcaption\",\n ]);\n const ignoredClasses = new Set([\n \"toc\",\n \"reflist\",\n \"mw-references-wrap\",\n \"box-More_footnotes_needed\",\n \"navbox\",\n \"navbox-styles\",\n \"mw-editsection\",\n \"sistersitebox\",\n \"navbox-inner\",\n \"refbegin\",\n \"notpageimage\",\n \"mw-file-element\",\n \"box-Unreferenced_section\",\n \"navigation-not-searchable\",\n \"noexcerpt\",\n \"infobox-image\",\n \"mw-tmh-player\",\n \"printfooter\",\n \"ambox\",\n \"infobox\",\n ]);\n const ignoredRoles = new Set([\"navigation\"]);\n\n const ignoredSelector = [\n ...ignoredTags.values(),\n Array.from(ignoredClasses.values()).map((cls) => `.${cls}`),\n Array.from(ignoredRoles.values()).map((role) => `[role=\"${role}\"]`),\n \"table>caption\",\n ].join(\",\");\n\n return {\n extraction: {\n fields: {\n markdown: {\n transform: (output: string) => output.replace(/([^\\\\])(\\$)/g, `$1\\\\$2`),\n filter: (node) => {\n const tagName = node.tagName.toLowerCase();\n if (ignoredTags.has(tagName) || ignoredRoles.has(node.role ?? \"\")) {\n return false;\n }\n\n for (const cls of node.className.trim().split(\" \").filter(Boolean)) {\n if (ignoredClasses.has(cls)) {\n return false;\n }\n }\n\n for (const table of Array.from(node.querySelectorAll(\"table tr>th\"))) {\n let colspan = parseInt(table.getAttribute(\"colspan\") || \"1\");\n while (colspan > 1) {\n table.insertAdjacentHTML(\"afterend\", `<th>&nbsp;</th>`);\n colspan--;\n }\n table.removeAttribute(\"colspan\");\n }\n\n const ignoredTargets = Array.from(\n ignoredSelector ? node.querySelectorAll(ignoredSelector) : [],\n );\n for (const childNode of ignoredTargets) {\n childNode.remove();\n }\n\n const unwrapTargets = Array.from(\n unwrapTagsSelector ? node.querySelectorAll(unwrapTagsSelector) : [],\n ).reverse();\n if (unwrapTags.has(tagName)) {\n unwrapTargets.push(node);\n }\n for (const childNode of unwrapTargets) {\n childNode.outerHTML = childNode.innerHTML;\n }\n\n return true;\n },\n },\n },\n },\n filters: {\n minPageNameSimilarity: 0.5,\n excludeOthersOnExactMatch: true,\n },\n search: {\n limit: 3,\n suggestion: true,\n },\n output: {\n maxSerializedLength: 25_000,\n maxDescriptionLength: 250,\n },\n };\n }\n\n protected _createRunOptions(overrides?: WikipediaToolRunOptions): WikipediaToolRunOptions {\n const baseKeys: ArrayKeys<Common<WikipediaToolRunOptions, WikipediaToolOptions>> = [\n \"filters\",\n \"search\",\n \"extraction\",\n \"retryOptions\",\n \"output\",\n ];\n\n return R.pipe(\n { ...this._defaultRunOptions },\n R.mergeDeep(R.pick(this.options ?? {}, baseKeys)),\n R.mergeDeep({ ...overrides }),\n );\n }\n\n protected async _run(\n { query: input }: ToolInput<WikipediaTool>,\n _options?: WikipediaToolRunOptions,\n ): Promise<WikipediaToolOutput> {\n const runOptions = this._createRunOptions(_options);\n\n const { results: searchRawResults, suggestion }: SearchResponse = await wiki.default.search(\n input,\n {\n suggestion: Boolean(_options?.search?.suggestion),\n ...runOptions.search,\n },\n );\n\n if (searchRawResults.length === 0 && suggestion && runOptions.search?.suggestion) {\n return await this._run({ query: suggestion }, _options);\n }\n\n const bestCandidates = this.extractBestCandidates(\n input,\n searchRawResults,\n runOptions?.filters ?? {},\n );\n\n const results = await Promise.all(\n bestCandidates.map(async ({ pageId }) => {\n // @ts-expect-error wrong library's typing, passing a string would lead to a classic text search instead of a concrete page retrieval\n const page = await wiki.default.page(pageId, {\n redirect: true,\n preload: false,\n fields: keys(runOptions.extraction?.fields ?? {}).filter((key) => key !== \"markdown\"),\n });\n\n return asyncProperties({\n title: page.title,\n description: ((): Promise<string> => {\n const length = runOptions?.output?.maxDescriptionLength ?? 0;\n return length <= 0\n ? Promise.resolve(\"\")\n : page.content().then((content) => content.substring(0, length));\n })(),\n url: page.fullurl,\n fields: asyncProperties(\n mapValues(runOptions?.extraction?.fields ?? {}, (value, key) =>\n this._mappers[key](page, runOptions)\n .then((response) => (value.transform ? value.transform(response) : response))\n .catch(() => undefined),\n ),\n ),\n });\n }),\n );\n return new WikipediaToolOutput(results, runOptions.output?.maxSerializedLength ?? Infinity);\n }\n\n protected extractBestCandidates(\n query: string,\n candidates: SearchResponse[\"results\"],\n options: FilterOptions,\n ) {\n const normalize = (text: string) =>\n text\n .normalize(\"NFKD\")\n .replace(/[^\\w| ]/g, \"\") // remove diacritics and special characters (except whitespace)\n .replace(/\\s\\s+/g, \" \") // collapse multiple whitespaces into one\n .trim();\n\n const bestCandidates = stringComparison.jaccardIndex\n .sortMatch(\n normalize(query),\n candidates.map((candidate) => normalize(candidate.title)),\n )\n .map((result) => ({\n pageId: candidates[result.index].pageid,\n score: result.rating,\n }))\n .filter((result) => result.score >= (options.minPageNameSimilarity ?? 0))\n .sort((a, b) => b.score - a.score);\n\n if (bestCandidates.at(0)?.score === 1 && options.excludeOthersOnExactMatch) {\n bestCandidates.length = 1;\n }\n\n return bestCandidates;\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n config: this.config,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../src/tools/search/wikipedia.ts"],"names":["wiki","default","setLang","WikipediaToolOutput","SearchToolOutput","results","maxSerializedLength","register","getTextContent","isEmpty","target","length","response","JSON","stringify","Infinity","substring","createSnapshot","loadSnapshot","snapshot","Object","assign","WikipediaTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","z","object","query","string","min","max","config","_mappers","categories","page","content","html","markdown","runOptions","then","result","url","URL","fullurl","base","protocol","hostname","port","filter","Boolean","join","replace","service","Turndown","use","turndownPlugin","gfm","remove","node","extraction","fields","turndown","images","intro","infobox","links","coordinates","langLinks","references","related","summary","tables","_defaultRunOptions","unwrapTags","Set","unwrapTagsSelector","Array","from","values","ignoredTags","ignoredClasses","ignoredRoles","ignoredSelector","map","cls","role","transform","output","tagName","toLowerCase","has","className","trim","split","table","querySelectorAll","colspan","parseInt","getAttribute","insertAdjacentHTML","removeAttribute","ignoredTargets","childNode","unwrapTargets","reverse","push","outerHTML","innerHTML","filters","minPageNameSimilarity","excludeOthersOnExactMatch","search","limit","suggestion","maxDescriptionLength","_createRunOptions","overrides","baseKeys","R","pipe","mergeDeep","pick","options","_run","input","_options","searchRawResults","bestCandidates","extractBestCandidates","Promise","all","pageId","redirect","preload","keys","key","asyncProperties","title","resolve","mapValues","value","catch","undefined","candidates","normalize","text","stringComparison","jaccardIndex","sortMatch","candidate","index","pageid","score","rating","sort","a","b","at","enumerable"],"mappings":"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","file":"wikipedia.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type { Page, pageFunctions, searchOptions } from \"wikipedia\";\nimport wiki from \"wikipedia\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport * as R from \"remeda\";\nimport { keys, mapValues } from \"remeda\";\nimport { ArrayKeys, Common } from \"@/internals/types.js\";\nimport {\n SearchToolOptions,\n SearchToolOutput,\n SearchToolResult,\n SearchToolRunOptions,\n} from \"./base.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { z } from \"zod\";\nimport { Tool, ToolEmitter, ToolInput } from \"@/tools/base.js\";\nimport Turndown from \"turndown\";\n// @ts-expect-error missing types\nimport turndownPlugin from \"joplin-turndown-plugin-gfm\";\nimport stringComparison from \"string-comparison\";\nimport { pageResult } from \"wikipedia/dist/resultTypes.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nwiki.default.setLang(\"en\");\n\nexport interface SearchOptions extends searchOptions {}\n\nexport interface FilterOptions {\n excludeOthersOnExactMatch?: boolean;\n minPageNameSimilarity?: number;\n}\n\nexport type PageFunctions = Record<\n pageFunctions,\n {\n transform?: <T>(output: T) => T;\n }\n> & {\n markdown: {\n transform?: (output: string) => string;\n filter?: (node: HTMLElement) => boolean;\n };\n};\n\nexport interface ExtractionOptions {\n fields?: Partial<PageFunctions>;\n}\n\nexport interface OutputOptions {\n maxSerializedLength?: number;\n maxDescriptionLength?: number;\n}\n\nexport interface WikipediaToolOptions extends SearchToolOptions {\n filters?: FilterOptions;\n search?: SearchOptions;\n extraction?: ExtractionOptions;\n output?: OutputOptions;\n}\n\nexport interface WikipediaToolRunOptions extends SearchToolRunOptions {\n filters?: FilterOptions;\n search?: SearchOptions;\n extraction?: ExtractionOptions;\n output?: OutputOptions;\n}\n\ntype PageWithMarkdown = Page & { markdown: () => Promise<string> };\n\ntype ResultFields = { [K in keyof PageFunctions]: Awaited<ReturnType<PageWithMarkdown[K]>> };\n\nexport interface WikipediaToolResult extends SearchToolResult {\n fields: Partial<ResultFields>;\n}\n\nexport class WikipediaToolOutput extends SearchToolOutput<WikipediaToolResult> {\n constructor(\n public readonly results: WikipediaToolResult[],\n protected readonly maxSerializedLength: number,\n ) {\n super(results);\n }\n\n static {\n this.register();\n }\n\n @Cache()\n getTextContent(): string {\n if (this.isEmpty()) {\n return `No results were found. Try to reformat your query.`;\n }\n\n const target = this.results.length === 1 ? this.results[0] : this.results;\n const response = JSON.stringify(target);\n\n return this.maxSerializedLength < Infinity\n ? response.substring(0, this.maxSerializedLength)\n : response;\n }\n\n createSnapshot() {\n return {\n results: this.results,\n maxSerializedLength: this.maxSerializedLength,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\ninterface SearchResponse {\n results: Pick<pageResult, \"title\" | \"pageid\">[];\n suggestion: string;\n}\n\nexport class WikipediaTool extends Tool<\n WikipediaToolOutput,\n WikipediaToolOptions,\n WikipediaToolRunOptions\n> {\n name = \"Wikipedia\";\n description =\n \"Search factual and historical information, including biography, history, politics, geography, society, culture, science, technology, people, animal species, mathematics, and other subjects.\";\n\n public readonly emitter: ToolEmitter<ToolInput<this>, WikipediaToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"wikipedia\"],\n creator: this,\n });\n\n inputSchema() {\n return z.object({\n query: z\n .string({ description: `Name of the wikipedia page, for example 'New York'` })\n .min(1)\n .max(128),\n });\n }\n\n public constructor(public readonly config: WikipediaToolOptions = {}) {\n super(config);\n }\n\n static {\n this.register();\n }\n\n @Cache({\n enumerable: false,\n })\n protected get _mappers(): Record<\n keyof PageFunctions,\n (page: Page, runOptions: WikipediaToolRunOptions) => Promise<any>\n > {\n return {\n categories: (page) => page.categories(),\n content: (page) => page.content(),\n html: (page) => page.html(),\n markdown: async (page, runOptions) => {\n const html = await page.html().then((result) => {\n const url = new URL(page.fullurl);\n const base = `${url.protocol}//${[url.hostname, url.port].filter(Boolean).join(\":\")}`;\n return (\n result\n // Missing a protocol\n .replace(/(<img .*src=)\"(\\/\\/.*)\"/gm, `$1\"${url.protocol}$2\"`)\n .replace(/(<a .*href=)\"(\\/\\/.*)\"/gm, `$1\"${url.protocol}$2\"`)\n\n // Missing a hostname\n .replace(/(<img .*src=)\"(\\/.*)\"/gm, `$1\"${base}$2\"`)\n .replace(/(<a .*href=)\"(\\/.*)\"/gm, `$1\"${base}$2\"`)\n );\n });\n\n const service = new Turndown();\n service.use(turndownPlugin.gfm);\n return service\n .remove((node) => runOptions.extraction?.fields?.markdown?.filter?.(node) === false)\n .turndown(html);\n },\n images: (page) => page.images(),\n intro: (page) => page.intro(),\n infobox: (page) => page.infobox(),\n links: (page) => page.links(),\n coordinates: (page) => page.coordinates(),\n langLinks: (page) => page.langLinks(),\n references: (page) => page.references(),\n related: (page) => page.related(),\n summary: (page) => page.summary(),\n tables: (page) => page.tables(),\n };\n }\n\n @Cache({\n enumerable: false,\n })\n protected get _defaultRunOptions(): WikipediaToolRunOptions {\n const unwrapTags = new Set([\"a\", \"small\", \"sup\"]);\n const unwrapTagsSelector = Array.from(unwrapTags.values()).join(\",\");\n\n const ignoredTags = new Set([\n \"img\",\n \"link\",\n \"style\",\n \"abbr\",\n \"cite\",\n \"input\",\n \"sup\",\n \"bdi\",\n \"q\",\n \"figure\",\n \"audio\",\n \"track\",\n \"figcaption\",\n ]);\n const ignoredClasses = new Set([\n \"toc\",\n \"reflist\",\n \"mw-references-wrap\",\n \"box-More_footnotes_needed\",\n \"navbox\",\n \"navbox-styles\",\n \"mw-editsection\",\n \"sistersitebox\",\n \"navbox-inner\",\n \"refbegin\",\n \"notpageimage\",\n \"mw-file-element\",\n \"box-Unreferenced_section\",\n \"navigation-not-searchable\",\n \"noexcerpt\",\n \"infobox-image\",\n \"mw-tmh-player\",\n \"printfooter\",\n \"ambox\",\n \"infobox\",\n ]);\n const ignoredRoles = new Set([\"navigation\"]);\n\n const ignoredSelector = [\n ...ignoredTags.values(),\n Array.from(ignoredClasses.values()).map((cls) => `.${cls}`),\n Array.from(ignoredRoles.values()).map((role) => `[role=\"${role}\"]`),\n \"table>caption\",\n ].join(\",\");\n\n return {\n extraction: {\n fields: {\n markdown: {\n transform: (output: string) => output.replace(/([^\\\\])(\\$)/g, `$1\\\\$2`),\n filter: (node) => {\n const tagName = node.tagName.toLowerCase();\n if (ignoredTags.has(tagName) || ignoredRoles.has(node.role ?? \"\")) {\n return false;\n }\n\n for (const cls of node.className.trim().split(\" \").filter(Boolean)) {\n if (ignoredClasses.has(cls)) {\n return false;\n }\n }\n\n for (const table of Array.from(node.querySelectorAll(\"table tr>th\"))) {\n let colspan = parseInt(table.getAttribute(\"colspan\") || \"1\");\n while (colspan > 1) {\n table.insertAdjacentHTML(\"afterend\", `<th>&nbsp;</th>`);\n colspan--;\n }\n table.removeAttribute(\"colspan\");\n }\n\n const ignoredTargets = Array.from(\n ignoredSelector ? node.querySelectorAll(ignoredSelector) : [],\n );\n for (const childNode of ignoredTargets) {\n childNode.remove();\n }\n\n const unwrapTargets = Array.from(\n unwrapTagsSelector ? node.querySelectorAll(unwrapTagsSelector) : [],\n ).reverse();\n if (unwrapTags.has(tagName)) {\n unwrapTargets.push(node);\n }\n for (const childNode of unwrapTargets) {\n childNode.outerHTML = childNode.innerHTML;\n }\n\n return true;\n },\n },\n },\n },\n filters: {\n minPageNameSimilarity: 0.5,\n excludeOthersOnExactMatch: true,\n },\n search: {\n limit: 3,\n suggestion: true,\n },\n output: {\n maxSerializedLength: 25_000,\n maxDescriptionLength: 250,\n },\n };\n }\n\n protected _createRunOptions(overrides?: WikipediaToolRunOptions): WikipediaToolRunOptions {\n const baseKeys: ArrayKeys<Common<WikipediaToolRunOptions, WikipediaToolOptions>> = [\n \"filters\",\n \"search\",\n \"extraction\",\n \"retryOptions\",\n \"output\",\n ];\n\n return R.pipe(\n { ...this._defaultRunOptions },\n R.mergeDeep(R.pick(this.options ?? {}, baseKeys)),\n R.mergeDeep({ ...overrides }),\n );\n }\n\n protected async _run(\n { query: input }: ToolInput<WikipediaTool>,\n _options?: WikipediaToolRunOptions,\n ): Promise<WikipediaToolOutput> {\n const runOptions = this._createRunOptions(_options);\n\n const { results: searchRawResults, suggestion }: SearchResponse = await wiki.default.search(\n input,\n {\n suggestion: Boolean(_options?.search?.suggestion),\n ...runOptions.search,\n },\n );\n\n if (searchRawResults.length === 0 && suggestion && runOptions.search?.suggestion) {\n return await this._run({ query: suggestion }, _options);\n }\n\n const bestCandidates = this.extractBestCandidates(\n input,\n searchRawResults,\n runOptions?.filters ?? {},\n );\n\n const results = await Promise.all(\n bestCandidates.map(async ({ pageId }) => {\n // @ts-expect-error wrong library's typing, passing a string would lead to a classic text search instead of a concrete page retrieval\n const page = await wiki.default.page(pageId, {\n redirect: true,\n preload: false,\n fields: keys(runOptions.extraction?.fields ?? {}).filter((key) => key !== \"markdown\"),\n });\n\n return asyncProperties({\n title: page.title,\n description: ((): Promise<string> => {\n const length = runOptions?.output?.maxDescriptionLength ?? 0;\n return length <= 0\n ? Promise.resolve(\"\")\n : page.content().then((content) => content.substring(0, length));\n })(),\n url: page.fullurl,\n fields: asyncProperties(\n mapValues(runOptions?.extraction?.fields ?? {}, (value, key) =>\n this._mappers[key](page, runOptions)\n .then((response) => (value.transform ? value.transform(response) : response))\n .catch(() => undefined),\n ),\n ),\n });\n }),\n );\n return new WikipediaToolOutput(results, runOptions.output?.maxSerializedLength ?? Infinity);\n }\n\n protected extractBestCandidates(\n query: string,\n candidates: SearchResponse[\"results\"],\n options: FilterOptions,\n ) {\n const normalize = (text: string) =>\n text\n .normalize(\"NFKD\")\n .replace(/[^\\w| ]/g, \"\") // remove diacritics and special characters (except whitespace)\n .replace(/\\s\\s+/g, \" \") // collapse multiple whitespaces into one\n .trim();\n\n const bestCandidates = stringComparison.jaccardIndex\n .sortMatch(\n normalize(query),\n candidates.map((candidate) => normalize(candidate.title)),\n )\n .map((result) => ({\n pageId: candidates[result.index].pageid,\n score: result.rating,\n }))\n .filter((result) => result.score >= (options.minPageNameSimilarity ?? 0))\n .sort((a, b) => b.score - a.score);\n\n if (bestCandidates.at(0)?.score === 1 && options.excludeOthersOnExactMatch) {\n bestCandidates.length = 1;\n }\n\n return bestCandidates;\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n config: this.config,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n }\n}\n"]}
@@ -5,7 +5,7 @@ import { SearchToolOptions, SearchToolRunOptions, SearchToolResult, SearchToolOu
5
5
  import { z } from 'zod';
6
6
  import { Tool, ToolEmitter, ToolInput } from '../base.cjs';
7
7
  import { pageResult } from 'wikipedia/dist/resultTypes.js';
8
- import { E as Emitter } from '../../emitter-D5Mu0EEH.cjs';
8
+ import { E as Emitter } from '../../emitter-DWEsd-ud.cjs';
9
9
  import '../../internals/serializable.cjs';
10
10
  import '../../internals/types.cjs';
11
11
  import '../../internals/helpers/guards.cjs';
@@ -5,7 +5,7 @@ import { SearchToolOptions, SearchToolRunOptions, SearchToolResult, SearchToolOu
5
5
  import { z } from 'zod';
6
6
  import { Tool, ToolEmitter, ToolInput } from '../base.js';
7
7
  import { pageResult } from 'wikipedia/dist/resultTypes.js';
8
- import { E as Emitter } from '../../emitter-C3dO-s2P.js';
8
+ import { E as Emitter } from '../../emitter-C9nwGLt6.js';
9
9
  import '../../internals/serializable.js';
10
10
  import '../../internals/types.js';
11
11
  import '../../internals/helpers/guards.js';
@@ -66,9 +66,16 @@ class WikipediaTool extends Tool {
66
66
  __name(this, "WikipediaTool");
67
67
  }
68
68
  config;
69
- name;
70
- description;
71
- emitter;
69
+ name = "Wikipedia";
70
+ description = "Search factual and historical information, including biography, history, politics, geography, society, culture, science, technology, people, animal species, mathematics, and other subjects.";
71
+ emitter = Emitter.root.child({
72
+ namespace: [
73
+ "tool",
74
+ "search",
75
+ "wikipedia"
76
+ ],
77
+ creator: this
78
+ });
72
79
  inputSchema() {
73
80
  return z.object({
74
81
  query: z.string({
@@ -77,14 +84,7 @@ class WikipediaTool extends Tool {
77
84
  });
78
85
  }
79
86
  constructor(config = {}) {
80
- super(config), this.config = config, this.name = "Wikipedia", this.description = "Search factual and historical information, including biography, history, politics, geography, society, culture, science, technology, people, animal species, mathematics, and other subjects.", this.emitter = Emitter.root.child({
81
- namespace: [
82
- "tool",
83
- "search",
84
- "wikipedia"
85
- ],
86
- creator: this
87
- });
87
+ super(config), this.config = config;
88
88
  }
89
89
  static {
90
90
  this.register();