beeai-framework 0.1.28 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs.map +1 -1
  2. package/dist/adapters/a2a/agents/agent.d.cts +2 -2
  3. package/dist/adapters/a2a/agents/agent.d.ts +2 -2
  4. package/dist/adapters/a2a/agents/agent.js.map +1 -1
  5. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  6. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  7. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  8. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  9. package/dist/adapters/a2a/agents/utils.cjs +52 -11
  10. package/dist/adapters/a2a/agents/utils.cjs.map +1 -1
  11. package/dist/adapters/a2a/agents/utils.js +52 -11
  12. package/dist/adapters/a2a/agents/utils.js.map +1 -1
  13. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -1
  14. package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
  15. package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
  16. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -1
  17. package/dist/adapters/a2a/serve/server.cjs.map +1 -1
  18. package/dist/adapters/a2a/serve/server.d.cts +2 -2
  19. package/dist/adapters/a2a/serve/server.d.ts +2 -2
  20. package/dist/adapters/a2a/serve/server.js.map +1 -1
  21. package/dist/adapters/acp/agents/agent.cjs.map +1 -1
  22. package/dist/adapters/acp/agents/agent.d.cts +2 -2
  23. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  24. package/dist/adapters/acp/agents/agent.js.map +1 -1
  25. package/dist/adapters/acp/agents/events.d.cts +1 -1
  26. package/dist/adapters/acp/agents/events.d.ts +1 -1
  27. package/dist/adapters/agentstack/agents/agent.cjs.map +1 -1
  28. package/dist/adapters/agentstack/agents/agent.d.cts +2 -2
  29. package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
  30. package/dist/adapters/agentstack/agents/agent.js.map +1 -1
  31. package/dist/adapters/agentstack/agents/events.d.cts +1 -1
  32. package/dist/adapters/agentstack/agents/events.d.ts +1 -1
  33. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  34. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
  35. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
  36. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  37. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  38. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  39. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  40. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
  41. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
  42. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  43. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  44. package/dist/adapters/anthropic/backend/chat.d.cts +3 -3
  45. package/dist/adapters/anthropic/backend/chat.d.ts +3 -3
  46. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  47. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  48. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  49. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  50. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  51. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  52. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  53. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  54. package/dist/adapters/azure-openai/backend/chat.d.cts +3 -3
  55. package/dist/adapters/azure-openai/backend/chat.d.ts +3 -3
  56. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  57. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  58. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  59. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  60. package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
  61. package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
  62. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  63. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  64. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  65. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  66. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  67. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  68. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  69. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  70. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  71. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/google-vertex/backend/chat.d.cts +3 -3
  73. package/dist/adapters/google-vertex/backend/chat.d.ts +3 -3
  74. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  75. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  76. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  77. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  78. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  79. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  80. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  81. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  82. package/dist/adapters/groq/backend/chat.d.cts +3 -3
  83. package/dist/adapters/groq/backend/chat.d.ts +3 -3
  84. package/dist/adapters/groq/backend/chat.js.map +1 -1
  85. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  86. package/dist/adapters/groq/backend/client.js.map +1 -1
  87. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  88. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  89. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  90. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  91. package/dist/adapters/langchain/backend/chat.cjs +6 -28
  92. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  93. package/dist/adapters/langchain/backend/chat.d.cts +6 -5
  94. package/dist/adapters/langchain/backend/chat.d.ts +6 -5
  95. package/dist/adapters/langchain/backend/chat.js +6 -28
  96. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  97. package/dist/adapters/langchain/backend/embedding.cjs +3 -2
  98. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  99. package/dist/adapters/langchain/backend/embedding.d.cts +3 -3
  100. package/dist/adapters/langchain/backend/embedding.d.ts +3 -3
  101. package/dist/adapters/langchain/backend/embedding.js +3 -2
  102. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  103. package/dist/adapters/langchain/backend/utils.cjs +328 -0
  104. package/dist/adapters/langchain/backend/utils.cjs.map +1 -0
  105. package/dist/adapters/langchain/backend/utils.d.cts +39 -0
  106. package/dist/adapters/langchain/backend/utils.d.ts +39 -0
  107. package/dist/adapters/langchain/backend/utils.js +324 -0
  108. package/dist/adapters/langchain/backend/utils.js.map +1 -0
  109. package/dist/adapters/langchain/tools.cjs.map +1 -1
  110. package/dist/adapters/langchain/tools.d.cts +2 -2
  111. package/dist/adapters/langchain/tools.d.ts +2 -2
  112. package/dist/adapters/langchain/tools.js.map +1 -1
  113. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  114. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  115. package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
  116. package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
  117. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  118. package/dist/adapters/mcp/serve/server.js.map +1 -1
  119. package/dist/adapters/minimax/backend/chat.cjs +25 -0
  120. package/dist/adapters/minimax/backend/chat.cjs.map +1 -0
  121. package/dist/adapters/minimax/backend/chat.d.cts +38 -0
  122. package/dist/adapters/minimax/backend/chat.d.ts +38 -0
  123. package/dist/adapters/minimax/backend/chat.js +23 -0
  124. package/dist/adapters/minimax/backend/chat.js.map +1 -0
  125. package/dist/adapters/minimax/backend/client.cjs +31 -0
  126. package/dist/adapters/minimax/backend/client.cjs.map +1 -0
  127. package/dist/adapters/minimax/backend/client.d.cts +17 -0
  128. package/dist/adapters/minimax/backend/client.d.ts +17 -0
  129. package/dist/adapters/minimax/backend/client.js +29 -0
  130. package/dist/adapters/minimax/backend/client.js.map +1 -0
  131. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  132. package/dist/adapters/ollama/backend/chat.d.cts +2 -2
  133. package/dist/adapters/ollama/backend/chat.d.ts +2 -2
  134. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  135. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  136. package/dist/adapters/ollama/backend/client.js.map +1 -1
  137. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  138. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  139. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  140. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  141. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  142. package/dist/adapters/openai/backend/chat.d.cts +2 -2
  143. package/dist/adapters/openai/backend/chat.d.ts +2 -2
  144. package/dist/adapters/openai/backend/chat.js.map +1 -1
  145. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  146. package/dist/adapters/openai/backend/client.js.map +1 -1
  147. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  148. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  149. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  150. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  151. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  152. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  153. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  154. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  155. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  156. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  157. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  158. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  159. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  160. package/dist/adapters/vercel/backend/utils.d.cts +2 -2
  161. package/dist/adapters/vercel/backend/utils.d.ts +2 -2
  162. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  163. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  164. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  165. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  166. package/dist/adapters/watsonx/backend/chat.js +1 -1
  167. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  168. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  169. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  170. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  171. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  172. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  173. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  174. package/dist/adapters/xai/backend/chat.cjs.map +1 -1
  175. package/dist/adapters/xai/backend/chat.d.cts +2 -2
  176. package/dist/adapters/xai/backend/chat.d.ts +2 -2
  177. package/dist/adapters/xai/backend/chat.js.map +1 -1
  178. package/dist/adapters/xai/backend/client.cjs.map +1 -1
  179. package/dist/adapters/xai/backend/client.js.map +1 -1
  180. package/dist/{agent-BAVf6-xf.d.ts → agent-s3uhvAba.d.ts} +5 -5
  181. package/dist/{agent-DHO-oJQf.d.cts → agent-zfT__iq9.d.cts} +5 -5
  182. package/dist/agents/base.cjs.map +1 -1
  183. package/dist/agents/base.d.cts +2 -2
  184. package/dist/agents/base.d.ts +2 -2
  185. package/dist/agents/base.js.map +1 -1
  186. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  187. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  188. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  189. package/dist/agents/experimental/replan/agent.js.map +1 -1
  190. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  191. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  192. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  193. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  194. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  195. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  196. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  197. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  198. package/dist/agents/experimental/streamlit/prompts.cjs +2 -2
  199. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  200. package/dist/agents/experimental/streamlit/prompts.js +2 -2
  201. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  202. package/dist/agents/react/agent.cjs +6 -6
  203. package/dist/agents/react/agent.cjs.map +1 -1
  204. package/dist/agents/react/agent.d.cts +4 -4
  205. package/dist/agents/react/agent.d.ts +4 -4
  206. package/dist/agents/react/agent.js.map +1 -1
  207. package/dist/agents/react/prompts.cjs.map +1 -1
  208. package/dist/agents/react/prompts.d.cts +1 -1
  209. package/dist/agents/react/prompts.d.ts +1 -1
  210. package/dist/agents/react/prompts.js.map +1 -1
  211. package/dist/agents/react/runners/base.cjs.map +1 -1
  212. package/dist/agents/react/runners/base.d.cts +4 -4
  213. package/dist/agents/react/runners/base.d.ts +4 -4
  214. package/dist/agents/react/runners/base.js.map +1 -1
  215. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  216. package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -1
  217. package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -1
  218. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  219. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  220. package/dist/agents/react/runners/deep-think/runner.d.cts +5 -5
  221. package/dist/agents/react/runners/deep-think/runner.d.ts +5 -5
  222. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  223. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  224. package/dist/agents/react/runners/default/runner.d.cts +5 -5
  225. package/dist/agents/react/runners/default/runner.d.ts +5 -5
  226. package/dist/agents/react/runners/default/runner.js.map +1 -1
  227. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  228. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  229. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  230. package/dist/agents/react/runners/granite/prompts.d.cts +1 -1
  231. package/dist/agents/react/runners/granite/prompts.d.ts +1 -1
  232. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  233. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  234. package/dist/agents/react/runners/granite/runner.d.cts +5 -5
  235. package/dist/agents/react/runners/granite/runner.d.ts +5 -5
  236. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  237. package/dist/agents/react/types.d.cts +2 -2
  238. package/dist/agents/react/types.d.ts +2 -2
  239. package/dist/agents/requirement/agent.cjs.map +1 -1
  240. package/dist/agents/requirement/agent.d.cts +5 -5
  241. package/dist/agents/requirement/agent.d.ts +5 -5
  242. package/dist/agents/requirement/agent.js.map +1 -1
  243. package/dist/agents/requirement/prompts.d.cts +2 -2
  244. package/dist/agents/requirement/prompts.d.ts +2 -2
  245. package/dist/agents/requirement/requirements/conditional.cjs.map +1 -1
  246. package/dist/agents/requirement/requirements/conditional.d.cts +5 -5
  247. package/dist/agents/requirement/requirements/conditional.d.ts +5 -5
  248. package/dist/agents/requirement/requirements/conditional.js.map +1 -1
  249. package/dist/agents/requirement/requirements/requirement.cjs.map +1 -1
  250. package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
  251. package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
  252. package/dist/agents/requirement/requirements/requirement.js.map +1 -1
  253. package/dist/agents/requirement/requirements/utils.cjs.map +1 -1
  254. package/dist/agents/requirement/requirements/utils.d.cts +1 -1
  255. package/dist/agents/requirement/requirements/utils.d.ts +1 -1
  256. package/dist/agents/requirement/requirements/utils.js.map +1 -1
  257. package/dist/agents/requirement/runner.cjs.map +1 -1
  258. package/dist/agents/requirement/runner.d.cts +5 -5
  259. package/dist/agents/requirement/runner.d.ts +5 -5
  260. package/dist/agents/requirement/runner.js.map +1 -1
  261. package/dist/agents/requirement/types.d.cts +4 -4
  262. package/dist/agents/requirement/types.d.ts +4 -4
  263. package/dist/agents/requirement/utils/llm.cjs.map +1 -1
  264. package/dist/agents/requirement/utils/llm.d.cts +4 -4
  265. package/dist/agents/requirement/utils/llm.d.ts +4 -4
  266. package/dist/agents/requirement/utils/llm.js.map +1 -1
  267. package/dist/agents/requirement/utils/tool.cjs.map +1 -1
  268. package/dist/agents/requirement/utils/tool.d.cts +4 -4
  269. package/dist/agents/requirement/utils/tool.d.ts +4 -4
  270. package/dist/agents/requirement/utils/tool.js.map +1 -1
  271. package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -1
  272. package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -1
  273. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  274. package/dist/agents/toolCalling/agent.d.cts +4 -4
  275. package/dist/agents/toolCalling/agent.d.ts +4 -4
  276. package/dist/agents/toolCalling/agent.js.map +1 -1
  277. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  278. package/dist/agents/toolCalling/prompts.js.map +1 -1
  279. package/dist/agents/toolCalling/types.d.cts +1 -1
  280. package/dist/agents/toolCalling/types.d.ts +1 -1
  281. package/dist/agents/types.d.cts +2 -2
  282. package/dist/agents/types.d.ts +2 -2
  283. package/dist/backend/backend.cjs.map +1 -1
  284. package/dist/backend/backend.d.cts +3 -3
  285. package/dist/backend/backend.d.ts +3 -3
  286. package/dist/backend/backend.js.map +1 -1
  287. package/dist/backend/chat.cjs.map +1 -1
  288. package/dist/backend/chat.d.cts +2 -2
  289. package/dist/backend/chat.d.ts +2 -2
  290. package/dist/backend/chat.js.map +1 -1
  291. package/dist/backend/client.cjs.map +1 -1
  292. package/dist/backend/client.js.map +1 -1
  293. package/dist/backend/constants.cjs +7 -0
  294. package/dist/backend/constants.cjs.map +1 -1
  295. package/dist/backend/constants.d.cts +5 -0
  296. package/dist/backend/constants.d.ts +5 -0
  297. package/dist/backend/constants.js +7 -0
  298. package/dist/backend/constants.js.map +1 -1
  299. package/dist/backend/core.d.cts +2 -2
  300. package/dist/backend/core.d.ts +2 -2
  301. package/dist/backend/embedding.cjs.map +1 -1
  302. package/dist/backend/embedding.d.cts +2 -2
  303. package/dist/backend/embedding.d.ts +2 -2
  304. package/dist/backend/embedding.js.map +1 -1
  305. package/dist/backend/errors.cjs.map +1 -1
  306. package/dist/backend/errors.d.cts +2 -2
  307. package/dist/backend/errors.d.ts +2 -2
  308. package/dist/backend/errors.js.map +1 -1
  309. package/dist/backend/message.cjs.map +1 -1
  310. package/dist/backend/message.js.map +1 -1
  311. package/dist/backend/utils.cjs.map +1 -1
  312. package/dist/backend/utils.d.cts +2 -2
  313. package/dist/backend/utils.d.ts +2 -2
  314. package/dist/backend/utils.js.map +1 -1
  315. package/dist/{base-BfhNzUYf.d.ts → base-BjzyQ8k6.d.ts} +2 -2
  316. package/dist/{base-BqzN2QwB.d.cts → base-s3ioVIE9.d.cts} +2 -2
  317. package/dist/cache/decoratorCache.cjs.map +1 -1
  318. package/dist/cache/decoratorCache.js.map +1 -1
  319. package/dist/cache/fileCache.cjs.map +1 -1
  320. package/dist/cache/fileCache.js.map +1 -1
  321. package/dist/cache/nullCache.cjs.map +1 -1
  322. package/dist/cache/nullCache.js.map +1 -1
  323. package/dist/cache/slidingCache.cjs.map +1 -1
  324. package/dist/cache/slidingCache.js.map +1 -1
  325. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  326. package/dist/cache/unconstrainedCache.js.map +1 -1
  327. package/dist/{chat-DaqV3woF.d.cts → chat-C20nYj46.d.cts} +3 -3
  328. package/dist/{chat-DTxmaKP0.d.ts → chat-CfTNfR60.d.ts} +3 -3
  329. package/dist/context.cjs.map +1 -1
  330. package/dist/context.d.cts +1 -1
  331. package/dist/context.d.ts +1 -1
  332. package/dist/context.js.map +1 -1
  333. package/dist/emitter/emitter.cjs.map +1 -1
  334. package/dist/emitter/emitter.d.cts +1 -1
  335. package/dist/emitter/emitter.d.ts +1 -1
  336. package/dist/emitter/emitter.js.map +1 -1
  337. package/dist/emitter/types.d.cts +1 -1
  338. package/dist/emitter/types.d.ts +1 -1
  339. package/dist/emitter/utils.cjs.map +1 -1
  340. package/dist/emitter/utils.js.map +1 -1
  341. package/dist/{emitter-UkIkNrek.d.cts → emitter-D4OcelZ9.d.cts} +2 -2
  342. package/dist/{emitter-CL56qab4.d.ts → emitter-kHxkUxco.d.ts} +2 -2
  343. package/dist/errors.cjs.map +1 -1
  344. package/dist/errors.js.map +1 -1
  345. package/dist/index.d.cts +4 -4
  346. package/dist/index.d.ts +4 -4
  347. package/dist/internals/env.cjs.map +1 -1
  348. package/dist/internals/env.js.map +1 -1
  349. package/dist/internals/fetcher.cjs.map +1 -1
  350. package/dist/internals/fetcher.d.cts +1 -1
  351. package/dist/internals/fetcher.d.ts +1 -1
  352. package/dist/internals/fetcher.js.map +1 -1
  353. package/dist/internals/helpers/array.cjs.map +1 -1
  354. package/dist/internals/helpers/array.js.map +1 -1
  355. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  356. package/dist/internals/helpers/cancellation.js.map +1 -1
  357. package/dist/internals/helpers/counter.cjs.map +1 -1
  358. package/dist/internals/helpers/counter.js.map +1 -1
  359. package/dist/internals/helpers/general.cjs.map +1 -1
  360. package/dist/internals/helpers/general.js.map +1 -1
  361. package/dist/internals/helpers/hash.cjs.map +1 -1
  362. package/dist/internals/helpers/hash.js.map +1 -1
  363. package/dist/internals/helpers/map.cjs.map +1 -1
  364. package/dist/internals/helpers/map.js.map +1 -1
  365. package/dist/internals/helpers/math.cjs.map +1 -1
  366. package/dist/internals/helpers/math.js.map +1 -1
  367. package/dist/internals/helpers/object.cjs +7 -1
  368. package/dist/internals/helpers/object.cjs.map +1 -1
  369. package/dist/internals/helpers/object.js +7 -1
  370. package/dist/internals/helpers/object.js.map +1 -1
  371. package/dist/internals/helpers/paginate.cjs.map +1 -1
  372. package/dist/internals/helpers/paginate.js.map +1 -1
  373. package/dist/internals/helpers/promise.cjs.map +1 -1
  374. package/dist/internals/helpers/promise.js.map +1 -1
  375. package/dist/internals/helpers/prototype.cjs.map +1 -1
  376. package/dist/internals/helpers/prototype.js.map +1 -1
  377. package/dist/internals/helpers/retry.cjs.map +1 -1
  378. package/dist/internals/helpers/retry.js.map +1 -1
  379. package/dist/internals/helpers/retryable.cjs.map +1 -1
  380. package/dist/internals/helpers/retryable.js.map +1 -1
  381. package/dist/internals/helpers/schema.cjs.map +1 -1
  382. package/dist/internals/helpers/schema.d.cts +4 -4
  383. package/dist/internals/helpers/schema.d.ts +4 -4
  384. package/dist/internals/helpers/schema.js.map +1 -1
  385. package/dist/internals/helpers/stream.cjs.map +1 -1
  386. package/dist/internals/helpers/stream.js.map +1 -1
  387. package/dist/internals/helpers/string.cjs.map +1 -1
  388. package/dist/internals/helpers/string.js.map +1 -1
  389. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  390. package/dist/internals/helpers/weakRef.js.map +1 -1
  391. package/dist/internals/serializable.cjs +3 -1
  392. package/dist/internals/serializable.cjs.map +1 -1
  393. package/dist/internals/serializable.d.cts +6 -0
  394. package/dist/internals/serializable.d.ts +6 -0
  395. package/dist/internals/serializable.js +3 -1
  396. package/dist/internals/serializable.js.map +1 -1
  397. package/dist/internals/types.cjs.map +1 -1
  398. package/dist/internals/types.js.map +1 -1
  399. package/dist/logger/logger.cjs.map +1 -1
  400. package/dist/logger/logger.d.cts +2 -2
  401. package/dist/logger/logger.d.ts +2 -2
  402. package/dist/logger/logger.js +2 -2
  403. package/dist/logger/logger.js.map +1 -1
  404. package/dist/logger/pretty.cjs.map +1 -1
  405. package/dist/logger/pretty.js.map +1 -1
  406. package/dist/memory/base.cjs.map +1 -1
  407. package/dist/memory/base.js.map +1 -1
  408. package/dist/memory/slidingMemory.cjs.map +1 -1
  409. package/dist/memory/slidingMemory.js.map +1 -1
  410. package/dist/memory/summarizeMemory.cjs.map +1 -1
  411. package/dist/memory/summarizeMemory.d.cts +2 -2
  412. package/dist/memory/summarizeMemory.d.ts +2 -2
  413. package/dist/memory/summarizeMemory.js.map +1 -1
  414. package/dist/memory/tokenMemory.cjs.map +1 -1
  415. package/dist/memory/tokenMemory.js.map +1 -1
  416. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  417. package/dist/memory/unconstrainedMemory.js.map +1 -1
  418. package/dist/middleware/streamToolCall.cjs.map +1 -1
  419. package/dist/middleware/streamToolCall.d.cts +2 -2
  420. package/dist/middleware/streamToolCall.d.ts +2 -2
  421. package/dist/middleware/streamToolCall.js.map +1 -1
  422. package/dist/middleware/trajectory.cjs.map +1 -1
  423. package/dist/middleware/trajectory.d.cts +2 -2
  424. package/dist/middleware/trajectory.d.ts +2 -2
  425. package/dist/middleware/trajectory.js.map +1 -1
  426. package/dist/parsers/errors.cjs.map +1 -1
  427. package/dist/parsers/errors.js.map +1 -1
  428. package/dist/parsers/field.cjs.map +1 -1
  429. package/dist/parsers/field.js.map +1 -1
  430. package/dist/parsers/linePrefix.cjs.map +1 -1
  431. package/dist/parsers/linePrefix.d.cts +1 -1
  432. package/dist/parsers/linePrefix.d.ts +1 -1
  433. package/dist/parsers/linePrefix.js.map +1 -1
  434. package/dist/serializer/error.cjs.map +1 -1
  435. package/dist/serializer/error.js.map +1 -1
  436. package/dist/serializer/serializer.cjs +16 -3
  437. package/dist/serializer/serializer.cjs.map +1 -1
  438. package/dist/serializer/serializer.d.cts +1 -1
  439. package/dist/serializer/serializer.d.ts +1 -1
  440. package/dist/serializer/serializer.js +16 -4
  441. package/dist/serializer/serializer.js.map +1 -1
  442. package/dist/serializer/utils.cjs.map +1 -1
  443. package/dist/serializer/utils.d.cts +1 -1
  444. package/dist/serializer/utils.d.ts +1 -1
  445. package/dist/serializer/utils.js.map +1 -1
  446. package/dist/{serializer-53t8gGQa.d.ts → serializer-BafOT48s.d.ts} +10 -4
  447. package/dist/{serializer-c51B2z6d.d.cts → serializer-CFDWYUco.d.cts} +10 -4
  448. package/dist/serve/server.cjs.map +1 -1
  449. package/dist/serve/server.js.map +1 -1
  450. package/dist/template.cjs.map +1 -1
  451. package/dist/template.js.map +1 -1
  452. package/dist/tools/arxiv.cjs.map +1 -1
  453. package/dist/tools/arxiv.d.cts +2 -2
  454. package/dist/tools/arxiv.d.ts +2 -2
  455. package/dist/tools/arxiv.js.map +1 -1
  456. package/dist/tools/base.cjs.map +1 -1
  457. package/dist/tools/base.d.cts +1 -1
  458. package/dist/tools/base.d.ts +1 -1
  459. package/dist/tools/base.js.map +1 -1
  460. package/dist/tools/calculator.cjs.map +1 -1
  461. package/dist/tools/calculator.d.cts +3 -3
  462. package/dist/tools/calculator.d.ts +3 -3
  463. package/dist/tools/calculator.js.map +1 -1
  464. package/dist/tools/custom.cjs.map +1 -1
  465. package/dist/tools/custom.d.cts +3 -3
  466. package/dist/tools/custom.d.ts +3 -3
  467. package/dist/tools/custom.js.map +1 -1
  468. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  469. package/dist/tools/database/elasticsearch.d.cts +3 -3
  470. package/dist/tools/database/elasticsearch.d.ts +3 -3
  471. package/dist/tools/database/elasticsearch.js.map +1 -1
  472. package/dist/tools/database/metadata.cjs.map +1 -1
  473. package/dist/tools/database/metadata.js.map +1 -1
  474. package/dist/tools/database/milvus.cjs.map +1 -1
  475. package/dist/tools/database/milvus.d.cts +3 -3
  476. package/dist/tools/database/milvus.d.ts +3 -3
  477. package/dist/tools/database/milvus.js.map +1 -1
  478. package/dist/tools/database/qdrant.cjs.map +1 -1
  479. package/dist/tools/database/qdrant.d.cts +2 -2
  480. package/dist/tools/database/qdrant.d.ts +2 -2
  481. package/dist/tools/database/qdrant.js.map +1 -1
  482. package/dist/tools/database/sql.cjs.map +1 -1
  483. package/dist/tools/database/sql.d.cts +2 -2
  484. package/dist/tools/database/sql.d.ts +2 -2
  485. package/dist/tools/database/sql.js.map +1 -1
  486. package/dist/tools/handoff.cjs.map +1 -1
  487. package/dist/tools/handoff.d.cts +2 -2
  488. package/dist/tools/handoff.d.ts +2 -2
  489. package/dist/tools/handoff.js.map +1 -1
  490. package/dist/tools/llm.cjs +1 -1
  491. package/dist/tools/llm.cjs.map +1 -1
  492. package/dist/tools/llm.d.cts +3 -3
  493. package/dist/tools/llm.d.ts +3 -3
  494. package/dist/tools/llm.js +1 -1
  495. package/dist/tools/llm.js.map +1 -1
  496. package/dist/tools/mcp.cjs.map +1 -1
  497. package/dist/tools/mcp.d.cts +2 -2
  498. package/dist/tools/mcp.d.ts +2 -2
  499. package/dist/tools/mcp.js.map +1 -1
  500. package/dist/tools/openapi.cjs.map +1 -1
  501. package/dist/tools/openapi.d.cts +2 -2
  502. package/dist/tools/openapi.d.ts +2 -2
  503. package/dist/tools/openapi.js.map +1 -1
  504. package/dist/tools/python/output.cjs.map +1 -1
  505. package/dist/tools/python/output.d.cts +1 -1
  506. package/dist/tools/python/output.d.ts +1 -1
  507. package/dist/tools/python/output.js.map +1 -1
  508. package/dist/tools/python/python.cjs +5 -2
  509. package/dist/tools/python/python.cjs.map +1 -1
  510. package/dist/tools/python/python.d.cts +3 -3
  511. package/dist/tools/python/python.d.ts +3 -3
  512. package/dist/tools/python/python.js +5 -2
  513. package/dist/tools/python/python.js.map +1 -1
  514. package/dist/tools/python/storage.cjs.map +1 -1
  515. package/dist/tools/python/storage.js.map +1 -1
  516. package/dist/tools/search/base.cjs.map +1 -1
  517. package/dist/tools/search/base.d.cts +2 -2
  518. package/dist/tools/search/base.d.ts +2 -2
  519. package/dist/tools/search/base.js.map +1 -1
  520. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  521. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
  522. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
  523. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  524. package/dist/tools/search/googleSearch.cjs.map +1 -1
  525. package/dist/tools/search/googleSearch.d.cts +2 -2
  526. package/dist/tools/search/googleSearch.d.ts +2 -2
  527. package/dist/tools/search/googleSearch.js.map +1 -1
  528. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  529. package/dist/tools/search/searXNGSearch.d.cts +2 -2
  530. package/dist/tools/search/searXNGSearch.d.ts +2 -2
  531. package/dist/tools/search/searXNGSearch.js.map +1 -1
  532. package/dist/tools/search/wikipedia.cjs.map +1 -1
  533. package/dist/tools/search/wikipedia.d.cts +3 -3
  534. package/dist/tools/search/wikipedia.d.ts +3 -3
  535. package/dist/tools/search/wikipedia.js.map +1 -1
  536. package/dist/tools/similarity.cjs.map +1 -1
  537. package/dist/tools/similarity.d.cts +2 -2
  538. package/dist/tools/similarity.d.ts +2 -2
  539. package/dist/tools/similarity.js.map +1 -1
  540. package/dist/tools/think.cjs.map +1 -1
  541. package/dist/tools/think.d.cts +2 -2
  542. package/dist/tools/think.d.ts +2 -2
  543. package/dist/tools/think.js.map +1 -1
  544. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  545. package/dist/tools/weather/openMeteo.d.cts +2 -2
  546. package/dist/tools/weather/openMeteo.d.ts +2 -2
  547. package/dist/tools/weather/openMeteo.js.map +1 -1
  548. package/dist/tools/web/webCrawler.cjs.map +1 -1
  549. package/dist/tools/web/webCrawler.d.cts +2 -2
  550. package/dist/tools/web/webCrawler.d.ts +2 -2
  551. package/dist/tools/web/webCrawler.js.map +1 -1
  552. package/dist/{types-YoNQSxQH.d.cts → types-BNsa3W7Z.d.cts} +4 -4
  553. package/dist/{types-YT-WdK3m.d.ts → types-DYtzF6ya.d.ts} +4 -4
  554. package/dist/version.cjs +1 -1
  555. package/dist/version.js +1 -1
  556. package/dist/workflows/agent.cjs.map +1 -1
  557. package/dist/workflows/agent.d.cts +40 -40
  558. package/dist/workflows/agent.d.ts +40 -40
  559. package/dist/workflows/agent.js.map +1 -1
  560. package/dist/workflows/workflow.cjs.map +1 -1
  561. package/dist/workflows/workflow.d.cts +1 -1
  562. package/dist/workflows/workflow.d.ts +1 -1
  563. package/dist/workflows/workflow.js.map +1 -1
  564. package/package.json +38 -15
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context.ts"],"names":["Middleware","Run","LazyPromise","tasks","handler","runContext","Symbol","toStringTag","observe","fn","push","emitter","context","value","Object","assign","middleware","fns","isFunction","bind","before","executeSequentially","splice","Infinity","asyncIterator","response","then","isAsyncIterable","Error","RunContext","Serializable","AsyncLocalStorage","controller","runId","groupId","parentId","runParams","createdAt","signal","abort","reason","instance","input","parent","Date","params","createRandomHash","omit","AbortController","registerSignals","child","trace","id","parentRunId","pipe","destroy","FrameworkError","enter","getStore","namespace","creator","internal","finishEvent","startEvent","output","undefined","emit","result","Promise","race","run","_","reject","addEventListener","setTimeout","_e","e","ensure","register","createSnapshot","shallowCopy","loadSnapshot","snapshot"],"mappings":"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","file":"context.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { isFunction, omit } from \"remeda\";\nimport { Callback, InferCallbackValue } from \"@/emitter/types.js\";\nimport { registerSignals } from \"@/internals/helpers/cancellation.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { executeSequentially, LazyPromise } from \"@/internals/helpers/promise.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { isAsyncIterable } from \"@/internals/helpers/stream.js\";\n\nexport interface RunInstance<T = any> {\n emitter: Emitter<T>;\n}\n\nexport interface RunContextCallbacks {\n start: Callback<{ input: any; output: any }>;\n success: Callback<unknown>; // TODO: should be updated to Callback<{ input: any; output: any }>\n error: Callback<Error>;\n finish: Callback<{ input: any; output?: any; error?: FrameworkError }>;\n}\n\nexport abstract class Middleware<T extends RunInstance = any> {\n abstract bind(ctx: RunContext<T>): void;\n}\n\nexport type GetRunContext<T, P = any> = T extends RunInstance ? RunContext<T, P> : never;\nexport type GetRunInstance<T> = T extends RunInstance<infer P> ? P : never;\nexport type MiddlewareFn<T> = (context: GetRunContext<T>) => void;\nexport type MiddlewareType<T extends RunInstance> = Middleware<T> | MiddlewareFn<T>;\n\nexport class Run<R, I extends RunInstance, P = any> extends LazyPromise<R> {\n protected readonly tasks: (() => Promise<void>)[] = [];\n\n constructor(\n handler: () => Promise<R>,\n protected readonly runContext: GetRunContext<I, P>,\n ) {\n super(handler);\n }\n\n readonly [Symbol.toStringTag] = \"Promise\";\n\n observe(fn: (emitter: Emitter<GetRunInstance<I>>) => void) {\n this.tasks.push(async () => fn(this.runContext.emitter));\n return this;\n }\n\n context(value: object) {\n this.tasks.push(async () => {\n Object.assign(this.runContext.context, value);\n Object.assign(this.runContext.emitter.context, value);\n });\n return this;\n }\n\n middleware(...fns: MiddlewareType<I>[]) {\n for (const fn of fns) {\n this.tasks.push(async () =>\n isFunction(fn) ? fn(this.runContext) : fn.bind(this.runContext),\n );\n }\n return this;\n }\n\n protected async before(): Promise<void> {\n await super.before();\n await executeSequentially(this.tasks.splice(0, Infinity));\n }\n\n // @ts-expect-error too complex\n async *[Symbol.asyncIterator](): R extends AsyncIterable<infer X> ? AsyncIterator<X> : never {\n const response = await this.then();\n if (isAsyncIterable(response)) {\n yield* response;\n } else {\n throw new Error(\"Result is not iterable!\");\n }\n }\n}\n\nexport interface RunContextInput<P> {\n params: P;\n signal?: AbortSignal;\n}\n\nexport class RunContext<T extends RunInstance, P = any> extends Serializable {\n static #storage = new AsyncLocalStorage<RunContext<any>>();\n\n protected readonly controller: AbortController;\n public readonly runId: string;\n public readonly groupId: string;\n public readonly parentId?: string;\n public readonly emitter;\n public readonly context: object;\n public runParams: P;\n public readonly createdAt: Date;\n\n get signal() {\n return this.controller.signal;\n }\n\n abort(reason?: Error) {\n this.controller.abort(reason);\n }\n\n constructor(\n public readonly instance: T,\n protected readonly input: RunContextInput<P>,\n parent?: RunContext<any>,\n ) {\n super();\n this.createdAt = new Date();\n this.runParams = input.params;\n this.runId = createRandomHash(5);\n this.parentId = parent?.runId;\n this.groupId = parent?.groupId ?? createRandomHash();\n this.context = omit((parent?.context ?? {}) as any, [\"id\", \"parentId\"]);\n\n this.controller = new AbortController();\n registerSignals(this.controller, [input.signal, parent?.signal]);\n\n this.emitter = instance.emitter.child<GetRunInstance<T>>({\n context: this.context,\n trace: {\n id: this.groupId,\n runId: this.runId,\n parentRunId: parent?.runId,\n },\n });\n if (parent) {\n this.emitter.pipe(parent.emitter);\n }\n }\n\n destroy() {\n this.emitter.destroy();\n this.controller.abort(new FrameworkError(\"Context destroyed.\"));\n }\n\n static enter<C2 extends RunInstance, R2, P2>(\n instance: C2,\n input: RunContextInput<P2>,\n fn: (context: GetRunContext<C2, P2>) => Promise<R2>,\n ) {\n const parent = RunContext.#storage.getStore();\n const runContext = new RunContext(instance, input, parent) as GetRunContext<C2, P2>;\n\n return new Run(async () => {\n const emitter = runContext.emitter.child<RunContextCallbacks>({\n namespace: [\"run\"],\n creator: runContext,\n context: { internal: true },\n });\n\n const finishEvent = {} as InferCallbackValue<RunContextCallbacks[\"finish\"]>;\n try {\n const startEvent: InferCallbackValue<RunContextCallbacks[\"start\"]> = {\n input: runContext.runParams,\n output: undefined,\n };\n await emitter.emit(\"start\", startEvent);\n\n // Copy back any modifications made by middleware to run_params\n runContext.runParams = startEvent.input;\n finishEvent.input = startEvent.input;\n\n const result: R2 = await Promise.race([\n RunContext.#storage.run(\n runContext,\n startEvent.output === undefined ? fn : async () => startEvent.output,\n runContext,\n ),\n new Promise<never>((_, reject) =>\n runContext.signal.addEventListener(\"abort\", () =>\n setTimeout(() => reject(runContext.signal.reason), 0),\n ),\n ),\n ]);\n finishEvent.output = result;\n await emitter.emit(\"success\", result);\n return result;\n } catch (_e) {\n const e = FrameworkError.ensure(_e);\n finishEvent.output = e;\n await emitter.emit(\"error\", e);\n throw e;\n } finally {\n await emitter.emit(\"finish\", finishEvent);\n runContext.destroy();\n }\n }, runContext);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n controller: this.controller,\n runId: this.runId,\n groupId: this.groupId,\n parentId: this.parentId,\n emitter: this.emitter,\n context: shallowCopy(this.context),\n runParams: shallowCopy(this.runParams),\n createdAt: new Date(this.createdAt),\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/context.ts"],"names":["Middleware","Run","LazyPromise","tasks","handler","runContext","Symbol","toStringTag","observe","fn","push","emitter","context","value","Object","assign","middleware","fns","isFunction","bind","before","executeSequentially","splice","Infinity","asyncIterator","response","then","isAsyncIterable","Error","RunContext","Serializable","AsyncLocalStorage","controller","runId","groupId","parentId","runParams","createdAt","signal","abort","reason","instance","input","parent","Date","params","createRandomHash","omit","AbortController","registerSignals","child","trace","id","parentRunId","pipe","destroy","FrameworkError","enter","getStore","namespace","creator","internal","finishEvent","startEvent","output","undefined","emit","result","Promise","race","run","_","reject","addEventListener","setTimeout","_e","e","ensure","register","createSnapshot","shallowCopy","loadSnapshot","snapshot"],"mappings":"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","file":"context.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { isFunction, omit } from \"remeda\";\nimport { Callback, InferCallbackValue } from \"@/emitter/types.js\";\nimport { registerSignals } from \"@/internals/helpers/cancellation.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { executeSequentially, LazyPromise } from \"@/internals/helpers/promise.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { isAsyncIterable } from \"@/internals/helpers/stream.js\";\n\nexport interface RunInstance<T = any> {\n emitter: Emitter<T>;\n}\n\nexport interface RunContextCallbacks {\n start: Callback<{ input: any; output: any }>;\n success: Callback<unknown>; // TODO: should be updated to Callback<{ input: any; output: any }>\n error: Callback<Error>;\n finish: Callback<{ input: any; output?: any; error?: FrameworkError }>;\n}\n\nexport abstract class Middleware<T extends RunInstance = any> {\n abstract bind(ctx: RunContext<T>): void;\n}\n\nexport type GetRunContext<T, P = any> = T extends RunInstance ? RunContext<T, P> : never;\nexport type GetRunInstance<T> = T extends RunInstance<infer P> ? P : never;\nexport type MiddlewareFn<T> = (context: GetRunContext<T>) => void;\nexport type MiddlewareType<T extends RunInstance> = Middleware<T> | MiddlewareFn<T>;\n\nexport class Run<R, I extends RunInstance, P = any> extends LazyPromise<R> {\n protected readonly tasks: (() => Promise<void>)[] = [];\n\n constructor(\n handler: () => Promise<R>,\n protected readonly runContext: GetRunContext<I, P>,\n ) {\n super(handler);\n }\n\n readonly [Symbol.toStringTag] = \"Promise\";\n\n observe(fn: (emitter: Emitter<GetRunInstance<I>>) => void) {\n this.tasks.push(async () => fn(this.runContext.emitter));\n return this;\n }\n\n context(value: object) {\n this.tasks.push(async () => {\n Object.assign(this.runContext.context, value);\n Object.assign(this.runContext.emitter.context, value);\n });\n return this;\n }\n\n middleware(...fns: MiddlewareType<I>[]) {\n for (const fn of fns) {\n this.tasks.push(async () =>\n isFunction(fn) ? fn(this.runContext) : fn.bind(this.runContext),\n );\n }\n return this;\n }\n\n protected async before(): Promise<void> {\n await super.before();\n await executeSequentially(this.tasks.splice(0, Infinity));\n }\n\n // @ts-expect-error too complex\n async *[Symbol.asyncIterator](): R extends AsyncIterable<infer X> ? AsyncIterator<X> : never {\n const response = await this.then();\n if (isAsyncIterable(response)) {\n yield* response;\n } else {\n throw new Error(\"Result is not iterable!\");\n }\n }\n}\n\nexport interface RunContextInput<P> {\n params: P;\n signal?: AbortSignal;\n}\n\nexport class RunContext<T extends RunInstance, P = any> extends Serializable {\n static #storage = new AsyncLocalStorage<RunContext<any>>();\n\n protected readonly controller: AbortController;\n public readonly runId: string;\n public readonly groupId: string;\n public readonly parentId?: string;\n public readonly emitter;\n public readonly context: object;\n public runParams: P;\n public readonly createdAt: Date;\n\n get signal() {\n return this.controller.signal;\n }\n\n abort(reason?: Error) {\n this.controller.abort(reason);\n }\n\n constructor(\n public readonly instance: T,\n protected readonly input: RunContextInput<P>,\n parent?: RunContext<any>,\n ) {\n super();\n this.createdAt = new Date();\n this.runParams = input.params;\n this.runId = createRandomHash(5);\n this.parentId = parent?.runId;\n this.groupId = parent?.groupId ?? createRandomHash();\n this.context = omit((parent?.context ?? {}) as any, [\"id\", \"parentId\"]);\n\n this.controller = new AbortController();\n registerSignals(this.controller, [input.signal, parent?.signal]);\n\n this.emitter = instance.emitter.child<GetRunInstance<T>>({\n context: this.context,\n trace: {\n id: this.groupId,\n runId: this.runId,\n parentRunId: parent?.runId,\n },\n });\n if (parent) {\n this.emitter.pipe(parent.emitter);\n }\n }\n\n destroy() {\n this.emitter.destroy();\n this.controller.abort(new FrameworkError(\"Context destroyed.\"));\n }\n\n static enter<C2 extends RunInstance, R2, P2>(\n instance: C2,\n input: RunContextInput<P2>,\n fn: (context: GetRunContext<C2, P2>) => Promise<R2>,\n ) {\n const parent = RunContext.#storage.getStore();\n const runContext = new RunContext(instance, input, parent) as GetRunContext<C2, P2>;\n\n return new Run(async () => {\n const emitter = runContext.emitter.child<RunContextCallbacks>({\n namespace: [\"run\"],\n creator: runContext,\n context: { internal: true },\n });\n\n const finishEvent = {} as InferCallbackValue<RunContextCallbacks[\"finish\"]>;\n try {\n const startEvent: InferCallbackValue<RunContextCallbacks[\"start\"]> = {\n input: runContext.runParams,\n output: undefined,\n };\n await emitter.emit(\"start\", startEvent);\n\n // Copy back any modifications made by middleware to run_params\n runContext.runParams = startEvent.input;\n finishEvent.input = startEvent.input;\n\n const result: R2 = await Promise.race([\n RunContext.#storage.run(\n runContext,\n startEvent.output === undefined ? fn : async () => startEvent.output,\n runContext,\n ),\n new Promise<never>((_, reject) =>\n runContext.signal.addEventListener(\"abort\", () =>\n setTimeout(() => reject(runContext.signal.reason), 0),\n ),\n ),\n ]);\n finishEvent.output = result;\n await emitter.emit(\"success\", result);\n return result;\n } catch (_e) {\n const e = FrameworkError.ensure(_e);\n finishEvent.output = e;\n await emitter.emit(\"error\", e);\n throw e;\n } finally {\n await emitter.emit(\"finish\", finishEvent);\n runContext.destroy();\n }\n }, runContext);\n }\n\n static {\n this.register();\n }\n\n createSnapshot() {\n return {\n controller: this.controller,\n runId: this.runId,\n groupId: this.groupId,\n parentId: this.parentId,\n emitter: this.emitter,\n context: shallowCopy(this.context),\n runParams: shallowCopy(this.runParams),\n createdAt: new Date(this.createdAt),\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/emitter/emitter.ts"],"names":["Emitter","Serializable","listeners","groupId","namespace","creator","context","trace","cleanups","input","Object","prototype","assertValidNamespace","register","root","create","child","slice","cleanup","pipe","push","target","on","toBoundedFunction","args","invoke","value","name","isBlocking","once","persistent","matchNested","destroy","length","forEach","reset","filter","listener","options","registerCallbacks","callbacks","entries","key","event","callback","match","matcher","createMatcher","matchers","path","createFullPath","RegExp","test","isPath","EmitterError","matchSameRun","runId","unshift","every","raw","priority","insertIndex","findIndex","l","splice","removeFromArray","emit","assertValidName","createEvent","data","executions","i","run","Promise","all","id","createRandomHash","createdAt","Date","source","assign","shallowCopy","createSnapshot","map","pick","loadSnapshot","snapshot"],"mappings":"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","file":"emitter.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Callback,\n CleanupFn,\n EmitterOptions,\n EventMeta,\n EventTrace,\n Matcher,\n MatcherFn,\n StringKey,\n} from \"@/emitter/types.js\";\nexport type { EventMeta, EventTrace, Callback };\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { createFullPath, isPath, assertValidName, assertValidNamespace } from \"@/emitter/utils.js\";\nimport { EmitterError } from \"@/emitter/errors.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { shallowCopy, toBoundedFunction } from \"@/serializer/utils.js\";\nimport { RequiredAll } from \"@/internals/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { pick } from \"remeda\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\n\nexport interface EmitterInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\nexport interface EmitterChildInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\n\ninterface Listener<T = any> {\n readonly match: MatcherFn;\n readonly raw: Matcher;\n readonly callback: Callback<T>;\n readonly options?: EmitterOptions;\n}\n\nexport class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializable {\n protected listeners: Listener[] = [];\n protected readonly groupId?: string;\n public readonly namespace: string[];\n public readonly creator?: object;\n public readonly context: object;\n public readonly trace?: EventTrace;\n protected readonly cleanups: CleanupFn[] = [];\n\n constructor(input: EmitterInput = {}) {\n super();\n this.groupId = input?.groupId;\n this.namespace = input?.namespace ?? [];\n this.creator = input.creator ?? Object.prototype;\n this.context = input?.context ?? {};\n this.trace = input.trace;\n assertValidNamespace(this.namespace);\n }\n\n static {\n this.register();\n }\n\n @Cache()\n static get root() {\n return new Emitter<Record<string, Callback<any>>>({ creator: Object.create(null) });\n }\n\n child<R = T>(input: EmitterChildInput = {}): Emitter<R> {\n const child = new Emitter<R>({\n trace: input.trace ?? this.trace,\n groupId: input?.groupId ?? this.groupId,\n context: { ...this.context, ...input?.context },\n creator: input?.creator ?? this.creator,\n namespace: input?.namespace\n ? [...this.namespace, ...input.namespace]\n : this.namespace.slice(),\n });\n\n const cleanup = child.pipe(this);\n this.cleanups.push(cleanup);\n\n return child;\n }\n\n pipe(target: Emitter<any>): CleanupFn {\n return this.on(\n // @ts-expect-error\n \"*.*\",\n toBoundedFunction(\n // @ts-expect-error\n (...args) => target.invoke(...args),\n [{ value: target, name: \"target\" }],\n ),\n {\n isBlocking: true,\n once: false,\n persistent: true,\n matchNested: false,\n },\n );\n }\n\n destroy() {\n this.listeners.length = 0;\n this.cleanups.forEach((child) => child());\n this.cleanups.length = 0;\n }\n\n reset() {\n this.listeners = this.listeners.filter((listener) => listener.options?.persistent);\n }\n\n registerCallbacks<K extends StringKey<RequiredAll<T>>>(\n callbacks: Partial<\n Record<K, NonNullable<T[K]> extends Callback<infer X> ? Callback<X> : never>\n >,\n options?: Partial<Record<K, EmitterOptions>>,\n ): CleanupFn {\n const listeners: CleanupFn[] = [];\n Object.entries(callbacks).forEach(([key, value]) => {\n if (value) {\n // @ts-expect-error\n listeners.push(this.on(key, value, options?.[key]));\n }\n });\n return () => listeners.forEach((cleanup) => cleanup());\n }\n\n on<K extends StringKey<RequiredAll<T>>>(\n event: K,\n callback: NonNullable<T[K]> extends Callback<any> ? T[K] : never,\n options?: EmitterOptions,\n ): CleanupFn {\n return this.match(event as Matcher, callback as Callback<any>, options);\n }\n\n match<L>(matcher: Matcher, callback: Callback<L>, options?: EmitterOptions): CleanupFn {\n const createMatcher = (): MatcherFn => {\n const matchers: MatcherFn[] = [];\n let matchNested = options?.matchNested;\n\n if (matcher === \"*\") {\n matchNested ??= false;\n matchers.push((event) => event.path === createFullPath(this.namespace, event.name));\n } else if (matcher === \"*.*\") {\n matchNested ??= true;\n matchers.push(() => true);\n } else if (matcher instanceof RegExp) {\n matchNested ??= true;\n matchers.push((event) => matcher.test(event.path));\n } else if (typeof matcher === \"function\") {\n matchNested ??= false;\n matchers.push(matcher);\n } else if (typeof matcher === \"string\") {\n if (isPath(matcher)) {\n matchNested ??= true;\n matchers.push((event) => event.path === matcher);\n } else {\n matchNested ??= false;\n matchers.push(\n (event) =>\n event.name === matcher && event.path === createFullPath(this.namespace, event.name),\n );\n }\n } else {\n throw new EmitterError(\"Invalid matcher provided!\");\n }\n\n if (!matchNested) {\n const matchSameRun = (event: EventMeta) => {\n // global observability x scoped observability\n return !this.trace?.runId ? true : this.trace?.runId === event.trace?.runId;\n };\n matchers.unshift(matchSameRun);\n }\n\n return (event) => matchers.every((matcher) => matcher(event));\n };\n\n const listener: Listener = {\n options,\n callback,\n raw: matcher,\n match: createMatcher(),\n };\n\n const priority = options?.priority ?? 0;\n const insertIndex = this.listeners.findIndex((l) => (l.options?.priority ?? 0) >= priority);\n if (insertIndex === -1) {\n this.listeners.push(listener);\n } else {\n this.listeners.splice(insertIndex, 0, listener);\n }\n\n return () => {\n removeFromArray(this.listeners, listener);\n };\n }\n\n async emit<K extends StringKey<RequiredAll<T>>>(\n name: K,\n value: NonNullable<T[K]> extends Callback<infer X> ? X : unknown,\n ): Promise<void> {\n assertValidName(name);\n\n const event = this.createEvent(name);\n return await this.invoke(value, event);\n }\n\n protected async invoke(data: unknown, event: EventMeta) {\n const executions: unknown[] = [];\n // Iterate in reverse to match Python's behavior (reversed list iteration)\n for (let i = this.listeners.length - 1; i >= 0; i--) {\n const listener = this.listeners[i];\n if (!listener.match(event)) {\n continue;\n }\n\n if (listener.options?.once) {\n this.listeners.splice(i, 1);\n }\n\n const run = async () => listener.callback(data, event);\n executions.push(listener.options?.isBlocking ? await run() : run());\n }\n await Promise.all(executions);\n }\n\n protected createEvent(name: string): EventMeta {\n return {\n id: createRandomHash(),\n groupId: this.groupId,\n name,\n path: createFullPath(this.namespace, name),\n createdAt: new Date(),\n source: this,\n creator: this.creator!,\n context: Object.assign({}, this.context, {}),\n trace: shallowCopy(this.trace), // TODO\n };\n }\n\n createSnapshot() {\n return {\n groupId: this.groupId,\n namespace: shallowCopy(this.namespace),\n creator: this.creator,\n context: this.context,\n trace: this.trace,\n listeners: this.listeners.map(pick([\"raw\", \"options\", \"callback\"])),\n cleanups: this.cleanups,\n };\n }\n\n loadSnapshot({ listeners, ...snapshot }: ReturnType<typeof this.createSnapshot>): void {\n Object.assign(this, snapshot, { listeners: [] });\n listeners.forEach(({ raw, callback, options }) => this.match(raw, callback, options));\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/emitter/emitter.ts"],"names":["Emitter","Serializable","listeners","groupId","namespace","creator","context","trace","cleanups","input","Object","prototype","assertValidNamespace","register","root","create","child","slice","cleanup","pipe","push","target","on","toBoundedFunction","args","invoke","value","name","isBlocking","once","persistent","matchNested","destroy","length","forEach","reset","filter","listener","options","registerCallbacks","callbacks","entries","key","event","callback","match","matcher","createMatcher","matchers","path","createFullPath","RegExp","test","isPath","EmitterError","matchSameRun","runId","unshift","every","raw","priority","insertIndex","findIndex","l","splice","removeFromArray","emit","assertValidName","createEvent","data","executions","i","run","Promise","all","id","createRandomHash","createdAt","Date","source","assign","shallowCopy","createSnapshot","map","pick","loadSnapshot","snapshot"],"mappings":"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","file":"emitter.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Callback,\n CleanupFn,\n EmitterOptions,\n EventMeta,\n EventTrace,\n Matcher,\n MatcherFn,\n StringKey,\n} from \"@/emitter/types.js\";\nexport type { EventMeta, EventTrace, Callback };\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { createFullPath, isPath, assertValidName, assertValidNamespace } from \"@/emitter/utils.js\";\nimport { EmitterError } from \"@/emitter/errors.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { shallowCopy, toBoundedFunction } from \"@/serializer/utils.js\";\nimport { RequiredAll } from \"@/internals/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { pick } from \"remeda\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\n\nexport interface EmitterInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\nexport interface EmitterChildInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\n\ninterface Listener<T = any> {\n readonly match: MatcherFn;\n readonly raw: Matcher;\n readonly callback: Callback<T>;\n readonly options?: EmitterOptions;\n}\n\nexport class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializable {\n protected listeners: Listener[] = [];\n protected readonly groupId?: string;\n public readonly namespace: string[];\n public readonly creator?: object;\n public readonly context: object;\n public readonly trace?: EventTrace;\n protected readonly cleanups: CleanupFn[] = [];\n\n constructor(input: EmitterInput = {}) {\n super();\n this.groupId = input?.groupId;\n this.namespace = input?.namespace ?? [];\n this.creator = input.creator ?? Object.prototype;\n this.context = input?.context ?? {};\n this.trace = input.trace;\n assertValidNamespace(this.namespace);\n }\n\n static {\n this.register();\n }\n\n @Cache()\n static get root() {\n return new Emitter<Record<string, Callback<any>>>({ creator: Object.create(null) });\n }\n\n child<R = T>(input: EmitterChildInput = {}): Emitter<R> {\n const child = new Emitter<R>({\n trace: input.trace ?? this.trace,\n groupId: input?.groupId ?? this.groupId,\n context: { ...this.context, ...input?.context },\n creator: input?.creator ?? this.creator,\n namespace: input?.namespace\n ? [...this.namespace, ...input.namespace]\n : this.namespace.slice(),\n });\n\n const cleanup = child.pipe(this);\n this.cleanups.push(cleanup);\n\n return child;\n }\n\n pipe(target: Emitter<any>): CleanupFn {\n return this.on(\n // @ts-expect-error\n \"*.*\",\n toBoundedFunction(\n // @ts-expect-error\n (...args) => target.invoke(...args),\n [{ value: target, name: \"target\" }],\n ),\n {\n isBlocking: true,\n once: false,\n persistent: true,\n matchNested: false,\n },\n );\n }\n\n destroy() {\n this.listeners.length = 0;\n this.cleanups.forEach((child) => child());\n this.cleanups.length = 0;\n }\n\n reset() {\n this.listeners = this.listeners.filter((listener) => listener.options?.persistent);\n }\n\n registerCallbacks<K extends StringKey<RequiredAll<T>>>(\n callbacks: Partial<\n Record<K, NonNullable<T[K]> extends Callback<infer X> ? Callback<X> : never>\n >,\n options?: Partial<Record<K, EmitterOptions>>,\n ): CleanupFn {\n const listeners: CleanupFn[] = [];\n Object.entries(callbacks).forEach(([key, value]) => {\n if (value) {\n // @ts-expect-error\n listeners.push(this.on(key, value, options?.[key]));\n }\n });\n return () => listeners.forEach((cleanup) => cleanup());\n }\n\n on<K extends StringKey<RequiredAll<T>>>(\n event: K,\n callback: NonNullable<T[K]> extends Callback<any> ? T[K] : never,\n options?: EmitterOptions,\n ): CleanupFn {\n return this.match(event as Matcher, callback as Callback<any>, options);\n }\n\n match<L>(matcher: Matcher, callback: Callback<L>, options?: EmitterOptions): CleanupFn {\n const createMatcher = (): MatcherFn => {\n const matchers: MatcherFn[] = [];\n let matchNested = options?.matchNested;\n\n if (matcher === \"*\") {\n matchNested ??= false;\n matchers.push((event) => event.path === createFullPath(this.namespace, event.name));\n } else if (matcher === \"*.*\") {\n matchNested ??= true;\n matchers.push(() => true);\n } else if (matcher instanceof RegExp) {\n matchNested ??= true;\n matchers.push((event) => matcher.test(event.path));\n } else if (typeof matcher === \"function\") {\n matchNested ??= false;\n matchers.push(matcher);\n } else if (typeof matcher === \"string\") {\n if (isPath(matcher)) {\n matchNested ??= true;\n matchers.push((event) => event.path === matcher);\n } else {\n matchNested ??= false;\n matchers.push(\n (event) =>\n event.name === matcher && event.path === createFullPath(this.namespace, event.name),\n );\n }\n } else {\n throw new EmitterError(\"Invalid matcher provided!\");\n }\n\n if (!matchNested) {\n const matchSameRun = (event: EventMeta) => {\n // global observability x scoped observability\n return !this.trace?.runId ? true : this.trace?.runId === event.trace?.runId;\n };\n matchers.unshift(matchSameRun);\n }\n\n return (event) => matchers.every((matcher) => matcher(event));\n };\n\n const listener: Listener = {\n options,\n callback,\n raw: matcher,\n match: createMatcher(),\n };\n\n const priority = options?.priority ?? 0;\n const insertIndex = this.listeners.findIndex((l) => (l.options?.priority ?? 0) >= priority);\n if (insertIndex === -1) {\n this.listeners.push(listener);\n } else {\n this.listeners.splice(insertIndex, 0, listener);\n }\n\n return () => {\n removeFromArray(this.listeners, listener);\n };\n }\n\n async emit<K extends StringKey<RequiredAll<T>>>(\n name: K,\n value: NonNullable<T[K]> extends Callback<infer X> ? X : unknown,\n ): Promise<void> {\n assertValidName(name);\n\n const event = this.createEvent(name);\n return await this.invoke(value, event);\n }\n\n protected async invoke(data: unknown, event: EventMeta) {\n const executions: unknown[] = [];\n // Iterate in reverse to match Python's behavior (reversed list iteration)\n for (let i = this.listeners.length - 1; i >= 0; i--) {\n const listener = this.listeners[i];\n if (!listener.match(event)) {\n continue;\n }\n\n if (listener.options?.once) {\n this.listeners.splice(i, 1);\n }\n\n const run = async () => listener.callback(data, event);\n executions.push(listener.options?.isBlocking ? await run() : run());\n }\n await Promise.all(executions);\n }\n\n protected createEvent(name: string): EventMeta {\n return {\n id: createRandomHash(),\n groupId: this.groupId,\n name,\n path: createFullPath(this.namespace, name),\n createdAt: new Date(),\n source: this,\n creator: this.creator!,\n context: Object.assign({}, this.context, {}),\n trace: shallowCopy(this.trace), // TODO\n };\n }\n\n createSnapshot() {\n return {\n groupId: this.groupId,\n namespace: shallowCopy(this.namespace),\n creator: this.creator,\n context: this.context,\n trace: this.trace,\n listeners: this.listeners.map(pick([\"raw\", \"options\", \"callback\"])),\n cleanups: this.cleanups,\n };\n }\n\n loadSnapshot({ listeners, ...snapshot }: ReturnType<typeof this.createSnapshot>): void {\n Object.assign(this, snapshot, { listeners: [] });\n listeners.forEach(({ raw, callback, options }) => this.match(raw, callback, options));\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- export { C as Callback, E as Emitter, g as EmitterChildInput, f as EmitterInput, b as EventMeta, e as EventTrace } from '../emitter-UkIkNrek.cjs';
1
+ export { C as Callback, E as Emitter, f as EmitterChildInput, g as EmitterInput, b as EventMeta, d as EventTrace } from '../emitter-D4OcelZ9.cjs';
2
2
  import '../internals/types.cjs';
