beeai-framework 0.1.16 → 0.1.18

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 (663) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs +296 -0
  2. package/dist/adapters/a2a/agents/agent.cjs.map +1 -0
  3. package/dist/adapters/a2a/agents/agent.d.cts +55 -0
  4. package/dist/adapters/a2a/agents/agent.d.ts +55 -0
  5. package/dist/adapters/a2a/agents/agent.js +294 -0
  6. package/dist/adapters/a2a/agents/agent.js.map +1 -0
  7. package/dist/adapters/a2a/agents/events.cjs +4 -0
  8. package/dist/adapters/a2a/agents/events.cjs.map +1 -0
  9. package/dist/adapters/a2a/agents/events.d.cts +23 -0
  10. package/dist/adapters/a2a/agents/events.d.ts +23 -0
  11. package/dist/adapters/a2a/agents/events.js +3 -0
  12. package/dist/adapters/a2a/agents/events.js.map +1 -0
  13. package/dist/adapters/a2a/agents/types.cjs +4 -0
  14. package/dist/adapters/a2a/agents/types.cjs.map +1 -0
  15. package/dist/adapters/a2a/agents/types.d.cts +45 -0
  16. package/dist/adapters/a2a/agents/types.d.ts +45 -0
  17. package/dist/adapters/a2a/agents/types.js +3 -0
  18. package/dist/adapters/a2a/agents/types.js.map +1 -0
  19. package/dist/adapters/a2a/agents/utils.cjs +41 -0
  20. package/dist/adapters/a2a/agents/utils.cjs.map +1 -0
  21. package/dist/adapters/a2a/agents/utils.d.cts +15 -0
  22. package/dist/adapters/a2a/agents/utils.d.ts +15 -0
  23. package/dist/adapters/a2a/agents/utils.js +39 -0
  24. package/dist/adapters/a2a/agents/utils.js.map +1 -0
  25. package/dist/adapters/a2a/serve/agent_executor.cjs +233 -0
  26. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -0
  27. package/dist/adapters/a2a/serve/agent_executor.d.cts +55 -0
  28. package/dist/adapters/a2a/serve/agent_executor.d.ts +55 -0
  29. package/dist/adapters/a2a/serve/agent_executor.js +229 -0
  30. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -0
  31. package/dist/adapters/a2a/serve/server.cjs +112 -0
  32. package/dist/adapters/a2a/serve/server.cjs.map +1 -0
  33. package/dist/adapters/a2a/serve/server.d.cts +56 -0
  34. package/dist/adapters/a2a/serve/server.d.ts +56 -0
  35. package/dist/adapters/a2a/serve/server.js +105 -0
  36. package/dist/adapters/a2a/serve/server.js.map +1 -0
  37. package/dist/adapters/acp/agents/agent.cjs.map +1 -1
  38. package/dist/adapters/acp/agents/agent.d.cts +3 -14
  39. package/dist/adapters/acp/agents/agent.d.ts +3 -14
  40. package/dist/adapters/acp/agents/agent.js.map +1 -1
  41. package/dist/adapters/acp/agents/events.d.cts +2 -13
  42. package/dist/adapters/acp/agents/events.d.ts +2 -13
  43. package/dist/adapters/acp/agents/types.d.cts +1 -12
  44. package/dist/adapters/acp/agents/types.d.ts +1 -12
  45. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  46. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +3 -14
  47. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +3 -14
  48. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  49. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  50. package/dist/adapters/amazon-bedrock/backend/client.d.cts +1 -12
  51. package/dist/adapters/amazon-bedrock/backend/client.d.ts +1 -12
  52. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  53. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  54. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +3 -14
  55. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +3 -14
  56. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  57. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  58. package/dist/adapters/anthropic/backend/chat.d.cts +3 -14
  59. package/dist/adapters/anthropic/backend/chat.d.ts +3 -14
  60. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  61. package/dist/adapters/anthropic/backend/client.cjs +1 -4
  62. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  63. package/dist/adapters/anthropic/backend/client.d.cts +1 -12
  64. package/dist/adapters/anthropic/backend/client.d.ts +1 -12
  65. package/dist/adapters/anthropic/backend/client.js +3 -6
  66. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  67. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  68. package/dist/adapters/anthropic/backend/embedding.d.cts +3 -14
  69. package/dist/adapters/anthropic/backend/embedding.d.ts +3 -14
  70. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  71. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/azure-openai/backend/chat.d.cts +3 -14
  73. package/dist/adapters/azure-openai/backend/chat.d.ts +3 -14
  74. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  75. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  76. package/dist/adapters/azure-openai/backend/client.d.cts +1 -12
  77. package/dist/adapters/azure-openai/backend/client.d.ts +1 -12
  78. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  79. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  80. package/dist/adapters/azure-openai/backend/embedding.d.cts +3 -14
  81. package/dist/adapters/azure-openai/backend/embedding.d.ts +3 -14
  82. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  83. package/dist/adapters/beeai_platform/agents/agent.cjs.map +1 -1
  84. package/dist/adapters/beeai_platform/agents/agent.d.cts +2 -2
  85. package/dist/adapters/beeai_platform/agents/agent.d.ts +2 -2
  86. package/dist/adapters/beeai_platform/agents/agent.js.map +1 -1
  87. package/dist/adapters/beeai_platform/agents/events.d.cts +2 -13
  88. package/dist/adapters/beeai_platform/agents/events.d.ts +2 -13
  89. package/dist/adapters/beeai_platform/agents/types.d.cts +1 -12
  90. package/dist/adapters/beeai_platform/agents/types.d.ts +1 -12
  91. package/dist/adapters/dummy/backend/chat.cjs +9 -9
  92. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  93. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  94. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  95. package/dist/adapters/dummy/backend/chat.js +9 -9
  96. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  97. package/dist/adapters/dummy/backend/embedding.cjs +9 -9
  98. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  99. package/dist/adapters/dummy/backend/embedding.d.cts +3 -14
  100. package/dist/adapters/dummy/backend/embedding.d.ts +3 -14
  101. package/dist/adapters/dummy/backend/embedding.js +9 -9
  102. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  103. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  104. package/dist/adapters/google-vertex/backend/chat.d.cts +3 -14
  105. package/dist/adapters/google-vertex/backend/chat.d.ts +3 -14
  106. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  107. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  108. package/dist/adapters/google-vertex/backend/client.d.cts +1 -12
  109. package/dist/adapters/google-vertex/backend/client.d.ts +1 -12
  110. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  111. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  112. package/dist/adapters/google-vertex/backend/embedding.d.cts +3 -14
  113. package/dist/adapters/google-vertex/backend/embedding.d.ts +3 -14
  114. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  115. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  116. package/dist/adapters/groq/backend/chat.d.cts +3 -14
  117. package/dist/adapters/groq/backend/chat.d.ts +3 -14
  118. package/dist/adapters/groq/backend/chat.js.map +1 -1
  119. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  120. package/dist/adapters/groq/backend/client.d.cts +1 -12
  121. package/dist/adapters/groq/backend/client.d.ts +1 -12
  122. package/dist/adapters/groq/backend/client.js.map +1 -1
  123. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  124. package/dist/adapters/groq/backend/embedding.d.cts +3 -14
  125. package/dist/adapters/groq/backend/embedding.d.ts +3 -14
  126. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  127. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  128. package/dist/adapters/langchain/backend/chat.d.cts +2 -2
  129. package/dist/adapters/langchain/backend/chat.d.ts +2 -2
  130. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  131. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  132. package/dist/adapters/langchain/backend/embedding.d.cts +3 -14
  133. package/dist/adapters/langchain/backend/embedding.d.ts +3 -14
  134. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  135. package/dist/adapters/langchain/tools.cjs.map +1 -1
  136. package/dist/adapters/langchain/tools.d.cts +1 -1
  137. package/dist/adapters/langchain/tools.d.ts +1 -1
  138. package/dist/adapters/langchain/tools.js.map +1 -1
  139. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  140. package/dist/adapters/mcp/serve/http_server.d.cts +1 -12
  141. package/dist/adapters/mcp/serve/http_server.d.ts +1 -12
  142. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  143. package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
  144. package/dist/adapters/mcp/serve/in_memory_store.d.cts +1 -12
  145. package/dist/adapters/mcp/serve/in_memory_store.d.ts +1 -12
  146. package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
  147. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  148. package/dist/adapters/mcp/serve/server.d.cts +3 -14
  149. package/dist/adapters/mcp/serve/server.d.ts +3 -14
  150. package/dist/adapters/mcp/serve/server.js.map +1 -1
  151. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  152. package/dist/adapters/ollama/backend/chat.d.cts +3 -14
  153. package/dist/adapters/ollama/backend/chat.d.ts +3 -14
  154. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  155. package/dist/adapters/ollama/backend/client.cjs +12 -3
  156. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  157. package/dist/adapters/ollama/backend/client.d.cts +4 -13
  158. package/dist/adapters/ollama/backend/client.d.ts +4 -13
  159. package/dist/adapters/ollama/backend/client.js +13 -4
  160. package/dist/adapters/ollama/backend/client.js.map +1 -1
  161. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  162. package/dist/adapters/ollama/backend/embedding.d.cts +3 -14
  163. package/dist/adapters/ollama/backend/embedding.d.ts +3 -14
  164. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  165. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  166. package/dist/adapters/openai/backend/chat.d.cts +3 -14
  167. package/dist/adapters/openai/backend/chat.d.ts +3 -14
  168. package/dist/adapters/openai/backend/chat.js.map +1 -1
  169. package/dist/adapters/openai/backend/client.cjs +1 -4
  170. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  171. package/dist/adapters/openai/backend/client.d.cts +1 -12
  172. package/dist/adapters/openai/backend/client.d.ts +1 -12
  173. package/dist/adapters/openai/backend/client.js +3 -6
  174. package/dist/adapters/openai/backend/client.js.map +1 -1
  175. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  176. package/dist/adapters/openai/backend/embedding.d.cts +3 -14
  177. package/dist/adapters/openai/backend/embedding.d.ts +3 -14
  178. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  179. package/dist/adapters/vercel/backend/chat.cjs +2 -2
  180. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  181. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  182. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  183. package/dist/adapters/vercel/backend/chat.js +2 -2
  184. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  185. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  186. package/dist/adapters/vercel/backend/embedding.d.cts +3 -14
  187. package/dist/adapters/vercel/backend/embedding.d.ts +3 -14
  188. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  189. package/dist/adapters/vercel/backend/utils.cjs +11 -2
  190. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  191. package/dist/adapters/vercel/backend/utils.d.cts +3 -13
  192. package/dist/adapters/vercel/backend/utils.d.ts +3 -13
  193. package/dist/adapters/vercel/backend/utils.js +11 -3
  194. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  195. package/dist/adapters/watsonx/backend/chat.cjs +13 -13
  196. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  197. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  198. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  199. package/dist/adapters/watsonx/backend/chat.js +13 -13
  200. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  201. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  202. package/dist/adapters/watsonx/backend/client.d.cts +1 -12
  203. package/dist/adapters/watsonx/backend/client.d.ts +1 -12
  204. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  205. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  206. package/dist/adapters/watsonx/backend/embedding.d.cts +3 -14
  207. package/dist/adapters/watsonx/backend/embedding.d.ts +3 -14
  208. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  209. package/dist/adapters/xai/backend/chat.cjs +24 -0
  210. package/dist/adapters/xai/backend/chat.cjs.map +1 -0
  211. package/dist/adapters/xai/backend/chat.d.cts +39 -0
  212. package/dist/adapters/xai/backend/chat.d.ts +39 -0
  213. package/dist/adapters/xai/backend/chat.js +22 -0
  214. package/dist/adapters/xai/backend/chat.js.map +1 -0
  215. package/dist/adapters/xai/backend/client.cjs +26 -0
  216. package/dist/adapters/xai/backend/client.cjs.map +1 -0
  217. package/dist/adapters/xai/backend/client.d.cts +17 -0
  218. package/dist/adapters/xai/backend/client.d.ts +17 -0
  219. package/dist/adapters/xai/backend/client.js +24 -0
  220. package/dist/adapters/xai/backend/client.js.map +1 -0
  221. package/dist/{agent-Ca5UE2P1.d.cts → agent-Bhm6xSfI.d.cts} +3 -3
  222. package/dist/{agent-CgsoqVL5.d.ts → agent-CmCmnEDX.d.ts} +3 -3
  223. package/dist/agents/base.cjs.map +1 -1
  224. package/dist/agents/base.d.cts +2 -2
  225. package/dist/agents/base.d.ts +2 -2
  226. package/dist/agents/base.js.map +1 -1
  227. package/dist/agents/experimental/replan/agent.cjs +8 -8
  228. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  229. package/dist/agents/experimental/replan/agent.d.cts +4 -15
  230. package/dist/agents/experimental/replan/agent.d.ts +4 -15
  231. package/dist/agents/experimental/replan/agent.js +8 -8
  232. package/dist/agents/experimental/replan/agent.js.map +1 -1
  233. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  234. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  235. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  236. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  237. package/dist/agents/experimental/streamlit/agent.cjs +9 -9
  238. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  239. package/dist/agents/experimental/streamlit/agent.d.cts +4 -15
  240. package/dist/agents/experimental/streamlit/agent.d.ts +4 -15
  241. package/dist/agents/experimental/streamlit/agent.js +9 -9
  242. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  243. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  244. package/dist/agents/experimental/streamlit/prompts.d.cts +1 -12
  245. package/dist/agents/experimental/streamlit/prompts.d.ts +1 -12
  246. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  247. package/dist/agents/react/agent.cjs +8 -8
  248. package/dist/agents/react/agent.cjs.map +1 -1
  249. package/dist/agents/react/agent.d.cts +4 -4
  250. package/dist/agents/react/agent.d.ts +4 -4
  251. package/dist/agents/react/agent.js +8 -8
  252. package/dist/agents/react/agent.js.map +1 -1
  253. package/dist/agents/react/prompts.cjs.map +1 -1
  254. package/dist/agents/react/prompts.d.cts +1 -12
  255. package/dist/agents/react/prompts.d.ts +1 -12
  256. package/dist/agents/react/prompts.js.map +1 -1
  257. package/dist/agents/react/runners/base.cjs +2 -2
  258. package/dist/agents/react/runners/base.cjs.map +1 -1
  259. package/dist/agents/react/runners/base.d.cts +4 -4
  260. package/dist/agents/react/runners/base.d.ts +4 -4
  261. package/dist/agents/react/runners/base.js +2 -2
  262. package/dist/agents/react/runners/base.js.map +1 -1
  263. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  264. package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -12
  265. package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -12
  266. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  267. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  268. package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
  269. package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
  270. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  271. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  272. package/dist/agents/react/runners/default/runner.d.cts +4 -4
  273. package/dist/agents/react/runners/default/runner.d.ts +4 -4
  274. package/dist/agents/react/runners/default/runner.js.map +1 -1
  275. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  276. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  277. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  278. package/dist/agents/react/runners/granite/prompts.d.cts +1 -12
  279. package/dist/agents/react/runners/granite/prompts.d.ts +1 -12
  280. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  281. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  282. package/dist/agents/react/runners/granite/runner.d.cts +4 -4
  283. package/dist/agents/react/runners/granite/runner.d.ts +4 -4
  284. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  285. package/dist/agents/react/types.d.cts +3 -14
  286. package/dist/agents/react/types.d.ts +3 -14
  287. package/dist/agents/toolCalling/agent.cjs +8 -8
  288. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  289. package/dist/agents/toolCalling/agent.d.cts +4 -15
  290. package/dist/agents/toolCalling/agent.d.ts +4 -15
  291. package/dist/agents/toolCalling/agent.js +8 -8
  292. package/dist/agents/toolCalling/agent.js.map +1 -1
  293. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  294. package/dist/agents/toolCalling/prompts.d.cts +1 -12
  295. package/dist/agents/toolCalling/prompts.d.ts +1 -12
  296. package/dist/agents/toolCalling/prompts.js.map +1 -1
  297. package/dist/agents/toolCalling/types.d.cts +2 -13
  298. package/dist/agents/toolCalling/types.d.ts +2 -13
  299. package/dist/agents/types.d.cts +2 -2
  300. package/dist/agents/types.d.ts +2 -2
  301. package/dist/backend/backend.cjs.map +1 -1
  302. package/dist/backend/backend.d.cts +3 -14
  303. package/dist/backend/backend.d.ts +3 -14
  304. package/dist/backend/backend.js.map +1 -1
  305. package/dist/backend/chat.cjs.map +1 -1
  306. package/dist/backend/chat.d.cts +2 -2
  307. package/dist/backend/chat.d.ts +2 -2
  308. package/dist/backend/chat.js.map +1 -1
  309. package/dist/backend/client.cjs.map +1 -1
  310. package/dist/backend/client.d.cts +1 -12
  311. package/dist/backend/client.d.ts +1 -12
  312. package/dist/backend/client.js.map +1 -1
  313. package/dist/backend/constants.cjs +8 -0
  314. package/dist/backend/constants.cjs.map +1 -1
  315. package/dist/backend/constants.d.cts +6 -12
  316. package/dist/backend/constants.d.ts +6 -12
  317. package/dist/backend/constants.js +8 -0
  318. package/dist/backend/constants.js.map +1 -1
  319. package/dist/backend/core.d.cts +2 -2
  320. package/dist/backend/core.d.ts +2 -2
  321. package/dist/backend/embedding.cjs.map +1 -1
  322. package/dist/backend/embedding.d.cts +2 -2
  323. package/dist/backend/embedding.d.ts +2 -2
  324. package/dist/backend/embedding.js.map +1 -1
  325. package/dist/backend/errors.cjs.map +1 -1
  326. package/dist/backend/errors.d.cts +1 -12
  327. package/dist/backend/errors.d.ts +1 -12
  328. package/dist/backend/errors.js.map +1 -1
  329. package/dist/backend/message.cjs.map +1 -1
  330. package/dist/backend/message.d.cts +2 -13
  331. package/dist/backend/message.d.ts +2 -13
  332. package/dist/backend/message.js.map +1 -1
  333. package/dist/backend/utils.cjs.map +1 -1
  334. package/dist/backend/utils.d.cts +2 -2
  335. package/dist/backend/utils.d.ts +2 -2
  336. package/dist/backend/utils.js.map +1 -1
  337. package/dist/{base-szR2Izbt.d.cts → base-BP7v-NSL.d.cts} +3 -14
  338. package/dist/{base-BOCDDBvG.d.ts → base-BsY2baWy.d.ts} +3 -14
  339. package/dist/cache/base.cjs.map +1 -1
  340. package/dist/cache/base.d.cts +1 -12
  341. package/dist/cache/base.d.ts +1 -12
  342. package/dist/cache/base.js.map +1 -1
  343. package/dist/cache/decoratorCache.cjs +2 -2
  344. package/dist/cache/decoratorCache.cjs.map +1 -1
  345. package/dist/cache/decoratorCache.d.cts +1 -12
  346. package/dist/cache/decoratorCache.d.ts +1 -12
  347. package/dist/cache/decoratorCache.js +2 -2
  348. package/dist/cache/decoratorCache.js.map +1 -1
  349. package/dist/cache/fileCache.cjs.map +1 -1
  350. package/dist/cache/fileCache.d.cts +1 -12
  351. package/dist/cache/fileCache.d.ts +1 -12
  352. package/dist/cache/fileCache.js.map +1 -1
  353. package/dist/cache/nullCache.cjs.map +1 -1
  354. package/dist/cache/nullCache.d.cts +1 -12
  355. package/dist/cache/nullCache.d.ts +1 -12
  356. package/dist/cache/nullCache.js.map +1 -1
  357. package/dist/cache/slidingCache.cjs.map +1 -1
  358. package/dist/cache/slidingCache.d.cts +1 -12
  359. package/dist/cache/slidingCache.d.ts +1 -12
  360. package/dist/cache/slidingCache.js.map +1 -1
  361. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  362. package/dist/cache/unconstrainedCache.d.cts +1 -12
  363. package/dist/cache/unconstrainedCache.d.ts +1 -12
  364. package/dist/cache/unconstrainedCache.js.map +1 -1
  365. package/dist/{chat-DvMzAHj6.d.cts → chat-CR4yfOR9.d.cts} +3 -14
  366. package/dist/{chat-BdN8hGWn.d.ts → chat-W9j8T6UU.d.ts} +3 -14
  367. package/dist/context.cjs +3 -4
  368. package/dist/context.cjs.map +1 -1
  369. package/dist/context.d.cts +2 -13
  370. package/dist/context.d.ts +2 -13
  371. package/dist/context.js +3 -4
  372. package/dist/context.js.map +1 -1
  373. package/dist/emitter/emitter.cjs.map +1 -1
  374. package/dist/emitter/emitter.d.cts +1 -1
  375. package/dist/emitter/emitter.d.ts +1 -1
  376. package/dist/emitter/emitter.js.map +1 -1
  377. package/dist/emitter/errors.cjs.map +1 -1
  378. package/dist/emitter/errors.d.cts +1 -12
  379. package/dist/emitter/errors.d.ts +1 -12
  380. package/dist/emitter/errors.js.map +1 -1
  381. package/dist/emitter/types.d.cts +1 -1
  382. package/dist/emitter/types.d.ts +1 -1
  383. package/dist/emitter/utils.cjs.map +1 -1
  384. package/dist/emitter/utils.d.cts +1 -12
  385. package/dist/emitter/utils.d.ts +1 -12
  386. package/dist/emitter/utils.js.map +1 -1
  387. package/dist/{emitter-C3dO-s2P.d.ts → emitter-C9nwGLt6.d.ts} +3 -25
  388. package/dist/{emitter-D5Mu0EEH.d.cts → emitter-DWEsd-ud.d.cts} +3 -25
  389. package/dist/errors.cjs.map +1 -1
  390. package/dist/errors.d.cts +1 -12
  391. package/dist/errors.d.ts +1 -12
  392. package/dist/errors.js.map +1 -1
  393. package/dist/index.d.cts +4 -4
  394. package/dist/index.d.ts +4 -4
  395. package/dist/internals/env.cjs.map +1 -1
  396. package/dist/internals/env.d.cts +1 -12
  397. package/dist/internals/env.d.ts +1 -12
  398. package/dist/internals/env.js.map +1 -1
  399. package/dist/internals/fetcher.cjs +8 -8
  400. package/dist/internals/fetcher.cjs.map +1 -1
  401. package/dist/internals/fetcher.d.cts +2 -13
  402. package/dist/internals/fetcher.d.ts +2 -13
  403. package/dist/internals/fetcher.js +8 -8
  404. package/dist/internals/fetcher.js.map +1 -1
  405. package/dist/internals/helpers/array.cjs.map +1 -1
  406. package/dist/internals/helpers/array.d.cts +1 -12
  407. package/dist/internals/helpers/array.d.ts +1 -12
  408. package/dist/internals/helpers/array.js.map +1 -1
  409. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  410. package/dist/internals/helpers/cancellation.d.cts +1 -12
  411. package/dist/internals/helpers/cancellation.d.ts +1 -12
  412. package/dist/internals/helpers/cancellation.js.map +1 -1
  413. package/dist/internals/helpers/counter.cjs.map +1 -1
  414. package/dist/internals/helpers/counter.d.cts +1 -12
  415. package/dist/internals/helpers/counter.d.ts +1 -12
  416. package/dist/internals/helpers/counter.js.map +1 -1
  417. package/dist/internals/helpers/general.cjs.map +1 -1
  418. package/dist/internals/helpers/general.d.cts +1 -12
  419. package/dist/internals/helpers/general.d.ts +1 -12
  420. package/dist/internals/helpers/general.js.map +1 -1
  421. package/dist/internals/helpers/guards.cjs.map +1 -1
  422. package/dist/internals/helpers/guards.d.cts +1 -12
  423. package/dist/internals/helpers/guards.d.ts +1 -12
  424. package/dist/internals/helpers/guards.js.map +1 -1
  425. package/dist/internals/helpers/hash.cjs.map +1 -1
  426. package/dist/internals/helpers/hash.d.cts +1 -12
  427. package/dist/internals/helpers/hash.d.ts +1 -12
  428. package/dist/internals/helpers/hash.js.map +1 -1
  429. package/dist/internals/helpers/map.cjs.map +1 -1
  430. package/dist/internals/helpers/map.d.cts +1 -12
  431. package/dist/internals/helpers/map.d.ts +1 -12
  432. package/dist/internals/helpers/map.js.map +1 -1
  433. package/dist/internals/helpers/math.cjs.map +1 -1
  434. package/dist/internals/helpers/math.d.cts +1 -12
  435. package/dist/internals/helpers/math.d.ts +1 -12
  436. package/dist/internals/helpers/math.js.map +1 -1
  437. package/dist/internals/helpers/number.cjs.map +1 -1
  438. package/dist/internals/helpers/number.d.cts +1 -12
  439. package/dist/internals/helpers/number.d.ts +1 -12
  440. package/dist/internals/helpers/number.js.map +1 -1
  441. package/dist/internals/helpers/object.cjs.map +1 -1
  442. package/dist/internals/helpers/object.d.cts +1 -12
  443. package/dist/internals/helpers/object.d.ts +1 -12
  444. package/dist/internals/helpers/object.js.map +1 -1
  445. package/dist/internals/helpers/paginate.cjs.map +1 -1
  446. package/dist/internals/helpers/paginate.d.cts +1 -12
  447. package/dist/internals/helpers/paginate.d.ts +1 -12
  448. package/dist/internals/helpers/paginate.js.map +1 -1
  449. package/dist/internals/helpers/promise.cjs +1 -3
  450. package/dist/internals/helpers/promise.cjs.map +1 -1
  451. package/dist/internals/helpers/promise.d.cts +1 -12
  452. package/dist/internals/helpers/promise.d.ts +1 -12
  453. package/dist/internals/helpers/promise.js +1 -3
  454. package/dist/internals/helpers/promise.js.map +1 -1
  455. package/dist/internals/helpers/prototype.cjs.map +1 -1
  456. package/dist/internals/helpers/prototype.d.cts +1 -12
  457. package/dist/internals/helpers/prototype.d.ts +1 -12
  458. package/dist/internals/helpers/prototype.js.map +1 -1
  459. package/dist/internals/helpers/retry.cjs.map +1 -1
  460. package/dist/internals/helpers/retry.d.cts +1 -12
  461. package/dist/internals/helpers/retry.d.ts +1 -12
  462. package/dist/internals/helpers/retry.js.map +1 -1
  463. package/dist/internals/helpers/retryable.cjs.map +1 -1
  464. package/dist/internals/helpers/retryable.d.cts +1 -12
  465. package/dist/internals/helpers/retryable.d.ts +1 -12
  466. package/dist/internals/helpers/retryable.js.map +1 -1
  467. package/dist/internals/helpers/schema.cjs.map +1 -1
  468. package/dist/internals/helpers/schema.d.cts +1 -12
  469. package/dist/internals/helpers/schema.d.ts +1 -12
  470. package/dist/internals/helpers/schema.js.map +1 -1
  471. package/dist/internals/helpers/stream.cjs.map +1 -1
  472. package/dist/internals/helpers/stream.d.cts +1 -12
  473. package/dist/internals/helpers/stream.d.ts +1 -12
  474. package/dist/internals/helpers/stream.js.map +1 -1
  475. package/dist/internals/helpers/string.cjs.map +1 -1
  476. package/dist/internals/helpers/string.d.cts +1 -12
  477. package/dist/internals/helpers/string.d.ts +1 -12
  478. package/dist/internals/helpers/string.js.map +1 -1
  479. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  480. package/dist/internals/helpers/weakRef.d.cts +1 -12
  481. package/dist/internals/helpers/weakRef.d.ts +1 -12
  482. package/dist/internals/helpers/weakRef.js.map +1 -1
  483. package/dist/internals/serializable.cjs.map +1 -1
  484. package/dist/internals/serializable.d.cts +1 -12
  485. package/dist/internals/serializable.d.ts +1 -12
  486. package/dist/internals/serializable.js.map +1 -1
  487. package/dist/internals/types.cjs.map +1 -1
  488. package/dist/internals/types.d.cts +1 -12
  489. package/dist/internals/types.d.ts +1 -12
  490. package/dist/internals/types.js.map +1 -1
  491. package/dist/logger/logger.cjs.map +1 -1
  492. package/dist/logger/logger.js.map +1 -1
  493. package/dist/logger/pretty.cjs.map +1 -1
  494. package/dist/logger/pretty.js.map +1 -1
  495. package/dist/memory/base.cjs.map +1 -1
  496. package/dist/memory/base.js.map +1 -1
  497. package/dist/memory/slidingMemory.cjs.map +1 -1
  498. package/dist/memory/slidingMemory.js.map +1 -1
  499. package/dist/memory/summarizeMemory.cjs.map +1 -1
  500. package/dist/memory/summarizeMemory.d.cts +2 -2
  501. package/dist/memory/summarizeMemory.d.ts +2 -2
  502. package/dist/memory/summarizeMemory.js.map +1 -1
  503. package/dist/memory/tokenMemory.cjs.map +1 -1
  504. package/dist/memory/tokenMemory.js.map +1 -1
  505. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  506. package/dist/memory/unconstrainedMemory.js.map +1 -1
  507. package/dist/parsers/errors.cjs.map +1 -1
  508. package/dist/parsers/errors.d.cts +1 -12
  509. package/dist/parsers/errors.d.ts +1 -12
  510. package/dist/parsers/errors.js.map +1 -1
  511. package/dist/parsers/field.cjs +2 -2
  512. package/dist/parsers/field.cjs.map +1 -1
  513. package/dist/parsers/field.js +2 -2
  514. package/dist/parsers/field.js.map +1 -1
  515. package/dist/parsers/linePrefix.cjs +15 -15
  516. package/dist/parsers/linePrefix.cjs.map +1 -1
  517. package/dist/parsers/linePrefix.d.cts +2 -13
  518. package/dist/parsers/linePrefix.d.ts +2 -13
  519. package/dist/parsers/linePrefix.js +15 -15
  520. package/dist/parsers/linePrefix.js.map +1 -1
  521. package/dist/serializer/error.cjs.map +1 -1
  522. package/dist/serializer/error.d.cts +1 -12
  523. package/dist/serializer/error.d.ts +1 -12
  524. package/dist/serializer/error.js.map +1 -1
  525. package/dist/serializer/serializer.cjs.map +1 -1
  526. package/dist/serializer/serializer.d.cts +1 -1
  527. package/dist/serializer/serializer.d.ts +1 -1
  528. package/dist/serializer/serializer.js.map +1 -1
  529. package/dist/serializer/utils.cjs +1 -2
  530. package/dist/serializer/utils.cjs.map +1 -1
  531. package/dist/serializer/utils.d.cts +1 -1
  532. package/dist/serializer/utils.d.ts +1 -1
  533. package/dist/serializer/utils.js +1 -2
  534. package/dist/serializer/utils.js.map +1 -1
  535. package/dist/{serializer-Dz4AIM2O.d.cts → serializer-BKn50Vnx.d.cts} +2 -24
  536. package/dist/{serializer-BswFRdT8.d.ts → serializer-CQxucveV.d.ts} +2 -24
  537. package/dist/serve/server.cjs +13 -7
  538. package/dist/serve/server.cjs.map +1 -1
  539. package/dist/serve/server.d.cts +5 -15
  540. package/dist/serve/server.d.ts +5 -15
  541. package/dist/serve/server.js +13 -7
  542. package/dist/serve/server.js.map +1 -1
  543. package/dist/template.cjs.map +1 -1
  544. package/dist/template.d.cts +1 -12
  545. package/dist/template.d.ts +1 -12
  546. package/dist/template.js.map +1 -1
  547. package/dist/tools/arxiv.cjs.map +1 -1
  548. package/dist/tools/arxiv.d.cts +2 -13
  549. package/dist/tools/arxiv.d.ts +2 -13
  550. package/dist/tools/arxiv.js.map +1 -1
  551. package/dist/tools/base.cjs.map +1 -1
  552. package/dist/tools/base.d.cts +1 -1
  553. package/dist/tools/base.d.ts +1 -1
  554. package/dist/tools/base.js.map +1 -1
  555. package/dist/tools/calculator.cjs.map +1 -1
  556. package/dist/tools/calculator.d.cts +2 -13
  557. package/dist/tools/calculator.d.ts +2 -13
  558. package/dist/tools/calculator.js.map +1 -1
  559. package/dist/tools/custom.cjs.map +1 -1
  560. package/dist/tools/custom.d.cts +3 -14
  561. package/dist/tools/custom.d.ts +3 -14
  562. package/dist/tools/custom.js.map +1 -1
  563. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  564. package/dist/tools/database/elasticsearch.d.cts +2 -13
  565. package/dist/tools/database/elasticsearch.d.ts +2 -13
  566. package/dist/tools/database/elasticsearch.js.map +1 -1
  567. package/dist/tools/database/metadata.cjs.map +1 -1
  568. package/dist/tools/database/metadata.d.cts +1 -12
  569. package/dist/tools/database/metadata.d.ts +1 -12
  570. package/dist/tools/database/metadata.js.map +1 -1
  571. package/dist/tools/database/milvus.cjs.map +1 -1
  572. package/dist/tools/database/milvus.d.cts +2 -13
  573. package/dist/tools/database/milvus.d.ts +2 -13
  574. package/dist/tools/database/milvus.js.map +1 -1
  575. package/dist/tools/database/qdrant.cjs.map +1 -1
  576. package/dist/tools/database/qdrant.d.cts +2 -13
  577. package/dist/tools/database/qdrant.d.ts +2 -13
  578. package/dist/tools/database/qdrant.js.map +1 -1
  579. package/dist/tools/database/sql.cjs.map +1 -1
  580. package/dist/tools/database/sql.d.cts +2 -13
  581. package/dist/tools/database/sql.d.ts +2 -13
  582. package/dist/tools/database/sql.js.map +1 -1
  583. package/dist/tools/llm.cjs +3 -3
  584. package/dist/tools/llm.cjs.map +1 -1
  585. package/dist/tools/llm.d.cts +3 -14
  586. package/dist/tools/llm.d.ts +3 -14
  587. package/dist/tools/llm.js +3 -3
  588. package/dist/tools/llm.js.map +1 -1
  589. package/dist/tools/mcp.cjs +2 -1
  590. package/dist/tools/mcp.cjs.map +1 -1
  591. package/dist/tools/mcp.d.cts +2 -13
  592. package/dist/tools/mcp.d.ts +2 -13
  593. package/dist/tools/mcp.js +2 -1
  594. package/dist/tools/mcp.js.map +1 -1
  595. package/dist/tools/openapi.cjs.map +1 -1
  596. package/dist/tools/openapi.d.cts +1 -1
  597. package/dist/tools/openapi.d.ts +1 -1
  598. package/dist/tools/openapi.js.map +1 -1
  599. package/dist/tools/python/output.cjs.map +1 -1
  600. package/dist/tools/python/output.d.cts +2 -13
  601. package/dist/tools/python/output.d.ts +2 -13
  602. package/dist/tools/python/output.js.map +1 -1
  603. package/dist/tools/python/python.cjs.map +1 -1
  604. package/dist/tools/python/python.d.cts +2 -2
  605. package/dist/tools/python/python.d.ts +2 -2
  606. package/dist/tools/python/python.js.map +1 -1
  607. package/dist/tools/python/storage.cjs.map +1 -1
  608. package/dist/tools/python/storage.d.cts +1 -12
  609. package/dist/tools/python/storage.d.ts +1 -12
  610. package/dist/tools/python/storage.js.map +1 -1
  611. package/dist/tools/search/base.cjs.map +1 -1
  612. package/dist/tools/search/base.d.cts +2 -13
  613. package/dist/tools/search/base.d.ts +2 -13
  614. package/dist/tools/search/base.js.map +1 -1
  615. package/dist/tools/search/duckDuckGoSearch.cjs +7 -1
  616. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  617. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -13
  618. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -13
  619. package/dist/tools/search/duckDuckGoSearch.js +7 -1
  620. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  621. package/dist/tools/search/googleSearch.cjs.map +1 -1
  622. package/dist/tools/search/googleSearch.d.cts +1 -1
  623. package/dist/tools/search/googleSearch.d.ts +1 -1
  624. package/dist/tools/search/googleSearch.js.map +1 -1
  625. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  626. package/dist/tools/search/searXNGSearch.d.cts +2 -13
  627. package/dist/tools/search/searXNGSearch.d.ts +2 -13
  628. package/dist/tools/search/searXNGSearch.js.map +1 -1
  629. package/dist/tools/search/wikipedia.cjs +11 -11
  630. package/dist/tools/search/wikipedia.cjs.map +1 -1
  631. package/dist/tools/search/wikipedia.d.cts +1 -1
  632. package/dist/tools/search/wikipedia.d.ts +1 -1
  633. package/dist/tools/search/wikipedia.js +11 -11
  634. package/dist/tools/search/wikipedia.js.map +1 -1
  635. package/dist/tools/similarity.cjs.map +1 -1
  636. package/dist/tools/similarity.d.cts +2 -13
  637. package/dist/tools/similarity.d.ts +2 -13
  638. package/dist/tools/similarity.js.map +1 -1
  639. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  640. package/dist/tools/weather/openMeteo.d.cts +2 -13
  641. package/dist/tools/weather/openMeteo.d.ts +2 -13
  642. package/dist/tools/weather/openMeteo.js.map +1 -1
  643. package/dist/tools/web/webCrawler.cjs.map +1 -1
  644. package/dist/tools/web/webCrawler.d.cts +1 -1
  645. package/dist/tools/web/webCrawler.d.ts +1 -1
  646. package/dist/tools/web/webCrawler.js.map +1 -1
  647. package/dist/version.cjs +1 -1
  648. package/dist/version.cjs.map +1 -1
  649. package/dist/version.d.cts +1 -12
  650. package/dist/version.d.ts +1 -12
  651. package/dist/version.js +1 -1
  652. package/dist/version.js.map +1 -1
  653. package/dist/workflows/agent.cjs.map +1 -1
  654. package/dist/workflows/agent.d.cts +40 -40
  655. package/dist/workflows/agent.d.ts +40 -40
  656. package/dist/workflows/agent.js.map +1 -1
  657. package/dist/workflows/workflow.cjs +3 -3
  658. package/dist/workflows/workflow.cjs.map +1 -1
  659. package/dist/workflows/workflow.d.cts +1 -1
  660. package/dist/workflows/workflow.d.ts +1 -1
  661. package/dist/workflows/workflow.js +3 -3
  662. package/dist/workflows/workflow.js.map +1 -1
  663. package/package.json +42 -73
