@temelj/workflow 0.0.0-alpha.2 → 0.0.0-alpha.4

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 (461) hide show
  1. package/README.md +394 -2
  2. package/dist/attributes.d.mts +11 -9
  3. package/dist/attributes.mjs +23 -5
  4. package/dist/bundle.d.mts +5 -23
  5. package/dist/bundle.mjs +2 -18
  6. package/dist/client/create.d.mts +26 -23
  7. package/dist/client/create.mjs +26 -32
  8. package/dist/client/facades.d.mts +12 -18
  9. package/dist/client/facades.mjs +102 -93
  10. package/dist/client/mod.mjs +1 -2
  11. package/dist/client/run-handle.d.mts +17 -54
  12. package/dist/client/run-handle.mjs +35 -105
  13. package/dist/client/worker-options.d.mts +8 -8
  14. package/dist/client/worker-options.mjs +11 -11
  15. package/dist/cloudflare/cloudflare.d.mts +4 -5
  16. package/dist/cloudflare/codec.d.mts +28 -13
  17. package/dist/cloudflare/codec.mjs +40 -17
  18. package/dist/cloudflare/entrypoint.d.mts +3 -4
  19. package/dist/cloudflare/entrypoint.mjs +4 -3
  20. package/dist/cloudflare/execution.d.mts +3 -4
  21. package/dist/cloudflare/execution.mjs +20 -13
  22. package/dist/cloudflare/host.d.mts +6 -7
  23. package/dist/cloudflare/host.mjs +7 -6
  24. package/dist/cloudflare/mod.d.mts +4 -4
  25. package/dist/cloudflare/mod.mjs +2 -2
  26. package/dist/cloudflare/name.d.mts +3 -4
  27. package/dist/cloudflare/name.mjs +3 -3
  28. package/dist/cloudflare/registry.d.mts +3 -23
  29. package/dist/cloudflare/registry.mjs +2 -20
  30. package/dist/cloudflare/runtime.d.mts +11 -18
  31. package/dist/cloudflare/runtime.mjs +52 -73
  32. package/dist/cloudflare/step.d.mts +6 -6
  33. package/dist/cloudflare/step.mjs +69 -57
  34. package/dist/cloudflare/types.d.mts +17 -36
  35. package/dist/collection.d.mts +8 -11
  36. package/dist/collection.mjs +10 -14
  37. package/dist/compiled-function.d.mts +14 -19
  38. package/dist/compiled-function.mjs +12 -24
  39. package/dist/compiled.d.mts +4 -0
  40. package/dist/compiled.mjs +4 -0
  41. package/dist/compiler/ast.d.mts +26 -0
  42. package/dist/{vite → compiler}/ast.mjs +24 -16
  43. package/dist/{vite → compiler}/error.d.mts +4 -6
  44. package/dist/{vite → compiler}/error.mjs +14 -16
  45. package/dist/compiler/manifest.d.mts +6 -0
  46. package/dist/{vite → compiler}/manifest.mjs +9 -7
  47. package/dist/compiler/plugin.d.mts +7 -0
  48. package/dist/{vite → compiler}/plugin.mjs +45 -46
  49. package/dist/compiler/safety.d.mts +12 -0
  50. package/dist/{vite → compiler}/safety.mjs +5 -11
  51. package/dist/{vite → compiler}/source-edit.d.mts +3 -4
  52. package/dist/{vite → compiler}/source-edit.mjs +1 -1
  53. package/dist/{vite → compiler}/source-map.d.mts +4 -3
  54. package/dist/{vite → compiler}/source-map.mjs +3 -3
  55. package/dist/compiler/source.d.mts +7 -0
  56. package/dist/{vite → compiler}/source.mjs +1 -1
  57. package/dist/compiler/transform.d.mts +12 -0
  58. package/dist/{vite → compiler}/transform.mjs +37 -38
  59. package/dist/definition.d.mts +17 -25
  60. package/dist/definition.mjs +19 -35
  61. package/dist/engine/child-workflow.d.mts +5 -9
  62. package/dist/engine/child-workflow.mjs +46 -67
  63. package/dist/engine/command-identity.d.mts +5 -6
  64. package/dist/engine/command-identity.mjs +9 -5
  65. package/dist/engine/context.d.mts +17 -0
  66. package/dist/engine/create.d.mts +36 -94
  67. package/dist/engine/create.mjs +55 -260
  68. package/dist/engine/deterministic.d.mts +6 -11
  69. package/dist/engine/deterministic.mjs +47 -68
  70. package/dist/engine/durable-command.d.mts +5 -5
  71. package/dist/engine/durable-command.mjs +2 -2
  72. package/dist/engine/execution-service.d.mts +20 -24
  73. package/dist/engine/execution-service.mjs +54 -52
  74. package/dist/engine/hooks.d.mts +17 -39
  75. package/dist/engine/hooks.mjs +73 -94
  76. package/dist/engine/inspection.d.mts +23 -15
  77. package/dist/engine/inspection.mjs +55 -29
  78. package/dist/engine/lifecycle.d.mts +6 -12
  79. package/dist/engine/lifecycle.mjs +5 -5
  80. package/dist/engine/lock-replay.d.mts +8 -15
  81. package/dist/engine/lock-replay.mjs +12 -25
  82. package/dist/engine/lock.d.mts +10 -15
  83. package/dist/engine/lock.mjs +65 -51
  84. package/dist/engine/message.d.mts +14 -34
  85. package/dist/engine/message.mjs +94 -127
  86. package/dist/engine/observation.d.mts +9 -11
  87. package/dist/engine/observation.mjs +18 -27
  88. package/dist/engine/replay.d.mts +18 -19
  89. package/dist/engine/replay.mjs +32 -56
  90. package/dist/engine/resume.d.mts +16 -0
  91. package/dist/engine/resume.mjs +24 -0
  92. package/dist/engine/retry.d.mts +15 -19
  93. package/dist/engine/retry.mjs +17 -17
  94. package/dist/engine/run-data.d.mts +4 -8
  95. package/dist/engine/run-data.mjs +24 -22
  96. package/dist/engine/run-service.d.mts +24 -33
  97. package/dist/engine/run-service.mjs +125 -93
  98. package/dist/engine/run-utils.d.mts +11 -13
  99. package/dist/engine/run-utils.mjs +23 -46
  100. package/dist/engine/schedule.d.mts +8 -22
  101. package/dist/engine/schedule.mjs +37 -34
  102. package/dist/engine/serialization.d.mts +9 -6
  103. package/dist/engine/serialization.mjs +30 -21
  104. package/dist/engine/signals.d.mts +23 -0
  105. package/dist/engine/signals.mjs +41 -0
  106. package/dist/engine/start.d.mts +18 -0
  107. package/dist/engine/start.mjs +88 -0
  108. package/dist/engine/state.d.mts +37 -67
  109. package/dist/engine/state.mjs +127 -282
  110. package/dist/engine/step-api.d.mts +5 -8
  111. package/dist/engine/step-api.mjs +16 -16
  112. package/dist/engine/stream-reader.d.mts +12 -0
  113. package/dist/engine/stream-reader.mjs +154 -0
  114. package/dist/engine/stream.d.mts +9 -54
  115. package/dist/engine/stream.mjs +54 -196
  116. package/dist/engine/summary/recovery.d.mts +35 -0
  117. package/dist/engine/summary/recovery.mjs +363 -0
  118. package/dist/engine/summary/runs.d.mts +43 -0
  119. package/dist/engine/summary/runs.mjs +294 -0
  120. package/dist/engine/summary/step-attempts.d.mts +5 -10
  121. package/dist/engine/summary/step-attempts.mjs +157 -36
  122. package/dist/engine/summary/tally.d.mts +44 -0
  123. package/dist/engine/summary/tally.mjs +142 -0
  124. package/dist/engine/task.d.mts +4 -5
  125. package/dist/engine/task.mjs +40 -48
  126. package/dist/errors/base.d.mts +17 -77
  127. package/dist/errors/base.mjs +26 -327
  128. package/dist/errors/capability.d.mts +3 -6
  129. package/dist/errors/capability.mjs +4 -8
  130. package/dist/errors/codes.d.mts +116 -0
  131. package/dist/{types/error-code.mjs → errors/codes.mjs} +2 -17
  132. package/dist/errors/definition.d.mts +3 -17
  133. package/dist/errors/definition.mjs +5 -42
  134. package/dist/errors/failures.d.mts +17 -51
  135. package/dist/errors/failures.mjs +35 -102
  136. package/dist/errors/hook.d.mts +5 -9
  137. package/dist/errors/hook.mjs +4 -16
  138. package/dist/errors/implementation.d.mts +3 -6
  139. package/dist/errors/implementation.mjs +7 -12
  140. package/dist/errors/lock.d.mts +7 -20
  141. package/dist/errors/lock.mjs +8 -44
  142. package/dist/errors/message.d.mts +14 -59
  143. package/dist/errors/message.mjs +13 -39
  144. package/dist/errors/mod.d.mts +4 -5
  145. package/dist/errors/mod.mjs +5 -7
  146. package/dist/errors/records.d.mts +10 -4
  147. package/dist/errors/records.mjs +256 -256
  148. package/dist/errors/run.d.mts +27 -68
  149. package/dist/errors/run.mjs +31 -85
  150. package/dist/errors/schedule.d.mts +7 -18
  151. package/dist/errors/schedule.mjs +7 -39
  152. package/dist/errors/step.d.mts +12 -45
  153. package/dist/errors/step.mjs +13 -34
  154. package/dist/errors/stream.d.mts +8 -16
  155. package/dist/errors/stream.mjs +7 -41
  156. package/dist/esbuild.d.mts +6 -4
  157. package/dist/esbuild.mjs +2 -1
  158. package/dist/events/descriptors.d.mts +12 -241
  159. package/dist/events/descriptors.mjs +12 -5
  160. package/dist/history/projection.d.mts +4 -6
  161. package/dist/history/projection.mjs +22 -26
  162. package/dist/history/replay-projection.d.mts +44 -48
  163. package/dist/history/replay-projection.mjs +41 -50
  164. package/dist/history/{mod.d.mts → replay.d.mts} +16 -21
  165. package/dist/history/{mod.mjs → replay.mjs} +21 -25
  166. package/dist/history/sequencer.d.mts +10 -11
  167. package/dist/history/sequencer.mjs +11 -7
  168. package/dist/history/step-attempts.d.mts +4 -7
  169. package/dist/history/step-attempts.mjs +8 -9
  170. package/dist/history/timeline.d.mts +4 -13
  171. package/dist/history/timeline.mjs +46 -265
  172. package/dist/history/validator.d.mts +5 -7
  173. package/dist/history/validator.mjs +9 -24
  174. package/dist/hook-token.d.mts +7 -0
  175. package/dist/hook-token.mjs +32 -0
  176. package/dist/ids.d.mts +8 -0
  177. package/dist/ids.mjs +21 -0
  178. package/dist/message-options.d.mts +11 -5
  179. package/dist/message-options.mjs +9 -7
  180. package/dist/mod.d.mts +32 -36
  181. package/dist/mod.mjs +9 -13
  182. package/dist/otel/metrics.d.mts +31 -0
  183. package/dist/otel/metrics.mjs +60 -0
  184. package/dist/otel/mod.d.mts +3 -0
  185. package/dist/otel/mod.mjs +3 -0
  186. package/dist/otel/spans.d.mts +24 -0
  187. package/dist/otel/spans.mjs +218 -0
  188. package/dist/otel/support.d.mts +15 -8
  189. package/dist/otel/support.mjs +18 -40
  190. package/dist/{otel.d.mts → otel/telemetry.d.mts} +5 -6
  191. package/dist/otel/telemetry.mjs +305 -0
  192. package/dist/pagination.d.mts +6 -12
  193. package/dist/pagination.mjs +10 -14
  194. package/dist/registry.d.mts +8 -5
  195. package/dist/registry.mjs +19 -10
  196. package/dist/rolldown.d.mts +6 -4
  197. package/dist/rolldown.mjs +2 -1
  198. package/dist/rollup.d.mts +6 -4
  199. package/dist/rollup.mjs +2 -1
  200. package/dist/rspack.d.mts +6 -4
  201. package/dist/rspack.mjs +2 -1
  202. package/dist/run-status.d.mts +29 -0
  203. package/dist/run-status.mjs +42 -0
  204. package/dist/schema/common.d.mts +22 -0
  205. package/dist/schema/common.mjs +54 -0
  206. package/dist/schema/error.d.mts +17 -0
  207. package/dist/schema/error.mjs +39 -0
  208. package/dist/schema/events.d.mts +446 -0
  209. package/dist/schema/events.mjs +235 -0
  210. package/dist/schema/pagination.d.mts +5 -0
  211. package/dist/schema/pagination.mjs +11 -0
  212. package/dist/schema/persisted-value.d.mts +8 -0
  213. package/dist/schema/persisted-value.mjs +94 -0
  214. package/dist/schema/run.d.mts +51 -0
  215. package/dist/schema/run.mjs +88 -0
  216. package/dist/schema/store.d.mts +94 -0
  217. package/dist/schema/store.mjs +116 -0
  218. package/dist/step-definition.d.mts +4 -9
  219. package/dist/step-definition.mjs +2 -2
  220. package/dist/store/capabilities.d.mts +8 -9
  221. package/dist/store/capabilities.mjs +7 -7
  222. package/dist/store/cleanup.d.mts +9 -14
  223. package/dist/store/cleanup.mjs +86 -85
  224. package/dist/store/create.d.mts +28 -29
  225. package/dist/store/create.mjs +10 -11
  226. package/dist/store/events.d.mts +48 -0
  227. package/dist/store/events.mjs +263 -0
  228. package/dist/store/indexes.d.mts +25 -0
  229. package/dist/store/indexes.mjs +282 -0
  230. package/dist/store/instrumentation.d.mts +2 -3
  231. package/dist/store/instrumentation.mjs +30 -30
  232. package/dist/store/lock.d.mts +4 -5
  233. package/dist/store/lock.mjs +5 -7
  234. package/dist/store/materialization.d.mts +10 -17
  235. package/dist/store/materialization.mjs +39 -33
  236. package/dist/store/mod.d.mts +3 -3
  237. package/dist/store/mod.mjs +2 -2
  238. package/dist/store/query.d.mts +13 -17
  239. package/dist/store/query.mjs +13 -13
  240. package/dist/store/run.d.mts +25 -34
  241. package/dist/store/run.mjs +67 -108
  242. package/dist/store/schedule.d.mts +6 -8
  243. package/dist/store/schedule.mjs +11 -11
  244. package/dist/store/step-attempt.d.mts +9 -12
  245. package/dist/store/step-attempt.mjs +9 -9
  246. package/dist/store/storage-value.d.mts +3 -3
  247. package/dist/store/storage-value.mjs +17 -1
  248. package/dist/store/validation.d.mts +17 -20
  249. package/dist/store/validation.mjs +30 -33
  250. package/dist/store-keys.d.mts +35 -47
  251. package/dist/store-keys.mjs +9 -17
  252. package/dist/telemetry.d.mts +16 -16
  253. package/dist/telemetry.mjs +3 -3
  254. package/dist/temporal.d.mts +11 -16
  255. package/dist/temporal.mjs +8 -9
  256. package/dist/timer.d.mts +12 -10
  257. package/dist/timer.mjs +11 -3
  258. package/dist/types/cleanup.d.mts +13 -50
  259. package/dist/types/cleanup.mjs +1 -22
  260. package/dist/types/client.d.mts +101 -162
  261. package/dist/types/{vite.d.mts → compiler.d.mts} +17 -24
  262. package/dist/types/compiler.mjs +1 -0
  263. package/dist/types/definition.d.mts +22 -34
  264. package/dist/types/engine-options.d.mts +10 -17
  265. package/dist/types/engine.d.mts +15 -274
  266. package/dist/types/error.d.mts +15 -217
  267. package/dist/types/error.mjs +1 -48
  268. package/dist/types/events.d.mts +59 -2730
  269. package/dist/types/events.mjs +1 -283
  270. package/dist/types/hook.d.mts +27 -85
  271. package/dist/types/hook.mjs +1 -66
  272. package/dist/types/ids.d.mts +9 -0
  273. package/dist/types/ids.mjs +1 -0
  274. package/dist/types/lock.d.mts +8 -26
  275. package/dist/types/lock.mjs +1 -18
  276. package/dist/types/message.d.mts +29 -43
  277. package/dist/types/observation.d.mts +43 -58
  278. package/dist/types/pagination.d.mts +6 -22
  279. package/dist/types/pagination.mjs +1 -13
  280. package/dist/types/result.d.mts +11 -43
  281. package/dist/types/retry.d.mts +7 -14
  282. package/dist/types/run-list.d.mts +9 -11
  283. package/dist/types/run-options.d.mts +25 -32
  284. package/dist/types/run.d.mts +35 -315
  285. package/dist/types/run.mjs +1 -207
  286. package/dist/types/runtime.d.mts +33 -145
  287. package/dist/types/runtime.mjs +1 -21
  288. package/dist/types/schedule.d.mts +13 -72
  289. package/dist/types/schedule.mjs +1 -48
  290. package/dist/types/step-attempts.d.mts +65 -261
  291. package/dist/types/step-attempts.mjs +1 -43
  292. package/dist/types/step.d.mts +66 -77
  293. package/dist/types/step.mjs +1 -5
  294. package/dist/types/store.d.mts +50 -182
  295. package/dist/types/stream.d.mts +19 -40
  296. package/dist/types/summary.d.mts +174 -278
  297. package/dist/types/telemetry.d.mts +23 -28
  298. package/dist/types/telemetry.mjs +1 -9
  299. package/dist/types/timeline.d.mts +46 -233
  300. package/dist/types/worker.d.mts +22 -29
  301. package/dist/values.d.mts +15 -0
  302. package/dist/values.mjs +57 -0
  303. package/dist/vite.d.mts +5 -6
  304. package/dist/vite.mjs +3 -4
  305. package/dist/webpack.d.mts +6 -4
  306. package/dist/webpack.mjs +2 -1
  307. package/dist/worker/error.d.mts +2 -9
  308. package/dist/worker/error.mjs +20 -32
  309. package/dist/worker/missing-implementation.d.mts +19 -0
  310. package/dist/worker/missing-implementation.mjs +62 -0
  311. package/dist/worker/worker.d.mts +18 -0
  312. package/dist/{worker.mjs → worker/worker.mjs} +64 -118
  313. package/package.json +28 -47
  314. package/dist/engine/execution-api.d.mts +0 -29
  315. package/dist/engine/execution-api.mjs +0 -33
  316. package/dist/engine/inspection-api.d.mts +0 -34
  317. package/dist/engine/inspection-api.mjs +0 -78
  318. package/dist/engine/mod.d.mts +0 -4
  319. package/dist/engine/mod.mjs +0 -2
  320. package/dist/engine/recovery.d.mts +0 -26
  321. package/dist/engine/recovery.mjs +0 -92
  322. package/dist/engine/retry-policy.d.mts +0 -4
  323. package/dist/engine/retry-policy.mjs +0 -4
  324. package/dist/engine/start-api.d.mts +0 -30
  325. package/dist/engine/start-api.mjs +0 -99
  326. package/dist/engine/summary/active-events.d.mts +0 -34
  327. package/dist/engine/summary/active-events.mjs +0 -69
  328. package/dist/engine/summary/child-workflow-runs.d.mts +0 -24
  329. package/dist/engine/summary/child-workflow-runs.mjs +0 -138
  330. package/dist/engine/summary/child-workflow-waits.d.mts +0 -21
  331. package/dist/engine/summary/child-workflow-waits.mjs +0 -67
  332. package/dist/engine/summary/recovery-child-workflow-waits.d.mts +0 -11
  333. package/dist/engine/summary/recovery-child-workflow-waits.mjs +0 -89
  334. package/dist/engine/summary/recovery-due-runs.d.mts +0 -16
  335. package/dist/engine/summary/recovery-due-runs.mjs +0 -52
  336. package/dist/engine/summary/recovery-failed-runs.d.mts +0 -14
  337. package/dist/engine/summary/recovery-failed-runs.mjs +0 -33
  338. package/dist/engine/summary/recovery-lease-runs.d.mts +0 -16
  339. package/dist/engine/summary/recovery-lease-runs.mjs +0 -69
  340. package/dist/engine/summary/recovery-locks.d.mts +0 -18
  341. package/dist/engine/summary/recovery-locks.mjs +0 -100
  342. package/dist/engine/summary/recovery-message-waits.d.mts +0 -11
  343. package/dist/engine/summary/recovery-message-waits.mjs +0 -74
  344. package/dist/engine/summary/recovery-retry-runs.d.mts +0 -17
  345. package/dist/engine/summary/recovery-retry-runs.mjs +0 -65
  346. package/dist/engine/summary/recovery-run-timestamps.d.mts +0 -13
  347. package/dist/engine/summary/recovery-run-timestamps.mjs +0 -18
  348. package/dist/engine/summary/recovery-runs.d.mts +0 -23
  349. package/dist/engine/summary/recovery-runs.mjs +0 -54
  350. package/dist/engine/summary/recovery-schedules.d.mts +0 -10
  351. package/dist/engine/summary/recovery-schedules.mjs +0 -46
  352. package/dist/engine/summary/recovery-sleep-waits.d.mts +0 -10
  353. package/dist/engine/summary/recovery-sleep-waits.mjs +0 -53
  354. package/dist/engine/summary/recovery-waits.d.mts +0 -21
  355. package/dist/engine/summary/recovery-waits.mjs +0 -29
  356. package/dist/engine/summary/run-availability.d.mts +0 -13
  357. package/dist/engine/summary/run-availability.mjs +0 -37
  358. package/dist/engine/summary/run-cleanup.d.mts +0 -14
  359. package/dist/engine/summary/run-cleanup.mjs +0 -44
  360. package/dist/engine/summary/run-failure.d.mts +0 -14
  361. package/dist/engine/summary/run-failure.mjs +0 -62
  362. package/dist/engine/summary/run-hooks.d.mts +0 -14
  363. package/dist/engine/summary/run-hooks.mjs +0 -63
  364. package/dist/engine/summary/run-lease.d.mts +0 -11
  365. package/dist/engine/summary/run-lease.mjs +0 -64
  366. package/dist/engine/summary/run-message-waits.d.mts +0 -15
  367. package/dist/engine/summary/run-message-waits.mjs +0 -62
  368. package/dist/engine/summary/run-metrics.d.mts +0 -31
  369. package/dist/engine/summary/run-metrics.mjs +0 -93
  370. package/dist/engine/summary/run-retry.d.mts +0 -9
  371. package/dist/engine/summary/run-retry.mjs +0 -69
  372. package/dist/engine/summary/run-sleeps.d.mts +0 -15
  373. package/dist/engine/summary/run-sleeps.mjs +0 -61
  374. package/dist/engine/summary/run-state.d.mts +0 -26
  375. package/dist/engine/summary/run-state.mjs +0 -48
  376. package/dist/engine/summary/run-status.d.mts +0 -16
  377. package/dist/engine/summary/run-status.mjs +0 -35
  378. package/dist/engine/summary/run-streams.d.mts +0 -14
  379. package/dist/engine/summary/run-streams.mjs +0 -46
  380. package/dist/engine/summary/run-transition.d.mts +0 -9
  381. package/dist/engine/summary/run-transition.mjs +0 -39
  382. package/dist/engine/summary/run-workflow.d.mts +0 -9
  383. package/dist/engine/summary/run-workflow.mjs +0 -47
  384. package/dist/engine/summary/step-attempt-active-child-workflows.d.mts +0 -13
  385. package/dist/engine/summary/step-attempt-active-child-workflows.mjs +0 -55
  386. package/dist/engine/summary/step-attempt-active-fields.d.mts +0 -23
  387. package/dist/engine/summary/step-attempt-active-fields.mjs +0 -14
  388. package/dist/engine/summary/step-attempt-active-message-waits.d.mts +0 -12
  389. package/dist/engine/summary/step-attempt-active-message-waits.mjs +0 -47
  390. package/dist/engine/summary/step-attempt-active-sleeps.d.mts +0 -19
  391. package/dist/engine/summary/step-attempt-active-sleeps.mjs +0 -44
  392. package/dist/engine/summary/step-attempt-buckets.d.mts +0 -22
  393. package/dist/engine/summary/step-attempt-buckets.mjs +0 -152
  394. package/dist/engine/summary/step-attempt-failure.d.mts +0 -12
  395. package/dist/engine/summary/step-attempt-failure.mjs +0 -61
  396. package/dist/engine/summary/step-attempt-lifecycle.d.mts +0 -13
  397. package/dist/engine/summary/step-attempt-lifecycle.mjs +0 -19
  398. package/dist/engine/summary.d.mts +0 -32
  399. package/dist/engine/summary.mjs +0 -37
  400. package/dist/errors/details.d.mts +0 -13
  401. package/dist/errors/details.mjs +0 -66
  402. package/dist/errors/record-view.d.mts +0 -11
  403. package/dist/errors/record-view.mjs +0 -24
  404. package/dist/errors/runtime.d.mts +0 -12
  405. package/dist/errors/runtime.mjs +0 -24
  406. package/dist/events/mod.d.mts +0 -3
  407. package/dist/events/mod.mjs +0 -2
  408. package/dist/history/attempt-key.d.mts +0 -6
  409. package/dist/history/attempt-key.mjs +0 -7
  410. package/dist/inspection/mod.d.mts +0 -5
  411. package/dist/inspection/mod.mjs +0 -3
  412. package/dist/otel.mjs +0 -590
  413. package/dist/runtime.d.mts +0 -35
  414. package/dist/runtime.mjs +0 -198
  415. package/dist/store/append-projection.d.mts +0 -15
  416. package/dist/store/append-projection.mjs +0 -26
  417. package/dist/store/compaction.d.mts +0 -5
  418. package/dist/store/compaction.mjs +0 -8
  419. package/dist/store/event-append-project.d.mts +0 -15
  420. package/dist/store/event-append-project.mjs +0 -77
  421. package/dist/store/event-append.d.mts +0 -37
  422. package/dist/store/event-append.mjs +0 -80
  423. package/dist/store/event-history.d.mts +0 -22
  424. package/dist/store/event-history.mjs +0 -75
  425. package/dist/store/event.d.mts +0 -10
  426. package/dist/store/event.mjs +0 -28
  427. package/dist/store/idempotency.d.mts +0 -10
  428. package/dist/store/idempotency.mjs +0 -167
  429. package/dist/store/message-index.d.mts +0 -21
  430. package/dist/store/message-index.mjs +0 -122
  431. package/dist/store/revision.d.mts +0 -4
  432. package/dist/store/revision.mjs +0 -7
  433. package/dist/store/schema.d.mts +0 -14
  434. package/dist/store/schema.mjs +0 -17
  435. package/dist/types/common.d.mts +0 -20
  436. package/dist/types/common.mjs +0 -16
  437. package/dist/types/error-code.d.mts +0 -256
  438. package/dist/types/message-id.d.mts +0 -7
  439. package/dist/types/message-id.mjs +0 -5
  440. package/dist/types/run-id.d.mts +0 -7
  441. package/dist/types/run-id.mjs +0 -5
  442. package/dist/types/step-id.d.mts +0 -7
  443. package/dist/types/step-id.mjs +0 -5
  444. package/dist/types/stream-id.d.mts +0 -7
  445. package/dist/types/stream-id.mjs +0 -5
  446. package/dist/types/worker-id.d.mts +0 -7
  447. package/dist/types/worker-id.mjs +0 -5
  448. package/dist/utility.d.mts +0 -49
  449. package/dist/utility.mjs +0 -122
  450. package/dist/vite/ast.d.mts +0 -23
  451. package/dist/vite/generated-name.d.mts +0 -7
  452. package/dist/vite/generated-name.mjs +0 -9
  453. package/dist/vite/manifest.d.mts +0 -7
  454. package/dist/vite/plugin.d.mts +0 -7
  455. package/dist/vite/safety.d.mts +0 -12
  456. package/dist/vite/source.d.mts +0 -7
  457. package/dist/vite/transform.d.mts +0 -7
  458. package/dist/webhook.d.mts +0 -16
  459. package/dist/webhook.mjs +0 -17
  460. package/dist/worker.d.mts +0 -19
  461. /package/dist/{types/vite.mjs → engine/context.mjs} +0 -0