3
3
  import '../internals/serializable.cjs';
4
4
  import '../internals/helpers/guards.cjs';
@@ -1,4 +1,4 @@
1
- export { C as Callback, E as Emitter, g as EmitterChildInput, f as EmitterInput, b as EventMeta, e as EventTrace } from '../emitter-CL56qab4.js';
1
+ export { C as Callback, E as Emitter, f as EmitterChildInput, g as EmitterInput, b as EventMeta, d as EventTrace } from '../emitter-kHxkUxco.js';
2
2
  import '../internals/types.js';
3
3
  import '../internals/serializable.js';
4
4
  import '../internals/helpers/guards.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/emitter/emitter.ts"],"names":["Emitter","Serializable","listeners","groupId","namespace","creator","context","trace","cleanups","input","Object","prototype","assertValidNamespace","register","root","create","child","slice","cleanup","pipe","push","target","on","toBoundedFunction","args","invoke","value","name","isBlocking","once","persistent","matchNested","destroy","length","forEach","reset","filter","listener","options","registerCallbacks","callbacks","entries","key","event","callback","match","matcher","createMatcher","matchers","path","createFullPath","RegExp","test","isPath","EmitterError","matchSameRun","runId","unshift","every","raw","priority","insertIndex","findIndex","l","splice","removeFromArray","emit","assertValidName","createEvent","data","executions","i","run","Promise","all","id","createRandomHash","createdAt","Date","source","assign","shallowCopy","createSnapshot","map","pick","loadSnapshot","snapshot"],"mappings":"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","file":"emitter.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Callback,\n CleanupFn,\n EmitterOptions,\n EventMeta,\n EventTrace,\n Matcher,\n MatcherFn,\n StringKey,\n} from \"@/emitter/types.js\";\nexport type { EventMeta, EventTrace, Callback };\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { createFullPath, isPath, assertValidName, assertValidNamespace } from \"@/emitter/utils.js\";\nimport { EmitterError } from \"@/emitter/errors.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { shallowCopy, toBoundedFunction } from \"@/serializer/utils.js\";\nimport { RequiredAll } from \"@/internals/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { pick } from \"remeda\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\n\nexport interface EmitterInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\nexport interface EmitterChildInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\n\ninterface Listener<T = any> {\n readonly match: MatcherFn;\n readonly raw: Matcher;\n readonly callback: Callback<T>;\n readonly options?: EmitterOptions;\n}\n\nexport class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializable {\n protected listeners: Listener[] = [];\n protected readonly groupId?: string;\n public readonly namespace: string[];\n public readonly creator?: object;\n public readonly context: object;\n public readonly trace?: EventTrace;\n protected readonly cleanups: CleanupFn[] = [];\n\n constructor(input: EmitterInput = {}) {\n super();\n this.groupId = input?.groupId;\n this.namespace = input?.namespace ?? [];\n this.creator = input.creator ?? Object.prototype;\n this.context = input?.context ?? {};\n this.trace = input.trace;\n assertValidNamespace(this.namespace);\n }\n\n static {\n this.register();\n }\n\n @Cache()\n static get root() {\n return new Emitter<Record<string, Callback<any>>>({ creator: Object.create(null) });\n }\n\n child<R = T>(input: EmitterChildInput = {}): Emitter<R> {\n const child = new Emitter<R>({\n trace: input.trace ?? this.trace,\n groupId: input?.groupId ?? this.groupId,\n context: { ...this.context, ...input?.context },\n creator: input?.creator ?? this.creator,\n namespace: input?.namespace\n ? [...this.namespace, ...input.namespace]\n : this.namespace.slice(),\n });\n\n const cleanup = child.pipe(this);\n this.cleanups.push(cleanup);\n\n return child;\n }\n\n pipe(target: Emitter<any>): CleanupFn {\n return this.on(\n // @ts-expect-error\n \"*.*\",\n toBoundedFunction(\n // @ts-expect-error\n (...args) => target.invoke(...args),\n [{ value: target, name: \"target\" }],\n ),\n {\n isBlocking: true,\n once: false,\n persistent: true,\n matchNested: false,\n },\n );\n }\n\n destroy() {\n this.listeners.length = 0;\n this.cleanups.forEach((child) => child());\n this.cleanups.length = 0;\n }\n\n reset() {\n this.listeners = this.listeners.filter((listener) => listener.options?.persistent);\n }\n\n registerCallbacks<K extends StringKey<RequiredAll<T>>>(\n callbacks: Partial<\n Record<K, NonNullable<T[K]> extends Callback<infer X> ? Callback<X> : never>\n >,\n options?: Partial<Record<K, EmitterOptions>>,\n ): CleanupFn {\n const listeners: CleanupFn[] = [];\n Object.entries(callbacks).forEach(([key, value]) => {\n if (value) {\n // @ts-expect-error\n listeners.push(this.on(key, value, options?.[key]));\n }\n });\n return () => listeners.forEach((cleanup) => cleanup());\n }\n\n on<K extends StringKey<RequiredAll<T>>>(\n event: K,\n callback: NonNullable<T[K]> extends Callback<any> ? T[K] : never,\n options?: EmitterOptions,\n ): CleanupFn {\n return this.match(event as Matcher, callback as Callback<any>, options);\n }\n\n match<L>(matcher: Matcher, callback: Callback<L>, options?: EmitterOptions): CleanupFn {\n const createMatcher = (): MatcherFn => {\n const matchers: MatcherFn[] = [];\n let matchNested = options?.matchNested;\n\n if (matcher === \"*\") {\n matchNested ??= false;\n matchers.push((event) => event.path === createFullPath(this.namespace, event.name));\n } else if (matcher === \"*.*\") {\n matchNested ??= true;\n matchers.push(() => true);\n } else if (matcher instanceof RegExp) {\n matchNested ??= true;\n matchers.push((event) => matcher.test(event.path));\n } else if (typeof matcher === \"function\") {\n matchNested ??= false;\n matchers.push(matcher);\n } else if (typeof matcher === \"string\") {\n if (isPath(matcher)) {\n matchNested ??= true;\n matchers.push((event) => event.path === matcher);\n } else {\n matchNested ??= false;\n matchers.push(\n (event) =>\n event.name === matcher && event.path === createFullPath(this.namespace, event.name),\n );\n }\n } else {\n throw new EmitterError(\"Invalid matcher provided!\");\n }\n\n if (!matchNested) {\n const matchSameRun = (event: EventMeta) => {\n // global observability x scoped observability\n return !this.trace?.runId ? true : this.trace?.runId === event.trace?.runId;\n };\n matchers.unshift(matchSameRun);\n }\n\n return (event) => matchers.every((matcher) => matcher(event));\n };\n\n const listener: Listener = {\n options,\n callback,\n raw: matcher,\n match: createMatcher(),\n };\n\n const priority = options?.priority ?? 0;\n const insertIndex = this.listeners.findIndex((l) => (l.options?.priority ?? 0) >= priority);\n if (insertIndex === -1) {\n this.listeners.push(listener);\n } else {\n this.listeners.splice(insertIndex, 0, listener);\n }\n\n return () => {\n removeFromArray(this.listeners, listener);\n };\n }\n\n async emit<K extends StringKey<RequiredAll<T>>>(\n name: K,\n value: NonNullable<T[K]> extends Callback<infer X> ? X : unknown,\n ): Promise<void> {\n assertValidName(name);\n\n const event = this.createEvent(name);\n return await this.invoke(value, event);\n }\n\n protected async invoke(data: unknown, event: EventMeta) {\n const executions: unknown[] = [];\n // Iterate in reverse to match Python's behavior (reversed list iteration)\n for (let i = this.listeners.length - 1; i >= 0; i--) {\n const listener = this.listeners[i];\n if (!listener.match(event)) {\n continue;\n }\n\n if (listener.options?.once) {\n this.listeners.splice(i, 1);\n }\n\n const run = async () => listener.callback(data, event);\n executions.push(listener.options?.isBlocking ? await run() : run());\n }\n await Promise.all(executions);\n }\n\n protected createEvent(name: string): EventMeta {\n return {\n id: createRandomHash(),\n groupId: this.groupId,\n name,\n path: createFullPath(this.namespace, name),\n createdAt: new Date(),\n source: this,\n creator: this.creator!,\n context: Object.assign({}, this.context, {}),\n trace: shallowCopy(this.trace), // TODO\n };\n }\n\n createSnapshot() {\n return {\n groupId: this.groupId,\n namespace: shallowCopy(this.namespace),\n creator: this.creator,\n context: this.context,\n trace: this.trace,\n listeners: this.listeners.map(pick([\"raw\", \"options\", \"callback\"])),\n cleanups: this.cleanups,\n };\n }\n\n loadSnapshot({ listeners, ...snapshot }: ReturnType<typeof this.createSnapshot>): void {\n Object.assign(this, snapshot, { listeners: [] });\n listeners.forEach(({ raw, callback, options }) => this.match(raw, callback, options));\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/emitter/emitter.ts"],"names":["Emitter","Serializable","listeners","groupId","namespace","creator","context","trace","cleanups","input","Object","prototype","assertValidNamespace","register","root","create","child","slice","cleanup","pipe","push","target","on","toBoundedFunction","args","invoke","value","name","isBlocking","once","persistent","matchNested","destroy","length","forEach","reset","filter","listener","options","registerCallbacks","callbacks","entries","key","event","callback","match","matcher","createMatcher","matchers","path","createFullPath","RegExp","test","isPath","EmitterError","matchSameRun","runId","unshift","every","raw","priority","insertIndex","findIndex","l","splice","removeFromArray","emit","assertValidName","createEvent","data","executions","i","run","Promise","all","id","createRandomHash","createdAt","Date","source","assign","shallowCopy","createSnapshot","map","pick","loadSnapshot","snapshot"],"mappings":"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","file":"emitter.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n Callback,\n CleanupFn,\n EmitterOptions,\n EventMeta,\n EventTrace,\n Matcher,\n MatcherFn,\n StringKey,\n} from \"@/emitter/types.js\";\nexport type { EventMeta, EventTrace, Callback };\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { createFullPath, isPath, assertValidName, assertValidNamespace } from \"@/emitter/utils.js\";\nimport { EmitterError } from \"@/emitter/errors.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { shallowCopy, toBoundedFunction } from \"@/serializer/utils.js\";\nimport { RequiredAll } from \"@/internals/types.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { pick } from \"remeda\";\nimport { removeFromArray } from \"@/internals/helpers/array.js\";\n\nexport interface EmitterInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\nexport interface EmitterChildInput<E extends object = object> {\n groupId?: string;\n namespace?: string[];\n creator?: object;\n context?: E & object;\n trace?: EventTrace;\n}\n\ninterface Listener<T = any> {\n readonly match: MatcherFn;\n readonly raw: Matcher;\n readonly callback: Callback<T>;\n readonly options?: EmitterOptions;\n}\n\nexport class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializable {\n protected listeners: Listener[] = [];\n protected readonly groupId?: string;\n public readonly namespace: string[];\n public readonly creator?: object;\n public readonly context: object;\n public readonly trace?: EventTrace;\n protected readonly cleanups: CleanupFn[] = [];\n\n constructor(input: EmitterInput = {}) {\n super();\n this.groupId = input?.groupId;\n this.namespace = input?.namespace ?? [];\n this.creator = input.creator ?? Object.prototype;\n this.context = input?.context ?? {};\n this.trace = input.trace;\n assertValidNamespace(this.namespace);\n }\n\n static {\n this.register();\n }\n\n @Cache()\n static get root() {\n return new Emitter<Record<string, Callback<any>>>({ creator: Object.create(null) });\n }\n\n child<R = T>(input: EmitterChildInput = {}): Emitter<R> {\n const child = new Emitter<R>({\n trace: input.trace ?? this.trace,\n groupId: input?.groupId ?? this.groupId,\n context: { ...this.context, ...input?.context },\n creator: input?.creator ?? this.creator,\n namespace: input?.namespace\n ? [...this.namespace, ...input.namespace]\n : this.namespace.slice(),\n });\n\n const cleanup = child.pipe(this);\n this.cleanups.push(cleanup);\n\n return child;\n }\n\n pipe(target: Emitter<any>): CleanupFn {\n return this.on(\n // @ts-expect-error\n \"*.*\",\n toBoundedFunction(\n // @ts-expect-error\n (...args) => target.invoke(...args),\n [{ value: target, name: \"target\" }],\n ),\n {\n isBlocking: true,\n once: false,\n persistent: true,\n matchNested: false,\n },\n );\n }\n\n destroy() {\n this.listeners.length = 0;\n this.cleanups.forEach((child) => child());\n this.cleanups.length = 0;\n }\n\n reset() {\n this.listeners = this.listeners.filter((listener) => listener.options?.persistent);\n }\n\n registerCallbacks<K extends StringKey<RequiredAll<T>>>(\n callbacks: Partial<\n Record<K, NonNullable<T[K]> extends Callback<infer X> ? Callback<X> : never>\n >,\n options?: Partial<Record<K, EmitterOptions>>,\n ): CleanupFn {\n const listeners: CleanupFn[] = [];\n Object.entries(callbacks).forEach(([key, value]) => {\n if (value) {\n // @ts-expect-error\n listeners.push(this.on(key, value, options?.[key]));\n }\n });\n return () => listeners.forEach((cleanup) => cleanup());\n }\n\n on<K extends StringKey<RequiredAll<T>>>(\n event: K,\n callback: NonNullable<T[K]> extends Callback<any> ? T[K] : never,\n options?: EmitterOptions,\n ): CleanupFn {\n return this.match(event as Matcher, callback as Callback<any>, options);\n }\n\n match<L>(matcher: Matcher, callback: Callback<L>, options?: EmitterOptions): CleanupFn {\n const createMatcher = (): MatcherFn => {\n const matchers: MatcherFn[] = [];\n let matchNested = options?.matchNested;\n\n if (matcher === \"*\") {\n matchNested ??= false;\n matchers.push((event) => event.path === createFullPath(this.namespace, event.name));\n } else if (matcher === \"*.*\") {\n matchNested ??= true;\n matchers.push(() => true);\n } else if (matcher instanceof RegExp) {\n matchNested ??= true;\n matchers.push((event) => matcher.test(event.path));\n } else if (typeof matcher === \"function\") {\n matchNested ??= false;\n matchers.push(matcher);\n } else if (typeof matcher === \"string\") {\n if (isPath(matcher)) {\n matchNested ??= true;\n matchers.push((event) => event.path === matcher);\n } else {\n matchNested ??= false;\n matchers.push(\n (event) =>\n event.name === matcher && event.path === createFullPath(this.namespace, event.name),\n );\n }\n } else {\n throw new EmitterError(\"Invalid matcher provided!\");\n }\n\n if (!matchNested) {\n const matchSameRun = (event: EventMeta) => {\n // global observability x scoped observability\n return !this.trace?.runId ? true : this.trace?.runId === event.trace?.runId;\n };\n matchers.unshift(matchSameRun);\n }\n\n return (event) => matchers.every((matcher) => matcher(event));\n };\n\n const listener: Listener = {\n options,\n callback,\n raw: matcher,\n match: createMatcher(),\n };\n\n const priority = options?.priority ?? 0;\n const insertIndex = this.listeners.findIndex((l) => (l.options?.priority ?? 0) >= priority);\n if (insertIndex === -1) {\n this.listeners.push(listener);\n } else {\n this.listeners.splice(insertIndex, 0, listener);\n }\n\n return () => {\n removeFromArray(this.listeners, listener);\n };\n }\n\n async emit<K extends StringKey<RequiredAll<T>>>(\n name: K,\n value: NonNullable<T[K]> extends Callback<infer X> ? X : unknown,\n ): Promise<void> {\n assertValidName(name);\n\n const event = this.createEvent(name);\n return await this.invoke(value, event);\n }\n\n protected async invoke(data: unknown, event: EventMeta) {\n const executions: unknown[] = [];\n // Iterate in reverse to match Python's behavior (reversed list iteration)\n for (let i = this.listeners.length - 1; i >= 0; i--) {\n const listener = this.listeners[i];\n if (!listener.match(event)) {\n continue;\n }\n\n if (listener.options?.once) {\n this.listeners.splice(i, 1);\n }\n\n const run = async () => listener.callback(data, event);\n executions.push(listener.options?.isBlocking ? await run() : run());\n }\n await Promise.all(executions);\n }\n\n protected createEvent(name: string): EventMeta {\n return {\n id: createRandomHash(),\n groupId: this.groupId,\n name,\n path: createFullPath(this.namespace, name),\n createdAt: new Date(),\n source: this,\n creator: this.creator!,\n context: Object.assign({}, this.context, {}),\n trace: shallowCopy(this.trace), // TODO\n };\n }\n\n createSnapshot() {\n return {\n groupId: this.groupId,\n namespace: shallowCopy(this.namespace),\n creator: this.creator,\n context: this.context,\n trace: this.trace,\n listeners: this.listeners.map(pick([\"raw\", \"options\", \"callback\"])),\n cleanups: this.cleanups,\n };\n }\n\n loadSnapshot({ listeners, ...snapshot }: ReturnType<typeof this.createSnapshot>): void {\n Object.assign(this, snapshot, { listeners: [] });\n listeners.forEach(({ raw, callback, options }) => this.match(raw, callback, options));\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
1
  import '../internals/types.cjs';
2
- export { C as Callback, d as CleanupFn, a as EmitterOptions, b as EventMeta, e as EventTrace, I as InferCallbackValue, c as Matcher, M as MatcherFn, S as StringKey } from '../emitter-UkIkNrek.cjs';
2
+ export { C as Callback, c as CleanupFn, a as EmitterOptions, b as EventMeta, d as EventTrace, I as InferCallbackValue, M as Matcher, e as MatcherFn, S as StringKey } from '../emitter-D4OcelZ9.cjs';
3
3
  import '../internals/helpers/guards.cjs';
4
4
  import '../internals/serializable.cjs';
@@ -1,4 +1,4 @@
1
1
  import '../internals/types.js';
2
- export { C as Callback, d as CleanupFn, a as EmitterOptions, b as EventMeta, e as EventTrace, I as InferCallbackValue, c as Matcher, M as MatcherFn, S as StringKey } from '../emitter-CL56qab4.js';
2
+ export { C as Callback, c as CleanupFn, a as EmitterOptions, b as EventMeta, d as EventTrace, I as InferCallbackValue, M as Matcher, e as MatcherFn, S as StringKey } from '../emitter-kHxkUxco.js';
3
3
  import '../internals/helpers/guards.js';
4
4
  import '../internals/serializable.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/emitter/utils.ts"],"names":["assertValidNamespace","path","Array","isArray","EmitterError","forEach","part","assertValidName","name","test","context","value","createFullPath","concat","join","isPath","includes"],"mappings":";;;;;;AAOO,SAASA,qBAAqBC,IAAAA,EAAc;AACjD,EAAA,IAAI,CAACA,IAAAA,IAAQ,CAACC,KAAAA,CAAMC,OAAAA,CAAQF,IAAAA,CAAAA,EAAO;AACjC,IAAA,MAAM,IAAIG,wBAAa,6BAAA,CAAA;AACzB;AACAH,EAAAA,IAAAA,CAAKI,OAAAA,CAAQ,CAACC,IAAAA,KAASC,eAAAA,CAAgBD,IAAAA,CAAAA,CAAAA;AACzC;AALgBN,MAAAA,CAAAA,oBAAAA,EAAAA,sBAAAA,CAAAA;AAOT,SAASO,gBAAgBC,IAAAA,EAAY;AAC1C,EAAA,IAAI,CAACA,IAAAA,IAAQ,CAAC,mBAAA,CAAoBC,IAAAA,CAAKD,IAAAA,CAAAA,EAAO;AAC5C,IAAA,MAAM,IAAIJ,uBAAAA,CACR,+FAAA,EACA,EAAA,EACA;MACEM,OAAAA,EAAS;QAAEC,KAAAA,EAAOH;AAAK;KACzB,CAAA;AAEJ;AACF;AAVgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAYT,SAASK,cAAAA,CAAeX,MAAgBO,IAAAA,EAAY;AACzD,EAAA,OAAOA,IAAAA,GAAOP,IAAAA,CAAKY,MAAAA,CAAOL,IAAAA,CAAAA,CAAMM,KAAK,GAAA,CAAA,GAAOb,IAAAA,CAAKa,IAAAA,CAAK,GAAA,CAAA;AACxD;AAFgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAIT,SAASG,OAAOP,IAAAA,EAAY;AACjC,EAAA,OAAOA,IAAAA,CAAKQ,SAAS,GAAA,CAAA;AACvB;AAFgBD,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"utils.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { EmitterError } from \"@/emitter/errors.js\";\n\nexport function assertValidNamespace(path: string[]) {\n if (!path || !Array.isArray(path)) {\n throw new EmitterError(\"Event path cannot be empty!\");\n }\n path.forEach((part) => assertValidName(part));\n}\n\nexport function assertValidName(name: string) {\n if (!name || !/(^[a-zA-Z0-9_]+$)/.test(name)) {\n throw new EmitterError(\n \"Event name or a namespace part must contain only letters, letters and optionally underscores.\",\n [],\n {\n context: { value: name },\n },\n );\n }\n}\n\nexport function createFullPath(path: string[], name: string) {\n return name ? path.concat(name).join(\".\") : path.join(\".\");\n}\n\nexport function isPath(name: string) {\n return name.includes(\".\");\n}\n"]}
1
+ {"version":3,"sources":["../../src/emitter/utils.ts"],"names":["assertValidNamespace","path","Array","isArray","EmitterError","forEach","part","assertValidName","name","test","context","value","createFullPath","concat","join","isPath","includes"],"mappings":";;;;;;AAOO,SAASA,qBAAqBC,IAAAA,EAAc;AACjD,EAAA,IAAI,CAACA,IAAAA,IAAQ,CAACC,KAAAA,CAAMC,OAAAA,CAAQF,IAAAA,CAAAA,EAAO;AACjC,IAAA,MAAM,IAAIG,wBAAa,6BAAA,CAAA;AACzB,EAAA;AACAH,EAAAA,IAAAA,CAAKI,OAAAA,CAAQ,CAACC,IAAAA,KAASC,eAAAA,CAAgBD,IAAAA,CAAAA,CAAAA;AACzC;AALgBN,MAAAA,CAAAA,oBAAAA,EAAAA,sBAAAA,CAAAA;AAOT,SAASO,gBAAgBC,IAAAA,EAAY;AAC1C,EAAA,IAAI,CAACA,IAAAA,IAAQ,CAAC,mBAAA,CAAoBC,IAAAA,CAAKD,IAAAA,CAAAA,EAAO;AAC5C,IAAA,MAAM,IAAIJ,uBAAAA,CACR,+FAAA,EACA,EAAA,EACA;MACEM,OAAAA,EAAS;QAAEC,KAAAA,EAAOH;AAAK;KACzB,CAAA;AAEJ,EAAA;AACF;AAVgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAYT,SAASK,cAAAA,CAAeX,MAAgBO,IAAAA,EAAY;AACzD,EAAA,OAAOA,IAAAA,GAAOP,IAAAA,CAAKY,MAAAA,CAAOL,IAAAA,CAAAA,CAAMM,KAAK,GAAA,CAAA,GAAOb,IAAAA,CAAKa,IAAAA,CAAK,GAAA,CAAA;AACxD;AAFgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAIT,SAASG,OAAOP,IAAAA,EAAY;AACjC,EAAA,OAAOA,IAAAA,CAAKQ,SAAS,GAAA,CAAA;AACvB;AAFgBD,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"utils.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { EmitterError } from \"@/emitter/errors.js\";\n\nexport function assertValidNamespace(path: string[]) {\n if (!path || !Array.isArray(path)) {\n throw new EmitterError(\"Event path cannot be empty!\");\n }\n path.forEach((part) => assertValidName(part));\n}\n\nexport function assertValidName(name: string) {\n if (!name || !/(^[a-zA-Z0-9_]+$)/.test(name)) {\n throw new EmitterError(\n \"Event name or a namespace part must contain only letters, letters and optionally underscores.\",\n [],\n {\n context: { value: name },\n },\n );\n }\n}\n\nexport function createFullPath(path: string[], name: string) {\n return name ? path.concat(name).join(\".\") : path.join(\".\");\n}\n\nexport function isPath(name: string) {\n return name.includes(\".\");\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/emitter/utils.ts"],"names":["assertValidNamespace","path","Array","isArray","EmitterError","forEach","part","assertValidName","name","test","context","value","createFullPath","concat","join","isPath","includes"],"mappings":";;;;AAOO,SAASA,qBAAqBC,IAAAA,EAAc;AACjD,EAAA,IAAI,CAACA,IAAAA,IAAQ,CAACC,KAAAA,CAAMC,OAAAA,CAAQF,IAAAA,CAAAA,EAAO;AACjC,IAAA,MAAM,IAAIG,aAAa,6BAAA,CAAA;AACzB;AACAH,EAAAA,IAAAA,CAAKI,OAAAA,CAAQ,CAACC,IAAAA,KAASC,eAAAA,CAAgBD,IAAAA,CAAAA,CAAAA;AACzC;AALgBN,MAAAA,CAAAA,oBAAAA,EAAAA,sBAAAA,CAAAA;AAOT,SAASO,gBAAgBC,IAAAA,EAAY;AAC1C,EAAA,IAAI,CAACA,IAAAA,IAAQ,CAAC,mBAAA,CAAoBC,IAAAA,CAAKD,IAAAA,CAAAA,EAAO;AAC5C,IAAA,MAAM,IAAIJ,YAAAA,CACR,+FAAA,EACA,EAAA,EACA;MACEM,OAAAA,EAAS;QAAEC,KAAAA,EAAOH;AAAK;KACzB,CAAA;AAEJ;AACF;AAVgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAYT,SAASK,cAAAA,CAAeX,MAAgBO,IAAAA,EAAY;AACzD,EAAA,OAAOA,IAAAA,GAAOP,IAAAA,CAAKY,MAAAA,CAAOL,IAAAA,CAAAA,CAAMM,KAAK,GAAA,CAAA,GAAOb,IAAAA,CAAKa,IAAAA,CAAK,GAAA,CAAA;AACxD;AAFgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAIT,SAASG,OAAOP,IAAAA,EAAY;AACjC,EAAA,OAAOA,IAAAA,CAAKQ,SAAS,GAAA,CAAA;AACvB;AAFgBD,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"utils.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { EmitterError } from \"@/emitter/errors.js\";\n\nexport function assertValidNamespace(path: string[]) {\n if (!path || !Array.isArray(path)) {\n throw new EmitterError(\"Event path cannot be empty!\");\n }\n path.forEach((part) => assertValidName(part));\n}\n\nexport function assertValidName(name: string) {\n if (!name || !/(^[a-zA-Z0-9_]+$)/.test(name)) {\n throw new EmitterError(\n \"Event name or a namespace part must contain only letters, letters and optionally underscores.\",\n [],\n {\n context: { value: name },\n },\n );\n }\n}\n\nexport function createFullPath(path: string[], name: string) {\n return name ? path.concat(name).join(\".\") : path.join(\".\");\n}\n\nexport function isPath(name: string) {\n return name.includes(\".\");\n}\n"]}
1
+ {"version":3,"sources":["../../src/emitter/utils.ts"],"names":["assertValidNamespace","path","Array","isArray","EmitterError","forEach","part","assertValidName","name","test","context","value","createFullPath","concat","join","isPath","includes"],"mappings":";;;;AAOO,SAASA,qBAAqBC,IAAAA,EAAc;AACjD,EAAA,IAAI,CAACA,IAAAA,IAAQ,CAACC,KAAAA,CAAMC,OAAAA,CAAQF,IAAAA,CAAAA,EAAO;AACjC,IAAA,MAAM,IAAIG,aAAa,6BAAA,CAAA;AACzB,EAAA;AACAH,EAAAA,IAAAA,CAAKI,OAAAA,CAAQ,CAACC,IAAAA,KAASC,eAAAA,CAAgBD,IAAAA,CAAAA,CAAAA;AACzC;AALgBN,MAAAA,CAAAA,oBAAAA,EAAAA,sBAAAA,CAAAA;AAOT,SAASO,gBAAgBC,IAAAA,EAAY;AAC1C,EAAA,IAAI,CAACA,IAAAA,IAAQ,CAAC,mBAAA,CAAoBC,IAAAA,CAAKD,IAAAA,CAAAA,EAAO;AAC5C,IAAA,MAAM,IAAIJ,YAAAA,CACR,+FAAA,EACA,EAAA,EACA;MACEM,OAAAA,EAAS;QAAEC,KAAAA,EAAOH;AAAK;KACzB,CAAA;AAEJ,EAAA;AACF;AAVgBD,MAAAA,CAAAA,eAAAA,EAAAA,iBAAAA,CAAAA;AAYT,SAASK,cAAAA,CAAeX,MAAgBO,IAAAA,EAAY;AACzD,EAAA,OAAOA,IAAAA,GAAOP,IAAAA,CAAKY,MAAAA,CAAOL,IAAAA,CAAAA,CAAMM,KAAK,GAAA,CAAA,GAAOb,IAAAA,CAAKa,IAAAA,CAAK,GAAA,CAAA;AACxD;AAFgBF,MAAAA,CAAAA,cAAAA,EAAAA,gBAAAA,CAAAA;AAIT,SAASG,OAAOP,IAAAA,EAAY;AACjC,EAAA,OAAOA,IAAAA,CAAKQ,SAAS,GAAA,CAAA;AACvB;AAFgBD,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"utils.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { EmitterError } from \"@/emitter/errors.js\";\n\nexport function assertValidNamespace(path: string[]) {\n if (!path || !Array.isArray(path)) {\n throw new EmitterError(\"Event path cannot be empty!\");\n }\n path.forEach((part) => assertValidName(part));\n}\n\nexport function assertValidName(name: string) {\n if (!name || !/(^[a-zA-Z0-9_]+$)/.test(name)) {\n throw new EmitterError(\n \"Event name or a namespace part must contain only letters, letters and optionally underscores.\",\n [],\n {\n context: { value: name },\n },\n );\n }\n}\n\nexport function createFullPath(path: string[], name: string) {\n return name ? path.concat(name).join(\".\") : path.join(\".\");\n}\n\nexport function isPath(name: string) {\n return name.includes(\".\");\n}\n"]}
@@ -88,8 +88,8 @@ declare class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializ
88
88
  context: object;
