@theokit/sdk 4.35.0 → 4.37.0

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 (305) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/dist/agent-K5LYVJGJ.cjs +51 -0
  3. package/dist/{agent-P77NPBF4.cjs.map → agent-K5LYVJGJ.cjs.map} +1 -1
  4. package/dist/agent-ODWMOAEC.js +42 -0
  5. package/dist/{agent-H6HL5ITH.js.map → agent-ODWMOAEC.js.map} +1 -1
  6. package/dist/agent.d.ts +2 -1
  7. package/dist/auth/index.cjs +15 -15
  8. package/dist/auth/index.js +4 -4
  9. package/dist/{batch-2FSD2UNL.cjs → batch-3SEPDXCU.cjs} +23 -23
  10. package/dist/{batch-2FSD2UNL.cjs.map → batch-3SEPDXCU.cjs.map} +1 -1
  11. package/dist/{batch-MR2HKYMS.js → batch-SY5GZLFD.js} +9 -9
  12. package/dist/{batch-MR2HKYMS.js.map → batch-SY5GZLFD.js.map} +1 -1
  13. package/dist/{chunk-JLMXKTBX.cjs → chunk-2423XDPT.cjs} +26 -26
  14. package/dist/{chunk-JLMXKTBX.cjs.map → chunk-2423XDPT.cjs.map} +1 -1
  15. package/dist/{chunk-5IB2UKSN.js → chunk-2WFB5ZOX.js} +5 -5
  16. package/dist/{chunk-5IB2UKSN.js.map → chunk-2WFB5ZOX.js.map} +1 -1
  17. package/dist/{chunk-EPYZOCOL.cjs → chunk-3ILFUXNE.cjs} +5 -5
  18. package/dist/{chunk-EPYZOCOL.cjs.map → chunk-3ILFUXNE.cjs.map} +1 -1
  19. package/dist/{chunk-KSKU6JY6.cjs → chunk-3O2ELBST.cjs} +5 -5
  20. package/dist/{chunk-KSKU6JY6.cjs.map → chunk-3O2ELBST.cjs.map} +1 -1
  21. package/dist/{chunk-M2PU44HP.cjs → chunk-4YB7B3RP.cjs} +8 -8
  22. package/dist/{chunk-M2PU44HP.cjs.map → chunk-4YB7B3RP.cjs.map} +1 -1
  23. package/dist/{chunk-S2BBRVQX.js → chunk-56OXYUZE.js} +8 -7
  24. package/dist/chunk-56OXYUZE.js.map +1 -0
  25. package/dist/{chunk-D42XHI4O.cjs → chunk-56ZM6P7Z.cjs} +13 -14
  26. package/dist/chunk-56ZM6P7Z.cjs.map +1 -0
  27. package/dist/{chunk-7BTE3RXJ.js → chunk-5SB4V74H.js} +7 -8
  28. package/dist/chunk-5SB4V74H.js.map +1 -0
  29. package/dist/{chunk-MZ5ZRORA.cjs → chunk-6EDQBX7U.cjs} +17 -16
  30. package/dist/chunk-6EDQBX7U.cjs.map +1 -0
  31. package/dist/{chunk-RKG6QFCJ.js → chunk-6VP3XGEK.js} +4 -4
  32. package/dist/{chunk-RKG6QFCJ.js.map → chunk-6VP3XGEK.js.map} +1 -1
  33. package/dist/{chunk-KAP4GJHO.js → chunk-77WHPVXE.js} +10 -11
  34. package/dist/chunk-77WHPVXE.js.map +1 -0
  35. package/dist/{chunk-LALRCFSN.cjs → chunk-7DXLNNKH.cjs} +4 -4
  36. package/dist/{chunk-LALRCFSN.cjs.map → chunk-7DXLNNKH.cjs.map} +1 -1
  37. package/dist/{chunk-WEHUJ7ZS.cjs → chunk-ALU3KC4G.cjs} +267 -120
  38. package/dist/chunk-ALU3KC4G.cjs.map +1 -0
  39. package/dist/{chunk-Z2OC3UIW.cjs → chunk-BJMKQOY2.cjs} +11 -11
  40. package/dist/{chunk-Z2OC3UIW.cjs.map → chunk-BJMKQOY2.cjs.map} +1 -1
  41. package/dist/{chunk-WLKFWQSJ.js → chunk-CD73YHEH.js} +3 -3
  42. package/dist/{chunk-WLKFWQSJ.js.map → chunk-CD73YHEH.js.map} +1 -1
  43. package/dist/{chunk-BXV2QUIC.js → chunk-CSZRJ4RE.js} +6 -5
  44. package/dist/chunk-CSZRJ4RE.js.map +1 -0
  45. package/dist/{chunk-6M6A6WWW.cjs → chunk-D4ZUJTFB.cjs} +9 -10
  46. package/dist/chunk-D4ZUJTFB.cjs.map +1 -0
  47. package/dist/{chunk-XAUBQMQU.js → chunk-DCJ5MCJ3.js} +7 -7
  48. package/dist/{chunk-XAUBQMQU.js.map → chunk-DCJ5MCJ3.js.map} +1 -1
  49. package/dist/{chunk-Y66627E4.cjs → chunk-E7X2B66S.cjs} +24 -24
  50. package/dist/{chunk-Y66627E4.cjs.map → chunk-E7X2B66S.cjs.map} +1 -1
  51. package/dist/{chunk-6CLRANZA.js → chunk-EXQV452X.js} +3 -3
  52. package/dist/{chunk-6CLRANZA.js.map → chunk-EXQV452X.js.map} +1 -1
  53. package/dist/{chunk-EKFA76N4.js → chunk-F3X7Q4BF.js} +344 -453
  54. package/dist/chunk-F3X7Q4BF.js.map +1 -0
  55. package/dist/{chunk-XIG2IE3L.js → chunk-F6Y4IEQM.js} +5 -4
  56. package/dist/chunk-F6Y4IEQM.js.map +1 -0
  57. package/dist/{chunk-N24XBYNX.cjs → chunk-FAY3QDGC.cjs} +11 -10
  58. package/dist/chunk-FAY3QDGC.cjs.map +1 -0
  59. package/dist/{chunk-JD74LN7R.cjs → chunk-FK4EJD2I.cjs} +7 -6
  60. package/dist/chunk-FK4EJD2I.cjs.map +1 -0
  61. package/dist/{chunk-IX2LKBCD.js → chunk-GL7CFBVC.js} +176 -35
  62. package/dist/chunk-GL7CFBVC.js.map +1 -0
  63. package/dist/{chunk-77FOZCOT.js → chunk-GLUWH6JO.js} +6 -5
  64. package/dist/chunk-GLUWH6JO.js.map +1 -0
  65. package/dist/{chunk-RZQ6E5YZ.cjs → chunk-GM7QDQ24.cjs} +11 -11
  66. package/dist/{chunk-RZQ6E5YZ.cjs.map → chunk-GM7QDQ24.cjs.map} +1 -1
  67. package/dist/{chunk-G4WI3VW2.cjs → chunk-H5YVJB4K.cjs} +9 -10
  68. package/dist/chunk-H5YVJB4K.cjs.map +1 -0
  69. package/dist/{chunk-HRA3CPGG.js → chunk-HEN5WXXI.js} +9 -8
  70. package/dist/chunk-HEN5WXXI.js.map +1 -0
  71. package/dist/{chunk-LU7VALW5.js → chunk-I35DI7ES.js} +3 -3
  72. package/dist/{chunk-LU7VALW5.js.map → chunk-I35DI7ES.js.map} +1 -1
  73. package/dist/{chunk-TIZ4TS5V.cjs → chunk-ICYBIC6N.cjs} +8 -7
  74. package/dist/chunk-ICYBIC6N.cjs.map +1 -0
  75. package/dist/{chunk-2DYI7MIF.cjs → chunk-IEUDKUPM.cjs} +8 -8
  76. package/dist/{chunk-2DYI7MIF.cjs.map → chunk-IEUDKUPM.cjs.map} +1 -1
  77. package/dist/{chunk-AIDNODHJ.cjs → chunk-ITLS5LRF.cjs} +11 -11
  78. package/dist/{chunk-AIDNODHJ.cjs.map → chunk-ITLS5LRF.cjs.map} +1 -1
  79. package/dist/{chunk-M72RJVPC.js → chunk-JNIWFCKI.js} +3 -3
  80. package/dist/{chunk-M72RJVPC.js.map → chunk-JNIWFCKI.js.map} +1 -1
  81. package/dist/{chunk-LEJXBUBD.js → chunk-LISL36B6.js} +5 -5
  82. package/dist/{chunk-LEJXBUBD.js.map → chunk-LISL36B6.js.map} +1 -1
  83. package/dist/{chunk-3XJ7CS2C.cjs → chunk-LMWXF4LL.cjs} +554 -666
  84. package/dist/chunk-LMWXF4LL.cjs.map +1 -0
  85. package/dist/{chunk-BEURCLDV.cjs → chunk-LTCOPATU.cjs} +9 -3
  86. package/dist/chunk-LTCOPATU.cjs.map +1 -0
  87. package/dist/{chunk-TQKCU7CL.js → chunk-M5ZQBOIZ.js} +3 -3
  88. package/dist/{chunk-TQKCU7CL.js.map → chunk-M5ZQBOIZ.js.map} +1 -1
  89. package/dist/{chunk-A44COQJJ.cjs → chunk-MHCKWQR3.cjs} +8 -8
  90. package/dist/{chunk-A44COQJJ.cjs.map → chunk-MHCKWQR3.cjs.map} +1 -1
  91. package/dist/{chunk-7S7KKUO6.cjs → chunk-MRODLUGY.cjs} +4 -4
  92. package/dist/{chunk-7S7KKUO6.cjs.map → chunk-MRODLUGY.cjs.map} +1 -1
  93. package/dist/{chunk-BOTK6ZUP.js → chunk-MXSMAGDU.js} +3 -3
  94. package/dist/{chunk-BOTK6ZUP.js.map → chunk-MXSMAGDU.js.map} +1 -1
  95. package/dist/{chunk-5PZMMF4H.js → chunk-NFCKEBHI.js} +3 -3
  96. package/dist/{chunk-5PZMMF4H.js.map → chunk-NFCKEBHI.js.map} +1 -1
  97. package/dist/{chunk-6M4ODB2V.cjs → chunk-NNSKJCBM.cjs} +10 -10
  98. package/dist/{chunk-6M4ODB2V.cjs.map → chunk-NNSKJCBM.cjs.map} +1 -1
  99. package/dist/{chunk-4WL52CXU.cjs → chunk-NQ4AC2U4.cjs} +9 -9
  100. package/dist/{chunk-4WL52CXU.cjs.map → chunk-NQ4AC2U4.cjs.map} +1 -1
  101. package/dist/{chunk-YRXTIESB.cjs → chunk-P34DHHYQ.cjs} +4 -4
  102. package/dist/{chunk-YRXTIESB.cjs.map → chunk-P34DHHYQ.cjs.map} +1 -1
  103. package/dist/{chunk-HFPGOTVF.cjs → chunk-PAEJPLVN.cjs} +4 -4
  104. package/dist/{chunk-HFPGOTVF.cjs.map → chunk-PAEJPLVN.cjs.map} +1 -1
  105. package/dist/{chunk-S5RCBTSF.js → chunk-QFMXXUUT.js} +3 -3
  106. package/dist/{chunk-S5RCBTSF.js.map → chunk-QFMXXUUT.js.map} +1 -1
  107. package/dist/{chunk-V4XRLPEF.js → chunk-QGDKZDPN.js} +3 -3
  108. package/dist/{chunk-V4XRLPEF.js.map → chunk-QGDKZDPN.js.map} +1 -1
  109. package/dist/{chunk-DHLZIMP6.cjs → chunk-QUFSDDNU.cjs} +15 -15
  110. package/dist/{chunk-DHLZIMP6.cjs.map → chunk-QUFSDDNU.cjs.map} +1 -1
  111. package/dist/{chunk-BFWPZMG7.js → chunk-SDIBMLL5.js} +8 -8
  112. package/dist/{chunk-BFWPZMG7.js.map → chunk-SDIBMLL5.js.map} +1 -1
  113. package/dist/{chunk-GIW4L6HY.cjs → chunk-SWIBQFPH.cjs} +4 -4
  114. package/dist/{chunk-GIW4L6HY.cjs.map → chunk-SWIBQFPH.cjs.map} +1 -1
  115. package/dist/{chunk-JTFYYKDT.js → chunk-TAPQWDW2.js} +9 -4
  116. package/dist/chunk-TAPQWDW2.js.map +1 -0
  117. package/dist/{chunk-4GTXATWK.cjs → chunk-THEYGCYS.cjs} +4 -4
  118. package/dist/{chunk-4GTXATWK.cjs.map → chunk-THEYGCYS.cjs.map} +1 -1
  119. package/dist/{chunk-CJVMDRQB.cjs → chunk-TQI3KRXZ.cjs} +5 -4
  120. package/dist/chunk-TQI3KRXZ.cjs.map +1 -0
  121. package/dist/{chunk-LUSXDZPV.cjs → chunk-U2WLFOA3.cjs} +4 -4
  122. package/dist/{chunk-LUSXDZPV.cjs.map → chunk-U2WLFOA3.cjs.map} +1 -1
  123. package/dist/{chunk-FKCC2MED.js → chunk-UQPDFW4E.js} +3 -3
  124. package/dist/{chunk-FKCC2MED.js.map → chunk-UQPDFW4E.js.map} +1 -1
  125. package/dist/{chunk-CR3DGWUQ.js → chunk-VNNK6AKU.js} +3 -3
  126. package/dist/{chunk-CR3DGWUQ.js.map → chunk-VNNK6AKU.js.map} +1 -1
  127. package/dist/{chunk-ANIZEWTU.cjs → chunk-W4QN5CMG.cjs} +9 -8
  128. package/dist/chunk-W4QN5CMG.cjs.map +1 -0
  129. package/dist/{chunk-POQT2OIF.js → chunk-WDGCZDRG.js} +3 -3
  130. package/dist/{chunk-POQT2OIF.js.map → chunk-WDGCZDRG.js.map} +1 -1
  131. package/dist/{chunk-Q56IYTBZ.js → chunk-XAEAMI5H.js} +4 -4
  132. package/dist/{chunk-Q56IYTBZ.js.map → chunk-XAEAMI5H.js.map} +1 -1
  133. package/dist/{chunk-BWT67BI4.cjs → chunk-XAYVHS2B.cjs} +4 -4
  134. package/dist/{chunk-BWT67BI4.cjs.map → chunk-XAYVHS2B.cjs.map} +1 -1
  135. package/dist/{chunk-KIO7QFIV.cjs → chunk-YBFDBOUN.cjs} +8 -8
  136. package/dist/{chunk-KIO7QFIV.cjs.map → chunk-YBFDBOUN.cjs.map} +1 -1
  137. package/dist/{chunk-BNIFFFH3.js → chunk-YCXMSDSP.js} +4 -4
  138. package/dist/{chunk-BNIFFFH3.js.map → chunk-YCXMSDSP.js.map} +1 -1
  139. package/dist/{chunk-UVNG67DG.js → chunk-YDLNI7J6.js} +3 -3
  140. package/dist/{chunk-UVNG67DG.js.map → chunk-YDLNI7J6.js.map} +1 -1
  141. package/dist/{chunk-UAYYNWYJ.js → chunk-YHZXBDAW.js} +5 -4
  142. package/dist/chunk-YHZXBDAW.js.map +1 -0
  143. package/dist/{chunk-OKXUMCGM.js → chunk-YVTNFKZO.js} +5 -5
  144. package/dist/{chunk-OKXUMCGM.js.map → chunk-YVTNFKZO.js.map} +1 -1
  145. package/dist/{chunk-GJAGKFTR.js → chunk-ZJN6NTHE.js} +3 -3
  146. package/dist/{chunk-GJAGKFTR.js.map → chunk-ZJN6NTHE.js.map} +1 -1
  147. package/dist/{chunk-XV2RBL6D.js → chunk-ZW345YOI.js} +8 -9
  148. package/dist/chunk-ZW345YOI.js.map +1 -0
  149. package/dist/compact-session-H5TKLD55.cjs +54 -0
  150. package/dist/{compact-session-BEA3IOON.cjs.map → compact-session-H5TKLD55.cjs.map} +1 -1
  151. package/dist/compact-session-WNKKIIDW.js +17 -0
  152. package/dist/{compact-session-5BDD4HIB.js.map → compact-session-WNKKIIDW.js.map} +1 -1
  153. package/dist/compaction.cjs +16 -16
  154. package/dist/compaction.js +3 -3
  155. package/dist/concurrency.cjs +6 -6
  156. package/dist/concurrency.js +4 -4
  157. package/dist/context-VAYLPT4O.js +5 -0
  158. package/dist/{context-GWANQLX4.js.map → context-VAYLPT4O.js.map} +1 -1
  159. package/dist/context-ZV33V4DC.cjs +22 -0
  160. package/dist/{context-KNWVTZSY.cjs.map → context-ZV33V4DC.cjs.map} +1 -1
  161. package/dist/cron.cjs +28 -28
  162. package/dist/cron.js +27 -27
  163. package/dist/errors.cjs +21 -21
  164. package/dist/errors.js +2 -2
  165. package/dist/eval.cjs +31 -31
  166. package/dist/eval.js +27 -27
  167. package/dist/{executor-Y4MKPIUD.cjs → executor-OZSYXDKF.cjs} +23 -23
  168. package/dist/{executor-Y4MKPIUD.cjs.map → executor-OZSYXDKF.cjs.map} +1 -1
  169. package/dist/{executor-ORJS5GV2.js → executor-PAH72CB5.js} +7 -7
  170. package/dist/{executor-ORJS5GV2.js.map → executor-PAH72CB5.js.map} +1 -1
  171. package/dist/filesystem/index.cjs +7 -7
  172. package/dist/filesystem/index.js +3 -3
  173. package/dist/fs-session-store-6MY7PNI2.js +10 -0
  174. package/dist/{fs-session-store-4ALCDU3K.js.map → fs-session-store-6MY7PNI2.js.map} +1 -1
  175. package/dist/fs-session-store-7E7UPLF2.cjs +19 -0
  176. package/dist/{fs-session-store-IQYE35HX.cjs.map → fs-session-store-7E7UPLF2.cjs.map} +1 -1
  177. package/dist/generate-object-5SCEH2EE.cjs +20 -0
  178. package/dist/{generate-object-H3RNAM6S.cjs.map → generate-object-5SCEH2EE.cjs.map} +1 -1
  179. package/dist/generate-object-I7UD4NWN.js +7 -0
  180. package/dist/{generate-object-YJPDV5BS.js.map → generate-object-I7UD4NWN.js.map} +1 -1
  181. package/dist/index-manager-KKAK7NT3.js +10 -0
  182. package/dist/{index-manager-P7ZUX2RG.js.map → index-manager-KKAK7NT3.js.map} +1 -1
  183. package/dist/index-manager-R6ZJFEZF.cjs +19 -0
  184. package/dist/{index-manager-H7HUMW52.cjs.map → index-manager-R6ZJFEZF.cjs.map} +1 -1
  185. package/dist/index.cjs +124 -129
  186. package/dist/index.cjs.map +1 -1
  187. package/dist/index.d.cts +2 -1
  188. package/dist/index.d.ts +2 -1
  189. package/dist/index.js +45 -50
  190. package/dist/index.js.map +1 -1
  191. package/dist/{inject-session-SMH56NXP.cjs → inject-session-DM4SKTZO.cjs} +8 -8
  192. package/dist/{inject-session-SMH56NXP.cjs.map → inject-session-DM4SKTZO.cjs.map} +1 -1
  193. package/dist/{inject-session-V5FTK72N.js → inject-session-UXNJQTZ6.js} +6 -6
  194. package/dist/{inject-session-V5FTK72N.js.map → inject-session-UXNJQTZ6.js.map} +1 -1
  195. package/dist/internal/diagnostics.d.ts +54 -0
  196. package/dist/internal/local-agent/local-agent-invalidate.d.ts +0 -7
  197. package/dist/internal/local-agent/local-agent-lifecycle.d.ts +13 -0
  198. package/dist/internal/local-agent/local-agent.d.ts +1 -93
  199. package/dist/internal/persistence/index.cjs +25 -25
  200. package/dist/internal/persistence/index.js +6 -6
  201. package/dist/internal/persistence/sqlite-wal.d.cts +0 -9
  202. package/dist/internal/persistence/sqlite-wal.d.ts +0 -9
  203. package/dist/internal/persistence/transcript-ops.d.cts +14 -0
  204. package/dist/internal/persistence/transcript-ops.d.ts +14 -0
  205. package/dist/internal/plugins/lifecycle.d.cts +1 -0
  206. package/dist/internal/plugins/lifecycle.d.ts +1 -0
  207. package/dist/internal/runtime/fixtures/fixture-run-base.d.ts +19 -0
  208. package/dist/internal/runtime/registry/agent-registry.d.ts +0 -1
  209. package/dist/internal/security/index.cjs +13 -13
  210. package/dist/internal/security/index.js +3 -3
  211. package/dist/internal/security/redact.d.cts +0 -18
  212. package/dist/internal/security/redact.d.ts +0 -18
  213. package/dist/judge-call-SP3G3X2Y.cjs +22 -0
  214. package/dist/{judge-call-2FULQ6KL.cjs.map → judge-call-SP3G3X2Y.cjs.map} +1 -1
  215. package/dist/judge-call-TAEIXMYG.js +5 -0
  216. package/dist/{judge-call-D7R3ZTZS.js.map → judge-call-TAEIXMYG.js.map} +1 -1
  217. package/dist/models.cjs +22 -26
  218. package/dist/models.cjs.map +1 -1
  219. package/dist/models.js +13 -17
  220. package/dist/models.js.map +1 -1
  221. package/dist/path-safety.cjs +10 -10
  222. package/dist/path-safety.js +3 -3
  223. package/dist/persistence.cjs +27 -27
  224. package/dist/persistence.cjs.map +1 -1
  225. package/dist/persistence.js +8 -8
  226. package/dist/persistence.js.map +1 -1
  227. package/dist/project.cjs +5 -5
  228. package/dist/project.js +3 -3
  229. package/dist/registry-N3GTKYCI.cjs +46 -0
  230. package/dist/{registry-APYDISL6.cjs.map → registry-N3GTKYCI.cjs.map} +1 -1
  231. package/dist/registry-SOXE4RY6.js +9 -0
  232. package/dist/{registry-34IWWDQQ.js.map → registry-SOXE4RY6.js.map} +1 -1
  233. package/dist/retry.cjs +4 -4
  234. package/dist/retry.js +3 -3
  235. package/dist/sandbox/index.cjs +6 -6
  236. package/dist/sandbox/index.js +2 -2
  237. package/dist/server/errors-envelope.cjs +14 -14
  238. package/dist/server/errors-envelope.js +3 -3
  239. package/dist/session-transcript-6WKLYIN4.js +5 -0
  240. package/dist/{session-transcript-F2ANTA2M.js.map → session-transcript-6WKLYIN4.js.map} +1 -1
  241. package/dist/session-transcript-EAKR4D2W.cjs +50 -0
  242. package/dist/{session-transcript-JXFMPLOT.cjs.map → session-transcript-EAKR4D2W.cjs.map} +1 -1
  243. package/dist/skills.cjs +7 -7
  244. package/dist/skills.js +5 -5
  245. package/dist/stream-object-OFM66VUT.js +7 -0
  246. package/dist/{stream-object-WUQSSRY2.js.map → stream-object-OFM66VUT.js.map} +1 -1
  247. package/dist/stream-object-Y7YCX3BI.cjs +20 -0
  248. package/dist/{stream-object-QEQJJDTI.cjs.map → stream-object-Y7YCX3BI.cjs.map} +1 -1
  249. package/dist/subagents-loader.cjs +23 -8
  250. package/dist/subagents-loader.cjs.map +1 -1
  251. package/dist/subagents-loader.d.cts +18 -3
  252. package/dist/subagents-loader.d.ts +18 -3
  253. package/dist/subagents-loader.js +23 -8
  254. package/dist/subagents-loader.js.map +1 -1
  255. package/dist/subscription/index.cjs +3 -3
  256. package/dist/subscription/index.js +2 -2
  257. package/dist/task-store.cjs +7 -7
  258. package/dist/task-store.js +4 -4
  259. package/dist/workflow.cjs +27 -27
  260. package/dist/workflow.js +6 -6
  261. package/package.json +1 -1
  262. package/dist/agent-H6HL5ITH.js +0 -42
  263. package/dist/agent-P77NPBF4.cjs +0 -51
  264. package/dist/chunk-3XJ7CS2C.cjs.map +0 -1
  265. package/dist/chunk-6M6A6WWW.cjs.map +0 -1
  266. package/dist/chunk-77FOZCOT.js.map +0 -1
  267. package/dist/chunk-7BTE3RXJ.js.map +0 -1
  268. package/dist/chunk-ANIZEWTU.cjs.map +0 -1
  269. package/dist/chunk-BEURCLDV.cjs.map +0 -1
  270. package/dist/chunk-BXV2QUIC.js.map +0 -1
  271. package/dist/chunk-CJVMDRQB.cjs.map +0 -1
  272. package/dist/chunk-D42XHI4O.cjs.map +0 -1
  273. package/dist/chunk-EKFA76N4.js.map +0 -1
  274. package/dist/chunk-G4WI3VW2.cjs.map +0 -1
  275. package/dist/chunk-HRA3CPGG.js.map +0 -1
  276. package/dist/chunk-IX2LKBCD.js.map +0 -1
  277. package/dist/chunk-JD74LN7R.cjs.map +0 -1
  278. package/dist/chunk-JTFYYKDT.js.map +0 -1
  279. package/dist/chunk-KAP4GJHO.js.map +0 -1
  280. package/dist/chunk-MZ5ZRORA.cjs.map +0 -1
  281. package/dist/chunk-N24XBYNX.cjs.map +0 -1
  282. package/dist/chunk-S2BBRVQX.js.map +0 -1
  283. package/dist/chunk-TIZ4TS5V.cjs.map +0 -1
  284. package/dist/chunk-UAYYNWYJ.js.map +0 -1
  285. package/dist/chunk-WEHUJ7ZS.cjs.map +0 -1
  286. package/dist/chunk-XIG2IE3L.js.map +0 -1
  287. package/dist/chunk-XV2RBL6D.js.map +0 -1
  288. package/dist/compact-session-5BDD4HIB.js +0 -17
  289. package/dist/compact-session-BEA3IOON.cjs +0 -54
  290. package/dist/context-GWANQLX4.js +0 -5
  291. package/dist/context-KNWVTZSY.cjs +0 -22
  292. package/dist/fs-session-store-4ALCDU3K.js +0 -10
  293. package/dist/fs-session-store-IQYE35HX.cjs +0 -19
  294. package/dist/generate-object-H3RNAM6S.cjs +0 -20
  295. package/dist/generate-object-YJPDV5BS.js +0 -7
  296. package/dist/index-manager-H7HUMW52.cjs +0 -19
  297. package/dist/index-manager-P7ZUX2RG.js +0 -10
  298. package/dist/judge-call-2FULQ6KL.cjs +0 -22
  299. package/dist/judge-call-D7R3ZTZS.js +0 -5
  300. package/dist/registry-34IWWDQQ.js +0 -9
  301. package/dist/registry-APYDISL6.cjs +0 -46
  302. package/dist/session-transcript-F2ANTA2M.js +0 -5
  303. package/dist/session-transcript-JXFMPLOT.cjs +0 -50
  304. package/dist/stream-object-QEQJJDTI.cjs +0 -20
  305. package/dist/stream-object-WUQSSRY2.js +0 -7
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal/workflow/ctx.ts","../src/internal/workflow/error-shape.ts","../src/internal/workflow/executor-helpers.ts","../src/internal/workflow/run-id.ts","../src/internal/workflow/single-flight.ts","../src/internal/workflow/retry-policy.ts","../src/internal/workflow/step-agent.ts","../src/internal/workflow/step-branch.ts","../src/internal/workflow/step-dowhile.ts","../src/internal/workflow/step-fn.ts","../src/internal/workflow/step-foreach.ts","../src/internal/workflow/step-parallel.ts","../src/internal/workflow/step-sleep.ts","../src/internal/workflow/telemetry.ts","../src/internal/workflow/executor.ts"],"names":["WorkflowStateError","WorkflowAlreadyRunningError","UnsupportedRunOperationError","redactSecrets","WorkflowMaxIterationsExceededError","WorkflowCompensateNotImplementedError","createSemaphore","outputs","settled","WorkflowParallelError","getTracer","noopSpan","WorkflowOutputError","WorkflowInputError","getSnapshotStoreFor","WorkflowSnapshotNotFoundError","WorkflowResumeStepNotFoundError"],"mappings":"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","file":"executor-Y4MKPIUD.cjs","sourcesContent":["/**\n * Build the `StepContext` passed to every step.fn. The `suspend` method\n * throws a `WorkflowSuspendedSentinel` (defined here) that the executor\n * catches to persist a snapshot (D236).\n *\n * @internal\n */\n\nimport type { StepContext } from \"../../types/workflow.js\";\n\n/** Sentinel thrown by `ctx.suspend()`; only the executor catches it. */\nexport class WorkflowSuspendedSentinel extends Error {\n override readonly name = \"WorkflowSuspendedSentinel\";\n constructor(public readonly payload?: unknown) {\n super(\"__workflow_suspended__\");\n }\n}\n\n/** SE29 — the per-run shared-state seam wired into `StepContext.state`/`setState`. */\nexport interface StateController {\n getState: () => unknown;\n setState: (next: unknown) => void;\n}\n\nexport function makeStepContext(\n runId: string,\n signal: AbortSignal,\n state: StateController,\n): StepContext {\n return {\n runId,\n signal,\n log: {\n debug: (msg, attrs) => emit(\"debug\", runId, msg, attrs),\n info: (msg, attrs) => emit(\"info\", runId, msg, attrs),\n warn: (msg, attrs) => emit(\"warn\", runId, msg, attrs),\n },\n suspend: async (payload?: unknown) => {\n throw new WorkflowSuspendedSentinel(payload);\n },\n // SE29 — read reflects the current shared state; write goes through the\n // controller (which validates against `stateSchema`).\n get state(): unknown {\n return state.getState();\n },\n setState: (next: unknown): void => state.setState(next),\n };\n}\n\nfunction emit(\n level: \"debug\" | \"info\" | \"warn\",\n runId: string,\n msg: string,\n attrs?: Record<string, unknown>,\n): void {\n const tag = `[workflow ${runId}]`;\n if (attrs !== undefined) {\n if (level === \"warn\") console.warn(tag, msg, attrs);\n else console.log(tag, msg, attrs);\n } else {\n if (level === \"warn\") console.warn(tag, msg);\n else console.log(tag, msg);\n }\n}\n\n/**\n * Combine the caller-supplied signal with the flight signal so abort on\n * either side cancels the workflow run.\n */\nexport function combineSignals(...signals: ReadonlyArray<AbortSignal | undefined>): AbortSignal {\n const valid = signals.filter((s): s is AbortSignal => s !== undefined);\n if (valid.length === 0) return new AbortController().signal;\n if (valid.length === 1) return valid[0]!;\n const ctrl = new AbortController();\n for (const s of valid) {\n if (s.aborted) {\n ctrl.abort(s.reason);\n break;\n }\n s.addEventListener(\"abort\", () => ctrl.abort(s.reason), { once: true });\n }\n return ctrl.signal;\n}\n","/**\n * Helper to normalize unknown thrown values to `{ name, message }` shape\n * for use in `StepResult.error` / `WorkflowRun.error`.\n *\n * @internal\n */\n\nexport function errToShape(err: unknown): { name: string; message: string } {\n if (err instanceof Error) {\n return { name: err.name, message: err.message };\n }\n return { name: \"Error\", message: String(err) };\n}\n","/**\n * Pure helpers extracted from the workflow executor (G8 focus): run assembly,\n * abort, whole-workflow schema validation (SE27), and the shared-state\n * controller (SE29). No executor-internal dependencies — safe to import both ways.\n *\n * @internal\n */\n\nimport type { ZodType } from \"zod\";\nimport type { StepResult, WorkflowOptions, WorkflowRun } from \"../../types/workflow.js\";\nimport { WorkflowStateError } from \"../../types/workflow.js\";\nimport type { StateController } from \"./ctx.js\";\n\nexport interface AssembleParams<TO> {\n runId: string;\n name: string;\n status: WorkflowRun[\"status\"];\n stepResults: ReadonlyArray<StepResult>;\n startedAt: number;\n output?: TO;\n error?: { name: string; message: string };\n}\n\nexport function assembleRun<TO>(params: AssembleParams<TO>): WorkflowRun<TO> {\n return {\n id: params.runId,\n name: params.name,\n status: params.status,\n startedAt: params.startedAt,\n endedAt: Date.now(),\n stepResults: params.stepResults,\n ...(params.output !== undefined ? { output: params.output } : {}),\n ...(params.error !== undefined ? { error: params.error } : {}),\n };\n}\n\nexport function abortRun<T>(\n name: string,\n runId: string,\n startedAt: number,\n stepResults: StepResult[],\n signal: AbortSignal,\n): WorkflowRun<T> {\n return assembleRun<T>({\n runId,\n name,\n status: \"cancelled\",\n stepResults,\n startedAt,\n error: { name: \"AbortError\", message: String(signal.reason ?? \"Aborted\") },\n });\n}\n\n/**\n * SE27 — validate a value against a whole-workflow schema. Returns a compact\n * issues string on failure, `undefined` when the schema is absent or matches.\n */\nexport function validateWorkflowSchema(\n schema: ZodType | undefined,\n value: unknown,\n): string | undefined {\n if (schema === undefined) return undefined;\n let parsed: ReturnType<ZodType[\"safeParse\"]>;\n try {\n parsed = schema.safeParse(value);\n } catch {\n // A schema with an async refinement throws synchronously from safeParse\n // (\"Encountered Promise during synchronous parse\"). Surface it as a\n // validation issue (→ status:\"failed\") instead of escaping run() (never-throw).\n return \"schema uses async refinements, which whole-workflow validation does not support (use a synchronous Zod schema)\";\n }\n if (parsed.success) return undefined;\n return parsed.error.issues\n .map((issue) => `${issue.path.join(\".\") || \"(root)\"}: ${issue.message}`)\n .join(\"; \");\n}\n\n/** SE29 — the per-run shared-state holder; `setState` validates against `stateSchema`. */\nexport function makeStateController(options: WorkflowOptions, initial: unknown): StateController {\n let current = initial;\n return {\n getState: () => current,\n setState: (next: unknown) => {\n const issues = validateWorkflowSchema(options.stateSchema, next);\n if (issues !== undefined) throw new WorkflowStateError(options.name, issues);\n current = next;\n },\n };\n}\n","/**\n * Generate a short, deterministic workflow run identifier.\n *\n * Format: `wfr-<8 hex chars>`. Used for span keys, snapshot filenames, and\n * single-flight registry keys.\n *\n * @internal\n */\n\nexport function mintRunId(): string {\n return `wfr-${globalThis.crypto.randomUUID().replace(/-/g, \"\").slice(0, 8)}`;\n}\n","/**\n * Single-flight registry for in-flight workflow runs (ADR D242).\n *\n * Key = `${workflowId}:${runId}`. Throws `WorkflowAlreadyRunningError` on\n * duplicate. Process crash auto-releases (in-memory map). Pattern mirrors\n * `internal/eval/single-flight.ts` (D213).\n *\n * EC-5 absorbed: lock uses `workflowId` (minted at `.commit()`), not the\n * user-supplied `name`, so two `Workflow` instances sharing a name don't\n * collide on each other's locks.\n *\n * @internal\n */\n\nimport { WorkflowAlreadyRunningError } from \"../../types/workflow.js\";\n\ninterface Flight {\n controller: AbortController;\n}\n\nconst registry = new Map<string, Flight>();\n\nfunction key(workflowId: string, runId: string): string {\n return `${workflowId}:${runId}`;\n}\n\nexport interface AcquiredFlight {\n signal: AbortSignal;\n release: () => void;\n}\n\nexport function acquireSingleFlight(\n workflowId: string,\n runId: string,\n workflowName: string,\n): AcquiredFlight {\n const k = key(workflowId, runId);\n if (registry.has(k)) {\n throw new WorkflowAlreadyRunningError(workflowName, runId);\n }\n const controller = new AbortController();\n registry.set(k, { controller });\n return {\n signal: controller.signal,\n release: () => {\n registry.delete(k);\n },\n };\n}\n","/**\n * Retry wrapper with exponential backoff (ADR D237).\n *\n * `withRetry(fn, policy, signal)` retries on throw until success or\n * `maxAttempts` reached. Aborts mid-backoff when signal fires.\n * Non-retryable errors (by name) propagate immediately.\n *\n * @internal\n */\n\nimport type { RetryPolicy } from \"../../types/workflow.js\";\n\nconst DEFAULT_NON_RETRYABLE = [\"AbortError\", \"WorkflowSnapshotNotFoundError\", \"ConfigurationError\"];\n\ninterface BackoffConfig {\n init: number;\n coef: number;\n cap: number;\n nonRetryable: Set<string>;\n max: number;\n}\n\nfunction backoffConfigFromPolicy(policy: RetryPolicy): BackoffConfig {\n return {\n max: policy.maxAttempts,\n init: policy.initialBackoffMs ?? 1000,\n coef: policy.backoffCoefficient ?? 2.0,\n cap: policy.maximumBackoffMs ?? 30_000,\n nonRetryable: new Set(policy.nonRetryableErrors ?? DEFAULT_NON_RETRYABLE),\n };\n}\n\nfunction throwIfAborted(signal: AbortSignal): void {\n if (signal.aborted) {\n throw new DOMException(String(signal.reason ?? \"Aborted\"), \"AbortError\");\n }\n}\n\nfunction shouldRethrow(err: unknown, attempt: number, cfg: BackoffConfig): boolean {\n const errName = err instanceof Error ? err.name : \"Error\";\n return cfg.nonRetryable.has(errName) || attempt === cfg.max;\n}\n\nasync function tryOnce<T>(\n fn: () => Promise<T>,\n attempt: number,\n cfg: BackoffConfig,\n signal: AbortSignal,\n): Promise<{ value: T; attempts: number } | { kind: \"retry\" }> {\n try {\n const value = await fn();\n return { value, attempts: attempt };\n } catch (err) {\n if (shouldRethrow(err, attempt, cfg)) throw err;\n await abortableSleep(Math.min(cfg.init * cfg.coef ** (attempt - 1), cfg.cap), signal);\n return { kind: \"retry\" };\n }\n}\n\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n policy: RetryPolicy,\n signal: AbortSignal,\n): Promise<{ value: T; attempts: number }> {\n const cfg = backoffConfigFromPolicy(policy);\n for (let attempt = 1; attempt <= cfg.max; attempt += 1) {\n throwIfAborted(signal);\n const result = await tryOnce(fn, attempt, cfg, signal);\n if (\"value\" in result) return result;\n }\n // Unreachable: tryOnce throws on the final attempt when shouldRethrow returns true.\n throw new Error(\"withRetry: exhausted attempts without throwing\");\n}\n\nexport async function abortableSleep(ms: number, signal: AbortSignal): Promise<void> {\n if (signal.aborted) {\n throw new DOMException(String(signal.reason ?? \"Aborted\"), \"AbortError\");\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n cleanup();\n resolve();\n }, ms);\n const onAbort = (): void => {\n clearTimeout(timer);\n cleanup();\n reject(new DOMException(String(signal.reason ?? \"Aborted\"), \"AbortError\"));\n };\n const cleanup = (): void => {\n signal.removeEventListener(\"abort\", onAbort);\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n","/**\n * Execute an `AgentStep` — render the prompt template, call `agent.send`,\n * wait for completion, return the result text as step output (ADR D244,\n * D245).\n *\n * Cloud guard: agents marked as `CloudAgent` throw `UnsupportedRunOperationError`\n * (workflows are local-only in v1).\n *\n * @internal\n */\n\nimport { UnsupportedRunOperationError } from \"../../errors.js\";\nimport type { AgentStep, StepContext, StepResult } from \"../../types/workflow.js\";\nimport { WorkflowSuspendedSentinel } from \"./ctx.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport { withRetry } from \"./retry-policy.js\";\n\nexport async function runAgentStep(\n step: AgentStep,\n input: unknown,\n ctx: StepContext,\n): Promise<StepResult> {\n const startedAt = Date.now();\n // D244: cloud guard — workflows are LocalAgent-only in v1.\n const agentId = step.agent.agentId;\n if (typeof agentId === \"string\" && agentId.startsWith(\"bc-\")) {\n return {\n stepId: step.id,\n kind: \"agent\",\n status: \"failed\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n error: errToShape(\n new UnsupportedRunOperationError(\n \"Workflow agent steps not supported on CloudAgent yet (D244).\" +\n ` agent=\"${agentId}\", step=\"${step.id}\"`,\n \"workflow\",\n ),\n ),\n };\n }\n\n let prompt: string;\n try {\n prompt =\n typeof step.promptTemplate === \"string\" ? step.promptTemplate : step.promptTemplate(input);\n } catch (err) {\n return {\n stepId: step.id,\n kind: \"agent\",\n status: \"failed\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n error: errToShape(err),\n };\n }\n if (typeof prompt !== \"string\" || prompt.length === 0) {\n return {\n stepId: step.id,\n kind: \"agent\",\n status: \"failed\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n error: errToShape(\n new Error(`agentStep \"${step.id}\": rendered prompt must be a non-empty string`),\n ),\n };\n }\n\n const exec = async (): Promise<string> => {\n // SE3 — forward the step's provenance onto the agent's turn (metadata-only).\n const run = await step.agent.send(\n prompt,\n step.origin !== undefined ? { origin: step.origin } : undefined,\n );\n const result = await run.wait();\n if (result.status === \"finished\") {\n return result.result ?? \"\";\n }\n if (result.status === \"error\") {\n throw (result as { error?: Error }).error ?? new Error(\"agent.send errored\");\n }\n throw new Error(`Unexpected agent status: ${result.status}`);\n };\n\n try {\n const { value, attempts } =\n step.retry !== undefined\n ? await withRetry(exec, step.retry, ctx.signal)\n : { value: await exec(), attempts: 1 };\n return {\n stepId: step.id,\n kind: \"agent\",\n status: \"completed\",\n attempts,\n durationMs: Date.now() - startedAt,\n output: value,\n };\n } catch (err) {\n // Re-throw suspend sentinel so the executor can persist a snapshot.\n if (err instanceof WorkflowSuspendedSentinel) throw err;\n return {\n stepId: step.id,\n kind: \"agent\",\n status: \"failed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n error: errToShape(err),\n };\n }\n}\n","/**\n * Execute a `BranchStep` — first-match-wins predicates + optional fallback.\n *\n * EC-2 absorbed: predicates that THROW are treated as \"no match\" + stderr\n * warn — user-code bugs in predicates don't take down the whole workflow.\n *\n * @internal\n */\n\nimport type {\n BranchStep,\n Step,\n StepContext,\n StepResult,\n WorkflowOptions,\n} from \"../../types/workflow.js\";\nimport { redactSecrets } from \"../security/redact.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport type { DispatchFn } from \"./step-parallel.js\";\n\nexport async function runBranchStep(\n step: BranchStep,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n dispatch: DispatchFn,\n): Promise<StepResult> {\n const startedAt = Date.now();\n\n for (let i = 0; i < step.predicates.length; i += 1) {\n const pair = step.predicates[i]!;\n const [predicate, branch] = pair;\n // EC-2: predicate throw → warn + treat as no-match.\n let matched = false;\n try {\n matched = await Promise.resolve(predicate(input));\n } catch (err) {\n const errText = err instanceof Error ? err.message : String(err);\n console.warn(\n redactSecrets(\n `[workflow] branch \"${step.id}\" predicate ${i} threw, treating as no-match: ${errText}`,\n ),\n );\n }\n if (matched) {\n const r = await runInnerSequence(branch, input, ctx, options, prevStepResults, dispatch);\n return {\n ...r,\n stepId: step.id,\n kind: \"branch\",\n durationMs: Date.now() - startedAt,\n };\n }\n }\n\n if (step.fallback !== undefined) {\n const r = await runInnerSequence(step.fallback, input, ctx, options, prevStepResults, dispatch);\n return {\n ...r,\n stepId: step.id,\n kind: \"branch\",\n durationMs: Date.now() - startedAt,\n };\n }\n\n // No match, no fallback → pass input through unchanged.\n return {\n stepId: step.id,\n kind: \"branch\",\n status: \"skipped\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n output: input,\n };\n}\n\nasync function runInnerSequence(\n branch: ReadonlyArray<Step>,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n dispatch: DispatchFn,\n): Promise<StepResult> {\n let acc: unknown = input;\n let lastAttempts = 1;\n for (const inner of branch) {\n const r = await dispatch(inner, acc, ctx, options, prevStepResults);\n lastAttempts = r.attempts;\n if (r.status === \"failed\") {\n return {\n stepId: inner.id,\n kind: \"branch\",\n status: \"failed\",\n attempts: r.attempts,\n durationMs: 0,\n error: r.error ?? errToShape(new Error(\"branch inner step failed\")),\n };\n }\n acc = r.output;\n }\n return {\n stepId: \"__branch-completed__\",\n kind: \"branch\",\n status: \"completed\",\n attempts: lastAttempts,\n durationMs: 0,\n output: acc,\n };\n}\n","/**\n * Execute a `DowhileStep` — loop the inner step until `condFn` returns\n * false or `maxIterations` is reached (default 100).\n *\n * @internal\n */\n\nimport type {\n DowhileStep,\n StepContext,\n StepResult,\n WorkflowOptions,\n} from \"../../types/workflow.js\";\nimport { WorkflowMaxIterationsExceededError } from \"../../types/workflow.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport type { DispatchFn } from \"./step-parallel.js\";\n\nexport async function runDowhileStep(\n step: DowhileStep,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n dispatch: DispatchFn,\n): Promise<StepResult> {\n const startedAt = Date.now();\n const maxIter = step.maxIterations ?? 100;\n let acc = input;\n let i = 0;\n while (true) {\n if (i >= maxIter) {\n return {\n stepId: step.id,\n kind: \"dowhile\",\n status: \"failed\",\n attempts: i,\n durationMs: Date.now() - startedAt,\n error: errToShape(new WorkflowMaxIterationsExceededError(step.id, maxIter)),\n };\n }\n const r = await dispatch(step.step, acc, ctx, options, prevStepResults);\n if (r.status === \"failed\") {\n return {\n stepId: step.id,\n kind: \"dowhile\",\n status: \"failed\",\n attempts: i + 1,\n durationMs: Date.now() - startedAt,\n error: r.error,\n };\n }\n acc = r.output;\n i += 1;\n let shouldContinue = false;\n try {\n shouldContinue = await Promise.resolve(step.condFn(acc, i));\n } catch (err) {\n return {\n stepId: step.id,\n kind: \"dowhile\",\n status: \"failed\",\n attempts: i,\n durationMs: Date.now() - startedAt,\n error: errToShape(err),\n };\n }\n if (!shouldContinue) break;\n }\n return {\n stepId: step.id,\n kind: \"dowhile\",\n status: \"completed\",\n attempts: i,\n durationMs: Date.now() - startedAt,\n output: acc,\n };\n}\n","/**\n * Execute a `FnStep` — call the user-supplied function with `input` + `ctx`.\n * Wraps in `withRetry` if a retry policy is set (D237).\n *\n * Validates input/output via Zod when schemas are supplied. EC-4 / D229\n * pattern: empty/undefined input parses as `{}` only when schema is defined.\n *\n * @internal\n */\n\nimport type { FnStep, StepContext, StepResult } from \"../../types/workflow.js\";\nimport { WorkflowCompensateNotImplementedError } from \"../../types/workflow.js\";\nimport { WorkflowSuspendedSentinel } from \"./ctx.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport { withRetry } from \"./retry-policy.js\";\n\nfunction failedFnResult(\n stepId: string,\n attempts: number,\n startedAt: number,\n err: unknown,\n): StepResult {\n return {\n stepId,\n kind: \"fn\",\n status: \"failed\",\n attempts,\n durationMs: Date.now() - startedAt,\n error: errToShape(err),\n };\n}\n\nfunction validate(schema: { parse: (v: unknown) => unknown } | undefined, value: unknown): unknown {\n if (schema === undefined) return undefined;\n schema.parse(value);\n return undefined;\n}\n\nasync function execWithRetry(\n step: FnStep,\n input: unknown,\n ctx: StepContext,\n): Promise<{ value: unknown; attempts: number }> {\n const exec = async (): Promise<unknown> => step.fn(input, ctx);\n if (step.retry !== undefined) return withRetry(exec, step.retry, ctx.signal);\n return { value: await exec(), attempts: 1 };\n}\n\nexport async function runFnStep(\n step: FnStep,\n input: unknown,\n ctx: StepContext,\n): Promise<StepResult> {\n const startedAt = Date.now();\n // D238: saga engine not implemented in v1 — surface intent loudly.\n if (step.compensate !== undefined) {\n return failedFnResult(\n step.id,\n 0,\n startedAt,\n new WorkflowCompensateNotImplementedError(step.id),\n );\n }\n try {\n validate(step.inputSchema, input);\n } catch (err) {\n return failedFnResult(step.id, 0, startedAt, err);\n }\n\n try {\n const { value, attempts } = await execWithRetry(step, input, ctx);\n try {\n validate(step.outputSchema, value);\n } catch (err) {\n return failedFnResult(step.id, attempts, startedAt, err);\n }\n return {\n stepId: step.id,\n kind: \"fn\",\n status: \"completed\",\n attempts,\n durationMs: Date.now() - startedAt,\n output: value,\n };\n } catch (err) {\n if (err instanceof WorkflowSuspendedSentinel) throw err;\n return failedFnResult(step.id, 1, startedAt, err);\n }\n}\n","/**\n * Execute a `ForeachStep` — map a step over the output of an upstream step.\n *\n * EC-7 absorbed: `iterableFrom` MUST reference a top-level step (one of\n * `prevStepResults`). Inner steps from inside `.parallel` / `.branch` /\n * `.foreach` are not reachable.\n *\n * @internal\n */\n\nimport type {\n ForeachStep,\n StepContext,\n StepResult,\n WorkflowOptions,\n} from \"../../types/workflow.js\";\nimport { createSemaphore } from \"../runtime/concurrency/async-semaphore.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport type { DispatchFn } from \"./step-parallel.js\";\n\nexport async function runForeachStep(\n step: ForeachStep,\n _input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n dispatch: DispatchFn,\n): Promise<StepResult> {\n const startedAt = Date.now();\n\n // EC-7: top-level step lookup only.\n const sourceResult = prevStepResults.find((r) => r.stepId === step.iterableFrom);\n if (sourceResult === undefined) {\n return {\n stepId: step.id,\n kind: \"foreach\",\n status: \"failed\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n error: errToShape(\n new Error(\n `foreach.iterableFrom \"${step.iterableFrom}\" not found in top-level steps. ` +\n `It must reference an earlier top-level step ID — nested step IDs inside ` +\n `parallel/branch/foreach blocks are not visible here.`,\n ),\n ),\n };\n }\n\n const items = sourceResult.output;\n if (!Array.isArray(items)) {\n return {\n stepId: step.id,\n kind: \"foreach\",\n status: \"failed\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n error: errToShape(\n new Error(\n `foreach.iterableFrom \"${step.iterableFrom}\" output must be Array, got ${typeof items}.`,\n ),\n ),\n };\n }\n\n if (items.length === 0) {\n return {\n stepId: step.id,\n kind: \"foreach\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: [],\n };\n }\n\n const concurrency = step.concurrency ?? 4;\n const sem = createSemaphore(Math.max(1, Math.min(concurrency, items.length)));\n const failures: Error[] = [];\n const outputs: unknown[] = new Array(items.length);\n\n await Promise.all(\n items.map(async (item, idx) => {\n const release = await sem.acquire();\n try {\n const r = await dispatch(step.step, item, ctx, options, prevStepResults);\n if (r.status === \"failed\") {\n failures.push(new Error(`foreach item ${idx} failed: ${r.error?.message ?? \"unknown\"}`));\n } else {\n outputs[idx] = r.output;\n }\n } finally {\n release();\n }\n }),\n );\n\n if (failures.length > 0) {\n return {\n stepId: step.id,\n kind: \"foreach\",\n status: \"failed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n error: errToShape(\n new AggregateError(failures, `foreach \"${step.id}\" had ${failures.length} failure(s)`),\n ),\n };\n }\n\n return {\n stepId: step.id,\n kind: \"foreach\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: outputs,\n };\n}\n","/**\n * Execute a `ParallelStep` — run N branches concurrently.\n *\n * - `errorPolicy: \"fail-fast\"` (default): first branch error aborts the rest\n * via a derived AbortSignal; `WorkflowParallelError` aggregates failures.\n * - `errorPolicy: \"collect\"`: all branches complete; output is array of\n * `{ ok: true, value } | { ok: false, error }`.\n *\n * Concurrency: bounded by `step.concurrency ?? branches.length` (D240). All\n * branches run inside the same `AsyncSemaphore`.\n *\n * EC-6 absorbed: empty `branches[]` returns `output: []` without error.\n *\n * @internal\n */\n\nimport type {\n ParallelStep,\n Step,\n StepContext,\n StepResult,\n WorkflowOptions,\n} from \"../../types/workflow.js\";\nimport { WorkflowParallelError } from \"../../types/workflow.js\";\nimport { createSemaphore } from \"../runtime/concurrency/async-semaphore.js\";\nimport { errToShape } from \"./error-shape.js\";\n\nexport type DispatchFn = (\n step: Step,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n) => Promise<StepResult>;\n\nexport async function runParallelStep(\n step: ParallelStep,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n _prevStepResults: ReadonlyArray<StepResult>,\n dispatch: DispatchFn,\n): Promise<StepResult> {\n const startedAt = Date.now();\n const policy = step.errorPolicy ?? \"fail-fast\";\n const branchCount = step.branches.length;\n\n // EC-6: empty branches → empty output, no error.\n if (branchCount === 0) {\n return {\n stepId: step.id,\n kind: \"parallel\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: [],\n };\n }\n\n const concurrency = step.concurrency ?? branchCount;\n const sem = createSemaphore(Math.max(1, Math.min(concurrency, branchCount)));\n\n // Derived signal for fail-fast: aborts on first branch failure.\n const failFastCtrl = policy === \"fail-fast\" ? new AbortController() : undefined;\n const branchSignal =\n policy === \"fail-fast\" ? mergeSignals(ctx.signal, failFastCtrl!.signal) : ctx.signal;\n\n // Gate each branch through the semaphore — acquire BEFORE running so the\n // permit cap is honored. (Eager-start would defeat concurrency limits.)\n const semBranchPromises = step.branches.map(async (branch, branchIdx) => {\n const release = await sem.acquire();\n try {\n return await runBranch(\n branch,\n input,\n { ...ctx, signal: branchSignal },\n options,\n dispatch,\n branchIdx,\n );\n } finally {\n release();\n }\n });\n\n if (policy === \"fail-fast\") {\n try {\n const outputs = await Promise.all(semBranchPromises);\n return {\n stepId: step.id,\n kind: \"parallel\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: outputs,\n };\n } catch (err) {\n failFastCtrl?.abort(err);\n // Collect any settled rejections so the aggregate has all errors.\n const settled = await Promise.allSettled(semBranchPromises);\n const errors = settled\n .filter((s): s is PromiseRejectedResult => s.status === \"rejected\")\n .map((s) => (s.reason instanceof Error ? s.reason : new Error(String(s.reason))));\n return {\n stepId: step.id,\n kind: \"parallel\",\n status: \"failed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n error: errToShape(new WorkflowParallelError(errors, step.id)),\n output: undefined,\n };\n }\n }\n\n // collect mode\n const settled = await Promise.allSettled(semBranchPromises);\n const outputs = settled.map((s) =>\n s.status === \"fulfilled\"\n ? { ok: true as const, value: s.value }\n : { ok: false as const, error: errToShape(s.reason) },\n );\n return {\n stepId: step.id,\n kind: \"parallel\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: outputs,\n };\n}\n\nasync function runBranch(\n branch: ReadonlyArray<Step>,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n dispatch: DispatchFn,\n branchIdx: number,\n): Promise<unknown> {\n let acc: unknown = input;\n for (const inner of branch) {\n const r = await dispatch(inner, acc, ctx, options, []);\n if (r.status === \"failed\") {\n throw new Error(\n `parallel branch ${branchIdx} step \"${inner.id}\" failed: ${r.error?.message ?? \"unknown\"}`,\n );\n }\n acc = r.output;\n }\n return acc;\n}\n\nfunction mergeSignals(a: AbortSignal, b: AbortSignal): AbortSignal {\n if (a.aborted) return a;\n if (b.aborted) return b;\n const ctrl = new AbortController();\n const onAbortA = (): void => ctrl.abort(a.reason);\n const onAbortB = (): void => ctrl.abort(b.reason);\n a.addEventListener(\"abort\", onAbortA, { once: true });\n b.addEventListener(\"abort\", onAbortB, { once: true });\n return ctrl.signal;\n}\n","/**\n * Execute a `SleepStep` — pause for `durationMs`. Aborts mid-sleep\n * when the signal fires (D245).\n *\n * @internal\n */\n\nimport type { SleepStep, StepContext, StepResult } from \"../../types/workflow.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport { abortableSleep } from \"./retry-policy.js\";\n\nexport async function runSleepStep(\n step: SleepStep,\n input: unknown,\n ctx: StepContext,\n): Promise<StepResult> {\n const startedAt = Date.now();\n try {\n await abortableSleep(step.durationMs, ctx.signal);\n return {\n stepId: step.id,\n kind: \"sleep\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: input, // sleep is a pass-through\n };\n } catch (err) {\n return {\n stepId: step.id,\n kind: \"sleep\",\n status: \"failed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n error: errToShape(err),\n };\n }\n}\n","/**\n * OTel telemetry for workflows (ADR D241).\n *\n * Spans:\n * - `workflow.run` — root span per `Workflow.run` invocation\n * - `workflow.step.<id>` — child span per step (retry attempts share the kind)\n *\n * Attributes:\n * - `workflow.name`, `workflow.run_id`, `step.kind`, `step.status`, `step.attempts`\n *\n * @internal\n */\n\nimport { getTracer, noopSpan, type SpanLike } from \"../telemetry/tracer-loader.js\";\n\nconst TRACER_NAME = \"@theokit/sdk/workflow\";\n\nexport function startWorkflowRunSpan(info: { workflowName: string; runId: string }): SpanLike {\n const tracer = getTracer(TRACER_NAME);\n if (tracer === undefined) return noopSpan;\n return tracer.startSpan(\"workflow.run\", {\n attributes: {\n \"workflow.name\": info.workflowName,\n \"workflow.run_id\": info.runId,\n },\n });\n}\n\nexport function startWorkflowStepSpan(info: {\n stepId: string;\n kind: string;\n attempt: number;\n}): SpanLike {\n const tracer = getTracer(TRACER_NAME);\n if (tracer === undefined) return noopSpan;\n return tracer.startSpan(`workflow.step.${info.stepId}`, {\n attributes: {\n \"step.id\": info.stepId,\n \"step.kind\": info.kind,\n \"step.attempt\": info.attempt,\n },\n });\n}\n","/**\n * Workflow executor (ADRs D230-D248).\n *\n * Walks `steps[]` sequentially, dispatching to per-kind handlers. Handles\n * suspend (sentinel pattern; D236), single-flight (D242), abort signal\n * boundaries (D245), and snapshot persistence opt-in (D235).\n *\n * @internal\n */\n\nimport {\n type Step,\n type StepContext,\n type StepResult,\n type WorkflowEvent,\n WorkflowInputError,\n type WorkflowOptions,\n WorkflowOutputError,\n type WorkflowResumeOptions,\n WorkflowResumeStepNotFoundError,\n type WorkflowRun,\n type WorkflowRunOptions,\n type WorkflowSnapshot,\n WorkflowSnapshotNotFoundError,\n WorkflowStateError,\n} from \"../../types/workflow.js\";\nimport { combineSignals, makeStepContext, WorkflowSuspendedSentinel } from \"./ctx.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport {\n abortRun,\n assembleRun,\n makeStateController,\n validateWorkflowSchema,\n} from \"./executor-helpers.js\";\nimport { mintRunId } from \"./run-id.js\";\nimport { acquireSingleFlight } from \"./single-flight.js\";\nimport { getSnapshotStoreFor } from \"./snapshot-store.js\";\nimport { runAgentStep } from \"./step-agent.js\";\nimport { runBranchStep } from \"./step-branch.js\";\nimport { runDowhileStep } from \"./step-dowhile.js\";\nimport { runFnStep } from \"./step-fn.js\";\nimport { runForeachStep } from \"./step-foreach.js\";\nimport { runParallelStep } from \"./step-parallel.js\";\nimport { runSleepStep } from \"./step-sleep.js\";\nimport { startWorkflowRunSpan, startWorkflowStepSpan } from \"./telemetry.js\";\n\ninterface SuspendOutcome<T> {\n kind: \"suspended\" | \"failed\";\n run: WorkflowRun<T>;\n}\n\nasync function handleSuspend<T>(\n err: WorkflowSuspendedSentinel,\n ctx: {\n runId: string;\n name: string;\n step: Step;\n stepResults: StepResult[];\n acc: unknown;\n options: WorkflowOptions;\n startedAt: number;\n stepSpan: ReturnType<typeof startWorkflowStepSpan>;\n /** SE29 — the StepContext, read for its current shared `state`. */\n stepCtx: StepContext;\n },\n): Promise<SuspendOutcome<T>> {\n try {\n await saveSnapshot({\n runId: ctx.runId,\n workflowName: ctx.options.name,\n currentStepId: ctx.step.id,\n suspendedPayload: err.payload,\n stepResults: ctx.stepResults,\n accumulatedInput: ctx.acc,\n state: ctx.stepCtx.state, // SE29 — capture the shared state at suspend\n options: ctx.options,\n });\n } catch (snapErr) {\n ctx.stepSpan.setAttribute(\"step.status\", \"failed\");\n ctx.stepSpan.end();\n return {\n kind: \"failed\",\n run: assembleRun<T>({\n runId: ctx.runId,\n name: ctx.name,\n status: \"failed\",\n stepResults: ctx.stepResults,\n startedAt: ctx.startedAt,\n error: errToShape(snapErr),\n }),\n };\n }\n ctx.stepSpan.setAttribute(\"step.status\", \"suspended\");\n ctx.stepSpan.end();\n return {\n kind: \"suspended\",\n run: assembleRun<T>({\n runId: ctx.runId,\n name: ctx.name,\n status: \"suspended\",\n stepResults: [\n ...ctx.stepResults,\n {\n stepId: ctx.step.id,\n kind: ctx.step.kind,\n status: \"suspended\",\n attempts: 1,\n durationMs: 0,\n output: undefined,\n },\n ],\n startedAt: ctx.startedAt,\n }),\n };\n}\n\nasync function runOneStep<T>(args: {\n step: Step;\n acc: unknown;\n ctx: StepContext;\n options: WorkflowOptions;\n stepResults: StepResult[];\n runId: string;\n name: string;\n startedAt: number;\n}): Promise<{ kind: \"ok\"; result: StepResult } | { kind: \"terminal\"; run: WorkflowRun<T> }> {\n const stepSpan = startWorkflowStepSpan({\n stepId: args.step.id,\n kind: args.step.kind,\n attempt: 1,\n });\n let result: StepResult;\n try {\n result = await dispatchStep(args.step, args.acc, args.ctx, args.options, args.stepResults);\n } catch (err) {\n if (err instanceof WorkflowSuspendedSentinel) {\n const outcome = await handleSuspend<T>(err, { ...args, stepSpan, stepCtx: args.ctx });\n return { kind: \"terminal\", run: outcome.run };\n }\n result = {\n stepId: args.step.id,\n kind: args.step.kind,\n status: \"failed\",\n attempts: 1,\n durationMs: 0,\n error: errToShape(err),\n };\n }\n stepSpan.setAttribute(\"step.status\", result.status);\n stepSpan.setAttribute(\"step.attempts\", result.attempts);\n stepSpan.end();\n return { kind: \"ok\", result };\n}\n\ninterface LoopParams {\n options: WorkflowOptions;\n steps: ReadonlyArray<Step>;\n input: unknown;\n ctx: StepContext;\n runId: string;\n startedAt: number;\n signal: AbortSignal;\n /** M3 #62 — prior step outputs restored on resume (else resume is lossy). */\n initialStepResults?: ReadonlyArray<StepResult>;\n /** SE28 — sink for step-level stream events (top-level steps). */\n onStepEvent?: (event: WorkflowEvent) => void;\n}\n\n/** Emit events + branch on one step's outcome. Returns a terminal run, or the new acc. */\nfunction handleStepOutcome<TO>(\n outcome: { kind: \"ok\"; result: StepResult } | { kind: \"terminal\"; run: WorkflowRun<TO> },\n step: Step,\n loop: { stepResults: StepResult[]; runId: string; name: string; startedAt: number },\n onStepEvent?: (event: WorkflowEvent) => void,\n): { terminal: WorkflowRun<TO> } | { acc: unknown } {\n if (outcome.kind === \"terminal\") {\n // A snapshot-SAVE failure also returns terminal (status \"failed\") — only emit\n // workflow_suspended when the run actually suspended (else the consumer would\n // resume a run with no snapshot). A failed terminal has no event; read `result`.\n if (outcome.run.status === \"suspended\") {\n onStepEvent?.({ type: \"workflow_suspended\", stepId: step.id });\n }\n return { terminal: outcome.run };\n }\n loop.stepResults.push(outcome.result);\n if (outcome.result.status === \"failed\") {\n onStepEvent?.({\n type: \"step_failed\",\n stepId: step.id,\n error: outcome.result.error ?? { name: \"WorkflowStepError\", message: \"step failed\" },\n });\n return {\n terminal: assembleRun<TO>({\n runId: loop.runId,\n name: loop.name,\n status: \"failed\",\n stepResults: loop.stepResults,\n startedAt: loop.startedAt,\n error: outcome.result.error,\n }),\n };\n }\n onStepEvent?.({ type: \"step_completed\", stepId: step.id, output: outcome.result.output });\n return { acc: outcome.result.output };\n}\n\nasync function runStepsLoop<TO>(params: LoopParams): Promise<WorkflowRun<TO>> {\n const { options, steps, ctx, runId, startedAt, signal, onStepEvent } = params;\n // M3 #62 — seed with prior step outputs so a resumed workflow is not lossy.\n const stepResults: StepResult[] = [...(params.initialStepResults ?? [])];\n const loop = { stepResults, runId, name: options.name, startedAt };\n let acc: unknown = params.input;\n for (const step of steps) {\n if (signal.aborted) return abortRun<TO>(options.name, runId, startedAt, stepResults, signal);\n onStepEvent?.({ type: \"step_started\", stepId: step.id });\n const outcome = await runOneStep<TO>({\n step,\n acc,\n ctx,\n options,\n stepResults,\n runId,\n name: options.name,\n startedAt,\n });\n const handled = handleStepOutcome<TO>(outcome, step, loop, onStepEvent);\n if (\"terminal\" in handled) return handled.terminal;\n acc = handled.acc;\n }\n // SE27 — validate the whole-workflow output only on the terminal completed path.\n const outputIssues = validateWorkflowSchema(options.outputSchema, acc);\n if (outputIssues !== undefined) {\n return assembleRun<TO>({\n runId,\n name: options.name,\n status: \"failed\",\n stepResults,\n startedAt,\n error: errToShape(new WorkflowOutputError(options.name, outputIssues)),\n });\n }\n onStepEvent?.({ type: \"workflow_completed\" });\n return assembleRun<TO>({\n runId,\n name: options.name,\n status: \"completed\",\n output: acc as TO,\n stepResults,\n startedAt,\n });\n}\n\n/** M3 #62 — internal-only resume seam: prior step outputs are NOT on the public\n * WorkflowRunOptions (a consumer must not inject fabricated results into a fresh run);\n * resumeWorkflow sets them via this cast. */\ntype InternalRunOpts = WorkflowRunOptions & {\n readonly initialStepResults?: ReadonlyArray<StepResult>;\n /** SE28 — internal step-event sink threaded by `Workflow.stream()`. */\n readonly onStepEvent?: (event: WorkflowEvent) => void;\n /** SE29 — shared state restored from a snapshot on resume. */\n readonly restoredState?: unknown;\n};\n\nexport async function executeWorkflow<TInput, TOutput>(\n options: WorkflowOptions,\n steps: ReadonlyArray<Step>,\n input: TInput,\n runOpts?: WorkflowRunOptions,\n): Promise<WorkflowRun<TOutput>> {\n const runId = runOpts?.runId ?? mintRunId();\n const workflowId = options.workflowId ?? `wf-anon`;\n const flight = acquireSingleFlight(workflowId, runId, options.name);\n const startedAt = Date.now();\n const signal = combineSignals(runOpts?.signal, flight.signal);\n const runSpan = startWorkflowRunSpan({ workflowName: options.name, runId });\n\n if (signal.aborted) {\n flight.release();\n runSpan.setAttribute(\"workflow.status\", \"cancelled\");\n runSpan.end();\n return abortRun<TOutput>(options.name, runId, startedAt, [], signal);\n }\n\n const internal = runOpts as InternalRunOpts | undefined;\n // SE29 — seed shared state from the resume snapshot (if any) else initialState.\n const seededState =\n internal?.restoredState !== undefined ? internal.restoredState : options.initialState;\n const stateController = makeStateController(options, seededState);\n const ctx: StepContext = makeStepContext(runId, signal, stateController);\n try {\n // SE27 — validate the whole-workflow input BEFORE any step runs (fail-fast).\n const inputIssues = validateWorkflowSchema(options.inputSchema, input);\n if (inputIssues !== undefined) {\n return assembleRun<TOutput>({\n runId,\n name: options.name,\n status: \"failed\",\n stepResults: [],\n startedAt,\n error: errToShape(new WorkflowInputError(options.name, inputIssues)),\n });\n }\n // SE29 — validate the seeded state (fail-fast) before any step reads it.\n const stateIssues =\n seededState !== undefined\n ? validateWorkflowSchema(options.stateSchema, seededState)\n : undefined;\n if (stateIssues !== undefined) {\n return assembleRun<TOutput>({\n runId,\n name: options.name,\n status: \"failed\",\n stepResults: [],\n startedAt,\n error: errToShape(new WorkflowStateError(options.name, stateIssues)),\n });\n }\n return await runStepsLoop<TOutput>({\n options,\n steps,\n input,\n ctx,\n runId,\n startedAt,\n signal,\n ...(internal?.initialStepResults !== undefined\n ? { initialStepResults: internal.initialStepResults }\n : {}),\n ...(internal?.onStepEvent !== undefined ? { onStepEvent: internal.onStepEvent } : {}),\n });\n } finally {\n runSpan.end();\n flight.release();\n }\n}\n\n/**\n * Dispatch single step to the right handler. Exhaustive over `step.kind`.\n */\nexport async function dispatchStep(\n step: Step,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n): Promise<StepResult> {\n switch (step.kind) {\n case \"fn\":\n return runFnStep(step, input, ctx);\n case \"agent\":\n return runAgentStep(step, input, ctx);\n case \"parallel\":\n return runParallelStep(step, input, ctx, options, prevStepResults, dispatchStep);\n case \"branch\":\n return runBranchStep(step, input, ctx, options, prevStepResults, dispatchStep);\n case \"foreach\":\n return runForeachStep(step, input, ctx, options, prevStepResults, dispatchStep);\n case \"dowhile\":\n return runDowhileStep(step, input, ctx, options, prevStepResults, dispatchStep);\n case \"sleep\":\n return runSleepStep(step, input, ctx);\n case \"suspend\":\n // Standalone suspend: throw sentinel so executor catches.\n throw new WorkflowSuspendedSentinel(undefined);\n default: {\n const _exhaustive: never = step;\n throw new Error(`Unknown step kind: ${(_exhaustive as Step).kind}`);\n }\n }\n}\n\ninterface SnapshotParams {\n runId: string;\n workflowName: string;\n currentStepId: string;\n suspendedPayload?: unknown;\n stepResults: ReadonlyArray<StepResult>;\n accumulatedInput: unknown;\n /** SE29 — shared state captured at suspend. */\n state: unknown;\n options: WorkflowOptions;\n}\n\nasync function saveSnapshot(p: SnapshotParams): Promise<void> {\n const snapshot: WorkflowSnapshot = {\n _schemaVersion: 2, // SE29 — carries `state`\n runId: p.runId,\n workflowName: p.workflowName,\n currentStepId: p.currentStepId,\n suspendedPayload: p.suspendedPayload,\n stepResults: p.stepResults,\n accumulatedInput: p.accumulatedInput,\n ...(p.state !== undefined ? { state: p.state } : {}),\n suspendedAt: Date.now(),\n };\n const store = getSnapshotStoreFor(p.options);\n await store.save(snapshot);\n}\n\n/* ─── Resume ─── */\n\nexport async function resumeWorkflow<TO>(opts: WorkflowResumeOptions): Promise<WorkflowRun<TO>> {\n // We need access to the workflow's internal options/steps. The public\n // resume API hands us a `workflow` reference exposing `.run` only — for\n // v1 we accept the user re-running the same workflow with the snapshot's\n // accumulated input + payload merged. Full resume-from-step support\n // would require exposing `__steps` and `__options`; v1 ships a simpler\n // \"re-run from input\" semantics gated by snapshot lookup.\n const wfInternal = opts.workflow as {\n __options?: WorkflowOptions;\n __steps?: ReadonlyArray<Step>;\n run: (input: unknown, runOpts?: WorkflowRunOptions) => Promise<WorkflowRun<TO>>;\n };\n const options = wfInternal.__options;\n const steps = wfInternal.__steps;\n if (options === undefined || steps === undefined) {\n throw new Error(\"Workflow.resume requires an instance from Workflow.create().commit()\");\n }\n const store = getSnapshotStoreFor(options);\n const snapshot = await store.load(opts.runId);\n if (snapshot === undefined) {\n throw new WorkflowSnapshotNotFoundError(opts.runId);\n }\n // EC-8: verify the currentStepId exists in the supplied workflow.\n const stepIdx = steps.findIndex((s) => s.id === snapshot.currentStepId);\n if (stepIdx < 0) {\n throw new WorkflowResumeStepNotFoundError(snapshot.currentStepId, snapshot.workflowName);\n }\n\n // Validate payload if the suspend step declared a schema.\n const suspendStep = steps[stepIdx];\n if (\n suspendStep !== undefined &&\n suspendStep.kind === \"suspend\" &&\n suspendStep.payloadSchema !== undefined\n ) {\n suspendStep.payloadSchema.parse(opts.payload);\n }\n\n // For v1: continue from stepIdx + 1 with `payload` (if any) as the new\n // accumulated input. This is intentionally simpler than full state\n // restoration; the snapshot's `accumulatedInput` is preserved for\n // observability but the resume input is determined by the caller's\n // payload (or the snapshot's accumulator if payload is undefined).\n const resumeInput = opts.payload !== undefined ? opts.payload : snapshot.accumulatedInput;\n const remainingSteps = steps.slice(stepIdx + 1);\n\n // Drop snapshot once we begin (single-shot semantics).\n await store.delete(opts.runId);\n\n return executeWorkflow<unknown, TO>(options, remainingSteps, resumeInput, {\n signal: opts.signal,\n runId: opts.runId,\n // M3 #62 — restore prior step outputs so the resumed run is not lossy (internal seam).\n initialStepResults: snapshot.stepResults,\n // SE29 — restore shared state (v2 snapshot). A v1 snapshot has no `state` →\n // executeWorkflow falls back to `options.initialState`.\n ...(snapshot.state !== undefined ? { restoredState: snapshot.state } : {}),\n } as InternalRunOpts);\n}\n"]}
1
+ {"version":3,"sources":["../src/internal/workflow/ctx.ts","../src/internal/workflow/error-shape.ts","../src/internal/workflow/executor-helpers.ts","../src/internal/workflow/run-id.ts","../src/internal/workflow/single-flight.ts","../src/internal/workflow/retry-policy.ts","../src/internal/workflow/step-agent.ts","../src/internal/workflow/step-branch.ts","../src/internal/workflow/step-dowhile.ts","../src/internal/workflow/step-fn.ts","../src/internal/workflow/step-foreach.ts","../src/internal/workflow/step-parallel.ts","../src/internal/workflow/step-sleep.ts","../src/internal/workflow/telemetry.ts","../src/internal/workflow/executor.ts"],"names":["WorkflowStateError","WorkflowAlreadyRunningError","UnsupportedRunOperationError","redactSecrets","WorkflowMaxIterationsExceededError","WorkflowCompensateNotImplementedError","createSemaphore","outputs","settled","WorkflowParallelError","getTracer","noopSpan","WorkflowOutputError","WorkflowInputError","getSnapshotStoreFor","WorkflowSnapshotNotFoundError","WorkflowResumeStepNotFoundError"],"mappings":"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","file":"executor-OZSYXDKF.cjs","sourcesContent":["/**\n * Build the `StepContext` passed to every step.fn. The `suspend` method\n * throws a `WorkflowSuspendedSentinel` (defined here) that the executor\n * catches to persist a snapshot (D236).\n *\n * @internal\n */\n\nimport type { StepContext } from \"../../types/workflow.js\";\n\n/** Sentinel thrown by `ctx.suspend()`; only the executor catches it. */\nexport class WorkflowSuspendedSentinel extends Error {\n override readonly name = \"WorkflowSuspendedSentinel\";\n constructor(public readonly payload?: unknown) {\n super(\"__workflow_suspended__\");\n }\n}\n\n/** SE29 — the per-run shared-state seam wired into `StepContext.state`/`setState`. */\nexport interface StateController {\n getState: () => unknown;\n setState: (next: unknown) => void;\n}\n\nexport function makeStepContext(\n runId: string,\n signal: AbortSignal,\n state: StateController,\n): StepContext {\n return {\n runId,\n signal,\n log: {\n debug: (msg, attrs) => emit(\"debug\", runId, msg, attrs),\n info: (msg, attrs) => emit(\"info\", runId, msg, attrs),\n warn: (msg, attrs) => emit(\"warn\", runId, msg, attrs),\n },\n suspend: async (payload?: unknown) => {\n throw new WorkflowSuspendedSentinel(payload);\n },\n // SE29 — read reflects the current shared state; write goes through the\n // controller (which validates against `stateSchema`).\n get state(): unknown {\n return state.getState();\n },\n setState: (next: unknown): void => state.setState(next),\n };\n}\n\nfunction emit(\n level: \"debug\" | \"info\" | \"warn\",\n runId: string,\n msg: string,\n attrs?: Record<string, unknown>,\n): void {\n const tag = `[workflow ${runId}]`;\n if (attrs !== undefined) {\n if (level === \"warn\") console.warn(tag, msg, attrs);\n else console.log(tag, msg, attrs);\n } else {\n if (level === \"warn\") console.warn(tag, msg);\n else console.log(tag, msg);\n }\n}\n\n/**\n * Combine the caller-supplied signal with the flight signal so abort on\n * either side cancels the workflow run.\n */\nexport function combineSignals(...signals: ReadonlyArray<AbortSignal | undefined>): AbortSignal {\n const valid = signals.filter((s): s is AbortSignal => s !== undefined);\n if (valid.length === 0) return new AbortController().signal;\n if (valid.length === 1) return valid[0]!;\n const ctrl = new AbortController();\n for (const s of valid) {\n if (s.aborted) {\n ctrl.abort(s.reason);\n break;\n }\n s.addEventListener(\"abort\", () => ctrl.abort(s.reason), { once: true });\n }\n return ctrl.signal;\n}\n","/**\n * Helper to normalize unknown thrown values to `{ name, message }` shape\n * for use in `StepResult.error` / `WorkflowRun.error`.\n *\n * @internal\n */\n\nexport function errToShape(err: unknown): { name: string; message: string } {\n if (err instanceof Error) {\n return { name: err.name, message: err.message };\n }\n return { name: \"Error\", message: String(err) };\n}\n","/**\n * Pure helpers extracted from the workflow executor (G8 focus): run assembly,\n * abort, whole-workflow schema validation (SE27), and the shared-state\n * controller (SE29). No executor-internal dependencies — safe to import both ways.\n *\n * @internal\n */\n\nimport type { ZodType } from \"zod\";\nimport type { StepResult, WorkflowOptions, WorkflowRun } from \"../../types/workflow.js\";\nimport { WorkflowStateError } from \"../../types/workflow.js\";\nimport type { StateController } from \"./ctx.js\";\n\nexport interface AssembleParams<TO> {\n runId: string;\n name: string;\n status: WorkflowRun[\"status\"];\n stepResults: ReadonlyArray<StepResult>;\n startedAt: number;\n output?: TO;\n error?: { name: string; message: string };\n}\n\nexport function assembleRun<TO>(params: AssembleParams<TO>): WorkflowRun<TO> {\n return {\n id: params.runId,\n name: params.name,\n status: params.status,\n startedAt: params.startedAt,\n endedAt: Date.now(),\n stepResults: params.stepResults,\n ...(params.output !== undefined ? { output: params.output } : {}),\n ...(params.error !== undefined ? { error: params.error } : {}),\n };\n}\n\nexport function abortRun<T>(\n name: string,\n runId: string,\n startedAt: number,\n stepResults: StepResult[],\n signal: AbortSignal,\n): WorkflowRun<T> {\n return assembleRun<T>({\n runId,\n name,\n status: \"cancelled\",\n stepResults,\n startedAt,\n error: { name: \"AbortError\", message: String(signal.reason ?? \"Aborted\") },\n });\n}\n\n/**\n * SE27 — validate a value against a whole-workflow schema. Returns a compact\n * issues string on failure, `undefined` when the schema is absent or matches.\n */\nexport function validateWorkflowSchema(\n schema: ZodType | undefined,\n value: unknown,\n): string | undefined {\n if (schema === undefined) return undefined;\n let parsed: ReturnType<ZodType[\"safeParse\"]>;\n try {\n parsed = schema.safeParse(value);\n } catch {\n // A schema with an async refinement throws synchronously from safeParse\n // (\"Encountered Promise during synchronous parse\"). Surface it as a\n // validation issue (→ status:\"failed\") instead of escaping run() (never-throw).\n return \"schema uses async refinements, which whole-workflow validation does not support (use a synchronous Zod schema)\";\n }\n if (parsed.success) return undefined;\n return parsed.error.issues\n .map((issue) => `${issue.path.join(\".\") || \"(root)\"}: ${issue.message}`)\n .join(\"; \");\n}\n\n/** SE29 — the per-run shared-state holder; `setState` validates against `stateSchema`. */\nexport function makeStateController(options: WorkflowOptions, initial: unknown): StateController {\n let current = initial;\n return {\n getState: () => current,\n setState: (next: unknown) => {\n const issues = validateWorkflowSchema(options.stateSchema, next);\n if (issues !== undefined) throw new WorkflowStateError(options.name, issues);\n current = next;\n },\n };\n}\n","/**\n * Generate a short, deterministic workflow run identifier.\n *\n * Format: `wfr-<8 hex chars>`. Used for span keys, snapshot filenames, and\n * single-flight registry keys.\n *\n * @internal\n */\n\nexport function mintRunId(): string {\n return `wfr-${globalThis.crypto.randomUUID().replace(/-/g, \"\").slice(0, 8)}`;\n}\n","/**\n * Single-flight registry for in-flight workflow runs (ADR D242).\n *\n * Key = `${workflowId}:${runId}`. Throws `WorkflowAlreadyRunningError` on\n * duplicate. Process crash auto-releases (in-memory map). Pattern mirrors\n * `internal/eval/single-flight.ts` (D213).\n *\n * EC-5 absorbed: lock uses `workflowId` (minted at `.commit()`), not the\n * user-supplied `name`, so two `Workflow` instances sharing a name don't\n * collide on each other's locks.\n *\n * @internal\n */\n\nimport { WorkflowAlreadyRunningError } from \"../../types/workflow.js\";\n\ninterface Flight {\n controller: AbortController;\n}\n\nconst registry = new Map<string, Flight>();\n\nfunction key(workflowId: string, runId: string): string {\n return `${workflowId}:${runId}`;\n}\n\nexport interface AcquiredFlight {\n signal: AbortSignal;\n release: () => void;\n}\n\nexport function acquireSingleFlight(\n workflowId: string,\n runId: string,\n workflowName: string,\n): AcquiredFlight {\n const k = key(workflowId, runId);\n if (registry.has(k)) {\n throw new WorkflowAlreadyRunningError(workflowName, runId);\n }\n const controller = new AbortController();\n registry.set(k, { controller });\n return {\n signal: controller.signal,\n release: () => {\n registry.delete(k);\n },\n };\n}\n","/**\n * Retry wrapper with exponential backoff (ADR D237).\n *\n * `withRetry(fn, policy, signal)` retries on throw until success or\n * `maxAttempts` reached. Aborts mid-backoff when signal fires.\n * Non-retryable errors (by name) propagate immediately.\n *\n * @internal\n */\n\nimport type { RetryPolicy } from \"../../types/workflow.js\";\n\nconst DEFAULT_NON_RETRYABLE = [\"AbortError\", \"WorkflowSnapshotNotFoundError\", \"ConfigurationError\"];\n\ninterface BackoffConfig {\n init: number;\n coef: number;\n cap: number;\n nonRetryable: Set<string>;\n max: number;\n}\n\nfunction backoffConfigFromPolicy(policy: RetryPolicy): BackoffConfig {\n return {\n max: policy.maxAttempts,\n init: policy.initialBackoffMs ?? 1000,\n coef: policy.backoffCoefficient ?? 2.0,\n cap: policy.maximumBackoffMs ?? 30_000,\n nonRetryable: new Set(policy.nonRetryableErrors ?? DEFAULT_NON_RETRYABLE),\n };\n}\n\nfunction throwIfAborted(signal: AbortSignal): void {\n if (signal.aborted) {\n throw new DOMException(String(signal.reason ?? \"Aborted\"), \"AbortError\");\n }\n}\n\nfunction shouldRethrow(err: unknown, attempt: number, cfg: BackoffConfig): boolean {\n const errName = err instanceof Error ? err.name : \"Error\";\n return cfg.nonRetryable.has(errName) || attempt === cfg.max;\n}\n\nasync function tryOnce<T>(\n fn: () => Promise<T>,\n attempt: number,\n cfg: BackoffConfig,\n signal: AbortSignal,\n): Promise<{ value: T; attempts: number } | { kind: \"retry\" }> {\n try {\n const value = await fn();\n return { value, attempts: attempt };\n } catch (err) {\n if (shouldRethrow(err, attempt, cfg)) throw err;\n await abortableSleep(Math.min(cfg.init * cfg.coef ** (attempt - 1), cfg.cap), signal);\n return { kind: \"retry\" };\n }\n}\n\nexport async function withRetry<T>(\n fn: () => Promise<T>,\n policy: RetryPolicy,\n signal: AbortSignal,\n): Promise<{ value: T; attempts: number }> {\n const cfg = backoffConfigFromPolicy(policy);\n for (let attempt = 1; attempt <= cfg.max; attempt += 1) {\n throwIfAborted(signal);\n const result = await tryOnce(fn, attempt, cfg, signal);\n if (\"value\" in result) return result;\n }\n // Unreachable: tryOnce throws on the final attempt when shouldRethrow returns true.\n throw new Error(\"withRetry: exhausted attempts without throwing\");\n}\n\nexport async function abortableSleep(ms: number, signal: AbortSignal): Promise<void> {\n if (signal.aborted) {\n throw new DOMException(String(signal.reason ?? \"Aborted\"), \"AbortError\");\n }\n return new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n cleanup();\n resolve();\n }, ms);\n const onAbort = (): void => {\n clearTimeout(timer);\n cleanup();\n reject(new DOMException(String(signal.reason ?? \"Aborted\"), \"AbortError\"));\n };\n const cleanup = (): void => {\n signal.removeEventListener(\"abort\", onAbort);\n };\n signal.addEventListener(\"abort\", onAbort, { once: true });\n });\n}\n","/**\n * Execute an `AgentStep` — render the prompt template, call `agent.send`,\n * wait for completion, return the result text as step output (ADR D244,\n * D245).\n *\n * Cloud guard: agents marked as `CloudAgent` throw `UnsupportedRunOperationError`\n * (workflows are local-only in v1).\n *\n * @internal\n */\n\nimport { UnsupportedRunOperationError } from \"../../errors.js\";\nimport type { AgentStep, StepContext, StepResult } from \"../../types/workflow.js\";\nimport { WorkflowSuspendedSentinel } from \"./ctx.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport { withRetry } from \"./retry-policy.js\";\n\nexport async function runAgentStep(\n step: AgentStep,\n input: unknown,\n ctx: StepContext,\n): Promise<StepResult> {\n const startedAt = Date.now();\n // D244: cloud guard — workflows are LocalAgent-only in v1.\n const agentId = step.agent.agentId;\n if (typeof agentId === \"string\" && agentId.startsWith(\"bc-\")) {\n return {\n stepId: step.id,\n kind: \"agent\",\n status: \"failed\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n error: errToShape(\n new UnsupportedRunOperationError(\n \"Workflow agent steps not supported on CloudAgent yet (D244).\" +\n ` agent=\"${agentId}\", step=\"${step.id}\"`,\n \"workflow\",\n ),\n ),\n };\n }\n\n let prompt: string;\n try {\n prompt =\n typeof step.promptTemplate === \"string\" ? step.promptTemplate : step.promptTemplate(input);\n } catch (err) {\n return {\n stepId: step.id,\n kind: \"agent\",\n status: \"failed\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n error: errToShape(err),\n };\n }\n if (typeof prompt !== \"string\" || prompt.length === 0) {\n return {\n stepId: step.id,\n kind: \"agent\",\n status: \"failed\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n error: errToShape(\n new Error(`agentStep \"${step.id}\": rendered prompt must be a non-empty string`),\n ),\n };\n }\n\n const exec = async (): Promise<string> => {\n // SE3 — forward the step's provenance onto the agent's turn (metadata-only).\n const run = await step.agent.send(\n prompt,\n step.origin !== undefined ? { origin: step.origin } : undefined,\n );\n const result = await run.wait();\n if (result.status === \"finished\") {\n return result.result ?? \"\";\n }\n if (result.status === \"error\") {\n throw (result as { error?: Error }).error ?? new Error(\"agent.send errored\");\n }\n throw new Error(`Unexpected agent status: ${result.status}`);\n };\n\n try {\n const { value, attempts } =\n step.retry !== undefined\n ? await withRetry(exec, step.retry, ctx.signal)\n : { value: await exec(), attempts: 1 };\n return {\n stepId: step.id,\n kind: \"agent\",\n status: \"completed\",\n attempts,\n durationMs: Date.now() - startedAt,\n output: value,\n };\n } catch (err) {\n // Re-throw suspend sentinel so the executor can persist a snapshot.\n if (err instanceof WorkflowSuspendedSentinel) throw err;\n return {\n stepId: step.id,\n kind: \"agent\",\n status: \"failed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n error: errToShape(err),\n };\n }\n}\n","/**\n * Execute a `BranchStep` — first-match-wins predicates + optional fallback.\n *\n * EC-2 absorbed: predicates that THROW are treated as \"no match\" + stderr\n * warn — user-code bugs in predicates don't take down the whole workflow.\n *\n * @internal\n */\n\nimport type {\n BranchStep,\n Step,\n StepContext,\n StepResult,\n WorkflowOptions,\n} from \"../../types/workflow.js\";\nimport { redactSecrets } from \"../security/redact.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport type { DispatchFn } from \"./step-parallel.js\";\n\nexport async function runBranchStep(\n step: BranchStep,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n dispatch: DispatchFn,\n): Promise<StepResult> {\n const startedAt = Date.now();\n\n for (let i = 0; i < step.predicates.length; i += 1) {\n const pair = step.predicates[i]!;\n const [predicate, branch] = pair;\n // EC-2: predicate throw → warn + treat as no-match.\n let matched = false;\n try {\n matched = await Promise.resolve(predicate(input));\n } catch (err) {\n const errText = err instanceof Error ? err.message : String(err);\n console.warn(\n redactSecrets(\n `[workflow] branch \"${step.id}\" predicate ${i} threw, treating as no-match: ${errText}`,\n ),\n );\n }\n if (matched) {\n const r = await runInnerSequence(branch, input, ctx, options, prevStepResults, dispatch);\n return {\n ...r,\n stepId: step.id,\n kind: \"branch\",\n durationMs: Date.now() - startedAt,\n };\n }\n }\n\n if (step.fallback !== undefined) {\n const r = await runInnerSequence(step.fallback, input, ctx, options, prevStepResults, dispatch);\n return {\n ...r,\n stepId: step.id,\n kind: \"branch\",\n durationMs: Date.now() - startedAt,\n };\n }\n\n // No match, no fallback → pass input through unchanged.\n return {\n stepId: step.id,\n kind: \"branch\",\n status: \"skipped\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n output: input,\n };\n}\n\nasync function runInnerSequence(\n branch: ReadonlyArray<Step>,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n dispatch: DispatchFn,\n): Promise<StepResult> {\n let acc: unknown = input;\n let lastAttempts = 1;\n for (const inner of branch) {\n const r = await dispatch(inner, acc, ctx, options, prevStepResults);\n lastAttempts = r.attempts;\n if (r.status === \"failed\") {\n return {\n stepId: inner.id,\n kind: \"branch\",\n status: \"failed\",\n attempts: r.attempts,\n durationMs: 0,\n error: r.error ?? errToShape(new Error(\"branch inner step failed\")),\n };\n }\n acc = r.output;\n }\n return {\n stepId: \"__branch-completed__\",\n kind: \"branch\",\n status: \"completed\",\n attempts: lastAttempts,\n durationMs: 0,\n output: acc,\n };\n}\n","/**\n * Execute a `DowhileStep` — loop the inner step until `condFn` returns\n * false or `maxIterations` is reached (default 100).\n *\n * @internal\n */\n\nimport type {\n DowhileStep,\n StepContext,\n StepResult,\n WorkflowOptions,\n} from \"../../types/workflow.js\";\nimport { WorkflowMaxIterationsExceededError } from \"../../types/workflow.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport type { DispatchFn } from \"./step-parallel.js\";\n\nexport async function runDowhileStep(\n step: DowhileStep,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n dispatch: DispatchFn,\n): Promise<StepResult> {\n const startedAt = Date.now();\n const maxIter = step.maxIterations ?? 100;\n let acc = input;\n let i = 0;\n while (true) {\n if (i >= maxIter) {\n return {\n stepId: step.id,\n kind: \"dowhile\",\n status: \"failed\",\n attempts: i,\n durationMs: Date.now() - startedAt,\n error: errToShape(new WorkflowMaxIterationsExceededError(step.id, maxIter)),\n };\n }\n const r = await dispatch(step.step, acc, ctx, options, prevStepResults);\n if (r.status === \"failed\") {\n return {\n stepId: step.id,\n kind: \"dowhile\",\n status: \"failed\",\n attempts: i + 1,\n durationMs: Date.now() - startedAt,\n error: r.error,\n };\n }\n acc = r.output;\n i += 1;\n let shouldContinue = false;\n try {\n shouldContinue = await Promise.resolve(step.condFn(acc, i));\n } catch (err) {\n return {\n stepId: step.id,\n kind: \"dowhile\",\n status: \"failed\",\n attempts: i,\n durationMs: Date.now() - startedAt,\n error: errToShape(err),\n };\n }\n if (!shouldContinue) break;\n }\n return {\n stepId: step.id,\n kind: \"dowhile\",\n status: \"completed\",\n attempts: i,\n durationMs: Date.now() - startedAt,\n output: acc,\n };\n}\n","/**\n * Execute a `FnStep` — call the user-supplied function with `input` + `ctx`.\n * Wraps in `withRetry` if a retry policy is set (D237).\n *\n * Validates input/output via Zod when schemas are supplied. EC-4 / D229\n * pattern: empty/undefined input parses as `{}` only when schema is defined.\n *\n * @internal\n */\n\nimport type { FnStep, StepContext, StepResult } from \"../../types/workflow.js\";\nimport { WorkflowCompensateNotImplementedError } from \"../../types/workflow.js\";\nimport { WorkflowSuspendedSentinel } from \"./ctx.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport { withRetry } from \"./retry-policy.js\";\n\nfunction failedFnResult(\n stepId: string,\n attempts: number,\n startedAt: number,\n err: unknown,\n): StepResult {\n return {\n stepId,\n kind: \"fn\",\n status: \"failed\",\n attempts,\n durationMs: Date.now() - startedAt,\n error: errToShape(err),\n };\n}\n\nfunction validate(schema: { parse: (v: unknown) => unknown } | undefined, value: unknown): unknown {\n if (schema === undefined) return undefined;\n schema.parse(value);\n return undefined;\n}\n\nasync function execWithRetry(\n step: FnStep,\n input: unknown,\n ctx: StepContext,\n): Promise<{ value: unknown; attempts: number }> {\n const exec = async (): Promise<unknown> => step.fn(input, ctx);\n if (step.retry !== undefined) return withRetry(exec, step.retry, ctx.signal);\n return { value: await exec(), attempts: 1 };\n}\n\nexport async function runFnStep(\n step: FnStep,\n input: unknown,\n ctx: StepContext,\n): Promise<StepResult> {\n const startedAt = Date.now();\n // D238: saga engine not implemented in v1 — surface intent loudly.\n if (step.compensate !== undefined) {\n return failedFnResult(\n step.id,\n 0,\n startedAt,\n new WorkflowCompensateNotImplementedError(step.id),\n );\n }\n try {\n validate(step.inputSchema, input);\n } catch (err) {\n return failedFnResult(step.id, 0, startedAt, err);\n }\n\n try {\n const { value, attempts } = await execWithRetry(step, input, ctx);\n try {\n validate(step.outputSchema, value);\n } catch (err) {\n return failedFnResult(step.id, attempts, startedAt, err);\n }\n return {\n stepId: step.id,\n kind: \"fn\",\n status: \"completed\",\n attempts,\n durationMs: Date.now() - startedAt,\n output: value,\n };\n } catch (err) {\n if (err instanceof WorkflowSuspendedSentinel) throw err;\n return failedFnResult(step.id, 1, startedAt, err);\n }\n}\n","/**\n * Execute a `ForeachStep` — map a step over the output of an upstream step.\n *\n * EC-7 absorbed: `iterableFrom` MUST reference a top-level step (one of\n * `prevStepResults`). Inner steps from inside `.parallel` / `.branch` /\n * `.foreach` are not reachable.\n *\n * @internal\n */\n\nimport type {\n ForeachStep,\n StepContext,\n StepResult,\n WorkflowOptions,\n} from \"../../types/workflow.js\";\nimport { createSemaphore } from \"../runtime/concurrency/async-semaphore.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport type { DispatchFn } from \"./step-parallel.js\";\n\nexport async function runForeachStep(\n step: ForeachStep,\n _input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n dispatch: DispatchFn,\n): Promise<StepResult> {\n const startedAt = Date.now();\n\n // EC-7: top-level step lookup only.\n const sourceResult = prevStepResults.find((r) => r.stepId === step.iterableFrom);\n if (sourceResult === undefined) {\n return {\n stepId: step.id,\n kind: \"foreach\",\n status: \"failed\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n error: errToShape(\n new Error(\n `foreach.iterableFrom \"${step.iterableFrom}\" not found in top-level steps. ` +\n `It must reference an earlier top-level step ID — nested step IDs inside ` +\n `parallel/branch/foreach blocks are not visible here.`,\n ),\n ),\n };\n }\n\n const items = sourceResult.output;\n if (!Array.isArray(items)) {\n return {\n stepId: step.id,\n kind: \"foreach\",\n status: \"failed\",\n attempts: 0,\n durationMs: Date.now() - startedAt,\n error: errToShape(\n new Error(\n `foreach.iterableFrom \"${step.iterableFrom}\" output must be Array, got ${typeof items}.`,\n ),\n ),\n };\n }\n\n if (items.length === 0) {\n return {\n stepId: step.id,\n kind: \"foreach\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: [],\n };\n }\n\n const concurrency = step.concurrency ?? 4;\n const sem = createSemaphore(Math.max(1, Math.min(concurrency, items.length)));\n const failures: Error[] = [];\n const outputs: unknown[] = new Array(items.length);\n\n await Promise.all(\n items.map(async (item, idx) => {\n const release = await sem.acquire();\n try {\n const r = await dispatch(step.step, item, ctx, options, prevStepResults);\n if (r.status === \"failed\") {\n failures.push(new Error(`foreach item ${idx} failed: ${r.error?.message ?? \"unknown\"}`));\n } else {\n outputs[idx] = r.output;\n }\n } finally {\n release();\n }\n }),\n );\n\n if (failures.length > 0) {\n return {\n stepId: step.id,\n kind: \"foreach\",\n status: \"failed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n error: errToShape(\n new AggregateError(failures, `foreach \"${step.id}\" had ${failures.length} failure(s)`),\n ),\n };\n }\n\n return {\n stepId: step.id,\n kind: \"foreach\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: outputs,\n };\n}\n","/**\n * Execute a `ParallelStep` — run N branches concurrently.\n *\n * - `errorPolicy: \"fail-fast\"` (default): first branch error aborts the rest\n * via a derived AbortSignal; `WorkflowParallelError` aggregates failures.\n * - `errorPolicy: \"collect\"`: all branches complete; output is array of\n * `{ ok: true, value } | { ok: false, error }`.\n *\n * Concurrency: bounded by `step.concurrency ?? branches.length` (D240). All\n * branches run inside the same `AsyncSemaphore`.\n *\n * EC-6 absorbed: empty `branches[]` returns `output: []` without error.\n *\n * @internal\n */\n\nimport type {\n ParallelStep,\n Step,\n StepContext,\n StepResult,\n WorkflowOptions,\n} from \"../../types/workflow.js\";\nimport { WorkflowParallelError } from \"../../types/workflow.js\";\nimport { createSemaphore } from \"../runtime/concurrency/async-semaphore.js\";\nimport { errToShape } from \"./error-shape.js\";\n\nexport type DispatchFn = (\n step: Step,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n) => Promise<StepResult>;\n\nexport async function runParallelStep(\n step: ParallelStep,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n _prevStepResults: ReadonlyArray<StepResult>,\n dispatch: DispatchFn,\n): Promise<StepResult> {\n const startedAt = Date.now();\n const policy = step.errorPolicy ?? \"fail-fast\";\n const branchCount = step.branches.length;\n\n // EC-6: empty branches → empty output, no error.\n if (branchCount === 0) {\n return {\n stepId: step.id,\n kind: \"parallel\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: [],\n };\n }\n\n const concurrency = step.concurrency ?? branchCount;\n const sem = createSemaphore(Math.max(1, Math.min(concurrency, branchCount)));\n\n // Derived signal for fail-fast: aborts on first branch failure.\n const failFastCtrl = policy === \"fail-fast\" ? new AbortController() : undefined;\n const branchSignal =\n policy === \"fail-fast\" ? mergeSignals(ctx.signal, failFastCtrl!.signal) : ctx.signal;\n\n // Gate each branch through the semaphore — acquire BEFORE running so the\n // permit cap is honored. (Eager-start would defeat concurrency limits.)\n const semBranchPromises = step.branches.map(async (branch, branchIdx) => {\n const release = await sem.acquire();\n try {\n return await runBranch(\n branch,\n input,\n { ...ctx, signal: branchSignal },\n options,\n dispatch,\n branchIdx,\n );\n } finally {\n release();\n }\n });\n\n if (policy === \"fail-fast\") {\n try {\n const outputs = await Promise.all(semBranchPromises);\n return {\n stepId: step.id,\n kind: \"parallel\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: outputs,\n };\n } catch (err) {\n failFastCtrl?.abort(err);\n // Collect any settled rejections so the aggregate has all errors.\n const settled = await Promise.allSettled(semBranchPromises);\n const errors = settled\n .filter((s): s is PromiseRejectedResult => s.status === \"rejected\")\n .map((s) => (s.reason instanceof Error ? s.reason : new Error(String(s.reason))));\n return {\n stepId: step.id,\n kind: \"parallel\",\n status: \"failed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n error: errToShape(new WorkflowParallelError(errors, step.id)),\n output: undefined,\n };\n }\n }\n\n // collect mode\n const settled = await Promise.allSettled(semBranchPromises);\n const outputs = settled.map((s) =>\n s.status === \"fulfilled\"\n ? { ok: true as const, value: s.value }\n : { ok: false as const, error: errToShape(s.reason) },\n );\n return {\n stepId: step.id,\n kind: \"parallel\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: outputs,\n };\n}\n\nasync function runBranch(\n branch: ReadonlyArray<Step>,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n dispatch: DispatchFn,\n branchIdx: number,\n): Promise<unknown> {\n let acc: unknown = input;\n for (const inner of branch) {\n const r = await dispatch(inner, acc, ctx, options, []);\n if (r.status === \"failed\") {\n throw new Error(\n `parallel branch ${branchIdx} step \"${inner.id}\" failed: ${r.error?.message ?? \"unknown\"}`,\n );\n }\n acc = r.output;\n }\n return acc;\n}\n\nfunction mergeSignals(a: AbortSignal, b: AbortSignal): AbortSignal {\n if (a.aborted) return a;\n if (b.aborted) return b;\n const ctrl = new AbortController();\n const onAbortA = (): void => ctrl.abort(a.reason);\n const onAbortB = (): void => ctrl.abort(b.reason);\n a.addEventListener(\"abort\", onAbortA, { once: true });\n b.addEventListener(\"abort\", onAbortB, { once: true });\n return ctrl.signal;\n}\n","/**\n * Execute a `SleepStep` — pause for `durationMs`. Aborts mid-sleep\n * when the signal fires (D245).\n *\n * @internal\n */\n\nimport type { SleepStep, StepContext, StepResult } from \"../../types/workflow.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport { abortableSleep } from \"./retry-policy.js\";\n\nexport async function runSleepStep(\n step: SleepStep,\n input: unknown,\n ctx: StepContext,\n): Promise<StepResult> {\n const startedAt = Date.now();\n try {\n await abortableSleep(step.durationMs, ctx.signal);\n return {\n stepId: step.id,\n kind: \"sleep\",\n status: \"completed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n output: input, // sleep is a pass-through\n };\n } catch (err) {\n return {\n stepId: step.id,\n kind: \"sleep\",\n status: \"failed\",\n attempts: 1,\n durationMs: Date.now() - startedAt,\n error: errToShape(err),\n };\n }\n}\n","/**\n * OTel telemetry for workflows (ADR D241).\n *\n * Spans:\n * - `workflow.run` — root span per `Workflow.run` invocation\n * - `workflow.step.<id>` — child span per step (retry attempts share the kind)\n *\n * Attributes:\n * - `workflow.name`, `workflow.run_id`, `step.kind`, `step.status`, `step.attempts`\n *\n * @internal\n */\n\nimport { getTracer, noopSpan, type SpanLike } from \"../telemetry/tracer-loader.js\";\n\nconst TRACER_NAME = \"@theokit/sdk/workflow\";\n\nexport function startWorkflowRunSpan(info: { workflowName: string; runId: string }): SpanLike {\n const tracer = getTracer(TRACER_NAME);\n if (tracer === undefined) return noopSpan;\n return tracer.startSpan(\"workflow.run\", {\n attributes: {\n \"workflow.name\": info.workflowName,\n \"workflow.run_id\": info.runId,\n },\n });\n}\n\nexport function startWorkflowStepSpan(info: {\n stepId: string;\n kind: string;\n attempt: number;\n}): SpanLike {\n const tracer = getTracer(TRACER_NAME);\n if (tracer === undefined) return noopSpan;\n return tracer.startSpan(`workflow.step.${info.stepId}`, {\n attributes: {\n \"step.id\": info.stepId,\n \"step.kind\": info.kind,\n \"step.attempt\": info.attempt,\n },\n });\n}\n","/**\n * Workflow executor (ADRs D230-D248).\n *\n * Walks `steps[]` sequentially, dispatching to per-kind handlers. Handles\n * suspend (sentinel pattern; D236), single-flight (D242), abort signal\n * boundaries (D245), and snapshot persistence opt-in (D235).\n *\n * @internal\n */\n\nimport {\n type Step,\n type StepContext,\n type StepResult,\n type WorkflowEvent,\n WorkflowInputError,\n type WorkflowOptions,\n WorkflowOutputError,\n type WorkflowResumeOptions,\n WorkflowResumeStepNotFoundError,\n type WorkflowRun,\n type WorkflowRunOptions,\n type WorkflowSnapshot,\n WorkflowSnapshotNotFoundError,\n WorkflowStateError,\n} from \"../../types/workflow.js\";\nimport { combineSignals, makeStepContext, WorkflowSuspendedSentinel } from \"./ctx.js\";\nimport { errToShape } from \"./error-shape.js\";\nimport {\n abortRun,\n assembleRun,\n makeStateController,\n validateWorkflowSchema,\n} from \"./executor-helpers.js\";\nimport { mintRunId } from \"./run-id.js\";\nimport { acquireSingleFlight } from \"./single-flight.js\";\nimport { getSnapshotStoreFor } from \"./snapshot-store.js\";\nimport { runAgentStep } from \"./step-agent.js\";\nimport { runBranchStep } from \"./step-branch.js\";\nimport { runDowhileStep } from \"./step-dowhile.js\";\nimport { runFnStep } from \"./step-fn.js\";\nimport { runForeachStep } from \"./step-foreach.js\";\nimport { runParallelStep } from \"./step-parallel.js\";\nimport { runSleepStep } from \"./step-sleep.js\";\nimport { startWorkflowRunSpan, startWorkflowStepSpan } from \"./telemetry.js\";\n\ninterface SuspendOutcome<T> {\n kind: \"suspended\" | \"failed\";\n run: WorkflowRun<T>;\n}\n\nasync function handleSuspend<T>(\n err: WorkflowSuspendedSentinel,\n ctx: {\n runId: string;\n name: string;\n step: Step;\n stepResults: StepResult[];\n acc: unknown;\n options: WorkflowOptions;\n startedAt: number;\n stepSpan: ReturnType<typeof startWorkflowStepSpan>;\n /** SE29 — the StepContext, read for its current shared `state`. */\n stepCtx: StepContext;\n },\n): Promise<SuspendOutcome<T>> {\n try {\n await saveSnapshot({\n runId: ctx.runId,\n workflowName: ctx.options.name,\n currentStepId: ctx.step.id,\n suspendedPayload: err.payload,\n stepResults: ctx.stepResults,\n accumulatedInput: ctx.acc,\n state: ctx.stepCtx.state, // SE29 — capture the shared state at suspend\n options: ctx.options,\n });\n } catch (snapErr) {\n ctx.stepSpan.setAttribute(\"step.status\", \"failed\");\n ctx.stepSpan.end();\n return {\n kind: \"failed\",\n run: assembleRun<T>({\n runId: ctx.runId,\n name: ctx.name,\n status: \"failed\",\n stepResults: ctx.stepResults,\n startedAt: ctx.startedAt,\n error: errToShape(snapErr),\n }),\n };\n }\n ctx.stepSpan.setAttribute(\"step.status\", \"suspended\");\n ctx.stepSpan.end();\n return {\n kind: \"suspended\",\n run: assembleRun<T>({\n runId: ctx.runId,\n name: ctx.name,\n status: \"suspended\",\n stepResults: [\n ...ctx.stepResults,\n {\n stepId: ctx.step.id,\n kind: ctx.step.kind,\n status: \"suspended\",\n attempts: 1,\n durationMs: 0,\n output: undefined,\n },\n ],\n startedAt: ctx.startedAt,\n }),\n };\n}\n\nasync function runOneStep<T>(args: {\n step: Step;\n acc: unknown;\n ctx: StepContext;\n options: WorkflowOptions;\n stepResults: StepResult[];\n runId: string;\n name: string;\n startedAt: number;\n}): Promise<{ kind: \"ok\"; result: StepResult } | { kind: \"terminal\"; run: WorkflowRun<T> }> {\n const stepSpan = startWorkflowStepSpan({\n stepId: args.step.id,\n kind: args.step.kind,\n attempt: 1,\n });\n let result: StepResult;\n try {\n result = await dispatchStep(args.step, args.acc, args.ctx, args.options, args.stepResults);\n } catch (err) {\n if (err instanceof WorkflowSuspendedSentinel) {\n const outcome = await handleSuspend<T>(err, { ...args, stepSpan, stepCtx: args.ctx });\n return { kind: \"terminal\", run: outcome.run };\n }\n result = {\n stepId: args.step.id,\n kind: args.step.kind,\n status: \"failed\",\n attempts: 1,\n durationMs: 0,\n error: errToShape(err),\n };\n }\n stepSpan.setAttribute(\"step.status\", result.status);\n stepSpan.setAttribute(\"step.attempts\", result.attempts);\n stepSpan.end();\n return { kind: \"ok\", result };\n}\n\ninterface LoopParams {\n options: WorkflowOptions;\n steps: ReadonlyArray<Step>;\n input: unknown;\n ctx: StepContext;\n runId: string;\n startedAt: number;\n signal: AbortSignal;\n /** M3 #62 — prior step outputs restored on resume (else resume is lossy). */\n initialStepResults?: ReadonlyArray<StepResult>;\n /** SE28 — sink for step-level stream events (top-level steps). */\n onStepEvent?: (event: WorkflowEvent) => void;\n}\n\n/** Emit events + branch on one step's outcome. Returns a terminal run, or the new acc. */\nfunction handleStepOutcome<TO>(\n outcome: { kind: \"ok\"; result: StepResult } | { kind: \"terminal\"; run: WorkflowRun<TO> },\n step: Step,\n loop: { stepResults: StepResult[]; runId: string; name: string; startedAt: number },\n onStepEvent?: (event: WorkflowEvent) => void,\n): { terminal: WorkflowRun<TO> } | { acc: unknown } {\n if (outcome.kind === \"terminal\") {\n // A snapshot-SAVE failure also returns terminal (status \"failed\") — only emit\n // workflow_suspended when the run actually suspended (else the consumer would\n // resume a run with no snapshot). A failed terminal has no event; read `result`.\n if (outcome.run.status === \"suspended\") {\n onStepEvent?.({ type: \"workflow_suspended\", stepId: step.id });\n }\n return { terminal: outcome.run };\n }\n loop.stepResults.push(outcome.result);\n if (outcome.result.status === \"failed\") {\n onStepEvent?.({\n type: \"step_failed\",\n stepId: step.id,\n error: outcome.result.error ?? { name: \"WorkflowStepError\", message: \"step failed\" },\n });\n return {\n terminal: assembleRun<TO>({\n runId: loop.runId,\n name: loop.name,\n status: \"failed\",\n stepResults: loop.stepResults,\n startedAt: loop.startedAt,\n error: outcome.result.error,\n }),\n };\n }\n onStepEvent?.({ type: \"step_completed\", stepId: step.id, output: outcome.result.output });\n return { acc: outcome.result.output };\n}\n\nasync function runStepsLoop<TO>(params: LoopParams): Promise<WorkflowRun<TO>> {\n const { options, steps, ctx, runId, startedAt, signal, onStepEvent } = params;\n // M3 #62 — seed with prior step outputs so a resumed workflow is not lossy.\n const stepResults: StepResult[] = [...(params.initialStepResults ?? [])];\n const loop = { stepResults, runId, name: options.name, startedAt };\n let acc: unknown = params.input;\n for (const step of steps) {\n if (signal.aborted) return abortRun<TO>(options.name, runId, startedAt, stepResults, signal);\n onStepEvent?.({ type: \"step_started\", stepId: step.id });\n const outcome = await runOneStep<TO>({\n step,\n acc,\n ctx,\n options,\n stepResults,\n runId,\n name: options.name,\n startedAt,\n });\n const handled = handleStepOutcome<TO>(outcome, step, loop, onStepEvent);\n if (\"terminal\" in handled) return handled.terminal;\n acc = handled.acc;\n }\n // SE27 — validate the whole-workflow output only on the terminal completed path.\n const outputIssues = validateWorkflowSchema(options.outputSchema, acc);\n if (outputIssues !== undefined) {\n return assembleRun<TO>({\n runId,\n name: options.name,\n status: \"failed\",\n stepResults,\n startedAt,\n error: errToShape(new WorkflowOutputError(options.name, outputIssues)),\n });\n }\n onStepEvent?.({ type: \"workflow_completed\" });\n return assembleRun<TO>({\n runId,\n name: options.name,\n status: \"completed\",\n output: acc as TO,\n stepResults,\n startedAt,\n });\n}\n\n/** M3 #62 — internal-only resume seam: prior step outputs are NOT on the public\n * WorkflowRunOptions (a consumer must not inject fabricated results into a fresh run);\n * resumeWorkflow sets them via this cast. */\ntype InternalRunOpts = WorkflowRunOptions & {\n readonly initialStepResults?: ReadonlyArray<StepResult>;\n /** SE28 — internal step-event sink threaded by `Workflow.stream()`. */\n readonly onStepEvent?: (event: WorkflowEvent) => void;\n /** SE29 — shared state restored from a snapshot on resume. */\n readonly restoredState?: unknown;\n};\n\nexport async function executeWorkflow<TInput, TOutput>(\n options: WorkflowOptions,\n steps: ReadonlyArray<Step>,\n input: TInput,\n runOpts?: WorkflowRunOptions,\n): Promise<WorkflowRun<TOutput>> {\n const runId = runOpts?.runId ?? mintRunId();\n const workflowId = options.workflowId ?? `wf-anon`;\n const flight = acquireSingleFlight(workflowId, runId, options.name);\n const startedAt = Date.now();\n const signal = combineSignals(runOpts?.signal, flight.signal);\n const runSpan = startWorkflowRunSpan({ workflowName: options.name, runId });\n\n if (signal.aborted) {\n flight.release();\n runSpan.setAttribute(\"workflow.status\", \"cancelled\");\n runSpan.end();\n return abortRun<TOutput>(options.name, runId, startedAt, [], signal);\n }\n\n const internal = runOpts as InternalRunOpts | undefined;\n // SE29 — seed shared state from the resume snapshot (if any) else initialState.\n const seededState =\n internal?.restoredState !== undefined ? internal.restoredState : options.initialState;\n const stateController = makeStateController(options, seededState);\n const ctx: StepContext = makeStepContext(runId, signal, stateController);\n try {\n // SE27 — validate the whole-workflow input BEFORE any step runs (fail-fast).\n const inputIssues = validateWorkflowSchema(options.inputSchema, input);\n if (inputIssues !== undefined) {\n return assembleRun<TOutput>({\n runId,\n name: options.name,\n status: \"failed\",\n stepResults: [],\n startedAt,\n error: errToShape(new WorkflowInputError(options.name, inputIssues)),\n });\n }\n // SE29 — validate the seeded state (fail-fast) before any step reads it.\n const stateIssues =\n seededState !== undefined\n ? validateWorkflowSchema(options.stateSchema, seededState)\n : undefined;\n if (stateIssues !== undefined) {\n return assembleRun<TOutput>({\n runId,\n name: options.name,\n status: \"failed\",\n stepResults: [],\n startedAt,\n error: errToShape(new WorkflowStateError(options.name, stateIssues)),\n });\n }\n return await runStepsLoop<TOutput>({\n options,\n steps,\n input,\n ctx,\n runId,\n startedAt,\n signal,\n ...(internal?.initialStepResults !== undefined\n ? { initialStepResults: internal.initialStepResults }\n : {}),\n ...(internal?.onStepEvent !== undefined ? { onStepEvent: internal.onStepEvent } : {}),\n });\n } finally {\n runSpan.end();\n flight.release();\n }\n}\n\n/**\n * Dispatch single step to the right handler. Exhaustive over `step.kind`.\n */\nexport async function dispatchStep(\n step: Step,\n input: unknown,\n ctx: StepContext,\n options: WorkflowOptions,\n prevStepResults: ReadonlyArray<StepResult>,\n): Promise<StepResult> {\n switch (step.kind) {\n case \"fn\":\n return runFnStep(step, input, ctx);\n case \"agent\":\n return runAgentStep(step, input, ctx);\n case \"parallel\":\n return runParallelStep(step, input, ctx, options, prevStepResults, dispatchStep);\n case \"branch\":\n return runBranchStep(step, input, ctx, options, prevStepResults, dispatchStep);\n case \"foreach\":\n return runForeachStep(step, input, ctx, options, prevStepResults, dispatchStep);\n case \"dowhile\":\n return runDowhileStep(step, input, ctx, options, prevStepResults, dispatchStep);\n case \"sleep\":\n return runSleepStep(step, input, ctx);\n case \"suspend\":\n // Standalone suspend: throw sentinel so executor catches.\n throw new WorkflowSuspendedSentinel(undefined);\n default: {\n const _exhaustive: never = step;\n throw new Error(`Unknown step kind: ${(_exhaustive as Step).kind}`);\n }\n }\n}\n\ninterface SnapshotParams {\n runId: string;\n workflowName: string;\n currentStepId: string;\n suspendedPayload?: unknown;\n stepResults: ReadonlyArray<StepResult>;\n accumulatedInput: unknown;\n /** SE29 — shared state captured at suspend. */\n state: unknown;\n options: WorkflowOptions;\n}\n\nasync function saveSnapshot(p: SnapshotParams): Promise<void> {\n const snapshot: WorkflowSnapshot = {\n _schemaVersion: 2, // SE29 — carries `state`\n runId: p.runId,\n workflowName: p.workflowName,\n currentStepId: p.currentStepId,\n suspendedPayload: p.suspendedPayload,\n stepResults: p.stepResults,\n accumulatedInput: p.accumulatedInput,\n ...(p.state !== undefined ? { state: p.state } : {}),\n suspendedAt: Date.now(),\n };\n const store = getSnapshotStoreFor(p.options);\n await store.save(snapshot);\n}\n\n/* ─── Resume ─── */\n\nexport async function resumeWorkflow<TO>(opts: WorkflowResumeOptions): Promise<WorkflowRun<TO>> {\n // We need access to the workflow's internal options/steps. The public\n // resume API hands us a `workflow` reference exposing `.run` only — for\n // v1 we accept the user re-running the same workflow with the snapshot's\n // accumulated input + payload merged. Full resume-from-step support\n // would require exposing `__steps` and `__options`; v1 ships a simpler\n // \"re-run from input\" semantics gated by snapshot lookup.\n const wfInternal = opts.workflow as {\n __options?: WorkflowOptions;\n __steps?: ReadonlyArray<Step>;\n run: (input: unknown, runOpts?: WorkflowRunOptions) => Promise<WorkflowRun<TO>>;\n };\n const options = wfInternal.__options;\n const steps = wfInternal.__steps;\n if (options === undefined || steps === undefined) {\n throw new Error(\"Workflow.resume requires an instance from Workflow.create().commit()\");\n }\n const store = getSnapshotStoreFor(options);\n const snapshot = await store.load(opts.runId);\n if (snapshot === undefined) {\n throw new WorkflowSnapshotNotFoundError(opts.runId);\n }\n // EC-8: verify the currentStepId exists in the supplied workflow.\n const stepIdx = steps.findIndex((s) => s.id === snapshot.currentStepId);\n if (stepIdx < 0) {\n throw new WorkflowResumeStepNotFoundError(snapshot.currentStepId, snapshot.workflowName);\n }\n\n // Validate payload if the suspend step declared a schema.\n const suspendStep = steps[stepIdx];\n if (\n suspendStep !== undefined &&\n suspendStep.kind === \"suspend\" &&\n suspendStep.payloadSchema !== undefined\n ) {\n suspendStep.payloadSchema.parse(opts.payload);\n }\n\n // For v1: continue from stepIdx + 1 with `payload` (if any) as the new\n // accumulated input. This is intentionally simpler than full state\n // restoration; the snapshot's `accumulatedInput` is preserved for\n // observability but the resume input is determined by the caller's\n // payload (or the snapshot's accumulator if payload is undefined).\n const resumeInput = opts.payload !== undefined ? opts.payload : snapshot.accumulatedInput;\n const remainingSteps = steps.slice(stepIdx + 1);\n\n // Drop snapshot once we begin (single-shot semantics).\n await store.delete(opts.runId);\n\n return executeWorkflow<unknown, TO>(options, remainingSteps, resumeInput, {\n signal: opts.signal,\n runId: opts.runId,\n // M3 #62 — restore prior step outputs so the resumed run is not lossy (internal seam).\n initialStepResults: snapshot.stepResults,\n // SE29 — restore shared state (v2 snapshot). A v1 snapshot has no `state` →\n // executeWorkflow falls back to `options.initialState`.\n ...(snapshot.state !== undefined ? { restoredState: snapshot.state } : {}),\n } as InternalRunOpts);\n}\n"]}
@@ -1,9 +1,9 @@
1
- import { WorkflowInputError, WorkflowStateError, getSnapshotStoreFor, WorkflowSnapshotNotFoundError, WorkflowResumeStepNotFoundError, WorkflowAlreadyRunningError, WorkflowOutputError, WorkflowMaxIterationsExceededError, WorkflowParallelError, WorkflowCompensateNotImplementedError } from './chunk-UVNG67DG.js';
1
+ import { WorkflowInputError, WorkflowStateError, getSnapshotStoreFor, WorkflowSnapshotNotFoundError, WorkflowResumeStepNotFoundError, WorkflowAlreadyRunningError, WorkflowOutputError, WorkflowMaxIterationsExceededError, WorkflowParallelError, WorkflowCompensateNotImplementedError } from './chunk-YDLNI7J6.js';
2
2
  import { getTracer, noopSpan } from './chunk-K2BQQ445.js';
3
- import { createSemaphore } from './chunk-5PZMMF4H.js';
4
- import './chunk-S2BBRVQX.js';
5
- import { UnsupportedRunOperationError } from './chunk-WLKFWQSJ.js';
6
- import { redactSecrets } from './chunk-JTFYYKDT.js';
3
+ import { createSemaphore } from './chunk-NFCKEBHI.js';
4
+ import './chunk-56OXYUZE.js';
5
+ import { UnsupportedRunOperationError } from './chunk-CD73YHEH.js';
6
+ import { redactSecrets } from './chunk-TAPQWDW2.js';
7
7
 
8
8
  // src/internal/workflow/ctx.ts
9
9
  var WorkflowSuspendedSentinel = class extends Error {
@@ -977,5 +977,5 @@ async function resumeWorkflow(opts) {
977
977
  }
978
978
 
979
979
  export { dispatchStep, executeWorkflow, resumeWorkflow };
980
- //# sourceMappingURL=executor-ORJS5GV2.js.map
981
- //# sourceMappingURL=executor-ORJS5GV2.js.map
980
+ //# sourceMappingURL=executor-PAH72CB5.js.map
981
+ //# sourceMappingURL=executor-PAH72CB5.js.map