beeai-framework 0.1.28 → 0.1.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (564) hide show
  1. package/dist/adapters/a2a/agents/agent.cjs.map +1 -1
  2. package/dist/adapters/a2a/agents/agent.d.cts +2 -2
  3. package/dist/adapters/a2a/agents/agent.d.ts +2 -2
  4. package/dist/adapters/a2a/agents/agent.js.map +1 -1
  5. package/dist/adapters/a2a/agents/events.d.cts +1 -1
  6. package/dist/adapters/a2a/agents/events.d.ts +1 -1
  7. package/dist/adapters/a2a/agents/types.d.cts +2 -2
  8. package/dist/adapters/a2a/agents/types.d.ts +2 -2
  9. package/dist/adapters/a2a/agents/utils.cjs +52 -11
  10. package/dist/adapters/a2a/agents/utils.cjs.map +1 -1
  11. package/dist/adapters/a2a/agents/utils.js +52 -11
  12. package/dist/adapters/a2a/agents/utils.js.map +1 -1
  13. package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -1
  14. package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
  15. package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
  16. package/dist/adapters/a2a/serve/agent_executor.js.map +1 -1
  17. package/dist/adapters/a2a/serve/server.cjs.map +1 -1
  18. package/dist/adapters/a2a/serve/server.d.cts +2 -2
  19. package/dist/adapters/a2a/serve/server.d.ts +2 -2
  20. package/dist/adapters/a2a/serve/server.js.map +1 -1
  21. package/dist/adapters/acp/agents/agent.cjs.map +1 -1
  22. package/dist/adapters/acp/agents/agent.d.cts +2 -2
  23. package/dist/adapters/acp/agents/agent.d.ts +2 -2
  24. package/dist/adapters/acp/agents/agent.js.map +1 -1
  25. package/dist/adapters/acp/agents/events.d.cts +1 -1
  26. package/dist/adapters/acp/agents/events.d.ts +1 -1
  27. package/dist/adapters/agentstack/agents/agent.cjs.map +1 -1
  28. package/dist/adapters/agentstack/agents/agent.d.cts +2 -2
  29. package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
  30. package/dist/adapters/agentstack/agents/agent.js.map +1 -1
  31. package/dist/adapters/agentstack/agents/events.d.cts +1 -1
  32. package/dist/adapters/agentstack/agents/events.d.ts +1 -1
  33. package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
  34. package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
  35. package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
  36. package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
  37. package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
  38. package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
  39. package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
  40. package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
  41. package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
  42. package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
  43. package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
  44. package/dist/adapters/anthropic/backend/chat.d.cts +3 -3
  45. package/dist/adapters/anthropic/backend/chat.d.ts +3 -3
  46. package/dist/adapters/anthropic/backend/chat.js.map +1 -1
  47. package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
  48. package/dist/adapters/anthropic/backend/client.js.map +1 -1
  49. package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
  50. package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
  51. package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
  52. package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
  53. package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
  54. package/dist/adapters/azure-openai/backend/chat.d.cts +3 -3
  55. package/dist/adapters/azure-openai/backend/chat.d.ts +3 -3
  56. package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
  57. package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
  58. package/dist/adapters/azure-openai/backend/client.js.map +1 -1
  59. package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
  60. package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
  61. package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
  62. package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
  63. package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
  64. package/dist/adapters/dummy/backend/chat.d.cts +2 -2
  65. package/dist/adapters/dummy/backend/chat.d.ts +2 -2
  66. package/dist/adapters/dummy/backend/chat.js.map +1 -1
  67. package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
  68. package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
  69. package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
  70. package/dist/adapters/dummy/backend/embedding.js.map +1 -1
  71. package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
  72. package/dist/adapters/google-vertex/backend/chat.d.cts +3 -3
  73. package/dist/adapters/google-vertex/backend/chat.d.ts +3 -3
  74. package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
  75. package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
  76. package/dist/adapters/google-vertex/backend/client.js.map +1 -1
  77. package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
  78. package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
  79. package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
  80. package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
  81. package/dist/adapters/groq/backend/chat.cjs.map +1 -1
  82. package/dist/adapters/groq/backend/chat.d.cts +3 -3
  83. package/dist/adapters/groq/backend/chat.d.ts +3 -3
  84. package/dist/adapters/groq/backend/chat.js.map +1 -1
  85. package/dist/adapters/groq/backend/client.cjs.map +1 -1
  86. package/dist/adapters/groq/backend/client.js.map +1 -1
  87. package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
  88. package/dist/adapters/groq/backend/embedding.d.cts +2 -2
  89. package/dist/adapters/groq/backend/embedding.d.ts +2 -2
  90. package/dist/adapters/groq/backend/embedding.js.map +1 -1
  91. package/dist/adapters/langchain/backend/chat.cjs +6 -28
  92. package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
  93. package/dist/adapters/langchain/backend/chat.d.cts +6 -5
  94. package/dist/adapters/langchain/backend/chat.d.ts +6 -5
  95. package/dist/adapters/langchain/backend/chat.js +6 -28
  96. package/dist/adapters/langchain/backend/chat.js.map +1 -1
  97. package/dist/adapters/langchain/backend/embedding.cjs +3 -2
  98. package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
  99. package/dist/adapters/langchain/backend/embedding.d.cts +3 -3
  100. package/dist/adapters/langchain/backend/embedding.d.ts +3 -3
  101. package/dist/adapters/langchain/backend/embedding.js +3 -2
  102. package/dist/adapters/langchain/backend/embedding.js.map +1 -1
  103. package/dist/adapters/langchain/backend/utils.cjs +328 -0
  104. package/dist/adapters/langchain/backend/utils.cjs.map +1 -0
  105. package/dist/adapters/langchain/backend/utils.d.cts +39 -0
  106. package/dist/adapters/langchain/backend/utils.d.ts +39 -0
  107. package/dist/adapters/langchain/backend/utils.js +324 -0
  108. package/dist/adapters/langchain/backend/utils.js.map +1 -0
  109. package/dist/adapters/langchain/tools.cjs.map +1 -1
  110. package/dist/adapters/langchain/tools.d.cts +2 -2
  111. package/dist/adapters/langchain/tools.d.ts +2 -2
  112. package/dist/adapters/langchain/tools.js.map +1 -1
  113. package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
  114. package/dist/adapters/mcp/serve/http_server.js.map +1 -1
  115. package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
  116. package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
  117. package/dist/adapters/mcp/serve/server.cjs.map +1 -1
  118. package/dist/adapters/mcp/serve/server.js.map +1 -1
  119. package/dist/adapters/minimax/backend/chat.cjs +25 -0
  120. package/dist/adapters/minimax/backend/chat.cjs.map +1 -0
  121. package/dist/adapters/minimax/backend/chat.d.cts +38 -0
  122. package/dist/adapters/minimax/backend/chat.d.ts +38 -0
  123. package/dist/adapters/minimax/backend/chat.js +23 -0
  124. package/dist/adapters/minimax/backend/chat.js.map +1 -0
  125. package/dist/adapters/minimax/backend/client.cjs +31 -0
  126. package/dist/adapters/minimax/backend/client.cjs.map +1 -0
  127. package/dist/adapters/minimax/backend/client.d.cts +17 -0
  128. package/dist/adapters/minimax/backend/client.d.ts +17 -0
  129. package/dist/adapters/minimax/backend/client.js +29 -0
  130. package/dist/adapters/minimax/backend/client.js.map +1 -0
  131. package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
  132. package/dist/adapters/ollama/backend/chat.d.cts +2 -2
  133. package/dist/adapters/ollama/backend/chat.d.ts +2 -2
  134. package/dist/adapters/ollama/backend/chat.js.map +1 -1
  135. package/dist/adapters/ollama/backend/client.cjs.map +1 -1
  136. package/dist/adapters/ollama/backend/client.js.map +1 -1
  137. package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
  138. package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
  139. package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
  140. package/dist/adapters/ollama/backend/embedding.js.map +1 -1
  141. package/dist/adapters/openai/backend/chat.cjs.map +1 -1
  142. package/dist/adapters/openai/backend/chat.d.cts +2 -2
  143. package/dist/adapters/openai/backend/chat.d.ts +2 -2
  144. package/dist/adapters/openai/backend/chat.js.map +1 -1
  145. package/dist/adapters/openai/backend/client.cjs.map +1 -1
  146. package/dist/adapters/openai/backend/client.js.map +1 -1
  147. package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
  148. package/dist/adapters/openai/backend/embedding.d.cts +2 -2
  149. package/dist/adapters/openai/backend/embedding.d.ts +2 -2
  150. package/dist/adapters/openai/backend/embedding.js.map +1 -1
  151. package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
  152. package/dist/adapters/vercel/backend/chat.d.cts +2 -2
  153. package/dist/adapters/vercel/backend/chat.d.ts +2 -2
  154. package/dist/adapters/vercel/backend/chat.js.map +1 -1
  155. package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
  156. package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
  157. package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
  158. package/dist/adapters/vercel/backend/embedding.js.map +1 -1
  159. package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
  160. package/dist/adapters/vercel/backend/utils.d.cts +2 -2
  161. package/dist/adapters/vercel/backend/utils.d.ts +2 -2
  162. package/dist/adapters/vercel/backend/utils.js.map +1 -1
  163. package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
  164. package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
  165. package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
  166. package/dist/adapters/watsonx/backend/chat.js +1 -1
  167. package/dist/adapters/watsonx/backend/chat.js.map +1 -1
  168. package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
  169. package/dist/adapters/watsonx/backend/client.js.map +1 -1
  170. package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
  171. package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
  172. package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
  173. package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
  174. package/dist/adapters/xai/backend/chat.cjs.map +1 -1
  175. package/dist/adapters/xai/backend/chat.d.cts +2 -2
  176. package/dist/adapters/xai/backend/chat.d.ts +2 -2
  177. package/dist/adapters/xai/backend/chat.js.map +1 -1
  178. package/dist/adapters/xai/backend/client.cjs.map +1 -1
  179. package/dist/adapters/xai/backend/client.js.map +1 -1
  180. package/dist/{agent-BAVf6-xf.d.ts → agent-s3uhvAba.d.ts} +5 -5
  181. package/dist/{agent-DHO-oJQf.d.cts → agent-zfT__iq9.d.cts} +5 -5
  182. package/dist/agents/base.cjs.map +1 -1
  183. package/dist/agents/base.d.cts +2 -2
  184. package/dist/agents/base.d.ts +2 -2
  185. package/dist/agents/base.js.map +1 -1
  186. package/dist/agents/experimental/replan/agent.cjs.map +1 -1
  187. package/dist/agents/experimental/replan/agent.d.cts +3 -3
  188. package/dist/agents/experimental/replan/agent.d.ts +3 -3
  189. package/dist/agents/experimental/replan/agent.js.map +1 -1
  190. package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
  191. package/dist/agents/experimental/replan/prompts.d.cts +1 -1
  192. package/dist/agents/experimental/replan/prompts.d.ts +1 -1
  193. package/dist/agents/experimental/replan/prompts.js.map +1 -1
  194. package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
  195. package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
  196. package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
  197. package/dist/agents/experimental/streamlit/agent.js.map +1 -1
  198. package/dist/agents/experimental/streamlit/prompts.cjs +2 -2
  199. package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
  200. package/dist/agents/experimental/streamlit/prompts.js +2 -2
  201. package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
  202. package/dist/agents/react/agent.cjs +6 -6
  203. package/dist/agents/react/agent.cjs.map +1 -1
  204. package/dist/agents/react/agent.d.cts +4 -4
  205. package/dist/agents/react/agent.d.ts +4 -4
  206. package/dist/agents/react/agent.js.map +1 -1
  207. package/dist/agents/react/prompts.cjs.map +1 -1
  208. package/dist/agents/react/prompts.d.cts +1 -1
  209. package/dist/agents/react/prompts.d.ts +1 -1
  210. package/dist/agents/react/prompts.js.map +1 -1
  211. package/dist/agents/react/runners/base.cjs.map +1 -1
  212. package/dist/agents/react/runners/base.d.cts +4 -4
  213. package/dist/agents/react/runners/base.d.ts +4 -4
  214. package/dist/agents/react/runners/base.js.map +1 -1
  215. package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
  216. package/dist/agents/react/runners/deep-think/prompts.d.cts +1 -1
  217. package/dist/agents/react/runners/deep-think/prompts.d.ts +1 -1
  218. package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
  219. package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
  220. package/dist/agents/react/runners/deep-think/runner.d.cts +5 -5
  221. package/dist/agents/react/runners/deep-think/runner.d.ts +5 -5
  222. package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
  223. package/dist/agents/react/runners/default/runner.cjs.map +1 -1
  224. package/dist/agents/react/runners/default/runner.d.cts +5 -5
  225. package/dist/agents/react/runners/default/runner.d.ts +5 -5
  226. package/dist/agents/react/runners/default/runner.js.map +1 -1
  227. package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
  228. package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
  229. package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
  230. package/dist/agents/react/runners/granite/prompts.d.cts +1 -1
  231. package/dist/agents/react/runners/granite/prompts.d.ts +1 -1
  232. package/dist/agents/react/runners/granite/prompts.js.map +1 -1
  233. package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
  234. package/dist/agents/react/runners/granite/runner.d.cts +5 -5
  235. package/dist/agents/react/runners/granite/runner.d.ts +5 -5
  236. package/dist/agents/react/runners/granite/runner.js.map +1 -1
  237. package/dist/agents/react/types.d.cts +2 -2
  238. package/dist/agents/react/types.d.ts +2 -2
  239. package/dist/agents/requirement/agent.cjs.map +1 -1
  240. package/dist/agents/requirement/agent.d.cts +5 -5
  241. package/dist/agents/requirement/agent.d.ts +5 -5
  242. package/dist/agents/requirement/agent.js.map +1 -1
  243. package/dist/agents/requirement/prompts.d.cts +2 -2
  244. package/dist/agents/requirement/prompts.d.ts +2 -2
  245. package/dist/agents/requirement/requirements/conditional.cjs.map +1 -1
  246. package/dist/agents/requirement/requirements/conditional.d.cts +5 -5
  247. package/dist/agents/requirement/requirements/conditional.d.ts +5 -5
  248. package/dist/agents/requirement/requirements/conditional.js.map +1 -1
  249. package/dist/agents/requirement/requirements/requirement.cjs.map +1 -1
  250. package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
  251. package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
  252. package/dist/agents/requirement/requirements/requirement.js.map +1 -1
  253. package/dist/agents/requirement/requirements/utils.cjs.map +1 -1
  254. package/dist/agents/requirement/requirements/utils.d.cts +1 -1
  255. package/dist/agents/requirement/requirements/utils.d.ts +1 -1
  256. package/dist/agents/requirement/requirements/utils.js.map +1 -1
  257. package/dist/agents/requirement/runner.cjs.map +1 -1
  258. package/dist/agents/requirement/runner.d.cts +5 -5
  259. package/dist/agents/requirement/runner.d.ts +5 -5
  260. package/dist/agents/requirement/runner.js.map +1 -1
  261. package/dist/agents/requirement/types.d.cts +4 -4
  262. package/dist/agents/requirement/types.d.ts +4 -4
  263. package/dist/agents/requirement/utils/llm.cjs.map +1 -1
  264. package/dist/agents/requirement/utils/llm.d.cts +4 -4
  265. package/dist/agents/requirement/utils/llm.d.ts +4 -4
  266. package/dist/agents/requirement/utils/llm.js.map +1 -1
  267. package/dist/agents/requirement/utils/tool.cjs.map +1 -1
  268. package/dist/agents/requirement/utils/tool.d.cts +4 -4
  269. package/dist/agents/requirement/utils/tool.d.ts +4 -4
  270. package/dist/agents/requirement/utils/tool.js.map +1 -1
  271. package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -1
  272. package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -1
  273. package/dist/agents/toolCalling/agent.cjs.map +1 -1
  274. package/dist/agents/toolCalling/agent.d.cts +4 -4
  275. package/dist/agents/toolCalling/agent.d.ts +4 -4
  276. package/dist/agents/toolCalling/agent.js.map +1 -1
  277. package/dist/agents/toolCalling/prompts.cjs.map +1 -1
  278. package/dist/agents/toolCalling/prompts.js.map +1 -1
  279. package/dist/agents/toolCalling/types.d.cts +1 -1
  280. package/dist/agents/toolCalling/types.d.ts +1 -1
  281. package/dist/agents/types.d.cts +2 -2
  282. package/dist/agents/types.d.ts +2 -2
  283. package/dist/backend/backend.cjs.map +1 -1
  284. package/dist/backend/backend.d.cts +3 -3
  285. package/dist/backend/backend.d.ts +3 -3
  286. package/dist/backend/backend.js.map +1 -1
  287. package/dist/backend/chat.cjs.map +1 -1
  288. package/dist/backend/chat.d.cts +2 -2
  289. package/dist/backend/chat.d.ts +2 -2
  290. package/dist/backend/chat.js.map +1 -1
  291. package/dist/backend/client.cjs.map +1 -1
  292. package/dist/backend/client.js.map +1 -1
  293. package/dist/backend/constants.cjs +7 -0
  294. package/dist/backend/constants.cjs.map +1 -1
  295. package/dist/backend/constants.d.cts +5 -0
  296. package/dist/backend/constants.d.ts +5 -0
  297. package/dist/backend/constants.js +7 -0
  298. package/dist/backend/constants.js.map +1 -1
  299. package/dist/backend/core.d.cts +2 -2
  300. package/dist/backend/core.d.ts +2 -2
  301. package/dist/backend/embedding.cjs.map +1 -1
  302. package/dist/backend/embedding.d.cts +2 -2
  303. package/dist/backend/embedding.d.ts +2 -2
  304. package/dist/backend/embedding.js.map +1 -1
  305. package/dist/backend/errors.cjs.map +1 -1
  306. package/dist/backend/errors.d.cts +2 -2
  307. package/dist/backend/errors.d.ts +2 -2
  308. package/dist/backend/errors.js.map +1 -1
  309. package/dist/backend/message.cjs.map +1 -1
  310. package/dist/backend/message.js.map +1 -1
  311. package/dist/backend/utils.cjs.map +1 -1
  312. package/dist/backend/utils.d.cts +2 -2
  313. package/dist/backend/utils.d.ts +2 -2
  314. package/dist/backend/utils.js.map +1 -1
  315. package/dist/{base-BfhNzUYf.d.ts → base-BjzyQ8k6.d.ts} +2 -2
  316. package/dist/{base-BqzN2QwB.d.cts → base-s3ioVIE9.d.cts} +2 -2
  317. package/dist/cache/decoratorCache.cjs.map +1 -1
  318. package/dist/cache/decoratorCache.js.map +1 -1
  319. package/dist/cache/fileCache.cjs.map +1 -1
  320. package/dist/cache/fileCache.js.map +1 -1
  321. package/dist/cache/nullCache.cjs.map +1 -1
  322. package/dist/cache/nullCache.js.map +1 -1
  323. package/dist/cache/slidingCache.cjs.map +1 -1
  324. package/dist/cache/slidingCache.js.map +1 -1
  325. package/dist/cache/unconstrainedCache.cjs.map +1 -1
  326. package/dist/cache/unconstrainedCache.js.map +1 -1
  327. package/dist/{chat-DaqV3woF.d.cts → chat-C20nYj46.d.cts} +3 -3
  328. package/dist/{chat-DTxmaKP0.d.ts → chat-CfTNfR60.d.ts} +3 -3
  329. package/dist/context.cjs.map +1 -1
  330. package/dist/context.d.cts +1 -1
  331. package/dist/context.d.ts +1 -1
  332. package/dist/context.js.map +1 -1
  333. package/dist/emitter/emitter.cjs.map +1 -1
  334. package/dist/emitter/emitter.d.cts +1 -1
  335. package/dist/emitter/emitter.d.ts +1 -1
  336. package/dist/emitter/emitter.js.map +1 -1
  337. package/dist/emitter/types.d.cts +1 -1
  338. package/dist/emitter/types.d.ts +1 -1
  339. package/dist/emitter/utils.cjs.map +1 -1
  340. package/dist/emitter/utils.js.map +1 -1
  341. package/dist/{emitter-UkIkNrek.d.cts → emitter-D4OcelZ9.d.cts} +2 -2
  342. package/dist/{emitter-CL56qab4.d.ts → emitter-kHxkUxco.d.ts} +2 -2
  343. package/dist/errors.cjs.map +1 -1
  344. package/dist/errors.js.map +1 -1
  345. package/dist/index.d.cts +4 -4
  346. package/dist/index.d.ts +4 -4
  347. package/dist/internals/env.cjs.map +1 -1
  348. package/dist/internals/env.js.map +1 -1
  349. package/dist/internals/fetcher.cjs.map +1 -1
  350. package/dist/internals/fetcher.d.cts +1 -1
  351. package/dist/internals/fetcher.d.ts +1 -1
  352. package/dist/internals/fetcher.js.map +1 -1
  353. package/dist/internals/helpers/array.cjs.map +1 -1
  354. package/dist/internals/helpers/array.js.map +1 -1
  355. package/dist/internals/helpers/cancellation.cjs.map +1 -1
  356. package/dist/internals/helpers/cancellation.js.map +1 -1
  357. package/dist/internals/helpers/counter.cjs.map +1 -1
  358. package/dist/internals/helpers/counter.js.map +1 -1
  359. package/dist/internals/helpers/general.cjs.map +1 -1
  360. package/dist/internals/helpers/general.js.map +1 -1
  361. package/dist/internals/helpers/hash.cjs.map +1 -1
  362. package/dist/internals/helpers/hash.js.map +1 -1
  363. package/dist/internals/helpers/map.cjs.map +1 -1
  364. package/dist/internals/helpers/map.js.map +1 -1
  365. package/dist/internals/helpers/math.cjs.map +1 -1
  366. package/dist/internals/helpers/math.js.map +1 -1
  367. package/dist/internals/helpers/object.cjs +7 -1
  368. package/dist/internals/helpers/object.cjs.map +1 -1
  369. package/dist/internals/helpers/object.js +7 -1
  370. package/dist/internals/helpers/object.js.map +1 -1
  371. package/dist/internals/helpers/paginate.cjs.map +1 -1
  372. package/dist/internals/helpers/paginate.js.map +1 -1
  373. package/dist/internals/helpers/promise.cjs.map +1 -1
  374. package/dist/internals/helpers/promise.js.map +1 -1
  375. package/dist/internals/helpers/prototype.cjs.map +1 -1
  376. package/dist/internals/helpers/prototype.js.map +1 -1
  377. package/dist/internals/helpers/retry.cjs.map +1 -1
  378. package/dist/internals/helpers/retry.js.map +1 -1
  379. package/dist/internals/helpers/retryable.cjs.map +1 -1
  380. package/dist/internals/helpers/retryable.js.map +1 -1
  381. package/dist/internals/helpers/schema.cjs.map +1 -1
  382. package/dist/internals/helpers/schema.d.cts +4 -4
  383. package/dist/internals/helpers/schema.d.ts +4 -4
  384. package/dist/internals/helpers/schema.js.map +1 -1
  385. package/dist/internals/helpers/stream.cjs.map +1 -1
  386. package/dist/internals/helpers/stream.js.map +1 -1
  387. package/dist/internals/helpers/string.cjs.map +1 -1
  388. package/dist/internals/helpers/string.js.map +1 -1
  389. package/dist/internals/helpers/weakRef.cjs.map +1 -1
  390. package/dist/internals/helpers/weakRef.js.map +1 -1
  391. package/dist/internals/serializable.cjs +3 -1
  392. package/dist/internals/serializable.cjs.map +1 -1
  393. package/dist/internals/serializable.d.cts +6 -0
  394. package/dist/internals/serializable.d.ts +6 -0
  395. package/dist/internals/serializable.js +3 -1
  396. package/dist/internals/serializable.js.map +1 -1
  397. package/dist/internals/types.cjs.map +1 -1
  398. package/dist/internals/types.js.map +1 -1
  399. package/dist/logger/logger.cjs.map +1 -1
  400. package/dist/logger/logger.d.cts +2 -2
  401. package/dist/logger/logger.d.ts +2 -2
  402. package/dist/logger/logger.js +2 -2
  403. package/dist/logger/logger.js.map +1 -1
  404. package/dist/logger/pretty.cjs.map +1 -1
  405. package/dist/logger/pretty.js.map +1 -1
  406. package/dist/memory/base.cjs.map +1 -1
  407. package/dist/memory/base.js.map +1 -1
  408. package/dist/memory/slidingMemory.cjs.map +1 -1
  409. package/dist/memory/slidingMemory.js.map +1 -1
  410. package/dist/memory/summarizeMemory.cjs.map +1 -1
  411. package/dist/memory/summarizeMemory.d.cts +2 -2
  412. package/dist/memory/summarizeMemory.d.ts +2 -2
  413. package/dist/memory/summarizeMemory.js.map +1 -1
  414. package/dist/memory/tokenMemory.cjs.map +1 -1
  415. package/dist/memory/tokenMemory.js.map +1 -1
  416. package/dist/memory/unconstrainedMemory.cjs.map +1 -1
  417. package/dist/memory/unconstrainedMemory.js.map +1 -1
  418. package/dist/middleware/streamToolCall.cjs.map +1 -1
  419. package/dist/middleware/streamToolCall.d.cts +2 -2
  420. package/dist/middleware/streamToolCall.d.ts +2 -2
  421. package/dist/middleware/streamToolCall.js.map +1 -1
  422. package/dist/middleware/trajectory.cjs.map +1 -1
  423. package/dist/middleware/trajectory.d.cts +2 -2
  424. package/dist/middleware/trajectory.d.ts +2 -2
  425. package/dist/middleware/trajectory.js.map +1 -1
  426. package/dist/parsers/errors.cjs.map +1 -1
  427. package/dist/parsers/errors.js.map +1 -1
  428. package/dist/parsers/field.cjs.map +1 -1
  429. package/dist/parsers/field.js.map +1 -1
  430. package/dist/parsers/linePrefix.cjs.map +1 -1
  431. package/dist/parsers/linePrefix.d.cts +1 -1
  432. package/dist/parsers/linePrefix.d.ts +1 -1
  433. package/dist/parsers/linePrefix.js.map +1 -1
  434. package/dist/serializer/error.cjs.map +1 -1
  435. package/dist/serializer/error.js.map +1 -1
  436. package/dist/serializer/serializer.cjs +16 -3
  437. package/dist/serializer/serializer.cjs.map +1 -1
  438. package/dist/serializer/serializer.d.cts +1 -1
  439. package/dist/serializer/serializer.d.ts +1 -1
  440. package/dist/serializer/serializer.js +16 -4
  441. package/dist/serializer/serializer.js.map +1 -1
  442. package/dist/serializer/utils.cjs.map +1 -1
  443. package/dist/serializer/utils.d.cts +1 -1
  444. package/dist/serializer/utils.d.ts +1 -1
  445. package/dist/serializer/utils.js.map +1 -1
  446. package/dist/{serializer-53t8gGQa.d.ts → serializer-BafOT48s.d.ts} +10 -4
  447. package/dist/{serializer-c51B2z6d.d.cts → serializer-CFDWYUco.d.cts} +10 -4
  448. package/dist/serve/server.cjs.map +1 -1
  449. package/dist/serve/server.js.map +1 -1
  450. package/dist/template.cjs.map +1 -1
  451. package/dist/template.js.map +1 -1
  452. package/dist/tools/arxiv.cjs.map +1 -1
  453. package/dist/tools/arxiv.d.cts +2 -2
  454. package/dist/tools/arxiv.d.ts +2 -2
  455. package/dist/tools/arxiv.js.map +1 -1
  456. package/dist/tools/base.cjs.map +1 -1
  457. package/dist/tools/base.d.cts +1 -1
  458. package/dist/tools/base.d.ts +1 -1
  459. package/dist/tools/base.js.map +1 -1
  460. package/dist/tools/calculator.cjs.map +1 -1
  461. package/dist/tools/calculator.d.cts +3 -3
  462. package/dist/tools/calculator.d.ts +3 -3
  463. package/dist/tools/calculator.js.map +1 -1
  464. package/dist/tools/custom.cjs.map +1 -1
  465. package/dist/tools/custom.d.cts +3 -3
  466. package/dist/tools/custom.d.ts +3 -3
  467. package/dist/tools/custom.js.map +1 -1
  468. package/dist/tools/database/elasticsearch.cjs.map +1 -1
  469. package/dist/tools/database/elasticsearch.d.cts +3 -3
  470. package/dist/tools/database/elasticsearch.d.ts +3 -3
  471. package/dist/tools/database/elasticsearch.js.map +1 -1
  472. package/dist/tools/database/metadata.cjs.map +1 -1
  473. package/dist/tools/database/metadata.js.map +1 -1
  474. package/dist/tools/database/milvus.cjs.map +1 -1
  475. package/dist/tools/database/milvus.d.cts +3 -3
  476. package/dist/tools/database/milvus.d.ts +3 -3
  477. package/dist/tools/database/milvus.js.map +1 -1
  478. package/dist/tools/database/qdrant.cjs.map +1 -1
  479. package/dist/tools/database/qdrant.d.cts +2 -2
  480. package/dist/tools/database/qdrant.d.ts +2 -2
  481. package/dist/tools/database/qdrant.js.map +1 -1
  482. package/dist/tools/database/sql.cjs.map +1 -1
  483. package/dist/tools/database/sql.d.cts +2 -2
  484. package/dist/tools/database/sql.d.ts +2 -2
  485. package/dist/tools/database/sql.js.map +1 -1
  486. package/dist/tools/handoff.cjs.map +1 -1
  487. package/dist/tools/handoff.d.cts +2 -2
  488. package/dist/tools/handoff.d.ts +2 -2
  489. package/dist/tools/handoff.js.map +1 -1
  490. package/dist/tools/llm.cjs +1 -1
  491. package/dist/tools/llm.cjs.map +1 -1
  492. package/dist/tools/llm.d.cts +3 -3
  493. package/dist/tools/llm.d.ts +3 -3
  494. package/dist/tools/llm.js +1 -1
  495. package/dist/tools/llm.js.map +1 -1
  496. package/dist/tools/mcp.cjs.map +1 -1
  497. package/dist/tools/mcp.d.cts +2 -2
  498. package/dist/tools/mcp.d.ts +2 -2
  499. package/dist/tools/mcp.js.map +1 -1
  500. package/dist/tools/openapi.cjs.map +1 -1
  501. package/dist/tools/openapi.d.cts +2 -2
  502. package/dist/tools/openapi.d.ts +2 -2
  503. package/dist/tools/openapi.js.map +1 -1
  504. package/dist/tools/python/output.cjs.map +1 -1
  505. package/dist/tools/python/output.d.cts +1 -1
  506. package/dist/tools/python/output.d.ts +1 -1
  507. package/dist/tools/python/output.js.map +1 -1
  508. package/dist/tools/python/python.cjs +5 -2
  509. package/dist/tools/python/python.cjs.map +1 -1
  510. package/dist/tools/python/python.d.cts +3 -3
  511. package/dist/tools/python/python.d.ts +3 -3
  512. package/dist/tools/python/python.js +5 -2
  513. package/dist/tools/python/python.js.map +1 -1
  514. package/dist/tools/python/storage.cjs.map +1 -1
  515. package/dist/tools/python/storage.js.map +1 -1
  516. package/dist/tools/search/base.cjs.map +1 -1
  517. package/dist/tools/search/base.d.cts +2 -2
  518. package/dist/tools/search/base.d.ts +2 -2
  519. package/dist/tools/search/base.js.map +1 -1
  520. package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
  521. package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
  522. package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
  523. package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
  524. package/dist/tools/search/googleSearch.cjs.map +1 -1
  525. package/dist/tools/search/googleSearch.d.cts +2 -2
  526. package/dist/tools/search/googleSearch.d.ts +2 -2
  527. package/dist/tools/search/googleSearch.js.map +1 -1
  528. package/dist/tools/search/searXNGSearch.cjs.map +1 -1
  529. package/dist/tools/search/searXNGSearch.d.cts +2 -2
  530. package/dist/tools/search/searXNGSearch.d.ts +2 -2
  531. package/dist/tools/search/searXNGSearch.js.map +1 -1
  532. package/dist/tools/search/wikipedia.cjs.map +1 -1
  533. package/dist/tools/search/wikipedia.d.cts +3 -3
  534. package/dist/tools/search/wikipedia.d.ts +3 -3
  535. package/dist/tools/search/wikipedia.js.map +1 -1
  536. package/dist/tools/similarity.cjs.map +1 -1
  537. package/dist/tools/similarity.d.cts +2 -2
  538. package/dist/tools/similarity.d.ts +2 -2
  539. package/dist/tools/similarity.js.map +1 -1
  540. package/dist/tools/think.cjs.map +1 -1
  541. package/dist/tools/think.d.cts +2 -2
  542. package/dist/tools/think.d.ts +2 -2
  543. package/dist/tools/think.js.map +1 -1
  544. package/dist/tools/weather/openMeteo.cjs.map +1 -1
  545. package/dist/tools/weather/openMeteo.d.cts +2 -2
  546. package/dist/tools/weather/openMeteo.d.ts +2 -2
  547. package/dist/tools/weather/openMeteo.js.map +1 -1
  548. package/dist/tools/web/webCrawler.cjs.map +1 -1
  549. package/dist/tools/web/webCrawler.d.cts +2 -2
  550. package/dist/tools/web/webCrawler.d.ts +2 -2
  551. package/dist/tools/web/webCrawler.js.map +1 -1
  552. package/dist/{types-YoNQSxQH.d.cts → types-BNsa3W7Z.d.cts} +4 -4
  553. package/dist/{types-YT-WdK3m.d.ts → types-DYtzF6ya.d.ts} +4 -4
  554. package/dist/version.cjs +1 -1
  555. package/dist/version.js +1 -1
  556. package/dist/workflows/agent.cjs.map +1 -1
  557. package/dist/workflows/agent.d.cts +40 -40
  558. package/dist/workflows/agent.d.ts +40 -40
  559. package/dist/workflows/agent.js.map +1 -1
  560. package/dist/workflows/workflow.cjs.map +1 -1
  561. package/dist/workflows/workflow.d.cts +1 -1
  562. package/dist/workflows/workflow.d.ts +1 -1
  563. package/dist/workflows/workflow.js.map +1 -1
  564. package/package.json +38 -15
