beeai-framework 0.1.10 → 0.1.11

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 (546) hide show
  1. package/README.md +18 -6
  2. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  3. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +7 -6
  4. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +7 -6
  5. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  6. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  7. package/dist/adapters/amazon-bedrock/backend/client.d.cts +1 -1
  8. package/dist/adapters/amazon-bedrock/backend/client.d.ts +1 -1
  9. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  10. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  11. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +15 -4
  12. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +15 -4
  13. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  14. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  15. package/dist/adapters/anthropic/backend/chat.d.cts +9 -8
  16. package/dist/adapters/anthropic/backend/chat.d.ts +9 -8
  17. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  18. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  19. package/dist/adapters/anthropic/backend/client.d.cts +1 -1
  20. package/dist/adapters/anthropic/backend/client.d.ts +1 -1
  21. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  22. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  23. package/dist/adapters/anthropic/backend/embedding.d.cts +15 -4
  24. package/dist/adapters/anthropic/backend/embedding.d.ts +15 -4
  25. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  26. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  27. package/dist/adapters/azure-openai/backend/chat.d.cts +9 -8
  28. package/dist/adapters/azure-openai/backend/chat.d.ts +9 -8
  29. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  30. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  31. package/dist/adapters/azure-openai/backend/client.d.cts +1 -1
  32. package/dist/adapters/azure-openai/backend/client.d.ts +1 -1
  33. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  34. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  35. package/dist/adapters/azure-openai/backend/embedding.d.cts +15 -4
  36. package/dist/adapters/azure-openai/backend/embedding.d.ts +15 -4
  37. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  38. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  39. package/dist/adapters/dummy/backend/chat.d.cts +12 -7
  40. package/dist/adapters/dummy/backend/chat.d.ts +12 -7
  41. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  42. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  43. package/dist/adapters/dummy/backend/embedding.d.cts +15 -3
  44. package/dist/adapters/dummy/backend/embedding.d.ts +15 -3
  45. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  46. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  47. package/dist/adapters/google-vertex/backend/chat.d.cts +9 -8
  48. package/dist/adapters/google-vertex/backend/chat.d.ts +9 -8
  49. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  50. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  51. package/dist/adapters/google-vertex/backend/client.d.cts +1 -1
  52. package/dist/adapters/google-vertex/backend/client.d.ts +1 -1
  53. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  54. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  55. package/dist/adapters/google-vertex/backend/embedding.d.cts +15 -4
  56. package/dist/adapters/google-vertex/backend/embedding.d.ts +15 -4
  57. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  58. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  59. package/dist/adapters/groq/backend/chat.d.cts +9 -8
  60. package/dist/adapters/groq/backend/chat.d.ts +9 -8
  61. package/dist/adapters/groq/backend/chat.js.map +1 -1
  62. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  63. package/dist/adapters/groq/backend/client.d.cts +1 -1
  64. package/dist/adapters/groq/backend/client.d.ts +1 -1
  65. package/dist/adapters/groq/backend/client.js.map +1 -1
  66. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  67. package/dist/adapters/groq/backend/embedding.d.cts +15 -4
  68. package/dist/adapters/groq/backend/embedding.d.ts +15 -4
  69. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  70. package/dist/adapters/langchain/backend/chat.cjs +5 -3
  71. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/langchain/backend/chat.d.cts +12 -7
  73. package/dist/adapters/langchain/backend/chat.d.ts +12 -7
  74. package/dist/adapters/langchain/backend/chat.js +5 -3
  75. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  76. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  77. package/dist/adapters/langchain/backend/embedding.d.cts +15 -3
  78. package/dist/adapters/langchain/backend/embedding.d.ts +15 -3
  79. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  80. package/dist/adapters/langchain/tools.cjs.map +1 -1
  81. package/dist/adapters/langchain/tools.d.cts +1 -1
  82. package/dist/adapters/langchain/tools.d.ts +1 -1
  83. package/dist/adapters/langchain/tools.js.map +1 -1
  84. package/dist/adapters/ollama/backend/chat.cjs +4 -0
  85. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  86. package/dist/adapters/ollama/backend/chat.d.cts +10 -8
  87. package/dist/adapters/ollama/backend/chat.d.ts +10 -8
  88. package/dist/adapters/ollama/backend/chat.js +4 -0
  89. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  90. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  91. package/dist/adapters/ollama/backend/client.d.cts +1 -1
  92. package/dist/adapters/ollama/backend/client.d.ts +1 -1
  93. package/dist/adapters/ollama/backend/client.js.map +1 -1
  94. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  95. package/dist/adapters/ollama/backend/embedding.d.cts +15 -4
  96. package/dist/adapters/ollama/backend/embedding.d.ts +15 -4
  97. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  98. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  99. package/dist/adapters/openai/backend/chat.d.cts +7 -6
  100. package/dist/adapters/openai/backend/chat.d.ts +7 -6
  101. package/dist/adapters/openai/backend/chat.js.map +1 -1
  102. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  103. package/dist/adapters/openai/backend/client.d.cts +1 -1
  104. package/dist/adapters/openai/backend/client.d.ts +1 -1
  105. package/dist/adapters/openai/backend/client.js.map +1 -1
  106. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  107. package/dist/adapters/openai/backend/embedding.d.cts +15 -4
  108. package/dist/adapters/openai/backend/embedding.d.ts +15 -4
  109. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  110. package/dist/adapters/vercel/backend/chat.cjs +41 -7
  111. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  112. package/dist/adapters/vercel/backend/chat.d.cts +12 -7
  113. package/dist/adapters/vercel/backend/chat.d.ts +12 -7
  114. package/dist/adapters/vercel/backend/chat.js +44 -10
  115. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  116. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  117. package/dist/adapters/vercel/backend/embedding.d.cts +14 -3
  118. package/dist/adapters/vercel/backend/embedding.d.ts +14 -3
  119. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  120. package/dist/adapters/watsonx/backend/chat.cjs +25 -4
  121. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  122. package/dist/adapters/watsonx/backend/chat.d.cts +13 -7
  123. package/dist/adapters/watsonx/backend/chat.d.ts +13 -7
  124. package/dist/adapters/watsonx/backend/chat.js +25 -4
  125. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  126. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  127. package/dist/adapters/watsonx/backend/client.d.cts +1 -1
  128. package/dist/adapters/watsonx/backend/client.d.ts +1 -1
  129. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  130. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  131. package/dist/adapters/watsonx/backend/embedding.d.cts +15 -3
  132. package/dist/adapters/watsonx/backend/embedding.d.ts +15 -3
  133. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  134. package/dist/{agent-COg8SPbf.d.cts → agent-Ca5UE2P1.d.cts} +3 -3
  135. package/dist/{agent-Dv5YSk8H.d.ts → agent-CgsoqVL5.d.ts} +3 -3
  136. package/dist/agents/base.cjs.map +1 -1
  137. package/dist/agents/base.d.cts +2 -2
  138. package/dist/agents/base.d.ts +2 -2
  139. package/dist/agents/base.js.map +1 -1
  140. package/dist/agents/experimental/remote/agent.cjs.map +1 -1
  141. package/dist/agents/experimental/remote/agent.d.cts +2 -2
  142. package/dist/agents/experimental/remote/agent.d.ts +2 -2
  143. package/dist/agents/experimental/remote/agent.js.map +1 -1
  144. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  145. package/dist/agents/experimental/replan/agent.d.cts +6 -6
  146. package/dist/agents/experimental/replan/agent.d.ts +6 -6
  147. package/dist/agents/experimental/replan/agent.js.map +1 -1
  148. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  149. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  150. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  151. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  152. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  153. package/dist/agents/experimental/streamlit/agent.d.cts +6 -6
  154. package/dist/agents/experimental/streamlit/agent.d.ts +6 -6
  155. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  156. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  157. package/dist/agents/experimental/streamlit/prompts.d.cts +1 -1
  158. package/dist/agents/experimental/streamlit/prompts.d.ts +1 -1
  159. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  160. package/dist/agents/react/agent.cjs.map +1 -1
  161. package/dist/agents/react/agent.d.cts +6 -6
  162. package/dist/agents/react/agent.d.ts +6 -6
  163. package/dist/agents/react/agent.js.map +1 -1
  164. package/dist/agents/react/prompts.cjs.map +1 -1
  165. package/dist/agents/react/prompts.d.cts +2 -2
  166. package/dist/agents/react/prompts.d.ts +2 -2
  167. package/dist/agents/react/prompts.js.map +1 -1
  168. package/dist/agents/react/runners/base.cjs.map +1 -1
  169. package/dist/agents/react/runners/base.d.cts +6 -6
  170. package/dist/agents/react/runners/base.d.ts +6 -6
  171. package/dist/agents/react/runners/base.js.map +1 -1
  172. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  173. package/dist/agents/react/runners/deep-think/prompts.d.cts +2 -2
  174. package/dist/agents/react/runners/deep-think/prompts.d.ts +2 -2
  175. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  176. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  177. package/dist/agents/react/runners/deep-think/runner.d.cts +7 -7
  178. package/dist/agents/react/runners/deep-think/runner.d.ts +7 -7
  179. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  180. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  181. package/dist/agents/react/runners/default/runner.d.cts +9 -9
  182. package/dist/agents/react/runners/default/runner.d.ts +9 -9
  183. package/dist/agents/react/runners/default/runner.js.map +1 -1
  184. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  185. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  186. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  187. package/dist/agents/react/runners/granite/prompts.d.cts +2 -2
  188. package/dist/agents/react/runners/granite/prompts.d.ts +2 -2
  189. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  190. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  191. package/dist/agents/react/runners/granite/runner.d.cts +7 -7
  192. package/dist/agents/react/runners/granite/runner.d.ts +7 -7
  193. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  194. package/dist/agents/react/types.d.cts +5 -5
  195. package/dist/agents/react/types.d.ts +5 -5
  196. package/dist/agents/toolCalling/agent.cjs +33 -12
  197. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  198. package/dist/agents/toolCalling/agent.d.cts +7 -6
  199. package/dist/agents/toolCalling/agent.d.ts +7 -6
  200. package/dist/agents/toolCalling/agent.js +35 -14
  201. package/dist/agents/toolCalling/agent.js.map +1 -1
  202. package/dist/agents/toolCalling/prompts.cjs +3 -2
  203. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  204. package/dist/agents/toolCalling/prompts.d.cts +1 -1
  205. package/dist/agents/toolCalling/prompts.d.ts +1 -1
  206. package/dist/agents/toolCalling/prompts.js +3 -2
  207. package/dist/agents/toolCalling/prompts.js.map +1 -1
  208. package/dist/agents/toolCalling/types.d.cts +2 -2
  209. package/dist/agents/toolCalling/types.d.ts +2 -2
  210. package/dist/agents/types.d.cts +2 -2
  211. package/dist/agents/types.d.ts +2 -2
  212. package/dist/backend/backend.cjs.map +1 -1
  213. package/dist/backend/backend.d.cts +6 -5
  214. package/dist/backend/backend.d.ts +6 -5
  215. package/dist/backend/backend.js.map +1 -1
  216. package/dist/backend/chat.cjs +61 -3
  217. package/dist/backend/chat.cjs.map +1 -1
  218. package/dist/backend/chat.d.cts +17 -138
  219. package/dist/backend/chat.d.ts +17 -138
  220. package/dist/backend/chat.js +64 -6
  221. package/dist/backend/chat.js.map +1 -1
  222. package/dist/backend/client.cjs.map +1 -1
  223. package/dist/backend/client.d.cts +1 -1
  224. package/dist/backend/client.d.ts +1 -1
  225. package/dist/backend/client.js.map +1 -1
  226. package/dist/backend/constants.cjs +5 -0
  227. package/dist/backend/constants.cjs.map +1 -1
  228. package/dist/backend/constants.d.cts +6 -1
  229. package/dist/backend/constants.d.ts +6 -1
  230. package/dist/backend/constants.js +5 -0
  231. package/dist/backend/constants.js.map +1 -1
  232. package/dist/backend/core.d.cts +5 -4
  233. package/dist/backend/core.d.ts +5 -4
  234. package/dist/backend/embedding.cjs.map +1 -1
  235. package/dist/backend/embedding.d.cts +14 -2
  236. package/dist/backend/embedding.d.ts +14 -2
  237. package/dist/backend/embedding.js.map +1 -1
  238. package/dist/backend/errors.cjs.map +1 -1
  239. package/dist/backend/errors.d.cts +1 -1
  240. package/dist/backend/errors.d.ts +1 -1
  241. package/dist/backend/errors.js.map +1 -1
  242. package/dist/backend/message.cjs.map +1 -1
  243. package/dist/backend/message.d.cts +1 -1
  244. package/dist/backend/message.d.ts +1 -1
  245. package/dist/backend/message.js.map +1 -1
  246. package/dist/backend/utils.cjs +35 -0
  247. package/dist/backend/utils.cjs.map +1 -1
  248. package/dist/backend/utils.d.cts +20 -28
  249. package/dist/backend/utils.d.ts +20 -28
  250. package/dist/backend/utils.js +35 -2
  251. package/dist/backend/utils.js.map +1 -1
  252. package/dist/{base-DHhpWHQm.d.ts → base-BOCDDBvG.d.ts} +2 -2
  253. package/dist/{base-Csr9guq2.d.cts → base-szR2Izbt.d.cts} +2 -2
  254. package/dist/cache/base.cjs.map +1 -1
  255. package/dist/cache/base.d.cts +1 -1
  256. package/dist/cache/base.d.ts +1 -1
  257. package/dist/cache/base.js.map +1 -1
  258. package/dist/cache/decoratorCache.cjs.map +1 -1
  259. package/dist/cache/decoratorCache.d.cts +1 -1
  260. package/dist/cache/decoratorCache.d.ts +1 -1
  261. package/dist/cache/decoratorCache.js.map +1 -1
  262. package/dist/cache/fileCache.cjs.map +1 -1
  263. package/dist/cache/fileCache.d.cts +1 -1
  264. package/dist/cache/fileCache.d.ts +1 -1
  265. package/dist/cache/fileCache.js.map +1 -1
  266. package/dist/cache/nullCache.cjs.map +1 -1
  267. package/dist/cache/nullCache.d.cts +1 -1
  268. package/dist/cache/nullCache.d.ts +1 -1
  269. package/dist/cache/nullCache.js.map +1 -1
  270. package/dist/cache/slidingCache.cjs.map +1 -1
  271. package/dist/cache/slidingCache.d.cts +1 -1
  272. package/dist/cache/slidingCache.d.ts +1 -1
  273. package/dist/cache/slidingCache.js.map +1 -1
  274. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  275. package/dist/cache/unconstrainedCache.d.cts +1 -1
  276. package/dist/cache/unconstrainedCache.d.ts +1 -1
  277. package/dist/cache/unconstrainedCache.js.map +1 -1
  278. package/dist/chat-BdN8hGWn.d.ts +174 -0
  279. package/dist/chat-DvMzAHj6.d.cts +174 -0
  280. package/dist/context.cjs.map +1 -1
  281. package/dist/context.d.cts +2 -2
  282. package/dist/context.d.ts +2 -2
  283. package/dist/context.js.map +1 -1
  284. package/dist/emitter/emitter.cjs.map +1 -1
  285. package/dist/emitter/emitter.d.cts +1 -1
  286. package/dist/emitter/emitter.d.ts +1 -1
  287. package/dist/emitter/emitter.js.map +1 -1
  288. package/dist/emitter/errors.cjs.map +1 -1
  289. package/dist/emitter/errors.d.cts +1 -1
  290. package/dist/emitter/errors.d.ts +1 -1
  291. package/dist/emitter/errors.js.map +1 -1
  292. package/dist/emitter/types.d.cts +1 -1
  293. package/dist/emitter/types.d.ts +1 -1
  294. package/dist/emitter/utils.cjs.map +1 -1
  295. package/dist/emitter/utils.d.cts +1 -1
  296. package/dist/emitter/utils.d.ts +1 -1
  297. package/dist/emitter/utils.js.map +1 -1
  298. package/dist/{emitter-l0W9gC1A.d.ts → emitter-C3dO-s2P.d.ts} +3 -3
  299. package/dist/{emitter-BWtGHYn0.d.cts → emitter-D5Mu0EEH.d.cts} +3 -3
  300. package/dist/errors.cjs.map +1 -1
  301. package/dist/errors.d.cts +1 -1
  302. package/dist/errors.d.ts +1 -1
  303. package/dist/errors.js.map +1 -1
  304. package/dist/index.d.cts +4 -6
  305. package/dist/index.d.ts +4 -6
  306. package/dist/internals/env.cjs.map +1 -1
  307. package/dist/internals/env.d.cts +1 -1
  308. package/dist/internals/env.d.ts +1 -1
  309. package/dist/internals/env.js.map +1 -1
  310. package/dist/internals/fetcher.cjs.map +1 -1
  311. package/dist/internals/fetcher.d.cts +2 -2
  312. package/dist/internals/fetcher.d.ts +2 -2
  313. package/dist/internals/fetcher.js.map +1 -1
  314. package/dist/internals/helpers/array.cjs.map +1 -1
  315. package/dist/internals/helpers/array.d.cts +1 -1
  316. package/dist/internals/helpers/array.d.ts +1 -1
  317. package/dist/internals/helpers/array.js.map +1 -1
  318. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  319. package/dist/internals/helpers/cancellation.d.cts +1 -1
  320. package/dist/internals/helpers/cancellation.d.ts +1 -1
  321. package/dist/internals/helpers/cancellation.js.map +1 -1
  322. package/dist/internals/helpers/counter.cjs.map +1 -1
  323. package/dist/internals/helpers/counter.d.cts +1 -1
  324. package/dist/internals/helpers/counter.d.ts +1 -1
  325. package/dist/internals/helpers/counter.js.map +1 -1
  326. package/dist/internals/helpers/general.cjs.map +1 -1
  327. package/dist/internals/helpers/general.d.cts +1 -1
  328. package/dist/internals/helpers/general.d.ts +1 -1
  329. package/dist/internals/helpers/general.js.map +1 -1
  330. package/dist/internals/helpers/guards.cjs.map +1 -1
  331. package/dist/internals/helpers/guards.d.cts +1 -1
  332. package/dist/internals/helpers/guards.d.ts +1 -1
  333. package/dist/internals/helpers/guards.js.map +1 -1
  334. package/dist/internals/helpers/hash.cjs.map +1 -1
  335. package/dist/internals/helpers/hash.d.cts +1 -1
  336. package/dist/internals/helpers/hash.d.ts +1 -1
  337. package/dist/internals/helpers/hash.js.map +1 -1
  338. package/dist/internals/helpers/map.cjs.map +1 -1
  339. package/dist/internals/helpers/map.d.cts +1 -1
  340. package/dist/internals/helpers/map.d.ts +1 -1
  341. package/dist/internals/helpers/map.js.map +1 -1
  342. package/dist/internals/helpers/math.cjs.map +1 -1
  343. package/dist/internals/helpers/math.d.cts +1 -1
  344. package/dist/internals/helpers/math.d.ts +1 -1
  345. package/dist/internals/helpers/math.js.map +1 -1
  346. package/dist/internals/helpers/number.cjs.map +1 -1
  347. package/dist/internals/helpers/number.d.cts +1 -1
  348. package/dist/internals/helpers/number.d.ts +1 -1
  349. package/dist/internals/helpers/number.js.map +1 -1
  350. package/dist/internals/helpers/object.cjs.map +1 -1
  351. package/dist/internals/helpers/object.d.cts +1 -1
  352. package/dist/internals/helpers/object.d.ts +1 -1
  353. package/dist/internals/helpers/object.js.map +1 -1
  354. package/dist/internals/helpers/paginate.cjs.map +1 -1
  355. package/dist/internals/helpers/paginate.d.cts +1 -1
  356. package/dist/internals/helpers/paginate.d.ts +1 -1
  357. package/dist/internals/helpers/paginate.js.map +1 -1
  358. package/dist/internals/helpers/promise.cjs.map +1 -1
  359. package/dist/internals/helpers/promise.d.cts +1 -1
  360. package/dist/internals/helpers/promise.d.ts +1 -1
  361. package/dist/internals/helpers/promise.js.map +1 -1
  362. package/dist/internals/helpers/prototype.cjs.map +1 -1
  363. package/dist/internals/helpers/prototype.d.cts +1 -1
  364. package/dist/internals/helpers/prototype.d.ts +1 -1
  365. package/dist/internals/helpers/prototype.js.map +1 -1
  366. package/dist/internals/helpers/retry.cjs.map +1 -1
  367. package/dist/internals/helpers/retry.d.cts +1 -1
  368. package/dist/internals/helpers/retry.d.ts +1 -1
  369. package/dist/internals/helpers/retry.js.map +1 -1
  370. package/dist/internals/helpers/retryable.cjs.map +1 -1
  371. package/dist/internals/helpers/retryable.d.cts +1 -1
  372. package/dist/internals/helpers/retryable.d.ts +1 -1
  373. package/dist/internals/helpers/retryable.js.map +1 -1
  374. package/dist/internals/helpers/schema.cjs.map +1 -1
  375. package/dist/internals/helpers/schema.d.cts +1 -1
  376. package/dist/internals/helpers/schema.d.ts +1 -1
  377. package/dist/internals/helpers/schema.js.map +1 -1
  378. package/dist/internals/helpers/stream.cjs.map +1 -1
  379. package/dist/internals/helpers/stream.d.cts +1 -1
  380. package/dist/internals/helpers/stream.d.ts +1 -1
  381. package/dist/internals/helpers/stream.js.map +1 -1
  382. package/dist/internals/helpers/string.cjs.map +1 -1
  383. package/dist/internals/helpers/string.d.cts +1 -1
  384. package/dist/internals/helpers/string.d.ts +1 -1
  385. package/dist/internals/helpers/string.js.map +1 -1
  386. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  387. package/dist/internals/helpers/weakRef.d.cts +1 -1
  388. package/dist/internals/helpers/weakRef.d.ts +1 -1
  389. package/dist/internals/helpers/weakRef.js.map +1 -1
  390. package/dist/internals/serializable.cjs.map +1 -1
  391. package/dist/internals/serializable.d.cts +1 -1
  392. package/dist/internals/serializable.d.ts +1 -1
  393. package/dist/internals/serializable.js.map +1 -1
  394. package/dist/internals/types.cjs.map +1 -1
  395. package/dist/internals/types.d.cts +1 -1
  396. package/dist/internals/types.d.ts +1 -1
  397. package/dist/internals/types.js.map +1 -1
  398. package/dist/logger/logger.cjs.map +1 -1
  399. package/dist/logger/logger.js.map +1 -1
  400. package/dist/logger/pretty.cjs.map +1 -1
  401. package/dist/logger/pretty.js.map +1 -1
  402. package/dist/memory/base.cjs.map +1 -1
  403. package/dist/memory/base.js.map +1 -1
  404. package/dist/memory/slidingMemory.cjs.map +1 -1
  405. package/dist/memory/slidingMemory.js.map +1 -1
  406. package/dist/memory/summarizeMemory.cjs.map +1 -1
  407. package/dist/memory/summarizeMemory.d.cts +4 -4
  408. package/dist/memory/summarizeMemory.d.ts +4 -4
  409. package/dist/memory/summarizeMemory.js.map +1 -1
  410. package/dist/memory/tokenMemory.cjs.map +1 -1
  411. package/dist/memory/tokenMemory.js.map +1 -1
  412. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  413. package/dist/memory/unconstrainedMemory.js.map +1 -1
  414. package/dist/parsers/errors.cjs.map +1 -1
  415. package/dist/parsers/errors.d.cts +1 -1
  416. package/dist/parsers/errors.d.ts +1 -1
  417. package/dist/parsers/errors.js.map +1 -1
  418. package/dist/parsers/field.cjs.map +1 -1
  419. package/dist/parsers/field.js.map +1 -1
  420. package/dist/parsers/linePrefix.cjs.map +1 -1
  421. package/dist/parsers/linePrefix.d.cts +2 -2
  422. package/dist/parsers/linePrefix.d.ts +2 -2
  423. package/dist/parsers/linePrefix.js.map +1 -1
  424. package/dist/serializer/error.cjs.map +1 -1
  425. package/dist/serializer/error.d.cts +1 -1
  426. package/dist/serializer/error.d.ts +1 -1
  427. package/dist/serializer/error.js.map +1 -1
  428. package/dist/serializer/serializer.cjs.map +1 -1
  429. package/dist/serializer/serializer.d.cts +1 -1
  430. package/dist/serializer/serializer.d.ts +1 -1
  431. package/dist/serializer/serializer.js.map +1 -1
  432. package/dist/serializer/utils.cjs.map +1 -1
  433. package/dist/serializer/utils.d.cts +1 -1
  434. package/dist/serializer/utils.d.ts +1 -1
  435. package/dist/serializer/utils.js.map +1 -1
  436. package/dist/{serializer-VYDhdryk.d.ts → serializer-BswFRdT8.d.ts} +2 -2
  437. package/dist/{serializer-CJx5ZpUx.d.cts → serializer-Dz4AIM2O.d.cts} +2 -2
  438. package/dist/template.cjs.map +1 -1
  439. package/dist/template.d.cts +1 -1
  440. package/dist/template.d.ts +1 -1
  441. package/dist/template.js.map +1 -1
  442. package/dist/tools/arxiv.cjs.map +1 -1
  443. package/dist/tools/arxiv.d.cts +2 -2
  444. package/dist/tools/arxiv.d.ts +2 -2
  445. package/dist/tools/arxiv.js.map +1 -1
  446. package/dist/tools/base.cjs.map +1 -1
  447. package/dist/tools/base.d.cts +1 -1
  448. package/dist/tools/base.d.ts +1 -1
  449. package/dist/tools/base.js.map +1 -1
  450. package/dist/tools/calculator.cjs.map +1 -1
  451. package/dist/tools/calculator.d.cts +2 -2
  452. package/dist/tools/calculator.d.ts +2 -2
  453. package/dist/tools/calculator.js.map +1 -1
  454. package/dist/tools/custom.cjs.map +1 -1
  455. package/dist/tools/custom.d.cts +5 -5
  456. package/dist/tools/custom.d.ts +5 -5
  457. package/dist/tools/custom.js.map +1 -1
  458. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  459. package/dist/tools/database/elasticsearch.d.cts +2 -2
  460. package/dist/tools/database/elasticsearch.d.ts +2 -2
  461. package/dist/tools/database/elasticsearch.js.map +1 -1
  462. package/dist/tools/database/metadata.cjs.map +1 -1
  463. package/dist/tools/database/metadata.d.cts +1 -1
  464. package/dist/tools/database/metadata.d.ts +1 -1
  465. package/dist/tools/database/metadata.js.map +1 -1
  466. package/dist/tools/database/milvus.cjs.map +1 -1
  467. package/dist/tools/database/milvus.d.cts +2 -2
  468. package/dist/tools/database/milvus.d.ts +2 -2
  469. package/dist/tools/database/milvus.js.map +1 -1
  470. package/dist/tools/database/sql.cjs.map +1 -1
  471. package/dist/tools/database/sql.d.cts +2 -2
  472. package/dist/tools/database/sql.d.ts +2 -2
  473. package/dist/tools/database/sql.js.map +1 -1
  474. package/dist/tools/llm.cjs.map +1 -1
  475. package/dist/tools/llm.d.cts +5 -5
  476. package/dist/tools/llm.d.ts +5 -5
  477. package/dist/tools/llm.js.map +1 -1
  478. package/dist/tools/mcp.cjs.map +1 -1
  479. package/dist/tools/mcp.d.cts +2 -2
  480. package/dist/tools/mcp.d.ts +2 -2
  481. package/dist/tools/mcp.js.map +1 -1
  482. package/dist/tools/openapi.cjs.map +1 -1
  483. package/dist/tools/openapi.d.cts +1 -1
  484. package/dist/tools/openapi.d.ts +1 -1
  485. package/dist/tools/openapi.js.map +1 -1
  486. package/dist/tools/python/output.cjs.map +1 -1
  487. package/dist/tools/python/output.d.cts +2 -2
  488. package/dist/tools/python/output.d.ts +2 -2
  489. package/dist/tools/python/output.js.map +1 -1
  490. package/dist/tools/python/python.cjs +3 -3
  491. package/dist/tools/python/python.cjs.map +1 -1
  492. package/dist/tools/python/python.d.cts +4 -4
  493. package/dist/tools/python/python.d.ts +4 -4
  494. package/dist/tools/python/python.js +3 -3
  495. package/dist/tools/python/python.js.map +1 -1
  496. package/dist/tools/python/storage.cjs.map +1 -1
  497. package/dist/tools/python/storage.d.cts +1 -1
  498. package/dist/tools/python/storage.d.ts +1 -1
  499. package/dist/tools/python/storage.js.map +1 -1
  500. package/dist/tools/search/base.cjs.map +1 -1
  501. package/dist/tools/search/base.d.cts +2 -2
  502. package/dist/tools/search/base.d.ts +2 -2
  503. package/dist/tools/search/base.js.map +1 -1
  504. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  505. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
  506. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
  507. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  508. package/dist/tools/search/googleSearch.cjs.map +1 -1
  509. package/dist/tools/search/googleSearch.d.cts +1 -1
  510. package/dist/tools/search/googleSearch.d.ts +1 -1
  511. package/dist/tools/search/googleSearch.js.map +1 -1
  512. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  513. package/dist/tools/search/searXNGSearch.d.cts +2 -2
  514. package/dist/tools/search/searXNGSearch.d.ts +2 -2
  515. package/dist/tools/search/searXNGSearch.js.map +1 -1
  516. package/dist/tools/search/wikipedia.cjs.map +1 -1
  517. package/dist/tools/search/wikipedia.d.cts +1 -1
  518. package/dist/tools/search/wikipedia.d.ts +1 -1
  519. package/dist/tools/search/wikipedia.js.map +1 -1
  520. package/dist/tools/similarity.cjs.map +1 -1
  521. package/dist/tools/similarity.d.cts +2 -2
  522. package/dist/tools/similarity.d.ts +2 -2
  523. package/dist/tools/similarity.js.map +1 -1
  524. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  525. package/dist/tools/weather/openMeteo.d.cts +2 -2
  526. package/dist/tools/weather/openMeteo.d.ts +2 -2
  527. package/dist/tools/weather/openMeteo.js.map +1 -1
  528. package/dist/tools/web/webCrawler.cjs.map +1 -1
  529. package/dist/tools/web/webCrawler.d.cts +1 -1
  530. package/dist/tools/web/webCrawler.d.ts +1 -1
  531. package/dist/tools/web/webCrawler.js.map +1 -1
  532. package/dist/version.cjs +1 -1
  533. package/dist/version.cjs.map +1 -1
  534. package/dist/version.d.cts +1 -1
  535. package/dist/version.d.ts +1 -1
  536. package/dist/version.js +1 -1
  537. package/dist/version.js.map +1 -1
  538. package/dist/workflows/agent.cjs.map +1 -1
  539. package/dist/workflows/agent.d.cts +6 -6
  540. package/dist/workflows/agent.d.ts +6 -6
  541. package/dist/workflows/agent.js.map +1 -1
  542. package/dist/workflows/workflow.cjs.map +1 -1
  543. package/dist/workflows/workflow.d.cts +1 -1
  544. package/dist/workflows/workflow.d.ts +1 -1
  545. package/dist/workflows/workflow.js.map +1 -1
  546. package/package.json +18 -18
