@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,12 +1,5 @@
1
- import { WorkflowResolvedMissingImplementationRetryConfig } from "../types/retry.mjs";
2
- import { WorkflowRunRecord } from "../types/run.mjs";
3
1
  import { WorkflowErrorRecord } from "../types/error.mjs";
4
2
  import "temporal-polyfill/global";
5
3
  //#region src/worker/error.d.ts
6
- declare const DEFAULT_MISSING_IMPLEMENTATION_RETRY_INTERVAL: Temporal.Duration;
7
- declare function makeMissingImplementationNotFoundErrorRecord(run: WorkflowRunRecord): WorkflowErrorRecord;
8
- declare function makeMissingImplementationDeadlineErrorRecord(run: WorkflowRunRecord, deadlineAt: Temporal.Instant): WorkflowErrorRecord;
9
- declare function missingImplementationRetryDelay(retry: WorkflowResolvedMissingImplementationRetryConfig, retryAttempt: number): Temporal.Duration;
10
- declare function toWorkflowWorkerErrorRecord(error: unknown): WorkflowErrorRecord;
11
- //#endregion
12
- export { DEFAULT_MISSING_IMPLEMENTATION_RETRY_INTERVAL, makeMissingImplementationDeadlineErrorRecord, makeMissingImplementationNotFoundErrorRecord, missingImplementationRetryDelay, toWorkflowWorkerErrorRecord };
4
+ export declare function toWorkerErrorRecord(cause: unknown): WorkflowErrorRecord;
5
+ //#endregion
@@ -1,41 +1,29 @@
1
- import { WorkflowOptionsError } from "../errors/base.mjs";
2
- import { WorkflowRunDeadlineExceededError } from "../errors/run.mjs";
3
- import { durationTotal, isPositiveSafeInteger, safeDuration } from "../utility.mjs";
4
1
  import { WorkflowImplementationNotFoundError } from "../errors/implementation.mjs";
2
+ import { WorkflowRunDeadlineExceededError } from "../errors/run.mjs";
5
3
  import "temporal-polyfill/global";
6
4
  //#region src/worker/error.ts