@@ -4,10 +4,10 @@ import { Message, MessageContentPart } from '../backend/message.js';
4
4
  import { AnyTool } from '../tools/base.js';
5
5
  import { ReadOnlyMemory } from '../memory/base.js';
6
6
  import { z } from 'zod';
7
- import { a as BaseAgent } from '../base-BfhNzUYf.js';
8
- import { m as ChatModel } from '../chat-DTxmaKP0.js';
7
+ import { B as BaseAgent } from '../base-BjzyQ8k6.js';
8
+ import { a as ChatModel } from '../chat-CfTNfR60.js';
9
9
  import { ToolCallingAgentRunInput, ToolCallingAgentRunOutput, ToolCallingAgentRunOptions, ToolCallingAgentExecutionConfig } from '../agents/toolCalling/types.js';
10
- import '../emitter-CL56qab4.js';
10
+ import '../emitter-kHxkUxco.js';
11
11
  import '../internals/types.js';
12
12
  import '../internals/helpers/guards.js';
13
13
  import '../internals/serializable.js';
@@ -42,28 +42,28 @@ declare class AgentWorkflow {
42
42
  context: z.ZodOptional<z.ZodString>;
43
43
  expectedOutput: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>]>>;
44
44
  }, "strip", z.ZodTypeAny, {
45
- context?: string | undefined;
46
45
  prompt?: string | undefined;
46
+ context?: string | undefined;
47
47
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
48
48
  }, {
49
- context?: string | undefined;
50
49
  prompt?: string | undefined;
50
+ context?: string | undefined;
51
51
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
52
52
  }>, "many">;