89
89
  trace: EventTrace | undefined;
90
90
  listeners: {
91
- options?: EmitterOptions | undefined;
92
91
  raw: Matcher;
92
+ options?: EmitterOptions | undefined;
93
93
  callback: Callback<any>;
94
94
  }[];
95
95
  cleanups: CleanupFn[];
@@ -97,4 +97,4 @@ declare class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializ
97
97
  loadSnapshot({ listeners, ...snapshot }: ReturnType<typeof this.createSnapshot>): void;
98
98
  }
99
99
 
100
- export { type Callback as C, Emitter as E, type InferCallbackValue as I, type MatcherFn as M, type StringKey as S, type EmitterOptions as a, type EventMeta as b, type Matcher as c, type CleanupFn as d, type EventTrace as e, type EmitterInput as f, type EmitterChildInput as g };
100
+ export { type Callback as C, Emitter as E, type InferCallbackValue as I, type Matcher as M, type StringKey as S, type EmitterOptions as a, type EventMeta as b, type CleanupFn as c, type EventTrace as d, type MatcherFn as e, type EmitterChildInput as f, type EmitterInput as g };
@@ -88,8 +88,8 @@ declare class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializ
88
88
  context: object;
89
89
  trace: EventTrace | undefined;
90
90
  listeners: {
91
- options?: EmitterOptions | undefined;
92
91
  raw: Matcher;
92
+ options?: EmitterOptions | undefined;
93
93
  callback: Callback<any>;
94
94
  }[];
