@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,61 +1,67 @@
1
+ import { durationBetween, durationTotal } from "../temporal.mjs";
1
2
  import { WorkflowResultTimeoutError, WorkflowRunCanceledError, WorkflowRunNotFoundError } from "../errors/run.mjs";
2
- import { durationTotal } from "../utility.mjs";
3
- import "../errors/mod.mjs";
4
3
  import { workflowErrorFromRecord } from "../errors/records.mjs";
5
- import { durationBetween } from "../temporal.mjs";
4
+ import "../errors/mod.mjs";
5
+ import { getRunTimeline } from "../engine/inspection.mjs";
6
+ import { readRunResult } from "../engine/run-utils.mjs";
7
+ import { cancelWorkflowRun, setRunAttributes, updateWorkflowRunMetadata } from "../engine/run-service.mjs";
6
8
  import { nonNegativeTimerDelay, sleep } from "../timer.mjs";
9
+ import { followStream, getStreamInfo, readStream, waitForStream, waitForStreamChunk, waitForStreamTerminal } from "../engine/stream-reader.mjs";
7
10
  import "temporal-polyfill/global";
8
11
  //#region src/client/run-handle.ts
9
12
  const DEFAULT_RESULT_POLL_INTERVAL = Temporal.Duration.from({ milliseconds: 100 });