53
53
  finalAnswer: z.ZodOptional<z.ZodString>;
54
54
  newMessages: z.ZodDefault<z.ZodArray<z.ZodType<Message<MessageContentPart, string>, z.ZodTypeDef, Message<MessageContentPart, string>>, "many">>;
55
55
  }, "strip", z.ZodTypeAny, {
56
56
  inputs: {
57
- context?: string | undefined;
58
57
  prompt?: string | undefined;
58
+ context?: string | undefined;
59
59
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
60
60
  }[];
61
61
  newMessages: Message<MessageContentPart, string>[];
62
62
  finalAnswer?: string | undefined;
63
63
  }, {
64
64
  inputs: {
65
- context?: string | undefined;
66
65
  prompt?: string | undefined;
66
+ context?: string | undefined;
67
67
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
68
68
  }[];
69
69
  finalAnswer?: string | undefined;
@@ -74,28 +74,28 @@ declare class AgentWorkflow {
74
74
  context: z.ZodOptional<z.ZodString>;
75
75
  expectedOutput: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>]>>;
76
76
  }, "strip", z.ZodTypeAny, {
77
- context?: string | undefined;
78
77
  prompt?: string | undefined;
78
+ context?: string | undefined;
79
79
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
80
80
  }, {
81
- context?: string | undefined;
82
81
  prompt?: string | undefined;
82
+ context?: string | undefined;
83
83
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
84
84
  }>, "many">;