95
95
  cleanups: CleanupFn[];
@@ -97,4 +97,4 @@ declare class Emitter<T = Record<keyof any, Callback<unknown>>> extends Serializ
97
97
  loadSnapshot({ listeners, ...snapshot }: ReturnType<typeof this.createSnapshot>): void;
98
98
  }
99
99
 
100
- export { type Callback as C, Emitter as E, type InferCallbackValue as I, type MatcherFn as M, type StringKey as S, type EmitterOptions as a, type EventMeta as b, type Matcher as c, type CleanupFn as d, type EventTrace as e, type EmitterInput as f, type EmitterChildInput as g };
100
+ export { type Callback as C, Emitter as E, type InferCallbackValue as I, type Matcher as M, type StringKey as S, type EmitterOptions as a, type EventMeta as b, type CleanupFn as c, type EventTrace as d, type MatcherFn as e, type EmitterChildInput as f, type EmitterInput as g };
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts"],"names":["FrameworkError","AggregateError","isFatal","isRetryable","context","message","errors","options","name","Error","captureStackTrace","R","isBoolean","hasFatalError","err","traverseErrors","error","getCause","Array","from","at","explain","output","index","entries","offset","repeat","push","toString","cause","join","dump","util","inspect","compact","depth","Infinity","ensure","undefined","isInstanceOf","isAbortError","AbortError","NotImplementedError","ValueError"],"mappings":"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","file":"errors.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport util from \"util\";\nimport * as R from \"remeda\";\nimport type { ObjectLike } from \"@/internals/types.js\";\n\nexport interface FrameworkErrorOptions {\n isFatal?: boolean;\n isRetryable?: boolean;\n context?: ObjectLike;\n}\n\nexport class FrameworkError extends AggregateError {\n isFatal = false;\n isRetryable = true;\n context: Record<string, any>;\n\n constructor(\n message = \"The BeeAI Framework has encountered an error.\",\n errors: Error[] = [],\n options: FrameworkErrorOptions = {},\n ) {\n super(errors || [], message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, AggregateError);\n\n if (R.isBoolean(options?.isFatal)) {\n this.isFatal = options?.isFatal;\n }\n if (R.isBoolean(options?.isRetryable)) {\n this.isRetryable = options.isRetryable;\n }\n this.context = options?.context ?? {};\n }\n\n hasFatalError() {\n if (this.isFatal) {\n return true;\n }\n for (const err of this.traverseErrors()) {\n if (err instanceof FrameworkError && err.isFatal) {\n return true;\n }\n }\n return false;\n }\n\n *traverseErrors(): Generator<Error> {\n for (const error of this.errors) {\n yield error;\n if (error instanceof FrameworkError) {\n yield* error.traverseErrors();\n }\n }\n }\n\n getCause(): Error {\n const errors = Array.from(this.traverseErrors());\n return errors.at(-1) ?? this;\n }\n\n explain(): string {\n const output = [];\n for (const [index, error] of [this, ...this.traverseErrors()].entries()) {\n const offset = ` `.repeat(2 * index);\n output.push(`${offset}${error.toString()}`);\n if (error.cause) {\n output.push(`${offset}Cause: ${error.cause.toString()}`);\n }\n }\n return output.join(\"\\n\");\n }\n\n dump() {\n return util.inspect(this, {\n compact: false,\n depth: Infinity,\n });\n }\n\n static ensure(error: Error): FrameworkError {\n return error instanceof FrameworkError ? error : new FrameworkError(undefined, [error]);\n }\n\n static isInstanceOf(error: unknown): error is FrameworkError {\n return error instanceof FrameworkError;\n }\n\n static isAbortError(error: unknown) {\n return error instanceof AbortError || (error instanceof Error && error?.name === \"AbortError\");\n }\n\n static isRetryable(error: unknown) {\n if (error instanceof FrameworkError) {\n return error.isRetryable;\n }\n return !FrameworkError.isAbortError(error);\n }\n}\n\nexport class NotImplementedError extends FrameworkError {\n constructor(message = \"Not implemented!\", errors?: Error[]) {\n super(message, errors, {\n isFatal: true,\n isRetryable: false,\n });\n }\n}\n\nexport class ValueError extends FrameworkError {\n constructor(\n message = \"The provided value is not supported!\",\n errors: Error[] = [],\n options?: FrameworkErrorOptions,\n ) {\n super(message, errors, options);\n }\n}\n\nexport class AbortError extends FrameworkError {\n constructor(\n message = \"The operation has been aborted!\",\n errors: Error[] = [],\n options?: FrameworkErrorOptions,\n ) {\n super(message, errors, options);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts"],"names":["FrameworkError","AggregateError","isFatal","isRetryable","context","message","errors","options","name","Error","captureStackTrace","R","isBoolean","hasFatalError","err","traverseErrors","error","getCause","Array","from","at","explain","output","index","entries","offset","repeat","push","toString","cause","join","dump","util","inspect","compact","depth","Infinity","ensure","undefined","isInstanceOf","isAbortError","AbortError","NotImplementedError","ValueError"],"mappings":"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","file":"errors.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport util from \"util\";\nimport * as R from \"remeda\";\nimport type { ObjectLike } from \"@/internals/types.js\";\n\nexport interface FrameworkErrorOptions {\n isFatal?: boolean;\n isRetryable?: boolean;\n context?: ObjectLike;\n}\n\nexport class FrameworkError extends AggregateError {\n isFatal = false;\n isRetryable = true;\n context: Record<string, any>;\n\n constructor(\n message = \"The BeeAI Framework has encountered an error.\",\n errors: Error[] = [],\n options: FrameworkErrorOptions = {},\n ) {\n super(errors || [], message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, AggregateError);\n\n if (R.isBoolean(options?.isFatal)) {\n this.isFatal = options?.isFatal;\n }\n if (R.isBoolean(options?.isRetryable)) {\n this.isRetryable = options.isRetryable;\n }\n this.context = options?.context ?? {};\n }\n\n hasFatalError() {\n if (this.isFatal) {\n return true;\n }\n for (const err of this.traverseErrors()) {\n if (err instanceof FrameworkError && err.isFatal) {\n return true;\n }\n }\n return false;\n }\n\n *traverseErrors(): Generator<Error> {\n for (const error of this.errors) {\n yield error;\n if (error instanceof FrameworkError) {\n yield* error.traverseErrors();\n }\n }\n }\n\n getCause(): Error {\n const errors = Array.from(this.traverseErrors());\n return errors.at(-1) ?? this;\n }\n\n explain(): string {\n const output = [];\n for (const [index, error] of [this, ...this.traverseErrors()].entries()) {\n const offset = ` `.repeat(2 * index);\n output.push(`${offset}${error.toString()}`);\n if (error.cause) {\n output.push(`${offset}Cause: ${error.cause.toString()}`);\n }\n }\n return output.join(\"\\n\");\n }\n\n dump() {\n return util.inspect(this, {\n compact: false,\n depth: Infinity,\n });\n }\n\n static ensure(error: Error): FrameworkError {\n return error instanceof FrameworkError ? error : new FrameworkError(undefined, [error]);\n }\n\n static isInstanceOf(error: unknown): error is FrameworkError {\n return error instanceof FrameworkError;\n }\n\n static isAbortError(error: unknown) {\n return error instanceof AbortError || (error instanceof Error && error?.name === \"AbortError\");\n }\n\n static isRetryable(error: unknown) {\n if (error instanceof FrameworkError) {\n return error.isRetryable;\n }\n return !FrameworkError.isAbortError(error);\n }\n}\n\nexport class NotImplementedError extends FrameworkError {\n constructor(message = \"Not implemented!\", errors?: Error[]) {\n super(message, errors, {\n isFatal: true,\n isRetryable: false,\n });\n }\n}\n\nexport class ValueError extends FrameworkError {\n constructor(\n message = \"The provided value is not supported!\",\n errors: Error[] = [],\n options?: FrameworkErrorOptions,\n ) {\n super(message, errors, options);\n }\n}\n\nexport class AbortError extends FrameworkError {\n constructor(\n message = \"The operation has been aborted!\",\n errors: Error[] = [],\n options?: FrameworkErrorOptions,\n ) {\n super(message, errors, options);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts"],"names":["FrameworkError","AggregateError","isFatal","isRetryable","context","message","errors","options","name","Error","captureStackTrace","R","isBoolean","hasFatalError","err","traverseErrors","error","getCause","Array","from","at","explain","output","index","entries","offset","repeat","push","toString","cause","join","dump","util","inspect","compact","depth","Infinity","ensure","undefined","isInstanceOf","isAbortError","AbortError","NotImplementedError","ValueError"],"mappings":"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","file":"errors.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport util from \"util\";\nimport * as R from \"remeda\";\nimport type { ObjectLike } from \"@/internals/types.js\";\n\nexport interface FrameworkErrorOptions {\n isFatal?: boolean;\n isRetryable?: boolean;\n context?: ObjectLike;\n}\n\nexport class FrameworkError extends AggregateError {\n isFatal = false;\n isRetryable = true;\n context: Record<string, any>;\n\n constructor(\n message = \"The BeeAI Framework has encountered an error.\",\n errors: Error[] = [],\n options: FrameworkErrorOptions = {},\n ) {\n super(errors || [], message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, AggregateError);\n\n if (R.isBoolean(options?.isFatal)) {\n this.isFatal = options?.isFatal;\n }\n if (R.isBoolean(options?.isRetryable)) {\n this.isRetryable = options.isRetryable;\n }\n this.context = options?.context ?? {};\n }\n\n hasFatalError() {\n if (this.isFatal) {\n return true;\n }\n for (const err of this.traverseErrors()) {\n if (err instanceof FrameworkError && err.isFatal) {\n return true;\n }\n }\n return false;\n }\n\n *traverseErrors(): Generator<Error> {\n for (const error of this.errors) {\n yield error;\n if (error instanceof FrameworkError) {\n yield* error.traverseErrors();\n }\n }\n }\n\n getCause(): Error {\n const errors = Array.from(this.traverseErrors());\n return errors.at(-1) ?? this;\n }\n\n explain(): string {\n const output = [];\n for (const [index, error] of [this, ...this.traverseErrors()].entries()) {\n const offset = ` `.repeat(2 * index);\n output.push(`${offset}${error.toString()}`);\n if (error.cause) {\n output.push(`${offset}Cause: ${error.cause.toString()}`);\n }\n }\n return output.join(\"\\n\");\n }\n\n dump() {\n return util.inspect(this, {\n compact: false,\n depth: Infinity,\n });\n }\n\n static ensure(error: Error): FrameworkError {\n return error instanceof FrameworkError ? error : new FrameworkError(undefined, [error]);\n }\n\n static isInstanceOf(error: unknown): error is FrameworkError {\n return error instanceof FrameworkError;\n }\n\n static isAbortError(error: unknown) {\n return error instanceof AbortError || (error instanceof Error && error?.name === \"AbortError\");\n }\n\n static isRetryable(error: unknown) {\n if (error instanceof FrameworkError) {\n return error.isRetryable;\n }\n return !FrameworkError.isAbortError(error);\n }\n}\n\nexport class NotImplementedError extends FrameworkError {\n constructor(message = \"Not implemented!\", errors?: Error[]) {\n super(message, errors, {\n isFatal: true,\n isRetryable: false,\n });\n }\n}\n\nexport class ValueError extends FrameworkError {\n constructor(\n message = \"The provided value is not supported!\",\n errors: Error[] = [],\n options?: FrameworkErrorOptions,\n ) {\n super(message, errors, options);\n }\n}\n\nexport class AbortError extends FrameworkError {\n constructor(\n message = \"The operation has been aborted!\",\n errors: Error[] = [],\n options?: FrameworkErrorOptions,\n ) {\n super(message, errors, options);\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/errors.ts"],"names":["FrameworkError","AggregateError","isFatal","isRetryable","context","message","errors","options","name","Error","captureStackTrace","R","isBoolean","hasFatalError","err","traverseErrors","error","getCause","Array","from","at","explain","output","index","entries","offset","repeat","push","toString","cause","join","dump","util","inspect","compact","depth","Infinity","ensure","undefined","isInstanceOf","isAbortError","AbortError","NotImplementedError","ValueError"],"mappings":"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","file":"errors.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport util from \"util\";\nimport * as R from \"remeda\";\nimport type { ObjectLike } from \"@/internals/types.js\";\n\nexport interface FrameworkErrorOptions {\n isFatal?: boolean;\n isRetryable?: boolean;\n context?: ObjectLike;\n}\n\nexport class FrameworkError extends AggregateError {\n isFatal = false;\n isRetryable = true;\n context: Record<string, any>;\n\n constructor(\n message = \"The BeeAI Framework has encountered an error.\",\n errors: Error[] = [],\n options: FrameworkErrorOptions = {},\n ) {\n super(errors || [], message);\n this.name = this.constructor.name;\n Error.captureStackTrace(this, AggregateError);\n\n if (R.isBoolean(options?.isFatal)) {\n this.isFatal = options?.isFatal;\n }\n if (R.isBoolean(options?.isRetryable)) {\n this.isRetryable = options.isRetryable;\n }\n this.context = options?.context ?? {};\n }\n\n hasFatalError() {\n if (this.isFatal) {\n return true;\n }\n for (const err of this.traverseErrors()) {\n if (err instanceof FrameworkError && err.isFatal) {\n return true;\n }\n }\n return false;\n }\n\n *traverseErrors(): Generator<Error> {\n for (const error of this.errors) {\n yield error;\n if (error instanceof FrameworkError) {\n yield* error.traverseErrors();\n }\n }\n }\n\n getCause(): Error {\n const errors = Array.from(this.traverseErrors());\n return errors.at(-1) ?? this;\n }\n\n explain(): string {\n const output = [];\n for (const [index, error] of [this, ...this.traverseErrors()].entries()) {\n const offset = ` `.repeat(2 * index);\n output.push(`${offset}${error.toString()}`);\n if (error.cause) {\n output.push(`${offset}Cause: ${error.cause.toString()}`);\n }\n }\n return output.join(\"\\n\");\n }\n\n dump() {\n return util.inspect(this, {\n compact: false,\n depth: Infinity,\n });\n }\n\n static ensure(error: Error): FrameworkError {\n return error instanceof FrameworkError ? error : new FrameworkError(undefined, [error]);\n }\n\n static isInstanceOf(error: unknown): error is FrameworkError {\n return error instanceof FrameworkError;\n }\n\n static isAbortError(error: unknown) {\n return error instanceof AbortError || (error instanceof Error && error?.name === \"AbortError\");\n }\n\n static isRetryable(error: unknown) {\n if (error instanceof FrameworkError) {\n return error.isRetryable;\n }\n return !FrameworkError.isAbortError(error);\n }\n}\n\nexport class NotImplementedError extends FrameworkError {\n constructor(message = \"Not implemented!\", errors?: Error[]) {\n super(message, errors, {\n isFatal: true,\n isRetryable: false,\n });\n }\n}\n\nexport class ValueError extends FrameworkError {\n constructor(\n message = \"The provided value is not supported!\",\n errors: Error[] = [],\n options?: FrameworkErrorOptions,\n ) {\n super(message, errors, options);\n }\n}\n\nexport class AbortError extends FrameworkError {\n constructor(\n message = \"The operation has been aborted!\",\n errors: Error[] = [],\n options?: FrameworkErrorOptions,\n ) {\n super(message, errors, options);\n }\n}\n"]}
package/dist/index.d.cts CHANGED
@@ -2,9 +2,9 @@ export { Logger, LoggerBindings, LoggerError, LoggerInput, LoggerLevel, LoggerLe
2
2
  export { PromptTemplate, PromptTemplateError, PromptTemplateInput, PromptTemplateRenderFn, PromptTemplateRenderInput, ValidationPromptTemplateError } from './template.cjs';
3
3
  export { AbortError, FrameworkError, FrameworkErrorOptions, NotImplementedError, ValueError } from './errors.cjs';
4
4
  export { Version } from './version.cjs';
5
- export { S as SerializeFactory, a as Serializer } from './serializer-c51B2z6d.cjs';
6
- export { A as AgentError, a as BaseAgent, B as BaseAgentRunOptions } from './base-BqzN2QwB.cjs';
7
- export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from './chat-DaqV3woF.cjs';
5
+ export { S as SerializeFactory, a as Serializer, i as isFunctionDeserializationAllowed } from './serializer-CFDWYUco.cjs';
6
+ export { A as AgentError, B as BaseAgent, a as BaseAgentRunOptions } from './base-s3ioVIE9.cjs';
7
+ export { C as ChatConfig, a as ChatModel, b as ChatModelCache, c as ChatModelEmitter, d as ChatModelEvents, e as ChatModelFinishReason, f as ChatModelInput, g as ChatModelObjectInput, h as ChatModelObjectOutput, i as ChatModelOutput, j as ChatModelParameters, k as ChatModelToolChoice, l as ChatModelToolChoiceSupport, m as ChatModelUsage, n as ConfigFn } from './chat-C20nYj46.cjs';
8
8
  export { EmbeddingModel, EmbeddingModelEmitter, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from './backend/embedding.cjs';
9
9
  export { AnyTool, AnyToolClass, BaseToolOptions, BaseToolRunOptions, DynamicTool, InferToolOutput, JSONToolOutput, RetryOptions, StringToolOutput, Tool, ToolEmitter, ToolError, ToolEvents, ToolInput, ToolInputRaw, ToolInputValidationError, ToolOutput, ToolSnapshot } from './tools/base.cjs';
10
10
  import 'pino';
@@ -14,7 +14,7 @@ import './internals/helpers/guards.cjs';
14
14
  import 'zod';
15
15
  import 'ajv';
16
16
  import './context.cjs';
17
- import './emitter-UkIkNrek.cjs';
17
+ import './emitter-D4OcelZ9.cjs';
18
18
  import './internals/helpers/promise.cjs';
19
19
  import './memory/base.cjs';
20
20
  import './backend/message.cjs';
package/dist/index.d.ts CHANGED
@@ -2,9 +2,9 @@ export { Logger, LoggerBindings, LoggerError, LoggerInput, LoggerLevel, LoggerLe
2
2
  export { PromptTemplate, PromptTemplateError, PromptTemplateInput, PromptTemplateRenderFn, PromptTemplateRenderInput, ValidationPromptTemplateError } from './template.js';
3
3
  export { AbortError, FrameworkError, FrameworkErrorOptions, NotImplementedError, ValueError } from './errors.js';
4
4
  export { Version } from './version.js';
5
- export { S as SerializeFactory, a as Serializer } from './serializer-53t8gGQa.js';
6
- export { A as AgentError, a as BaseAgent, B as BaseAgentRunOptions } from './base-BfhNzUYf.js';
7
- export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from './chat-DTxmaKP0.js';
5
+ export { S as SerializeFactory, a as Serializer, i as isFunctionDeserializationAllowed } from './serializer-BafOT48s.js';
6
+ export { A as AgentError, B as BaseAgent, a as BaseAgentRunOptions } from './base-BjzyQ8k6.js';
7
+ export { C as ChatConfig, a as ChatModel, b as ChatModelCache, c as ChatModelEmitter, d as ChatModelEvents, e as ChatModelFinishReason, f as ChatModelInput, g as ChatModelObjectInput, h as ChatModelObjectOutput, i as ChatModelOutput, j as ChatModelParameters, k as ChatModelToolChoice, l as ChatModelToolChoiceSupport, m as ChatModelUsage, n as ConfigFn } from './chat-CfTNfR60.js';
8
8
  export { EmbeddingModel, EmbeddingModelEmitter, EmbeddingModelEvents, EmbeddingModelInput, EmbeddingModelOutput } from './backend/embedding.js';
9
9
  export { AnyTool, AnyToolClass, BaseToolOptions, BaseToolRunOptions, DynamicTool, InferToolOutput, JSONToolOutput, RetryOptions, StringToolOutput, Tool, ToolEmitter, ToolError, ToolEvents, ToolInput, ToolInputRaw, ToolInputValidationError, ToolOutput, ToolSnapshot } from './tools/base.js';
10
10
  import 'pino';
@@ -14,7 +14,7 @@ import './internals/helpers/guards.js';
14
14
  import 'zod';
15
15
  import 'ajv';
16
16
  import './context.js';
17
- import './emitter-CL56qab4.js';
17
+ import './emitter-kHxkUxco.js';
18
18
  import './internals/helpers/promise.js';
19
19
  import './memory/base.js';
20
20
  import './backend/message.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/internals/env.ts"],"names":["getEnv","key","fallback","getProp","process","env","parseEnv","schema","defaultValue","value","result","safeParse","success","undefined","FrameworkError","error","data","asBoolean","z","string","String","trim","toLowerCase","hasEnv"],"mappings":";;;;;;;;AAWO,SAASA,MAAAA,CAAOC,KAAaC,QAAAA,EAAiB;AACnD,EAAA,OAAOC,kBAAAA,CAAQC,QAAQC,GAAAA,EAAK;AAACJ,IAAAA;KAAMC,QAAAA,CAAAA;AACrC;AAFgBF,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA;AAIT,SAASM,QAAAA,CACdL,GAAAA,EACAM,MAAAA,EACAC,YAAAA,EAAqB;AAErB,EAAA,MAAMC,KAAAA,GAAQT,MAAAA,CAAOC,GAAAA,CAAAA,IAAQO,YAAAA;AAC7B,EAAA,MAAME,MAAAA,GAASH,MAAAA,CAAOI,SAAAA,CAAUF,KAAAA,CAAAA;AAChC,EAAA,IAAI,CAACC,OAAOE,OAAAA,EAAS;AACnB,IAAA,IAAIH,UAAUI,MAAAA,EAAW;AACvB,MAAA,MAAM,IAAIC,yBAAAA,CAAe,CAAA,uBAAA,EAA0Bb,GAAAA,CAAAA,aAAAA,CAAkB,CAAA;AACvE;AAEA,IAAA,MAAM,IAAIa,yBAAAA,CAAe,CAAA,0CAAA,EAA6Cb,GAAAA,CAAAA,EAAAA,CAAAA,EAAS;MAACS,MAAAA,CAAOK;AAAM,KAAA,CAAA;AAC/F;AACA,EAAA,OAAOL,MAAAA,CAAOM,IAAAA;AAChB;AAfgBV,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA;AAgBhBA,QAAAA,CAASW,SAAAA,GAAY,CAAChB,GAAAA,EAAaC,QAAAA,GAAW,KAAA,KAAK;AACjD,EAAA,OAAOI,QAAAA,CAASL,GAAAA,EAAKiB,KAAAA,CAAEC,MAAAA,EAAM,EAAIC,MAAAA,CAAOlB,QAAAA,CAAAA,CAAAA,CAAWmB,IAAAA,EAAI,CAAGC,WAAAA,EAAW,KAAO,MAAA;AAC9E,CAAA;AAEO,SAASC,OAAOtB,GAAAA,EAAW;AAChC,EAAA,OAAOE,kBAAAA,CAAQC,QAAQC,GAAAA,EAAK;AAACJ,IAAAA;GAAI,CAAA,KAAMY,MAAAA;AACzC;AAFgBU,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"env.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { z, ZodSchema } from \"zod\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\nexport function getEnv(key: string, fallback?: never): string | undefined;\nexport function getEnv(key: string, fallback: string): string;\nexport function getEnv(key: string, fallback?: string) {\n return getProp(process.env, [key], fallback);\n}\n\nexport function parseEnv<T extends ZodSchema>(\n key: string,\n schema: T,\n defaultValue?: string,\n): z.output<T> {\n const value = getEnv(key) ?? defaultValue;\n const result = schema.safeParse(value);\n if (!result.success) {\n if (value === undefined) {\n throw new FrameworkError(`The required variable '${key}' is not set!`);\n }\n\n throw new FrameworkError(`Failed to parse the environment variable (${key})!`, [result.error]);\n }\n return result.data;\n}\nparseEnv.asBoolean = (key: string, fallback = false) => {\n return parseEnv(key, z.string(), String(fallback)).trim().toLowerCase() === \"true\";\n};\n\nexport function hasEnv(key: string) {\n return getProp(process.env, [key]) !== undefined;\n}\n"]}
1
+ {"version":3,"sources":["../../src/internals/env.ts"],"names":["getEnv","key","fallback","getProp","process","env","parseEnv","schema","defaultValue","value","result","safeParse","success","undefined","FrameworkError","error","data","asBoolean","z","string","String","trim","toLowerCase","hasEnv"],"mappings":";;;;;;;;AAWO,SAASA,MAAAA,CAAOC,KAAaC,QAAAA,EAAiB;AACnD,EAAA,OAAOC,kBAAAA,CAAQC,QAAQC,GAAAA,EAAK;AAACJ,IAAAA;KAAMC,QAAAA,CAAAA;AACrC;AAFgBF,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA;AAIT,SAASM,QAAAA,CACdL,GAAAA,EACAM,MAAAA,EACAC,YAAAA,EAAqB;AAErB,EAAA,MAAMC,KAAAA,GAAQT,MAAAA,CAAOC,GAAAA,CAAAA,IAAQO,YAAAA;AAC7B,EAAA,MAAME,MAAAA,GAASH,MAAAA,CAAOI,SAAAA,CAAUF,KAAAA,CAAAA;AAChC,EAAA,IAAI,CAACC,OAAOE,OAAAA,EAAS;AACnB,IAAA,IAAIH,UAAUI,MAAAA,EAAW;AACvB,MAAA,MAAM,IAAIC,yBAAAA,CAAe,CAAA,uBAAA,EAA0Bb,GAAAA,CAAAA,aAAAA,CAAkB,CAAA;AACvE,IAAA;AAEA,IAAA,MAAM,IAAIa,yBAAAA,CAAe,CAAA,0CAAA,EAA6Cb,GAAAA,CAAAA,EAAAA,CAAAA,EAAS;MAACS,MAAAA,CAAOK;AAAM,KAAA,CAAA;AAC/F,EAAA;AACA,EAAA,OAAOL,MAAAA,CAAOM,IAAAA;AAChB;AAfgBV,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA;AAgBhBA,QAAAA,CAASW,SAAAA,GAAY,CAAChB,GAAAA,EAAaC,QAAAA,GAAW,KAAA,KAAK;AACjD,EAAA,OAAOI,QAAAA,CAASL,GAAAA,EAAKiB,KAAAA,CAAEC,MAAAA,EAAM,EAAIC,MAAAA,CAAOlB,QAAAA,CAAAA,CAAAA,CAAWmB,IAAAA,EAAI,CAAGC,WAAAA,EAAW,KAAO,MAAA;AAC9E,CAAA;AAEO,SAASC,OAAOtB,GAAAA,EAAW;AAChC,EAAA,OAAOE,kBAAAA,CAAQC,QAAQC,GAAAA,EAAK;AAACJ,IAAAA;GAAI,CAAA,KAAMY,MAAAA;AACzC;AAFgBU,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"env.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { z, ZodSchema } from \"zod\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\nexport function getEnv(key: string, fallback?: never): string | undefined;\nexport function getEnv(key: string, fallback: string): string;\nexport function getEnv(key: string, fallback?: string) {\n return getProp(process.env, [key], fallback);\n}\n\nexport function parseEnv<T extends ZodSchema>(\n key: string,\n schema: T,\n defaultValue?: string,\n): z.output<T> {\n const value = getEnv(key) ?? defaultValue;\n const result = schema.safeParse(value);\n if (!result.success) {\n if (value === undefined) {\n throw new FrameworkError(`The required variable '${key}' is not set!`);\n }\n\n throw new FrameworkError(`Failed to parse the environment variable (${key})!`, [result.error]);\n }\n return result.data;\n}\nparseEnv.asBoolean = (key: string, fallback = false) => {\n return parseEnv(key, z.string(), String(fallback)).trim().toLowerCase() === \"true\";\n};\n\nexport function hasEnv(key: string) {\n return getProp(process.env, [key]) !== undefined;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/internals/env.ts"],"names":["getEnv","key","fallback","getProp","process","env","parseEnv","schema","defaultValue","value","result","safeParse","success","undefined","FrameworkError","error","data","asBoolean","z","string","String","trim","toLowerCase","hasEnv"],"mappings":";;;;;;AAWO,SAASA,MAAAA,CAAOC,KAAaC,QAAAA,EAAiB;AACnD,EAAA,OAAOC,OAAAA,CAAQC,QAAQC,GAAAA,EAAK;AAACJ,IAAAA;KAAMC,QAAAA,CAAAA;AACrC;AAFgBF,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA;AAIT,SAASM,QAAAA,CACdL,GAAAA,EACAM,MAAAA,EACAC,YAAAA,EAAqB;AAErB,EAAA,MAAMC,KAAAA,GAAQT,MAAAA,CAAOC,GAAAA,CAAAA,IAAQO,YAAAA;AAC7B,EAAA,MAAME,MAAAA,GAASH,MAAAA,CAAOI,SAAAA,CAAUF,KAAAA,CAAAA;AAChC,EAAA,IAAI,CAACC,OAAOE,OAAAA,EAAS;AACnB,IAAA,IAAIH,UAAUI,MAAAA,EAAW;AACvB,MAAA,MAAM,IAAIC,cAAAA,CAAe,CAAA,uBAAA,EAA0Bb,GAAAA,CAAAA,aAAAA,CAAkB,CAAA;AACvE;AAEA,IAAA,MAAM,IAAIa,cAAAA,CAAe,CAAA,0CAAA,EAA6Cb,GAAAA,CAAAA,EAAAA,CAAAA,EAAS;MAACS,MAAAA,CAAOK;AAAM,KAAA,CAAA;AAC/F;AACA,EAAA,OAAOL,MAAAA,CAAOM,IAAAA;AAChB;AAfgBV,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA;AAgBhBA,QAAAA,CAASW,SAAAA,GAAY,CAAChB,GAAAA,EAAaC,QAAAA,GAAW,KAAA,KAAK;AACjD,EAAA,OAAOI,QAAAA,CAASL,GAAAA,EAAKiB,CAAAA,CAAEC,MAAAA,EAAM,EAAIC,MAAAA,CAAOlB,QAAAA,CAAAA,CAAAA,CAAWmB,IAAAA,EAAI,CAAGC,WAAAA,EAAW,KAAO,MAAA;AAC9E,CAAA;AAEO,SAASC,OAAOtB,GAAAA,EAAW;AAChC,EAAA,OAAOE,OAAAA,CAAQC,QAAQC,GAAAA,EAAK;AAACJ,IAAAA;GAAI,CAAA,KAAMY,MAAAA;AACzC;AAFgBU,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"env.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { z, ZodSchema } from \"zod\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\nexport function getEnv(key: string, fallback?: never): string | undefined;\nexport function getEnv(key: string, fallback: string): string;\nexport function getEnv(key: string, fallback?: string) {\n return getProp(process.env, [key], fallback);\n}\n\nexport function parseEnv<T extends ZodSchema>(\n key: string,\n schema: T,\n defaultValue?: string,\n): z.output<T> {\n const value = getEnv(key) ?? defaultValue;\n const result = schema.safeParse(value);\n if (!result.success) {\n if (value === undefined) {\n throw new FrameworkError(`The required variable '${key}' is not set!`);\n }\n\n throw new FrameworkError(`Failed to parse the environment variable (${key})!`, [result.error]);\n }\n return result.data;\n}\nparseEnv.asBoolean = (key: string, fallback = false) => {\n return parseEnv(key, z.string(), String(fallback)).trim().toLowerCase() === \"true\";\n};\n\nexport function hasEnv(key: string) {\n return getProp(process.env, [key]) !== undefined;\n}\n"]}
1
+ {"version":3,"sources":["../../src/internals/env.ts"],"names":["getEnv","key","fallback","getProp","process","env","parseEnv","schema","defaultValue","value","result","safeParse","success","undefined","FrameworkError","error","data","asBoolean","z","string","String","trim","toLowerCase","hasEnv"],"mappings":";;;;;;AAWO,SAASA,MAAAA,CAAOC,KAAaC,QAAAA,EAAiB;AACnD,EAAA,OAAOC,OAAAA,CAAQC,QAAQC,GAAAA,EAAK;AAACJ,IAAAA;KAAMC,QAAAA,CAAAA;AACrC;AAFgBF,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA;AAIT,SAASM,QAAAA,CACdL,GAAAA,EACAM,MAAAA,EACAC,YAAAA,EAAqB;AAErB,EAAA,MAAMC,KAAAA,GAAQT,MAAAA,CAAOC,GAAAA,CAAAA,IAAQO,YAAAA;AAC7B,EAAA,MAAME,MAAAA,GAASH,MAAAA,CAAOI,SAAAA,CAAUF,KAAAA,CAAAA;AAChC,EAAA,IAAI,CAACC,OAAOE,OAAAA,EAAS;AACnB,IAAA,IAAIH,UAAUI,MAAAA,EAAW;AACvB,MAAA,MAAM,IAAIC,cAAAA,CAAe,CAAA,uBAAA,EAA0Bb,GAAAA,CAAAA,aAAAA,CAAkB,CAAA;AACvE,IAAA;AAEA,IAAA,MAAM,IAAIa,cAAAA,CAAe,CAAA,0CAAA,EAA6Cb,GAAAA,CAAAA,EAAAA,CAAAA,EAAS;MAACS,MAAAA,CAAOK;AAAM,KAAA,CAAA;AAC/F,EAAA;AACA,EAAA,OAAOL,MAAAA,CAAOM,IAAAA;AAChB;AAfgBV,MAAAA,CAAAA,QAAAA,EAAAA,UAAAA,CAAAA;AAgBhBA,QAAAA,CAASW,SAAAA,GAAY,CAAChB,GAAAA,EAAaC,QAAAA,GAAW,KAAA,KAAK;AACjD,EAAA,OAAOI,QAAAA,CAASL,GAAAA,EAAKiB,CAAAA,CAAEC,MAAAA,EAAM,EAAIC,MAAAA,CAAOlB,QAAAA,CAAAA,CAAAA,CAAWmB,IAAAA,EAAI,CAAGC,WAAAA,EAAW,KAAO,MAAA;AAC9E,CAAA;AAEO,SAASC,OAAOtB,GAAAA,EAAW;AAChC,EAAA,OAAOE,OAAAA,CAAQC,QAAQC,GAAAA,EAAK;AAACJ,IAAAA;GAAI,CAAA,KAAMY,MAAAA;AACzC;AAFgBU,MAAAA,CAAAA,MAAAA,EAAAA,QAAAA,CAAAA","file":"env.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { z, ZodSchema } from \"zod\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\nexport function getEnv(key: string, fallback?: never): string | undefined;\nexport function getEnv(key: string, fallback: string): string;\nexport function getEnv(key: string, fallback?: string) {\n return getProp(process.env, [key], fallback);\n}\n\nexport function parseEnv<T extends ZodSchema>(\n key: string,\n schema: T,\n defaultValue?: string,\n): z.output<T> {\n const value = getEnv(key) ?? defaultValue;\n const result = schema.safeParse(value);\n if (!result.success) {\n if (value === undefined) {\n throw new FrameworkError(`The required variable '${key}' is not set!`);\n }\n\n throw new FrameworkError(`Failed to parse the environment variable (${key})!`, [result.error]);\n }\n return result.data;\n}\nparseEnv.asBoolean = (key: string, fallback = false) => {\n return parseEnv(key, z.string(), String(fallback)).trim().toLowerCase() === \"true\";\n};\n\nexport function hasEnv(key: string) {\n return getProp(process.env, [key]) !== undefined;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/internals/fetcher.ts"],"names":["RestfulClientError","FrameworkError","createURLParams","data","urlTokenParams","URLSearchParams","key","value","Object","entries","undefined","Array","isArray","forEach","v","append","String","isPlainObject","set","toString","RestfulClient","Serializable","emitter","Emitter","root","child","namespace","creator","input","stream","path","init","groupId","url","getUrl","options","method","headers","getHeaders","emit","emitterToGenerator","fetchEventSource","onopen","response","contentType","get","ok","includes","EventStreamContentType","context","err","text","isRetryable","status","onmessage","msg","event","onclose","onerror","then","catch","error","doNothing","finally","fetch","target","searchParams","json","extra","final","override","filter","isTruthy","Headers","assign","fromEntries","URL","baseUrl","extraPath","paths","pathname","endsWith","replace","createSnapshot","shallowCopy","loadSnapshot","snapshot"],"mappings":"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","file":"fetcher.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport {\n EventSourceMessage,\n EventStreamContentType,\n fetchEventSource,\n} from \"@ai-zen/node-fetch-event-source\";\nimport { FetchEventSourceInit } from \"@ai-zen/node-fetch-event-source/lib/cjs/fetch.js\";\nimport { emitterToGenerator } from \"@/internals/helpers/promise.js\";\nimport { doNothing, isArray, isPlainObject, isTruthy } from \"remeda\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport class RestfulClientError extends FrameworkError {}\n\ntype URLParamType = string | number | boolean | null | undefined;\nexport function createURLParams(\n data: Record<string, URLParamType | URLParamType[] | Record<string, any>>,\n) {\n const urlTokenParams = new URLSearchParams();\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined) {\n continue;\n }\n\n if (Array.isArray(value)) {\n value.forEach((v) => {\n if (v !== undefined) {\n urlTokenParams.append(key, String(v));\n }\n });\n } else if (isPlainObject(value)) {\n urlTokenParams.set(key, createURLParams(value).toString());\n } else {\n urlTokenParams.set(key, String(value));\n }\n }\n return urlTokenParams;\n}\n\ninterface FetchInput {\n url: string;\n options: RequestInit;\n}\n\nexport interface StreamInput {\n url: string;\n options: FetchEventSourceInit;\n}\n\nexport interface RestfulClientEvents {\n fetchStart: Callback<{ input: FetchInput }>;\n fetchError: Callback<{ error: Error; input: FetchInput }>;\n fetchSuccess: Callback<{ response: Response; data: any; input: FetchInput }>;\n fetchDone: Callback<{ input: FetchInput }>;\n\n streamStart: Callback<{ input: StreamInput }>;\n streamOpen: Callback<{ input: StreamInput }>;\n streamSuccess: Callback<{ input: StreamInput }>;\n streamMessage: Callback<{ data: EventSourceMessage; input: StreamInput }>;\n streamError: Callback<{ error: Error; input: StreamInput }>;\n streamDone: Callback<{ input: StreamInput }>;\n}\n\nexport class RestfulClient<K extends Record<string, string>> extends Serializable {\n public readonly emitter = Emitter.root.child<RestfulClientEvents>({\n namespace: [\"internals\", \"restfulClient\"],\n creator: this,\n });\n\n constructor(\n protected input: {\n baseUrl: string;\n headers?: () => Promise<HeadersInit>;\n paths: K;\n },\n ) {\n super();\n }\n\n async *stream(\n path: keyof K,\n init: FetchEventSourceInit,\n ): AsyncGenerator<EventSourceMessage, void, void> {\n const emitter = this.emitter.child({\n groupId: \"stream\",\n });\n\n const input: StreamInput = {\n url: this.getUrl(path).toString(),\n options: {\n method: \"POST\",\n ...init,\n headers: await this.getHeaders(init?.headers),\n },\n };\n await emitter.emit(\"streamStart\", { input });\n\n return yield* emitterToGenerator(async ({ emit }) =>\n fetchEventSource(input.url, {\n ...input.options,\n async onopen(response) {\n const contentType = response.headers.get(\"content-type\") || \"\";\n if (response.ok && contentType.includes(EventStreamContentType)) {\n await emitter.emit(\"streamOpen\", { input });\n return;\n }\n throw new RestfulClientError(\"Failed to stream!\", [], {\n context: {\n url: response.url,\n err: await response.text(),\n response,\n },\n isRetryable: response.status >= 400 && response.status < 500 && response.status !== 429,\n });\n },\n async onmessage(msg) {\n if (msg?.event === \"error\") {\n throw new RestfulClientError(`Error during streaming has occurred.`, [], {\n context: msg,\n });\n }\n await emitter.emit(\"streamMessage\", { input, data: msg });\n emit(msg);\n },\n onclose() {},\n onerror(err) {\n throw new RestfulClientError(`Error during streaming has occurred.`, [err]);\n },\n })\n .then(() => emitter.emit(\"streamSuccess\", { input }))\n .catch(async (error) => {\n await emitter.emit(\"streamError\", { input, error }).catch(doNothing());\n throw error;\n })\n .finally(() => emitter.emit(\"streamDone\", { input })),\n );\n }\n\n async fetch(path: keyof K, init?: RequestInit & { searchParams?: URLSearchParams }) {\n const emitter = this.emitter.child({\n groupId: \"fetch\",\n });\n\n const target = this.getUrl(path);\n if (init?.searchParams) {\n for (const [key, value] of init.searchParams) {\n target.searchParams.set(key, value);\n }\n }\n\n const input: FetchInput = {\n url: target.toString(),\n options: {\n ...init,\n headers: await this.getHeaders(init?.headers),\n },\n };\n\n await emitter.emit(\"fetchStart\", { input });\n try {\n const response = await fetch(input.url, input.options);\n\n if (!response.ok) {\n throw new RestfulClientError(\"Fetch has failed\", [], {\n context: {\n url: response.url,\n error: await response.text(),\n response,\n },\n isRetryable: [408, 503].includes(response.status ?? 500),\n });\n }\n\n const data = await response.json();\n await emitter.emit(\"fetchSuccess\", { response, data, input });\n return data;\n } catch (error) {\n await emitter.emit(\"fetchError\", { error, input: input });\n throw error;\n } finally {\n await emitter.emit(\"fetchDone\", { input: input });\n }\n }\n\n protected async getHeaders(extra?: HeadersInit): Promise<Record<string, string>> {\n const final = {};\n for (const override of [await this.input.headers?.(), extra].filter(isTruthy)) {\n if (isArray(override) || override instanceof Headers) {\n Object.assign(final, Object.fromEntries(override.entries()));\n } else {\n Object.assign(final, override);\n }\n }\n return final;\n }\n\n protected getUrl(path: keyof K): URL {\n const url = new URL(this.input.baseUrl);\n const extraPath = this.input.paths[path] ?? path;\n if (url.pathname.endsWith(\"/\")) {\n url.pathname += extraPath.replace(/^\\//, \"\");\n } else {\n url.pathname += extraPath;\n }\n return url;\n }\n\n createSnapshot() {\n return {\n input: shallowCopy(this.input),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void {\n Object.assign(this, snapshot);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../src/internals/fetcher.ts"],"names":["RestfulClientError","FrameworkError","createURLParams","data","urlTokenParams","URLSearchParams","key","value","Object","entries","undefined","Array","isArray","forEach","v","append","String","isPlainObject","set","toString","RestfulClient","Serializable","emitter","Emitter","root","child","namespace","creator","input","stream","path","init","groupId","url","getUrl","options","method","headers","getHeaders","emit","emitterToGenerator","fetchEventSource","onopen","response","contentType","get","ok","includes","EventStreamContentType","context","err","text","isRetryable","status","onmessage","msg","event","onclose","onerror","then","catch","error","doNothing","finally","fetch","target","searchParams","json","extra","final","override","filter","isTruthy","Headers","assign","fromEntries","URL","baseUrl","extraPath","paths","pathname","endsWith","replace","createSnapshot","shallowCopy","loadSnapshot","snapshot"],"mappings":"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","file":"fetcher.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport {\n EventSourceMessage,\n EventStreamContentType,\n fetchEventSource,\n} from \"@ai-zen/node-fetch-event-source\";\nimport { FetchEventSourceInit } from \"@ai-zen/node-fetch-event-source/lib/cjs/fetch.js\";\nimport { emitterToGenerator } from \"@/internals/helpers/promise.js\";\nimport { doNothing, isArray, isPlainObject, isTruthy } from \"remeda\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport class RestfulClientError extends FrameworkError {}\n\ntype URLParamType = string | number | boolean | null | undefined;\nexport function createURLParams(\n data: Record<string, URLParamType | URLParamType[] | Record<string, any>>,\n) {\n const urlTokenParams = new URLSearchParams();\n for (const [key, value] of Object.entries(data)) {\n if (value === undefined) {\n continue;\n }\n\n if (Array.isArray(value)) {\n value.forEach((v) => {\n if (v !== undefined) {\n urlTokenParams.append(key, String(v));\n }\n });\n } else if (isPlainObject(value)) {\n urlTokenParams.set(key, createURLParams(value).toString());\n } else {\n urlTokenParams.set(key, String(value));\n }\n }\n return urlTokenParams;\n}\n\ninterface FetchInput {\n url: string;\n options: RequestInit;\n}\n\nexport interface StreamInput {\n url: string;\n options: FetchEventSourceInit;\n}\n\nexport interface RestfulClientEvents {\n fetchStart: Callback<{ input: FetchInput }>;\n fetchError: Callback<{ error: Error; input: FetchInput }>;\n fetchSuccess: Callback<{ response: Response; data: any; input: FetchInput }>;\n fetchDone: Callback<{ input: FetchInput }>;\n\n streamStart: Callback<{ input: StreamInput }>;\n streamOpen: Callback<{ input: StreamInput }>;\n streamSuccess: Callback<{ input: StreamInput }>;\n streamMessage: Callback<{ data: EventSourceMessage; input: StreamInput }>;\n streamError: Callback<{ error: Error; input: StreamInput }>;\n streamDone: Callback<{ input: StreamInput }>;\n}\n\nexport class RestfulClient<K extends Record<string, string>> extends Serializable {\n public readonly emitter = Emitter.root.child<RestfulClientEvents>({\n namespace: [\"internals\", \"restfulClient\"],\n creator: this,\n });\n\n constructor(\n protected input: {\n baseUrl: string;\n headers?: () => Promise<HeadersInit>;\n paths: K;\n },\n ) {\n super();\n }\n\n async *stream(\n path: keyof K,\n init: FetchEventSourceInit,\n ): AsyncGenerator<EventSourceMessage, void, void> {\n const emitter = this.emitter.child({\n groupId: \"stream\",\n });\n\n const input: StreamInput = {\n url: this.getUrl(path).toString(),\n options: {\n method: \"POST\",\n ...init,\n headers: await this.getHeaders(init?.headers),\n },\n };\n await emitter.emit(\"streamStart\", { input });\n\n return yield* emitterToGenerator(async ({ emit }) =>\n fetchEventSource(input.url, {\n ...input.options,\n async onopen(response) {\n const contentType = response.headers.get(\"content-type\") || \"\";\n if (response.ok && contentType.includes(EventStreamContentType)) {\n await emitter.emit(\"streamOpen\", { input });\n return;\n }\n throw new RestfulClientError(\"Failed to stream!\", [], {\n context: {\n url: response.url,\n err: await response.text(),\n response,\n },\n isRetryable: response.status >= 400 && response.status < 500 && response.status !== 429,\n });\n },\n async onmessage(msg) {\n if (msg?.event === \"error\") {\n throw new RestfulClientError(`Error during streaming has occurred.`, [], {\n context: msg,\n });\n }\n await emitter.emit(\"streamMessage\", { input, data: msg });\n emit(msg);\n },\n onclose() {},\n onerror(err) {\n throw new RestfulClientError(`Error during streaming has occurred.`, [err]);\n },\n })\n .then(() => emitter.emit(\"streamSuccess\", { input }))\n .catch(async (error) => {\n await emitter.emit(\"streamError\", { input, error }).catch(doNothing());\n throw error;\n })\n .finally(() => emitter.emit(\"streamDone\", { input })),\n );\n }\n\n async fetch(path: keyof K, init?: RequestInit & { searchParams?: URLSearchParams }) {\n const emitter = this.emitter.child({\n groupId: \"fetch\",\n });\n\n const target = this.getUrl(path);\n if (init?.searchParams) {\n for (const [key, value] of init.searchParams) {\n target.searchParams.set(key, value);\n }\n }\n\n const input: FetchInput = {\n url: target.toString(),\n options: {\n ...init,\n headers: await this.getHeaders(init?.headers),\n },\n };\n\n await emitter.emit(\"fetchStart\", { input });\n try {\n const response = await fetch(input.url, input.options);\n\n if (!response.ok) {\n throw new RestfulClientError(\"Fetch has failed\", [], {\n context: {\n url: response.url,\n error: await response.text(),\n response,\n },\n isRetryable: [408, 503].includes(response.status ?? 500),\n });\n }\n\n const data = await response.json();\n await emitter.emit(\"fetchSuccess\", { response, data, input });\n return data;\n } catch (error) {\n await emitter.emit(\"fetchError\", { error, input: input });\n throw error;\n } finally {\n await emitter.emit(\"fetchDone\", { input: input });\n }\n }\n\n protected async getHeaders(extra?: HeadersInit): Promise<Record<string, string>> {\n const final = {};\n for (const override of [await this.input.headers?.(), extra].filter(isTruthy)) {\n if (isArray(override) || override instanceof Headers) {\n Object.assign(final, Object.fromEntries(override.entries()));\n } else {\n Object.assign(final, override);\n }\n }\n return final;\n }\n\n protected getUrl(path: keyof K): URL {\n const url = new URL(this.input.baseUrl);\n const extraPath = this.input.paths[path] ?? path;\n if (url.pathname.endsWith(\"/\")) {\n url.pathname += extraPath.replace(/^\\//, \"\");\n } else {\n url.pathname += extraPath;\n }\n return url;\n }\n\n createSnapshot() {\n return {\n input: shallowCopy(this.input),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void {\n Object.assign(this, snapshot);\n }\n}\n"]}
@@ -2,7 +2,7 @@ import { FrameworkError } from '../errors.cjs';
2
2
  import { Serializable } from './serializable.cjs';
3
3
  import { EventSourceMessage } from '@ai-zen/node-fetch-event-source';
4
4
  import { FetchEventSourceInit } from '@ai-zen/node-fetch-event-source/lib/cjs/fetch.js';
5
- import { C as Callback, E as Emitter } from '../emitter-UkIkNrek.cjs';
5
+ import { E as Emitter, C as Callback } from '../emitter-D4OcelZ9.cjs';
6
6
  import './types.cjs';
7
7
  import './helpers/guards.cjs';
8
8