7
- const DEFAULT_MISSING_IMPLEMENTATION_RETRY_INTERVAL = Temporal.Duration.from({ seconds: 30 });
8
- function makeMissingImplementationNotFoundErrorRecord(run) {
9
- return toWorkflowWorkerErrorRecord(WorkflowImplementationNotFoundError.create(run.workflowName, run.workflowVersion));
10
- }
11
- function makeMissingImplementationDeadlineErrorRecord(run, deadlineAt) {
12
- return toWorkflowWorkerErrorRecord(WorkflowRunDeadlineExceededError.create(run.id, deadlineAt));
13
- }
14
- function missingImplementationRetryDelay(retry, retryAttempt) {
15
- if (!isPositiveSafeInteger(retryAttempt)) WorkflowOptionsError.missingImplementationRetryAttemptPositiveSafeInteger();
16
- const exponentialDelay = durationTotal(retry.initialInterval) * retry.backoffCoefficient ** Math.max(0, retryAttempt - 1);
17
- const delay = retry.maximumInterval === void 0 ? exponentialDelay : Math.min(exponentialDelay, durationTotal(retry.maximumInterval));
18
- safeDuration(delay, "Workflow missing implementation retry delay");
19
- return Temporal.Duration.from({ milliseconds: delay });
20
- }
21
- function toWorkflowWorkerErrorRecord(error) {
22
- if (!(error instanceof Error)) return {
5
+ function toWorkerErrorRecord(cause) {
6
+ if (!(cause instanceof Error)) return {
23
7
  name: "WorkflowNonErrorThrow",
24
- message: String(error)
8
+ message: String(cause)
25
9
  };
26
10
  return {
27
- name: error.name,
28
- message: error.message,
29
- ...error.stack === void 0 ? {} : { stack: error.stack },
30
- ...error instanceof WorkflowRunDeadlineExceededError ? { details: {
31
- runId: error.runId,
32
- deadlineAt: error.deadlineAt.toString()
33
- } } : {},
34
- ...error instanceof WorkflowImplementationNotFoundError ? { details: {
35
- workflowName: error.workflowName,
36
- ...error.workflowVersion === void 0 ? {} : { workflowVersion: error.workflowVersion }
37
- } } : {}
11
+ name: cause.name,
12
+ message: cause.message,
13
+ stack: cause.stack,
14
+ details: errorRecordDetails(cause)
15
+ };
16
+ }
17
+ function errorRecordDetails(cause) {
18
+ if (cause instanceof WorkflowRunDeadlineExceededError) return {
19
+ runId: cause.runId,
20
+ deadlineAt: cause.deadlineAt.toString()
38
21
  };
22
+ if (cause instanceof WorkflowImplementationNotFoundError) {
23
+ const details = { workflowName: cause.workflowName };
24
+ if (cause.workflowVersion !== void 0) details.workflowVersion = cause.workflowVersion;
25
+ return details;
26
+ }
39
27
  }
40
28
  //#endregion
41
- export { DEFAULT_MISSING_IMPLEMENTATION_RETRY_INTERVAL, makeMissingImplementationDeadlineErrorRecord, makeMissingImplementationNotFoundErrorRecord, missingImplementationRetryDelay, toWorkflowWorkerErrorRecord };
29
+ export { toWorkerErrorRecord };
@@ -0,0 +1,19 @@
1
+ import { RunId } from "../types/ids.mjs";
2
+ import { ResolvedMissingImplementationRetryConfig } from "../types/retry.mjs";
3
+ import { ExecutionResult } from "../types/result.mjs";
4
+ import { RunRecord } from "../types/run.mjs";
5
+ import { WorkflowStore } from "../types/store.mjs";
6
+ import "temporal-polyfill/global";
7
+ //#region src/worker/missing-implementation.d.ts
8
+ interface MissingImplementationContext {
9
+ readonly store: WorkflowStore;
10
+ readonly now: () => Temporal.Instant;
11
+ readonly retry: ResolvedMissingImplementationRetryConfig;
12
+ readonly readResult: (runId: RunId) => Promise<ExecutionResult<unknown>>;
13
+ }
14
+ /** Retries a run whose implementation is not registered, or fails it once retries or its deadline run out. */
15
+ export declare function handleMissingImplementation(context: MissingImplementationContext, run: RunRecord): Promise<ExecutionResult<unknown>>;
16
+ export declare const DEFAULT_RETRY_INTERVAL: Temporal.Duration;
17
+ export declare function retryDelay(retry: ResolvedMissingImplementationRetryConfig, retryAttempt: number): Temporal.Duration;
18
+ //#endregion
19
+ export {};
@@ -0,0 +1,62 @@
1
+ import { durationTotal } from "../temporal.mjs";
2
+ import { WorkflowErrorCode } from "../errors/codes.mjs";
3
+ import { WorkflowOptionsError } from "../errors/base.mjs";
4
+ import { WorkflowImplementationNotFoundError } from "../errors/implementation.mjs";
5
+ import { WorkflowRunDeadlineExceededError } from "../errors/run.mjs";
6
+ import { isPositiveSafeInteger, safeDuration } from "../values.mjs";
7
+ import { patchRunIfCurrent, transitionRunToFailed, transitionRunToMissingImplementationWait, wakeParentRun } from "../engine/state.mjs";
8
+ import { nonNegativeTimerDelay } from "../timer.mjs";
9
+ import { toWorkerErrorRecord } from "./error.mjs";
10
+ import "temporal-polyfill/global";
11
+ //#region src/worker/missing-implementation.ts
12
+ /** Retries a run whose implementation is not registered, or fails it once retries or its deadline run out. */
13
+ async function handleMissingImplementation(context, run) {
14
+ const timestamp = context.now();
15
+ const retryAttempt = run.attempts ?? (run.retryAttempt ?? 0) + 1;
16
+ const errorRecord = toWorkerErrorRecord(new WorkflowImplementationNotFoundError(run.workflowName, run.workflowVersion));
17
+ const deadlineAt = run.deadlineAt;
18
+ if (deadlineAt !== void 0 && Temporal.Instant.compare(deadlineAt, timestamp) <= 0) return await fail(context, run, deadlineErrorRecord(run, deadlineAt), timestamp, "deadline", deadlineAt);
19
+ if (context.retry.maximumAttempts > 0 && retryAttempt >= context.retry.maximumAttempts) return await fail(context, run, errorRecord, timestamp, "failed");
20
+ let availableAt;
21
+ try {
22
+ availableAt = timestamp.add(Temporal.Duration.from({ milliseconds: nonNegativeTimerDelay(retryDelay(context.retry, retryAttempt), "Workflow missing implementation retry delay").clampedDelay }));
23
+ } catch (retryError) {
24
+ return await fail(context, run, toWorkerErrorRecord(retryError), timestamp, "failed");
25
+ }
26
+ if (deadlineAt !== void 0 && Temporal.Instant.compare(deadlineAt, availableAt) <= 0) return await fail(context, run, deadlineErrorRecord(run, deadlineAt), timestamp, "deadline", deadlineAt);
27
+ const waitingRun = await patchRunIfCurrent(context.store, run, transitionRunToMissingImplementationWait(run, errorRecord, timestamp, availableAt, retryAttempt));
28
+ if (waitingRun === void 0) return await context.readResult(run.id);
29
+ await wakeParentRun(context.store, waitingRun, availableAt);
30
+ return {
31
+ kind: "waiting",
32
+ run: waitingRun,
33
+ availableAt
34
+ };
35
+ }
36
+ async function fail(context, run, errorRecord, timestamp, reason, deadlineAt) {
37
+ const failedRun = await patchRunIfCurrent(context.store, run, transitionRunToFailed(run, errorRecord, timestamp, reason, deadlineAt));
38
+ if (failedRun === void 0) return await context.readResult(run.id);
39
+ if (await context.store.appendEventIfRunCurrent(failedRun, {
40
+ kind: "workflow_failed",
41
+ timestamp
42
+ }) === void 0) return await context.readResult(run.id);
43
+ await wakeParentRun(context.store, failedRun, timestamp);
44
+ return {
45
+ kind: "failed",
46
+ run: failedRun,
47
+ error: errorRecord
48
+ };
49
+ }
50
+ const DEFAULT_RETRY_INTERVAL = Temporal.Duration.from({ seconds: 30 });
51
+ function deadlineErrorRecord(run, deadlineAt) {
52
+ return toWorkerErrorRecord(new WorkflowRunDeadlineExceededError(run.id, deadlineAt));
53
+ }
54
+ function retryDelay(retry, retryAttempt) {
55
+ if (!isPositiveSafeInteger(retryAttempt)) throw new WorkflowOptionsError("Workflow missing implementation retry delay attempt must be a positive safe integer", { code: WorkflowErrorCode.OPTIONS_MISSING_IMPLEMENTATION_RETRY_ATTEMPT_INVALID });
56
+ const exponentialDelay = durationTotal(retry.initialInterval) * retry.backoffCoefficient ** Math.max(0, retryAttempt - 1);
57
+ const delay = retry.maximumInterval === void 0 ? exponentialDelay : Math.min(exponentialDelay, durationTotal(retry.maximumInterval));
58
+ safeDuration(delay, "Workflow missing implementation retry delay");
59
+ return Temporal.Duration.from({ milliseconds: delay });
60
+ }
61
+ //#endregion
62
+ export { DEFAULT_RETRY_INTERVAL, handleMissingImplementation, retryDelay };
@@ -0,0 +1,18 @@
1
+ import { RunId } from "../types/ids.mjs";
2
+ import { ExecutionResult } from "../types/result.mjs";
3
+ import { RunRecord } from "../types/run.mjs";
4
+ import { CreateWorkflowWorkerOptions, WorkerLeaseOptions, WorkerRunFilterOptions, WorkerRunOptions, WorkerRunResult, WorkflowWorker as WorkflowWorker$1 } from "../types/worker.mjs";
5
+ import "temporal-polyfill/global";
6
+ //#region src/worker/worker.d.ts
7
+ /** Storage-backed workflow worker implementation. */
8
+ export declare class WorkflowWorker implements WorkflowWorker$1 {
9
+ #private;
10
+ constructor(options: CreateWorkflowWorkerOptions);
11
+ processRun(runId: RunId): Promise<ExecutionResult<unknown>>;
12
+ processNextRun(options?: WorkerRunFilterOptions): Promise<ExecutionResult<unknown> | undefined>;
13
+ extendLease(runId: RunId, options?: WorkerLeaseOptions): Promise<RunRecord | undefined>;
14
+ releaseLease(runId: RunId, options?: WorkerLeaseOptions): Promise<RunRecord | undefined>;
15
+ run(options?: WorkerRunOptions): Promise<WorkerRunResult>;
16
+ stop(): Promise<void>;
17
+ }
18
+ //#endregion
@@ -1,15 +1,17 @@
1
- import { WorkflowStateError } from "./errors/base.mjs";
2
- import { WorkflowRunNotFoundError } from "./errors/run.mjs";
3
- import { createDefaultWorkerId, isPositiveSafeInteger, resolvePositiveSafeIntegerOption } from "./utility.mjs";
4
- import { WorkflowCapabilityError } from "./errors/capability.mjs";
5
- import { durationBetween } from "./temporal.mjs";
6
- import { MAX_TIMER_DELAY, nonNegativeTimerDelay, positiveTimerDelay } from "./timer.mjs";
7
- import { resolveMissingImplementationRetryConfig } from "./engine/retry.mjs";
8
- import { patchRunIfCurrent, transitionRunToFailed, transitionRunToMissingImplementationWait, wakeParentRunForTerminalChild, wakeParentRunForWaitingChild } from "./engine/state.mjs";
9
- import { requireWorkflowStoreCapabilities } from "./store/capabilities.mjs";
10
- import { DEFAULT_MISSING_IMPLEMENTATION_RETRY_INTERVAL, makeMissingImplementationDeadlineErrorRecord, makeMissingImplementationNotFoundErrorRecord, missingImplementationRetryDelay, toWorkflowWorkerErrorRecord } from "./worker/error.mjs";
1
+ import { durationBetween, earliestOptionalTimestamp } from "../temporal.mjs";
2
+ import { WorkflowErrorCode } from "../errors/codes.mjs";
3
+ import { WorkflowStateError } from "../errors/base.mjs";
4
+ import { WorkflowCapabilityError } from "../errors/capability.mjs";
5
+ import { createDefaultWorkerId } from "../ids.mjs";
6
+ import { isPositiveSafeInteger, resolvePositiveSafeIntegerOption } from "../values.mjs";
7
+ import { requireStoreCapabilities } from "../store/capabilities.mjs";
8
+ import { getRequiredRun } from "../store/query.mjs";
9
+ import { resolveMissingImplementationRetryConfig } from "../engine/retry.mjs";
10
+ import { unfinishedRunResult } from "../engine/run-utils.mjs";
11
+ import { MAX_TIMER_DELAY, nonNegativeTimerDelay, positiveTimerDelay } from "../timer.mjs";
12
+ import { DEFAULT_RETRY_INTERVAL, handleMissingImplementation } from "./missing-implementation.mjs";
11
13
  import "temporal-polyfill/global";
12
- //#region src/worker.ts
14
+ //#region src/worker/worker.ts
13
15
  const DEFAULT_WORKER_LEASE_DURATION = Temporal.Duration.from({ seconds: 30 });
14
16
  const DEFAULT_WORKER_POLL_INTERVAL = Temporal.Duration.from({ milliseconds: 100 });
15
17
  const DEFAULT_WORKER_STOP_DRAIN_TIMEOUT = Temporal.Duration.from({ seconds: 30 });
@@ -32,14 +34,14 @@ var WorkflowWorker = class {
32
34
  #activeExecutionRuns = /* @__PURE__ */ new Map();
33
35
  constructor(options) {
34
36
  const store = options.engine.store;
35
- requireWorkflowStoreCapabilities(store, {
36
- conditionalRunClaims: "workflow worker conditional run claims",
37
- conditionalRunUpdates: "workflow worker conditional run updates",
38
- conditionalRunLeaseExtensions: "workflow worker conditional lease extensions",
39
- conditionalRunLeaseReleases: "workflow worker conditional lease releases",
40
- conditionalEventAppends: "workflow worker conditional event appends",
41
- reconcilesStepAttemptsFromEvents: "workflow worker step-attempt reconciliation"
42
- });
37
+ requireStoreCapabilities(store, [
38
+ ["conditionalRunClaims", "workflow worker conditional run claims"],
39
+ ["conditionalRunUpdates", "workflow worker conditional run updates"],
40
+ ["conditionalRunLeaseExtensions", "workflow worker conditional lease extensions"],
41
+ ["conditionalRunLeaseReleases", "workflow worker conditional lease releases"],
42
+ ["conditionalEventAppends", "workflow worker conditional event appends"],
43
+ ["reconcilesStepAttemptsFromEvents", "workflow worker step-attempt reconciliation"]
44
+ ]);
43
45
  this.#engine = options.engine;
44
46
  this.#store = store;
45
47
  this.#registry = options.registry;
@@ -50,7 +52,7 @@ var WorkflowWorker = class {
50
52
  this.#stopDrainTimeout = nonNegativeTimerDelay(options.stopDrainTimeout ?? DEFAULT_WORKER_STOP_DRAIN_TIMEOUT, "Workflow worker stopDrainTimeout").clampedDelay;
51
53
  this.#defaultPollInterval = nonNegativeTimerDelay(options.pollInterval ?? DEFAULT_WORKER_POLL_INTERVAL, "Workflow worker pollInterval").clampedDelay;
52
54
  this.#missingImplementationRetry = resolveMissingImplementationRetryConfig(options.missingImplementationRetry, {
53
- initialInterval: DEFAULT_MISSING_IMPLEMENTATION_RETRY_INTERVAL,
55
+ initialInterval: DEFAULT_RETRY_INTERVAL,
54
56
  backoffCoefficient: 2,
55
57
  maximumAttempts: 0
56
58
  }, "Workflow missing implementation retry options");
@@ -59,10 +61,16 @@ var WorkflowWorker = class {
59
61
  async processRun(runId) {
60
62
  this.#stopRequested = false;
61
63
  const run = await this.#claimRun({ runId });
62
- if (run === void 0) WorkflowStateError.runNotClaimable(runId);
64
+ if (run === void 0) throw new WorkflowStateError(`Workflow run is not claimable: ${runId}`, {
65
+ code: WorkflowErrorCode.STATE_RUN_NOT_CLAIMABLE,
66
+ details: { runId }
67
+ });
63
68
  if (this.#stopRequested) {
64
69
  await this.#releaseLease(run.id, run.attempts);
65
- WorkflowStateError.workerStoppedBeforeRun(runId);
70
+ throw new WorkflowStateError(`Workflow worker stopped before executing run: ${runId}`, {
71
+ code: WorkflowErrorCode.STATE_WORKER_STOPPED_BEFORE_RUN,
72
+ details: { runId }
73
+ });
66
74
  }
67
75
  return await this.#executeClaimedRun(run);
68
76
  }
@@ -92,8 +100,8 @@ var WorkflowWorker = class {
92
100
  execution = this.#processNextRun(options ?? {}, options?.signal).then((result) => ({
93
101
  execution,
94
102
  result
95
- }), (error) => ({
96
- error,
103
+ }), (cause) => ({
104
+ error: cause,
97
105
  execution
98
106
  }));
99
107
  activeRuns.add(execution);
@@ -131,7 +139,7 @@ var WorkflowWorker = class {
131
139
  for (const controller of this.#activeExecutionAborts) controller.abort();
132
140
  for (const wakeup of this.#pollWakeups) wakeup();
133
141
  if (!await this.#waitForActiveExecutions(activeExecutions)) return;
134
- await Promise.all(releaseRuns.map(async ([runId, attempts]) => await this.#releaseLease(runId, attempts)));
142
+ await Promise.all(releaseRuns.map(([runId, attempts]) => this.#releaseLease(runId, attempts)));
135
143
  }
136
144
  async #waitForActiveExecutions(activeExecutions) {
137
145
  if (activeExecutions.length === 0) return true;
@@ -170,15 +178,14 @@ var WorkflowWorker = class {
170
178
  async #processNextRun(options, signal) {
171
179
  const timestamp = this.#now();
172
180
  const run = await this.#claimRun(options);
173
- this.#observeWorkerOperation({
181
+ const observation = {
174
182
  operation: "poll",
175
183
  status: run === void 0 ? "empty" : "claimed",
176
184
  timestamp,
177
- ...run === void 0 ? {} : {
178
- runId: run.id,
179
- run
180
- }
181
- });
185
+ runId: run?.id,
186
+ run
187
+ };
188
+ this.#observeWorkerOperation(observation);
182
189
  if (run === void 0) return;
183
190
  if (this.#stopRequested || signal?.aborted === true) {
184
191
  await this.#releaseLease(run.id, run.attempts);
@@ -192,82 +199,22 @@ var WorkflowWorker = class {
192
199
  }
193
200
  async #executeClaimedRun(run, signal) {
194
201
  const definition = this.#registry.getByName(run.workflowName, run.workflowVersion);
195
- if (definition === void 0) return await this.#rescheduleMissingImplementation(run);
202
+ if (definition === void 0) return await handleMissingImplementation({
203
+ store: this.#store,
204
+ now: this.#now,
205
+ retry: this.#missingImplementationRetry,
206
+ readResult: (runId) => this.#readRunExecutionResult(runId)
207
+ }, run);
196
208
  const attempts = run.attempts !== void 0 && isPositiveSafeInteger(run.attempts) ? run.attempts : void 0;
197
- return await this.#withHeartbeat(run.id, attempts, signal, async (executionSignal) => await this.#engine.resumeWorkflow(definition, run.id, { signal: executionSignal }));
198
- }
199
- async #rescheduleMissingImplementation(run) {
200
- const timestamp = this.#now();
201
- const retryAttempt = run.attempts ?? (run.retryAttempt ?? 0) + 1;
202
- const errorRecord = makeMissingImplementationNotFoundErrorRecord(run);
203
- const deadlineAt = run.deadlineAt;
204
- if (deadlineAt !== void 0 && Temporal.Instant.compare(deadlineAt, timestamp) <= 0) return await this.#failMissingImplementationForDeadline(run, deadlineAt, timestamp);
205
- if (this.#missingImplementationRetry.maximumAttempts > 0 && retryAttempt >= this.#missingImplementationRetry.maximumAttempts) return await this.#failMissingImplementationRun(run, errorRecord, timestamp);
206
- let availableAt;
207
- try {
208
- availableAt = timestamp.add(Temporal.Duration.from({ milliseconds: nonNegativeTimerDelay(missingImplementationRetryDelay(this.#missingImplementationRetry, retryAttempt), "Workflow missing implementation retry delay").clampedDelay }));
209
- } catch (retryError) {
210
- return await this.#failMissingImplementationRun(run, toWorkflowWorkerErrorRecord(retryError), timestamp);
211
- }
212
- if (deadlineAt !== void 0 && Temporal.Instant.compare(deadlineAt, availableAt) <= 0) return await this.#failMissingImplementationForDeadline(run, deadlineAt, timestamp);
213
- const waitingRun = await patchRunIfCurrent(this.#store, run, transitionRunToMissingImplementationWait(run, errorRecord, timestamp, availableAt, retryAttempt));
214
- if (waitingRun === void 0) return await this.#readRunExecutionResult(run.id);
215
- await wakeParentRunForWaitingChild(this.#store, waitingRun, availableAt);
216
- return {
217
- kind: "waiting",
218
- run: waitingRun,
219
- availableAt
220
- };
221
- }
222
- async #failMissingImplementationRun(run, errorRecord, timestamp) {
223
- return await this.#failClaimedMissingImplementationRun(run, errorRecord, timestamp, "failed");
224
- }
225
- async #failMissingImplementationForDeadline(run, deadlineAt, timestamp) {
226
- return await this.#failClaimedMissingImplementationRun(run, makeMissingImplementationDeadlineErrorRecord(run, deadlineAt), timestamp, "deadline", deadlineAt);
227
- }
228
- async #failClaimedMissingImplementationRun(run, errorRecord, timestamp, reason, deadlineAt) {
229
- const failedRun = await patchRunIfCurrent(this.#store, run, transitionRunToFailed(run, errorRecord, timestamp, reason, deadlineAt));
230
- if (failedRun === void 0) return await this.#readRunExecutionResult(run.id);
231
- if (await this.#store.appendEventIfRunCurrent(failedRun, {
232
- kind: "workflow_failed",
233
- timestamp
234
- }) === void 0) return await this.#readRunExecutionResult(run.id);
235
- await wakeParentRunForTerminalChild(this.#store, failedRun, timestamp);
236
- return {
237
- kind: "failed",
238
- run: failedRun,
239
- error: errorRecord
240
- };
209
+ return await this.#withHeartbeat(run.id, attempts, signal, (executionSignal) => this.#engine.resumeWorkflow(definition, run.id, { signal: executionSignal }));
241
210
  }
242
211
  async #readRunExecutionResult(runId) {
243
- const current = await this.#engine.getRun(runId);
244
- if (current === void 0) WorkflowRunNotFoundError.notFound(runId);
245
- if (current.status === "completed") return {
212
+ const current = await getRequiredRun(this.#engine.store, runId);
213
+ return current.status === "completed" ? {
246
214
  kind: "completed",
247
215
  run: current,
248
216
  output: current.output
249
- };
250
- if (current.status === "failed") return {
251
- kind: "failed",
252
- run: current,
253
- error: current.error ?? {
254
- name: "WorkflowError",
255
- message: `Workflow run failed: ${runId}`
256
- }
257
- };
258
- if (current.status === "canceled") return {
259
- kind: "failed",
260
- run: current,
261
- error: current.error ?? {
262
- name: "WorkflowRunCanceledError",
263
- message: `Workflow run was canceled: ${runId}`
264
- }
265
- };
266
- return {
267
- kind: "waiting",
268
- run: current,
269
- availableAt: current.availableAt ?? this.#now()
270
- };
217
+ } : unfinishedRunResult(current, this.#now());
271
218
  }
272
219
  async #extendLease(runId, attempts) {
273
220
  const timestamp = this.#now();
@@ -278,13 +225,14 @@ var WorkflowWorker = class {
278
225
  leaseDuration: this.#leaseDuration,
279
226
  now: timestamp
280
227
  });
281
- this.#observeWorkerOperation({
228
+ const observation = {
282
229
  operation: "lease_extension",
283
230
  status: run === void 0 ? "failure" : "success",
284
231
  timestamp,
285
232
  runId,
286
- ...run === void 0 ? {} : { run }
287
- });
233
+ run
234
+ };
235
+ this.#observeWorkerOperation(observation);
288
236
  return run;
289
237
  }
290
238
  async #releaseLease(runId, attempts) {
@@ -295,13 +243,14 @@ var WorkflowWorker = class {
295
243
  attempts,
296
244
  now: timestamp
297
245
  });
298
- this.#observeWorkerOperation({
246
+ const observation = {
299
247
  operation: "lease_release",
300
248
  status: run === void 0 ? "failure" : "success",
301
249
  timestamp,
302
250
  runId,
303
- ...run === void 0 ? {} : { run }
304
- });
251
+ run
252
+ };
253
+ this.#observeWorkerOperation(observation);
305
254
  return run;
306
255
  }
307
256
  async #withHeartbeat(runId, attempts, signal, callback) {
@@ -332,21 +281,21 @@ var WorkflowWorker = class {
332
281
  });
333
282
  executionAbort.abort();
334
283
  }
335
- }).catch((error) => {
284
+ }).catch((cause) => {
336
285
  executionAbort.abort();
337
- heartbeatError ??= error;
286
+ heartbeatError ??= cause;
338
287
  this.#observeWorkerOperation({
339
288
  operation: "heartbeat",
340
289
  status: "failure",
341
290
  timestamp: this.#now(),
342
291
  runId,
343
- error
292
+ error: cause
344
293
  });
345
294
  }).finally(() => {
346
295
  heartbeatPending = false;
347
296
  });