85
85
  finalAnswer: z.ZodString;
86
86
  newMessages: z.ZodDefault<z.ZodArray<z.ZodType<Message<MessageContentPart, string>, z.ZodTypeDef, Message<MessageContentPart, string>>, "many">>;
87
87
  }, "strip", z.ZodTypeAny, {
88
88
  inputs: {
89
- context?: string | undefined;
90
89
  prompt?: string | undefined;
90
+ context?: string | undefined;
91
91
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
92
92
  }[];
93
93
  finalAnswer: string;
94
94
  newMessages: Message<MessageContentPart, string>[];
95
95
  }, {
96
96
  inputs: {
97
- context?: string | undefined;
98
97
  prompt?: string | undefined;
98
+ context?: string | undefined;
99
99
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
100
100
  }[];
101
101
  finalAnswer: string;
@@ -107,28 +107,28 @@ declare class AgentWorkflow {
107
107
  context: z.ZodOptional<z.ZodString>;
108
108
  expectedOutput: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>]>>;
109
109
  }, "strip", z.ZodTypeAny, {
110
- context?: string | undefined;
111
110
  prompt?: string | undefined;
111
+ context?: string | undefined;
112
112
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
113
113
  }, {
114
- context?: string | undefined;
115
114
  prompt?: string | undefined;
115
+ context?: string | undefined;
116
116
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
117
117
  }>, "many">;