@@ -1,11 +1,6 @@
1
- import { WorkflowStepAttemptRecord, WorkflowStepAttemptSummary } from "../../types/step-attempts.mjs";
2
- import { WorkflowRunRecord } from "../../types/run.mjs";
1
+ import { StepAttemptRecord, StepAttemptSummary } from "../../types/step-attempts.mjs";
2
+ import { RunRecord } from "../../types/run.mjs";
3
3
  //#region src/engine/summary/step-attempts.d.ts
4
- interface WorkflowStepAttemptSummaryReducer {
5
- addAttempt(attempt: WorkflowStepAttemptRecord): void;
6
- finish(): WorkflowStepAttemptSummary;
7
- }
8
- /** Creates a reducer for materialized step attempts and active child workflow records. */
9
- declare function createWorkflowStepAttemptSummaryReducer(childRuns?: readonly WorkflowRunRecord[]): WorkflowStepAttemptSummaryReducer;
10
- //#endregion
11
- export { WorkflowStepAttemptSummaryReducer, createWorkflowStepAttemptSummaryReducer };
4
+ /** Summarizes one run's step attempts, with the child runs its workflow steps started. */
5
+ export declare function summarizeStepAttempts(attempts: readonly StepAttemptRecord[], childRuns?: readonly RunRecord[]): StepAttemptSummary;
6
+ //#endregion
@@ -1,43 +1,164 @@
1
- import { makeWorkflowStepAttemptKey } from "../../history/attempt-key.mjs";
2
- import { createWorkflowStepAttemptActiveChildWorkflowSummaryReducer } from "./step-attempt-active-child-workflows.mjs";
3
- import { createWorkflowStepAttemptActiveMessageWaitSummaryReducer } from "./step-attempt-active-message-waits.mjs";
4
- import { createWorkflowStepAttemptActiveSleepSummaryReducer } from "./step-attempt-active-sleeps.mjs";
5
- import { createWorkflowStepAttemptBucketSummaryReducer } from "./step-attempt-buckets.mjs";
6
- import { createWorkflowStepAttemptFailureSummaryReducer } from "./step-attempt-failure.mjs";
7
- import { createWorkflowStepAttemptLifecycleSummaryReducer } from "./step-attempt-lifecycle.mjs";
1
+ import { earliestOptionalTimestamp, latestOptionalTimestamp } from "../../temporal.mjs";
2
+ import { stepAttemptKey } from "../../store-keys.mjs";
3
+ import { Earliest, WaitTally, sorted } from "./tally.mjs";
4
+ import { summarizeChildRuns } from "./runs.mjs";
8
5
  //#region src/engine/summary/step-attempts.ts