10
- function createWorkflowRunHandle(engine, definition, runId, now) {
11
- return new WorkflowRunHandle(engine, definition, runId, now);
13
+ function createRunHandle(engine, ref, now) {
14
+ return new WorkflowRunHandle(engine, ref, now);
12
15
  }
13
16
  var WorkflowRunHandle = class {
14
- /** @inheritdoc */
15
17
  runId;
16
- /** @inheritdoc */
17
18
  workflowName;
18
- /** @inheritdoc */
19
19
  workflowVersion;
20
20
  #engine;
21
+ #ref;
21
22
  #now;
22
- constructor(engine, definition, runId, now) {
23
+ streams;
24
+ constructor(engine, ref, now) {
23
25
  this.#engine = engine;
26
+ this.#ref = ref;
24
27
  this.#now = now;
25
- this.runId = runId;
26
- this.workflowName = definition.name;
27
- if (definition.version !== void 0) this.workflowVersion = definition.version;
28
+ this.runId = ref.runId;
29
+ this.workflowName = ref.definition.name;
30
+ const context = engine.context;
31
+ const runId = ref.runId;
32
+ this.streams = {
33
+ getInfo: (name) => getStreamInfo(context, runId, name),
34
+ follow: (name, options) => followStream(context, runId, name, options),
35
+ wait: (name, options) => waitForStream(context, runId, name, options),
36
+ waitForChunk: (name, afterIndex, options) => waitForStreamChunk(context, runId, name, afterIndex, options),
37
+ waitForTerminal: (name, options) => waitForStreamTerminal(context, runId, name, options),
38
+ read: (name, options) => readStream(context, runId, name, options)
39
+ };
40
+ if (ref.definition.version !== void 0) this.workflowVersion = ref.definition.version;
28
41
  }
29
- /** @inheritdoc */
30
42
  async getRun() {
31
- const run = await this.#engine.getRun(this.runId);
43
+ const run = await this.#engine.store.getRun(this.runId);
32
44
  if (run === void 0) WorkflowRunNotFoundError.notFound(this.runId);
33
45
  return run;
34
46
  }
35
- /** @inheritdoc */
36
47
  async status() {
37
- const run = await this.#engine.getRun(this.runId);
48
+ const run = await this.#engine.store.getRun(this.runId);
38
49
  if (run === void 0) WorkflowRunNotFoundError.notFound(this.runId);
39
50
  return run.status;
40
51
  }
41
- /** @inheritdoc */
42
52
  async events() {
43
- return await this.#engine.getEvents(this.runId);
53
+ return await this.#engine.store.getEvents(this.runId);
44
54
  }
45
- /** @inheritdoc */
46
55
  async timeline() {
47
- return await this.#engine.getTimeline(this.runId);
56
+ return await getRunTimeline(this.#engine.context, this.runId);
48
57
  }
49
- /** @inheritdoc */
50
58
  async result(options) {
51
59
  const pollInterval = nonNegativeTimerDelay(options?.pollInterval ?? DEFAULT_RESULT_POLL_INTERVAL, "Workflow result pollInterval").clampedDelay;
52
60
  const timeout = options?.timeout;
53
61
  const deadlineAt = timeout === void 0 ? void 0 : this.#now().add(timeout);
54
62
  while (true) {
55
- const run = await this.#engine.getRun(this.runId);
56
- if (run === void 0) WorkflowRunNotFoundError.notFound(this.runId);
57
- if (run.status === "canceled") WorkflowRunCanceledError.canceled(this.runId);
58
- const result = runToResult(run, this.runId, this.#now());
63
+ const result = await readRunResult(this.#engine.store, this.#ref.definition, this.runId, this.#now());
64
+ if (result.run.status === "canceled") WorkflowRunCanceledError.canceled(this.runId);
59
65
  if (result.kind === "completed") return result.output;
60
66
  if (result.kind === "failed") throw workflowErrorFromRecord(result.error);
61
67
  let sleepDelay = pollInterval;
@@ -68,91 +74,15 @@ var WorkflowRunHandle = class {
68
74
  await sleep(sleepDelay);
69
75
  }
70
76
  }
71
- /** @inheritdoc */
72
- async getStreamInfo(streamIdOrName) {
73
- return await this.#engine.getStreamInfo(this.runId, streamIdOrName);
74
- }
75
- /** @inheritdoc */
76
- followStream(streamIdOrName, followOptions) {
77
- return this.#engine.followStream(this.runId, streamIdOrName, followOptions);
78
- }
79
- /** @inheritdoc */
80
- async waitForStream(streamIdOrName, waitOptions) {
81
- return await this.#engine.waitForStream(this.runId, streamIdOrName, waitOptions);
82
- }
83
- /** @inheritdoc */
84
- async waitForStreamChunk(streamIdOrName, afterIndex, waitOptions) {
85
- return await this.#engine.waitForStreamChunk(this.runId, streamIdOrName, afterIndex, waitOptions);
86
- }
87
- /** @inheritdoc */
88
- async waitForStreamTerminal(streamIdOrName, waitOptions) {
89
- return await this.#engine.waitForStreamTerminal(this.runId, streamIdOrName, waitOptions);
90
- }
91
- /** @inheritdoc */
92
- async readStream(streamIdOrName, readOptions) {
93
- return await this.#engine.readStream(this.runId, streamIdOrName, readOptions);
94
- }
95
- /** @inheritdoc */
96
- async readStreamPage(streamIdOrName, readOptions) {
97
- return await this.#engine.readStreamPage(this.runId, streamIdOrName, readOptions);
98
- }
99
- /** @inheritdoc */
100
- async reschedule(options) {
101
- return await this.#engine.rescheduleRun(this.runId, options);
102
- }
103
- /** @inheritdoc */
104
- async releaseStaleLease(options) {
105
- return await this.#engine.releaseStaleRunLease(this.runId, options);
106
- }
107
- /** @inheritdoc */
108
- async retryFailed(options) {
109
- return await this.#engine.retryFailedRun(this.runId, options);
110
- }
111
- /** @inheritdoc */
112
- async markPermanentlyFailed(options) {
113
- return await this.#engine.markRunPermanentlyFailed(this.runId, options);
114
- }
115
- /** @inheritdoc */
116
77
  async setMetadata(metadata) {
117
- return await this.#engine.updateRunMetadata(this.runId, metadata);
78
+ return await updateWorkflowRunMetadata(this.#engine.context, this.#engine.lifecycle, this.runId, metadata);
118
79
  }
119
- /** @inheritdoc */
120
80
  async setAttributes(attributes) {
121
- return await this.#engine.setRunAttributes(this.runId, attributes);
81
+ return await setRunAttributes(this.#engine.context, this.runId, attributes);
122
82
  }
123
- /** @inheritdoc */
124
83
  async cancel() {
125
- return await this.#engine.cancelRun(this.runId);
84
+ return await cancelWorkflowRun(this.#engine.context, this.#engine.lifecycle, this.runId);
126
85
  }
127
86
  };
128
- function runToResult(run, runId, fallbackAvailableAt) {
129
- if (run === void 0) WorkflowRunNotFoundError.notFound(runId);
130
- if (run.status === "completed") return {
131
- kind: "completed",
132
- run,
133
- output: run.output
134
- };
135
- if (run.status === "failed") return {
136
- kind: "failed",
137
- run,
138
- error: run.error ?? {
139
- name: "WorkflowError",
140
- message: `Workflow run failed: ${run.id}`
141
- }
142
- };
143
- if (run.status === "canceled") return {
144
- kind: "failed",
145
- run,
146
- error: run.error ?? {
147
- name: "WorkflowRunCanceledError",
148
- message: `Workflow run was canceled: ${run.id}`
149
- }
150
- };
151
- return {
152
- kind: "waiting",
153
- run,
154
- availableAt: run.availableAt ?? fallbackAvailableAt
155
- };
156
- }
157
87
  //#endregion
158
- export { WorkflowRunHandle, createWorkflowRunHandle };
88
+ export { WorkflowRunHandle, createRunHandle };
@@ -1,17 +1,17 @@
1
- import { WorkflowMissingImplementationRetryConfig } from "../types/retry.mjs";
1
+ import { MissingImplementationRetryConfig } from "../types/retry.mjs";
2
2
  import { RegistryLike } from "../types/definition.mjs";
3
- import { WorkflowWorkerEngine } from "../types/engine.mjs";
4
3
  import { CreateWorkflowWorkerOptions } from "../types/worker.mjs";
5
- import { WorkflowClientWorkerOptions } from "../types/client.mjs";
4
+ import { WorkflowEngine } from "../engine/create.mjs";
5
+ import { ClientWorkerOptions } from "../types/client.mjs";
6
6
  //#region src/client/worker-options.d.ts
7
- interface WorkflowWorkerFacetOptions {
7
+ interface WorkerFacetOptions {
8
8
  readonly workerId?: string;
9
9
  readonly leaseDuration?: Temporal.Duration;
10
10
  readonly heartbeatInterval?: Temporal.Duration;
11
11
  readonly stopDrainTimeout?: Temporal.Duration;
12
- readonly missingImplementationRetry?: WorkflowMissingImplementationRetryConfig;
12
+ readonly missingImplementationRetry?: MissingImplementationRetryConfig;
13
13
  }
14
- declare function workerOptionsFromClientOptions(engine: WorkflowWorkerEngine, registry: RegistryLike, now: () => Temporal.Instant, options: WorkflowClientWorkerOptions | undefined): CreateWorkflowWorkerOptions;
15
- declare function workerOptionsFromWakeOptions(options: WorkflowWorkerFacetOptions | undefined): WorkflowClientWorkerOptions;
14
+ export declare function workerOptionsFromClientOptions(engine: WorkflowEngine, registry: RegistryLike, now: () => Temporal.Instant, options: ClientWorkerOptions | undefined): CreateWorkflowWorkerOptions;
15
+ export declare function workerOptionsFromWakeOptions(options: WorkerFacetOptions | undefined): ClientWorkerOptions;
16
16
  //#endregion
17
- export { workerOptionsFromClientOptions, workerOptionsFromWakeOptions };
17
+ export {};
@@ -4,21 +4,21 @@ function workerOptionsFromClientOptions(engine, registry, now, options) {
4
4
  engine,
5
5
  registry,
6
6
  now,
7
- ...options?.workerId === void 0 ? {} : { workerId: options.workerId },
8
- ...options?.leaseDuration === void 0 ? {} : { leaseDuration: options.leaseDuration },
9
- ...options?.pollInterval === void 0 ? {} : { pollInterval: options.pollInterval },
10
- ...options?.heartbeatInterval === void 0 ? {} : { heartbeatInterval: options.heartbeatInterval },
11
- ...options?.stopDrainTimeout === void 0 ? {} : { stopDrainTimeout: options.stopDrainTimeout },
12
- ...options?.missingImplementationRetry === void 0 ? {} : { missingImplementationRetry: options.missingImplementationRetry }
7
+ workerId: options?.workerId,
8
+ leaseDuration: options?.leaseDuration,
9
+ pollInterval: options?.pollInterval,
10
+ heartbeatInterval: options?.heartbeatInterval,
11
+ stopDrainTimeout: options?.stopDrainTimeout,
12
+ missingImplementationRetry: options?.missingImplementationRetry
13
13
  };
14
14
  }
15
15
  function workerOptionsFromWakeOptions(options) {
16
16
  return {
17
- ...options?.workerId === void 0 ? {} : { workerId: options.workerId },
18
- ...options?.leaseDuration === void 0 ? {} : { leaseDuration: options.leaseDuration },
19
- ...options?.heartbeatInterval === void 0 ? {} : { heartbeatInterval: options.heartbeatInterval },
20
- ...options?.stopDrainTimeout === void 0 ? {} : { stopDrainTimeout: options.stopDrainTimeout },
21
- ...options?.missingImplementationRetry === void 0 ? {} : { missingImplementationRetry: options.missingImplementationRetry }
17
+ workerId: options?.workerId,
18
+ leaseDuration: options?.leaseDuration,
19
+ heartbeatInterval: options?.heartbeatInterval,
20
+ stopDrainTimeout: options?.stopDrainTimeout,
21
+ missingImplementationRetry: options?.missingImplementationRetry
22
22
  };
23
23
  }
24
24
  //#endregion
@@ -1,12 +1,11 @@
1
1
  //#region src/cloudflare/cloudflare.d.ts
2
2
  declare module "cloudflare:workers" {
3
- export abstract class WorkflowEntrypoint<TEnv = unknown, TPayload = unknown> {
4
- protected readonly env: TEnv;
5
- abstract run(event: unknown, step: unknown): Promise<unknown>;
6
- }
3
+ export const WorkflowEntrypoint: typeof import("@cloudflare/workers-types").CloudflareWorkersModule.WorkflowEntrypoint;
7
4
  }
8
5
  declare module "cloudflare:workflows" {
9
6
  export class NonRetryableError extends Error {
10
7
  constructor(message: string, name?: string);
11
8
  }
12
- }
9
+ }
10
+ //#endregion
11
+ export {};
@@ -1,16 +1,31 @@
1
- import { z } from "zod";
1
+ import { WorkflowDefinition } from "../types/definition.mjs";
2
+ import { CloudflareWorkflowInstanceStatus } from "./types.mjs";
3
+ import { SchemaOutput } from "@temelj/standard-schema";
4
+ import { StorageValue } from "@temelj/storage";
2
5
  //#region src/cloudflare/codec.d.ts
3
- declare const cloudflareWorkflowEnvelopeSchema: z.ZodObject<{
4
- kind: z.ZodLiteral<"temelj-workflow">;
5
- version: z.ZodLiteral<1>;
6
- workflowName: z.ZodString;
7
- workflowVersion: z.ZodOptional<z.ZodString>;
8
- input: z.ZodString;
9
- }, z.core.$strip>;
6
+ declare const cloudflareEnvelopeSchema: import("@temelj/standard-schema").Schema<unknown, import("@temelj/standard-schema").ObjectOutput<{
7
+ kind: import("@temelj/standard-schema").Schema<unknown, "temelj-workflow">;
8
+ version: import("@temelj/standard-schema").Schema<unknown, 1>;
9
+ workflowName: import("@temelj/standard-schema").Schema<unknown, string>;
10
+ workflowVersion: import("@temelj/standard-schema").Schema<unknown, string | undefined>;
11
+ input: import("@temelj/standard-schema").Schema<unknown, string>;
12
+ }>>;
10
13
  /** Serialized payload dispatched through the generic Cloudflare entrypoint. */
11
- type CloudflareWorkflowEnvelope = z.infer<typeof cloudflareWorkflowEnvelopeSchema>;
12
- declare function encodeCloudflareWorkflowValue(value: unknown): string;
13
- declare function decodeCloudflareWorkflowValue(value: unknown, label: string): unknown;
14
- declare function parseCloudflareWorkflowEnvelope(value: unknown): CloudflareWorkflowEnvelope;
14
+ export type CloudflareEnvelope = SchemaOutput<typeof cloudflareEnvelopeSchema>;
15
+ export declare function encodeCloudflareValue(value: unknown): string;
16
+ export declare function decodeCloudflareValue(value: unknown, label: string): StorageValue | undefined;
17
+ export declare function parseCloudflareEnvelope(value: unknown): CloudflareEnvelope;
18
+ declare const cloudflareResultEnvelopeSchema: import("@temelj/standard-schema").Schema<unknown, import("@temelj/standard-schema").ObjectOutput<{
19
+ kind: import("@temelj/standard-schema").Schema<unknown, "temelj-workflow-result">;
20
+ version: import("@temelj/standard-schema").Schema<unknown, 1>;
21
+ workflowName: import("@temelj/standard-schema").Schema<unknown, string>;
22
+ workflowVersion: import("@temelj/standard-schema").Schema<unknown, string | undefined>;
23
+ output: import("@temelj/standard-schema").Schema<unknown, string>;
24
+ }>>;
25
+ /** Serialized result coupled to the workflow contract that produced it. */
26
+ export type CloudflareResultEnvelope = SchemaOutput<typeof cloudflareResultEnvelopeSchema>;
27
+ /** Validates the provider result and its workflow identity before decoding the output. */
28
+ export declare function decodeCloudflareResult(state: CloudflareWorkflowInstanceStatus, definition: WorkflowDefinition): StorageValue | undefined;
29
+ export declare function durationMilliseconds(duration: Temporal.Duration, label: string): number;
15
30
  //#endregion
16
- export { CloudflareWorkflowEnvelope, decodeCloudflareWorkflowValue, encodeCloudflareWorkflowValue, parseCloudflareWorkflowEnvelope };
31
+ export {};
@@ -1,25 +1,48 @@
1
+ import { durationTotal } from "../temporal.mjs";
2
+ import { parse } from "../schema/common.mjs";
3
+ import { persistedValueSchema } from "../schema/persisted-value.mjs";
4
+ import { ss } from "@temelj/standard-schema";
1
5
  import { createSuperJsonStorageCodec } from "@temelj/storage";
2
- import { z } from "zod";
3
6
  //#region src/cloudflare/codec.ts
4
- const cloudflareWorkflowCodec = createSuperJsonStorageCodec({ format: "string" });
5
- const cloudflareWorkflowEnvelopeSchema = z.object({
6
- kind: z.literal("temelj-workflow"),
7
- version: z.literal(1),
8
- workflowName: z.string().min(1),
9
- workflowVersion: z.string().min(1).optional(),
10
- input: z.string()
7
+ const cloudflareCodec = createSuperJsonStorageCodec({ format: "string" });
8
+ const nonEmptyStringSchema = ss.nonEmptyString();
9
+ const cloudflareEnvelopeSchema = ss.object({
10
+ kind: ss.literal("temelj-workflow"),
11
+ version: ss.literal(1),
12
+ workflowName: nonEmptyStringSchema,
13
+ workflowVersion: ss.optional(nonEmptyStringSchema),
14
+ input: ss.string()
11
15
  });
12
- function encodeCloudflareWorkflowValue(value) {
13
- return cloudflareWorkflowCodec.encode(value);
16
+ function encodeCloudflareValue(value) {
17
+ return cloudflareCodec.encode(parse(ss.optional(persistedValueSchema), value));
14
18
  }
15
- function decodeCloudflareWorkflowValue(value, label) {
16
- if (typeof value !== "string") throw new TypeError(`${label} must be an encoded string`);
17
- return cloudflareWorkflowCodec.decode(value);
19
+ function decodeCloudflareValue(value, label) {
20
+ const encoded = ss.safeParseSync(ss.string(), value);
21
+ if (!encoded.success) throw new TypeError(`${label} must be an encoded string`);
22
+ return parse(ss.optional(persistedValueSchema), cloudflareCodec.decode(encoded.value));
18
23
  }
19
- function parseCloudflareWorkflowEnvelope(value) {
20
- const parsed = cloudflareWorkflowEnvelopeSchema.safeParse(value);
24
+ function parseCloudflareEnvelope(value) {
25
+ const parsed = ss.safeParseSync(cloudflareEnvelopeSchema, value);
21
26
  if (!parsed.success) throw new TypeError("Cloudflare Workflow payload is not a valid Temelj workflow envelope");
22
- return parsed.data;
27
+ return parsed.value;
28
+ }
29
+ const cloudflareResultEnvelopeSchema = ss.object({
30
+ kind: ss.literal("temelj-workflow-result"),
31
+ version: ss.literal(1),
32
+ workflowName: nonEmptyStringSchema,
33
+ workflowVersion: ss.optional(nonEmptyStringSchema),
34
+ output: ss.string()
35
+ });
36
+ /** Validates the provider result and its workflow identity before decoding the output. */
37
+ function decodeCloudflareResult(state, definition) {
38
+ const envelope = parse(cloudflareResultEnvelopeSchema, JSON.parse(parse(ss.string(), state.output)));
39
+ if (envelope.workflowName !== definition.name || envelope.workflowVersion !== definition.version) throw new TypeError("Cloudflare Workflow result does not match the requested workflow name and version");
40
+ return decodeCloudflareValue(envelope.output, "Cloudflare Workflow result output");
41
+ }
42
+ function durationMilliseconds(duration, label) {
43
+ const milliseconds = durationTotal(duration);
44
+ if (!Number.isSafeInteger(milliseconds) || milliseconds < 0) throw new RangeError(`${label} must resolve to non-negative whole milliseconds`);
45
+ return milliseconds;
23
46
  }
24
47
  //#endregion
25
- export { decodeCloudflareWorkflowValue, encodeCloudflareWorkflowValue, parseCloudflareWorkflowEnvelope };
48
+ export { decodeCloudflareResult, decodeCloudflareValue, durationMilliseconds, encodeCloudflareValue, parseCloudflareEnvelope };
@@ -2,11 +2,10 @@ import { RegistryLike } from "../types/definition.mjs";
2
2
  import { Logger } from "@temelj/log";
3
3
  import { WorkflowEntrypoint } from "cloudflare:workers";
4
4
  //#region src/cloudflare/entrypoint.d.ts
5
- interface CreateCloudflareWorkflowEntrypointOptions {
5
+ export interface CreateCloudflareWorkflowEntrypointOptions {
6
6
  readonly registry: RegistryLike;
7
7
  readonly logger?: Logger;
8
8
  }
9
9
  /** Creates a Cloudflare Workflow entrypoint class that dispatches through a Temelj registry. */
10
- declare function createCloudflareWorkflowEntrypoint<TEnv = unknown>(options: CreateCloudflareWorkflowEntrypointOptions): typeof WorkflowEntrypoint<TEnv, unknown>;
11
- //#endregion
12
- export { CreateCloudflareWorkflowEntrypointOptions, createCloudflareWorkflowEntrypoint };
10
+ export declare function createCloudflareWorkflowEntrypoint<TEnv = unknown>(options: CreateCloudflareWorkflowEntrypointOptions): typeof WorkflowEntrypoint<TEnv, unknown>;
11
+ //#endregion
@@ -6,11 +6,12 @@ import { NonRetryableError } from "cloudflare:workflows";
6
6
  function createCloudflareWorkflowEntrypoint(options) {
7
7
  return class TemeljCloudflareWorkflowEntrypoint extends WorkflowEntrypoint {
8
8
  async run(event, step) {
9
- return await runCloudflareWorkflow({
9
+ const runOptions = {
10
10
  registry: options.registry,
11
- ...options.logger === void 0 ? {} : { logger: options.logger },
11
+ logger: options.logger,
12
12
  nonRetryableError: NonRetryableError
13
- }, event, step);
13
+ };
14
+ return await runCloudflareWorkflow(runOptions, event, step);
14
15
  }
15
16
  };
16
17
  }
@@ -2,12 +2,11 @@ import { RegistryLike } from "../types/definition.mjs";
2
2
  import { CloudflareNonRetryableErrorConstructor, CloudflareWorkflowEvent, CloudflareWorkflowStep } from "./types.mjs";
3
3
  import { Logger } from "@temelj/log";
4
4
  //#region src/cloudflare/execution.d.ts
5
- interface RunCloudflareWorkflowOptions {
5
+ export interface RunCloudflareWorkflowOptions {
6
6
  readonly registry: RegistryLike;
7
7
  readonly logger?: Logger;
8
8
  readonly nonRetryableError?: CloudflareNonRetryableErrorConstructor;
9
9
  }
10
10
  /** Dispatches one Cloudflare Workflow invocation to a registered Temelj implementation. */
11
- declare function runCloudflareWorkflow(options: RunCloudflareWorkflowOptions, event: CloudflareWorkflowEvent, step: CloudflareWorkflowStep): Promise<string>;
12
- //#endregion
13
- export { RunCloudflareWorkflowOptions, runCloudflareWorkflow };
11
+ export declare function runCloudflareWorkflow(options: RunCloudflareWorkflowOptions, event: CloudflareWorkflowEvent, step: CloudflareWorkflowStep): Promise<string>;
12
+ //#endregion
@@ -1,28 +1,35 @@
1
1
  import { WorkflowCapabilityError } from "../errors/capability.mjs";
2
2
  import "../errors/mod.mjs";
3
- import { parseWorkflowInput } from "../definition.mjs";
4
- import { decodeCloudflareWorkflowValue, encodeCloudflareWorkflowValue, parseCloudflareWorkflowEnvelope } from "./codec.mjs";
3
+ import { parseInput } from "../engine/serialization.mjs";
4
+ import { decodeCloudflareValue, encodeCloudflareValue, parseCloudflareEnvelope } from "./codec.mjs";
5
5
  import { resolveCloudflareWorkflowImplementation } from "./registry.mjs";
6
- import { createCloudflareWorkflowContext } from "./step.mjs";
6
+ import { createCloudflareContext } from "./step.mjs";
7
7
  //#region src/cloudflare/execution.ts
8
8
  /** Dispatches one Cloudflare Workflow invocation to a registered Temelj implementation. */
9
9
  async function runCloudflareWorkflow(options, event, step) {
10
- const envelope = parseCloudflareWorkflowEnvelope(event.payload);
10
+ const envelope = parseCloudflareEnvelope(event.payload);
11
11
  const implementation = resolveCloudflareWorkflowImplementation(options.registry, envelope.workflowName, envelope.workflowVersion);
12
12
  if (implementation.config.retry !== void 0) WorkflowCapabilityError.unsupported("Cloudflare workflow-level retry configuration");
13
- const rawInput = decodeCloudflareWorkflowValue(envelope.input, "Cloudflare Workflow input");
14
- const input = await parseWorkflowInput(implementation.definition, rawInput);
15
- const context = createCloudflareWorkflowContext({
16
- input,
13
+ const rawInput = decodeCloudflareValue(envelope.input, "Cloudflare Workflow input");
14
+ const contextOptions = {
15
+ input: await parseInput(implementation.definition, rawInput),
17
16
  step,
18
17
  runId: event.instanceId,
19
18
  workflowName: implementation.name,
20
- ...implementation.version === void 0 ? {} : { workflowVersion: implementation.version },
19
+ workflowVersion: implementation.version,
21
20
  createdAt: Temporal.Instant.fromEpochMilliseconds(event.timestamp.getTime()),
22
- ...options.logger === void 0 ? {} : { logger: options.logger },
23
- ...options.nonRetryableError === void 0 ? {} : { nonRetryableError: options.nonRetryableError }
24
- });
25
- return encodeCloudflareWorkflowValue(await implementation.handler(context));
21
+ logger: options.logger,
22
+ nonRetryableError: options.nonRetryableError
23
+ };
24
+ const context = createCloudflareContext(contextOptions);
25
+ const output = {
26
+ kind: "temelj-workflow-result",
27
+ version: 1,
28
+ workflowName: implementation.name,
29
+ output: encodeCloudflareValue(await implementation.handler(context)),
30
+ workflowVersion: implementation.version
31
+ };
32
+ return JSON.stringify(output);
26
33
  }
27
34
  //#endregion
28
35
  export { runCloudflareWorkflow };
@@ -1,19 +1,18 @@
1
1
  import { WorkflowBundle } from "../bundle.mjs";
2
- import { createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
3
2
  import { CloudflareWorkflowBinding } from "./types.mjs";
3
+ import { createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
4
4
  import { CloudflareWorkflowRuntime, CreateCloudflareWorkflowRuntimeOptions } from "./runtime.mjs";
5
5
  import { Logger } from "@temelj/log";
6
6
  //#region src/cloudflare/host.d.ts
7
- interface CreateCloudflareWorkflowHostOptions {
7
+ export interface CreateCloudflareWorkflowHostOptions {
8
8
  readonly workflows: WorkflowBundle;
9
9
  readonly logger?: Logger;
10
10
  }
11
- type CreateCloudflareWorkflowHostRuntimeOptions = Omit<CreateCloudflareWorkflowRuntimeOptions, "binding" | "registration" | "registry">;
12
- interface CloudflareWorkflowHost<TEnv> {
11
+ export type CreateCloudflareWorkflowHostRuntimeOptions = Omit<CreateCloudflareWorkflowRuntimeOptions, "binding" | "registration" | "registry">;
12
+ export interface CloudflareWorkflowHost<TEnv> {
13
13
  readonly Entrypoint: ReturnType<typeof createCloudflareWorkflowEntrypoint<TEnv>>;
14
14
  createRuntime(binding: CloudflareWorkflowBinding, options?: CreateCloudflareWorkflowHostRuntimeOptions): CloudflareWorkflowRuntime;
15
15
  }
16
16
  /** Creates a Cloudflare host backed by one immutable workflow bundle. */
17
- declare function createCloudflareWorkflowHost<TEnv = unknown>(options: CreateCloudflareWorkflowHostOptions): CloudflareWorkflowHost<TEnv>;
18
- //#endregion
19
- export { CloudflareWorkflowHost, CreateCloudflareWorkflowHostOptions, CreateCloudflareWorkflowHostRuntimeOptions, createCloudflareWorkflowHost };
17
+ export declare function createCloudflareWorkflowHost<TEnv = unknown>(options: CreateCloudflareWorkflowHostOptions): CloudflareWorkflowHost<TEnv>;
18
+ //#endregion
@@ -1,15 +1,16 @@
1
- import { createWorkflowBundleRegistry } from "../bundle.mjs";
1
+ import { Registry } from "../registry.mjs";
2
2
  import { createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
3
3
  import { createCloudflareWorkflowRuntime } from "./runtime.mjs";
4
4
  //#region src/cloudflare/host.ts
5
5
  /** Creates a Cloudflare host backed by one immutable workflow bundle. */
6
6
  function createCloudflareWorkflowHost(options) {
7
- const registry = createWorkflowBundleRegistry(options.workflows);
7
+ const registry = new Registry(options.workflows.workflows);
8
+ const entrypointOptions = {
9
+ registry,
10
+ logger: options.logger
11
+ };
8
12
  return {
9
- Entrypoint: createCloudflareWorkflowEntrypoint({
10
- registry,
11
- ...options.logger === void 0 ? {} : { logger: options.logger }
12
- }),
13
+ Entrypoint: createCloudflareWorkflowEntrypoint(entrypointOptions),
13
14
  createRuntime(binding, runtimeOptions = {}) {
14
15
  return createCloudflareWorkflowRuntime({
15
16
  ...runtimeOptions,
@@ -1,8 +1,8 @@
1
- import { CreateCloudflareWorkflowEntrypointOptions, createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
2
1
  import { CloudflareNonRetryableErrorConstructor, CloudflareWorkflowBinding, CloudflareWorkflowEvent, CloudflareWorkflowInstance, CloudflareWorkflowInstanceCreateOptions, CloudflareWorkflowInstanceStatus, CloudflareWorkflowStep, CloudflareWorkflowStepConfig, CloudflareWorkflowStepContext, CloudflareWorkflowStepEvent } from "./types.mjs";
2
+ import { CreateCloudflareWorkflowEntrypointOptions, createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
3
3
  import { RunCloudflareWorkflowOptions, runCloudflareWorkflow } from "./execution.mjs";
4
- import { CloudflareWorkflowMessagesApi, CloudflareWorkflowRuntime, CloudflareWorkflowRuntimeRunsApi, CreateCloudflareWorkflowRuntimeOptions, createCloudflareWorkflowRuntime } from "./runtime.mjs";
4
+ import { CloudflareWorkflowRuntime, CloudflareWorkflowRuntimeRunsApi, CreateCloudflareWorkflowRuntimeOptions, createCloudflareWorkflowRuntime } from "./runtime.mjs";
5
5
  import { CloudflareWorkflowHost, CreateCloudflareWorkflowHostOptions, CreateCloudflareWorkflowHostRuntimeOptions, createCloudflareWorkflowHost } from "./host.mjs";
6
- import { createCloudflareWorkflowRegistry, resolveCloudflareWorkflowImplementation } from "./registry.mjs";
6
+ import { resolveCloudflareWorkflowImplementation } from "./registry.mjs";
7
7
  import "temporal-polyfill/global";
8
- export { type CloudflareNonRetryableErrorConstructor, type CloudflareWorkflowBinding, type CloudflareWorkflowEvent, CloudflareWorkflowHost, type CloudflareWorkflowInstance, type CloudflareWorkflowInstanceCreateOptions, type CloudflareWorkflowInstanceStatus, CloudflareWorkflowMessagesApi, CloudflareWorkflowRuntime, CloudflareWorkflowRuntimeRunsApi, type CloudflareWorkflowStep, type CloudflareWorkflowStepConfig, type CloudflareWorkflowStepContext, type CloudflareWorkflowStepEvent, CreateCloudflareWorkflowEntrypointOptions, CreateCloudflareWorkflowHostOptions, CreateCloudflareWorkflowHostRuntimeOptions, CreateCloudflareWorkflowRuntimeOptions, RunCloudflareWorkflowOptions, createCloudflareWorkflowEntrypoint, createCloudflareWorkflowHost, createCloudflareWorkflowRegistry, createCloudflareWorkflowRuntime, resolveCloudflareWorkflowImplementation, runCloudflareWorkflow };
8
+ export { type CloudflareNonRetryableErrorConstructor, type CloudflareWorkflowBinding, type CloudflareWorkflowEvent, CloudflareWorkflowHost, type CloudflareWorkflowInstance, type CloudflareWorkflowInstanceCreateOptions, type CloudflareWorkflowInstanceStatus, CloudflareWorkflowRuntime, CloudflareWorkflowRuntimeRunsApi, type CloudflareWorkflowStep, type CloudflareWorkflowStepConfig, type CloudflareWorkflowStepContext, type CloudflareWorkflowStepEvent, CreateCloudflareWorkflowEntrypointOptions, CreateCloudflareWorkflowHostOptions, CreateCloudflareWorkflowHostRuntimeOptions, CreateCloudflareWorkflowRuntimeOptions, RunCloudflareWorkflowOptions, createCloudflareWorkflowEntrypoint, createCloudflareWorkflowHost, createCloudflareWorkflowRuntime, resolveCloudflareWorkflowImplementation, runCloudflareWorkflow };
@@ -1,7 +1,7 @@
1
- import { createCloudflareWorkflowRegistry, resolveCloudflareWorkflowImplementation } from "./registry.mjs";
1
+ import { resolveCloudflareWorkflowImplementation } from "./registry.mjs";
2
2
  import { runCloudflareWorkflow } from "./execution.mjs";
3
3
  import { createCloudflareWorkflowEntrypoint } from "./entrypoint.mjs";
4
4
  import { createCloudflareWorkflowRuntime } from "./runtime.mjs";
5
5
  import { createCloudflareWorkflowHost } from "./host.mjs";
6
6
  import "temporal-polyfill/global";
7
- export { createCloudflareWorkflowEntrypoint, createCloudflareWorkflowHost, createCloudflareWorkflowRegistry, createCloudflareWorkflowRuntime, resolveCloudflareWorkflowImplementation, runCloudflareWorkflow };
7
+ export { createCloudflareWorkflowEntrypoint, createCloudflareWorkflowHost, createCloudflareWorkflowRuntime, resolveCloudflareWorkflowImplementation, runCloudflareWorkflow };
@@ -1,5 +1,4 @@
1
1
  //#region src/cloudflare/name.d.ts
2
- declare function makeCloudflareWorkflowStepName(value: string): string;
3
- declare function makeCloudflareWorkflowEventType(value: string): string;
4
- //#endregion
5
- export { makeCloudflareWorkflowEventType, makeCloudflareWorkflowStepName };
2
+ export declare function makeCloudflareStepName(value: string): string;
3
+ export declare function makeCloudflareEventType(value: string): string;
4
+ //#endregion
@@ -1,9 +1,9 @@
1
1
  //#region src/cloudflare/name.ts
2
2
  const CLOUDFLARE_NAME_CHARACTERS = /[^a-zA-Z0-9_-]+/g;
3
- function makeCloudflareWorkflowStepName(value) {
3
+ function makeCloudflareStepName(value) {
4
4
  return makeCloudflareName(value, 256, "step");
5
5
  }
6
- function makeCloudflareWorkflowEventType(value) {
6
+ function makeCloudflareEventType(value) {
7
7
  return makeCloudflareName(value, 100, "event");
8
8
  }
9
9
  function makeCloudflareName(value, maximumLength, fallback) {
@@ -19,4 +19,4 @@ function fnv1a(value) {
19
19
  return hash.toString(36).padStart(13, "0");
20
20
  }
21
21
  //#endregion
22
- export { makeCloudflareWorkflowEventType, makeCloudflareWorkflowStepName };
22
+ export { makeCloudflareEventType, makeCloudflareStepName };
@@ -1,24 +1,4 @@
1
- import { RegistryLike, WorkflowDefinitionConfig, WorkflowImplementation } from "../types/definition.mjs";
2
- import { CompiledWorkflowFunction } from "../types/client.mjs";
3
- import { Registry } from "../registry.mjs";
4
- import { Schema } from "@temelj/standard-schema";
1
+ import { RegistryLike, WorkflowImplementation } from "../types/definition.mjs";
5
2
  //#region src/cloudflare/registry.d.ts
6
- interface CloudflareWorkflowImplementationLike {
7
- readonly kind: "implementation";
8
- readonly definition: {
9
- readonly kind: "definition";
10
- readonly config: WorkflowDefinitionConfig<Schema | undefined>;
11
- readonly name: string;
12
- readonly version?: string;
13
- };
14
- readonly config: WorkflowDefinitionConfig<Schema | undefined>;
15
- readonly name: string;
16
- readonly version?: string;
17
- readonly handler: (...args: never[]) => unknown;
18
- }
19
- type CloudflareWorkflowRegistryEntry = CloudflareWorkflowImplementationLike | CompiledWorkflowFunction<readonly unknown[], unknown>;
20
- /** Creates a registry shared by the Cloudflare entrypoint and runtime facade. */
21
- declare function createCloudflareWorkflowRegistry(entries?: readonly CloudflareWorkflowRegistryEntry[]): Registry;
22
- declare function resolveCloudflareWorkflowImplementation(registry: RegistryLike, name: string, version?: string): WorkflowImplementation<unknown, unknown>;
23
- //#endregion
24
- export { createCloudflareWorkflowRegistry, resolveCloudflareWorkflowImplementation };
3
+ export declare function resolveCloudflareWorkflowImplementation(registry: RegistryLike, name: string, version?: string): WorkflowImplementation<unknown, unknown>;
4
+ //#endregion