118
118
  finalAnswer: z.ZodOptional<z.ZodString>;
119
119
  newMessages: z.ZodDefault<z.ZodArray<z.ZodType<Message<MessageContentPart, string>, z.ZodTypeDef, Message<MessageContentPart, string>>, "many">>;
120
120
  }, "strip", z.ZodTypeAny, {
121
121
  inputs: {
122
- context?: string | undefined;
123
122
  prompt?: string | undefined;
123
+ context?: string | undefined;
124
124
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
125
125
  }[];
126
126
  newMessages: Message<MessageContentPart, string>[];
127
127
  finalAnswer?: string | undefined;
128
128
  }, {
129
129
  inputs: {
130
- context?: string | undefined;
131
130
  prompt?: string | undefined;
131
+ context?: string | undefined;
132
132
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
133
133
  }[];
134
134
  finalAnswer?: string | undefined;
@@ -141,28 +141,28 @@ declare class AgentWorkflow {
141
141
  context: z.ZodOptional<z.ZodString>;
142
142
  expectedOutput: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>]>>;
143
143
  }, "strip", z.ZodTypeAny, {
144
- context?: string | undefined;
145
144
  prompt?: string | undefined;
145
+ context?: string | undefined;
146
146
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
147
147
  }, {
148
- context?: string | undefined;
149
148
  prompt?: string | undefined;
149
+ context?: string | undefined;
150
150
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
151
151
  }>, "many">;