348
297
  }, this.#heartbeatInterval);
349
- const execution = (async () => await callback(executionAbort.signal))();
298
+ const execution = (() => callback(executionAbort.signal))();
350
299
  this.#activeExecutions.add(execution);
351
300
  let executionOutcome;
352
301
  try {
@@ -374,7 +323,7 @@ var WorkflowWorker = class {
374
323
  }
375
324
  #observeWorkerOperation(event) {
376
325
  try {
377
- this.#engine.observeWorkerOperation?.({
326
+ this.#engine.observation.emitWorkerOperation({
378
327
  workerId: this.#workerId,
379
328
  ...event
380
329
  });
@@ -410,8 +359,8 @@ var WorkflowWorker = class {
410
359
  return Math.min(pollInterval, nonNegativeTimerDelay(durationBetween(timestamp, nextWakeAt), "Workflow idle poll delay").clampedDelay);
411
360
  }
412
361
  async #nextScheduleWakeAt() {
413
- if (this.#engine.listSchedules === void 0) return;
414
- return (await this.#engine.listSchedules({
362
+ if (this.#engine.store.listSchedules === void 0) return;
363
+ return (await this.#engine.store.listSchedules({
415
364
  status: "active",
416
365
  limit: 1
417
366
  }))[0]?.nextFireAt;
@@ -419,10 +368,7 @@ var WorkflowWorker = class {
419
368
  };
420
369
  function earliestSummaryWakeAt(summary, timestamp) {
421
370
  if (summary.lease.expired > 0) return timestamp;
422
- const nextAt = summary.nextAvailableAt === void 0 ? summary.retry.nextRetryAt : summary.retry.nextRetryAt === void 0 || Temporal.Instant.compare(summary.nextAvailableAt, summary.retry.nextRetryAt) <= 0 ? summary.nextAvailableAt : summary.retry.nextRetryAt;
423
- if (nextAt === void 0) return summary.lease.nextExpiresAt;
424
- if (summary.lease.nextExpiresAt === void 0) return nextAt;
425
- return Temporal.Instant.compare(summary.lease.nextExpiresAt, nextAt) < 0 ? summary.lease.nextExpiresAt : nextAt;
371
+ return earliestOptionalTimestamp(earliestOptionalTimestamp(summary.nextAvailableAt, summary.retry.next?.at), summary.lease.next?.at);
426
372
  }
427
373
  //#endregion
428
374
  export { WorkflowWorker };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temelj/workflow",
3
- "version": "0.0.0-alpha.2",
3
+ "version": "0.0.0-alpha.4",
4
4
  "description": "Durable, vendor-agnostic, extendible workflows.",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -17,29 +17,17 @@
17
17
  "types": "./dist/mod.d.mts",
18
18
  "import": "./dist/mod.mjs"
19
19
  },