@@ -1,27 +1,17 @@
1
1
  /**
2
2
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
3
+ * SPDX-License-Identifier: Apache-2.0
15
4
  */
16
- type ServerFactory<TInput, TInternal> = (input: TInput) => Promise<TInternal>;
5
+ type ServerFactory<TInput, TInternal> = (input: TInput, config?: Record<string, any>) => Promise<TInternal>;
17
6
  type FactoryMember<TInput> = abstract new (...args: any[]) => TInput | (new (...args: any[]) => TInput) | ((...args: any[]) => TInput);
18
- declare abstract class Server<TInput extends object = object, TInternal extends object = object, TConfig extends object = object> {
7
+ declare abstract class Server<TInput extends object = object, TInternal extends object = object, TConfig extends object = object, TMetadata extends object = object> {
19
8
  protected config: TConfig;
20
9
  static readonly factories: Map<object, ServerFactory<TInput, TInternal>>;
21
10
  readonly members: TInput[];
11
+ protected readonly metadataByInput: Map<TInput, TMetadata>;
22
12
  constructor(config: TConfig);
23
13
  static registerFactory<TInput2 extends object, TInternal2 extends object>(this: typeof Server<TInput2, TInternal2, any>, ref: FactoryMember<TInput2>, factory: ServerFactory<TInput2, TInternal2>, override?: boolean): void;
24
- register(input: TInput): this;
14
+ register(input: TInput, metadata?: TMetadata): this;
25
15
  registerMany(input: TInput[]): this;
26
16
  deregister(input: TInput): this;
27
17
  protected getFactory(input: TInput): ServerFactory<TInput, TInternal>;
@@ -1,27 +1,17 @@
1
1
  /**
2
2
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
3
+ * SPDX-License-Identifier: Apache-2.0
15
4
  */
16
- type ServerFactory<TInput, TInternal> = (input: TInput) => Promise<TInternal>;
5
+ type ServerFactory<TInput, TInternal> = (input: TInput, config?: Record<string, any>) => Promise<TInternal>;
17
6
  type FactoryMember<TInput> = abstract new (...args: any[]) => TInput | (new (...args: any[]) => TInput) | ((...args: any[]) => TInput);
18
- declare abstract class Server<TInput extends object = object, TInternal extends object = object, TConfig extends object = object> {
7
+ declare abstract class Server<TInput extends object = object, TInternal extends object = object, TConfig extends object = object, TMetadata extends object = object> {
19
8
  protected config: TConfig;
20
9
  static readonly factories: Map<object, ServerFactory<TInput, TInternal>>;
21
10
  readonly members: TInput[];
11
+ protected readonly metadataByInput: Map<TInput, TMetadata>;
22
12
  constructor(config: TConfig);
23
13
  static registerFactory<TInput2 extends object, TInternal2 extends object>(this: typeof Server<TInput2, TInternal2, any>, ref: FactoryMember<TInput2>, factory: ServerFactory<TInput2, TInternal2>, override?: boolean): void;
24
- register(input: TInput): this;
14
+ register(input: TInput, metadata?: TMetadata): this;
25
15
  registerMany(input: TInput[]): this;
26
16
  deregister(input: TInput): this;
27
17
  protected getFactory(input: TInput): ServerFactory<TInput, TInternal>;
@@ -1,4 +1,5 @@
1
1
  import { removeFromArray } from '../internals/helpers/array.js';
2
+ import { traversePrototypeChain } from '../internals/helpers/prototype.js';
2
3
 
3
4
  var __defProp = Object.defineProperty;
4
5
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -9,10 +10,10 @@ class Server {
9
10
  config;
10
11
  // @ts-expect-error
11
12
  static factories = /* @__PURE__ */ new Map();
12
- members;
13
+ members = [];
14
+ metadataByInput = /* @__PURE__ */ new Map();
13
15
  constructor(config) {
14
16
  this.config = config;
15
- this.members = [];
16
17
  }
17
18
  static registerFactory(ref, factory, override = false) {
18
19
  if (!this.factories.get(ref) || override) {
@@ -21,10 +22,13 @@ class Server {
21
22
  throw new Error(`Factory is already registered.`);
22
23
  }
23
24
  }
24
- register(input) {
25
+ register(input, metadata) {
25
26
  this.getFactory(input);
26
27
  if (!this.members.includes(input)) {
27
28
  this.members.push(input);
29
+ if (metadata) {
30
+ this.metadataByInput.set(input, metadata);
31
+ }
28
32
  }
29
33
  return this;
30
34
  }
@@ -37,11 +41,13 @@ class Server {
37
41
  return this;
38
42
  }
39
43
  getFactory(input) {
40
- const factory = this.constructor.factories.get(input);
41
- if (!factory) {
42
- throw new Error(`No factory registered for ${input.constructor.name}.`);
44
+ for (const obj of traversePrototypeChain(input)) {
45
+ const factory = this.constructor.factories.get(obj.constructor);
46
+ if (factory) {
47
+ return factory;
48
+ }
43
49
  }
44
- return factory;
50
+ throw new Error(`No factory registered for ${input.constructor.name}.`);
45
51
  }
46
52
  }
47
53
 
@@ -1 +1 @@
1
- {"version":3,"sources":["server.ts"],"names":["Server","factories","Map","members","constructor","config","registerFactory","ref","factory","override","get","set","Error","register","input","getFactory","includes","push","registerMany","forEach","item","deregister","removeFromArray","name"],"mappings":";;;;AAuBO,MAAeA,MAAAA,CAAAA;EAvBtB;;;;;EA6BE,OAAuBC,SAAAA,uBAAgBC,GAAAA,EAAAA;AAEvBC,EAAAA,OAAAA;AAEhBC,EAAAA,WAAAA,CAAsBC,MAAiB,EAAA;SAAjBA,MAAAA,GAAAA,MAAAA;AAFNF,IAAAA,IAAAA,CAAAA,OAAAA,GAAoB,EAAA;AAEI;AAExC,EAAA,OAAcG,eAEZC,CAAAA,GAAAA,EACAC,OACAC,EAAAA,QAAAA,GAAW,KACL,EAAA;AACN,IAAA,IAAI,CAAC,IAAKR,CAAAA,SAAAA,CAAUS,GAAIH,CAAAA,GAAAA,KAAQE,QAAU,EAAA;AACxC,MAAKR,IAAAA,CAAAA,SAAAA,CAAUU,GAAIJ,CAAAA,GAAAA,EAAKC,OAAAA,CAAAA;AAC1B,KAAA,MAAA,IAAW,IAAKP,CAAAA,SAAAA,CAAUS,GAAIH,CAAAA,GAAAA,MAASC,OAAS,EAAA;AAC9C,MAAM,MAAA,IAAII,MAAM,CAAgC,8BAAA,CAAA,CAAA;AAClD;AACF;AAEOC,EAAAA,QAAAA,CAASC,KAAqB,EAAA;AAEnC,IAAA,IAAA,CAAKC,WAAWD,KAAAA,CAAAA;AAChB,IAAA,IAAI,CAAC,IAAA,CAAKX,OAAQa,CAAAA,QAAAA,CAASF,KAAAA,CAAQ,EAAA;AACjC,MAAKX,IAAAA,CAAAA,OAAAA,CAAQc,KAAKH,KAAAA,CAAAA;AACpB;AACA,IAAO,OAAA,IAAA;AACT;AAEOI,EAAAA,YAAAA,CAAaJ,KAAuB,EAAA;AACzCA,IAAAA,KAAAA,CAAMK,QAAQ,CAACC,IAAAA,KAAS,IAAKP,CAAAA,QAAAA,CAASO,IAAAA,CAAAA,CAAAA;AACtC,IAAO,OAAA,IAAA;AACT;AAEOC,EAAAA,UAAAA,CAAWP,KAAqB,EAAA;AACrCQ,IAAgB,eAAA,CAAA,IAAA,CAAKnB,SAASW,KAAAA,CAAAA;AAC9B,IAAO,OAAA,IAAA;AACT;AAEUC,EAAAA,UAAAA,CAAWD,KAAiD,EAAA;AACpE,IAAA,MAAMN,OAAW,GAAA,IAAA,CAAKJ,WAA8BH,CAAAA,SAAAA,CAAUS,IAAII,KAAAA,CAAAA;AAClE,IAAA,IAAI,CAACN,OAAS,EAAA;AACZ,MAAA,MAAM,IAAII,KAAM,CAAA,CAAA,0BAAA,EAA6BE,KAAMV,CAAAA,WAAAA,CAAYmB,IAAI,CAAG,CAAA,CAAA,CAAA;AACxE;AACA,IAAOf,OAAAA,OAAAA;AACT;AAGF","file":"server.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 { removeFromArray } from \"@/internals/helpers/array.js\";\n\ntype ServerFactory<TInput, TInternal> = (input: TInput) => Promise<TInternal>;\nexport type FactoryMember<TInput> = abstract new (\n ...args: any[]\n) => TInput | (new (...args: any[]) => TInput) | ((...args: any[]) => TInput);\n\nexport abstract class Server<\n TInput extends object = object,\n TInternal extends object = object,\n TConfig extends object = object,\n> {\n // @ts-expect-error\n public static readonly factories = new Map<object, ServerFactory<TInput, TInternal>>();\n\n public readonly members: TInput[] = [];\n\n constructor(protected config: TConfig) {}\n\n public static registerFactory<TInput2 extends object, TInternal2 extends object>(\n this: typeof Server<TInput2, TInternal2, any>,\n ref: FactoryMember<TInput2>,\n factory: ServerFactory<TInput2, TInternal2>,\n override = false,\n ): void {\n if (!this.factories.get(ref) || override) {\n this.factories.set(ref, factory);\n } else if (this.factories.get(ref) !== factory) {\n throw new Error(`Factory is already registered.`);\n }\n }\n\n public register(input: TInput): this {\n // check if the type has a factory registered\n this.getFactory(input);\n if (!this.members.includes(input)) {\n this.members.push(input);\n }\n return this;\n }\n\n public registerMany(input: TInput[]): this {\n input.forEach((item) => this.register(item));\n return this;\n }\n\n public deregister(input: TInput): this {\n removeFromArray(this.members, input);\n return this;\n }\n\n protected getFactory(input: TInput): ServerFactory<TInput, TInternal> {\n const factory = (this.constructor as typeof Server).factories.get(input);\n if (!factory) {\n throw new Error(`No factory registered for ${input.constructor.name}.`);\n }\n return factory;\n }\n\n public abstract serve(): void;\n}\n"]}
1
+ {"version":3,"sources":["../../src/serve/server.ts"],"names":["Server","factories","Map","members","metadataByInput","config","registerFactory","ref","factory","override","get","set","Error","register","input","metadata","getFactory","includes","push","registerMany","forEach","item","deregister","removeFromArray","obj","traversePrototypeChain","name"],"mappings":";;;;;AAgBO,MAAeA,MAAAA,CAAAA;EAhBtB;;;;;EAuBE,OAAuBC,SAAAA,uBAAgBC,GAAAA,EAAAA;AAEvBC,EAAAA,OAAAA,GAAoB,EAAA;AACjBC,EAAAA,eAAAA,uBAAsBF,GAAAA,EAAAA;AAEzC,EAAA,WAAA,CAAsBG,MAAAA,EAAiB;SAAjBA,MAAAA,GAAAA,MAAAA;AAAkB;AAExC,EAAA,OAAcC,eAAAA,CAEZC,GAAAA,EACAC,OAAAA,EACAC,QAAAA,GAAW,KAAA,EACL;AACN,IAAA,IAAI,CAAC,IAAA,CAAKR,SAAAA,CAAUS,GAAAA,CAAIH,GAAAA,KAAQE,QAAAA,EAAU;AACxC,MAAA,IAAA,CAAKR,SAAAA,CAAUU,GAAAA,CAAIJ,GAAAA,EAAKC,OAAAA,CAAAA;AAC1B,KAAA,MAAA,IAAW,IAAA,CAAKP,SAAAA,CAAUS,GAAAA,CAAIH,GAAAA,MAASC,OAAAA,EAAS;AAC9C,MAAA,MAAM,IAAII,MAAM,CAAA,8BAAA,CAAgC,CAAA;AAClD;AACF;AAEOC,EAAAA,QAAAA,CAASC,OAAeC,QAAAA,EAA4B;AAEzD,IAAA,IAAA,CAAKC,WAAWF,KAAAA,CAAAA;AAChB,IAAA,IAAI,CAAC,IAAA,CAAKX,OAAAA,CAAQc,QAAAA,CAASH,KAAAA,CAAAA,EAAQ;AACjC,MAAA,IAAA,CAAKX,OAAAA,CAAQe,KAAKJ,KAAAA,CAAAA;AAClB,MAAA,IAAIC,QAAAA,EAAU;AACZ,QAAA,IAAA,CAAKX,eAAAA,CAAgBO,GAAAA,CAAIG,KAAAA,EAAOC,QAAAA,CAAAA;AAClC;AACF;AACA,IAAA,OAAO,IAAA;AACT;AAEOI,EAAAA,YAAAA,CAAaL,KAAAA,EAAuB;AACzCA,IAAAA,KAAAA,CAAMM,QAAQ,CAACC,IAAAA,KAAS,IAAA,CAAKR,QAAAA,CAASQ,IAAAA,CAAAA,CAAAA;AACtC,IAAA,OAAO,IAAA;AACT;AAEOC,EAAAA,UAAAA,CAAWR,KAAAA,EAAqB;AACrCS,IAAAA,eAAAA,CAAgB,IAAA,CAAKpB,SAASW,KAAAA,CAAAA;AAC9B,IAAA,OAAO,IAAA;AACT;AAEUE,EAAAA,UAAAA,CAAWF,KAAAA,EAAiD;AACpE,IAAA,KAAA,MAAWU,GAAAA,IAAOC,sBAAAA,CAAuBX,KAAAA,CAAAA,EAAQ;AAC/C,MAAA,MAAMN,UAAW,IAAA,CAAK,WAAA,CAA8BP,SAAAA,CAAUS,GAAAA,CAC3Dc,IAA8B,WAAW,CAAA;AAE5C,MAAA,IAAIhB,OAAAA,EAAS;AACX,QAAA,OAAOA,OAAAA;AACT;AACF;AACA,IAAA,MAAM,IAAII,KAAAA,CAAM,CAAA,0BAAA,EAA6BE,KAAAA,CAAM,WAAA,CAAYY,IAAI,CAAA,CAAA,CAAG,CAAA;AACxE;AAGF","file":"server.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\nimport { traversePrototypeChain } from \"@/internals/helpers/prototype.js\";\n\ntype ServerFactory<TInput, TInternal> = (\n input: TInput,\n config?: Record<string, any>,\n) => Promise<TInternal>;\nexport type FactoryMember<TInput> = abstract new (\n ...args: any[]\n) => TInput | (new (...args: any[]) => TInput) | ((...args: any[]) => TInput);\n\nexport abstract class Server<\n TInput extends object = object,\n TInternal extends object = object,\n TConfig extends object = object,\n TMetadata extends object = object,\n> {\n // @ts-expect-error\n public static readonly factories = new Map<object, ServerFactory<TInput, TInternal>>();\n\n public readonly members: TInput[] = [];\n protected readonly metadataByInput = new Map<TInput, TMetadata>();\n\n constructor(protected config: TConfig) {}\n\n public static registerFactory<TInput2 extends object, TInternal2 extends object>(\n this: typeof Server<TInput2, TInternal2, any>,\n ref: FactoryMember<TInput2>,\n factory: ServerFactory<TInput2, TInternal2>,\n override = false,\n ): void {\n if (!this.factories.get(ref) || override) {\n this.factories.set(ref, factory);\n } else if (this.factories.get(ref) !== factory) {\n throw new Error(`Factory is already registered.`);\n }\n }\n\n public register(input: TInput, metadata?: TMetadata): this {\n // check if the type has a factory registered\n this.getFactory(input);\n if (!this.members.includes(input)) {\n this.members.push(input);\n if (metadata) {\n this.metadataByInput.set(input, metadata);\n }\n }\n return this;\n }\n\n public registerMany(input: TInput[]): this {\n input.forEach((item) => this.register(item));\n return this;\n }\n\n public deregister(input: TInput): this {\n removeFromArray(this.members, input);\n return this;\n }\n\n protected getFactory(input: TInput): ServerFactory<TInput, TInternal> {\n for (const obj of traversePrototypeChain(input)) {\n const factory = (this.constructor as typeof Server).factories.get(\n (obj as FactoryMember<TInput>).constructor,\n );\n if (factory) {\n return factory;\n }\n }\n throw new Error(`No factory registered for ${input.constructor.name}.`);\n }\n\n public abstract serve(): void;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["template.ts"],"names":["PromptTemplateError","FrameworkError","template","constructor","message","context","ValidationPromptTemplateError","PromptTemplate","Serializable","config","functions","trim","text","render","replace","defaults","schema","toJsonSchema","escape","Boolean","customTags","register","validateInput","input","validator","createSchemaValidator","coerceTypes","success","errors","fork","customizer","clone","newConfig","isPlainObject","ValueError","updatedInput","Object","assign","pickBy","_","k","getProp","undefined","view","output","Mustache","tags","identity","match","loadSnapshot","data","createSnapshot"],"mappings":"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","file":"template.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { ObjectLike, PlainObject } from \"@/internals/types.js\";\nimport { clone, identity, isPlainObject, pickBy } from \"remeda\";\nimport Mustache from \"mustache\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { z, ZodType } from \"zod\";\nimport { createSchemaValidator, toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport type { SchemaObject, ValidateFunction } from \"ajv\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\ntype PostInfer<T> = T extends PlainObject\n ? {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n }\n : T;\ntype InferValue<T> = T extends ZodType<infer A> ? PostInfer<A> : never;\nexport type PromptTemplateRenderFn<K extends ZodType> = (this: InferValue<K>) => any;\n\nexport type PromptTemplateRenderInput<T extends ZodType, T2 extends z.input<T> = z.input<T>> = {\n [K in Extract<keyof T2, string>]: T2[K] | PromptTemplateRenderFn<T> | undefined;\n};\n\nexport interface PromptTemplateInput<T extends ZodType> {\n template: string;\n customTags?: [string, string];\n escape?: boolean;\n schema: SchemaObject;\n defaults?: Partial<InferValue<T>>;\n functions?: Record<string, PromptTemplateRenderFn<T>>;\n}\n\ntype PromptTemplateConstructor<T extends ZodType, N> = N extends ZodType\n ? Omit<PromptTemplateInput<N>, \"schema\" | \"functions\" | \"defaults\"> & {\n schema: N;\n functions?: Record<string, PromptTemplateRenderFn<N | T>>;\n defaults?: Partial<InferValue<N | T>>;\n }\n : Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject };\n\ntype Customizer<T extends ZodType, N> =\n | ((config: Required<PromptTemplateInput<T>>) => PromptTemplateConstructor<T, N>)\n | ((config: Required<PromptTemplateInput<T>>) => void);\n\nexport class PromptTemplateError<T extends ZodType> extends FrameworkError {\n template: PromptTemplate<T>;\n\n constructor(message: string, template: PromptTemplate<T>, context?: ObjectLike) {\n super(message, [], {\n context,\n });\n this.template = template;\n }\n}\n\nexport class ValidationPromptTemplateError<T extends ZodType> extends PromptTemplateError<T> {}\n\nexport class PromptTemplate<T extends ZodType> extends Serializable {\n protected config: Required<PromptTemplateInput<T>>;\n\n public static functions = {\n trim: () => (text: string, render: (value: string) => string) => {\n return render(text).replace(/(,\\s*$)/g, \"\");\n },\n };\n\n constructor(config: Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject }) {\n super();\n this.config = {\n ...config,\n defaults: (config.defaults ?? {}) as Partial<InferValue<T>>,\n schema: toJsonSchema(config.schema),\n escape: Boolean(config.escape),\n customTags: config.customTags ?? [\"{{\", \"}}\"],\n functions: {\n ...PromptTemplate.functions,\n ...config.functions,\n },\n };\n }\n\n static {\n this.register();\n }\n\n validateInput(input: unknown): asserts input is T {\n const validator = createSchemaValidator(this.config.schema, {\n coerceTypes: false,\n }) as ValidateFunction<T>;\n\n const success = validator(input);\n if (!success) {\n throw new ValidationPromptTemplateError(\n `Template cannot be rendered because input does not adhere to the template schema.`,\n this,\n {\n errors: validator.errors,\n },\n );\n }\n }\n\n fork(customizer: Customizer<T, SchemaObject>): PromptTemplate<T>;\n fork<R extends ZodType>(customizer: Customizer<T, R>): PromptTemplate<R>;\n fork<R extends ZodType>(\n customizer: Customizer<T, SchemaObject> | Customizer<T, R>,\n ): PromptTemplate<T | R> {\n const config = clone(this.config);\n const newConfig = customizer?.(config) ?? config;\n if (!isPlainObject(newConfig)) {\n throw new ValueError(\"Return type from customizer must be a config or nothing.\");\n }\n return new PromptTemplate(newConfig);\n }\n\n render(input: PromptTemplateRenderInput<T>): string {\n const updatedInput: typeof input = { ...input };\n Object.assign(\n updatedInput,\n pickBy(this.config.defaults, (_, k) => getProp(updatedInput, [k]) === undefined),\n );\n\n this.validateInput(updatedInput);\n const view: Record<string, any> = {\n ...this.config.functions,\n ...updatedInput,\n };\n\n const output = Mustache.render(\n this.config.template,\n view,\n {},\n {\n tags: this.config.customTags,\n ...(!this.config.escape && {\n escape: identity(),\n }),\n },\n );\n\n if (output.match(/\\[object (.+)]/)) {\n throw new ValidationPromptTemplateError(\n \"Rendered template contains incorrectly serialized value!\",\n this,\n {\n output,\n },\n );\n }\n\n return output;\n }\n\n loadSnapshot(data: ReturnType<typeof this.createSnapshot>) {\n this.config = data.config;\n }\n\n createSnapshot() {\n return {\n config: this.config,\n };\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace PromptTemplate {\n export type infer<T> = PromptTemplate<ZodType<T>>;\n}\n"]}
1
+ {"version":3,"sources":["../src/template.ts"],"names":["PromptTemplateError","FrameworkError","template","message","context","ValidationPromptTemplateError","PromptTemplate","Serializable","config","functions","trim","text","render","replace","defaults","schema","toJsonSchema","escape","Boolean","customTags","register","validateInput","input","validator","createSchemaValidator","coerceTypes","success","errors","fork","customizer","clone","newConfig","isPlainObject","ValueError","updatedInput","Object","assign","pickBy","_","k","getProp","undefined","view","output","Mustache","tags","identity","match","loadSnapshot","data","createSnapshot"],"mappings":"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","file":"template.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { ObjectLike, PlainObject } from \"@/internals/types.js\";\nimport { clone, identity, isPlainObject, pickBy } from \"remeda\";\nimport Mustache from \"mustache\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { z, ZodType } from \"zod\";\nimport { createSchemaValidator, toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport type { SchemaObject, ValidateFunction } from \"ajv\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\ntype PostInfer<T> = T extends PlainObject\n ? {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n }\n : T;\ntype InferValue<T> = T extends ZodType<infer A> ? PostInfer<A> : never;\nexport type PromptTemplateRenderFn<K extends ZodType> = (this: InferValue<K>) => any;\n\nexport type PromptTemplateRenderInput<T extends ZodType, T2 extends z.input<T> = z.input<T>> = {\n [K in Extract<keyof T2, string>]: T2[K] | PromptTemplateRenderFn<T> | undefined;\n};\n\nexport interface PromptTemplateInput<T extends ZodType> {\n template: string;\n customTags?: [string, string];\n escape?: boolean;\n schema: SchemaObject;\n defaults?: Partial<InferValue<T>>;\n functions?: Record<string, PromptTemplateRenderFn<T>>;\n}\n\ntype PromptTemplateConstructor<T extends ZodType, N> = N extends ZodType\n ? Omit<PromptTemplateInput<N>, \"schema\" | \"functions\" | \"defaults\"> & {\n schema: N;\n functions?: Record<string, PromptTemplateRenderFn<N | T>>;\n defaults?: Partial<InferValue<N | T>>;\n }\n : Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject };\n\ntype Customizer<T extends ZodType, N> =\n | ((config: Required<PromptTemplateInput<T>>) => PromptTemplateConstructor<T, N>)\n | ((config: Required<PromptTemplateInput<T>>) => void);\n\nexport class PromptTemplateError<T extends ZodType> extends FrameworkError {\n template: PromptTemplate<T>;\n\n constructor(message: string, template: PromptTemplate<T>, context?: ObjectLike) {\n super(message, [], {\n context,\n });\n this.template = template;\n }\n}\n\nexport class ValidationPromptTemplateError<T extends ZodType> extends PromptTemplateError<T> {}\n\nexport class PromptTemplate<T extends ZodType> extends Serializable {\n protected config: Required<PromptTemplateInput<T>>;\n\n public static functions = {\n trim: () => (text: string, render: (value: string) => string) => {\n return render(text).replace(/(,\\s*$)/g, \"\");\n },\n };\n\n constructor(config: Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject }) {\n super();\n this.config = {\n ...config,\n defaults: (config.defaults ?? {}) as Partial<InferValue<T>>,\n schema: toJsonSchema(config.schema),\n escape: Boolean(config.escape),\n customTags: config.customTags ?? [\"{{\", \"}}\"],\n functions: {\n ...PromptTemplate.functions,\n ...config.functions,\n },\n };\n }\n\n static {\n this.register();\n }\n\n validateInput(input: unknown): asserts input is T {\n const validator = createSchemaValidator(this.config.schema, {\n coerceTypes: false,\n }) as ValidateFunction<T>;\n\n const success = validator(input);\n if (!success) {\n throw new ValidationPromptTemplateError(\n `Template cannot be rendered because input does not adhere to the template schema.`,\n this,\n {\n errors: validator.errors,\n },\n );\n }\n }\n\n fork(customizer: Customizer<T, SchemaObject>): PromptTemplate<T>;\n fork<R extends ZodType>(customizer: Customizer<T, R>): PromptTemplate<R>;\n fork<R extends ZodType>(\n customizer: Customizer<T, SchemaObject> | Customizer<T, R>,\n ): PromptTemplate<T | R> {\n const config = clone(this.config);\n const newConfig = customizer?.(config) ?? config;\n if (!isPlainObject(newConfig)) {\n throw new ValueError(\"Return type from customizer must be a config or nothing.\");\n }\n return new PromptTemplate(newConfig);\n }\n\n render(input: PromptTemplateRenderInput<T>): string {\n const updatedInput: typeof input = { ...input };\n Object.assign(\n updatedInput,\n pickBy(this.config.defaults, (_, k) => getProp(updatedInput, [k]) === undefined),\n );\n\n this.validateInput(updatedInput);\n const view: Record<string, any> = {\n ...this.config.functions,\n ...updatedInput,\n };\n\n const output = Mustache.render(\n this.config.template,\n view,\n {},\n {\n tags: this.config.customTags,\n ...(!this.config.escape && {\n escape: identity(),\n }),\n },\n );\n\n if (output.match(/\\[object (.+)]/)) {\n throw new ValidationPromptTemplateError(\n \"Rendered template contains incorrectly serialized value!\",\n this,\n {\n output,\n },\n );\n }\n\n return output;\n }\n\n loadSnapshot(data: ReturnType<typeof this.createSnapshot>) {\n this.config = data.config;\n }\n\n createSnapshot() {\n return {\n config: this.config,\n };\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace PromptTemplate {\n export type infer<T> = PromptTemplate<ZodType<T>>;\n}\n"]}
@@ -7,18 +7,7 @@ import './internals/helpers/guards.cjs';
7
7
 
8
8
  /**
9
9
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
10
- *
11
- * Licensed under the Apache License, Version 2.0 (the "License");
12
- * you may not use this file except in compliance with the License.
13
- * You may obtain a copy of the License at
14
- *
15
- * http://www.apache.org/licenses/LICENSE-2.0
16
- *
17
- * Unless required by applicable law or agreed to in writing, software
18
- * distributed under the License is distributed on an "AS IS" BASIS,
19
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
- * See the License for the specific language governing permissions and
21
- * limitations under the License.
10
+ * SPDX-License-Identifier: Apache-2.0
22
11
  */
23
12
 
24
13
  type PostInfer<T> = T extends PlainObject ? {
@@ -7,18 +7,7 @@ import './internals/helpers/guards.js';
7
7
 
8
8
  /**
9
9
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
10
- *
11
- * Licensed under the Apache License, Version 2.0 (the "License");
12
- * you may not use this file except in compliance with the License.
13
- * You may obtain a copy of the License at
14
- *
15
- * http://www.apache.org/licenses/LICENSE-2.0
16
- *
17
- * Unless required by applicable law or agreed to in writing, software
18
- * distributed under the License is distributed on an "AS IS" BASIS,
19
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20
- * See the License for the specific language governing permissions and
21
- * limitations under the License.
10
+ * SPDX-License-Identifier: Apache-2.0
22
11
  */
23
12
 
24
13
  type PostInfer<T> = T extends PlainObject ? {
@@ -1 +1 @@
1
- {"version":3,"sources":["template.ts"],"names":["PromptTemplateError","FrameworkError","template","constructor","message","context","ValidationPromptTemplateError","PromptTemplate","Serializable","config","functions","trim","text","render","replace","defaults","schema","toJsonSchema","escape","Boolean","customTags","register","validateInput","input","validator","createSchemaValidator","coerceTypes","success","errors","fork","customizer","clone","newConfig","isPlainObject","ValueError","updatedInput","Object","assign","pickBy","_","k","getProp","undefined","view","output","Mustache","tags","identity","match","loadSnapshot","data","createSnapshot"],"mappings":"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","file":"template.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { ObjectLike, PlainObject } from \"@/internals/types.js\";\nimport { clone, identity, isPlainObject, pickBy } from \"remeda\";\nimport Mustache from \"mustache\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { z, ZodType } from \"zod\";\nimport { createSchemaValidator, toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport type { SchemaObject, ValidateFunction } from \"ajv\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\ntype PostInfer<T> = T extends PlainObject\n ? {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n }\n : T;\ntype InferValue<T> = T extends ZodType<infer A> ? PostInfer<A> : never;\nexport type PromptTemplateRenderFn<K extends ZodType> = (this: InferValue<K>) => any;\n\nexport type PromptTemplateRenderInput<T extends ZodType, T2 extends z.input<T> = z.input<T>> = {\n [K in Extract<keyof T2, string>]: T2[K] | PromptTemplateRenderFn<T> | undefined;\n};\n\nexport interface PromptTemplateInput<T extends ZodType> {\n template: string;\n customTags?: [string, string];\n escape?: boolean;\n schema: SchemaObject;\n defaults?: Partial<InferValue<T>>;\n functions?: Record<string, PromptTemplateRenderFn<T>>;\n}\n\ntype PromptTemplateConstructor<T extends ZodType, N> = N extends ZodType\n ? Omit<PromptTemplateInput<N>, \"schema\" | \"functions\" | \"defaults\"> & {\n schema: N;\n functions?: Record<string, PromptTemplateRenderFn<N | T>>;\n defaults?: Partial<InferValue<N | T>>;\n }\n : Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject };\n\ntype Customizer<T extends ZodType, N> =\n | ((config: Required<PromptTemplateInput<T>>) => PromptTemplateConstructor<T, N>)\n | ((config: Required<PromptTemplateInput<T>>) => void);\n\nexport class PromptTemplateError<T extends ZodType> extends FrameworkError {\n template: PromptTemplate<T>;\n\n constructor(message: string, template: PromptTemplate<T>, context?: ObjectLike) {\n super(message, [], {\n context,\n });\n this.template = template;\n }\n}\n\nexport class ValidationPromptTemplateError<T extends ZodType> extends PromptTemplateError<T> {}\n\nexport class PromptTemplate<T extends ZodType> extends Serializable {\n protected config: Required<PromptTemplateInput<T>>;\n\n public static functions = {\n trim: () => (text: string, render: (value: string) => string) => {\n return render(text).replace(/(,\\s*$)/g, \"\");\n },\n };\n\n constructor(config: Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject }) {\n super();\n this.config = {\n ...config,\n defaults: (config.defaults ?? {}) as Partial<InferValue<T>>,\n schema: toJsonSchema(config.schema),\n escape: Boolean(config.escape),\n customTags: config.customTags ?? [\"{{\", \"}}\"],\n functions: {\n ...PromptTemplate.functions,\n ...config.functions,\n },\n };\n }\n\n static {\n this.register();\n }\n\n validateInput(input: unknown): asserts input is T {\n const validator = createSchemaValidator(this.config.schema, {\n coerceTypes: false,\n }) as ValidateFunction<T>;\n\n const success = validator(input);\n if (!success) {\n throw new ValidationPromptTemplateError(\n `Template cannot be rendered because input does not adhere to the template schema.`,\n this,\n {\n errors: validator.errors,\n },\n );\n }\n }\n\n fork(customizer: Customizer<T, SchemaObject>): PromptTemplate<T>;\n fork<R extends ZodType>(customizer: Customizer<T, R>): PromptTemplate<R>;\n fork<R extends ZodType>(\n customizer: Customizer<T, SchemaObject> | Customizer<T, R>,\n ): PromptTemplate<T | R> {\n const config = clone(this.config);\n const newConfig = customizer?.(config) ?? config;\n if (!isPlainObject(newConfig)) {\n throw new ValueError(\"Return type from customizer must be a config or nothing.\");\n }\n return new PromptTemplate(newConfig);\n }\n\n render(input: PromptTemplateRenderInput<T>): string {\n const updatedInput: typeof input = { ...input };\n Object.assign(\n updatedInput,\n pickBy(this.config.defaults, (_, k) => getProp(updatedInput, [k]) === undefined),\n );\n\n this.validateInput(updatedInput);\n const view: Record<string, any> = {\n ...this.config.functions,\n ...updatedInput,\n };\n\n const output = Mustache.render(\n this.config.template,\n view,\n {},\n {\n tags: this.config.customTags,\n ...(!this.config.escape && {\n escape: identity(),\n }),\n },\n );\n\n if (output.match(/\\[object (.+)]/)) {\n throw new ValidationPromptTemplateError(\n \"Rendered template contains incorrectly serialized value!\",\n this,\n {\n output,\n },\n );\n }\n\n return output;\n }\n\n loadSnapshot(data: ReturnType<typeof this.createSnapshot>) {\n this.config = data.config;\n }\n\n createSnapshot() {\n return {\n config: this.config,\n };\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace PromptTemplate {\n export type infer<T> = PromptTemplate<ZodType<T>>;\n}\n"]}
1
+ {"version":3,"sources":["../src/template.ts"],"names":["PromptTemplateError","FrameworkError","template","message","context","ValidationPromptTemplateError","PromptTemplate","Serializable","config","functions","trim","text","render","replace","defaults","schema","toJsonSchema","escape","Boolean","customTags","register","validateInput","input","validator","createSchemaValidator","coerceTypes","success","errors","fork","customizer","clone","newConfig","isPlainObject","ValueError","updatedInput","Object","assign","pickBy","_","k","getProp","undefined","view","output","Mustache","tags","identity","match","loadSnapshot","data","createSnapshot"],"mappings":"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","file":"template.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { ObjectLike, PlainObject } from \"@/internals/types.js\";\nimport { clone, identity, isPlainObject, pickBy } from \"remeda\";\nimport Mustache from \"mustache\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { z, ZodType } from \"zod\";\nimport { createSchemaValidator, toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport type { SchemaObject, ValidateFunction } from \"ajv\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\ntype PostInfer<T> = T extends PlainObject\n ? {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n }\n : T;\ntype InferValue<T> = T extends ZodType<infer A> ? PostInfer<A> : never;\nexport type PromptTemplateRenderFn<K extends ZodType> = (this: InferValue<K>) => any;\n\nexport type PromptTemplateRenderInput<T extends ZodType, T2 extends z.input<T> = z.input<T>> = {\n [K in Extract<keyof T2, string>]: T2[K] | PromptTemplateRenderFn<T> | undefined;\n};\n\nexport interface PromptTemplateInput<T extends ZodType> {\n template: string;\n customTags?: [string, string];\n escape?: boolean;\n schema: SchemaObject;\n defaults?: Partial<InferValue<T>>;\n functions?: Record<string, PromptTemplateRenderFn<T>>;\n}\n\ntype PromptTemplateConstructor<T extends ZodType, N> = N extends ZodType\n ? Omit<PromptTemplateInput<N>, \"schema\" | \"functions\" | \"defaults\"> & {\n schema: N;\n functions?: Record<string, PromptTemplateRenderFn<N | T>>;\n defaults?: Partial<InferValue<N | T>>;\n }\n : Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject };\n\ntype Customizer<T extends ZodType, N> =\n | ((config: Required<PromptTemplateInput<T>>) => PromptTemplateConstructor<T, N>)\n | ((config: Required<PromptTemplateInput<T>>) => void);\n\nexport class PromptTemplateError<T extends ZodType> extends FrameworkError {\n template: PromptTemplate<T>;\n\n constructor(message: string, template: PromptTemplate<T>, context?: ObjectLike) {\n super(message, [], {\n context,\n });\n this.template = template;\n }\n}\n\nexport class ValidationPromptTemplateError<T extends ZodType> extends PromptTemplateError<T> {}\n\nexport class PromptTemplate<T extends ZodType> extends Serializable {\n protected config: Required<PromptTemplateInput<T>>;\n\n public static functions = {\n trim: () => (text: string, render: (value: string) => string) => {\n return render(text).replace(/(,\\s*$)/g, \"\");\n },\n };\n\n constructor(config: Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject }) {\n super();\n this.config = {\n ...config,\n defaults: (config.defaults ?? {}) as Partial<InferValue<T>>,\n schema: toJsonSchema(config.schema),\n escape: Boolean(config.escape),\n customTags: config.customTags ?? [\"{{\", \"}}\"],\n functions: {\n ...PromptTemplate.functions,\n ...config.functions,\n },\n };\n }\n\n static {\n this.register();\n }\n\n validateInput(input: unknown): asserts input is T {\n const validator = createSchemaValidator(this.config.schema, {\n coerceTypes: false,\n }) as ValidateFunction<T>;\n\n const success = validator(input);\n if (!success) {\n throw new ValidationPromptTemplateError(\n `Template cannot be rendered because input does not adhere to the template schema.`,\n this,\n {\n errors: validator.errors,\n },\n );\n }\n }\n\n fork(customizer: Customizer<T, SchemaObject>): PromptTemplate<T>;\n fork<R extends ZodType>(customizer: Customizer<T, R>): PromptTemplate<R>;\n fork<R extends ZodType>(\n customizer: Customizer<T, SchemaObject> | Customizer<T, R>,\n ): PromptTemplate<T | R> {\n const config = clone(this.config);\n const newConfig = customizer?.(config) ?? config;\n if (!isPlainObject(newConfig)) {\n throw new ValueError(\"Return type from customizer must be a config or nothing.\");\n }\n return new PromptTemplate(newConfig);\n }\n\n render(input: PromptTemplateRenderInput<T>): string {\n const updatedInput: typeof input = { ...input };\n Object.assign(\n updatedInput,\n pickBy(this.config.defaults, (_, k) => getProp(updatedInput, [k]) === undefined),\n );\n\n this.validateInput(updatedInput);\n const view: Record<string, any> = {\n ...this.config.functions,\n ...updatedInput,\n };\n\n const output = Mustache.render(\n this.config.template,\n view,\n {},\n {\n tags: this.config.customTags,\n ...(!this.config.escape && {\n escape: identity(),\n }),\n },\n );\n\n if (output.match(/\\[object (.+)]/)) {\n throw new ValidationPromptTemplateError(\n \"Rendered template contains incorrectly serialized value!\",\n this,\n {\n output,\n },\n );\n }\n\n return output;\n }\n\n loadSnapshot(data: ReturnType<typeof this.createSnapshot>) {\n this.config = data.config;\n }\n\n createSnapshot() {\n return {\n config: this.config,\n };\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace PromptTemplate {\n export type infer<T> = PromptTemplate<ZodType<T>>;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["arxiv.ts"],"names":["SortType","RELEVANCE","LAST_UPDATED_DATE","SUBMITTED_DATE","SortOrder","ASCENDING","DESCENDING","FilterType","ALL","TITLE","AUTHOR","ABSTRACT","COMMENT","JOURNAL_REFERENCE","SUBJECT_CATEGORY","REPORT_NUMBER","FilterTypeMapping","all","title","author","abstract","comment","journal_reference","subject_category","report_number","Separators","AND","OR","ANDNOT","ArXivToolOutput","JSONToolOutput","isEmpty","result","totalResults","entries","length","extractId","value","replace","ArXivTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","entrySchema","z","object","field","nativeEnum","default","string","min","ids","array","optional","search_query","include","nonempty","describe","exclude","start","number","int","maxResults","max","register","validateInput","schema","rawInput","ToolInputValidationError","_prepareParams","input","createURLParams","max_results","id_list","undefined","map","tag","join","filter","Boolean","sortBy","sortOrder","_run","_options","run","params","url","decodeURIComponent","toString","response","fetch","signal","data","_parseResponse","parser","XMLParser","allowBooleanAttributes","alwaysCreateTextNode","attributeNamePrefix","attributesGroupName","cdataPropName","ignoreAttributes","numberParseOptions","hex","leadingZeros","parseAttributeValue","parseTagValue","preserveOrder","removeNSPrefix","textNodeName","trimValues","ignoreDeclaration","text","parsedData","parse","ok","ToolError","Error","JSON","stringify","getProp","castArray","Math","startIndex","itemsPerPage","entry","pickBy","id","summary","published","updated","authors","affiliation","doi","journalReference","journal_ref","primaryCategory","primary_category","categories","category","links","link","isDefined"],"mappings":"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","file":"arxiv.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolError,\n ToolInput,\n ToolInputValidationError,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { isDefined, isEmpty, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ntype ToolOptions = BaseToolOptions;\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SortType = {\n RELEVANCE: \"relevance\",\n LAST_UPDATED_DATE: \"lastUpdatedDate\",\n SUBMITTED_DATE: \"submittedDate\",\n} as const;\n\nexport const SortOrder = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\",\n} as const;\n\nexport const FilterType = {\n ALL: \"all\",\n TITLE: \"title\",\n AUTHOR: \"author\",\n ABSTRACT: \"abstract\",\n COMMENT: \"comment\",\n JOURNAL_REFERENCE: \"journal_reference\",\n SUBJECT_CATEGORY: \"subject_category\",\n REPORT_NUMBER: \"report_number\",\n} as const;\n\nconst FilterTypeMapping: Record<ValueOf<typeof FilterType>, string> = {\n all: \"all\",\n title: \"ti\",\n author: \"au\",\n abstract: \"abs\",\n comment: \"co\",\n journal_reference: \"jr\",\n subject_category: \"cat\",\n report_number: \"rn\",\n};\n\nexport const Separators = {\n AND: \"+AND+\",\n OR: \"+OR+\",\n ANDNOT: \"+ANDNOT+\",\n} as const;\n\nexport interface ArXivResponse {\n totalResults: number;\n startIndex: number;\n itemsPerPage: number;\n entries: {\n id: string;\n title: string;\n summary: string;\n published: string;\n updated: string;\n authors: { name: string; affiliation: string[] }[];\n doi: string;\n comment: string;\n journalReference: string;\n primaryCategory: string;\n categories: string[];\n links: string[];\n }[];\n}\n\nexport class ArXivToolOutput extends JSONToolOutput<ArXivResponse> {\n isEmpty(): boolean {\n return !this.result || this.result.totalResults === 0 || this.result.entries.length === 0;\n }\n}\n\nconst extractId = (value: string) =>\n value\n .replace(\"https://arxiv.org/abs/\", \"\")\n .replace(\"https://arxiv.org/pdf/\", \"\")\n .replace(/v\\d$/, \"\");\n\nexport class ArXivTool extends Tool<ArXivToolOutput, ToolOptions, ToolRunOptions> {\n name = \"ArXiv\";\n description = `Retrieves research articles published on arXiv including related metadata.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, ArXivToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"arxiv\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n const entrySchema = z.object({\n field: z.nativeEnum(FilterType).default(FilterType.ALL),\n value: z.string().min(1),\n });\n\n return z\n .object({\n ids: z.array(z.string().min(1)).optional(),\n search_query: z\n .object({\n include: z.array(entrySchema).nonempty().describe(\"Filters to include results.\"),\n exclude: z.array(entrySchema).optional().describe(\"Filters to exclude results.\"),\n })\n .optional(),\n start: z.number().int().min(0).default(0),\n maxResults: z.number().int().min(1).max(100).default(5),\n })\n .describe(\"Sorting by date is not supported.\");\n }\n\n static {\n this.register();\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n super.validateInput(schema, rawInput);\n if (isEmpty(rawInput.ids ?? []) && !rawInput.search_query) {\n throw new ToolInputValidationError(\n `The 'search_query' property must be non-empty if the 'ids' property is not provided!`,\n );\n }\n }\n\n protected _prepareParams(input: ToolInput<typeof this>) {\n return createURLParams({\n start: input.start,\n max_results: input.maxResults,\n id_list: isEmpty(input.ids ?? []) ? undefined : input.ids?.map(extractId),\n search_query:\n input.search_query &&\n [\n input.search_query.include\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.AND),\n (input.search_query.exclude ?? [])\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.ANDNOT),\n ]\n .filter(Boolean)\n .join(Separators.ANDNOT),\n sortBy: SortType.RELEVANCE,\n sortOrder: SortOrder.DESCENDING,\n });\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = this._prepareParams(input);\n const url = `https://export.arxiv.org/api/query?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n const data = await this._parseResponse(response);\n return new ArXivToolOutput(data);\n }\n\n protected async _parseResponse(response: Response): Promise<ArXivResponse> {\n const parser = new XMLParser({\n allowBooleanAttributes: true,\n alwaysCreateTextNode: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n cdataPropName: \"#cdata\",\n ignoreAttributes: true,\n numberParseOptions: { hex: false, leadingZeros: true },\n parseAttributeValue: false,\n parseTagValue: true,\n preserveOrder: false,\n removeNSPrefix: true,\n textNodeName: \"#text\",\n trimValues: true,\n ignoreDeclaration: true,\n });\n\n const text = await response.text();\n const parsedData = parser.parse(text);\n\n if (!response.ok) {\n throw new ToolError(\"Request to ArXiv API has failed!\", [\n new Error(JSON.stringify(getProp(parsedData, [\"feed\", \"entry\"], parsedData), null, 2)),\n ]);\n }\n\n let entries: Record<string, any>[] = getProp(parsedData, [\"feed\", \"entry\"], []);\n entries = castArray(entries);\n\n return {\n totalResults: Math.max(getProp(parsedData, [\"feed\", \"totalResults\"], 0), entries.length),\n startIndex: getProp(parsedData, [\"feed\", \"startIndex\"], 0),\n itemsPerPage: getProp(parsedData, [\"feed\", \"itemsPerPage\"], 0),\n entries: entries.map((entry) =>\n pickBy(\n {\n id: extractId(entry.id),\n url: entry.id,\n title: entry.title,\n summary: entry.summary,\n published: entry.published,\n updated: entry.updated,\n authors: castArray(entry.author)\n .filter(Boolean)\n .map((author: any) => ({\n name: author.name,\n affiliation: castArray(author.affiliation ?? []),\n })),\n doi: entry.doi,\n comment: entry.comment,\n journalReference: entry.journal_ref,\n primaryCategory: entry.primary_category,\n categories: castArray(entry.category).filter(Boolean),\n links: castArray(entry.link).filter(Boolean),\n },\n isDefined,\n ),\n ),\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/arxiv.ts"],"names":["SortType","RELEVANCE","LAST_UPDATED_DATE","SUBMITTED_DATE","SortOrder","ASCENDING","DESCENDING","FilterType","ALL","TITLE","AUTHOR","ABSTRACT","COMMENT","JOURNAL_REFERENCE","SUBJECT_CATEGORY","REPORT_NUMBER","FilterTypeMapping","all","title","author","abstract","comment","journal_reference","subject_category","report_number","Separators","AND","OR","ANDNOT","ArXivToolOutput","JSONToolOutput","isEmpty","result","totalResults","entries","length","extractId","value","replace","ArXivTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","entrySchema","z","object","field","nativeEnum","default","string","min","ids","array","optional","search_query","include","nonempty","describe","exclude","start","number","int","maxResults","max","register","validateInput","schema","rawInput","ToolInputValidationError","_prepareParams","input","createURLParams","max_results","id_list","undefined","map","tag","join","filter","Boolean","sortBy","sortOrder","_run","_options","run","params","url","decodeURIComponent","toString","response","fetch","signal","data","_parseResponse","parser","XMLParser","allowBooleanAttributes","alwaysCreateTextNode","attributeNamePrefix","attributesGroupName","cdataPropName","ignoreAttributes","numberParseOptions","hex","leadingZeros","parseAttributeValue","parseTagValue","preserveOrder","removeNSPrefix","textNodeName","trimValues","ignoreDeclaration","text","parsedData","parse","ok","ToolError","Error","JSON","stringify","getProp","castArray","Math","startIndex","itemsPerPage","entry","pickBy","id","summary","published","updated","authors","affiliation","doi","journalReference","journal_ref","primaryCategory","primary_category","categories","category","links","link","isDefined"],"mappings":";;;;;;;;;;;;;;AAGC,SAAA,YAAA,CAAA,UAAA,EAAA,MAAA,EAAA,GAAA,EAAA,IAAA,EAAA;;;;;;AAAA,MAAA,CAAA,YAAA,EAAA,cAAA,CAAA;;;;;AA2BM,MAAMA,QAAAA,GAAW;EACtBC,SAAAA,EAAW,WAAA;EACXC,iBAAAA,EAAmB,iBAAA;EACnBC,cAAAA,EAAgB;AAClB;AAEO,MAAMC,SAAAA,GAAY;EACvBC,SAAAA,EAAW,WAAA;EACXC,UAAAA,EAAY;AACd;AAEO,MAAMC,UAAAA,GAAa;EACxBC,GAAAA,EAAK,KAAA;EACLC,KAAAA,EAAO,OAAA;EACPC,MAAAA,EAAQ,QAAA;EACRC,QAAAA,EAAU,UAAA;EACVC,OAAAA,EAAS,SAAA;EACTC,iBAAAA,EAAmB,mBAAA;EACnBC,gBAAAA,EAAkB,kBAAA;EAClBC,aAAAA,EAAe;AACjB;AAEA,MAAMC,iBAAAA,GAAgE;EACpEC,GAAAA,EAAK,KAAA;EACLC,KAAAA,EAAO,IAAA;EACPC,MAAAA,EAAQ,IAAA;EACRC,QAAAA,EAAU,KAAA;EACVC,OAAAA,EAAS,IAAA;EACTC,iBAAAA,EAAmB,IAAA;EACnBC,gBAAAA,EAAkB,KAAA;EAClBC,aAAAA,EAAe;AACjB,CAAA;AAEO,MAAMC,UAAAA,GAAa;EACxBC,GAAAA,EAAK,OAAA;EACLC,EAAAA,EAAI,MAAA;EACJC,MAAAA,EAAQ;AACV;AAsBO,MAAMC,wBAAwBC,uBAAAA,CAAAA;EAzFrC;;;EA0FEC,OAAAA,GAAmB;AACjB,IAAA,OAAO,CAAC,IAAA,CAAKC,MAAAA,IAAU,IAAA,CAAKA,MAAAA,CAAOC,iBAAiB,CAAA,IAAK,IAAA,CAAKD,MAAAA,CAAOE,OAAAA,CAAQC,MAAAA,KAAW,CAAA;AAC1F;AACF;AAEA,MAAMC,SAAAA,mBAAY,MAAA,CAAA,CAACC,KAAAA,KACjBA,KAAAA,CACGC,QAAQ,wBAAA,EAA0B,EAAA,CAAA,CAClCA,OAAAA,CAAQ,0BAA0B,EAAA,CAAA,CAClCA,OAAAA,CAAQ,MAAA,EAAQ,EAAA,CAAA,EAJH,WAAA,CAAA;AAMX,MAAMC,kBAAkBC,aAAAA,CAAAA;EArG/B;;;EAsGEC,IAAAA,GAAO,OAAA;EACPC,WAAAA,GAAc,CAAA,0EAAA,CAAA;EAEEC,OAAAA,GAAyDC,mBAAAA,CAAQC,KAAKC,KAAAA,CAAM;IAC1FC,SAAAA,EAAW;AAAC,MAAA,MAAA;AAAQ,MAAA,QAAA;AAAU,MAAA;;IAC9BC,OAAAA,EAAS;GACX,CAAA;EAGAC,WAAAA,GAAc;AACZ,IAAA,MAAMC,WAAAA,GAAcC,MAAEC,MAAAA,CAAO;AAC3BC,MAAAA,KAAAA,EAAOF,MAAEG,UAAAA,CAAW/C,UAAAA,CAAAA,CAAYgD,OAAAA,CAAQhD,WAAWC,GAAG,CAAA;AACtD6B,MAAAA,KAAAA,EAAOc,KAAAA,CAAEK,MAAAA,EAAM,CAAGC,GAAAA,CAAI,CAAA;KACxB,CAAA;AAEA,IAAA,OAAON,MACJC,MAAAA,CAAO;MACNM,GAAAA,EAAKP,KAAAA,CAAEQ,MAAMR,KAAAA,CAAEK,MAAAA,GAASC,GAAAA,CAAI,CAAA,CAAA,CAAA,CAAIG,QAAAA,EAAQ;AACxCC,MAAAA,YAAAA,EAAcV,MACXC,MAAAA,CAAO;AACNU,QAAAA,OAAAA,EAASX,MAAEQ,KAAAA,CAAMT,WAAAA,EAAaa,QAAAA,EAAQ,CAAGC,SAAS,6BAAA,CAAA;AAClDC,QAAAA,OAAAA,EAASd,MAAEQ,KAAAA,CAAMT,WAAAA,EAAaU,QAAAA,EAAQ,CAAGI,SAAS,6BAAA;AACpD,OAAA,EACCJ,QAAAA,EAAQ;MACXM,KAAAA,EAAOf,KAAAA,CAAEgB,QAAM,CAAGC,GAAAA,GAAMX,GAAAA,CAAI,CAAA,CAAA,CAAGF,OAAAA,CAAQ,CAAA,CAAA;AACvCc,MAAAA,UAAAA,EAAYlB,KAAAA,CAAEgB,MAAAA,EAAM,CAAGC,GAAAA,EAAG,CAAGX,GAAAA,CAAI,CAAA,CAAA,CAAGa,GAAAA,CAAI,GAAA,CAAA,CAAKf,OAAAA,CAAQ,CAAA;KACvD,CAAA,CACCS,SAAS,mCAAA,CAAA;AACd;EAEA;AACE,IAAA,IAAA,CAAKO,QAAAA,EAAQ;AACf;AAEUC,EAAAA,aAAAA,CACRC,QACAC,QAAAA,EACqC;AACrC,IAAA,KAAA,CAAMF,aAAAA,CAAcC,QAAQC,QAAAA,CAAAA;AAC5B,IAAA,IAAI3C,cAAAA,CAAQ2C,SAAShB,GAAAA,IAAO,EAAE,CAAA,IAAK,CAACgB,SAASb,YAAAA,EAAc;AACzD,MAAA,MAAM,IAAIc,kCACR,CAAA,oFAAA,CAAsF,CAAA;AAE1F;AACF;AAEUC,EAAAA,cAAAA,CAAeC,KAAAA,EAA+B;AACtD,IAAA,OAAOC,2BAAAA,CAAgB;AACrBZ,MAAAA,KAAAA,EAAOW,KAAAA,CAAMX,KAAAA;AACba,MAAAA,WAAAA,EAAaF,KAAAA,CAAMR,UAAAA;MACnBW,OAAAA,EAASjD,cAAAA,CAAQ8C,KAAAA,CAAMnB,GAAAA,IAAO,EAAE,IAAIuB,MAAAA,GAAYJ,KAAAA,CAAMnB,GAAAA,EAAKwB,GAAAA,CAAI9C,SAAAA,CAAAA;AAC/DyB,MAAAA,YAAAA,EACEgB,MAAMhB,YAAAA,IACN;AACEgB,QAAAA,KAAAA,CAAMhB,aAAaC,OAAAA,CAChBoB,GAAAA,CAAI,CAACC,GAAAA,KAAQ,GAAGnE,iBAAAA,CAAkBmE,GAAAA,CAAI9B,KAAK,CAAC,IAAI8B,GAAAA,CAAI9C,KAAK,EAAE,CAAA,CAC3D+C,IAAAA,CAAK3D,WAAWC,GAAG,CAAA;AACrBmD,QAAAA,CAAAA,KAAAA,CAAMhB,aAAaI,OAAAA,IAAW,IAC5BiB,GAAAA,CAAI,CAACC,QAAQ,CAAA,EAAGnE,iBAAAA,CAAkBmE,IAAI9B,KAAK,CAAC,IAAI8B,GAAAA,CAAI9C,KAAK,EAAE,CAAA,CAC3D+C,IAAAA,CAAK3D,WAAWG,MAAM;AAExByD,OAAAA,CAAAA,MAAAA,CAAOC,OAAAA,CAAAA,CACPF,IAAAA,CAAK3D,UAAAA,CAAWG,MAAM,CAAA;AAC3B2D,MAAAA,MAAAA,EAAQvF,QAAAA,CAASC,SAAAA;AACjBuF,MAAAA,SAAAA,EAAWpF,SAAAA,CAAUE;KACvB,CAAA;AACF;EAEA,MAAgBmF,IAAAA,CACdZ,KAAAA,EACAa,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAMC,MAAAA,GAAS,IAAA,CAAKhB,cAAAA,CAAeC,KAAAA,CAAAA;AACnC,IAAA,MAAMgB,MAAM,CAAA,mCAAA,EAAsCC,kBAAAA,CAAmBF,MAAAA,CAAOG,QAAAA,EAAQ,CAAA,CAAA,CAAA;AACpF,IAAA,MAAMC,QAAAA,GAAW,MAAMC,KAAAA,CAAMJ,GAAAA,EAAK;AAChCK,MAAAA,MAAAA,EAAQP,GAAAA,CAAIO;KACd,CAAA;AACA,IAAA,MAAMC,IAAAA,GAAO,MAAM,IAAA,CAAKC,cAAAA,CAAeJ,QAAAA,CAAAA;AACvC,IAAA,OAAO,IAAInE,gBAAgBsE,IAAAA,CAAAA;AAC7B;AAEA,EAAA,MAAgBC,eAAeJ,QAAAA,EAA4C;AACzE,IAAA,MAAMK,MAAAA,GAAS,IAAIC,uBAAAA,CAAU;MAC3BC,sBAAAA,EAAwB,IAAA;MACxBC,oBAAAA,EAAsB,KAAA;MACtBC,mBAAAA,EAAqB,IAAA;MACrBC,mBAAAA,EAAqB,KAAA;MACrBC,aAAAA,EAAe,QAAA;MACfC,gBAAAA,EAAkB,IAAA;MAClBC,kBAAAA,EAAoB;QAAEC,GAAAA,EAAK,KAAA;QAAOC,YAAAA,EAAc;AAAK,OAAA;MACrDC,mBAAAA,EAAqB,KAAA;MACrBC,aAAAA,EAAe,IAAA;MACfC,aAAAA,EAAe,KAAA;MACfC,cAAAA,EAAgB,IAAA;MAChBC,YAAAA,EAAc,OAAA;MACdC,UAAAA,EAAY,IAAA;MACZC,iBAAAA,EAAmB;KACrB,CAAA;AAEA,IAAA,MAAMC,IAAAA,GAAO,MAAMvB,QAAAA,CAASuB,IAAAA,EAAI;AAChC,IAAA,MAAMC,UAAAA,GAAanB,MAAAA,CAAOoB,KAAAA,CAAMF,IAAAA,CAAAA;AAEhC,IAAA,IAAI,CAACvB,SAAS0B,EAAAA,EAAI;AAChB,MAAA,MAAM,IAAIC,mBAAU,kCAAA,EAAoC;AACtD,QAAA,IAAIC,KAAAA,CAAMC,IAAAA,CAAKC,SAAAA,CAAUC,kBAAAA,CAAQP,UAAAA,EAAY;AAAC,UAAA,MAAA;AAAQ,UAAA;WAAUA,UAAAA,CAAAA,EAAa,IAAA,EAAM,CAAA,CAAA;AACpF,OAAA,CAAA;AACH;AAEA,IAAA,IAAItF,OAAAA,GAAiC6F,mBAAQP,UAAAA,EAAY;AAAC,MAAA,MAAA;AAAQ,MAAA;AAAU,KAAA,EAAA,EAAE,CAAA;AAC9EtF,IAAAA,OAAAA,GAAU8F,oBAAU9F,OAAAA,CAAAA;AAEpB,IAAA,OAAO;MACLD,YAAAA,EAAcgG,IAAAA,CAAK3D,GAAAA,CAAIyD,kBAAAA,CAAQP,UAAAA,EAAY;AAAC,QAAA,MAAA;AAAQ,QAAA;SAAiB,CAAA,CAAA,EAAItF,QAAQC,MAAM,CAAA;AACvF+F,MAAAA,UAAAA,EAAYH,mBAAQP,UAAAA,EAAY;AAAC,QAAA,MAAA;AAAQ,QAAA;SAAe,CAAA,CAAA;AACxDW,MAAAA,YAAAA,EAAcJ,mBAAQP,UAAAA,EAAY;AAAC,QAAA,MAAA;AAAQ,QAAA;SAAiB,CAAA,CAAA;AAC5DtF,MAAAA,OAAAA,EAASA,OAAAA,CAAQgD,GAAAA,CAAI,CAACkD,KAAAA,KACpBC,aAAAA,CACE;QACEC,EAAAA,EAAIlG,SAAAA,CAAUgG,MAAME,EAAE,CAAA;AACtBzC,QAAAA,GAAAA,EAAKuC,KAAAA,CAAME,EAAAA;AACXpH,QAAAA,KAAAA,EAAOkH,KAAAA,CAAMlH,KAAAA;AACbqH,QAAAA,OAAAA,EAASH,KAAAA,CAAMG,OAAAA;AACfC,QAAAA,SAAAA,EAAWJ,KAAAA,CAAMI,SAAAA;AACjBC,QAAAA,OAAAA,EAASL,KAAAA,CAAMK,OAAAA;QACfC,OAAAA,EAASV,mBAAAA,CAAUI,MAAMjH,MAAM,CAAA,CAC5BkE,OAAOC,OAAAA,CAAAA,CACPJ,GAAAA,CAAI,CAAC/D,MAAAA,MAAiB;AACrBsB,UAAAA,IAAAA,EAAMtB,MAAAA,CAAOsB,IAAAA;AACbkG,UAAAA,WAAAA,EAAaX,mBAAAA,CAAU7G,MAAAA,CAAOwH,WAAAA,IAAe,EAAE;SACjD,CAAA,CAAA;AACFC,QAAAA,GAAAA,EAAKR,KAAAA,CAAMQ,GAAAA;AACXvH,QAAAA,OAAAA,EAAS+G,KAAAA,CAAM/G,OAAAA;AACfwH,QAAAA,gBAAAA,EAAkBT,KAAAA,CAAMU,WAAAA;AACxBC,QAAAA,eAAAA,EAAiBX,KAAAA,CAAMY,gBAAAA;AACvBC,QAAAA,UAAAA,EAAYjB,mBAAAA,CAAUI,KAAAA,CAAMc,QAAQ,CAAA,CAAE7D,OAAOC,OAAAA,CAAAA;AAC7C6D,QAAAA,KAAAA,EAAOnB,mBAAAA,CAAUI,KAAAA,CAAMgB,IAAI,CAAA,CAAE/D,OAAOC,OAAAA;AACtC,OAAA,EACA+D,gBAAAA,CAAAA;AAGN,KAAA;AACF;AACF","file":"arxiv.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolError,\n ToolInput,\n ToolInputValidationError,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { isDefined, isEmpty, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ntype ToolOptions = BaseToolOptions;\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SortType = {\n RELEVANCE: \"relevance\",\n LAST_UPDATED_DATE: \"lastUpdatedDate\",\n SUBMITTED_DATE: \"submittedDate\",\n} as const;\n\nexport const SortOrder = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\",\n} as const;\n\nexport const FilterType = {\n ALL: \"all\",\n TITLE: \"title\",\n AUTHOR: \"author\",\n ABSTRACT: \"abstract\",\n COMMENT: \"comment\",\n JOURNAL_REFERENCE: \"journal_reference\",\n SUBJECT_CATEGORY: \"subject_category\",\n REPORT_NUMBER: \"report_number\",\n} as const;\n\nconst FilterTypeMapping: Record<ValueOf<typeof FilterType>, string> = {\n all: \"all\",\n title: \"ti\",\n author: \"au\",\n abstract: \"abs\",\n comment: \"co\",\n journal_reference: \"jr\",\n subject_category: \"cat\",\n report_number: \"rn\",\n};\n\nexport const Separators = {\n AND: \"+AND+\",\n OR: \"+OR+\",\n ANDNOT: \"+ANDNOT+\",\n} as const;\n\nexport interface ArXivResponse {\n totalResults: number;\n startIndex: number;\n itemsPerPage: number;\n entries: {\n id: string;\n title: string;\n summary: string;\n published: string;\n updated: string;\n authors: { name: string; affiliation: string[] }[];\n doi: string;\n comment: string;\n journalReference: string;\n primaryCategory: string;\n categories: string[];\n links: string[];\n }[];\n}\n\nexport class ArXivToolOutput extends JSONToolOutput<ArXivResponse> {\n isEmpty(): boolean {\n return !this.result || this.result.totalResults === 0 || this.result.entries.length === 0;\n }\n}\n\nconst extractId = (value: string) =>\n value\n .replace(\"https://arxiv.org/abs/\", \"\")\n .replace(\"https://arxiv.org/pdf/\", \"\")\n .replace(/v\\d$/, \"\");\n\nexport class ArXivTool extends Tool<ArXivToolOutput, ToolOptions, ToolRunOptions> {\n name = \"ArXiv\";\n description = `Retrieves research articles published on arXiv including related metadata.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, ArXivToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"arxiv\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n const entrySchema = z.object({\n field: z.nativeEnum(FilterType).default(FilterType.ALL),\n value: z.string().min(1),\n });\n\n return z\n .object({\n ids: z.array(z.string().min(1)).optional(),\n search_query: z\n .object({\n include: z.array(entrySchema).nonempty().describe(\"Filters to include results.\"),\n exclude: z.array(entrySchema).optional().describe(\"Filters to exclude results.\"),\n })\n .optional(),\n start: z.number().int().min(0).default(0),\n maxResults: z.number().int().min(1).max(100).default(5),\n })\n .describe(\"Sorting by date is not supported.\");\n }\n\n static {\n this.register();\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n super.validateInput(schema, rawInput);\n if (isEmpty(rawInput.ids ?? []) && !rawInput.search_query) {\n throw new ToolInputValidationError(\n `The 'search_query' property must be non-empty if the 'ids' property is not provided!`,\n );\n }\n }\n\n protected _prepareParams(input: ToolInput<typeof this>) {\n return createURLParams({\n start: input.start,\n max_results: input.maxResults,\n id_list: isEmpty(input.ids ?? []) ? undefined : input.ids?.map(extractId),\n search_query:\n input.search_query &&\n [\n input.search_query.include\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.AND),\n (input.search_query.exclude ?? [])\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.ANDNOT),\n ]\n .filter(Boolean)\n .join(Separators.ANDNOT),\n sortBy: SortType.RELEVANCE,\n sortOrder: SortOrder.DESCENDING,\n });\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = this._prepareParams(input);\n const url = `https://export.arxiv.org/api/query?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n const data = await this._parseResponse(response);\n return new ArXivToolOutput(data);\n }\n\n protected async _parseResponse(response: Response): Promise<ArXivResponse> {\n const parser = new XMLParser({\n allowBooleanAttributes: true,\n alwaysCreateTextNode: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n cdataPropName: \"#cdata\",\n ignoreAttributes: true,\n numberParseOptions: { hex: false, leadingZeros: true },\n parseAttributeValue: false,\n parseTagValue: true,\n preserveOrder: false,\n removeNSPrefix: true,\n textNodeName: \"#text\",\n trimValues: true,\n ignoreDeclaration: true,\n });\n\n const text = await response.text();\n const parsedData = parser.parse(text);\n\n if (!response.ok) {\n throw new ToolError(\"Request to ArXiv API has failed!\", [\n new Error(JSON.stringify(getProp(parsedData, [\"feed\", \"entry\"], parsedData), null, 2)),\n ]);\n }\n\n let entries: Record<string, any>[] = getProp(parsedData, [\"feed\", \"entry\"], []);\n entries = castArray(entries);\n\n return {\n totalResults: Math.max(getProp(parsedData, [\"feed\", \"totalResults\"], 0), entries.length),\n startIndex: getProp(parsedData, [\"feed\", \"startIndex\"], 0),\n itemsPerPage: getProp(parsedData, [\"feed\", \"itemsPerPage\"], 0),\n entries: entries.map((entry) =>\n pickBy(\n {\n id: extractId(entry.id),\n url: entry.id,\n title: entry.title,\n summary: entry.summary,\n published: entry.published,\n updated: entry.updated,\n authors: castArray(entry.author)\n .filter(Boolean)\n .map((author: any) => ({\n name: author.name,\n affiliation: castArray(author.affiliation ?? []),\n })),\n doi: entry.doi,\n comment: entry.comment,\n journalReference: entry.journal_ref,\n primaryCategory: entry.primary_category,\n categories: castArray(entry.category).filter(Boolean),\n links: castArray(entry.link).filter(Boolean),\n },\n isDefined,\n ),\n ),\n };\n }\n}\n"]}
@@ -9,24 +9,13 @@ import '../internals/helpers/guards.cjs';
9
9
  import '../internals/serializable.cjs';
10
10
  import 'promise-based-task';
11
11
  import '../cache/base.cjs';
12
- import '../emitter-D5Mu0EEH.cjs';
12
+ import '../emitter-DWEsd-ud.cjs';
13
13
  import '../internals/helpers/promise.cjs';
14
14
  import 'zod-to-json-schema';
15
15
 
16
16
  /**
17
17
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
18
- *
19
- * Licensed under the Apache License, Version 2.0 (the "License");
20
- * you may not use this file except in compliance with the License.
21
- * You may obtain a copy of the License at
22
- *
23
- * http://www.apache.org/licenses/LICENSE-2.0
24
- *
25
- * Unless required by applicable law or agreed to in writing, software
26
- * distributed under the License is distributed on an "AS IS" BASIS,
27
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28
- * See the License for the specific language governing permissions and
29
- * limitations under the License.
18
+ * SPDX-License-Identifier: Apache-2.0
30
19
  */
31
20
 
32
21
  type ToolOptions = BaseToolOptions;
@@ -9,24 +9,13 @@ import '../internals/helpers/guards.js';
9
9
  import '../internals/serializable.js';
10
10
  import 'promise-based-task';
11
11
  import '../cache/base.js';
12
- import '../emitter-C3dO-s2P.js';
12
+ import '../emitter-C9nwGLt6.js';
13
13
  import '../internals/helpers/promise.js';
14
14
  import 'zod-to-json-schema';
15
15
 
16
16
  /**
17
17
  * Copyright 2025 © BeeAI a Series of LF Projects, LLC
18
- *
19
- * Licensed under the Apache License, Version 2.0 (the "License");
20
- * you may not use this file except in compliance with the License.
21
- * You may obtain a copy of the License at
22
- *
23
- * http://www.apache.org/licenses/LICENSE-2.0
24
- *
25
- * Unless required by applicable law or agreed to in writing, software
26
- * distributed under the License is distributed on an "AS IS" BASIS,
27
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
28
- * See the License for the specific language governing permissions and
29
- * limitations under the License.
18
+ * SPDX-License-Identifier: Apache-2.0
30
19
  */
31
20
 
32
21
  type ToolOptions = BaseToolOptions;
@@ -1 +1 @@
1
- {"version":3,"sources":["arxiv.ts"],"names":["SortType","RELEVANCE","LAST_UPDATED_DATE","SUBMITTED_DATE","SortOrder","ASCENDING","DESCENDING","FilterType","ALL","TITLE","AUTHOR","ABSTRACT","COMMENT","JOURNAL_REFERENCE","SUBJECT_CATEGORY","REPORT_NUMBER","FilterTypeMapping","all","title","author","abstract","comment","journal_reference","subject_category","report_number","Separators","AND","OR","ANDNOT","ArXivToolOutput","JSONToolOutput","isEmpty","result","totalResults","entries","length","extractId","value","replace","ArXivTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","entrySchema","z","object","field","nativeEnum","default","string","min","ids","array","optional","search_query","include","nonempty","describe","exclude","start","number","int","maxResults","max","register","validateInput","schema","rawInput","ToolInputValidationError","_prepareParams","input","createURLParams","max_results","id_list","undefined","map","tag","join","filter","Boolean","sortBy","sortOrder","_run","_options","run","params","url","decodeURIComponent","toString","response","fetch","signal","data","_parseResponse","parser","XMLParser","allowBooleanAttributes","alwaysCreateTextNode","attributeNamePrefix","attributesGroupName","cdataPropName","ignoreAttributes","numberParseOptions","hex","leadingZeros","parseAttributeValue","parseTagValue","preserveOrder","removeNSPrefix","textNodeName","trimValues","ignoreDeclaration","text","parsedData","parse","ok","ToolError","Error","JSON","stringify","getProp","castArray","Math","startIndex","itemsPerPage","entry","pickBy","id","summary","published","updated","authors","affiliation","doi","journalReference","journal_ref","primaryCategory","primary_category","categories","category","links","link","isDefined"],"mappings":"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","file":"arxiv.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolError,\n ToolInput,\n ToolInputValidationError,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { isDefined, isEmpty, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ntype ToolOptions = BaseToolOptions;\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SortType = {\n RELEVANCE: \"relevance\",\n LAST_UPDATED_DATE: \"lastUpdatedDate\",\n SUBMITTED_DATE: \"submittedDate\",\n} as const;\n\nexport const SortOrder = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\",\n} as const;\n\nexport const FilterType = {\n ALL: \"all\",\n TITLE: \"title\",\n AUTHOR: \"author\",\n ABSTRACT: \"abstract\",\n COMMENT: \"comment\",\n JOURNAL_REFERENCE: \"journal_reference\",\n SUBJECT_CATEGORY: \"subject_category\",\n REPORT_NUMBER: \"report_number\",\n} as const;\n\nconst FilterTypeMapping: Record<ValueOf<typeof FilterType>, string> = {\n all: \"all\",\n title: \"ti\",\n author: \"au\",\n abstract: \"abs\",\n comment: \"co\",\n journal_reference: \"jr\",\n subject_category: \"cat\",\n report_number: \"rn\",\n};\n\nexport const Separators = {\n AND: \"+AND+\",\n OR: \"+OR+\",\n ANDNOT: \"+ANDNOT+\",\n} as const;\n\nexport interface ArXivResponse {\n totalResults: number;\n startIndex: number;\n itemsPerPage: number;\n entries: {\n id: string;\n title: string;\n summary: string;\n published: string;\n updated: string;\n authors: { name: string; affiliation: string[] }[];\n doi: string;\n comment: string;\n journalReference: string;\n primaryCategory: string;\n categories: string[];\n links: string[];\n }[];\n}\n\nexport class ArXivToolOutput extends JSONToolOutput<ArXivResponse> {\n isEmpty(): boolean {\n return !this.result || this.result.totalResults === 0 || this.result.entries.length === 0;\n }\n}\n\nconst extractId = (value: string) =>\n value\n .replace(\"https://arxiv.org/abs/\", \"\")\n .replace(\"https://arxiv.org/pdf/\", \"\")\n .replace(/v\\d$/, \"\");\n\nexport class ArXivTool extends Tool<ArXivToolOutput, ToolOptions, ToolRunOptions> {\n name = \"ArXiv\";\n description = `Retrieves research articles published on arXiv including related metadata.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, ArXivToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"arxiv\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n const entrySchema = z.object({\n field: z.nativeEnum(FilterType).default(FilterType.ALL),\n value: z.string().min(1),\n });\n\n return z\n .object({\n ids: z.array(z.string().min(1)).optional(),\n search_query: z\n .object({\n include: z.array(entrySchema).nonempty().describe(\"Filters to include results.\"),\n exclude: z.array(entrySchema).optional().describe(\"Filters to exclude results.\"),\n })\n .optional(),\n start: z.number().int().min(0).default(0),\n maxResults: z.number().int().min(1).max(100).default(5),\n })\n .describe(\"Sorting by date is not supported.\");\n }\n\n static {\n this.register();\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n super.validateInput(schema, rawInput);\n if (isEmpty(rawInput.ids ?? []) && !rawInput.search_query) {\n throw new ToolInputValidationError(\n `The 'search_query' property must be non-empty if the 'ids' property is not provided!`,\n );\n }\n }\n\n protected _prepareParams(input: ToolInput<typeof this>) {\n return createURLParams({\n start: input.start,\n max_results: input.maxResults,\n id_list: isEmpty(input.ids ?? []) ? undefined : input.ids?.map(extractId),\n search_query:\n input.search_query &&\n [\n input.search_query.include\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.AND),\n (input.search_query.exclude ?? [])\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.ANDNOT),\n ]\n .filter(Boolean)\n .join(Separators.ANDNOT),\n sortBy: SortType.RELEVANCE,\n sortOrder: SortOrder.DESCENDING,\n });\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = this._prepareParams(input);\n const url = `https://export.arxiv.org/api/query?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n const data = await this._parseResponse(response);\n return new ArXivToolOutput(data);\n }\n\n protected async _parseResponse(response: Response): Promise<ArXivResponse> {\n const parser = new XMLParser({\n allowBooleanAttributes: true,\n alwaysCreateTextNode: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n cdataPropName: \"#cdata\",\n ignoreAttributes: true,\n numberParseOptions: { hex: false, leadingZeros: true },\n parseAttributeValue: false,\n parseTagValue: true,\n preserveOrder: false,\n removeNSPrefix: true,\n textNodeName: \"#text\",\n trimValues: true,\n ignoreDeclaration: true,\n });\n\n const text = await response.text();\n const parsedData = parser.parse(text);\n\n if (!response.ok) {\n throw new ToolError(\"Request to ArXiv API has failed!\", [\n new Error(JSON.stringify(getProp(parsedData, [\"feed\", \"entry\"], parsedData), null, 2)),\n ]);\n }\n\n let entries: Record<string, any>[] = getProp(parsedData, [\"feed\", \"entry\"], []);\n entries = castArray(entries);\n\n return {\n totalResults: Math.max(getProp(parsedData, [\"feed\", \"totalResults\"], 0), entries.length),\n startIndex: getProp(parsedData, [\"feed\", \"startIndex\"], 0),\n itemsPerPage: getProp(parsedData, [\"feed\", \"itemsPerPage\"], 0),\n entries: entries.map((entry) =>\n pickBy(\n {\n id: extractId(entry.id),\n url: entry.id,\n title: entry.title,\n summary: entry.summary,\n published: entry.published,\n updated: entry.updated,\n authors: castArray(entry.author)\n .filter(Boolean)\n .map((author: any) => ({\n name: author.name,\n affiliation: castArray(author.affiliation ?? []),\n })),\n doi: entry.doi,\n comment: entry.comment,\n journalReference: entry.journal_ref,\n primaryCategory: entry.primary_category,\n categories: castArray(entry.category).filter(Boolean),\n links: castArray(entry.link).filter(Boolean),\n },\n isDefined,\n ),\n ),\n };\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/tools/arxiv.ts"],"names":["SortType","RELEVANCE","LAST_UPDATED_DATE","SUBMITTED_DATE","SortOrder","ASCENDING","DESCENDING","FilterType","ALL","TITLE","AUTHOR","ABSTRACT","COMMENT","JOURNAL_REFERENCE","SUBJECT_CATEGORY","REPORT_NUMBER","FilterTypeMapping","all","title","author","abstract","comment","journal_reference","subject_category","report_number","Separators","AND","OR","ANDNOT","ArXivToolOutput","JSONToolOutput","isEmpty","result","totalResults","entries","length","extractId","value","replace","ArXivTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","entrySchema","z","object","field","nativeEnum","default","string","min","ids","array","optional","search_query","include","nonempty","describe","exclude","start","number","int","maxResults","max","register","validateInput","schema","rawInput","ToolInputValidationError","_prepareParams","input","createURLParams","max_results","id_list","undefined","map","tag","join","filter","Boolean","sortBy","sortOrder","_run","_options","run","params","url","decodeURIComponent","toString","response","fetch","signal","data","_parseResponse","parser","XMLParser","allowBooleanAttributes","alwaysCreateTextNode","attributeNamePrefix","attributesGroupName","cdataPropName","ignoreAttributes","numberParseOptions","hex","leadingZeros","parseAttributeValue","parseTagValue","preserveOrder","removeNSPrefix","textNodeName","trimValues","ignoreDeclaration","text","parsedData","parse","ok","ToolError","Error","JSON","stringify","getProp","castArray","Math","startIndex","itemsPerPage","entry","pickBy","id","summary","published","updated","authors","affiliation","doi","journalReference","journal_ref","primaryCategory","primary_category","categories","category","links","link","isDefined"],"mappings":"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","file":"arxiv.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolError,\n ToolInput,\n ToolInputValidationError,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { isDefined, isEmpty, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ntype ToolOptions = BaseToolOptions;\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SortType = {\n RELEVANCE: \"relevance\",\n LAST_UPDATED_DATE: \"lastUpdatedDate\",\n SUBMITTED_DATE: \"submittedDate\",\n} as const;\n\nexport const SortOrder = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\",\n} as const;\n\nexport const FilterType = {\n ALL: \"all\",\n TITLE: \"title\",\n AUTHOR: \"author\",\n ABSTRACT: \"abstract\",\n COMMENT: \"comment\",\n JOURNAL_REFERENCE: \"journal_reference\",\n SUBJECT_CATEGORY: \"subject_category\",\n REPORT_NUMBER: \"report_number\",\n} as const;\n\nconst FilterTypeMapping: Record<ValueOf<typeof FilterType>, string> = {\n all: \"all\",\n title: \"ti\",\n author: \"au\",\n abstract: \"abs\",\n comment: \"co\",\n journal_reference: \"jr\",\n subject_category: \"cat\",\n report_number: \"rn\",\n};\n\nexport const Separators = {\n AND: \"+AND+\",\n OR: \"+OR+\",\n ANDNOT: \"+ANDNOT+\",\n} as const;\n\nexport interface ArXivResponse {\n totalResults: number;\n startIndex: number;\n itemsPerPage: number;\n entries: {\n id: string;\n title: string;\n summary: string;\n published: string;\n updated: string;\n authors: { name: string; affiliation: string[] }[];\n doi: string;\n comment: string;\n journalReference: string;\n primaryCategory: string;\n categories: string[];\n links: string[];\n }[];\n}\n\nexport class ArXivToolOutput extends JSONToolOutput<ArXivResponse> {\n isEmpty(): boolean {\n return !this.result || this.result.totalResults === 0 || this.result.entries.length === 0;\n }\n}\n\nconst extractId = (value: string) =>\n value\n .replace(\"https://arxiv.org/abs/\", \"\")\n .replace(\"https://arxiv.org/pdf/\", \"\")\n .replace(/v\\d$/, \"\");\n\nexport class ArXivTool extends Tool<ArXivToolOutput, ToolOptions, ToolRunOptions> {\n name = \"ArXiv\";\n description = `Retrieves research articles published on arXiv including related metadata.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, ArXivToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"arxiv\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n const entrySchema = z.object({\n field: z.nativeEnum(FilterType).default(FilterType.ALL),\n value: z.string().min(1),\n });\n\n return z\n .object({\n ids: z.array(z.string().min(1)).optional(),\n search_query: z\n .object({\n include: z.array(entrySchema).nonempty().describe(\"Filters to include results.\"),\n exclude: z.array(entrySchema).optional().describe(\"Filters to exclude results.\"),\n })\n .optional(),\n start: z.number().int().min(0).default(0),\n maxResults: z.number().int().min(1).max(100).default(5),\n })\n .describe(\"Sorting by date is not supported.\");\n }\n\n static {\n this.register();\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n super.validateInput(schema, rawInput);\n if (isEmpty(rawInput.ids ?? []) && !rawInput.search_query) {\n throw new ToolInputValidationError(\n `The 'search_query' property must be non-empty if the 'ids' property is not provided!`,\n );\n }\n }\n\n protected _prepareParams(input: ToolInput<typeof this>) {\n return createURLParams({\n start: input.start,\n max_results: input.maxResults,\n id_list: isEmpty(input.ids ?? []) ? undefined : input.ids?.map(extractId),\n search_query:\n input.search_query &&\n [\n input.search_query.include\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.AND),\n (input.search_query.exclude ?? [])\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.ANDNOT),\n ]\n .filter(Boolean)\n .join(Separators.ANDNOT),\n sortBy: SortType.RELEVANCE,\n sortOrder: SortOrder.DESCENDING,\n });\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = this._prepareParams(input);\n const url = `https://export.arxiv.org/api/query?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n const data = await this._parseResponse(response);\n return new ArXivToolOutput(data);\n }\n\n protected async _parseResponse(response: Response): Promise<ArXivResponse> {\n const parser = new XMLParser({\n allowBooleanAttributes: true,\n alwaysCreateTextNode: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n cdataPropName: \"#cdata\",\n ignoreAttributes: true,\n numberParseOptions: { hex: false, leadingZeros: true },\n parseAttributeValue: false,\n parseTagValue: true,\n preserveOrder: false,\n removeNSPrefix: true,\n textNodeName: \"#text\",\n trimValues: true,\n ignoreDeclaration: true,\n });\n\n const text = await response.text();\n const parsedData = parser.parse(text);\n\n if (!response.ok) {\n throw new ToolError(\"Request to ArXiv API has failed!\", [\n new Error(JSON.stringify(getProp(parsedData, [\"feed\", \"entry\"], parsedData), null, 2)),\n ]);\n }\n\n let entries: Record<string, any>[] = getProp(parsedData, [\"feed\", \"entry\"], []);\n entries = castArray(entries);\n\n return {\n totalResults: Math.max(getProp(parsedData, [\"feed\", \"totalResults\"], 0), entries.length),\n startIndex: getProp(parsedData, [\"feed\", \"startIndex\"], 0),\n itemsPerPage: getProp(parsedData, [\"feed\", \"itemsPerPage\"], 0),\n entries: entries.map((entry) =>\n pickBy(\n {\n id: extractId(entry.id),\n url: entry.id,\n title: entry.title,\n summary: entry.summary,\n published: entry.published,\n updated: entry.updated,\n authors: castArray(entry.author)\n .filter(Boolean)\n .map((author: any) => ({\n name: author.name,\n affiliation: castArray(author.affiliation ?? []),\n })),\n doi: entry.doi,\n comment: entry.comment,\n journalReference: entry.journal_ref,\n primaryCategory: entry.primary_category,\n categories: castArray(entry.category).filter(Boolean),\n links: castArray(entry.link).filter(Boolean),\n },\n isDefined,\n ),\n ),\n };\n }\n}\n"]}