9
- /** Creates a reducer for materialized step attempts and active child workflow records. */
10
- function createWorkflowStepAttemptSummaryReducer(childRuns = []) {
11
- const buckets = createWorkflowStepAttemptBucketSummaryReducer();
12
- const lifecycle = createWorkflowStepAttemptLifecycleSummaryReducer();
13
- const failure = createWorkflowStepAttemptFailureSummaryReducer();
14
- const sleep = createWorkflowStepAttemptActiveSleepSummaryReducer();
15
- const childWorkflow = createWorkflowStepAttemptActiveChildWorkflowSummaryReducer();
16
- const messageWait = createWorkflowStepAttemptActiveMessageWaitSummaryReducer();
17
- let total = 0;
6
+ const STEP_ATTEMPT_STATUSES = [
7
+ "running",
8
+ "completed",
9
+ "failed",
10
+ "abandoned"
11
+ ];
12
+ const STEP_TYPES = [
13
+ "run",
14
+ "sleep",
15
+ "workflow",
16
+ "message-send",
17
+ "message-wait",
18
+ "stream",
19
+ "deterministic"
20
+ ];
21
+ /** Summarizes one run's step attempts, with the child runs its workflow steps started. */
22
+ function summarizeStepAttempts(attempts, childRuns = []) {
23
+ const byStatus = new Buckets(STEP_ATTEMPT_STATUSES);
24
+ const byKind = new Buckets(STEP_TYPES);
25
+ const failure = new StepFailureTally();
26
+ const sleeps = {
27
+ stepIds: /* @__PURE__ */ new Set(),
28
+ attemptKeys: /* @__PURE__ */ new Set()
29
+ };
30
+ const nextSleep = new Earliest();
31
+ const messageWaits = new WaitTally();
32
+ const messages = /* @__PURE__ */ new Set();
33
+ const childWaits = new WaitTally();
34
+ const childRunIds = /* @__PURE__ */ new Set();
35
+ const workflows = /* @__PURE__ */ new Set();
36
+ let oldestRunningAt;
37
+ let latestFinishedAt;
38
+ for (const attempt of attempts) {
39
+ const attemptKey = stepAttemptKey(attempt.stepId, attempt.attempt);
40
+ byStatus.add(attempt.status, attempt.stepId, attemptKey);
41
+ byKind.add(attempt.kind, attempt.stepId, attemptKey);
42
+ failure.add(attempt, attemptKey);
43
+ latestFinishedAt = latestOptionalTimestamp(latestFinishedAt, attempt.finishedAt);
44
+ if (attempt.status !== "running") continue;
45
+ oldestRunningAt = earliestOptionalTimestamp(oldestRunningAt, attempt.startedAt);
46
+ const next = {
47
+ stepId: attempt.stepId,
48
+ attemptKey
49
+ };
50
+ if (attempt.kind === "sleep") {
51
+ sleeps.stepIds.add(attempt.stepId);
52
+ sleeps.attemptKeys.add(attemptKey);
53
+ nextSleep.offer(attempt.until, {
54
+ ...next,
55
+ duration: attempt.duration instanceof Temporal.Duration ? attempt.duration : void 0
56
+ });
57
+ } else if (attempt.kind === "message-wait") {
58
+ messageWaits.add(attempt.stepId, attemptKey, attempt.startedAt);
59
+ messageWaits.next.offer(attempt.timeoutAt, next);
60
+ if (attempt.messageId !== void 0) messages.add(attempt.messageId);
61
+ } else if (attempt.kind === "workflow") {
62
+ childWaits.add(attempt.stepId, attemptKey, attempt.startedAt);
63
+ childWaits.next.offer(attempt.timeoutAt, next);
64
+ if (attempt.childRunId !== void 0) childRunIds.add(attempt.childRunId);
65
+ if (attempt.workflowName !== void 0) workflows.add(attempt.workflowVersion === void 0 ? attempt.workflowName : `${attempt.workflowName}@${attempt.workflowVersion}`);
66
+ }
67
+ }
18
68
  return {
19
- addAttempt(attempt) {
20
- total++;
21
- const attemptKey = makeWorkflowStepAttemptKey(attempt.stepId, attempt.attempt);
22
- buckets.addAttempt(attempt, attemptKey);
23
- lifecycle.addAttempt(attempt);
24
- failure.addAttempt(attempt, attemptKey);
25
- sleep.addAttempt(attempt, attemptKey);
26
- childWorkflow.addAttempt(attempt, attemptKey);
27
- messageWait.addAttempt(attempt, attemptKey);
69
+ total: attempts.length,
70
+ statusStepIds: byStatus.stepIds(),
71
+ statusAttemptKeys: byStatus.attemptKeys(),
72
+ kindStepIds: byKind.stepIds(),
73
+ kindAttemptKeys: byKind.attemptKeys(),
74
+ failure: failure.finish(),
75
+ oldestRunningAt,
76
+ latestFinishedAt,
77
+ sleep: sleeps.stepIds.size === 0 ? void 0 : {
78
+ stepIds: sorted(sleeps.stepIds),
79
+ attemptKeys: sorted(sleeps.attemptKeys),
80
+ next: nextSleep.next
28
81
  },
29
- finish() {
30
- return {
31
- total,
32
- ...buckets.finish(),
33
- ...lifecycle.finish(),
34
- ...failure.finish(),
35
- ...sleep.finish(),
36
- ...childWorkflow.finish(childRuns),
37
- ...messageWait.finish()
38
- };
82
+ childWorkflow: childWaits.total === 0 ? void 0 : {
83
+ stepIds: sorted(childWaits.stepIds),
84
+ attemptKeys: sorted(childWaits.attemptKeys),
85
+ childRunIds: sorted(childRunIds),
86
+ workflows: sorted(workflows),
87
+ ...summarizeChildRuns(childRuns.filter((run) => childRunIds.has(run.id))),
88
+ oldestStartedAt: childWaits.oldestStartedAt,
89
+ next: childWaits.next.next
90
+ },
91
+ message: messageWaits.total === 0 ? void 0 : {
92
+ stepIds: sorted(messageWaits.stepIds),
93
+ attemptKeys: sorted(messageWaits.attemptKeys),
94
+ messages: sorted(messages),
95
+ oldestStartedAt: messageWaits.oldestStartedAt,
96
+ next: messageWaits.next.next
39
97
  }
40
98
  };
41
99
  }
100
+ /** Step IDs and attempt keys grouped by status or by kind. */
101
+ var Buckets = class {
102
+ #keys;
103
+ #stepIds = /* @__PURE__ */ new Map();
104
+ #attemptKeys = /* @__PURE__ */ new Map();
105
+ constructor(keys) {
106
+ this.#keys = keys;
107
+ }
108
+ add(key, stepId, attemptKey) {
109
+ push(this.#stepIds, key, stepId);
110
+ push(this.#attemptKeys, key, attemptKey);
111
+ }
112
+ stepIds() {
113
+ return this.#sorted(this.#stepIds);
114
+ }
115
+ attemptKeys() {
116
+ return this.#sorted(this.#attemptKeys);
117
+ }
118
+ #sorted(lists) {
119
+ return Object.fromEntries(this.#keys.map((key) => [key, sorted(lists.get(key) ?? [])]));
120
+ }
121
+ };
122
+ function push(lists, key, value) {
123
+ const list = lists.get(key);
124
+ if (list === void 0) lists.set(key, [value]);
125
+ else list.push(value);
126
+ }
127
+ /** Failed step attempts grouped by error name. */
128
+ var StepFailureTally = class {
129
+ #latestFailedAt;
130
+ #failedStepIds = /* @__PURE__ */ new Set();
131
+ #failedAttemptKeys = /* @__PURE__ */ new Set();
132
+ #errors = /* @__PURE__ */ new Map();
133
+ add(attempt, attemptKey) {
134
+ if (attempt.status !== "failed") return;
135
+ this.#failedStepIds.add(attempt.stepId);
136
+ this.#failedAttemptKeys.add(attemptKey);
137
+ this.#latestFailedAt = latestOptionalTimestamp(this.#latestFailedAt, attempt.finishedAt);
138
+ const name = attempt.error?.name ?? "Error";
139
+ const error = this.#errors.get(name) ?? {
140
+ failedStepIds: /* @__PURE__ */ new Set(),
141
+ failedAttemptKeys: /* @__PURE__ */ new Set()
142
+ };
143
+ error.failedStepIds.add(attempt.stepId);
144
+ error.failedAttemptKeys.add(attemptKey);
145
+ error.latestFailedAt = latestOptionalTimestamp(error.latestFailedAt, attempt.finishedAt);
146
+ this.#errors.set(name, error);
147
+ }
148
+ finish() {
149
+ if (this.#failedAttemptKeys.size === 0) return;
150
+ return {
151
+ stepIds: sorted(this.#failedStepIds),
152
+ attemptKeys: sorted(this.#failedAttemptKeys),
153
+ errors: [...this.#errors.entries()].sort(([left], [right]) => left.localeCompare(right)).map(([name, error]) => ({
154
+ name,
155
+ stepIds: sorted(error.failedStepIds),
156
+ attemptKeys: sorted(error.failedAttemptKeys),
157
+ latestFailedAt: error.latestFailedAt
158
+ })),
159
+ latestFailedAt: this.#latestFailedAt
160
+ };
161
+ }
162
+ };
42
163
  //#endregion
43
- export { createWorkflowStepAttemptSummaryReducer };
164
+ export { summarizeStepAttempts };
@@ -0,0 +1,44 @@
1
+ import { RunFailureSummary, RunRetrySummary } from "../../types/summary.mjs";
2
+ import { RunRecord } from "../../types/run.mjs";
3
+ //#region src/engine/summary/tally.d.ts
4
+ export declare const RUN_STATUSES: readonly ["pending", "running", "waiting", "completed", "failed", "canceled"];
5
+ export declare const TERMINAL_RUN_STATUSES: readonly ["completed", "failed", "canceled"];
6
+ export declare const RUN_TRANSITION_REASONS: readonly ["created", "claimed", "reclaimed", "started", "waiting", "rescheduled", "lease_released", "manual_retry", "permanent_failure", "retry", "missing_implementation", "completed", "failed", "deadline", "canceled"];
7
+ /** Keeps the entry with the earliest instant. Ties keep the first entry. */
8
+ export declare class Earliest<T extends object> {
9
+ #private;
10
+ get at(): Temporal.Instant | undefined;
11
+ get next(): (T & {
12
+ readonly at: Temporal.Instant;
13
+ }) | undefined;
14
+ offer(at: Temporal.Instant | undefined, value: T): void;
15
+ }
16
+ export declare function sorted(values: Iterable<string>): readonly string[];
17
+ /** Sorted values, or `undefined` when there are none. */
18
+ export declare function sortedOrUndefined(values: ReadonlySet<string>): readonly string[] | undefined;
19
+ export declare function counts<const TKey extends string>(keys: readonly TKey[]): Record<TKey, number>;
20
+ /** Runs scheduled for a retry: why, which steps, and which retry comes next. */
21
+ export declare class RetryTally {
22
+ #private;
23
+ get total(): number;
24
+ add(run: RunRecord): void;
25
+ runIds(): readonly string[] | undefined;
26
+ finish(): RunRetrySummary;
27
+ }
28
+ /** Failed runs grouped by error name. */
29
+ export declare class FailureTally {
30
+ #private;
31
+ get total(): number;
32
+ add(run: RunRecord): void;
33
+ finish(): RunFailureSummary;
34
+ }
35
+ /** Waits of one kind across runs: who waits, since when, and which wait ends first. */
36
+ export declare class WaitTally<TNext extends object> {
37
+ total: number;
38
+ oldestStartedAt: Temporal.Instant | undefined;
39
+ readonly next: Earliest<TNext>;
40
+ readonly stepIds: Set<string>;
41
+ readonly attemptKeys: Set<string>;
42
+ add(stepId: string, attemptKey: string | undefined, startedAt: Temporal.Instant | undefined): void;
43
+ }
44
+ //#endregion
@@ -0,0 +1,142 @@
1
+ import { earliestOptionalTimestamp, latestOptionalTimestamp } from "../../temporal.mjs";
2
+ import { greatestOptionalNumber } from "../../values.mjs";
3
+ import { isScheduledRunStatus } from "../../run-status.mjs";
4
+ //#region src/engine/summary/tally.ts
5
+ const RUN_STATUSES = [
6
+ "pending",
7
+ "running",
8
+ "waiting",
9
+ "completed",
10
+ "failed",
11
+ "canceled"
12
+ ];
13
+ const TERMINAL_RUN_STATUSES = [
14
+ "completed",
15
+ "failed",
16
+ "canceled"
17
+ ];
18
+ const RUN_TRANSITION_REASONS = [
19
+ "created",
20
+ "claimed",
21
+ "reclaimed",
22
+ "started",
23
+ "waiting",
24
+ "rescheduled",
25
+ "lease_released",
26
+ "manual_retry",
27
+ "permanent_failure",
28
+ "retry",
29
+ "missing_implementation",
30
+ "completed",
31
+ "failed",
32
+ "deadline",
33
+ "canceled"
34
+ ];
35
+ const RUN_RETRY_REASONS = [
36
+ "workflow",
37
+ "step",
38
+ "missing_implementation"
39
+ ];
40
+ /** Keeps the entry with the earliest instant. Ties keep the first entry. */
41
+ var Earliest = class {
42
+ #next;
43
+ get at() {
44
+ return this.#next?.at;
45
+ }
46
+ get next() {
47
+ return this.#next;
48
+ }
49
+ offer(at, value) {
50
+ if (at !== void 0 && (this.#next === void 0 || Temporal.Instant.compare(at, this.#next.at) < 0)) this.#next = {
51
+ ...value,
52
+ at
53
+ };
54
+ }
55
+ };
56
+ function sorted(values) {
57
+ return [...values].sort();
58
+ }
59
+ /** Sorted values, or `undefined` when there are none. */
60
+ function sortedOrUndefined(values) {
61
+ return values.size === 0 ? void 0 : sorted(values);
62
+ }
63
+ function counts(keys) {
64
+ return Object.fromEntries(keys.map((key) => [key, 0]));
65
+ }
66
+ /** Runs scheduled for a retry: why, which steps, and which retry comes next. */
67
+ var RetryTally = class {
68
+ #highestAttempt;
69
+ #next = new Earliest();
70
+ #reason = counts(RUN_RETRY_REASONS);
71
+ #runIds = /* @__PURE__ */ new Set();
72
+ #stepNames = /* @__PURE__ */ new Set();
73
+ get total() {
74
+ return this.#runIds.size;
75
+ }
76
+ add(run) {
77
+ if (!isScheduledRunStatus(run.status) || run.retryReason === void 0) return;
78
+ this.#runIds.add(run.id);
79
+ this.#reason[run.retryReason]++;
80
+ if (run.retryStepName !== void 0) this.#stepNames.add(run.retryStepName);
81
+ this.#highestAttempt = greatestOptionalNumber(this.#highestAttempt, run.retryAttempt);
82
+ this.#next.offer(run.retryAt, { runId: run.id });
83
+ }
84
+ runIds() {
85
+ return sortedOrUndefined(this.#runIds);
86
+ }
87
+ finish() {
88
+ return {
89
+ count: this.#runIds.size,
90
+ stepNames: sorted(this.#stepNames),
91
+ reason: this.#reason,
92
+ highestAttempt: this.#highestAttempt,
93
+ next: this.#next.next
94
+ };
95
+ }
96
+ };
97
+ /** Failed runs grouped by error name. */
98
+ var FailureTally = class {
99
+ #latestFailedAt;
100
+ #failedRunIds = /* @__PURE__ */ new Set();
101
+ #errors = /* @__PURE__ */ new Map();
102
+ get total() {
103
+ return this.#failedRunIds.size;
104
+ }
105
+ add(run) {
106
+ if (run.status !== "failed") return;
107
+ this.#failedRunIds.add(run.id);
108
+ this.#latestFailedAt = latestOptionalTimestamp(this.#latestFailedAt, run.finishedAt);
109
+ const name = run.error?.name ?? "Error";
110
+ const error = this.#errors.get(name) ?? { failedRunIds: /* @__PURE__ */ new Set() };
111
+ error.failedRunIds.add(run.id);
112
+ error.latestFailedAt = latestOptionalTimestamp(error.latestFailedAt, run.finishedAt);
113
+ this.#errors.set(name, error);
114
+ }
115
+ finish() {
116
+ return {
117
+ count: this.#failedRunIds.size,
118
+ errors: [...this.#errors.entries()].sort(([left], [right]) => left.localeCompare(right)).map(([name, error]) => ({
119
+ name,
120
+ count: error.failedRunIds.size,
121
+ latestFailedAt: error.latestFailedAt
122
+ })),
123
+ latestFailedAt: this.#latestFailedAt
124
+ };
125
+ }
126
+ };
127
+ /** Waits of one kind across runs: who waits, since when, and which wait ends first. */
128
+ var WaitTally = class {
129
+ total = 0;
130
+ oldestStartedAt;
131
+ next = new Earliest();
132
+ stepIds = /* @__PURE__ */ new Set();
133
+ attemptKeys = /* @__PURE__ */ new Set();
134
+ add(stepId, attemptKey, startedAt) {
135
+ this.total++;
136
+ this.stepIds.add(stepId);
137
+ if (attemptKey !== void 0) this.attemptKeys.add(attemptKey);
138
+ this.oldestStartedAt = earliestOptionalTimestamp(this.oldestStartedAt, startedAt);
139
+ }
140
+ };
141
+ //#endregion
142
+ export { Earliest, FailureTally, RUN_STATUSES, RUN_TRANSITION_REASONS, RetryTally, TERMINAL_RUN_STATUSES, WaitTally, counts, sorted, sortedOrUndefined };
@@ -1,6 +1,5 @@
1
- import { WorkflowStepTaskApi } from "../types/step.mjs";
2
- import { WorkflowExecutionEnvironment } from "../types/engine.mjs";
1
+ import { StepTaskApi } from "../types/step.mjs";
2
+ import { ExecutionEnvironment } from "../types/engine.mjs";
3
3
  //#region src/engine/task.d.ts
4
- declare function createWorkflowStepTaskApi(environment: WorkflowExecutionEnvironment, executionSignal: AbortSignal): WorkflowStepTaskApi;
5
- //#endregion
6
- export { createWorkflowStepTaskApi };
4
+ export declare function createStepTaskApi(environment: ExecutionEnvironment, executionSignal: AbortSignal): StepTaskApi;
5
+ //#endregion
@@ -1,22 +1,22 @@
1
1
  import { WorkflowDurationError, WorkflowNonRetryableError } from "../errors/failures.mjs";
2
- import { isAbortError, safeDuration } from "../utility.mjs";
3
2
  import { WorkflowStepExecutionError, WorkflowStepRetryLimitError, WorkflowStepTimeoutError } from "../errors/step.mjs";
4
3
  import "../errors/mod.mjs";
5
- import { WORKFLOW_ATTRIBUTES, withStepTelemetry } from "../telemetry.mjs";
4
+ import { isAbortError, safeDuration } from "../values.mjs";
6
5
  import { serializeError, toOptionalPersistedValue } from "./serialization.mjs";
7
- import { nextRetryAt, resolveWorkflowRetryConfig, retryClassificationRetryAt } from "./retry.mjs";
8
- import { WorkflowSuspended } from "./state.mjs";
9
- import { resolveWorkflowCommandIdentityFromCandidates } from "./command-identity.mjs";
10
- import { appendDurableStepStartedEvent, appendDurableStepTerminalEvent } from "./durable-command.mjs";
11
- import { isRunStepTerminalForStartedAttempt, recordedStepCompletionTimestamp, requireRecordedDurableStepStarted, requireRunStepReplayTimeoutMatches, sleepUntil } from "./replay.mjs";
6
+ import { nextRetryAt, resolveRetryConfig, retryClassificationRetryAt } from "./retry.mjs";
7
+ import { Suspended } from "./signals.mjs";
8
+ import { resolveCommandIdentityFromCandidates } from "./command-identity.mjs";
9
+ import { appendDurableEvent, appendDurableStepStartedEvent } from "./durable-command.mjs";
10
+ import { WORKFLOW_ATTRIBUTES, withStepTelemetry } from "../telemetry.mjs";
11
+ import { isRunStepTerminalForStartedAttempt, recordedInstant, requireRecordedDurableStepStarted, requireRunStepReplayTimeoutMatches, sleepUntil } from "./replay.mjs";
12
12
  //#region src/engine/task.ts
13
- function createWorkflowStepTaskApi(environment, executionSignal) {
13
+ function createStepTaskApi(environment, executionSignal) {
14
14
  const { runId, history, now, limits, executionOwner, telemetry } = environment;
15
15
  const run = async (config, callback) => {
16
- const identity = resolveWorkflowCommandIdentityFromCandidates(history, "run", [config.commandId, config.name], "Workflow step name or commandId");
16
+ const identity = resolveCommandIdentityFromCandidates(history, "run", [config.commandId, config.name], "Workflow step name or commandId");
17
17
  const timeout = config.timeout === void 0 ? void 0 : (() => {
18
18
  const value = safeDuration(config.timeout.total({ unit: "millisecond" }), "Workflow step timeout");
19
- if (value <= 0) WorkflowDurationError.stepTimeoutPositive();
19
+ if (value <= 0) throw new WorkflowDurationError("Workflow step timeout must be greater than zero");
20
20
  return value;
21
21
  })();
22
22
  const started = history.startedStep(identity.id);
@@ -24,41 +24,41 @@ function createWorkflowStepTaskApi(environment, executionSignal) {
24
24
  if (completed !== void 0 && (started === void 0 || isRunStepTerminalForStartedAttempt(completed, started))) {
25
25
  requireRecordedDurableStepStarted(identity, history.hasStartedEventBeforeTerminalEvent(completed));
26
26
  requireRunStepReplayTimeoutMatches(identity, started, config);
27
- recordedStepCompletionTimestamp(identity, completed.timestamp);
27
+ recordedInstant("run", identity, "completion", completed.timestamp);
28
28
  return completed.result;
29
29
  }
30
30
  if (history.unstartedFailedStep(identity.id) !== void 0) requireRecordedDurableStepStarted(identity, false);
31
- const retry = resolveWorkflowRetryConfig(config.retry, {
31
+ const retry = resolveRetryConfig(config.retry, {
32
32
  maximumAttempts: 10,
33
33
  backoffCoefficient: 2
34
34
  }, "Workflow step retry");
35
35
  let attempt = history.nextStepAttempt(identity.id);
36
36
  while (retry.maximumAttempts === 0 || attempt <= retry.maximumAttempts) {
37
37
  const startedAt = now();
38
- const timestamp = startedAt;
39
38
  const timeoutAt = timeout === void 0 ? void 0 : startedAt.add(Temporal.Duration.from({ milliseconds: timeout }));
40
- await appendDurableStepStartedEvent(environment, {
39
+ const startedEvent = {
41
40
  kind: "step_started",
42
- timestamp,
41
+ timestamp: startedAt,
43
42
  stepId: identity.id,
44
43
  stepName: identity.name,
45
44
  count: identity.count,
46
45
  attempt,
47
- ...timeoutAt === void 0 ? {} : { timeoutAt }
48
- });
46
+ timeoutAt
47
+ };
48
+ await appendDurableStepStartedEvent(environment, startedEvent);
49
+ const telemetryContext = {
50
+ run: executionOwner,
51
+ step: {
52
+ id: identity.id,
53
+ name: identity.name,
54
+ count: identity.count,
55
+ kind: "run"
56
+ },
57
+ attempt,
58
+ retry,
59
+ timeoutAt
60
+ };
49
61
  try {
50
- const telemetryContext = {
51
- run: executionOwner,
52
- step: {
53
- id: identity.id,
54
- name: identity.name,
55
- count: identity.count,
56
- kind: "run"
57
- },
58
- attempt,
59
- retry,
60
- ...timeoutAt === void 0 ? {} : { timeoutAt }
61
- };
62
62
  const result = await withStepTelemetry(telemetry, telemetryContext, async () => {
63
63
  return await runStepCallbackWithTimeout(callback, createStepContext(identity, attempt, retry, executionSignal, environment.logger.child({
64
64
  [WORKFLOW_ATTRIBUTES.stepId]: identity.id,
@@ -79,34 +79,26 @@ function createWorkflowStepTaskApi(environment, executionSignal) {
79
79
  telemetry?.recordStepExecution?.(telemetryContext);
80
80
  } catch {}
81
81
  const persistedResult = toOptionalPersistedValue(result, "step result", limits);
82
- await appendDurableStepTerminalEvent(environment, {
82
+ const completedEvent = {
83
83
  kind: "step_completed",
84
84
  timestamp: now(),
85
85
  stepId: identity.id,
86
86
  stepName: identity.name,
87
87
  attempt,
88
- ...persistedResult === void 0 ? {} : { result: persistedResult }
89
- });
88
+ result: persistedResult
89
+ };
90
+ await appendDurableEvent(environment, completedEvent);
90
91
  return result;
91
92
  } catch (error) {
92
93
  if (executionSignal.aborted && isAbortError(error)) throw error;
93
94
  try {
94
95
  telemetry?.recordStepExecution?.({
95
- run: executionOwner,
96
- step: {
97
- id: identity.id,
98
- name: identity.name,
99
- count: identity.count,
100
- kind: "run"
101
- },
102
- attempt,
103
- retry,
104
- ...timeoutAt === void 0 ? {} : { timeoutAt },
96
+ ...telemetryContext,
105
97
  error
106
98
  });
107
99
  } catch {}
108
100
  const failedAt = now();
109
- await appendDurableStepTerminalEvent(environment, {
101
+ await appendDurableEvent(environment, {
110
102
  kind: "step_failed",
111
103
  timestamp: failedAt,
112
104
  stepId: identity.id,
@@ -121,7 +113,7 @@ function createWorkflowStepTaskApi(environment, executionSignal) {
121
113
  cause: error
122
114
  });
123
115
  const retryAt = retryClassificationRetryAt(failedAt, error, "Workflow step retry classification") ?? nextRetryAt(failedAt, retry, attempt, "Workflow step retry delay");
124
- if (retryAt !== void 0) WorkflowSuspended.forStepRetry(retryAt, identity, attempt + 1);
116
+ if (retryAt !== void 0) Suspended.forStepRetry(retryAt, identity, attempt + 1);
125
117
  attempt++;
126
118
  }
127
119
  }
@@ -129,7 +121,7 @@ function createWorkflowStepTaskApi(environment, executionSignal) {
129
121
  stepId: identity.id,
130
122
  stepName: identity.name,
131
123
  attempt,
132
- cause: WorkflowStepRetryLimitError.create({
124
+ cause: new WorkflowStepRetryLimitError({
133
125
  stepId: identity.id,
134
126
  stepName: identity.name,
135
127
  attempt
@@ -140,7 +132,7 @@ function createWorkflowStepTaskApi(environment, executionSignal) {
140
132
  run,
141
133
  async call(definition, ...args) {
142
134
  return await run(definition.config, async (context) => {
143
- return await definition.handler(...args, context);
135
+ return await definition.handler(context, ...args);
144
136
  });
145
137
  },
146
138
  async sleep(commandId, duration) {
@@ -183,7 +175,7 @@ async function runStepCallbackWithTimeout(callback, context, timeout) {
183
175
  let timeoutHandle;
184
176
  const timeoutPromise = new Promise((_resolve, reject) => {
185
177
  timeoutHandle = setTimeout(() => {
186
- const error = WorkflowStepTimeoutError.create({
178
+ const error = new WorkflowStepTimeoutError({
187
179
  runId: timeout.runId,
188
180
  stepId: timeout.stepId,
189
181
  stepName: timeout.stepName,
@@ -205,4 +197,4 @@ async function runStepCallbackWithTimeout(callback, context, timeout) {
205
197
  }
206
198
  }
207
199
  //#endregion
208
- export { createWorkflowStepTaskApi };
200
+ export { createStepTaskApi };