beeai-framework 0.1.9 → 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 +51 -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 +54 -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-Bpt7IFa_.d.cts → agent-Ca5UE2P1.d.cts} +3 -3
  135. package/dist/{agent-Bf2FaCKy.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 +8 -8
  192. package/dist/agents/react/runners/granite/runner.d.ts +8 -8
  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-mmG-8Pk9.d.ts → base-BOCDDBvG.d.ts} +2 -2
  253. package/dist/{base-daM6fHUP.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-BxVxGBbJ.d.ts → emitter-C3dO-s2P.d.ts} +2 -2
  299. package/dist/{emitter-C9EN5B0j.d.cts → emitter-D5Mu0EEH.d.cts} +2 -2
  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 +4 -4
  468. package/dist/tools/database/milvus.d.ts +4 -4
  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 +43 -43
  540. package/dist/workflows/agent.d.ts +43 -43
  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
@@ -1 +1 @@
1
- {"version":3,"sources":["agent.ts"],"names":["AgentWorkflow","workflow","schema","z","object","inputs","array","prompt","string","optional","context","expectedOutput","union","instanceof","ZodSchema","finalAnswer","newMessages","Message","default","constructor","name","Workflow","outputSchema","required","run","options","map","input","text","addAgent","agent","BaseAgent","clone","then","factory","memory","_add","meta","randomString","isFunction","_createFactory","delAgent","delStep","ToolCallingAgent","llm","tools","description","instructions","execution","templates","system","template","fork","config","defaults","role","addStep","state","ctx","UnconstrainedMemory","addMany","runInput","shift","undefined","asReadOnly","result","signal","push","UserMessage"],"mappings":";;;;;;;;;;AAgDO,MAAMA,aAAAA,CAAAA;EAhDb;;;AAiDqBC,EAAAA,QAAAA;AAEVC,EAAAA,MAAAA,GAASC,EAAEC,MAAO,CAAA;IACzBC,MAAQF,EAAAA,CAAAA,CAAEG,KACRH,CAAAA,CAAAA,CAAEC,MAAO,CAAA;MACPG,MAAQJ,EAAAA,CAAAA,CAAEK,MAAM,EAAA,CAAGC,QAAQ,EAAA;MAC3BC,OAASP,EAAAA,CAAAA,CAAEK,MAAM,EAAA,CAAGC,QAAQ,EAAA;AAC5BE,MAAAA,cAAAA,EAAgBR,EAAES,KAAM,CAAA;AAACT,QAAAA,CAAAA,CAAEK,MAAM,EAAA;QAAIL,CAAEU,CAAAA,UAAAA,CAAWV,EAAEW,SAAS;AAAE,OAAA,CAAA,CAAEL,QAAQ;AAC3E,KAAA,CAAA,CAAA;IAGFM,WAAaZ,EAAAA,CAAAA,CAAEK,MAAM,EAAA,CAAGC,QAAQ,EAAA;IAChCO,WAAab,EAAAA,CAAAA,CAAEG,MAAMH,CAAEU,CAAAA,UAAAA,CAAWI,OAAAA,CAAAA,CAAAA,CAAUC,OAAQ,CAAA,EAAE;GACxD,CAAA;AAEAC,EAAAA,WAAAA,CAAYC,OAAO,eAAiB,EAAA;AAClC,IAAKnB,IAAAA,CAAAA,QAAAA,GAAW,IAAIoB,QAAS,CAAA;AAC3BD,MAAAA,IAAAA;AACAlB,MAAAA,MAAAA,EAAQ,IAAKA,CAAAA,MAAAA;MACboB,YAAc,EAAA,IAAA,CAAKpB,OAAOqB,QAAQ;KACpC,CAAA;AACF;EAEAC,GAAInB,CAAAA,MAAAA,EAAgDoB,OAAsC,GAAA,EAAI,EAAA;AAC5F,IAAO,OAAA,IAAA,CAAKxB,SAASuB,GACnB,CAAA;AACEnB,MAAAA,MAAAA,EAAQA,MAAOqB,CAAAA,GAAAA,CAAI,CAACC,KAAAA,KAAWA,iBAAiBV,OAAU,GAAA;AAAEV,QAAAA,MAAAA,EAAQoB,KAAMC,CAAAA;AAAK,OAAA,GAAID,KAAAA;AACrF,KAAA,EACAF,OAAAA,CAAAA;AAEJ;AAIAI,EAAAA,QAAAA,CAASC,KAA+E,EAAA;AACtF,IAAA,IAAIA,iBAAiBC,SAAW,EAAA;AAC9B,MAAA,OAAOD,KAAME,CAAAA,KAAAA,EAAQC,CAAAA,IAAAA,CAAK,CAACD,KAAAA,KAAAA;AACzB,QAAME,MAAAA,OAAAA,2BAAyBC,MAAAA,KAAAA;AAC7BH,UAAAA,KAAAA,CAAMG,MAASA,GAAAA,MAAAA;AACf,UAAOH,OAAAA,KAAAA;SAFqB,EAAA,SAAA,CAAA;AAI9B,QAAA,OAAO,IAAKI,CAAAA,IAAAA,CAAKJ,KAAMK,CAAAA,IAAAA,CAAKjB,MAAMc,OAAAA,CAAAA;OACpC,CAAA;AACF;AAEA,IAAA,MAAMd,OAAOU,KAAMV,CAAAA,IAAAA,IAAQ,CAAQkB,KAAAA,EAAAA,YAAAA,CAAa,CAAA,CAAA,CAAA,CAAA;AAChD,IAAO,OAAA,IAAA,CAAKF,IAAKhB,CAAAA,IAAAA,EAAMmB,UAAWT,CAAAA,KAAAA,IAASA,KAAQ,GAAA,IAAA,CAAKU,cAAeV,CAAAA,KAAAA,CAAAA,CAAAA;AACzE;AAEAW,EAAAA,QAAAA,CAASrB,IAAc,EAAA;AACrB,IAAO,OAAA,IAAA,CAAKnB,QAASyC,CAAAA,OAAAA,CAAQtB,IAAAA,CAAAA;AAC/B;AAEUoB,EAAAA,cAAAA,CAAeb,KAAwC,EAAA;AAC/D,IAAO,OAAA,CAACQ,MACN,KAAA,IAAIQ,gBAAiB,CAAA;AACnBC,MAAAA,GAAAA,EAAKjB,KAAMiB,CAAAA,GAAAA;MACXC,KAAOlB,EAAAA,KAAAA,CAAMkB,SAAS,EAAA;AACtBV,MAAAA,MAAAA;MACAE,IAAM,EAAA;AACJjB,QAAAA,IAAAA,EAAMO,KAAMP,CAAAA,IAAAA,IAAQ,CAAQkB,KAAAA,EAAAA,YAAAA,CAAa,CAAA,CAAA,CAAA,CAAA;AACzCQ,QAAAA,WAAAA,EAAanB,MAAMoB,YAAgB,IAAA;AACrC,OAAA;AACAC,MAAAA,SAAAA,EAAWrB,KAAMqB,CAAAA,SAAAA;AACjB,MAAA,GAAIrB,MAAMoB,YAAgB,IAAA;QACxBE,SAAW,EAAA;AACTC,UAAAA,MAAAA,kBAASC,MAAAA,CAAAA,CAAAA,QAAAA,KACPA,QAASC,CAAAA,IAAAA,CAAK,CAACC,MAAAA,KAAAA;AACbA,YAAAA,MAAAA,CAAOC,QAASP,CAAAA,YAAAA,GAAepB,KAAMoB,CAAAA,YAAAA,IAAgBM,OAAOC,QAASP,CAAAA,YAAAA;AACrEM,YAAAA,MAAAA,CAAOC,QAASC,CAAAA,IAAAA,GAAO5B,KAAM4B,CAAAA,IAAAA,IAAQF,OAAOC,QAASC,CAAAA,IAAAA;AACvD,WAAA,CAJM,EAAA,QAAA;AAKV;AACF;KACF,CAAA;AACJ;AAEUnB,EAAAA,IAAAA,CAAKhB,MAAcc,OAAuB,EAAA;AAClD,IAAA,IAAA,CAAKjC,QAASuD,CAAAA,OAAAA,CAAQpC,IAAM,EAAA,OAAOqC,OAAOC,GAAAA,KAAAA;AACxC,MAAMvB,MAAAA,MAAAA,GAAS,IAAIwB,mBAAAA,EAAAA;AACnB,MAAMxB,MAAAA,MAAAA,CAAOyB,OAAQH,CAAAA,KAAAA,CAAMzC,WAAW,CAAA;AAEtC,MAAA,MAAM6C,QAAWJ,GAAAA,KAAAA,CAAMpD,MAAOyD,CAAAA,KAAAA,EAAW,IAAA;QAAEvD,MAAQwD,EAAAA;AAAU,OAAA;AAC7D,MAAA,MAAMjC,KAAQ,GAAA,MAAMI,OAAQC,CAAAA,MAAAA,CAAO6B,YAAU,CAAA;AAC7C,MAAA,MAAM,EAAEC,MAAM,EAAA,GAAK,MAAMnC,KAAAA,CAAMN,IAAIqC,QAAU,EAAA;AAAEK,QAAAA,MAAAA,EAAQR,GAAIQ,CAAAA;OAAO,CAAA;AAClET,MAAAA,KAAAA,CAAM1C,cAAckD,MAAOrC,CAAAA,IAAAA;AAC3B,MAAA,IAAIiC,SAAStD,MAAQ,EAAA;AACnBkD,QAAAA,KAAAA,CAAMzC,YAAYmD,IAAK,CAAA,IAAIC,WAAYP,CAAAA,QAAAA,CAAStD,MAAM,CAAA,CAAA;AACxD;AACAkD,MAAMzC,KAAAA,CAAAA,WAAAA,CAAYmD,KAAKF,MAAAA,CAAAA;KACzB,CAAA;AACA,IAAO,OAAA,IAAA;AACT;AACF","file":"agent.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 { Workflow, WorkflowRunOptions } from \"@/workflows/workflow.js\";\nimport { Message, UserMessage } from \"@/backend/message.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { BaseMemory, ReadOnlyMemory } from \"@/memory/base.js\";\nimport { z } from \"zod\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { BaseAgent } from \"@/agents/base.js\";\nimport { isFunction, randomString } from \"remeda\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { ToolCallingAgent } from \"@/agents/toolCalling/agent.js\";\nimport {\n ToolCallingAgentExecutionConfig,\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOptions,\n ToolCallingAgentRunOutput,\n} from \"@/agents/toolCalling/types.js\";\n\ntype AgentInstance = BaseAgent<\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunOptions\n>;\ntype AgentFactory = (memory: ReadOnlyMemory) => AgentInstance | Promise<AgentInstance>;\ninterface AgentFactoryInput {\n name?: string;\n role?: string;\n llm: ChatModel;\n instructions?: string;\n tools?: AnyTool[];\n execution?: ToolCallingAgentExecutionConfig;\n}\n\nexport class AgentWorkflow {\n protected readonly workflow;\n\n readonly schema = z.object({\n inputs: z.array(\n z.object({\n prompt: z.string().optional(),\n context: z.string().optional(),\n expectedOutput: z.union([z.string(), z.instanceof(z.ZodSchema)]).optional(),\n }),\n ),\n\n finalAnswer: z.string().optional(),\n newMessages: z.array(z.instanceof(Message)).default([]),\n });\n\n constructor(name = \"AgentWorkflow\") {\n this.workflow = new Workflow({\n name,\n schema: this.schema,\n outputSchema: this.schema.required(),\n });\n }\n\n run(inputs: (ToolCallingAgentRunInput | Message)[], options: WorkflowRunOptions<string> = {}) {\n return this.workflow.run(\n {\n inputs: inputs.map((input) => (input instanceof Message ? { prompt: input.text } : input)),\n },\n options,\n );\n }\n\n addAgent(agent: AgentFactory | AgentFactoryInput): this;\n addAgent(agent: AgentInstance): Promise<this>;\n addAgent(agent: AgentInstance | AgentFactory | AgentFactoryInput): this | Promise<this> {\n if (agent instanceof BaseAgent) {\n return agent.clone().then((clone) => {\n const factory: AgentFactory = (memory) => {\n clone.memory = memory;\n return clone;\n };\n return this._add(clone.meta.name, factory);\n });\n }\n\n const name = agent.name || `Agent${randomString(4)}`;\n return this._add(name, isFunction(agent) ? agent : this._createFactory(agent));\n }\n\n delAgent(name: string) {\n return this.workflow.delStep(name);\n }\n\n protected _createFactory(input: AgentFactoryInput): AgentFactory {\n return (memory: BaseMemory) =>\n new ToolCallingAgent({\n llm: input.llm,\n tools: input.tools ?? [],\n memory,\n meta: {\n name: input.name || `Agent${randomString(4)}`,\n description: input.instructions ?? \"\",\n },\n execution: input.execution,\n ...(input.instructions && {\n templates: {\n system: (template) =>\n template.fork((config) => {\n config.defaults.instructions = input.instructions || config.defaults.instructions;\n config.defaults.role = input.role || config.defaults.role;\n }),\n },\n }),\n });\n }\n\n protected _add(name: string, factory: AgentFactory) {\n this.workflow.addStep(name, async (state, ctx) => {\n const memory = new UnconstrainedMemory();\n await memory.addMany(state.newMessages);\n\n const runInput = state.inputs.shift() ?? { prompt: undefined };\n const agent = await factory(memory.asReadOnly());\n const { result } = await agent.run(runInput, { signal: ctx.signal });\n state.finalAnswer = result.text;\n if (runInput.prompt) {\n state.newMessages.push(new UserMessage(runInput.prompt));\n }\n state.newMessages.push(result);\n });\n return this;\n }\n}\n"]}
1
+ {"version":3,"sources":["agent.ts"],"names":["AgentWorkflow","workflow","schema","z","object","inputs","array","prompt","string","optional","context","expectedOutput","union","instanceof","ZodSchema","finalAnswer","newMessages","Message","default","constructor","name","Workflow","outputSchema","required","run","options","map","input","text","addAgent","agent","BaseAgent","clone","then","factory","memory","_add","meta","randomString","isFunction","_createFactory","delAgent","delStep","ToolCallingAgent","llm","tools","description","instructions","execution","templates","system","template","fork","config","defaults","role","addStep","state","ctx","UnconstrainedMemory","addMany","runInput","shift","undefined","asReadOnly","result","signal","push","UserMessage"],"mappings":"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","file":"agent.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 { Workflow, WorkflowRunOptions } from \"@/workflows/workflow.js\";\nimport { Message, UserMessage } from \"@/backend/message.js\";\nimport { AnyTool } from \"@/tools/base.js\";\nimport { BaseMemory, ReadOnlyMemory } from \"@/memory/base.js\";\nimport { z } from \"zod\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { BaseAgent } from \"@/agents/base.js\";\nimport { isFunction, randomString } from \"remeda\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { ToolCallingAgent } from \"@/agents/toolCalling/agent.js\";\nimport {\n ToolCallingAgentExecutionConfig,\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOptions,\n ToolCallingAgentRunOutput,\n} from \"@/agents/toolCalling/types.js\";\n\ntype AgentInstance = BaseAgent<\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunOptions\n>;\ntype AgentFactory = (memory: ReadOnlyMemory) => AgentInstance | Promise<AgentInstance>;\ninterface AgentFactoryInput {\n name?: string;\n role?: string;\n llm: ChatModel;\n instructions?: string;\n tools?: AnyTool[];\n execution?: ToolCallingAgentExecutionConfig;\n}\n\nexport class AgentWorkflow {\n protected readonly workflow;\n\n readonly schema = z.object({\n inputs: z.array(\n z.object({\n prompt: z.string().optional(),\n context: z.string().optional(),\n expectedOutput: z.union([z.string(), z.instanceof(z.ZodSchema)]).optional(),\n }),\n ),\n\n finalAnswer: z.string().optional(),\n newMessages: z.array(z.instanceof(Message)).default([]),\n });\n\n constructor(name = \"AgentWorkflow\") {\n this.workflow = new Workflow({\n name,\n schema: this.schema,\n outputSchema: this.schema.required(),\n });\n }\n\n run(inputs: (ToolCallingAgentRunInput | Message)[], options: WorkflowRunOptions<string> = {}) {\n return this.workflow.run(\n {\n inputs: inputs.map((input) => (input instanceof Message ? { prompt: input.text } : input)),\n },\n options,\n );\n }\n\n addAgent(agent: AgentFactory | AgentFactoryInput): this;\n addAgent(agent: AgentInstance): Promise<this>;\n addAgent(agent: AgentInstance | AgentFactory | AgentFactoryInput): this | Promise<this> {\n if (agent instanceof BaseAgent) {\n return agent.clone().then((clone) => {\n const factory: AgentFactory = (memory) => {\n clone.memory = memory;\n return clone;\n };\n return this._add(clone.meta.name, factory);\n });\n }\n\n const name = agent.name || `Agent${randomString(4)}`;\n return this._add(name, isFunction(agent) ? agent : this._createFactory(agent));\n }\n\n delAgent(name: string) {\n return this.workflow.delStep(name);\n }\n\n protected _createFactory(input: AgentFactoryInput): AgentFactory {\n return (memory: BaseMemory) =>\n new ToolCallingAgent({\n llm: input.llm,\n tools: input.tools ?? [],\n memory,\n meta: {\n name: input.name || `Agent${randomString(4)}`,\n description: input.instructions ?? \"\",\n },\n execution: input.execution,\n ...(input.instructions && {\n templates: {\n system: (template) =>\n template.fork((config) => {\n config.defaults.instructions = input.instructions || config.defaults.instructions;\n config.defaults.role = input.role || config.defaults.role;\n }),\n },\n }),\n });\n }\n\n protected _add(name: string, factory: AgentFactory) {\n this.workflow.addStep(name, async (state, ctx) => {\n const memory = new UnconstrainedMemory();\n await memory.addMany(state.newMessages);\n\n const runInput = state.inputs.shift() ?? { prompt: undefined };\n const agent = await factory(memory.asReadOnly());\n const { result } = await agent.run(runInput, { signal: ctx.signal });\n state.finalAnswer = result.text;\n if (runInput.prompt) {\n state.newMessages.push(new UserMessage(runInput.prompt));\n }\n state.newMessages.push(result);\n });\n return this;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["workflow.ts"],"names":["WorkflowError","FrameworkError","constructor","message","extra","errors","context","run","isRetryable","isFatal","Workflow","Serializable","START","SELF","PREV","NEXT","END","emitter","steps","startStep","input","Map","undefined","Emitter","root","child","namespace","toCamelCase","name","filter","Boolean","creator","getSteps","Array","from","keys","schemas","pick","addStep","step","_addStep","addStrictStep","schema","schemaOrStep","stepOrEmpty","trim","ValueError","has","stepOrFlow","set","handler","asStep","setStart","state","options","RunContext","enter","signal","params","runContext","parse","result","handlers","abort","reason","next","findStep","start","current","get","emit","parseAsync","catch","err","shallowCopy","then","deepCopy","nextStepRaw","at","prev","stepResult","push","error","outputSchema","delStep","delete","overrides","ctx","mappedInput","mappedOutput","output","Object","assign","index","indexOf","createSnapshot","omit","loadSnapshot","snapshot","z","any"],"mappings":"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","file":"workflow.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 { z, ZodSchema } from \"zod\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { RunContext } from \"@/context.js\";\nimport { omit, pick, toCamelCase } from \"remeda\";\nimport { deepCopy, shallowCopy } from \"@/serializer/utils.js\";\nimport { FrameworkError, ValueError } from \"@/errors.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\ntype WorkflowStepHandlerReturn<K extends string> = K | ReservedStep | void;\n\nexport interface WorkflowRun<T extends ZodSchema, T2 extends ZodSchema, K extends string> {\n result: z.output<T2>;\n steps: WorkflowStepRes<T, K>[];\n state: z.output<T>;\n}\n\nexport interface WorkflowRunOptions<K extends string> {\n start?: K;\n signal?: AbortSignal;\n}\n\nexport interface WorkflowStepDef<T extends ZodSchema, K extends string> {\n schema: T;\n handler: WorkflowStepHandler<T, K>;\n}\n\nexport interface WorkflowStepRes<T extends ZodSchema, K extends string> {\n name: K;\n next: K | ReservedStep;\n state: z.output<T>;\n}\n\nexport interface WorkflowRunContext<T extends ZodSchema, K extends string> {\n steps: WorkflowStepRes<T, K>[];\n signal: AbortSignal;\n abort: (reason?: Error) => void;\n}\n\nexport type WorkflowStepHandler<T extends ZodSchema, K extends string> = (\n state: z.output<T>,\n context: WorkflowRunContext<T, K>,\n) => Promise<WorkflowStepHandlerReturn<K>> | WorkflowStepHandlerReturn<K>;\n\nexport interface WorkflowEvents<T extends ZodSchema, T2 extends ZodSchema, K extends string> {\n start: Callback<{ step: K; run: WorkflowRun<T, T2, K> }>;\n error: Callback<{\n step: K;\n error: Error;\n run: WorkflowRun<T, T2, K>;\n }>;\n success: Callback<{\n step: K;\n next: K | ReservedStep;\n state: z.output<T>;\n run: WorkflowRun<T, T2, K>;\n }>;\n}\n\ninterface FlowInput<TS extends ZodSchema, TS2 extends ZodSchema = TS> {\n name?: string;\n schema: TS;\n outputSchema?: TS2;\n}\n\ntype RunStep<K extends string> = K | typeof Workflow.END;\ntype ReservedStep =\n | typeof Workflow.START\n | typeof Workflow.NEXT\n | typeof Workflow.PREV\n | typeof Workflow.END\n | typeof Workflow.SELF;\nexport type FlowStepName<K extends string> = K | ReservedStep;\n\nexport class WorkflowError<\n T extends ZodSchema,\n T2 extends ZodSchema,\n K extends string,\n> extends FrameworkError {\n constructor(message: string, extra?: { run?: WorkflowRun<T, T2, K>; errors?: Error[] }) {\n super(message, extra?.errors, {\n context: extra?.run ?? {},\n isRetryable: false,\n isFatal: true,\n });\n }\n}\n\nexport class Workflow<\n TInput extends ZodSchema,\n TOutput extends ZodSchema = TInput,\n TKeys extends string = string,\n> extends Serializable {\n public static readonly START = \"__start__\";\n public static readonly SELF = \"__self__\";\n public static readonly PREV = \"__prev__\";\n public static readonly NEXT = \"__next__\";\n public static readonly END = \"__end__\";\n\n public readonly emitter: Emitter<WorkflowEvents<TInput, TOutput, TKeys>>;\n\n protected readonly steps = new Map<string, WorkflowStepDef<TInput, TKeys>>();\n protected startStep: TKeys | undefined = undefined;\n\n constructor(protected readonly input: FlowInput<TInput, TOutput>) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"workflow\", toCamelCase(input?.name ?? \"\")].filter(Boolean),\n creator: this,\n });\n }\n\n getSteps() {\n return Array.from(this.steps.keys()) as TKeys[];\n }\n\n get name() {\n return this.input.name ?? \"\";\n }\n\n get schemas() {\n return pick(this.input, [\"schema\", \"outputSchema\"]);\n }\n\n addStep<L extends string>(\n name: L,\n handler: WorkflowStepHandler<TInput | TOutput, TKeys>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStep<L extends string, TFlow extends AnyWorkflowFlow>(\n name: L,\n flow: Workflow.pipeable<this, TFlow>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStep<L extends string>(\n name: L,\n step: WorkflowStepHandler<TInput | TOutput, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n return this._addStep(name, step);\n }\n\n addStrictStep<L extends string, TI2 extends ZodSchema>(\n name: L,\n schema: TI2,\n handler: WorkflowStepHandler<TI2, TKeys>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStrictStep<L extends string, TI2 extends ZodSchema, TFlow extends AnyWorkflowFlow>(\n name: L,\n schema: TI2,\n flow: Workflow.pipeable<Workflow<TI2, TOutput, TKeys>, TFlow>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStrictStep<L extends string, TI2 extends ZodSchema>(\n name: L,\n schema: TI2,\n step: WorkflowStepHandler<TI2, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n return this._addStep(name, schema, step);\n }\n\n protected _addStep<TI2 extends ZodSchema = TInput, L extends string = TKeys>(\n name: L,\n schemaOrStep: TI2 | WorkflowStepHandler<TInput, TKeys> | AnyWorkflowFlow,\n stepOrEmpty?: WorkflowStepHandler<TI2, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n if (!name.trim()) {\n throw new ValueError(`Step name cannot be empty!`);\n }\n if (this.steps.has(name)) {\n throw new ValueError(`Step '${name}' already exists!`);\n }\n if (name === Workflow.END) {\n throw new ValueError(`The name '${name}' cannot be used!`);\n }\n\n const schema = (schemaOrStep && stepOrEmpty ? schemaOrStep : this.input.schema) as TInput;\n const stepOrFlow = stepOrEmpty || schemaOrStep;\n\n this.steps.set(name, {\n schema,\n handler: stepOrFlow instanceof Workflow ? stepOrFlow.asStep({}) : stepOrFlow,\n } as WorkflowStepDef<TInput, TKeys>);\n\n return this as unknown as Workflow<TInput, TOutput, L | TKeys>;\n }\n\n setStart(name: TKeys) {\n this.startStep = name;\n return this;\n }\n\n run(state: z.input<TInput>, options: WorkflowRunOptions<TKeys> = {}) {\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [state, options] as const },\n async (runContext): Promise<WorkflowRun<TInput, TOutput, TKeys>> => {\n const run: WorkflowRun<TInput, TOutput, TKeys> = {\n steps: [],\n state: this.input.schema.parse(state),\n result: undefined as z.output<TOutput>,\n };\n const handlers: WorkflowRunContext<TInput, TKeys> = {\n steps: run.steps,\n signal: runContext.signal,\n abort: (reason) => runContext.abort(reason),\n };\n\n let next: RunStep<TKeys> =\n this.findStep(options?.start || this.startStep || this.getSteps()[0]).current ??\n Workflow.END;\n\n while (next && next !== Workflow.END) {\n const name = next;\n const step = this.steps.get(next);\n if (!step) {\n throw new WorkflowError(`Step '${next}' was not found.`, { run });\n }\n await runContext.emitter.emit(\"start\", { run, step: next });\n try {\n const state = await step.schema\n .parseAsync(run.state)\n .catch(async (err: Error) => {\n throw new WorkflowError(\n `Step '${next}' cannot be executed because the provided input doesn't adhere to the step's schema.`,\n { run: shallowCopy(run), errors: [err] },\n );\n })\n .then(deepCopy);\n\n const nextStepRaw = await step.handler(state, handlers);\n if (nextStepRaw === Workflow.START) {\n next = run.steps.at(0)?.name!;\n } else if (nextStepRaw === Workflow.PREV) {\n next = this.findStep(next).prev;\n } else if (nextStepRaw === Workflow.SELF) {\n next = this.findStep(next).current;\n } else if (!nextStepRaw || nextStepRaw === Workflow.NEXT) {\n next = this.findStep(next).next || Workflow.END;\n } else {\n next = nextStepRaw;\n }\n\n const stepResult: WorkflowStepRes<TInput, TKeys> = {\n name,\n state,\n next,\n };\n run.steps.push(stepResult);\n run.state = stepResult.state;\n\n await runContext.emitter.emit(\"success\", {\n run: shallowCopy(run),\n state: stepResult.state,\n step: stepResult.name,\n next: stepResult.next,\n });\n } catch (error) {\n await runContext.emitter.emit(\"error\", {\n run: shallowCopy(run),\n step: next as TKeys,\n error,\n });\n throw error;\n }\n }\n\n run.result = await (this.input.outputSchema ?? this.input.schema)\n .parseAsync(run.state)\n .catch((err) => {\n throw new WorkflowError(\n `Workflow has ended but it's state does not adhere to the workflow's output schema.`,\n { run: shallowCopy(run), errors: [err] },\n );\n });\n return run;\n },\n );\n }\n\n delStep<L extends TKeys>(name: L): Workflow<TInput, TOutput, Exclude<TKeys, L>> {\n if (this.startStep === name) {\n this.startStep = undefined;\n }\n this.steps.delete(name);\n return this as unknown as Workflow<TInput, TOutput, Exclude<TKeys, L>>;\n }\n\n asStep<\n TInput2 extends ZodSchema = TInput,\n TOutput2 extends ZodSchema = TOutput,\n TKeys2 extends string = TKeys,\n >(overrides: {\n input?: (input: z.output<TInput2>) => z.output<TInput> | z.input<TInput>;\n output?: (output: z.output<TOutput>) => z.output<TOutput2> | z.input<TOutput2>;\n start?: TKeys;\n next?: FlowStepName<TKeys2>;\n }): WorkflowStepHandler<TInput2, TKeys | TKeys2> {\n return async (state, ctx) => {\n const mappedInput = overrides?.input ? overrides.input(state) : state;\n const result = await this.run(mappedInput, { start: overrides?.start, signal: ctx.signal });\n const mappedOutput = overrides?.output ? overrides.output(result.state) : result.state;\n Object.assign(state, mappedOutput);\n return overrides.next;\n };\n }\n\n protected findStep(current: TKeys) {\n const steps = this.getSteps();\n const index = steps.indexOf(current);\n return {\n prev: steps[index - 1],\n current: steps[index],\n next: steps[index + 1],\n };\n }\n\n createSnapshot() {\n return {\n input: omit(this.input, [\"schema\", \"outputSchema\"]),\n emitter: this.emitter,\n startStep: this.startStep,\n steps: this.steps,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n this.input.schema ??= z.any() as unknown as TInput;\n this.input.outputSchema ??= z.any() as unknown as TOutput;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Workflow {\n export type pipeable<T extends AnyWorkflowFlow, T2 extends AnyWorkflowFlow> =\n Workflow.state<T> extends Workflow.input<T2> ? T2 : never;\n export type input<T> = T extends Workflow<infer A, any, any> ? z.input<A> : never;\n export type state<T> = T extends Workflow<infer A, any, any> ? z.output<A> : never;\n export type output<T> = T extends Workflow<any, infer A, any> ? z.output<A> : never;\n export type run<T> = T extends Workflow<infer A, infer B, infer C> ? WorkflowRun<A, B, C> : never;\n}\n\nexport type AnyWorkflowFlow = Workflow<any, any, any>;\n"]}
1
+ {"version":3,"sources":["workflow.ts"],"names":["WorkflowError","FrameworkError","constructor","message","extra","errors","context","run","isRetryable","isFatal","Workflow","Serializable","START","SELF","PREV","NEXT","END","emitter","steps","startStep","input","Map","undefined","Emitter","root","child","namespace","toCamelCase","name","filter","Boolean","creator","getSteps","Array","from","keys","schemas","pick","addStep","step","_addStep","addStrictStep","schema","schemaOrStep","stepOrEmpty","trim","ValueError","has","stepOrFlow","set","handler","asStep","setStart","state","options","RunContext","enter","signal","params","runContext","parse","result","handlers","abort","reason","next","findStep","start","current","get","emit","parseAsync","catch","err","shallowCopy","then","deepCopy","nextStepRaw","at","prev","stepResult","push","error","outputSchema","delStep","delete","overrides","ctx","mappedInput","mappedOutput","output","Object","assign","index","indexOf","createSnapshot","omit","loadSnapshot","snapshot","z","any"],"mappings":";;;;;;;;;;;;AA0FO,MAAMA,sBAIHC,yBAAAA,CAAAA;EA9FV;;;AA+FEC,EAAAA,WAAAA,CAAYC,SAAiBC,KAA2D,EAAA;AACtF,IAAMD,KAAAA,CAAAA,OAAAA,EAASC,OAAOC,MAAQ,EAAA;MAC5BC,OAASF,EAAAA,KAAAA,EAAOG,OAAO,EAAC;MACxBC,WAAa,EAAA,KAAA;MACbC,OAAS,EAAA;KACX,CAAA;AACF;AACF;AAEO,MAAMC,iBAIHC,6BAAAA,CAAAA;EA5GV;;;;AA6GE,EAAA,OAAuBC,KAAQ,GAAA,WAAA;AAC/B,EAAA,OAAuBC,IAAO,GAAA,UAAA;AAC9B,EAAA,OAAuBC,IAAO,GAAA,UAAA;AAC9B,EAAA,OAAuBC,IAAO,GAAA,UAAA;AAC9B,EAAA,OAAuBC,GAAM,GAAA,SAAA;AAEbC,EAAAA,OAAAA;AAEGC,EAAAA,KAAAA;AACTC,EAAAA,SAAAA;AAEVjB,EAAAA,WAAAA,CAA+BkB,KAAmC,EAAA;AAChE,IAAK,KAAA,EAAA,EAAA,IADwBA,CAAAA,KAAAA,GAAAA,KAAAA,EAAAA,IAAAA,CAHZF,wBAAYG,IAAAA,GAAAA,EAAAA,EAAAA,IAAAA,CACrBF,SAA+BG,GAAAA,MAAAA;AAIvC,IAAKL,IAAAA,CAAAA,OAAAA,GAAUM,mBAAQC,CAAAA,IAAAA,CAAKC,KAAM,CAAA;MAChCC,SAAW,EAAA;AAAC,QAAA,UAAA;QAAYC,kBAAYP,CAAAA,KAAAA,EAAOQ,QAAQ,EAAA;AAAKC,OAAAA,CAAAA,MAAAA,CAAOC,OAAAA,CAAAA;MAC/DC,OAAS,EAAA;KACX,CAAA;AACF;EAEAC,QAAW,GAAA;AACT,IAAA,OAAOC,KAAMC,CAAAA,IAAAA,CAAK,IAAKhB,CAAAA,KAAAA,CAAMiB,MAAI,CAAA;AACnC;AAEA,EAAA,IAAIP,IAAO,GAAA;AACT,IAAO,OAAA,IAAA,CAAKR,MAAMQ,IAAQ,IAAA,EAAA;AAC5B;AAEA,EAAA,IAAIQ,OAAU,GAAA;AACZ,IAAOC,OAAAA,WAAAA,CAAK,KAAKjB,KAAO,EAAA;AAAC,MAAA,QAAA;AAAU,MAAA;AAAe,KAAA,CAAA;AACpD;AAUAkB,EAAAA,OAAAA,CACEV,MACAW,IACsC,EAAA;AACtC,IAAO,OAAA,IAAA,CAAKC,QAASZ,CAAAA,IAAAA,EAAMW,IAAAA,CAAAA;AAC7B;EAYAE,aACEb,CAAAA,IAAAA,EACAc,QACAH,IACsC,EAAA;AACtC,IAAA,OAAO,IAAKC,CAAAA,QAAAA,CAASZ,IAAMc,EAAAA,MAAAA,EAAQH,IAAAA,CAAAA;AACrC;EAEUC,QACRZ,CAAAA,IAAAA,EACAe,cACAC,WACsC,EAAA;AACtC,IAAI,IAAA,CAAChB,IAAKiB,CAAAA,IAAAA,EAAQ,EAAA;AAChB,MAAM,MAAA,IAAIC,sBAAW,CAA4B,0BAAA,CAAA,CAAA;AACnD;AACA,IAAA,IAAI,IAAK5B,CAAAA,KAAAA,CAAM6B,GAAInB,CAAAA,IAAAA,CAAO,EAAA;AACxB,MAAA,MAAM,IAAIkB,qBAAAA,CAAW,CAASlB,MAAAA,EAAAA,IAAAA,CAAuB,iBAAA,CAAA,CAAA;AACvD;AACA,IAAIA,IAAAA,IAAAA,KAASlB,SAASM,GAAK,EAAA;AACzB,MAAA,MAAM,IAAI8B,qBAAAA,CAAW,CAAalB,UAAAA,EAAAA,IAAAA,CAAuB,iBAAA,CAAA,CAAA;AAC3D;AAEA,IAAA,MAAMc,MAAUC,GAAAA,YAAAA,IAAgBC,WAAcD,GAAAA,YAAAA,GAAe,KAAKvB,KAAMsB,CAAAA,MAAAA;AACxE,IAAA,MAAMM,aAAaJ,WAAeD,IAAAA,YAAAA;AAElC,IAAKzB,IAAAA,CAAAA,KAAAA,CAAM+B,IAAIrB,IAAM,EAAA;AACnBc,MAAAA,MAAAA;AACAQ,MAAAA,OAAAA,EAASF,sBAAsBtC,QAAWsC,GAAAA,UAAAA,CAAWG,MAAO,CAAA,EAAC,CAAKH,GAAAA;KACpE,CAAA;AAEA,IAAO,OAAA,IAAA;AACT;AAEAI,EAAAA,QAAAA,CAASxB,IAAa,EAAA;AACpB,IAAA,IAAA,CAAKT,SAAYS,GAAAA,IAAAA;AACjB,IAAO,OAAA,IAAA;AACT;EAEArB,GAAI8C,CAAAA,KAAAA,EAAwBC,OAAqC,GAAA,EAAI,EAAA;AACnE,IAAOC,OAAAA,sBAAAA,CAAWC,MAChB,IACA,EAAA;AAAEC,MAAAA,MAAAA,EAAQH,OAASG,EAAAA,MAAAA;MAAQC,MAAQ,EAAA;AAACL,QAAAA,KAAAA;AAAOC,QAAAA;;AAAkB,KAAA,EAC7D,OAAOK,UAAAA,KAAAA;AACL,MAAA,MAAMpD,GAA2C,GAAA;AAC/CW,QAAAA,KAAAA,EAAO,EAAA;AACPmC,QAAAA,KAAAA,EAAO,IAAKjC,CAAAA,KAAAA,CAAMsB,MAAOkB,CAAAA,KAAAA,CAAMP,KAAAA,CAAAA;QAC/BQ,MAAQvC,EAAAA;AACV,OAAA;AACA,MAAA,MAAMwC,QAA8C,GAAA;AAClD5C,QAAAA,KAAAA,EAAOX,GAAIW,CAAAA,KAAAA;AACXuC,QAAAA,MAAAA,EAAQE,UAAWF,CAAAA,MAAAA;AACnBM,QAAAA,KAAAA,kBAAQC,MAAAA,CAAAA,CAAAA,MAAAA,KAAWL,UAAWI,CAAAA,KAAAA,CAAMC,MAAAA,CAA7B,EAAA,OAAA;AACT,OAAA;AAEA,MAAA,IAAIC,IACF,GAAA,IAAA,CAAKC,QAASZ,CAAAA,OAAAA,EAASa,SAAS,IAAKhD,CAAAA,SAAAA,IAAa,IAAKa,CAAAA,QAAAA,EAAW,CAAA,CAAA,CAAE,CAAA,CAAEoC,WACtE1D,QAASM,CAAAA,GAAAA;AAEX,MAAOiD,OAAAA,IAAAA,IAAQA,IAASvD,KAAAA,QAAAA,CAASM,GAAK,EAAA;AACpC,QAAA,MAAMY,IAAOqC,GAAAA,IAAAA;AACb,QAAA,MAAM1B,IAAO,GAAA,IAAA,CAAKrB,KAAMmD,CAAAA,GAAAA,CAAIJ,IAAAA,CAAAA;AAC5B,QAAA,IAAI,CAAC1B,IAAM,EAAA;AACT,UAAA,MAAM,IAAIvC,aAAAA,CAAc,CAASiE,MAAAA,EAAAA,IAAAA,CAAwB,gBAAA,CAAA,EAAA;AAAE1D,YAAAA;WAAI,CAAA;AACjE;AACA,QAAMoD,MAAAA,UAAAA,CAAW1C,OAAQqD,CAAAA,IAAAA,CAAK,OAAS,EAAA;AAAE/D,UAAAA,GAAAA;UAAKgC,IAAM0B,EAAAA;SAAK,CAAA;AACzD,QAAI,IAAA;AACF,UAAMZ,MAAAA,MAAAA,GAAQ,MAAMd,IAAAA,CAAKG,MACtB6B,CAAAA,UAAAA,CAAWhE,IAAI8C,KAAK,CAAA,CACpBmB,KAAM,CAAA,OAAOC,GAAAA,KAAAA;AACZ,YAAA,MAAM,IAAIzE,aAAAA,CACR,CAASiE,MAAAA,EAAAA,IAAAA,CACT,oFAAA,CAAA,EAAA;AAAE1D,cAAAA,GAAAA,EAAKmE,sBAAYnE,GAAAA,CAAAA;cAAMF,MAAQ,EAAA;AAACoE,gBAAAA;;aAAK,CAAA;WAE3C,CAAA,CACCE,KAAKC,kBAAAA,CAAAA;AAER,UAAA,MAAMC,WAAc,GAAA,MAAMtC,IAAKW,CAAAA,OAAAA,CAAQG,QAAOS,QAAAA,CAAAA;AAC9C,UAAIe,IAAAA,WAAAA,KAAgBnE,SAASE,KAAO,EAAA;AAClCqD,YAAAA,IAAAA,GAAO1D,GAAIW,CAAAA,KAAAA,CAAM4D,EAAG,CAAA,CAAA,CAAIlD,EAAAA,IAAAA;WACfiD,MAAAA,IAAAA,WAAAA,KAAgBnE,SAASI,IAAM,EAAA;AACxCmD,YAAO,IAAA,GAAA,IAAA,CAAKC,QAASD,CAAAA,IAAAA,CAAMc,CAAAA,IAAAA;WAClBF,MAAAA,IAAAA,WAAAA,KAAgBnE,SAASG,IAAM,EAAA;AACxCoD,YAAO,IAAA,GAAA,IAAA,CAAKC,QAASD,CAAAA,IAAAA,CAAMG,CAAAA,OAAAA;AAC7B,WAAA,MAAA,IAAW,CAACS,WAAAA,IAAeA,WAAgBnE,KAAAA,QAAAA,CAASK,IAAM,EAAA;AACxDkD,YAAAA,IAAAA,GAAO,IAAKC,CAAAA,QAAAA,CAASD,IAAAA,CAAAA,CAAMA,QAAQvD,QAASM,CAAAA,GAAAA;WACvC,MAAA;AACLiD,YAAOY,IAAAA,GAAAA,WAAAA;AACT;AAEA,UAAA,MAAMG,UAA6C,GAAA;AACjDpD,YAAAA,IAAAA;YACAyB,KAAAA,EAAAA,MAAAA;AACAY,YAAAA;AACF,WAAA;AACA1D,UAAIW,GAAAA,CAAAA,KAAAA,CAAM+D,KAAKD,UAAAA,CAAAA;AACfzE,UAAAA,GAAAA,CAAI8C,QAAQ2B,UAAW3B,CAAAA,KAAAA;AAEvB,UAAMM,MAAAA,UAAAA,CAAW1C,OAAQqD,CAAAA,IAAAA,CAAK,SAAW,EAAA;AACvC/D,YAAAA,GAAAA,EAAKmE,sBAAYnE,GAAAA,CAAAA;AACjB8C,YAAAA,KAAAA,EAAO2B,UAAW3B,CAAAA,KAAAA;AAClBd,YAAAA,IAAAA,EAAMyC,UAAWpD,CAAAA,IAAAA;AACjBqC,YAAAA,IAAAA,EAAMe,UAAWf,CAAAA;WACnB,CAAA;AACF,SAAA,CAAA,OAASiB,KAAO,EAAA;AACd,UAAMvB,MAAAA,UAAAA,CAAW1C,OAAQqD,CAAAA,IAAAA,CAAK,OAAS,EAAA;AACrC/D,YAAAA,GAAAA,EAAKmE,sBAAYnE,GAAAA,CAAAA;YACjBgC,IAAM0B,EAAAA,IAAAA;AACNiB,YAAAA;WACF,CAAA;AACA,UAAMA,MAAAA,KAAAA;AACR;AACF;AAEA3E,MAAAA,GAAAA,CAAIsD,MAAS,GAAA,MAAA,CAAO,IAAKzC,CAAAA,KAAAA,CAAM+D,gBAAgB,IAAK/D,CAAAA,KAAAA,CAAMsB,MACvD6B,EAAAA,UAAAA,CAAWhE,GAAI8C,CAAAA,KAAK,CACpBmB,CAAAA,KAAAA,CAAM,CAACC,GAAAA,KAAAA;AACN,QAAM,MAAA,IAAIzE,cACR,CACA,kFAAA,CAAA,EAAA;AAAEO,UAAAA,GAAAA,EAAKmE,sBAAYnE,GAAAA,CAAAA;UAAMF,MAAQ,EAAA;AAACoE,YAAAA;;SAAK,CAAA;OAE3C,CAAA;AACF,MAAOlE,OAAAA,GAAAA;KACT,CAAA;AAEJ;AAEA6E,EAAAA,OAAAA,CAAyBxD,IAAuD,EAAA;AAC9E,IAAI,IAAA,IAAA,CAAKT,cAAcS,IAAM,EAAA;AAC3B,MAAA,IAAA,CAAKT,SAAYG,GAAAA,MAAAA;AACnB;AACA,IAAKJ,IAAAA,CAAAA,KAAAA,CAAMmE,OAAOzD,IAAAA,CAAAA;AAClB,IAAO,OAAA,IAAA;AACT;AAEAuB,EAAAA,MAAAA,CAIEmC,SAK+C,EAAA;AAC/C,IAAO,OAAA,OAAOjC,OAAOkC,GAAAA,KAAAA;AACnB,MAAA,MAAMC,cAAcF,SAAWlE,EAAAA,KAAAA,GAAQkE,SAAUlE,CAAAA,KAAAA,CAAMiC,KAAAA,CAASA,GAAAA,KAAAA;AAChE,MAAA,MAAMQ,MAAS,GAAA,MAAM,IAAKtD,CAAAA,GAAAA,CAAIiF,WAAa,EAAA;AAAErB,QAAAA,KAAAA,EAAOmB,SAAWnB,EAAAA,KAAAA;AAAOV,QAAAA,MAAAA,EAAQ8B,GAAI9B,CAAAA;OAAO,CAAA;AACzF,MAAMgC,MAAAA,YAAAA,GAAeH,WAAWI,MAASJ,GAAAA,SAAAA,CAAUI,OAAO7B,MAAOR,CAAAA,KAAK,IAAIQ,MAAOR,CAAAA,KAAAA;AACjFsC,MAAOC,MAAAA,CAAAA,MAAAA,CAAOvC,OAAOoC,YAAAA,CAAAA;AACrB,MAAA,OAAOH,SAAUrB,CAAAA,IAAAA;AACnB,KAAA;AACF;AAEUC,EAAAA,QAAAA,CAASE,OAAgB,EAAA;AACjC,IAAMlD,MAAAA,KAAAA,GAAQ,KAAKc,QAAQ,EAAA;AAC3B,IAAM6D,MAAAA,KAAAA,GAAQ3E,KAAM4E,CAAAA,OAAAA,CAAQ1B,OAAAA,CAAAA;AAC5B,IAAO,OAAA;MACLW,IAAM7D,EAAAA,KAAAA,CAAM2E,QAAQ,CAAA,CAAA;AACpBzB,MAAAA,OAAAA,EAASlD,MAAM2E,KAAAA,CAAAA;MACf5B,IAAM/C,EAAAA,KAAAA,CAAM2E,QAAQ,CAAA;AACtB,KAAA;AACF;EAEAE,cAAiB,GAAA;AACf,IAAO,OAAA;MACL3E,KAAO4E,EAAAA,WAAAA,CAAK,KAAK5E,KAAO,EAAA;AAAC,QAAA,QAAA;AAAU,QAAA;AAAe,OAAA,CAAA;AAClDH,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdE,MAAAA,SAAAA,EAAW,IAAKA,CAAAA,SAAAA;AAChBD,MAAAA,KAAAA,EAAO,IAAKA,CAAAA;AACd,KAAA;AACF;AAEA+E,EAAAA,YAAAA,CAAaC,QAAkD,EAAA;AAC7DP,IAAOC,MAAAA,CAAAA,MAAAA,CAAO,MAAMM,QAAAA,CAAAA;AACpB,IAAK9E,IAAAA,CAAAA,KAAAA,CAAMsB,MAAWyD,KAAAA,KAAAA,CAAEC,GAAG,EAAA;AAC3B,IAAKhF,IAAAA,CAAAA,KAAAA,CAAM+D,YAAiBgB,KAAAA,KAAAA,CAAEC,GAAG,EAAA;AACnC;AACF","file":"workflow.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 { z, ZodSchema } from \"zod\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { RunContext } from \"@/context.js\";\nimport { omit, pick, toCamelCase } from \"remeda\";\nimport { deepCopy, shallowCopy } from \"@/serializer/utils.js\";\nimport { FrameworkError, ValueError } from \"@/errors.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\ntype WorkflowStepHandlerReturn<K extends string> = K | ReservedStep | void;\n\nexport interface WorkflowRun<T extends ZodSchema, T2 extends ZodSchema, K extends string> {\n result: z.output<T2>;\n steps: WorkflowStepRes<T, K>[];\n state: z.output<T>;\n}\n\nexport interface WorkflowRunOptions<K extends string> {\n start?: K;\n signal?: AbortSignal;\n}\n\nexport interface WorkflowStepDef<T extends ZodSchema, K extends string> {\n schema: T;\n handler: WorkflowStepHandler<T, K>;\n}\n\nexport interface WorkflowStepRes<T extends ZodSchema, K extends string> {\n name: K;\n next: K | ReservedStep;\n state: z.output<T>;\n}\n\nexport interface WorkflowRunContext<T extends ZodSchema, K extends string> {\n steps: WorkflowStepRes<T, K>[];\n signal: AbortSignal;\n abort: (reason?: Error) => void;\n}\n\nexport type WorkflowStepHandler<T extends ZodSchema, K extends string> = (\n state: z.output<T>,\n context: WorkflowRunContext<T, K>,\n) => Promise<WorkflowStepHandlerReturn<K>> | WorkflowStepHandlerReturn<K>;\n\nexport interface WorkflowEvents<T extends ZodSchema, T2 extends ZodSchema, K extends string> {\n start: Callback<{ step: K; run: WorkflowRun<T, T2, K> }>;\n error: Callback<{\n step: K;\n error: Error;\n run: WorkflowRun<T, T2, K>;\n }>;\n success: Callback<{\n step: K;\n next: K | ReservedStep;\n state: z.output<T>;\n run: WorkflowRun<T, T2, K>;\n }>;\n}\n\ninterface FlowInput<TS extends ZodSchema, TS2 extends ZodSchema = TS> {\n name?: string;\n schema: TS;\n outputSchema?: TS2;\n}\n\ntype RunStep<K extends string> = K | typeof Workflow.END;\ntype ReservedStep =\n | typeof Workflow.START\n | typeof Workflow.NEXT\n | typeof Workflow.PREV\n | typeof Workflow.END\n | typeof Workflow.SELF;\nexport type FlowStepName<K extends string> = K | ReservedStep;\n\nexport class WorkflowError<\n T extends ZodSchema,\n T2 extends ZodSchema,\n K extends string,\n> extends FrameworkError {\n constructor(message: string, extra?: { run?: WorkflowRun<T, T2, K>; errors?: Error[] }) {\n super(message, extra?.errors, {\n context: extra?.run ?? {},\n isRetryable: false,\n isFatal: true,\n });\n }\n}\n\nexport class Workflow<\n TInput extends ZodSchema,\n TOutput extends ZodSchema = TInput,\n TKeys extends string = string,\n> extends Serializable {\n public static readonly START = \"__start__\";\n public static readonly SELF = \"__self__\";\n public static readonly PREV = \"__prev__\";\n public static readonly NEXT = \"__next__\";\n public static readonly END = \"__end__\";\n\n public readonly emitter: Emitter<WorkflowEvents<TInput, TOutput, TKeys>>;\n\n protected readonly steps = new Map<string, WorkflowStepDef<TInput, TKeys>>();\n protected startStep: TKeys | undefined = undefined;\n\n constructor(protected readonly input: FlowInput<TInput, TOutput>) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"workflow\", toCamelCase(input?.name ?? \"\")].filter(Boolean),\n creator: this,\n });\n }\n\n getSteps() {\n return Array.from(this.steps.keys()) as TKeys[];\n }\n\n get name() {\n return this.input.name ?? \"\";\n }\n\n get schemas() {\n return pick(this.input, [\"schema\", \"outputSchema\"]);\n }\n\n addStep<L extends string>(\n name: L,\n handler: WorkflowStepHandler<TInput | TOutput, TKeys>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStep<L extends string, TFlow extends AnyWorkflowFlow>(\n name: L,\n flow: Workflow.pipeable<this, TFlow>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStep<L extends string>(\n name: L,\n step: WorkflowStepHandler<TInput | TOutput, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n return this._addStep(name, step);\n }\n\n addStrictStep<L extends string, TI2 extends ZodSchema>(\n name: L,\n schema: TI2,\n handler: WorkflowStepHandler<TI2, TKeys>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStrictStep<L extends string, TI2 extends ZodSchema, TFlow extends AnyWorkflowFlow>(\n name: L,\n schema: TI2,\n flow: Workflow.pipeable<Workflow<TI2, TOutput, TKeys>, TFlow>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStrictStep<L extends string, TI2 extends ZodSchema>(\n name: L,\n schema: TI2,\n step: WorkflowStepHandler<TI2, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n return this._addStep(name, schema, step);\n }\n\n protected _addStep<TI2 extends ZodSchema = TInput, L extends string = TKeys>(\n name: L,\n schemaOrStep: TI2 | WorkflowStepHandler<TInput, TKeys> | AnyWorkflowFlow,\n stepOrEmpty?: WorkflowStepHandler<TI2, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n if (!name.trim()) {\n throw new ValueError(`Step name cannot be empty!`);\n }\n if (this.steps.has(name)) {\n throw new ValueError(`Step '${name}' already exists!`);\n }\n if (name === Workflow.END) {\n throw new ValueError(`The name '${name}' cannot be used!`);\n }\n\n const schema = (schemaOrStep && stepOrEmpty ? schemaOrStep : this.input.schema) as TInput;\n const stepOrFlow = stepOrEmpty || schemaOrStep;\n\n this.steps.set(name, {\n schema,\n handler: stepOrFlow instanceof Workflow ? stepOrFlow.asStep({}) : stepOrFlow,\n } as WorkflowStepDef<TInput, TKeys>);\n\n return this as unknown as Workflow<TInput, TOutput, L | TKeys>;\n }\n\n setStart(name: TKeys) {\n this.startStep = name;\n return this;\n }\n\n run(state: z.input<TInput>, options: WorkflowRunOptions<TKeys> = {}) {\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [state, options] as const },\n async (runContext): Promise<WorkflowRun<TInput, TOutput, TKeys>> => {\n const run: WorkflowRun<TInput, TOutput, TKeys> = {\n steps: [],\n state: this.input.schema.parse(state),\n result: undefined as z.output<TOutput>,\n };\n const handlers: WorkflowRunContext<TInput, TKeys> = {\n steps: run.steps,\n signal: runContext.signal,\n abort: (reason) => runContext.abort(reason),\n };\n\n let next: RunStep<TKeys> =\n this.findStep(options?.start || this.startStep || this.getSteps()[0]).current ??\n Workflow.END;\n\n while (next && next !== Workflow.END) {\n const name = next;\n const step = this.steps.get(next);\n if (!step) {\n throw new WorkflowError(`Step '${next}' was not found.`, { run });\n }\n await runContext.emitter.emit(\"start\", { run, step: next });\n try {\n const state = await step.schema\n .parseAsync(run.state)\n .catch(async (err: Error) => {\n throw new WorkflowError(\n `Step '${next}' cannot be executed because the provided input doesn't adhere to the step's schema.`,\n { run: shallowCopy(run), errors: [err] },\n );\n })\n .then(deepCopy);\n\n const nextStepRaw = await step.handler(state, handlers);\n if (nextStepRaw === Workflow.START) {\n next = run.steps.at(0)?.name!;\n } else if (nextStepRaw === Workflow.PREV) {\n next = this.findStep(next).prev;\n } else if (nextStepRaw === Workflow.SELF) {\n next = this.findStep(next).current;\n } else if (!nextStepRaw || nextStepRaw === Workflow.NEXT) {\n next = this.findStep(next).next || Workflow.END;\n } else {\n next = nextStepRaw;\n }\n\n const stepResult: WorkflowStepRes<TInput, TKeys> = {\n name,\n state,\n next,\n };\n run.steps.push(stepResult);\n run.state = stepResult.state;\n\n await runContext.emitter.emit(\"success\", {\n run: shallowCopy(run),\n state: stepResult.state,\n step: stepResult.name,\n next: stepResult.next,\n });\n } catch (error) {\n await runContext.emitter.emit(\"error\", {\n run: shallowCopy(run),\n step: next as TKeys,\n error,\n });\n throw error;\n }\n }\n\n run.result = await (this.input.outputSchema ?? this.input.schema)\n .parseAsync(run.state)\n .catch((err) => {\n throw new WorkflowError(\n `Workflow has ended but it's state does not adhere to the workflow's output schema.`,\n { run: shallowCopy(run), errors: [err] },\n );\n });\n return run;\n },\n );\n }\n\n delStep<L extends TKeys>(name: L): Workflow<TInput, TOutput, Exclude<TKeys, L>> {\n if (this.startStep === name) {\n this.startStep = undefined;\n }\n this.steps.delete(name);\n return this as unknown as Workflow<TInput, TOutput, Exclude<TKeys, L>>;\n }\n\n asStep<\n TInput2 extends ZodSchema = TInput,\n TOutput2 extends ZodSchema = TOutput,\n TKeys2 extends string = TKeys,\n >(overrides: {\n input?: (input: z.output<TInput2>) => z.output<TInput> | z.input<TInput>;\n output?: (output: z.output<TOutput>) => z.output<TOutput2> | z.input<TOutput2>;\n start?: TKeys;\n next?: FlowStepName<TKeys2>;\n }): WorkflowStepHandler<TInput2, TKeys | TKeys2> {\n return async (state, ctx) => {\n const mappedInput = overrides?.input ? overrides.input(state) : state;\n const result = await this.run(mappedInput, { start: overrides?.start, signal: ctx.signal });\n const mappedOutput = overrides?.output ? overrides.output(result.state) : result.state;\n Object.assign(state, mappedOutput);\n return overrides.next;\n };\n }\n\n protected findStep(current: TKeys) {\n const steps = this.getSteps();\n const index = steps.indexOf(current);\n return {\n prev: steps[index - 1],\n current: steps[index],\n next: steps[index + 1],\n };\n }\n\n createSnapshot() {\n return {\n input: omit(this.input, [\"schema\", \"outputSchema\"]),\n emitter: this.emitter,\n startStep: this.startStep,\n steps: this.steps,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n this.input.schema ??= z.any() as unknown as TInput;\n this.input.outputSchema ??= z.any() as unknown as TOutput;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Workflow {\n export type pipeable<T extends AnyWorkflowFlow, T2 extends AnyWorkflowFlow> =\n Workflow.state<T> extends Workflow.input<T2> ? T2 : never;\n export type input<T> = T extends Workflow<infer A, any, any> ? z.input<A> : never;\n export type state<T> = T extends Workflow<infer A, any, any> ? z.output<A> : never;\n export type output<T> = T extends Workflow<any, infer A, any> ? z.output<A> : never;\n export type run<T> = T extends Workflow<infer A, infer B, infer C> ? WorkflowRun<A, B, C> : never;\n}\n\nexport type AnyWorkflowFlow = Workflow<any, any, any>;\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Run } from '../context.cjs';
2
2
  import { ZodSchema, z } from 'zod';
3
3
  import { Serializable } from '../internals/serializable.cjs';
4
- import { E as Emitter, C as Callback } from '../emitter-C9EN5B0j.cjs';
4
+ import { E as Emitter, C as Callback } from '../emitter-D5Mu0EEH.cjs';
5
5
  import { FrameworkError } from '../errors.cjs';
6
6
  import '../internals/helpers/promise.cjs';
7
7
  import '../internals/types.cjs';
@@ -1,7 +1,7 @@
1
1
  import { Run } from '../context.js';
2
2
  import { ZodSchema, z } from 'zod';
3
3
  import { Serializable } from '../internals/serializable.js';
4
- import { E as Emitter, C as Callback } from '../emitter-BxVxGBbJ.js';
4
+ import { E as Emitter, C as Callback } from '../emitter-C3dO-s2P.js';
5
5
  import { FrameworkError } from '../errors.js';
6
6
  import '../internals/helpers/promise.js';
7
7
  import '../internals/types.js';
@@ -1 +1 @@
1
- {"version":3,"sources":["workflow.ts"],"names":["WorkflowError","FrameworkError","constructor","message","extra","errors","context","run","isRetryable","isFatal","Workflow","Serializable","START","SELF","PREV","NEXT","END","emitter","steps","startStep","input","Map","undefined","Emitter","root","child","namespace","toCamelCase","name","filter","Boolean","creator","getSteps","Array","from","keys","schemas","pick","addStep","step","_addStep","addStrictStep","schema","schemaOrStep","stepOrEmpty","trim","ValueError","has","stepOrFlow","set","handler","asStep","setStart","state","options","RunContext","enter","signal","params","runContext","parse","result","handlers","abort","reason","next","findStep","start","current","get","emit","parseAsync","catch","err","shallowCopy","then","deepCopy","nextStepRaw","at","prev","stepResult","push","error","outputSchema","delStep","delete","overrides","ctx","mappedInput","mappedOutput","output","Object","assign","index","indexOf","createSnapshot","omit","loadSnapshot","snapshot","z","any"],"mappings":"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","file":"workflow.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 { z, ZodSchema } from \"zod\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { RunContext } from \"@/context.js\";\nimport { omit, pick, toCamelCase } from \"remeda\";\nimport { deepCopy, shallowCopy } from \"@/serializer/utils.js\";\nimport { FrameworkError, ValueError } from \"@/errors.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\ntype WorkflowStepHandlerReturn<K extends string> = K | ReservedStep | void;\n\nexport interface WorkflowRun<T extends ZodSchema, T2 extends ZodSchema, K extends string> {\n result: z.output<T2>;\n steps: WorkflowStepRes<T, K>[];\n state: z.output<T>;\n}\n\nexport interface WorkflowRunOptions<K extends string> {\n start?: K;\n signal?: AbortSignal;\n}\n\nexport interface WorkflowStepDef<T extends ZodSchema, K extends string> {\n schema: T;\n handler: WorkflowStepHandler<T, K>;\n}\n\nexport interface WorkflowStepRes<T extends ZodSchema, K extends string> {\n name: K;\n next: K | ReservedStep;\n state: z.output<T>;\n}\n\nexport interface WorkflowRunContext<T extends ZodSchema, K extends string> {\n steps: WorkflowStepRes<T, K>[];\n signal: AbortSignal;\n abort: (reason?: Error) => void;\n}\n\nexport type WorkflowStepHandler<T extends ZodSchema, K extends string> = (\n state: z.output<T>,\n context: WorkflowRunContext<T, K>,\n) => Promise<WorkflowStepHandlerReturn<K>> | WorkflowStepHandlerReturn<K>;\n\nexport interface WorkflowEvents<T extends ZodSchema, T2 extends ZodSchema, K extends string> {\n start: Callback<{ step: K; run: WorkflowRun<T, T2, K> }>;\n error: Callback<{\n step: K;\n error: Error;\n run: WorkflowRun<T, T2, K>;\n }>;\n success: Callback<{\n step: K;\n next: K | ReservedStep;\n state: z.output<T>;\n run: WorkflowRun<T, T2, K>;\n }>;\n}\n\ninterface FlowInput<TS extends ZodSchema, TS2 extends ZodSchema = TS> {\n name?: string;\n schema: TS;\n outputSchema?: TS2;\n}\n\ntype RunStep<K extends string> = K | typeof Workflow.END;\ntype ReservedStep =\n | typeof Workflow.START\n | typeof Workflow.NEXT\n | typeof Workflow.PREV\n | typeof Workflow.END\n | typeof Workflow.SELF;\nexport type FlowStepName<K extends string> = K | ReservedStep;\n\nexport class WorkflowError<\n T extends ZodSchema,\n T2 extends ZodSchema,\n K extends string,\n> extends FrameworkError {\n constructor(message: string, extra?: { run?: WorkflowRun<T, T2, K>; errors?: Error[] }) {\n super(message, extra?.errors, {\n context: extra?.run ?? {},\n isRetryable: false,\n isFatal: true,\n });\n }\n}\n\nexport class Workflow<\n TInput extends ZodSchema,\n TOutput extends ZodSchema = TInput,\n TKeys extends string = string,\n> extends Serializable {\n public static readonly START = \"__start__\";\n public static readonly SELF = \"__self__\";\n public static readonly PREV = \"__prev__\";\n public static readonly NEXT = \"__next__\";\n public static readonly END = \"__end__\";\n\n public readonly emitter: Emitter<WorkflowEvents<TInput, TOutput, TKeys>>;\n\n protected readonly steps = new Map<string, WorkflowStepDef<TInput, TKeys>>();\n protected startStep: TKeys | undefined = undefined;\n\n constructor(protected readonly input: FlowInput<TInput, TOutput>) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"workflow\", toCamelCase(input?.name ?? \"\")].filter(Boolean),\n creator: this,\n });\n }\n\n getSteps() {\n return Array.from(this.steps.keys()) as TKeys[];\n }\n\n get name() {\n return this.input.name ?? \"\";\n }\n\n get schemas() {\n return pick(this.input, [\"schema\", \"outputSchema\"]);\n }\n\n addStep<L extends string>(\n name: L,\n handler: WorkflowStepHandler<TInput | TOutput, TKeys>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStep<L extends string, TFlow extends AnyWorkflowFlow>(\n name: L,\n flow: Workflow.pipeable<this, TFlow>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStep<L extends string>(\n name: L,\n step: WorkflowStepHandler<TInput | TOutput, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n return this._addStep(name, step);\n }\n\n addStrictStep<L extends string, TI2 extends ZodSchema>(\n name: L,\n schema: TI2,\n handler: WorkflowStepHandler<TI2, TKeys>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStrictStep<L extends string, TI2 extends ZodSchema, TFlow extends AnyWorkflowFlow>(\n name: L,\n schema: TI2,\n flow: Workflow.pipeable<Workflow<TI2, TOutput, TKeys>, TFlow>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStrictStep<L extends string, TI2 extends ZodSchema>(\n name: L,\n schema: TI2,\n step: WorkflowStepHandler<TI2, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n return this._addStep(name, schema, step);\n }\n\n protected _addStep<TI2 extends ZodSchema = TInput, L extends string = TKeys>(\n name: L,\n schemaOrStep: TI2 | WorkflowStepHandler<TInput, TKeys> | AnyWorkflowFlow,\n stepOrEmpty?: WorkflowStepHandler<TI2, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n if (!name.trim()) {\n throw new ValueError(`Step name cannot be empty!`);\n }\n if (this.steps.has(name)) {\n throw new ValueError(`Step '${name}' already exists!`);\n }\n if (name === Workflow.END) {\n throw new ValueError(`The name '${name}' cannot be used!`);\n }\n\n const schema = (schemaOrStep && stepOrEmpty ? schemaOrStep : this.input.schema) as TInput;\n const stepOrFlow = stepOrEmpty || schemaOrStep;\n\n this.steps.set(name, {\n schema,\n handler: stepOrFlow instanceof Workflow ? stepOrFlow.asStep({}) : stepOrFlow,\n } as WorkflowStepDef<TInput, TKeys>);\n\n return this as unknown as Workflow<TInput, TOutput, L | TKeys>;\n }\n\n setStart(name: TKeys) {\n this.startStep = name;\n return this;\n }\n\n run(state: z.input<TInput>, options: WorkflowRunOptions<TKeys> = {}) {\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [state, options] as const },\n async (runContext): Promise<WorkflowRun<TInput, TOutput, TKeys>> => {\n const run: WorkflowRun<TInput, TOutput, TKeys> = {\n steps: [],\n state: this.input.schema.parse(state),\n result: undefined as z.output<TOutput>,\n };\n const handlers: WorkflowRunContext<TInput, TKeys> = {\n steps: run.steps,\n signal: runContext.signal,\n abort: (reason) => runContext.abort(reason),\n };\n\n let next: RunStep<TKeys> =\n this.findStep(options?.start || this.startStep || this.getSteps()[0]).current ??\n Workflow.END;\n\n while (next && next !== Workflow.END) {\n const name = next;\n const step = this.steps.get(next);\n if (!step) {\n throw new WorkflowError(`Step '${next}' was not found.`, { run });\n }\n await runContext.emitter.emit(\"start\", { run, step: next });\n try {\n const state = await step.schema\n .parseAsync(run.state)\n .catch(async (err: Error) => {\n throw new WorkflowError(\n `Step '${next}' cannot be executed because the provided input doesn't adhere to the step's schema.`,\n { run: shallowCopy(run), errors: [err] },\n );\n })\n .then(deepCopy);\n\n const nextStepRaw = await step.handler(state, handlers);\n if (nextStepRaw === Workflow.START) {\n next = run.steps.at(0)?.name!;\n } else if (nextStepRaw === Workflow.PREV) {\n next = this.findStep(next).prev;\n } else if (nextStepRaw === Workflow.SELF) {\n next = this.findStep(next).current;\n } else if (!nextStepRaw || nextStepRaw === Workflow.NEXT) {\n next = this.findStep(next).next || Workflow.END;\n } else {\n next = nextStepRaw;\n }\n\n const stepResult: WorkflowStepRes<TInput, TKeys> = {\n name,\n state,\n next,\n };\n run.steps.push(stepResult);\n run.state = stepResult.state;\n\n await runContext.emitter.emit(\"success\", {\n run: shallowCopy(run),\n state: stepResult.state,\n step: stepResult.name,\n next: stepResult.next,\n });\n } catch (error) {\n await runContext.emitter.emit(\"error\", {\n run: shallowCopy(run),\n step: next as TKeys,\n error,\n });\n throw error;\n }\n }\n\n run.result = await (this.input.outputSchema ?? this.input.schema)\n .parseAsync(run.state)\n .catch((err) => {\n throw new WorkflowError(\n `Workflow has ended but it's state does not adhere to the workflow's output schema.`,\n { run: shallowCopy(run), errors: [err] },\n );\n });\n return run;\n },\n );\n }\n\n delStep<L extends TKeys>(name: L): Workflow<TInput, TOutput, Exclude<TKeys, L>> {\n if (this.startStep === name) {\n this.startStep = undefined;\n }\n this.steps.delete(name);\n return this as unknown as Workflow<TInput, TOutput, Exclude<TKeys, L>>;\n }\n\n asStep<\n TInput2 extends ZodSchema = TInput,\n TOutput2 extends ZodSchema = TOutput,\n TKeys2 extends string = TKeys,\n >(overrides: {\n input?: (input: z.output<TInput2>) => z.output<TInput> | z.input<TInput>;\n output?: (output: z.output<TOutput>) => z.output<TOutput2> | z.input<TOutput2>;\n start?: TKeys;\n next?: FlowStepName<TKeys2>;\n }): WorkflowStepHandler<TInput2, TKeys | TKeys2> {\n return async (state, ctx) => {\n const mappedInput = overrides?.input ? overrides.input(state) : state;\n const result = await this.run(mappedInput, { start: overrides?.start, signal: ctx.signal });\n const mappedOutput = overrides?.output ? overrides.output(result.state) : result.state;\n Object.assign(state, mappedOutput);\n return overrides.next;\n };\n }\n\n protected findStep(current: TKeys) {\n const steps = this.getSteps();\n const index = steps.indexOf(current);\n return {\n prev: steps[index - 1],\n current: steps[index],\n next: steps[index + 1],\n };\n }\n\n createSnapshot() {\n return {\n input: omit(this.input, [\"schema\", \"outputSchema\"]),\n emitter: this.emitter,\n startStep: this.startStep,\n steps: this.steps,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n this.input.schema ??= z.any() as unknown as TInput;\n this.input.outputSchema ??= z.any() as unknown as TOutput;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Workflow {\n export type pipeable<T extends AnyWorkflowFlow, T2 extends AnyWorkflowFlow> =\n Workflow.state<T> extends Workflow.input<T2> ? T2 : never;\n export type input<T> = T extends Workflow<infer A, any, any> ? z.input<A> : never;\n export type state<T> = T extends Workflow<infer A, any, any> ? z.output<A> : never;\n export type output<T> = T extends Workflow<any, infer A, any> ? z.output<A> : never;\n export type run<T> = T extends Workflow<infer A, infer B, infer C> ? WorkflowRun<A, B, C> : never;\n}\n\nexport type AnyWorkflowFlow = Workflow<any, any, any>;\n"]}
1
+ {"version":3,"sources":["workflow.ts"],"names":["WorkflowError","FrameworkError","constructor","message","extra","errors","context","run","isRetryable","isFatal","Workflow","Serializable","START","SELF","PREV","NEXT","END","emitter","steps","startStep","input","Map","undefined","Emitter","root","child","namespace","toCamelCase","name","filter","Boolean","creator","getSteps","Array","from","keys","schemas","pick","addStep","step","_addStep","addStrictStep","schema","schemaOrStep","stepOrEmpty","trim","ValueError","has","stepOrFlow","set","handler","asStep","setStart","state","options","RunContext","enter","signal","params","runContext","parse","result","handlers","abort","reason","next","findStep","start","current","get","emit","parseAsync","catch","err","shallowCopy","then","deepCopy","nextStepRaw","at","prev","stepResult","push","error","outputSchema","delStep","delete","overrides","ctx","mappedInput","mappedOutput","output","Object","assign","index","indexOf","createSnapshot","omit","loadSnapshot","snapshot","z","any"],"mappings":"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","file":"workflow.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 { z, ZodSchema } from \"zod\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Callback, Emitter } from \"@/emitter/emitter.js\";\nimport { RunContext } from \"@/context.js\";\nimport { omit, pick, toCamelCase } from \"remeda\";\nimport { deepCopy, shallowCopy } from \"@/serializer/utils.js\";\nimport { FrameworkError, ValueError } from \"@/errors.js\";\n\n// eslint-disable-next-line @typescript-eslint/no-invalid-void-type\ntype WorkflowStepHandlerReturn<K extends string> = K | ReservedStep | void;\n\nexport interface WorkflowRun<T extends ZodSchema, T2 extends ZodSchema, K extends string> {\n result: z.output<T2>;\n steps: WorkflowStepRes<T, K>[];\n state: z.output<T>;\n}\n\nexport interface WorkflowRunOptions<K extends string> {\n start?: K;\n signal?: AbortSignal;\n}\n\nexport interface WorkflowStepDef<T extends ZodSchema, K extends string> {\n schema: T;\n handler: WorkflowStepHandler<T, K>;\n}\n\nexport interface WorkflowStepRes<T extends ZodSchema, K extends string> {\n name: K;\n next: K | ReservedStep;\n state: z.output<T>;\n}\n\nexport interface WorkflowRunContext<T extends ZodSchema, K extends string> {\n steps: WorkflowStepRes<T, K>[];\n signal: AbortSignal;\n abort: (reason?: Error) => void;\n}\n\nexport type WorkflowStepHandler<T extends ZodSchema, K extends string> = (\n state: z.output<T>,\n context: WorkflowRunContext<T, K>,\n) => Promise<WorkflowStepHandlerReturn<K>> | WorkflowStepHandlerReturn<K>;\n\nexport interface WorkflowEvents<T extends ZodSchema, T2 extends ZodSchema, K extends string> {\n start: Callback<{ step: K; run: WorkflowRun<T, T2, K> }>;\n error: Callback<{\n step: K;\n error: Error;\n run: WorkflowRun<T, T2, K>;\n }>;\n success: Callback<{\n step: K;\n next: K | ReservedStep;\n state: z.output<T>;\n run: WorkflowRun<T, T2, K>;\n }>;\n}\n\ninterface FlowInput<TS extends ZodSchema, TS2 extends ZodSchema = TS> {\n name?: string;\n schema: TS;\n outputSchema?: TS2;\n}\n\ntype RunStep<K extends string> = K | typeof Workflow.END;\ntype ReservedStep =\n | typeof Workflow.START\n | typeof Workflow.NEXT\n | typeof Workflow.PREV\n | typeof Workflow.END\n | typeof Workflow.SELF;\nexport type FlowStepName<K extends string> = K | ReservedStep;\n\nexport class WorkflowError<\n T extends ZodSchema,\n T2 extends ZodSchema,\n K extends string,\n> extends FrameworkError {\n constructor(message: string, extra?: { run?: WorkflowRun<T, T2, K>; errors?: Error[] }) {\n super(message, extra?.errors, {\n context: extra?.run ?? {},\n isRetryable: false,\n isFatal: true,\n });\n }\n}\n\nexport class Workflow<\n TInput extends ZodSchema,\n TOutput extends ZodSchema = TInput,\n TKeys extends string = string,\n> extends Serializable {\n public static readonly START = \"__start__\";\n public static readonly SELF = \"__self__\";\n public static readonly PREV = \"__prev__\";\n public static readonly NEXT = \"__next__\";\n public static readonly END = \"__end__\";\n\n public readonly emitter: Emitter<WorkflowEvents<TInput, TOutput, TKeys>>;\n\n protected readonly steps = new Map<string, WorkflowStepDef<TInput, TKeys>>();\n protected startStep: TKeys | undefined = undefined;\n\n constructor(protected readonly input: FlowInput<TInput, TOutput>) {\n super();\n this.emitter = Emitter.root.child({\n namespace: [\"workflow\", toCamelCase(input?.name ?? \"\")].filter(Boolean),\n creator: this,\n });\n }\n\n getSteps() {\n return Array.from(this.steps.keys()) as TKeys[];\n }\n\n get name() {\n return this.input.name ?? \"\";\n }\n\n get schemas() {\n return pick(this.input, [\"schema\", \"outputSchema\"]);\n }\n\n addStep<L extends string>(\n name: L,\n handler: WorkflowStepHandler<TInput | TOutput, TKeys>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStep<L extends string, TFlow extends AnyWorkflowFlow>(\n name: L,\n flow: Workflow.pipeable<this, TFlow>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStep<L extends string>(\n name: L,\n step: WorkflowStepHandler<TInput | TOutput, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n return this._addStep(name, step);\n }\n\n addStrictStep<L extends string, TI2 extends ZodSchema>(\n name: L,\n schema: TI2,\n handler: WorkflowStepHandler<TI2, TKeys>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStrictStep<L extends string, TI2 extends ZodSchema, TFlow extends AnyWorkflowFlow>(\n name: L,\n schema: TI2,\n flow: Workflow.pipeable<Workflow<TI2, TOutput, TKeys>, TFlow>,\n ): Workflow<TInput, TOutput, L | TKeys>;\n addStrictStep<L extends string, TI2 extends ZodSchema>(\n name: L,\n schema: TI2,\n step: WorkflowStepHandler<TI2, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n return this._addStep(name, schema, step);\n }\n\n protected _addStep<TI2 extends ZodSchema = TInput, L extends string = TKeys>(\n name: L,\n schemaOrStep: TI2 | WorkflowStepHandler<TInput, TKeys> | AnyWorkflowFlow,\n stepOrEmpty?: WorkflowStepHandler<TI2, TKeys> | AnyWorkflowFlow,\n ): Workflow<TInput, TOutput, L | TKeys> {\n if (!name.trim()) {\n throw new ValueError(`Step name cannot be empty!`);\n }\n if (this.steps.has(name)) {\n throw new ValueError(`Step '${name}' already exists!`);\n }\n if (name === Workflow.END) {\n throw new ValueError(`The name '${name}' cannot be used!`);\n }\n\n const schema = (schemaOrStep && stepOrEmpty ? schemaOrStep : this.input.schema) as TInput;\n const stepOrFlow = stepOrEmpty || schemaOrStep;\n\n this.steps.set(name, {\n schema,\n handler: stepOrFlow instanceof Workflow ? stepOrFlow.asStep({}) : stepOrFlow,\n } as WorkflowStepDef<TInput, TKeys>);\n\n return this as unknown as Workflow<TInput, TOutput, L | TKeys>;\n }\n\n setStart(name: TKeys) {\n this.startStep = name;\n return this;\n }\n\n run(state: z.input<TInput>, options: WorkflowRunOptions<TKeys> = {}) {\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [state, options] as const },\n async (runContext): Promise<WorkflowRun<TInput, TOutput, TKeys>> => {\n const run: WorkflowRun<TInput, TOutput, TKeys> = {\n steps: [],\n state: this.input.schema.parse(state),\n result: undefined as z.output<TOutput>,\n };\n const handlers: WorkflowRunContext<TInput, TKeys> = {\n steps: run.steps,\n signal: runContext.signal,\n abort: (reason) => runContext.abort(reason),\n };\n\n let next: RunStep<TKeys> =\n this.findStep(options?.start || this.startStep || this.getSteps()[0]).current ??\n Workflow.END;\n\n while (next && next !== Workflow.END) {\n const name = next;\n const step = this.steps.get(next);\n if (!step) {\n throw new WorkflowError(`Step '${next}' was not found.`, { run });\n }\n await runContext.emitter.emit(\"start\", { run, step: next });\n try {\n const state = await step.schema\n .parseAsync(run.state)\n .catch(async (err: Error) => {\n throw new WorkflowError(\n `Step '${next}' cannot be executed because the provided input doesn't adhere to the step's schema.`,\n { run: shallowCopy(run), errors: [err] },\n );\n })\n .then(deepCopy);\n\n const nextStepRaw = await step.handler(state, handlers);\n if (nextStepRaw === Workflow.START) {\n next = run.steps.at(0)?.name!;\n } else if (nextStepRaw === Workflow.PREV) {\n next = this.findStep(next).prev;\n } else if (nextStepRaw === Workflow.SELF) {\n next = this.findStep(next).current;\n } else if (!nextStepRaw || nextStepRaw === Workflow.NEXT) {\n next = this.findStep(next).next || Workflow.END;\n } else {\n next = nextStepRaw;\n }\n\n const stepResult: WorkflowStepRes<TInput, TKeys> = {\n name,\n state,\n next,\n };\n run.steps.push(stepResult);\n run.state = stepResult.state;\n\n await runContext.emitter.emit(\"success\", {\n run: shallowCopy(run),\n state: stepResult.state,\n step: stepResult.name,\n next: stepResult.next,\n });\n } catch (error) {\n await runContext.emitter.emit(\"error\", {\n run: shallowCopy(run),\n step: next as TKeys,\n error,\n });\n throw error;\n }\n }\n\n run.result = await (this.input.outputSchema ?? this.input.schema)\n .parseAsync(run.state)\n .catch((err) => {\n throw new WorkflowError(\n `Workflow has ended but it's state does not adhere to the workflow's output schema.`,\n { run: shallowCopy(run), errors: [err] },\n );\n });\n return run;\n },\n );\n }\n\n delStep<L extends TKeys>(name: L): Workflow<TInput, TOutput, Exclude<TKeys, L>> {\n if (this.startStep === name) {\n this.startStep = undefined;\n }\n this.steps.delete(name);\n return this as unknown as Workflow<TInput, TOutput, Exclude<TKeys, L>>;\n }\n\n asStep<\n TInput2 extends ZodSchema = TInput,\n TOutput2 extends ZodSchema = TOutput,\n TKeys2 extends string = TKeys,\n >(overrides: {\n input?: (input: z.output<TInput2>) => z.output<TInput> | z.input<TInput>;\n output?: (output: z.output<TOutput>) => z.output<TOutput2> | z.input<TOutput2>;\n start?: TKeys;\n next?: FlowStepName<TKeys2>;\n }): WorkflowStepHandler<TInput2, TKeys | TKeys2> {\n return async (state, ctx) => {\n const mappedInput = overrides?.input ? overrides.input(state) : state;\n const result = await this.run(mappedInput, { start: overrides?.start, signal: ctx.signal });\n const mappedOutput = overrides?.output ? overrides.output(result.state) : result.state;\n Object.assign(state, mappedOutput);\n return overrides.next;\n };\n }\n\n protected findStep(current: TKeys) {\n const steps = this.getSteps();\n const index = steps.indexOf(current);\n return {\n prev: steps[index - 1],\n current: steps[index],\n next: steps[index + 1],\n };\n }\n\n createSnapshot() {\n return {\n input: omit(this.input, [\"schema\", \"outputSchema\"]),\n emitter: this.emitter,\n startStep: this.startStep,\n steps: this.steps,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n this.input.schema ??= z.any() as unknown as TInput;\n this.input.outputSchema ??= z.any() as unknown as TOutput;\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Workflow {\n export type pipeable<T extends AnyWorkflowFlow, T2 extends AnyWorkflowFlow> =\n Workflow.state<T> extends Workflow.input<T2> ? T2 : never;\n export type input<T> = T extends Workflow<infer A, any, any> ? z.input<A> : never;\n export type state<T> = T extends Workflow<infer A, any, any> ? z.output<A> : never;\n export type output<T> = T extends Workflow<any, infer A, any> ? z.output<A> : never;\n export type run<T> = T extends Workflow<infer A, infer B, infer C> ? WorkflowRun<A, B, C> : never;\n}\n\nexport type AnyWorkflowFlow = Workflow<any, any, any>;\n"]}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "beeai-framework",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "license": "Apache-2.0",
5
5
  "description": "BeeAI Framework - LLM Agent Framework",