@@ -0,0 +1,174 @@
1
+ import { Message, AssistantMessage, MessageContentPart } from './backend/message.js';
2
+ import * as ai from 'ai';
3
+ import { Run, GetRunContext } from './context.js';
4
+ import { Serializable } from './internals/serializable.js';
5
+ import { C as Callback, E as Emitter } from './emitter-C3dO-s2P.js';
6
+ import { FrameworkError } from './errors.js';
7
+ import { Task } from 'promise-based-task';
8
+ import { BaseCache } from './cache/base.js';
9
+ import { ClassConstructor } from './internals/types.js';
10
+ import { ProviderName, ProviderDef } from './backend/constants.js';
11
+ import { AnyTool } from './tools/base.js';
12
+ import { ZodSchema, z, ZodType } from 'zod';
13
+ import { SchemaObject } from 'ajv';
14
+ import { PromptTemplate } from './template.js';
15
+ import { Logger } from './logger/logger.js';
16
+
17
+ /**
18
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
19
+ *
20
+ * Licensed under the Apache License, Version 2.0 (the "License");
21
+ * you may not use this file except in compliance with the License.
22
+ * You may obtain a copy of the License at
23
+ *
24
+ * http://www.apache.org/licenses/LICENSE-2.0
25
+ *
26
+ * Unless required by applicable law or agreed to in writing, software
27
+ * distributed under the License is distributed on an "AS IS" BASIS,
28
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
+ * See the License for the specific language governing permissions and
30
+ * limitations under the License.
31
+ */
32
+
33
+ type FullModelName = `${ProviderName}:${string}`;
34
+ declare function parseModel(name: string): {
35
+ providerId: "openai" | "azure" | "watsonx" | "ollama" | "google-vertex" | "amazon-bedrock" | "groq" | "dummy" | "anthropic";
36
+ modelId: string;
37
+ providerDef: ProviderDef;
38
+ };
39
+ declare function loadModel<T>(name: ProviderName | FullModelName, type: "embedding" | "chat"): Promise<ClassConstructor<T>>;
40
+ declare function generateToolUnionSchema(tools: AnyTool[]): Promise<ZodSchema>;
41
+ declare function filterToolsByToolChoice(tools: AnyTool[], value?: ChatModelToolChoice): AnyTool[];
42
+
43
+ interface ChatModelParameters {
44
+ maxTokens?: number;
45
+ topP?: number;
46
+ frequencyPenalty?: number;
47
+ temperature?: number;
48
+ topK?: number;
49
+ n?: number;
50
+ presencePenalty?: number;
51
+ seed?: number;
52
+ stopSequences?: string[];
53
+ }
54
+ interface ResponseObjectJson {
55
+ type: "object-json";
56
+ schema?: SchemaObject;
57
+ name?: string;
58
+ description?: string;
59
+ }
60
+ interface ChatModelObjectInput<T> extends ChatModelParameters {
61
+ schema: z.ZodSchema<T> | ResponseObjectJson;
62
+ systemPromptTemplate?: PromptTemplate<ZodType<{
63
+ schema: string;
64
+ }>>;
65
+ messages: Message[];
66
+ abortSignal?: AbortSignal;
67
+ maxRetries?: number;
68
+ }
69
+ interface ChatModelObjectOutput<T> {
70
+ object: T;
71
+ output: ChatModelOutput;
72
+ }
73
+ type ChatModelToolChoice = "auto" | "none" | "required" | AnyTool;
74
+ interface ChatModelInput extends ChatModelParameters {
75
+ tools?: AnyTool[];
76
+ abortSignal?: AbortSignal;
77
+ stopSequences?: string[];
78
+ responseFormat?: ZodSchema | ResponseObjectJson;
79
+ toolChoice?: ChatModelToolChoice;
80
+ messages: Message[];
81
+ }
82
+ type ChatModelFinishReason = "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other" | "unknown";
83
+ interface ChatModelUsage {
84
+ promptTokens: number;
85
+ completionTokens: number;
86
+ totalTokens: number;
87
+ }
88
+ interface ChatModelEvents {
89
+ newToken?: Callback<{
90
+ value: ChatModelOutput;
91
+ callbacks: {
92
+ abort: () => void;
93
+ };
94
+ }>;
95
+ success?: Callback<{
96
+ value: ChatModelOutput;
97
+ }>;
98
+ start?: Callback<{
99
+ input: ChatModelInput;
100
+ }>;
101
+ error?: Callback<{
102
+ input: ChatModelInput;
103
+ error: FrameworkError;
104
+ }>;
105
+ finish?: Callback<null>;
106
+ }
107
+ type ChatModelEmitter<A = Record<never, never>> = Emitter<ChatModelEvents & Omit<A, keyof ChatModelEvents>>;
108
+ type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;
109
+ type ConfigFn<T> = (value: T) => T;
110
+ interface ChatConfig {
111
+ cache?: ChatModelCache | ConfigFn<ChatModelCache>;
112
+ parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;
113
+ }
114
+ type ChatModelToolChoiceSupport = "required" | "none" | "single" | "auto";
115
+ declare abstract class ChatModel extends Serializable {
116
+ abstract readonly emitter: Emitter<ChatModelEvents>;
117
+ cache: ChatModelCache;
118
+ parameters: ChatModelParameters;
119
+ protected readonly logger: Logger;
120
+ readonly toolChoiceSupport: ChatModelToolChoiceSupport[];
121
+ toolCallFallbackViaResponseFormat: boolean;
122
+ readonly modelSupportsToolCalling: boolean;
123
+ abstract get modelId(): string;
124
+ abstract get providerId(): string;
125
+ create(input: ChatModelInput & {
126
+ stream?: boolean;
127
+ }): Run<ChatModelOutput, this, readonly [ChatModelInput & {
128
+ stream?: boolean;
129
+ }]>;
130
+ createStructure<T>(input: ChatModelObjectInput<T>): Run<ChatModelObjectOutput<T>, this, readonly [ChatModelObjectInput<T>]>;
131
+ config({ cache, parameters }: ChatConfig): void;
132
+ static fromName(name: FullModelName | ProviderName, options?: ChatModelParameters): Promise<ChatModel>;
133
+ protected abstract _create(input: ChatModelInput, run: GetRunContext<typeof this>): Promise<ChatModelOutput>;
134
+ protected abstract _createStream(input: ChatModelInput, run: GetRunContext<typeof this>): AsyncGenerator<ChatModelOutput, void>;
135
+ protected _createStructure<T>(input: ChatModelObjectInput<T>, run: GetRunContext<typeof this>): Promise<ChatModelObjectOutput<T>>;
136
+ createSnapshot(): {
137
+ cache: ChatModelCache;
138
+ emitter: Emitter<ChatModelEvents>;
139
+ parameters: ChatModelParameters;
140
+ logger: Logger;
141
+ toolChoiceSupport: ChatModelToolChoiceSupport[];
142
+ toolCallFallbackViaResponseFormat: boolean;
143
+ modelSupportsToolCalling: boolean;
144
+ };
145
+ destroy(): void;
146
+ protected createCacheAccessor({ abortSignal: _, messages, tools, ...input }: ChatModelInput): Promise<{
147
+ key: string;
148
+ value: ChatModelOutput[] | undefined;
149
+ resolve: <T2 extends ChatModelOutput>(value: T2[]) => void;
150
+ reject: (error: Error) => Promise<void>;
151
+ }>;
152
+ protected shouldForceToolCallViaResponseFormat({ tools, toolChoice, responseFormat, }: ChatModelInput): boolean;
153
+ protected isToolChoiceSupported(choice?: ChatModelToolChoice): boolean;
154
+ }
155
+ declare class ChatModelOutput extends Serializable {
156
+ readonly messages: Message[];
157
+ usage?: ChatModelUsage | undefined;
158
+ finishReason?: ChatModelFinishReason | undefined;
159
+ constructor(messages: Message[], usage?: ChatModelUsage | undefined, finishReason?: ChatModelFinishReason | undefined);
160
+ static fromChunks(chunks: ChatModelOutput[]): ChatModelOutput;
161
+ merge(other: ChatModelOutput): void;
162
+ getToolCalls(): ai.ToolCallPart[];
163
+ getTextMessages(): AssistantMessage[];
164
+ getTextContent(): string;
165
+ toString(): string;
166
+ createSnapshot(): {
167
+ messages: Message<MessageContentPart, string>[];
168
+ usage: ChatModelUsage | undefined;
169
+ finishReason: ChatModelFinishReason | undefined;
170
+ };
171
+ loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
172
+ }
173
+
174
+ export { type ChatModelParameters as C, type FullModelName as F, type ChatModelObjectInput as a, type ChatModelObjectOutput as b, type ChatModelToolChoice as c, type ChatModelInput as d, type ChatModelFinishReason as e, type ChatModelUsage as f, type ChatModelEvents as g, type ChatModelEmitter as h, type ChatModelCache as i, type ConfigFn as j, type ChatConfig as k, type ChatModelToolChoiceSupport as l, ChatModel as m, ChatModelOutput as n, loadModel as o, parseModel as p, generateToolUnionSchema as q, filterToolsByToolChoice as r };
@@ -0,0 +1,174 @@
1
+ import { Message, AssistantMessage, MessageContentPart } from './backend/message.cjs';
2
+ import * as ai from 'ai';
3
+ import { Run, GetRunContext } from './context.cjs';
4
+ import { Serializable } from './internals/serializable.cjs';
5
+ import { C as Callback, E as Emitter } from './emitter-D5Mu0EEH.cjs';
6
+ import { FrameworkError } from './errors.cjs';
7
+ import { Task } from 'promise-based-task';
8
+ import { BaseCache } from './cache/base.cjs';
9
+ import { ClassConstructor } from './internals/types.cjs';
10
+ import { ProviderName, ProviderDef } from './backend/constants.cjs';
11
+ import { AnyTool } from './tools/base.cjs';
12
+ import { ZodSchema, z, ZodType } from 'zod';
13
+ import { SchemaObject } from 'ajv';
14
+ import { PromptTemplate } from './template.cjs';
15
+ import { Logger } from './logger/logger.cjs';
16
+
17
+ /**
18
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
19
+ *
20
+ * Licensed under the Apache License, Version 2.0 (the "License");
21
+ * you may not use this file except in compliance with the License.
22
+ * You may obtain a copy of the License at
23
+ *
24
+ * http://www.apache.org/licenses/LICENSE-2.0
25
+ *
26
+ * Unless required by applicable law or agreed to in writing, software
27
+ * distributed under the License is distributed on an "AS IS" BASIS,
28
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
+ * See the License for the specific language governing permissions and
30
+ * limitations under the License.
31
+ */
32
+
33
+ type FullModelName = `${ProviderName}:${string}`;
34
+ declare function parseModel(name: string): {
35
+ providerId: "openai" | "azure" | "watsonx" | "ollama" | "google-vertex" | "amazon-bedrock" | "groq" | "dummy" | "anthropic";
36
+ modelId: string;
37
+ providerDef: ProviderDef;
38
+ };
39
+ declare function loadModel<T>(name: ProviderName | FullModelName, type: "embedding" | "chat"): Promise<ClassConstructor<T>>;
40
+ declare function generateToolUnionSchema(tools: AnyTool[]): Promise<ZodSchema>;
41
+ declare function filterToolsByToolChoice(tools: AnyTool[], value?: ChatModelToolChoice): AnyTool[];
42
+
43
+ interface ChatModelParameters {
44
+ maxTokens?: number;
45
+ topP?: number;
46
+ frequencyPenalty?: number;
47
+ temperature?: number;
48
+ topK?: number;
49
+ n?: number;
50
+ presencePenalty?: number;
51
+ seed?: number;
52
+ stopSequences?: string[];
53
+ }
54
+ interface ResponseObjectJson {
55
+ type: "object-json";
56
+ schema?: SchemaObject;
57
+ name?: string;
58
+ description?: string;
59
+ }
60
+ interface ChatModelObjectInput<T> extends ChatModelParameters {
61
+ schema: z.ZodSchema<T> | ResponseObjectJson;
62
+ systemPromptTemplate?: PromptTemplate<ZodType<{
63
+ schema: string;
64
+ }>>;
65
+ messages: Message[];
66
+ abortSignal?: AbortSignal;
67
+ maxRetries?: number;
68
+ }
69
+ interface ChatModelObjectOutput<T> {
70
+ object: T;
71
+ output: ChatModelOutput;
72
+ }
73
+ type ChatModelToolChoice = "auto" | "none" | "required" | AnyTool;
74
+ interface ChatModelInput extends ChatModelParameters {
75
+ tools?: AnyTool[];
76
+ abortSignal?: AbortSignal;
77
+ stopSequences?: string[];
78
+ responseFormat?: ZodSchema | ResponseObjectJson;
79
+ toolChoice?: ChatModelToolChoice;
80
+ messages: Message[];
81
+ }
82
+ type ChatModelFinishReason = "stop" | "length" | "content-filter" | "tool-calls" | "error" | "other" | "unknown";
83
+ interface ChatModelUsage {
84
+ promptTokens: number;
85
+ completionTokens: number;
86
+ totalTokens: number;
87
+ }
88
+ interface ChatModelEvents {
89
+ newToken?: Callback<{
90
+ value: ChatModelOutput;
91
+ callbacks: {
92
+ abort: () => void;
93
+ };
94
+ }>;
95
+ success?: Callback<{
96
+ value: ChatModelOutput;
97
+ }>;
98
+ start?: Callback<{
99
+ input: ChatModelInput;
100
+ }>;
101
+ error?: Callback<{
102
+ input: ChatModelInput;
103
+ error: FrameworkError;
104
+ }>;
105
+ finish?: Callback<null>;
106
+ }
107
+ type ChatModelEmitter<A = Record<never, never>> = Emitter<ChatModelEvents & Omit<A, keyof ChatModelEvents>>;
108
+ type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;
109
+ type ConfigFn<T> = (value: T) => T;
110
+ interface ChatConfig {
111
+ cache?: ChatModelCache | ConfigFn<ChatModelCache>;
112
+ parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;
113
+ }
114
+ type ChatModelToolChoiceSupport = "required" | "none" | "single" | "auto";
115
+ declare abstract class ChatModel extends Serializable {
116
+ abstract readonly emitter: Emitter<ChatModelEvents>;
117
+ cache: ChatModelCache;
118
+ parameters: ChatModelParameters;
119
+ protected readonly logger: Logger;
120
+ readonly toolChoiceSupport: ChatModelToolChoiceSupport[];
121
+ toolCallFallbackViaResponseFormat: boolean;
122
+ readonly modelSupportsToolCalling: boolean;
123
+ abstract get modelId(): string;
124
+ abstract get providerId(): string;
125
+ create(input: ChatModelInput & {
126
+ stream?: boolean;
127
+ }): Run<ChatModelOutput, this, readonly [ChatModelInput & {
128
+ stream?: boolean;
129
+ }]>;
130
+ createStructure<T>(input: ChatModelObjectInput<T>): Run<ChatModelObjectOutput<T>, this, readonly [ChatModelObjectInput<T>]>;
131
+ config({ cache, parameters }: ChatConfig): void;
132
+ static fromName(name: FullModelName | ProviderName, options?: ChatModelParameters): Promise<ChatModel>;
133
+ protected abstract _create(input: ChatModelInput, run: GetRunContext<typeof this>): Promise<ChatModelOutput>;
134
+ protected abstract _createStream(input: ChatModelInput, run: GetRunContext<typeof this>): AsyncGenerator<ChatModelOutput, void>;
135
+ protected _createStructure<T>(input: ChatModelObjectInput<T>, run: GetRunContext<typeof this>): Promise<ChatModelObjectOutput<T>>;
136
+ createSnapshot(): {
137
+ cache: ChatModelCache;
138
+ emitter: Emitter<ChatModelEvents>;
139
+ parameters: ChatModelParameters;
140
+ logger: Logger;
141
+ toolChoiceSupport: ChatModelToolChoiceSupport[];
142
+ toolCallFallbackViaResponseFormat: boolean;
143
+ modelSupportsToolCalling: boolean;
144
+ };
145
+ destroy(): void;
146
+ protected createCacheAccessor({ abortSignal: _, messages, tools, ...input }: ChatModelInput): Promise<{
147
+ key: string;
148
+ value: ChatModelOutput[] | undefined;
149
+ resolve: <T2 extends ChatModelOutput>(value: T2[]) => void;
150
+ reject: (error: Error) => Promise<void>;
151
+ }>;
152
+ protected shouldForceToolCallViaResponseFormat({ tools, toolChoice, responseFormat, }: ChatModelInput): boolean;
153
+ protected isToolChoiceSupported(choice?: ChatModelToolChoice): boolean;
154
+ }
155
+ declare class ChatModelOutput extends Serializable {
156
+ readonly messages: Message[];
157
+ usage?: ChatModelUsage | undefined;
158
+ finishReason?: ChatModelFinishReason | undefined;
159
+ constructor(messages: Message[], usage?: ChatModelUsage | undefined, finishReason?: ChatModelFinishReason | undefined);
160
+ static fromChunks(chunks: ChatModelOutput[]): ChatModelOutput;
161
+ merge(other: ChatModelOutput): void;
162
+ getToolCalls(): ai.ToolCallPart[];
163
+ getTextMessages(): AssistantMessage[];
164
+ getTextContent(): string;
165
+ toString(): string;
166
+ createSnapshot(): {
167
+ messages: Message<MessageContentPart, string>[];
168
+ usage: ChatModelUsage | undefined;
169
+ finishReason: ChatModelFinishReason | undefined;
170
+ };
171
+ loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
172
+ }
173
+
174
+ export { type ChatModelParameters as C, type FullModelName as F, type ChatModelObjectInput as a, type ChatModelObjectOutput as b, type ChatModelToolChoice as c, type ChatModelInput as d, type ChatModelFinishReason as e, type ChatModelUsage as f, type ChatModelEvents as g, type ChatModelEmitter as h, type ChatModelCache as i, type ConfigFn as j, type ChatConfig as k, type ChatModelToolChoiceSupport as l, ChatModel as m, ChatModelOutput as n, loadModel as o, parseModel as p, generateToolUnionSchema as q, filterToolsByToolChoice as r };
@@ -1 +1 @@
1
- {"version":3,"sources":["context.ts"],"names":["Run","LazyPromise","tasks","constructor","handler","runContext","Symbol","toStringTag","observe","fn","push","emitter","context","value","Object","assign","middleware","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","emit","result","Promise","race","run","_","reject","addEventListener","setTimeout","_e","e","ensure","register","createSnapshot","shallowCopy","loadSnapshot","snapshot"],"mappings":"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","file":"context.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { omit } from \"remeda\";\nimport { Callback } 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<null>;\n success: Callback<unknown>;\n error: Callback<Error>;\n finish: Callback<null>;\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;\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(fn: (context: GetRunContext<I, P>) => void) {\n this.tasks.push(async () => fn(this.runContext));\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 readonly 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 try {\n await emitter.emit(\"start\", null);\n const result = await Promise.race([\n RunContext.#storage.run(runContext, fn, runContext),\n new Promise<never>((_, reject) =>\n runContext.signal.addEventListener(\"abort\", () =>\n setTimeout(() => reject(runContext.signal.reason), 0),\n ),\n ),\n ]);\n await emitter.emit(\"success\", result);\n return result;\n } catch (_e) {\n const e = FrameworkError.ensure(_e);\n await emitter.emit(\"error\", e);\n throw e;\n } finally {\n await emitter.emit(\"finish\", null);\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":["context.ts"],"names":["Run","LazyPromise","tasks","constructor","handler","runContext","Symbol","toStringTag","observe","fn","push","emitter","context","value","Object","assign","middleware","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","emit","result","Promise","race","run","_","reject","addEventListener","setTimeout","_e","e","ensure","register","createSnapshot","shallowCopy","loadSnapshot","snapshot"],"mappings":"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","file":"context.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { omit } from \"remeda\";\nimport { Callback } 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<null>;\n success: Callback<unknown>;\n error: Callback<Error>;\n finish: Callback<null>;\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;\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(fn: (context: GetRunContext<I, P>) => void) {\n this.tasks.push(async () => fn(this.runContext));\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 readonly 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 try {\n await emitter.emit(\"start\", null);\n const result = await Promise.race([\n RunContext.#storage.run(runContext, fn, runContext),\n new Promise<never>((_, reject) =>\n runContext.signal.addEventListener(\"abort\", () =>\n setTimeout(() => reject(runContext.signal.reason), 0),\n ),\n ),\n ]);\n await emitter.emit(\"success\", result);\n return result;\n } catch (_e) {\n const e = FrameworkError.ensure(_e);\n await emitter.emit(\"error\", e);\n throw e;\n } finally {\n await emitter.emit(\"finish\", null);\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,11 +1,11 @@
1
- import { E as Emitter, C as Callback } from './emitter-BWtGHYn0.cjs';
1
+ import { E as Emitter, C as Callback } from './emitter-D5Mu0EEH.cjs';
2
2
  import { Serializable } from './internals/serializable.cjs';
3
3
  import { LazyPromise } from './internals/helpers/promise.cjs';
4
4
  import './internals/types.cjs';
5
5
  import './internals/helpers/guards.cjs';
6
6
 
7
7
  /**
8
- * Copyright 2025 IBM Corp.
8
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
9
9
  *
10
10
  * Licensed under the Apache License, Version 2.0 (the "License");
11
11
  * you may not use this file except in compliance with the License.
package/dist/context.d.ts CHANGED
@@ -1,11 +1,11 @@
1
- import { E as Emitter, C as Callback } from './emitter-l0W9gC1A.js';
1
+ import { E as Emitter, C as Callback } from './emitter-C3dO-s2P.js';
2
2
  import { Serializable } from './internals/serializable.js';
3
3
  import { LazyPromise } from './internals/helpers/promise.js';
4
4
  import './internals/types.js';
5
5
  import './internals/helpers/guards.js';
6
6
 
7
7
  /**
8
- * Copyright 2025 IBM Corp.
8
+ * Copyright 2025 © BeeAI a Series of LF Projects, LLC
9
9
  *
10
10
  * Licensed under the Apache License, Version 2.0 (the "License");
11
11
  * you may not use this file except in compliance with the License.
@@ -1 +1 @@
1
- {"version":3,"sources":["context.ts"],"names":["Run","LazyPromise","tasks","constructor","handler","runContext","Symbol","toStringTag","observe","fn","push","emitter","context","value","Object","assign","middleware","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","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 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { omit } from \"remeda\";\nimport { Callback } 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<null>;\n success: Callback<unknown>;\n error: Callback<Error>;\n finish: Callback<null>;\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;\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(fn: (context: GetRunContext<I, P>) => void) {\n this.tasks.push(async () => fn(this.runContext));\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 readonly 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 try {\n await emitter.emit(\"start\", null);\n const result = await Promise.race([\n RunContext.#storage.run(runContext, fn, runContext),\n new Promise<never>((_, reject) =>\n runContext.signal.addEventListener(\"abort\", () =>\n setTimeout(() => reject(runContext.signal.reason), 0),\n ),\n ),\n ]);\n await emitter.emit(\"success\", result);\n return result;\n } catch (_e) {\n const e = FrameworkError.ensure(_e);\n await emitter.emit(\"error\", e);\n throw e;\n } finally {\n await emitter.emit(\"finish\", null);\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":["context.ts"],"names":["Run","LazyPromise","tasks","constructor","handler","runContext","Symbol","toStringTag","observe","fn","push","emitter","context","value","Object","assign","middleware","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","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 *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AsyncLocalStorage } from \"node:async_hooks\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { createRandomHash } from \"@/internals/helpers/hash.js\";\nimport { omit } from \"remeda\";\nimport { Callback } 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<null>;\n success: Callback<unknown>;\n error: Callback<Error>;\n finish: Callback<null>;\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;\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(fn: (context: GetRunContext<I, P>) => void) {\n this.tasks.push(async () => fn(this.runContext));\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 readonly 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 try {\n await emitter.emit(\"start\", null);\n const result = await Promise.race([\n RunContext.#storage.run(runContext, fn, runContext),\n new Promise<never>((_, reject) =>\n runContext.signal.addEventListener(\"abort\", () =>\n setTimeout(() => reject(runContext.signal.reason), 0),\n ),\n ),\n ]);\n await emitter.emit(\"success\", result);\n return result;\n } catch (_e) {\n const e = FrameworkError.ensure(_e);\n await emitter.emit(\"error\", e);\n throw e;\n } finally {\n await emitter.emit(\"finish\", null);\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":["emitter.ts"],"names":["Emitter","Serializable","listeners","Set","groupId","namespace","creator","context","trace","cleanups","constructor","input","Object","prototype","assertValidNamespace","register","root","create","child","slice","cleanup","pipe","push","target","on","toBoundedFunction","args","invoke","value","name","isBlocking","once","persistent","destroy","clear","forEach","length","reset","listener","options","delete","registerCallbacks","callbacks","entries","key","event","callback","match","matcher","createMatcher","matchers","matchNested","path","createFullPath","RegExp","test","isPath","EmitterError","matchSameRun","runId","unshift","every","raw","add","emit","assertValidName","createEvent","data","executions","values","run","Promise","all","id","createRandomHash","createdAt","Date","source","assign","shallowCopy","createSnapshot","Array","from","map","pick","loadSnapshot","snapshot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0DO,MAAMA,gBAA0DC,6BAAAA,CAAAA;AAAAA,EAAAA;;;AAC3DC,EAAAA,SAAAA,uBAAgBC,GAAAA,EAAAA;AACPC,EAAAA,OAAAA;AACHC,EAAAA,SAAAA;AACAC,EAAAA,OAAAA;AACAC,EAAAA,OAAAA;AACAC,EAAAA,KAAAA;AACGC,EAAAA,QAAAA,GAAwB,EAAA;EAE3CC,WAAYC,CAAAA,KAAAA,GAAsB,EAAI,EAAA;AACpC,IAAK,KAAA,EAAA;AACL,IAAA,IAAA,CAAKP,UAAUO,KAAOP,EAAAA,OAAAA;AACtB,IAAKC,IAAAA,CAAAA,SAAAA,GAAYM,KAAON,EAAAA,SAAAA,IAAa,EAAA;AACrC,IAAKC,IAAAA,CAAAA,OAAAA,GAAUK,KAAML,CAAAA,OAAAA,IAAWM,MAAOC,CAAAA,SAAAA;AACvC,IAAKN,IAAAA,CAAAA,OAAAA,GAAUI,KAAOJ,EAAAA,OAAAA,IAAW,EAAC;AAClC,IAAA,IAAA,CAAKC,QAAQG,KAAMH,CAAAA,KAAAA;AACnBM,IAAAA,8BAAAA,CAAqB,KAAKT,SAAS,CAAA;AACrC;EAEA;AACE,IAAA,IAAA,CAAKU,QAAQ,EAAA;AACf;AAEA,EAAA,WACWC,IAAO,GAAA;AAChB,IAAA,OAAO,IAAIhB,OAAuC,CAAA;MAAEM,OAASM,kBAAAA,MAAAA,CAAOK,OAAO,IAAA;KAAM,CAAA;AACnF;EAEAC,KAAaP,CAAAA,KAAAA,GAA2B,EAAgB,EAAA;AACtD,IAAMO,MAAAA,KAAAA,GAAQ,IAAIlB,OAAW,CAAA;MAC3BQ,KAAOG,EAAAA,KAAAA,CAAMH,SAAS,IAAKA,CAAAA,KAAAA;MAC3BJ,OAASO,EAAAA,KAAAA,EAAOP,WAAW,IAAKA,CAAAA,OAAAA;MAChCG,OAAS,EAAA;AAAE,QAAA,GAAG,IAAKA,CAAAA,OAAAA;AAAS,QAAA,GAAGI,KAAOJ,EAAAA;AAAQ,OAAA;MAC9CD,OAASK,EAAAA,KAAAA,EAAOL,WAAW,IAAKA,CAAAA,OAAAA;AAChCD,MAAAA,SAAAA,EAAWM,OAAON,SACd,GAAA;WAAI,IAAKA,CAAAA,SAAAA;WAAcM,KAAMN,CAAAA;AAC7B,OAAA,GAAA,IAAA,CAAKA,UAAUc,KAAK;KAC1B,CAAA;AAEA,IAAMC,MAAAA,OAAAA,GAAUF,KAAMG,CAAAA,IAAAA,CAAK,IAAI,CAAA;AAC/B,IAAKZ,IAAAA,CAAAA,QAAAA,CAASa,KAAKF,OAAAA,CAAAA;AAEnB,IAAOF,OAAAA,KAAAA;AACT;AAEAG,EAAAA,IAAAA,CAAKE,MAAiC,EAAA;AACpC,IAAA,OAAO,IAAKC,CAAAA,EAAAA;;AAEV,MAAA,KAAA;AACAC,MAAAA,6BAAAA;;AAEE,QAAA,CAAA,GAAIC,IAASH,KAAAA,MAAAA,CAAOI,MAAM,CAAA,GAAID,IAAAA,CAAAA;AAC9B,QAAA;AAAC,UAAA;YAAEE,KAAOL,EAAAA,MAAAA;YAAQM,IAAM,EAAA;AAAS;;AAAE,OAAA;AAErC,MAAA;QACEC,UAAY,EAAA,IAAA;QACZC,IAAM,EAAA,KAAA;QACNC,UAAY,EAAA;AACd;AAAA,KAAA;AAEJ;EAEAC,OAAU,GAAA;AACR,IAAA,IAAA,CAAK/B,UAAUgC,KAAK,EAAA;AACpB,IAAA,IAAA,CAAKzB,QAAS0B,CAAAA,OAAAA,CAAQ,CAACjB,KAAAA,KAAUA,OAAAA,CAAAA;AACjC,IAAA,IAAA,CAAKT,SAAS2B,MAAS,GAAA,CAAA;AACzB;EAEAC,KAAQ,GAAA;AACN,IAAWC,KAAAA,MAAAA,QAAAA,IAAY,KAAKpC,SAAW,EAAA;AACrC,MAAI,IAAA,CAACoC,QAASC,CAAAA,OAAAA,EAASP,UAAY,EAAA;AACjC,QAAK9B,IAAAA,CAAAA,SAAAA,CAAUsC,OAAOF,QAAAA,CAAAA;AACxB;AACF;AACF;AAEAG,EAAAA,iBAAAA,CACEC,WAGAH,OACW,EAAA;AACX,IAAA,MAAMrC,YAAyB,EAAA;AAC/BU,IAAO+B,MAAAA,CAAAA,OAAAA,CAAQD,SAAAA,CAAWP,CAAAA,OAAAA,CAAQ,CAAC,CAACS,GAAAA,EAAKhB,KAAAA,CAAM,KAAA;AAC7C,MAAA,IAAIA,KAAO,EAAA;AAET1B,QAAUoB,SAAAA,CAAAA,IAAAA,CAAK,KAAKE,EAAGoB,CAAAA,GAAAA,EAAKhB,OAAOW,OAAUK,GAAAA,GAAAA,CAAI,CAAA,CAAA;AACnD;KACF,CAAA;AACA,IAAA,OAAO,MAAM1C,SAAUiC,CAAAA,OAAAA,CAAQ,CAACf,OAAAA,KAAYA,SAAAA,CAAAA;AAC9C;EAEAI,EACEqB,CAAAA,KAAAA,EACAC,UACAP,OACW,EAAA;AACX,IAAA,OAAO,IAAKQ,CAAAA,KAAAA,CAAMF,KAAkBC,EAAAA,QAAAA,EAA2BP,OAAAA,CAAAA;AACjE;EAEAQ,KAASC,CAAAA,OAAAA,EAAkBF,UAAuBP,OAAqC,EAAA;AACrF,IAAA,MAAMU,gCAAgB,MAAA,CAAA,MAAA;AACpB,MAAA,MAAMC,WAAwB,EAAA;AAC9B,MAAA,IAAIC,cAAcZ,OAASY,EAAAA,WAAAA;AAE3B,MAAA,IAAIH,YAAY,GAAK,EAAA;AACnBG,QAAgB,WAAA,KAAA,KAAA;AAChBD,QAAS5B,QAAAA,CAAAA,IAAAA,CAAK,CAACuB,KAAAA,KAAUA,KAAMO,CAAAA,IAAAA,KAASC,yBAAe,IAAKhD,CAAAA,SAAAA,EAAWwC,KAAMhB,CAAAA,IAAI,CAAA,CAAA;AACnF,OAAA,MAAA,IAAWmB,YAAY,KAAO,EAAA;AAC5BG,QAAgB,WAAA,KAAA,IAAA;AAChBD,QAAS5B,QAAAA,CAAAA,IAAAA,CAAK,MAAM,IAAA,CAAA;AACtB,OAAA,MAAA,IAAW0B,mBAAmBM,MAAQ,EAAA;AACpCH,QAAgB,WAAA,KAAA,IAAA;AAChBD,QAAAA,QAAAA,CAAS5B,KAAK,CAACuB,KAAAA,KAAUG,QAAQO,IAAKV,CAAAA,KAAAA,CAAMO,IAAI,CAAA,CAAA;OACvC,MAAA,IAAA,OAAOJ,YAAY,UAAY,EAAA;AACxCG,QAAgB,WAAA,KAAA,KAAA;AAChBD,QAAAA,QAAAA,CAAS5B,KAAK0B,OAAAA,CAAAA;OACL,MAAA,IAAA,OAAOA,YAAY,QAAU,EAAA;AACtC,QAAIQ,IAAAA,gBAAAA,CAAOR,OAAAA,CAAU,EAAA;AACnBG,UAAgB,WAAA,KAAA,IAAA;AAChBD,UAAAA,QAAAA,CAAS5B,IAAK,CAAA,CAACuB,KAAUA,KAAAA,KAAAA,CAAMO,SAASJ,OAAAA,CAAAA;SACnC,MAAA;AACLG,UAAgB,WAAA,KAAA,KAAA;AAChBD,UAAAA,QAAAA,CAAS5B,IACP,CAAA,CAACuB,KACCA,KAAAA,KAAAA,CAAMhB,IAASmB,KAAAA,OAAAA,IAAWH,KAAMO,CAAAA,IAAAA,KAASC,wBAAe,CAAA,IAAA,CAAKhD,SAAWwC,EAAAA,KAAAA,CAAMhB,IAAI,CAAA,CAAA;AAExF;OACK,MAAA;AACL,QAAM,MAAA,IAAI4B,wBAAa,2BAAA,CAAA;AACzB;AAEA,MAAA,IAAI,CAACN,WAAa,EAAA;AAChB,QAAMO,MAAAA,YAAAA,2BAAgBb,KAAAA,KAAAA;AAEpB,UAAO,OAAA,CAAC,KAAKrC,KAAOmD,EAAAA,KAAAA,GAAQ,OAAO,IAAKnD,CAAAA,KAAAA,EAAOmD,KAAUd,KAAAA,KAAAA,CAAMrC,KAAOmD,EAAAA,KAAAA;SAFnD,EAAA,cAAA,CAAA;AAIrBT,QAAAA,QAAAA,CAASU,QAAQF,YAAAA,CAAAA;AACnB;AAEA,MAAO,OAAA,CAACb,UAAUK,QAASW,CAAAA,KAAAA,CAAM,CAACb,QAAYA,KAAAA,QAAAA,CAAQH,KAAAA,CAAAA,CAAAA;KAvClC,EAAA,eAAA,CAAA;AA0CtB,IAAA,MAAMP,QAAqB,GAAA;AACzBC,MAAAA,OAAAA;AACAO,MAAAA,QAAAA;MACAgB,GAAKd,EAAAA,OAAAA;AACLD,MAAAA,KAAAA,EAAOE,aAAAA;AACT,KAAA;AACA,IAAK/C,IAAAA,CAAAA,SAAAA,CAAU6D,IAAIzB,QAAAA,CAAAA;AAEnB,IAAA,OAAO,MAAM,IAAA,CAAKpC,SAAUsC,CAAAA,MAAAA,CAAOF,QAAAA,CAAAA;AACrC;EAEA,MAAM0B,IAAAA,CACJnC,MACAD,KACe,EAAA;AACfqC,IAAAA,yBAAAA,CAAgBpC,IAAAA,CAAAA;AAEhB,IAAMgB,MAAAA,KAAAA,GAAQ,IAAKqB,CAAAA,WAAAA,CAAYrC,IAAAA,CAAAA;AAC/B,IAAA,OAAO,MAAM,IAAA,CAAKF,MAAOC,CAAAA,KAAAA,EAAOiB,KAAAA,CAAAA;AAClC;EAEA,MAAgBlB,MAAAA,CAAOwC,MAAetB,KAAkB,EAAA;AACtD,IAAA,MAAMuB,aAAwB,EAAA;AAC9B,IAAA,KAAA,MAAW9B,QAAY,IAAA,IAAA,CAAKpC,SAAUmE,CAAAA,MAAAA,EAAU,EAAA;AAC9C,MAAA,IAAI,CAAC/B,QAAAA,CAASS,KAAMF,CAAAA,KAAAA,CAAQ,EAAA;AAC1B,QAAA;AACF;AAEA,MAAIP,IAAAA,QAAAA,CAASC,SAASR,IAAM,EAAA;AAC1B,QAAK7B,IAAAA,CAAAA,SAAAA,CAAUsC,OAAOF,QAAAA,CAAAA;AACxB;AAEA,MAAA,MAAMgC,sBAAkBhC,MAAAA,CAAAA,YAAAA,QAAAA,CAASQ,QAASqB,CAAAA,IAAAA,EAAMtB,KAAAA,CAApC,EAAA,KAAA,CAAA;AACZuB,MAAW9C,UAAAA,CAAAA,IAAAA,CAAKgB,SAASC,OAAST,EAAAA,UAAAA,GAAa,MAAMwC,GAAAA,EAAAA,GAAQA,KAAAA,CAAAA;AAC/D;AACA,IAAMC,MAAAA,OAAAA,CAAQC,IAAIJ,UAAAA,CAAAA;AACpB;AAEUF,EAAAA,WAAAA,CAAYrC,IAAyB,EAAA;AAC7C,IAAO,OAAA;AACL4C,MAAAA,EAAAA,EAAIC,yBAAAA,EAAAA;AACJtE,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdyB,MAAAA,IAAAA;MACAuB,IAAMC,EAAAA,wBAAAA,CAAe,IAAKhD,CAAAA,SAAAA,EAAWwB,IAAAA,CAAAA;AACrC8C,MAAAA,SAAAA,sBAAeC,IAAAA,EAAAA;MACfC,MAAQ,EAAA,IAAA;AACRvE,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdC,MAAAA,OAAAA,EAASK,OAAOkE,MAAO,CAAA,IAAI,IAAKvE,CAAAA,OAAAA,EAAS,EAAC,CAAA;MAC1CC,KAAOuE,EAAAA,uBAAAA,CAAY,KAAKvE,KAAK;AAC/B,KAAA;AACF;;EAEAwE,cAAiB,GAAA;AACf,IAAO,OAAA;AACL5E,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;MACdC,SAAW0E,EAAAA,uBAAAA,CAAY,KAAK1E,SAAS,CAAA;AACrCC,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdC,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdC,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZN,MAAAA,SAAAA,EAAW+E,MAAMC,IAAK,CAAA,IAAA,CAAKhF,SAAS,CAAA,CAAEiF,IAAIC,WAAK,CAAA;AAAC,QAAA,KAAA;AAAO,QAAA,SAAA;AAAW,QAAA;OAAW,CAAA,CAAA;AAC7E3E,MAAAA,QAAAA,EAAU,IAAKA,CAAAA;AACjB,KAAA;AACF;AAEA4E,EAAAA,YAAAA,CAAa,EAAEnF,SAAAA,EAAW,GAAGoF,QAAAA,EAA0D,EAAA;AACrF1E,IAAOkE,MAAAA,CAAAA,MAAAA,CAAO,MAAMQ,QAAU,EAAA;AAAEpF,MAAAA,SAAAA,sBAAeC,GAAAA;KAAM,CAAA;AACrDD,IAAAA,SAAAA,CAAUiC,OAAQ,CAAA,CAAC,EAAE2B,GAAAA,EAAKhB,QAAUP,EAAAA,OAAAA,EAAc,KAAA,IAAA,CAAKQ,KAAMe,CAAAA,GAAAA,EAAKhB,QAAUP,EAAAA,OAAAA,CAAAA,CAAAA;AAC9E;AACF","file":"emitter.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n 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\";\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 = new Set<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 },\n );\n }\n\n destroy() {\n this.listeners.clear();\n this.cleanups.forEach((child) => child());\n this.cleanups.length = 0;\n }\n\n reset() {\n for (const listener of this.listeners) {\n if (!listener.options?.persistent) {\n this.listeners.delete(listener);\n }\n }\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 this.listeners.add(listener);\n\n return () => this.listeners.delete(listener);\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 for (const listener of this.listeners.values()) {\n if (!listener.match(event)) {\n continue;\n }\n\n if (listener.options?.once) {\n this.listeners.delete(listener);\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: Array.from(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: new Set() });\n listeners.forEach(({ raw, callback, options }) => this.match(raw, callback, options));\n }\n}\n"]}
1
+ {"version":3,"sources":["emitter.ts"],"names":["Emitter","Serializable","listeners","Set","groupId","namespace","creator","context","trace","cleanups","constructor","input","Object","prototype","assertValidNamespace","register","root","create","child","slice","cleanup","pipe","push","target","on","toBoundedFunction","args","invoke","value","name","isBlocking","once","persistent","destroy","clear","forEach","length","reset","listener","options","delete","registerCallbacks","callbacks","entries","key","event","callback","match","matcher","createMatcher","matchers","matchNested","path","createFullPath","RegExp","test","isPath","EmitterError","matchSameRun","runId","unshift","every","raw","add","emit","assertValidName","createEvent","data","executions","values","run","Promise","all","id","createRandomHash","createdAt","Date","source","assign","shallowCopy","createSnapshot","Array","from","map","pick","loadSnapshot","snapshot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA0DO,MAAMA,gBAA0DC,6BAAAA,CAAAA;AAAAA,EAAAA;;;AAC3DC,EAAAA,SAAAA,uBAAgBC,GAAAA,EAAAA;AACPC,EAAAA,OAAAA;AACHC,EAAAA,SAAAA;AACAC,EAAAA,OAAAA;AACAC,EAAAA,OAAAA;AACAC,EAAAA,KAAAA;AACGC,EAAAA,QAAAA,GAAwB,EAAA;EAE3CC,WAAYC,CAAAA,KAAAA,GAAsB,EAAI,EAAA;AACpC,IAAK,KAAA,EAAA;AACL,IAAA,IAAA,CAAKP,UAAUO,KAAOP,EAAAA,OAAAA;AACtB,IAAKC,IAAAA,CAAAA,SAAAA,GAAYM,KAAON,EAAAA,SAAAA,IAAa,EAAA;AACrC,IAAKC,IAAAA,CAAAA,OAAAA,GAAUK,KAAML,CAAAA,OAAAA,IAAWM,MAAOC,CAAAA,SAAAA;AACvC,IAAKN,IAAAA,CAAAA,OAAAA,GAAUI,KAAOJ,EAAAA,OAAAA,IAAW,EAAC;AAClC,IAAA,IAAA,CAAKC,QAAQG,KAAMH,CAAAA,KAAAA;AACnBM,IAAAA,8BAAAA,CAAqB,KAAKT,SAAS,CAAA;AACrC;EAEA;AACE,IAAA,IAAA,CAAKU,QAAQ,EAAA;AACf;AAEA,EAAA,WACWC,IAAO,GAAA;AAChB,IAAA,OAAO,IAAIhB,OAAuC,CAAA;MAAEM,OAASM,kBAAAA,MAAAA,CAAOK,OAAO,IAAA;KAAM,CAAA;AACnF;EAEAC,KAAaP,CAAAA,KAAAA,GAA2B,EAAgB,EAAA;AACtD,IAAMO,MAAAA,KAAAA,GAAQ,IAAIlB,OAAW,CAAA;MAC3BQ,KAAOG,EAAAA,KAAAA,CAAMH,SAAS,IAAKA,CAAAA,KAAAA;MAC3BJ,OAASO,EAAAA,KAAAA,EAAOP,WAAW,IAAKA,CAAAA,OAAAA;MAChCG,OAAS,EAAA;AAAE,QAAA,GAAG,IAAKA,CAAAA,OAAAA;AAAS,QAAA,GAAGI,KAAOJ,EAAAA;AAAQ,OAAA;MAC9CD,OAASK,EAAAA,KAAAA,EAAOL,WAAW,IAAKA,CAAAA,OAAAA;AAChCD,MAAAA,SAAAA,EAAWM,OAAON,SACd,GAAA;WAAI,IAAKA,CAAAA,SAAAA;WAAcM,KAAMN,CAAAA;AAC7B,OAAA,GAAA,IAAA,CAAKA,UAAUc,KAAK;KAC1B,CAAA;AAEA,IAAMC,MAAAA,OAAAA,GAAUF,KAAMG,CAAAA,IAAAA,CAAK,IAAI,CAAA;AAC/B,IAAKZ,IAAAA,CAAAA,QAAAA,CAASa,KAAKF,OAAAA,CAAAA;AAEnB,IAAOF,OAAAA,KAAAA;AACT;AAEAG,EAAAA,IAAAA,CAAKE,MAAiC,EAAA;AACpC,IAAA,OAAO,IAAKC,CAAAA,EAAAA;;AAEV,MAAA,KAAA;AACAC,MAAAA,6BAAAA;;AAEE,QAAA,CAAA,GAAIC,IAASH,KAAAA,MAAAA,CAAOI,MAAM,CAAA,GAAID,IAAAA,CAAAA;AAC9B,QAAA;AAAC,UAAA;YAAEE,KAAOL,EAAAA,MAAAA;YAAQM,IAAM,EAAA;AAAS;;AAAE,OAAA;AAErC,MAAA;QACEC,UAAY,EAAA,IAAA;QACZC,IAAM,EAAA,KAAA;QACNC,UAAY,EAAA;AACd;AAAA,KAAA;AAEJ;EAEAC,OAAU,GAAA;AACR,IAAA,IAAA,CAAK/B,UAAUgC,KAAK,EAAA;AACpB,IAAA,IAAA,CAAKzB,QAAS0B,CAAAA,OAAAA,CAAQ,CAACjB,KAAAA,KAAUA,OAAAA,CAAAA;AACjC,IAAA,IAAA,CAAKT,SAAS2B,MAAS,GAAA,CAAA;AACzB;EAEAC,KAAQ,GAAA;AACN,IAAWC,KAAAA,MAAAA,QAAAA,IAAY,KAAKpC,SAAW,EAAA;AACrC,MAAI,IAAA,CAACoC,QAASC,CAAAA,OAAAA,EAASP,UAAY,EAAA;AACjC,QAAK9B,IAAAA,CAAAA,SAAAA,CAAUsC,OAAOF,QAAAA,CAAAA;AACxB;AACF;AACF;AAEAG,EAAAA,iBAAAA,CACEC,WAGAH,OACW,EAAA;AACX,IAAA,MAAMrC,YAAyB,EAAA;AAC/BU,IAAO+B,MAAAA,CAAAA,OAAAA,CAAQD,SAAAA,CAAWP,CAAAA,OAAAA,CAAQ,CAAC,CAACS,GAAAA,EAAKhB,KAAAA,CAAM,KAAA;AAC7C,MAAA,IAAIA,KAAO,EAAA;AAET1B,QAAUoB,SAAAA,CAAAA,IAAAA,CAAK,KAAKE,EAAGoB,CAAAA,GAAAA,EAAKhB,OAAOW,OAAUK,GAAAA,GAAAA,CAAI,CAAA,CAAA;AACnD;KACF,CAAA;AACA,IAAA,OAAO,MAAM1C,SAAUiC,CAAAA,OAAAA,CAAQ,CAACf,OAAAA,KAAYA,SAAAA,CAAAA;AAC9C;EAEAI,EACEqB,CAAAA,KAAAA,EACAC,UACAP,OACW,EAAA;AACX,IAAA,OAAO,IAAKQ,CAAAA,KAAAA,CAAMF,KAAkBC,EAAAA,QAAAA,EAA2BP,OAAAA,CAAAA;AACjE;EAEAQ,KAASC,CAAAA,OAAAA,EAAkBF,UAAuBP,OAAqC,EAAA;AACrF,IAAA,MAAMU,gCAAgB,MAAA,CAAA,MAAA;AACpB,MAAA,MAAMC,WAAwB,EAAA;AAC9B,MAAA,IAAIC,cAAcZ,OAASY,EAAAA,WAAAA;AAE3B,MAAA,IAAIH,YAAY,GAAK,EAAA;AACnBG,QAAgB,WAAA,KAAA,KAAA;AAChBD,QAAS5B,QAAAA,CAAAA,IAAAA,CAAK,CAACuB,KAAAA,KAAUA,KAAMO,CAAAA,IAAAA,KAASC,yBAAe,IAAKhD,CAAAA,SAAAA,EAAWwC,KAAMhB,CAAAA,IAAI,CAAA,CAAA;AACnF,OAAA,MAAA,IAAWmB,YAAY,KAAO,EAAA;AAC5BG,QAAgB,WAAA,KAAA,IAAA;AAChBD,QAAS5B,QAAAA,CAAAA,IAAAA,CAAK,MAAM,IAAA,CAAA;AACtB,OAAA,MAAA,IAAW0B,mBAAmBM,MAAQ,EAAA;AACpCH,QAAgB,WAAA,KAAA,IAAA;AAChBD,QAAAA,QAAAA,CAAS5B,KAAK,CAACuB,KAAAA,KAAUG,QAAQO,IAAKV,CAAAA,KAAAA,CAAMO,IAAI,CAAA,CAAA;OACvC,MAAA,IAAA,OAAOJ,YAAY,UAAY,EAAA;AACxCG,QAAgB,WAAA,KAAA,KAAA;AAChBD,QAAAA,QAAAA,CAAS5B,KAAK0B,OAAAA,CAAAA;OACL,MAAA,IAAA,OAAOA,YAAY,QAAU,EAAA;AACtC,QAAIQ,IAAAA,gBAAAA,CAAOR,OAAAA,CAAU,EAAA;AACnBG,UAAgB,WAAA,KAAA,IAAA;AAChBD,UAAAA,QAAAA,CAAS5B,IAAK,CAAA,CAACuB,KAAUA,KAAAA,KAAAA,CAAMO,SAASJ,OAAAA,CAAAA;SACnC,MAAA;AACLG,UAAgB,WAAA,KAAA,KAAA;AAChBD,UAAAA,QAAAA,CAAS5B,IACP,CAAA,CAACuB,KACCA,KAAAA,KAAAA,CAAMhB,IAASmB,KAAAA,OAAAA,IAAWH,KAAMO,CAAAA,IAAAA,KAASC,wBAAe,CAAA,IAAA,CAAKhD,SAAWwC,EAAAA,KAAAA,CAAMhB,IAAI,CAAA,CAAA;AAExF;OACK,MAAA;AACL,QAAM,MAAA,IAAI4B,wBAAa,2BAAA,CAAA;AACzB;AAEA,MAAA,IAAI,CAACN,WAAa,EAAA;AAChB,QAAMO,MAAAA,YAAAA,2BAAgBb,KAAAA,KAAAA;AAEpB,UAAO,OAAA,CAAC,KAAKrC,KAAOmD,EAAAA,KAAAA,GAAQ,OAAO,IAAKnD,CAAAA,KAAAA,EAAOmD,KAAUd,KAAAA,KAAAA,CAAMrC,KAAOmD,EAAAA,KAAAA;SAFnD,EAAA,cAAA,CAAA;AAIrBT,QAAAA,QAAAA,CAASU,QAAQF,YAAAA,CAAAA;AACnB;AAEA,MAAO,OAAA,CAACb,UAAUK,QAASW,CAAAA,KAAAA,CAAM,CAACb,QAAYA,KAAAA,QAAAA,CAAQH,KAAAA,CAAAA,CAAAA;KAvClC,EAAA,eAAA,CAAA;AA0CtB,IAAA,MAAMP,QAAqB,GAAA;AACzBC,MAAAA,OAAAA;AACAO,MAAAA,QAAAA;MACAgB,GAAKd,EAAAA,OAAAA;AACLD,MAAAA,KAAAA,EAAOE,aAAAA;AACT,KAAA;AACA,IAAK/C,IAAAA,CAAAA,SAAAA,CAAU6D,IAAIzB,QAAAA,CAAAA;AAEnB,IAAA,OAAO,MAAM,IAAA,CAAKpC,SAAUsC,CAAAA,MAAAA,CAAOF,QAAAA,CAAAA;AACrC;EAEA,MAAM0B,IAAAA,CACJnC,MACAD,KACe,EAAA;AACfqC,IAAAA,yBAAAA,CAAgBpC,IAAAA,CAAAA;AAEhB,IAAMgB,MAAAA,KAAAA,GAAQ,IAAKqB,CAAAA,WAAAA,CAAYrC,IAAAA,CAAAA;AAC/B,IAAA,OAAO,MAAM,IAAA,CAAKF,MAAOC,CAAAA,KAAAA,EAAOiB,KAAAA,CAAAA;AAClC;EAEA,MAAgBlB,MAAAA,CAAOwC,MAAetB,KAAkB,EAAA;AACtD,IAAA,MAAMuB,aAAwB,EAAA;AAC9B,IAAA,KAAA,MAAW9B,QAAY,IAAA,IAAA,CAAKpC,SAAUmE,CAAAA,MAAAA,EAAU,EAAA;AAC9C,MAAA,IAAI,CAAC/B,QAAAA,CAASS,KAAMF,CAAAA,KAAAA,CAAQ,EAAA;AAC1B,QAAA;AACF;AAEA,MAAIP,IAAAA,QAAAA,CAASC,SAASR,IAAM,EAAA;AAC1B,QAAK7B,IAAAA,CAAAA,SAAAA,CAAUsC,OAAOF,QAAAA,CAAAA;AACxB;AAEA,MAAA,MAAMgC,sBAAkBhC,MAAAA,CAAAA,YAAAA,QAAAA,CAASQ,QAASqB,CAAAA,IAAAA,EAAMtB,KAAAA,CAApC,EAAA,KAAA,CAAA;AACZuB,MAAW9C,UAAAA,CAAAA,IAAAA,CAAKgB,SAASC,OAAST,EAAAA,UAAAA,GAAa,MAAMwC,GAAAA,EAAAA,GAAQA,KAAAA,CAAAA;AAC/D;AACA,IAAMC,MAAAA,OAAAA,CAAQC,IAAIJ,UAAAA,CAAAA;AACpB;AAEUF,EAAAA,WAAAA,CAAYrC,IAAyB,EAAA;AAC7C,IAAO,OAAA;AACL4C,MAAAA,EAAAA,EAAIC,yBAAAA,EAAAA;AACJtE,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdyB,MAAAA,IAAAA;MACAuB,IAAMC,EAAAA,wBAAAA,CAAe,IAAKhD,CAAAA,SAAAA,EAAWwB,IAAAA,CAAAA;AACrC8C,MAAAA,SAAAA,sBAAeC,IAAAA,EAAAA;MACfC,MAAQ,EAAA,IAAA;AACRvE,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdC,MAAAA,OAAAA,EAASK,OAAOkE,MAAO,CAAA,IAAI,IAAKvE,CAAAA,OAAAA,EAAS,EAAC,CAAA;MAC1CC,KAAOuE,EAAAA,uBAAAA,CAAY,KAAKvE,KAAK;AAC/B,KAAA;AACF;;EAEAwE,cAAiB,GAAA;AACf,IAAO,OAAA;AACL5E,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;MACdC,SAAW0E,EAAAA,uBAAAA,CAAY,KAAK1E,SAAS,CAAA;AACrCC,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdC,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdC,MAAAA,KAAAA,EAAO,IAAKA,CAAAA,KAAAA;AACZN,MAAAA,SAAAA,EAAW+E,MAAMC,IAAK,CAAA,IAAA,CAAKhF,SAAS,CAAA,CAAEiF,IAAIC,WAAK,CAAA;AAAC,QAAA,KAAA;AAAO,QAAA,SAAA;AAAW,QAAA;OAAW,CAAA,CAAA;AAC7E3E,MAAAA,QAAAA,EAAU,IAAKA,CAAAA;AACjB,KAAA;AACF;AAEA4E,EAAAA,YAAAA,CAAa,EAAEnF,SAAAA,EAAW,GAAGoF,QAAAA,EAA0D,EAAA;AACrF1E,IAAOkE,MAAAA,CAAAA,MAAAA,CAAO,MAAMQ,QAAU,EAAA;AAAEpF,MAAAA,SAAAA,sBAAeC,GAAAA;KAAM,CAAA;AACrDD,IAAAA,SAAAA,CAAUiC,OAAQ,CAAA,CAAC,EAAE2B,GAAAA,EAAKhB,QAAUP,EAAAA,OAAAA,EAAc,KAAA,IAAA,CAAKQ,KAAMe,CAAAA,GAAAA,EAAKhB,QAAUP,EAAAA,OAAAA,CAAAA,CAAAA;AAC9E;AACF","file":"emitter.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n 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\";\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 = new Set<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 },\n );\n }\n\n destroy() {\n this.listeners.clear();\n this.cleanups.forEach((child) => child());\n this.cleanups.length = 0;\n }\n\n reset() {\n for (const listener of this.listeners) {\n if (!listener.options?.persistent) {\n this.listeners.delete(listener);\n }\n }\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 this.listeners.add(listener);\n\n return () => this.listeners.delete(listener);\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 for (const listener of this.listeners.values()) {\n if (!listener.match(event)) {\n continue;\n }\n\n if (listener.options?.once) {\n this.listeners.delete(listener);\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: Array.from(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: new Set() });\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, e as EventMeta, d as EventTrace } from '../emitter-BWtGHYn0.cjs';
1
+ export { C as Callback, E as Emitter, g as EmitterChildInput, f as EmitterInput, e as EventMeta, d as EventTrace } from '../emitter-D5Mu0EEH.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, e as EventMeta, d as EventTrace } from '../emitter-l0W9gC1A.js';
1
+ export { C as Callback, E as Emitter, g as EmitterChildInput, f as EmitterInput, e as EventMeta, d as EventTrace } from '../emitter-C3dO-s2P.js';
2
2
  import '../internals/types.js';
3
3
  import '../internals/serializable.js';
4
4
  import '../internals/helpers/guards.js';