152
152
  finalAnswer: z.ZodOptional<z.ZodString>;
153
153
  newMessages: z.ZodDefault<z.ZodArray<z.ZodType<Message<MessageContentPart, string>, z.ZodTypeDef, Message<MessageContentPart, string>>, "many">>;
154
154
  }, "strip", z.ZodTypeAny, {
155
155
  inputs: {
156
- context?: string | undefined;
157
156
  prompt?: string | undefined;
157
+ context?: string | undefined;
158
158
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
159
159
  }[];
160
160
  newMessages: Message<MessageContentPart, string>[];
161
161
  finalAnswer?: string | undefined;
162
162
  }, {
163
163
  inputs: {
164
- context?: string | undefined;
165
164
  prompt?: string | undefined;
165
+ context?: string | undefined;
166
166
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
167
167
  }[];
168
168
  finalAnswer?: string | undefined;
@@ -173,28 +173,28 @@ declare class AgentWorkflow {
173
173
  context: z.ZodOptional<z.ZodString>;
174
174
  expectedOutput: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>]>>;
175
175
  }, "strip", z.ZodTypeAny, {
176
- context?: string | undefined;
177
176
  prompt?: string | undefined;
177
+ context?: string | undefined;
178
178
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
179
179
  }, {
180
- context?: string | undefined;
181
180
  prompt?: string | undefined;
181
+ context?: string | undefined;
182
182
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
183
183
  }>, "many">;
184
184
  finalAnswer: z.ZodString;
185
185
  newMessages: z.ZodDefault<z.ZodArray<z.ZodType<Message<MessageContentPart, string>, z.ZodTypeDef, Message<MessageContentPart, string>>, "many">>;
186
186
  }, "strip", z.ZodTypeAny, {
187
187
  inputs: {
188
- context?: string | undefined;
189
188
  prompt?: string | undefined;
189
+ context?: string | undefined;
190
190
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
191
191
  }[];
192
192
  finalAnswer: string;
193
193
  newMessages: Message<MessageContentPart, string>[];
194
194
  }, {
195
195
  inputs: {
196
- context?: string | undefined;
197
196
  prompt?: string | undefined;
197
+ context?: string | undefined;
198
198
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
199
199
  }[];
200
200
  finalAnswer: string;
@@ -205,28 +205,28 @@ declare class AgentWorkflow {
205
205
  context: z.ZodOptional<z.ZodString>;
206
206
  expectedOutput: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>]>>;
207
207
  }, "strip", z.ZodTypeAny, {
208
- context?: string | undefined;
209
208
  prompt?: string | undefined;
209
+ context?: string | undefined;
210
210
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
211
211
  }, {
212
- context?: string | undefined;
213
212
  prompt?: string | undefined;
213
+ context?: string | undefined;
214
214
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
215
215
  }>, "many">;
216
216
  finalAnswer: z.ZodOptional<z.ZodString>;
217
217
  newMessages: z.ZodDefault<z.ZodArray<z.ZodType<Message<MessageContentPart, string>, z.ZodTypeDef, Message<MessageContentPart, string>>, "many">>;
218
218
  }, "strip", z.ZodTypeAny, {
219
219
  inputs: {
220
- context?: string | undefined;
221
220
  prompt?: string | undefined;
221
+ context?: string | undefined;
222
222
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
223
223
  }[];
224
224
  newMessages: Message<MessageContentPart, string>[];
225
225
  finalAnswer?: string | undefined;
226
226
  }, {
227
227
  inputs: {
228
- context?: string | undefined;
229
228
  prompt?: string | undefined;
229
+ context?: string | undefined;
230
230
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
231
231
  }[];
232
232
  finalAnswer?: string | undefined;
@@ -237,36 +237,36 @@ declare class AgentWorkflow {
237
237
  context: z.ZodOptional<z.ZodString>;
238
238
  expectedOutput: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>]>>;
239
239
  }, "strip", z.ZodTypeAny, {
240
- context?: string | undefined;
241
240
  prompt?: string | undefined;
241
+ context?: string | undefined;
242
242
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
243
243
  }, {
244
- context?: string | undefined;
245
244
  prompt?: string | undefined;
245
+ context?: string | undefined;
246
246
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
247
247
  }>, "many">;