20
- "./engine": {
21
- "types": "./dist/engine/mod.d.mts",
22
- "import": "./dist/engine/mod.mjs"
20
+ "./compiled": {
21
+ "types": "./dist/compiled.d.mts",
22
+ "import": "./dist/compiled.mjs"
23
23
  },
24
24
  "./esbuild": {
25
25
  "types": "./dist/esbuild.d.mts",
26
26
  "import": "./dist/esbuild.mjs"
27
27
  },
28
- "./events": {
29
- "types": "./dist/events/mod.d.mts",
30
- "import": "./dist/events/mod.mjs"
31
- },
32
- "./inspection": {
33
- "types": "./dist/inspection/mod.d.mts",
34
- "import": "./dist/inspection/mod.mjs"
35
- },
36
28
  "./otel": {
37
- "types": "./dist/otel.d.mts",
38
- "import": "./dist/otel.mjs"
39
- },
40
- "./registry": {
41
- "types": "./dist/registry.d.mts",
42
- "import": "./dist/registry.mjs"
29
+ "types": "./dist/otel/mod.d.mts",
30
+ "import": "./dist/otel/mod.mjs"
43
31
  },
44
32
  "./rolldown": {
45
33
  "types": "./dist/rolldown.d.mts",
@@ -53,10 +41,6 @@
53
41
  "types": "./dist/rspack.d.mts",
54
42
  "import": "./dist/rspack.mjs"
55
43
  },
56
- "./telemetry": {
57
- "types": "./dist/telemetry.d.mts",
58
- "import": "./dist/telemetry.mjs"
59
- },
60
44
  "./store": {
61
45
  "types": "./dist/store/mod.d.mts",
62
46
  "import": "./dist/store/mod.mjs"
@@ -69,10 +53,6 @@
69
53
  "types": "./dist/webpack.d.mts",
70
54
  "import": "./dist/webpack.mjs"
71
55
  },
72
- "./worker": {
73
- "types": "./dist/worker.d.mts",
74
- "import": "./dist/worker.mjs"
75
- },
76
56
  "./cloudflare": {
77
57
  "types": "./dist/cloudflare/mod.d.mts",
78
58
  "import": "./dist/cloudflare/mod.mjs"
@@ -80,43 +60,47 @@
80
60
  },
81
61
  "dependencies": {
82
62
  "@opentelemetry/api": "^1.9.1",
83
- "oxc-parser": "0.144.0",
84
- "temporal-polyfill": "^1.0.4",
85
- "unplugin": "^3.3.0",
86
- "zod": "^4.4.3",
87
63
  "@temelj/event": "0.1.0",
88
64
  "@temelj/log": "0.1.0",
65
+ "@temelj/standard-schema": "0.1.0",
89
66
  "@temelj/storage": "0.4.0",
90
- "@temelj/string": "0.14.0",
91
- "@temelj/value": "0.14.0",
92
- "@temelj/standard-schema": "0.1.0"
67
+ "@temelj/string": "0.15.0",
68
+ "@temelj/value": "0.15.0",
69
+ "oxc-parser": "0.154.0",
70
+ "temporal-polyfill": "^1.0.6",
71
+ "unplugin": "^3.4.0"
93
72
  },
94
73
  "devDependencies": {
95
- "@opentelemetry/sdk-metrics": "^2.10.0",
96
- "@opentelemetry/sdk-trace-base": "^2.10.0",
97
- "@rspack/core": "^2.1.10",
98
- "@types/node": "26.1.1",
74
+ "@cloudflare/workers-types": "5.20261014.1",
75
+ "@opentelemetry/sdk-metrics": "^2.12.0",
76
+ "@opentelemetry/sdk-trace-base": "^2.12.0",
77
+ "@rspack/core": "^2.2.9",
78
+ "@types/node": "26.6.5",
99
79
  "esbuild": "^0.28.2",
100
- "rolldown": "^1.2.4",
101
- "rollup": "^4.62.4",
80
+ "rolldown": "^1.2.14",
81
+ "rollup": "^4.64.6",
102
82
  "shx": "^0.4.0",
103
- "tsdown": "^0.22.14",
83
+ "tsdown": "^0.23.1",
104
84
  "typedoc": "^0.28.20",
105
85
  "typescript": "^7.0.2",
106
- "vite": "^8.2.1",
107
- "vitest": "^4.1.10",
108
- "webpack": "^5.109.2"
86
+ "vite": "^8.3.4",
87
+ "vitest": "^5.0.4",
88
+ "webpack": "^5.111.1",
89
+ "zod": "^4.6.7"
109
90
  },
110
91
  "peerDependencies": {
92
+ "@cloudflare/workers-types": "^4.0.0 || ^5.0.0",
111
93
  "@rspack/core": "^2.0.0",
112
94
  "esbuild": "^0.28.0",
113
95
  "rolldown": "^1.0.0",
114
96
  "rollup": "^4.0.0",
115
- "typescript": "^6.0.0",
116
97
  "vite": "^8.0.0",
117
98
  "webpack": "^5.0.0"
118
99
  },
119
100
  "peerDependenciesMeta": {
101
+ "@cloudflare/workers-types": {
102
+ "optional": true
103
+ },
120
104
  "@rspack/core": {
121
105
  "optional": true
122
106
  },
@@ -129,9 +113,6 @@
129
113
  "rollup": {
130
114
  "optional": true
131
115
  },
132
- "typescript": {
133
- "optional": true
134
- },
135
116
  "vite": {
136
117
  "optional": true
137
118
  },