6
- "author": "IBM Corp.",
6
+ "author": "BeeAI a Series of LF Projects, LLC",
7
7
  "contributors": [
8
8
  "Tomas Dvorak <tomas.dvorak@ibm.com>"
9
9
  ],
@@ -89,7 +89,7 @@
89
89
  "[ \"$RELEASE_SKIP_DOCS_LINKS\" = \"true\" ] && echo 'Skipping docs links check.' || yarn docs:links:check",
90
90
  "yarn lint",
91
91
  "yarn ts:check",
92
- "yarn test:all"
92
+ "[ \"$RELEASE_SKIP_TESTS\" = \"true\" ] && echo 'Skipping tests.' || yarn test:all"
93
93
  ],
94
94
  "after:bump": [
95
95
  "yarn build"
@@ -183,7 +183,7 @@
183
183
  "dependencies": {
184
184
  "@ai-zen/node-fetch-event-source": "^2.1.4",
185
185
  "@streamparser/json": "^0.0.22",
186
- "ai": "^4.1.61",
186
+ "ai": "^4.3.8",
187
187
  "ajv": "^8.17.1",
188
188
  "ajv-formats": "^3.0.1",
189
189
  "duck-duck-scrape": "^2.2.7",
@@ -208,16 +208,16 @@
208
208
  "zod-to-json-schema": "^3.24.3"
209
209
  },
210
210
  "peerDependencies": {
211
- "@ai-sdk/amazon-bedrock": "^1.1.5",
212
- "@ai-sdk/anthropic": "^1.1.6",
213
- "@ai-sdk/azure": "^1.1.2",
214
- "@ai-sdk/google-vertex": "^2.1.6",
215
- "@ai-sdk/groq": "^1.1.6",
216
- "@ai-sdk/openai": "^1.2.5",
217
- "@aws-sdk/client-bedrock-runtime": "^3.706.0",
211
+ "@ai-sdk/amazon-bedrock": "^2.2.8",
212
+ "@ai-sdk/anthropic": "^1.2.10",
213
+ "@ai-sdk/azure": "^1.3.14",
214
+ "@ai-sdk/google-vertex": "^2.2.15",
215
+ "@ai-sdk/groq": "^1.2.8",
216
+ "@ai-sdk/openai": "^1.3.13",
217
+ "@aws-sdk/client-bedrock-runtime": "^3.772.0",
218
218
  "@elastic/elasticsearch": "^8.0.0",
219
219
  "@googleapis/customsearch": "^3.2.0",
220
- "@i-am-bee/acp-sdk": "^0.0.5",
220
+ "@i-am-bee/acp-sdk": "^0.0.6",
221
221
  "@langchain/community": ">=0.2.28",
222
222
  "@langchain/core": ">=0.2.27",
223
223
  "@modelcontextprotocol/sdk": "^1.0.4",
@@ -280,12 +280,12 @@
280
280
  }
281
281
  },
282
282
  "devDependencies": {
283
- "@ai-sdk/amazon-bedrock": "^1.1.5",
284
- "@ai-sdk/anthropic": "^1.1.6",
285
- "@ai-sdk/azure": "^1.1.2",
286
- "@ai-sdk/google-vertex": "^2.1.6",
287
- "@ai-sdk/groq": "^1.1.6",
288
- "@ai-sdk/openai": "^1.2.5",
283
+ "@ai-sdk/amazon-bedrock": "^2.2.8",
284
+ "@ai-sdk/anthropic": "^1.2.10",
285
+ "@ai-sdk/azure": "^1.3.14",
286
+ "@ai-sdk/google-vertex": "^2.2.15",
287
+ "@ai-sdk/groq": "^1.2.8",
288
+ "@ai-sdk/openai": "^1.3.13",
289
289
  "@commitlint/cli": "^19.7.1",
290
290
  "@commitlint/config-conventional": "^19.7.1",
291
291
  "@elastic/elasticsearch": "^8.16.2",