248
248
  finalAnswer: z.ZodString;
249
249
  newMessages: z.ZodDefault<z.ZodArray<z.ZodType<Message<MessageContentPart, string>, z.ZodTypeDef, Message<MessageContentPart, string>>, "many">>;
250
250
  }, "strip", z.ZodTypeAny, {
251
251
  inputs: {
252
- context?: string | undefined;
253
252
  prompt?: string | undefined;
253
+ context?: string | undefined;
254
254
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
255
255
  }[];
256
256
  finalAnswer: string;
257
257
  newMessages: Message<MessageContentPart, string>[];
258
258
  }, {
259
259
  inputs: {
260
- context?: string | undefined;
261
260
  prompt?: string | undefined;
261
+ context?: string | undefined;
262
262
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
263
263
  }[];
264
264
  finalAnswer: string;
265
265
  newMessages?: Message<MessageContentPart, string>[] | undefined;
266
266
  }>, string>, readonly [{
267
267
  inputs: {
268
- context?: string | undefined;
269
268
  prompt?: string | undefined;
269
+ context?: string | undefined;
270
270
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
271
271
  }[];
272
272
  finalAnswer?: string | undefined;
@@ -280,28 +280,28 @@ declare class AgentWorkflow {
280
280
  context: z.ZodOptional<z.ZodString>;
281
281
  expectedOutput: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>]>>;
282
282
  }, "strip", z.ZodTypeAny, {
283
- context?: string | undefined;
284
283
  prompt?: string | undefined;
284
+ context?: string | undefined;
285
285
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
286
286
  }, {
287
- context?: string | undefined;
288
287
  prompt?: string | undefined;
288
+ context?: string | undefined;
289
289
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
290
290
  }>, "many">;
291
291
  finalAnswer: z.ZodOptional<z.ZodString>;
292
292
  newMessages: z.ZodDefault<z.ZodArray<z.ZodType<Message<MessageContentPart, string>, z.ZodTypeDef, Message<MessageContentPart, string>>, "many">>;
293
293
  }, "strip", z.ZodTypeAny, {
294
294
  inputs: {
295
- context?: string | undefined;
296
295
  prompt?: string | undefined;
296
+ context?: string | undefined;
297
297
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
298
298
  }[];
299
299
  newMessages: Message<MessageContentPart, string>[];
300
300
  finalAnswer?: string | undefined;
301
301
  }, {
302
302
  inputs: {
303
- context?: string | undefined;
304
303
  prompt?: string | undefined;
304
+ context?: string | undefined;
305
305
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
306
306
  }[];
307
307
  finalAnswer?: string | undefined;
@@ -312,28 +312,28 @@ declare class AgentWorkflow {
312
312
  context: z.ZodOptional<z.ZodString>;
313
313
  expectedOutput: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodType<z.ZodType<unknown, z.ZodTypeDef, unknown>, z.ZodTypeDef, z.ZodType<unknown, z.ZodTypeDef, unknown>>]>>;
314
314
  }, "strip", z.ZodTypeAny, {
315
- context?: string | undefined;
316
315
  prompt?: string | undefined;
316
+ context?: string | undefined;
317
317
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
318
318
  }, {
319
- context?: string | undefined;
320
319
  prompt?: string | undefined;
320
+ context?: string | undefined;
321
321
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
322
322
  }>, "many">;
323
323
  finalAnswer: z.ZodString;
324
324
  newMessages: z.ZodDefault<z.ZodArray<z.ZodType<Message<MessageContentPart, string>, z.ZodTypeDef, Message<MessageContentPart, string>>, "many">>;
