@temelj/workflow 0.0.0-alpha.3 → 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 +119 -280
  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,9 +1,9 @@
1
- import { WorkflowReplayDivergenceError } from "../errors/failures.mjs";
2
1
  import { workflowAttributePatchFromEvent } from "../attributes.mjs";
2
+ import { WorkflowReplayDivergenceError } from "../errors/failures.mjs";
3
3
  import "../errors/mod.mjs";
4
- import { WorkflowSuspended } from "./state.mjs";
5
- import { resolveWorkflowCommandIdentity } from "./command-identity.mjs";
6
- import { appendDurableStepStartedEvent, appendDurableStepTerminalEvent } from "./durable-command.mjs";
4
+ import { Suspended } from "./signals.mjs";
5
+ import { resolveCommandIdentity } from "./command-identity.mjs";
6
+ import { appendDurableEvent, appendDurableStepStartedEvent } from "./durable-command.mjs";
7
7
  import { deepEquals } from "@temelj/value";
8
8
  //#region src/engine/replay.ts
9
9
  function isRunStepTerminalForStartedAttempt(terminal, started) {
@@ -11,10 +11,7 @@ function isRunStepTerminalForStartedAttempt(terminal, started) {
11
11
  }
12
12
  function requireRecordedDurableStepStarted(identity, started) {
13
13
  if (started) return;
14
- WorkflowReplayDivergenceError.diverged(`recorded ${identity.kind} step ${identity.id} has a terminal event without a started event`, {
15
- expectedStepId: identity.id,
16
- actualStepId: identity.id
17
- });
14
+ WorkflowReplayDivergenceError.atStep(identity.id, `recorded ${identity.kind} step ${identity.id} has a terminal event without a started event`);
18
15
  }
19
16
  function requireRecordedDurableTerminalStarted(identity, hasStartedEventBeforeTerminal) {
20
17
  requireRecordedDurableStepStarted(identity, hasStartedEventBeforeTerminal);
@@ -23,10 +20,7 @@ function requireRunStepReplayTimeoutMatches(identity, started, config) {
23
20
  if (started === void 0 || started.timeoutAt === void 0 === (config.timeout === void 0)) return;
24
21
  const recordedTimeout = started.timeoutAt === void 0 ? "no timeout" : started.timeoutAt.toString();
25
22
  const replayTimeout = config.timeout === void 0 ? "no timeout" : "a timeout";
26
- WorkflowReplayDivergenceError.diverged(`recorded run step ${identity.id} had ${recordedTimeout}, but replay used ${replayTimeout}`, {
27
- expectedStepId: identity.id,
28
- actualStepId: identity.id
29
- });
23
+ WorkflowReplayDivergenceError.atStep(identity.id, `recorded run step ${identity.id} had ${recordedTimeout}, but replay used ${replayTimeout}`);
30
24
  }
31
25
  function requireMetadataReplayMatches(identity, recorded, metadata) {
32
26
  if (deepEquals(recorded.metadata, metadata)) return;
@@ -49,74 +43,56 @@ function requireMessageSendReplayMatches(identity, started, terminal, next) {
49
43
  const recordedIdempotencyKey = started?.idempotencyKey;
50
44
  if (recordedTargetRunId === next.targetRunId && recordedMessage === next.messageId && deepEquals(recordedPayload, next.payload) && recordedIdempotencyKey === next.idempotencyKey) return;
51
45
  const message = recordedTargetRunId === next.targetRunId && recordedMessage === next.messageId ? `recorded message-send step ${identity.id} targeted ${recordedTargetRunId} messageId ${recordedMessage} with different payload or idempotency key` : `recorded message-send step ${identity.id} targeted ${recordedTargetRunId} messageId ${recordedMessage}, but replay targeted ${next.targetRunId} messageId ${next.messageId}`;
52
- WorkflowReplayDivergenceError.diverged(message, {
53
- expectedStepId: identity.id,
54
- actualStepId: identity.id
55
- });
46
+ WorkflowReplayDivergenceError.atStep(identity.id, message);
56
47
  }
57
48
  async function sleepUntil(environment, name, initialUntil, options) {
58
49
  const { history, now } = environment;
59
- const identity = resolveWorkflowCommandIdentity(history, "sleep", name);
50
+ const identity = resolveCommandIdentity(history, "sleep", name);
60
51
  const started = history.startedSleep(identity.id);
61
52
  const completed = history.completedSleep(identity.id);
62
53
  if (completed !== void 0) {
63
54
  requireRecordedDurableStepStarted(identity, history.hasStartedEventBeforeTerminalEvent(completed));
64
55
  requireSleepReplayMatches(identity, started, initialUntil, options);
65
- if (!(completed.timestamp instanceof Temporal.Instant)) WorkflowReplayDivergenceError.diverged(`recorded sleep step ${identity.id} has invalid completion timestamp: ` + String(completed.timestamp), {
66
- expectedStepId: identity.id,
67
- actualStepId: identity.id
68
- });
56
+ recordedInstant("sleep", identity, "completion", completed.timestamp);
69
57
  return;
70
58
  }
71
- const until = started === void 0 ? initialUntil : recordedSleepUntil(identity, started.until);
59
+ const until = started === void 0 ? initialUntil : recordedInstant("sleep", identity, "wake", started.until);
72
60
  requireSleepReplayMatches(identity, started, initialUntil, options);
73
- if (started === void 0) await appendDurableStepStartedEvent(environment, {
74
- kind: "sleep_started",
75
- timestamp: now(),
76
- stepId: identity.id,
77
- stepName: identity.name,
78
- count: identity.count,
79
- until,
80
- ...options.duration === void 0 ? {} : { duration: options.duration }
81
- });
82
- if (Temporal.Instant.compare(until, now()) > 0) WorkflowSuspended.until(until);
83
- await appendDurableStepTerminalEvent(environment, {
61
+ if (started === void 0) {
62
+ const event = {
63
+ kind: "sleep_started",
64
+ timestamp: now(),
65
+ stepId: identity.id,
66
+ stepName: identity.name,
67
+ count: identity.count,
68
+ until,
69
+ duration: options.duration
70
+ };
71
+ await appendDurableStepStartedEvent(environment, event);
72
+ }
73
+ if (Temporal.Instant.compare(until, now()) > 0) Suspended.until(until);
74
+ await appendDurableEvent(environment, {
84
75
  kind: "sleep_completed",
85
76
  timestamp: now(),
86
77
  stepId: identity.id,
87
78
  stepName: identity.name
88
79
  });
89
80
  }
90
- function recordedStepCompletionTimestamp(identity, value) {
91
- if (value instanceof Temporal.Instant) return value;
92
- WorkflowReplayDivergenceError.diverged(`recorded run step ${identity.id} has invalid completion timestamp: ${String(value)}`, {
93
- expectedStepId: identity.id,
94
- actualStepId: identity.id
95
- });
96
- }
97
- function recordedSleepUntil(identity, value) {
98
- if (value instanceof Temporal.Instant) return value;
99
- WorkflowReplayDivergenceError.diverged(`recorded sleep step ${identity.id} has invalid wake timestamp: ${String(value)}`, {
100
- expectedStepId: identity.id,
101
- actualStepId: identity.id
102
- });
103
- }
104
81
  function requireSleepReplayMatches(identity, started, until, options) {
105
82
  if (started === void 0) return;
106
83
  if (started.duration !== void 0 || options.duration !== void 0) {
107
84
  if (started.duration === void 0 || options.duration === void 0) {
108
85
  if (started.duration === options.duration) return;
109
86
  } else if (started.duration.toString() === options.duration.toString()) return;
110
- WorkflowReplayDivergenceError.diverged(`recorded sleep step ${identity.id} waited for ${String(started.duration)}ms, but replay waited for ${String(options.duration)}ms`, {
111
- expectedStepId: identity.id,
112
- actualStepId: identity.id
113
- });
87
+ WorkflowReplayDivergenceError.atStep(identity.id, `recorded sleep step ${identity.id} waited for ${String(started.duration)}ms, but replay waited for ${String(options.duration)}ms`);
114
88
  }
115
89
  if (Temporal.Instant.compare(started.until, until) === 0) return;
116
- WorkflowReplayDivergenceError.diverged(`recorded sleep step ${identity.id} waited until ${started.until.toString()}, but replay waited until ${until.toString()}`, {
117
- expectedStepId: identity.id,
118
- actualStepId: identity.id
119
- });
90
+ WorkflowReplayDivergenceError.atStep(identity.id, `recorded sleep step ${identity.id} waited until ${started.until.toString()}, but replay waited until ${until.toString()}`);
91
+ }
92
+ /** A timestamp read from history; anything else in its place is a replay divergence. */
93
+ function recordedInstant(kind, identity, label, value) {
94
+ if (value instanceof Temporal.Instant) return value;
95
+ WorkflowReplayDivergenceError.atStep(identity.id, `recorded ${kind} step ${identity.id} has invalid ${label} timestamp: ${String(value)}`);
120
96
  }
121
97
  //#endregion
122
- export { isRunStepTerminalForStartedAttempt, recordedStepCompletionTimestamp, requireAttributesReplayMatches, requireMessageSendReplayMatches, requireMetadataReplayMatches, requireRecordedDurableStepStarted, requireRecordedDurableTerminalStarted, requireRunStepReplayTimeoutMatches, sleepUntil };
98
+ export { isRunStepTerminalForStartedAttempt, recordedInstant, requireAttributesReplayMatches, requireMessageSendReplayMatches, requireMetadataReplayMatches, requireRecordedDurableStepStarted, requireRecordedDurableTerminalStarted, requireRunStepReplayTimeoutMatches, sleepUntil };
@@ -0,0 +1,16 @@
1
+ import { RunId } from "../types/ids.mjs";
2
+ import { WorkflowImplementation } from "../types/definition.mjs";
3
+ import { ExecutionResult } from "../types/result.mjs";
4
+ import { RunRecord } from "../types/run.mjs";
5
+ import { ResumeOptions } from "../types/run-options.mjs";
6
+ import { EngineContext } from "./context.mjs";
7
+ import { ExecutionServiceOptions } from "./execution-service.mjs";
8
+ //#region src/engine/resume.d.ts
9
+ export interface ResumeRunServices {
10
+ readonly context: EngineContext;
11
+ readonly executionService: ExecutionServiceOptions;
12
+ readonly emitResultLifecycleEvent: <TOutput>(result: ExecutionResult<TOutput>, previous?: RunRecord) => Promise<ExecutionResult<TOutput>>;
13
+ }
14
+ /** Runs a stored run until it finishes or waits, unless it is done, past its deadline, or not due. */
15
+ export declare function resumeRun<TInput, TOutput, TRawInput = TInput>(services: ResumeRunServices, implementation: WorkflowImplementation<TInput, TOutput, TRawInput>, runId: RunId, resumeOptions?: ResumeOptions): Promise<ExecutionResult<TOutput>>;
16
+ //#endregion
@@ -0,0 +1,24 @@
1
+ import { getRequiredRun } from "../store/query.mjs";
2
+ import { failRunForDeadline, requireDefinitionMatchesRun } from "./state.mjs";
3
+ import { makeCanceledRunResult, makeCompletedRunResult } from "./run-utils.mjs";
4
+ import { executeRun } from "./execution-service.mjs";
5
+ //#region src/engine/resume.ts
6
+ /** Runs a stored run until it finishes or waits, unless it is done, past its deadline, or not due. */
7
+ async function resumeRun(services, implementation, runId, resumeOptions) {
8
+ const { context } = services;
9
+ const run = await getRequiredRun(context.store, runId);
10
+ requireDefinitionMatchesRun(implementation.definition, run);
11
+ if (run.status === "completed") return makeCompletedRunResult(implementation.definition, run);
12
+ if (run.status === "canceled") return makeCanceledRunResult(run);
13
+ const timestamp = context.now();
14
+ if (run.deadlineAt !== void 0 && Temporal.Instant.compare(run.deadlineAt, timestamp) <= 0) return await services.emitResultLifecycleEvent(await failRunForDeadline(context.store, implementation.definition, run, run.deadlineAt, timestamp), run);
15
+ const availableAt = run.availableAt;
16
+ if (availableAt !== void 0 && Temporal.Instant.compare(availableAt, timestamp) > 0) return {
17
+ kind: "waiting",
18
+ run,
19
+ availableAt
20
+ };
21
+ return await executeRun(services.executionService, implementation, run, resumeOptions);
22
+ }
23
+ //#endregion
24
+ export { resumeRun };
@@ -1,23 +1,19 @@
1
- import { RunId } from "../types/run-id.mjs";
2
- import { WorkflowMissingImplementationRetryConfig, WorkflowMissingImplementationRetryDefaults, WorkflowResolvedMissingImplementationRetryConfig, WorkflowResolvedRetryConfig, WorkflowResolvedRetryDefaults, WorkflowResolvedStepRetryConfig, WorkflowRetryConfig } from "../types/retry.mjs";
3
- import { WorkflowStepRunWorkflowOptions } from "../types/step.mjs";
4
- import "../types/run.mjs";
1
+ import { RunId } from "../types/ids.mjs";
2
+ import { MissingImplementationRetryConfig, MissingImplementationRetryDefaults, ResolvedMissingImplementationRetryConfig, ResolvedRetryConfig, ResolvedRetryDefaults, RetryConfig } from "../types/retry.mjs";
3
+ import { StepRunWorkflowOptions } from "../types/step.mjs";
5
4
  import { EventRecord } from "../types/events.mjs";
6
- import { WorkflowHistory } from "../history/mod.mjs";
5
+ import { ExecutionLimits } from "../types/engine-options.mjs";
6
+ import { History } from "../history/replay.mjs";
7
7
  //#region src/engine/retry.d.ts
8
- interface WorkflowEngineRetryLimits {
9
- readonly maximumEventHistoryEvents?: number;
10
- }
11
8
  /** Resolves retry options and merges them with defaults used by workflow or step execution. */
12
- declare function resolveWorkflowRetryConfig(config: WorkflowRetryConfig | undefined, defaults: WorkflowResolvedRetryDefaults, label: string): WorkflowResolvedRetryConfig;
9
+ export declare function resolveRetryConfig(config: RetryConfig | undefined, defaults: ResolvedRetryDefaults, label: string): ResolvedRetryConfig;
13
10
  /** Resolves missing-implementation retry options and merges them with worker defaults. */
14
- declare function resolveMissingImplementationRetryConfig(config: WorkflowMissingImplementationRetryConfig | undefined, defaults: WorkflowMissingImplementationRetryDefaults, label: string): WorkflowResolvedMissingImplementationRetryConfig;
15
- declare function resolveChildWorkflowRetryConfig(options: WorkflowStepRunWorkflowOptions | undefined): WorkflowResolvedStepRetryConfig;
16
- declare function shouldRetryWorkflowAttempt(retry: WorkflowResolvedRetryConfig, failedAttempt: number): boolean;
17
- declare function nextWorkflowRetryAttempt(failedAttempt: number): number;
18
- declare function enforceStepAttemptBudget(runId: RunId, history: WorkflowHistory, maximumStepAttemptsPerRun: number): void;
19
- declare function enforceWorkflowEventHistoryNextLimit(events: readonly EventRecord[], limits: WorkflowEngineRetryLimits): void;
20
- declare function nextRetryAt(failedAt: Temporal.Instant, retry: WorkflowResolvedRetryConfig, failedAttempt: number, label: string): Temporal.Instant | undefined;
21
- declare function retryClassificationRetryAt(failedAt: Temporal.Instant, error: unknown, label: string): Temporal.Instant | undefined;
22
- //#endregion
23
- export { enforceStepAttemptBudget, enforceWorkflowEventHistoryNextLimit, nextRetryAt, nextWorkflowRetryAttempt, resolveChildWorkflowRetryConfig, resolveMissingImplementationRetryConfig, resolveWorkflowRetryConfig, retryClassificationRetryAt, shouldRetryWorkflowAttempt };
11
+ export declare function resolveMissingImplementationRetryConfig(config: MissingImplementationRetryConfig | undefined, defaults: MissingImplementationRetryDefaults, label: string): ResolvedMissingImplementationRetryConfig;
12
+ export declare function resolveChildWorkflowRetryConfig(options: StepRunWorkflowOptions | undefined): ResolvedRetryConfig;
13
+ export declare function shouldRetryAttempt(retry: ResolvedRetryConfig, failedAttempt: number): boolean;
14
+ export declare function nextRetryAttempt(failedAttempt: number): number;
15
+ export declare function enforceStepAttemptBudget(runId: RunId, history: History, maximumStepAttemptsPerRun: number): void;
16
+ export declare function enforceEventHistoryNextLimit(events: readonly EventRecord[], limits: ExecutionLimits): void;
17
+ export declare function nextRetryAt(failedAt: Temporal.Instant, retry: ResolvedRetryConfig, failedAttempt: number, label: string): Temporal.Instant | undefined;
18
+ export declare function retryClassificationRetryAt(failedAt: Temporal.Instant, cause: unknown, label: string): Temporal.Instant | undefined;
19
+ //#endregion
@@ -1,22 +1,22 @@
1
1
  import { WorkflowOptionsError } from "../errors/base.mjs";
2
2
  import { WorkflowDurationError, WorkflowRetryableError, WorkflowSerializationError } from "../errors/failures.mjs";
3
- import { durationAmount, isPositiveSafeInteger, nextPositiveSafeInteger, resolveSafeRetryDelay } from "../utility.mjs";
4
3
  import { WorkflowStepAttemptLimitError } from "../errors/step.mjs";
5
4
  import "../errors/mod.mjs";
5
+ import { durationAmount, isPositiveSafeInteger, nextPositiveSafeInteger, resolveSafeRetryDelay } from "../values.mjs";
6
6
  //#region src/engine/retry.ts
7
7
  const DEFAULT_STEP_RETRY_CONFIG = {
8
8
  maximumAttempts: 10,
9
9
  backoffCoefficient: 2
10
10
  };
11
11
  /** Resolves retry options and merges them with defaults used by workflow or step execution. */
12
- function resolveWorkflowRetryConfig(config, defaults, label) {
12
+ function resolveRetryConfig(config, defaults, label) {
13
13
  const input = config ?? {};
14
14
  if (input.initialInterval !== void 0 && input.maximumInterval !== void 0 && Temporal.Duration.compare(input.maximumInterval, input.initialInterval) < 0) WorkflowOptionsError.retryMaximumIntervalTooSmall(label);
15
15
  return {
16
16
  maximumAttempts: input.maximumAttempts ?? defaults.maximumAttempts,
17
- ...input.initialInterval === void 0 ? {} : { initialInterval: input.initialInterval },
17
+ initialInterval: input.initialInterval,
18
18
  backoffCoefficient: input.backoffCoefficient ?? defaults.backoffCoefficient,
19
- ...input.maximumInterval === void 0 ? {} : { maximumInterval: input.maximumInterval }
19
+ maximumInterval: input.maximumInterval
20
20
  };
21
21
  }
22
22
  /** Resolves missing-implementation retry options and merges them with worker defaults. */
@@ -29,7 +29,7 @@ function resolveMissingImplementationRetryConfig(config, defaults, label) {
29
29
  initialInterval,
30
30
  backoffCoefficient: input.backoffCoefficient ?? defaults.backoffCoefficient,
31
31
  maximumAttempts: input.maximumAttempts ?? defaults.maximumAttempts,
32
- ...maximumInterval === void 0 ? {} : { maximumInterval }
32
+ maximumInterval
33
33
  };
34
34
  }
35
35
  function resolveChildWorkflowRetryConfig(options) {
@@ -37,12 +37,12 @@ function resolveChildWorkflowRetryConfig(options) {
37
37
  maximumAttempts: 1,
38
38
  backoffCoefficient: DEFAULT_STEP_RETRY_CONFIG.backoffCoefficient
39
39
  };
40
- return resolveWorkflowRetryConfig(options.retry, DEFAULT_STEP_RETRY_CONFIG, "Workflow step retry");
40
+ return resolveRetryConfig(options.retry, DEFAULT_STEP_RETRY_CONFIG, "Workflow step retry");
41
41
  }
42
- function shouldRetryWorkflowAttempt(retry, failedAttempt) {
42
+ function shouldRetryAttempt(retry, failedAttempt) {
43
43
  return retry.maximumAttempts === 0 || failedAttempt < retry.maximumAttempts;
44
44
  }
45
- function nextWorkflowRetryAttempt(failedAttempt) {
45
+ function nextRetryAttempt(failedAttempt) {
46
46
  const nextAttempt = nextPositiveSafeInteger(failedAttempt);
47
47
  if (nextAttempt === void 0) WorkflowOptionsError.positiveSafeInteger("Workflow retry next attempt");
48
48
  return nextAttempt;
@@ -50,7 +50,7 @@ function nextWorkflowRetryAttempt(failedAttempt) {
50
50
  function enforceStepAttemptBudget(runId, history, maximumStepAttemptsPerRun) {
51
51
  if (history.totalStartedStepCount() >= maximumStepAttemptsPerRun) WorkflowStepAttemptLimitError.exceeded(runId, maximumStepAttemptsPerRun);
52
52
  }
53
- function enforceWorkflowEventHistoryNextLimit(events, limits) {
53
+ function enforceEventHistoryNextLimit(events, limits) {
54
54
  if (limits.maximumEventHistoryEvents !== void 0 && events.length >= limits.maximumEventHistoryEvents) WorkflowSerializationError.notSerializable("workflow event history", `event count would exceed maximumEventHistoryEvents ${limits.maximumEventHistoryEvents}`);
55
55
  }
56
56
  function nextRetryAt(failedAt, retry, failedAttempt, label) {
@@ -60,16 +60,16 @@ function nextRetryAt(failedAt, retry, failedAttempt, label) {
60
60
  const cappedDelay = retry.maximumInterval === void 0 ? exponentialDelay : Math.min(exponentialDelay, durationAmount(retry.maximumInterval, label));
61
61
  return failedAt.add(Temporal.Duration.from({ milliseconds: resolveSafeRetryDelay(cappedDelay, label) }));
62
62
  }
63
- function retryClassificationRetryAt(failedAt, error, label) {
64
- if (!(error instanceof WorkflowRetryableError)) return;
65
- if (error.retryAt !== void 0) {
66
- if (!(error.retryAt instanceof Temporal.Instant)) WorkflowDurationError.retryAtInstant(label);
67
- return error.retryAt;
63
+ function retryClassificationRetryAt(failedAt, cause, label) {
64
+ if (!(cause instanceof WorkflowRetryableError)) return;
65
+ if (cause.retryAt !== void 0) {
66
+ if (!(cause.retryAt instanceof Temporal.Instant)) throw new WorkflowDurationError(`${label} retryAt must be a Temporal.Instant`);
67
+ return cause.retryAt;
68
68
  }
69
- if (error.retryDelay !== void 0) {
70
- const retryDelay = durationAmount(error.retryDelay, label);
69
+ if (cause.retryDelay !== void 0) {
70
+ const retryDelay = durationAmount(cause.retryDelay, label);
71
71
  return failedAt.add(Temporal.Duration.from({ milliseconds: resolveSafeRetryDelay(retryDelay, label) }));
72
72
  }
73
73
  }
74
74
  //#endregion
75
- export { enforceStepAttemptBudget, enforceWorkflowEventHistoryNextLimit, nextRetryAt, nextWorkflowRetryAttempt, resolveChildWorkflowRetryConfig, resolveMissingImplementationRetryConfig, resolveWorkflowRetryConfig, retryClassificationRetryAt, shouldRetryWorkflowAttempt };
75
+ export { enforceEventHistoryNextLimit, enforceStepAttemptBudget, nextRetryAt, nextRetryAttempt, resolveChildWorkflowRetryConfig, resolveMissingImplementationRetryConfig, resolveRetryConfig, retryClassificationRetryAt, shouldRetryAttempt };
@@ -1,9 +1,5 @@
1
- import { WorkflowStepRunDataApi } from "../types/step.mjs";
2
- import { WorkflowAttributePatch } from "../types/run.mjs";
3
- import { WorkflowExecutionEnvironment } from "../types/engine.mjs";
1
+ import { StepRunDataApi } from "../types/step.mjs";
2
+ import { ExecutionEnvironment } from "../types/engine.mjs";
4
3
  //#region src/engine/run-data.d.ts
5
- declare function createWorkflowRunDataApi(environment: WorkflowExecutionEnvironment): WorkflowStepRunDataApi;
6
- declare function setWorkflowRunMetadata(environment: WorkflowExecutionEnvironment, commandId: string, metadata: unknown): Promise<void>;
7
- declare function setWorkflowRunAttributes(environment: WorkflowExecutionEnvironment, commandId: string, attributes: WorkflowAttributePatch): Promise<void>;
8
- //#endregion
9
- export { createWorkflowRunDataApi, setWorkflowRunAttributes, setWorkflowRunMetadata };
4
+ export declare function createRunDataApi(environment: ExecutionEnvironment): StepRunDataApi;
5
+ //#endregion
@@ -1,22 +1,24 @@
1
- import { normalizeWorkflowAttributePatch, workflowAttributeEventPatch, workflowAttributePatchFromEvent } from "../attributes.mjs";
1
+ import { normalizeAttributePatch, workflowAttributeEventPatch, workflowAttributePatchFromEvent } from "../attributes.mjs";
2
2
  import { toPersistedValue } from "./serialization.mjs";
3
- import { WorkflowStaleExecutionError, appendEventIfCurrentExecution, patchCurrentExecutionRun, patchCurrentExecutionRunAttributes } from "./state.mjs";
4
- import { resolveWorkflowCommandIdentity } from "./command-identity.mjs";
3
+ import { StaleExecutionError } from "./signals.mjs";
4
+ import { patchCurrentExecutionRun, patchCurrentExecutionRunAttributes } from "./state.mjs";
5
+ import { resolveCommandIdentity } from "./command-identity.mjs";
6
+ import { appendDurableEvent } from "./durable-command.mjs";
5
7
  import { requireAttributesReplayMatches, requireMetadataReplayMatches } from "./replay.mjs";
6
8
  //#region src/engine/run-data.ts
7
- function createWorkflowRunDataApi(environment) {
9
+ function createRunDataApi(environment) {
8
10
  return {
9
11
  async setMetadata(commandId, metadata) {
10
- await setWorkflowRunMetadata(environment, commandId, metadata);
12
+ await setRunMetadata(environment, commandId, metadata);
11
13
  },
12
14
  async setAttributes(commandId, attributes) {
13
- await setWorkflowRunAttributes(environment, commandId, attributes);
15
+ await recordRunAttributes(environment, commandId, attributes);
14
16
  }
15
17
  };
16
18
  }
17
- async function setWorkflowRunMetadata(environment, commandId, metadata) {
18
- const { store, runId, history, now, limits, executionOwner } = environment;
19
- const identity = resolveWorkflowCommandIdentity(history, "metadata", commandId);
19
+ async function setRunMetadata(environment, commandId, metadata) {
20
+ const { store, history, now, limits, executionOwner } = environment;
21
+ const identity = resolveCommandIdentity(history, "metadata", commandId);
20
22
  const persistedMetadata = toPersistedValue(metadata, "workflow run metadata", limits);
21
23
  const recorded = history.metadataSet(identity.id);
22
24
  if (recorded !== void 0) {
@@ -25,51 +27,51 @@ async function setWorkflowRunMetadata(environment, commandId, metadata) {
25
27
  metadata: recorded.metadata,
26
28
  updatedAt: recorded.timestamp
27
29
  });
28
- if (updated === void 0) WorkflowStaleExecutionError.stale(executionOwner.id);
30
+ if (updated === void 0) StaleExecutionError.stale(executionOwner.id);
29
31
  Object.assign(executionOwner, updated);
30
32
  return;
31
33
  }
32
34
  const timestamp = now();
33
- await appendEventIfCurrentExecution(store, history, {
35
+ await appendDurableEvent(environment, {
34
36
  kind: "metadata_set",
35
37
  timestamp,
36
38
  stepId: identity.id,
37
39
  stepName: identity.name,
38
40
  count: identity.count,
39
41
  metadata: persistedMetadata
40
- }, executionOwner, limits, void 0, (event, events) => environment.observeDurableEventAppended?.(runId, event, events));
42
+ });
41
43
  const updated = await patchCurrentExecutionRun(store, executionOwner, {
42
44
  metadata: persistedMetadata,
43
45
  updatedAt: timestamp
44
46
  });
45
- if (updated === void 0) WorkflowStaleExecutionError.stale(executionOwner.id);
47
+ if (updated === void 0) StaleExecutionError.stale(executionOwner.id);
46
48
  Object.assign(executionOwner, updated);
47
49
  }
48
- async function setWorkflowRunAttributes(environment, commandId, attributes) {
49
- const { store, runId, history, now, limits, executionOwner } = environment;
50
- const identity = resolveWorkflowCommandIdentity(history, "attributes", commandId);
51
- const normalized = normalizeWorkflowAttributePatch(attributes);
50
+ async function recordRunAttributes(environment, commandId, attributes) {
51
+ const { store, history, now, executionOwner } = environment;
52
+ const identity = resolveCommandIdentity(history, "attributes", commandId);
53
+ const normalized = normalizeAttributePatch(attributes);
52
54
  const recorded = history.attributesSet(identity.id);
53
55
  if (recorded !== void 0) {
54
56
  requireAttributesReplayMatches(identity, recorded, normalized);
55
57
  const recordedPatch = workflowAttributePatchFromEvent(recorded);
56
58
  const updated = await patchCurrentExecutionRunAttributes(store, executionOwner, recordedPatch, recorded.timestamp);
57
- if (updated === void 0) WorkflowStaleExecutionError.stale(executionOwner.id);
59
+ if (updated === void 0) StaleExecutionError.stale(executionOwner.id);
58
60
  Object.assign(executionOwner, updated);
59
61
  return;
60
62
  }
61
63
  const timestamp = now();
62
- await appendEventIfCurrentExecution(store, history, {
64
+ await appendDurableEvent(environment, {
63
65
  kind: "attributes_set",
64
66
  timestamp,
65
67
  stepId: identity.id,
66
68
  stepName: identity.name,
67
69
  count: identity.count,
68
70
  ...workflowAttributeEventPatch(normalized)
69
- }, executionOwner, limits, void 0, (event, events) => environment.observeDurableEventAppended?.(runId, event, events));
71
+ });
70
72
  const updated = await patchCurrentExecutionRunAttributes(store, executionOwner, normalized, timestamp);
71
- if (updated === void 0) WorkflowStaleExecutionError.stale(executionOwner.id);
73
+ if (updated === void 0) StaleExecutionError.stale(executionOwner.id);
72
74
  Object.assign(executionOwner, updated);
73
75
  }
74
76
  //#endregion
75
- export { createWorkflowRunDataApi, setWorkflowRunAttributes, setWorkflowRunMetadata };
77
+ export { createRunDataApi };
@@ -1,38 +1,29 @@
1
- import { RunId } from "../types/run-id.mjs";
1
+ import { RunId } from "../types/ids.mjs";
2
+ import { CleanupRunsOptions, CleanupRunsResult, RetentionPolicyOptions } from "../types/cleanup.mjs";
2
3
  import { WorkflowDefinition } from "../types/definition.mjs";
3
- import { WorkflowHandle } from "../types/result.mjs";
4
- import { WorkflowAttributePatch, WorkflowRunRecord, WorkflowRunWorkflowName, WorkflowRunWorkflowVersion } from "../types/run.mjs";
5
- import { WorkflowMarkRunPermanentlyFailedOptions, WorkflowReleaseStaleLeaseOptions, WorkflowRerunOptions, WorkflowRescheduleRunOptions, WorkflowRetryFailedRunOptions, WorkflowStartOptions } from "../types/run-options.mjs";
6
- import { WorkflowEventReader, WorkflowLockConditionalWriterRepository, WorkflowLockListerRepository, WorkflowRunReaderRepository, WorkflowRunWriterRepository, WorkflowStepAttemptLookup } from "../types/store.mjs";
4
+ import { AttributePatch, RunRecord } from "../types/run.mjs";
5
+ import { MarkRunPermanentlyFailedOptions, ReleaseStaleLeaseOptions, RerunOptions, RescheduleRunOptions, RetryFailedRunOptions, StartOptions } from "../types/run-options.mjs";
6
+ import { EngineContext } from "./context.mjs";
7
+ import { RunRef } from "./start.mjs";
8
+ import { WorkflowEngine } from "./create.mjs";
9
+ import { StorageValue } from "@temelj/storage";
7
10
  //#region src/engine/run-service.d.ts
8
- type WorkflowRunServiceStore = WorkflowRunReaderRepository & WorkflowRunWriterRepository & WorkflowEventReader & WorkflowStepAttemptLookup & WorkflowLockListerRepository & WorkflowLockConditionalWriterRepository;
9
- interface WorkflowRunServiceOptions {
10
- readonly store: WorkflowRunServiceStore;
11
- readonly now: () => Temporal.Instant;
12
- readonly limits: {
13
- readonly maximumPersistedValueBytes?: number;
14
- };
11
+ interface RunLifecycleEmitter {
12
+ readonly emitLifecycleEvent: (next: RunRecord, previous: RunRecord) => void | Promise<void>;
15
13
  }
16
- interface WorkflowRunLifecycleEmitter {
17
- readonly emitLifecycleEvent: (next: WorkflowRunRecord, previous: WorkflowRunRecord) => void | Promise<void>;
14
+ interface RunMetadataUpdateEmitter {
15
+ readonly emitRunMetadataUpdated: (next: RunRecord, previous: RunRecord) => void;
18
16
  }
19
- interface WorkflowRunMetadataUpdateEmitter {
20
- readonly emitRunMetadataUpdated: (next: WorkflowRunRecord, previous: WorkflowRunRecord) => void;
21
- }
22
- declare function rerunWorkflowRun(service: WorkflowRunServiceOptions, startWorkflow: <TOutput = unknown>(definition: WorkflowDefinition<unknown, TOutput, unknown>, input: unknown, options?: WorkflowStartOptions) => Promise<WorkflowHandle<TOutput>>, runId: RunId, rerunOptions: WorkflowRerunOptions | undefined): Promise<WorkflowHandle<unknown>>;
23
- declare function resolveRerunWorkflowDefinition(sourceRun: WorkflowRerunSourceRun, options: WorkflowRerunOptions | undefined): Promise<WorkflowDefinition<unknown, unknown, unknown>>;
24
- interface WorkflowRerunSourceRun {
25
- readonly workflowName: WorkflowRunWorkflowName;
26
- readonly workflowVersion?: WorkflowRunWorkflowVersion;
27
- }
28
- declare function rescheduleWorkflowRun(service: WorkflowRunServiceOptions, lifecycle: WorkflowRunLifecycleEmitter, runId: RunId, rescheduleOptions: WorkflowRescheduleRunOptions | undefined): Promise<WorkflowRunRecord>;
29
- declare function releaseStaleWorkflowRunLease(service: WorkflowRunServiceOptions, lifecycle: WorkflowRunLifecycleEmitter, runId: RunId, releaseOptions: WorkflowReleaseStaleLeaseOptions | undefined): Promise<WorkflowRunRecord>;
30
- declare function retryFailedWorkflowRun(service: WorkflowRunServiceOptions, lifecycle: WorkflowRunLifecycleEmitter, runId: RunId, retryOptions: WorkflowRetryFailedRunOptions | undefined): Promise<WorkflowRunRecord>;
31
- declare function markWorkflowRunPermanentlyFailed(service: WorkflowRunServiceOptions, lifecycle: WorkflowRunLifecycleEmitter, runId: RunId, permanentFailureOptions: WorkflowMarkRunPermanentlyFailedOptions): Promise<WorkflowRunRecord>;
32
- declare function updateWorkflowRunMetadata(service: WorkflowRunServiceOptions, lifecycle: WorkflowRunMetadataUpdateEmitter, runId: RunId, metadata: unknown): Promise<WorkflowRunRecord>;
33
- declare function setWorkflowRunAttributes(service: WorkflowRunServiceOptions, runId: RunId, attributes: WorkflowAttributePatch): Promise<WorkflowRunRecord>;
34
- declare function cancelWorkflowRun(service: WorkflowRunServiceOptions, lifecycle: WorkflowRunLifecycleEmitter, runId: RunId): Promise<WorkflowRunRecord>;
35
- declare function resolveWorkflowVersion(workflowName: string, fallbackVersion: string | undefined, resolver: ((workflowName: string, definition: WorkflowDefinition<unknown, unknown, unknown>) => string | undefined | Promise<string | undefined>) | undefined): Promise<string | undefined>;
36
- declare function resolveWorkflowStartSpec<TInput, TOutput, TRawInput>(definition: WorkflowDefinition<TInput, TOutput, TRawInput>, options: WorkflowStartOptions | undefined): Promise<WorkflowDefinition<TInput, TOutput, TRawInput>>;
17
+ export declare function rerunRun(context: EngineContext, startWorkflow: WorkflowEngine["startWorkflow"], runId: RunId, rerunOptions: RerunOptions | undefined): Promise<RunRef<unknown>>;
18
+ export declare function rescheduleWorkflowRun(context: EngineContext, lifecycle: RunLifecycleEmitter, runId: RunId, rescheduleOptions: RescheduleRunOptions | undefined): Promise<RunRecord>;
19
+ export declare function releaseStaleWorkflowRunLease(context: EngineContext, lifecycle: RunLifecycleEmitter, runId: RunId, releaseOptions: ReleaseStaleLeaseOptions | undefined): Promise<RunRecord>;
20
+ export declare function retryFailedWorkflowRun(context: EngineContext, lifecycle: RunLifecycleEmitter, runId: RunId, retryOptions: RetryFailedRunOptions | undefined): Promise<RunRecord>;
21
+ export declare function markWorkflowRunPermanentlyFailed(context: EngineContext, lifecycle: RunLifecycleEmitter, runId: RunId, permanentFailureOptions: MarkRunPermanentlyFailedOptions): Promise<RunRecord>;
22
+ export declare function updateWorkflowRunMetadata(context: EngineContext, lifecycle: RunMetadataUpdateEmitter, runId: RunId, metadata: StorageValue): Promise<RunRecord>;
23
+ export declare function setRunAttributes(context: EngineContext, runId: RunId, attributes: AttributePatch): Promise<RunRecord>;
24
+ export declare function cancelWorkflowRun(context: EngineContext, lifecycle: RunLifecycleEmitter, runId: RunId): Promise<RunRecord>;
25
+ export declare function resolveStartSpec<TInput, TOutput, TRawInput>(definition: WorkflowDefinition<TInput, TOutput, TRawInput>, options: StartOptions | undefined): Promise<WorkflowDefinition<TInput, TOutput, TRawInput>>;
26
+ export declare function cleanupRuns(context: EngineContext, options: CleanupRunsOptions): Promise<CleanupRunsResult>;
27
+ export declare function applyRetentionPolicy(context: EngineContext, options: RetentionPolicyOptions): Promise<CleanupRunsResult>;
37
28
  //#endregion
38
- export { cancelWorkflowRun, markWorkflowRunPermanentlyFailed, releaseStaleWorkflowRunLease, rerunWorkflowRun, rescheduleWorkflowRun, resolveRerunWorkflowDefinition, resolveWorkflowStartSpec, resolveWorkflowVersion, retryFailedWorkflowRun, setWorkflowRunAttributes, updateWorkflowRunMetadata };
29
+ export {};