325
325
  }, "strip", z.ZodTypeAny, {
326
326
  inputs: {
327
- context?: string | undefined;
328
327
  prompt?: string | undefined;
328
+ context?: string | undefined;
329
329
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
330
330
  }[];
331
331
  finalAnswer: string;
332
332
  newMessages: Message<MessageContentPart, string>[];
333
333
  }, {
334
334
  inputs: {
335
- context?: string | undefined;
336
335
  prompt?: string | undefined;
336
+ context?: string | undefined;
337
337
  expectedOutput?: string | z.ZodType<unknown, z.ZodTypeDef, unknown> | undefined;
338
338
  }[];
339
339
  finalAnswer: string;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/workflows/agent.ts"],"names":["AgentWorkflow","workflow","schema","z","object","inputs","array","prompt","string","optional","context","expectedOutput","union","instanceof","ZodSchema","finalAnswer","newMessages","Message","default","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":";;;;;;;;;;AAqCO,MAAMA,aAAAA,CAAAA;EArCb;;;AAsCqBC,EAAAA,QAAAA;AAEVC,EAAAA,MAAAA,GAASC,EAAEC,MAAAA,CAAO;IACzBC,MAAAA,EAAQF,CAAAA,CAAEG,KAAAA,CACRH,CAAAA,CAAEC,MAAAA,CAAO;MACPG,MAAAA,EAAQJ,CAAAA,CAAEK,MAAAA,EAAM,CAAGC,QAAAA,EAAQ;MAC3BC,OAAAA,EAASP,CAAAA,CAAEK,MAAAA,EAAM,CAAGC,QAAAA,EAAQ;AAC5BE,MAAAA,cAAAA,EAAgBR,EAAES,KAAAA,CAAM;AAACT,QAAAA,CAAAA,CAAEK,MAAAA,EAAM;QAAIL,CAAAA,CAAEU,UAAAA,CAAWV,EAAEW,SAAS;AAAE,OAAA,CAAA,CAAEL,QAAAA;AACnE,KAAA,CAAA,CAAA;IAGFM,WAAAA,EAAaZ,CAAAA,CAAEK,MAAAA,EAAM,CAAGC,QAAAA,EAAQ;IAChCO,WAAAA,EAAab,CAAAA,CAAEG,MAAMH,CAAAA,CAAEU,UAAAA,CAAWI,OAAAA,CAAAA,CAAAA,CAAUC,OAAAA,CAAQ,EAAE;GACxD,CAAA;AAEA,EAAA,WAAA,CAAYC,OAAO,eAAA,EAAiB;AAClC,IAAA,IAAA,CAAKlB,QAAAA,GAAW,IAAImB,QAAAA,CAAS;AAC3BD,MAAAA,IAAAA;AACAjB,MAAAA,MAAAA,EAAQ,IAAA,CAAKA,MAAAA;MACbmB,YAAAA,EAAc,IAAA,CAAKnB,OAAOoB,QAAAA;KAC5B,CAAA;AACF;EAEAC,GAAAA,CAAIlB,MAAAA,EAAgDmB,OAAAA,GAAsC,EAAC,EAAG;AAC5F,IAAA,OAAO,IAAA,CAAKvB,SAASsB,GAAAA,CACnB;AACElB,MAAAA,MAAAA,EAAQA,MAAAA,CAAOoB,GAAAA,CAAI,CAACC,KAAAA,KAAWA,iBAAiBT,OAAAA,GAAU;AAAEV,QAAAA,MAAAA,EAAQmB,KAAAA,CAAMC;AAAK,OAAA,GAAID,KAAAA;AACrF,KAAA,EACAF,OAAAA,CAAAA;AAEJ;AAIAI,EAAAA,QAAAA,CAASC,KAAAA,EAA+E;AACtF,IAAA,IAAIA,iBAAiBC,SAAAA,EAAW;AAC9B,MAAA,OAAOD,KAAAA,CAAME,KAAAA,EAAK,CAAGC,IAAAA,CAAK,CAACD,KAAAA,KAAAA;AACzB,QAAA,MAAME,OAAAA,2BAAyBC,MAAAA,KAAAA;AAC7BH,UAAAA,KAAAA,CAAMG,MAAAA,GAASA,MAAAA;AACf,UAAA,OAAOH,KAAAA;SACT,EAH8B,SAAA,CAAA;AAI9B,QAAA,OAAO,IAAA,CAAKI,IAAAA,CAAKJ,KAAAA,CAAMK,IAAAA,CAAKjB,MAAMc,OAAAA,CAAAA;OACpC,CAAA;AACF;AAEA,IAAA,MAAMd,OAAOU,KAAAA,CAAMV,IAAAA,IAAQ,CAAA,KAAA,EAAQkB,YAAAA,CAAa,CAAA,CAAA,CAAA,CAAA;AAChD,IAAA,OAAO,IAAA,CAAKF,IAAAA,CAAKhB,IAAAA,EAAMmB,UAAAA,CAAWT,KAAAA,IAASA,KAAAA,GAAQ,IAAA,CAAKU,cAAAA,CAAeV,KAAAA,CAAAA,CAAAA;AACzE;AAEAW,EAAAA,QAAAA,CAASrB,IAAAA,EAAc;AACrB,IAAA,OAAO,IAAA,CAAKlB,QAAAA,CAASwC,OAAAA,CAAQtB,IAAAA,CAAAA;AAC/B;AAEUoB,EAAAA,cAAAA,CAAeb,KAAAA,EAAwC;AAC/D,IAAA,OAAO,CAACQ,MAAAA,KACN,IAAIQ,gBAAAA,CAAiB;AACnBC,MAAAA,GAAAA,EAAKjB,KAAAA,CAAMiB,GAAAA;MACXC,KAAAA,EAAOlB,KAAAA,CAAMkB,SAAS,EAAA;AACtBV,MAAAA,MAAAA;MACAE,IAAAA,EAAM;AACJjB,QAAAA,IAAAA,EAAMO,KAAAA,CAAMP,IAAAA,IAAQ,CAAA,KAAA,EAAQkB,YAAAA,CAAa,CAAA,CAAA,CAAA,CAAA;AACzCQ,QAAAA,WAAAA,EAAanB,MAAMoB,YAAAA,IAAgB;AACrC,OAAA;AACAC,MAAAA,SAAAA,EAAWrB,KAAAA,CAAMqB,SAAAA;AACjB,MAAA,GAAIrB,MAAMoB,YAAAA,IAAgB;QACxBE,SAAAA,EAAW;AACTC,UAAAA,MAAAA,kBAAQ,MAAA,CAAA,CAACC,QAAAA,KACPA,QAAAA,CAASC,IAAAA,CAAK,CAACC,MAAAA,KAAAA;AACbA,YAAAA,MAAAA,CAAOC,QAAAA,CAASP,YAAAA,GAAepB,KAAAA,CAAMoB,YAAAA,IAAgBM,OAAOC,QAAAA,CAASP,YAAAA;AACrEM,YAAAA,MAAAA,CAAOC,QAAAA,CAASC,IAAAA,GAAO5B,KAAAA,CAAM4B,IAAAA,IAAQF,OAAOC,QAAAA,CAASC,IAAAA;AACvD,WAAA,CAAA,EAJM,QAAA;AAKV;AACF;KACF,CAAA;AACJ;AAEUnB,EAAAA,IAAAA,CAAKhB,MAAcc,OAAAA,EAAuB;AAClD,IAAA,IAAA,CAAKhC,QAAAA,CAASsD,OAAAA,CAAQpC,IAAAA,EAAM,OAAOqC,OAAOC,GAAAA,KAAAA;AACxC,MAAA,MAAMvB,MAAAA,GAAS,IAAIwB,mBAAAA,EAAAA;AACnB,MAAA,MAAMxB,MAAAA,CAAOyB,OAAAA,CAAQH,KAAAA,CAAMxC,WAAW,CAAA;AAEtC,MAAA,MAAM4C,QAAAA,GAAWJ,KAAAA,CAAMnD,MAAAA,CAAOwD,KAAAA,EAAK,IAAM;QAAEtD,MAAAA,EAAQuD;AAAU,OAAA;AAC7D,MAAA,MAAMjC,KAAAA,GAAQ,MAAMI,OAAAA,CAAQC,MAAAA,CAAO6B,YAAU,CAAA;AAC7C,MAAA,MAAM,EAAEC,MAAAA,EAAM,GAAK,MAAMnC,KAAAA,CAAMN,IAAIqC,QAAAA,EAAU;AAAEK,QAAAA,MAAAA,EAAQR,GAAAA,CAAIQ;OAAO,CAAA;AAClET,MAAAA,KAAAA,CAAMzC,cAAciD,MAAAA,CAAOrC,IAAAA;AAC3B,MAAA,IAAIiC,SAASrD,MAAAA,EAAQ;AACnBiD,QAAAA,KAAAA,CAAMxC,YAAYkD,IAAAA,CAAK,IAAIC,WAAAA,CAAYP,QAAAA,CAASrD,MAAM,CAAA,CAAA;AACxD;AACAiD,MAAAA,KAAAA,CAAMxC,WAAAA,CAAYkD,KAAKF,MAAAA,CAAAA;KACzB,CAAA;AACA,IAAA,OAAO,IAAA;AACT;AACF","file":"agent.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../src/workflows/agent.ts"],"names":["AgentWorkflow","workflow","schema","z","object","inputs","array","prompt","string","optional","context","expectedOutput","union","instanceof","ZodSchema","finalAnswer","newMessages","Message","default","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 * SPDX-License-Identifier: Apache-2.0\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":["../../src/workflows/workflow.ts"],"names":["WorkflowError","FrameworkError","message","extra","errors","context","run","isRetryable","isFatal","Workflow","Serializable","START","SELF","PREV","NEXT","END","emitter","steps","Map","startStep","undefined","input","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 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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":["../../src/workflows/workflow.ts"],"names":["WorkflowError","FrameworkError","message","extra","errors","context","run","isRetryable","isFatal","Workflow","Serializable","START","SELF","PREV","NEXT","END","emitter","steps","Map","startStep","undefined","input","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 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\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-UkIkNrek.cjs';
4
+ import { E as Emitter, C as Callback } from '../emitter-D4OcelZ9.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-CL56qab4.js';
4
+ import { E as Emitter, C as Callback } from '../emitter-kHxkUxco.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":["../../src/workflows/workflow.ts"],"names":["WorkflowError","FrameworkError","message","extra","errors","context","run","isRetryable","isFatal","Workflow","Serializable","START","SELF","PREV","NEXT","END","emitter","steps","Map","startStep","undefined","input","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 * SPDX-License-Identifier: Apache-2.0\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":["../../src/workflows/workflow.ts"],"names":["WorkflowError","FrameworkError","message","extra","errors","context","run","isRetryable","isFatal","Workflow","Serializable","START","SELF","PREV","NEXT","END","emitter","steps","Map","startStep","undefined","input","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 * SPDX-License-Identifier: Apache-2.0\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"]}