@temelj/workflow 0.0.0-alpha.1

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 (393) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +38 -0
  3. package/dist/attributes.d.mts +15 -0
  4. package/dist/attributes.mjs +30 -0
  5. package/dist/client/create.d.mts +31 -0
  6. package/dist/client/create.mjs +67 -0
  7. package/dist/client/facades.d.mts +21 -0
  8. package/dist/client/facades.mjs +142 -0
  9. package/dist/client/mod.d.mts +2 -0
  10. package/dist/client/mod.mjs +2 -0
  11. package/dist/client/run-handle.d.mts +66 -0
  12. package/dist/client/run-handle.mjs +156 -0
  13. package/dist/client/worker-options.d.mts +17 -0
  14. package/dist/client/worker-options.mjs +25 -0
  15. package/dist/collection.d.mts +15 -0
  16. package/dist/collection.mjs +33 -0
  17. package/dist/compiled-function.d.mts +27 -0
  18. package/dist/compiled-function.mjs +54 -0
  19. package/dist/definition.d.mts +37 -0
  20. package/dist/definition.mjs +83 -0
  21. package/dist/engine/child-workflow.d.mts +10 -0
  22. package/dist/engine/child-workflow.mjs +333 -0
  23. package/dist/engine/command-identity.d.mts +9 -0
  24. package/dist/engine/command-identity.mjs +14 -0
  25. package/dist/engine/create.d.mts +106 -0
  26. package/dist/engine/create.mjs +402 -0
  27. package/dist/engine/deterministic.d.mts +12 -0
  28. package/dist/engine/deterministic.mjs +102 -0
  29. package/dist/engine/durable-command.d.mts +10 -0
  30. package/dist/engine/durable-command.mjs +17 -0
  31. package/dist/engine/execution-api.d.mts +29 -0
  32. package/dist/engine/execution-api.mjs +33 -0
  33. package/dist/engine/execution-service.d.mts +41 -0
  34. package/dist/engine/execution-service.mjs +288 -0
  35. package/dist/engine/hooks.d.mts +56 -0
  36. package/dist/engine/hooks.mjs +237 -0
  37. package/dist/engine/inspection-api.d.mts +34 -0
  38. package/dist/engine/inspection-api.mjs +77 -0
  39. package/dist/engine/inspection.d.mts +18 -0
  40. package/dist/engine/inspection.mjs +149 -0
  41. package/dist/engine/lifecycle.d.mts +18 -0
  42. package/dist/engine/lifecycle.mjs +38 -0
  43. package/dist/engine/lock-replay.d.mts +30 -0
  44. package/dist/engine/lock-replay.mjs +38 -0
  45. package/dist/engine/lock.d.mts +21 -0
  46. package/dist/engine/lock.mjs +197 -0
  47. package/dist/engine/message.d.mts +47 -0
  48. package/dist/engine/message.mjs +357 -0
  49. package/dist/engine/mod.d.mts +4 -0
  50. package/dist/engine/mod.mjs +2 -0
  51. package/dist/engine/observation.d.mts +35 -0
  52. package/dist/engine/observation.mjs +201 -0
  53. package/dist/engine/recovery.d.mts +26 -0
  54. package/dist/engine/recovery.mjs +92 -0
  55. package/dist/engine/replay.d.mts +41 -0
  56. package/dist/engine/replay.mjs +122 -0
  57. package/dist/engine/retry-policy.d.mts +4 -0
  58. package/dist/engine/retry-policy.mjs +4 -0
  59. package/dist/engine/retry.d.mts +23 -0
  60. package/dist/engine/retry.mjs +75 -0
  61. package/dist/engine/run-data.d.mts +9 -0
  62. package/dist/engine/run-data.mjs +74 -0
  63. package/dist/engine/run-service.d.mts +38 -0
  64. package/dist/engine/run-service.mjs +133 -0
  65. package/dist/engine/run-utils.d.mts +16 -0
  66. package/dist/engine/run-utils.mjs +83 -0
  67. package/dist/engine/schedule.d.mts +25 -0
  68. package/dist/engine/schedule.mjs +207 -0
  69. package/dist/engine/serialization.d.mts +9 -0
  70. package/dist/engine/serialization.mjs +85 -0
  71. package/dist/engine/start-api.d.mts +30 -0
  72. package/dist/engine/start-api.mjs +98 -0
  73. package/dist/engine/state.d.mts +77 -0
  74. package/dist/engine/state.mjs +464 -0
  75. package/dist/engine/step-api.d.mts +9 -0
  76. package/dist/engine/step-api.mjs +25 -0
  77. package/dist/engine/stream.d.mts +55 -0
  78. package/dist/engine/stream.mjs +333 -0
  79. package/dist/engine/summary/active-events.d.mts +34 -0
  80. package/dist/engine/summary/active-events.mjs +69 -0
  81. package/dist/engine/summary/child-workflow-runs.d.mts +24 -0
  82. package/dist/engine/summary/child-workflow-runs.mjs +138 -0
  83. package/dist/engine/summary/child-workflow-waits.d.mts +21 -0
  84. package/dist/engine/summary/child-workflow-waits.mjs +67 -0
  85. package/dist/engine/summary/recovery-child-workflow-waits.d.mts +11 -0
  86. package/dist/engine/summary/recovery-child-workflow-waits.mjs +89 -0
  87. package/dist/engine/summary/recovery-due-runs.d.mts +16 -0
  88. package/dist/engine/summary/recovery-due-runs.mjs +52 -0
  89. package/dist/engine/summary/recovery-failed-runs.d.mts +14 -0
  90. package/dist/engine/summary/recovery-failed-runs.mjs +33 -0
  91. package/dist/engine/summary/recovery-lease-runs.d.mts +16 -0
  92. package/dist/engine/summary/recovery-lease-runs.mjs +69 -0
  93. package/dist/engine/summary/recovery-locks.d.mts +18 -0
  94. package/dist/engine/summary/recovery-locks.mjs +100 -0
  95. package/dist/engine/summary/recovery-message-waits.d.mts +11 -0
  96. package/dist/engine/summary/recovery-message-waits.mjs +74 -0
  97. package/dist/engine/summary/recovery-retry-runs.d.mts +17 -0
  98. package/dist/engine/summary/recovery-retry-runs.mjs +65 -0
  99. package/dist/engine/summary/recovery-run-timestamps.d.mts +13 -0
  100. package/dist/engine/summary/recovery-run-timestamps.mjs +18 -0
  101. package/dist/engine/summary/recovery-runs.d.mts +23 -0
  102. package/dist/engine/summary/recovery-runs.mjs +54 -0
  103. package/dist/engine/summary/recovery-schedules.d.mts +10 -0
  104. package/dist/engine/summary/recovery-schedules.mjs +46 -0
  105. package/dist/engine/summary/recovery-sleep-waits.d.mts +10 -0
  106. package/dist/engine/summary/recovery-sleep-waits.mjs +53 -0
  107. package/dist/engine/summary/recovery-waits.d.mts +21 -0
  108. package/dist/engine/summary/recovery-waits.mjs +29 -0
  109. package/dist/engine/summary/run-availability.d.mts +13 -0
  110. package/dist/engine/summary/run-availability.mjs +37 -0
  111. package/dist/engine/summary/run-cleanup.d.mts +14 -0
  112. package/dist/engine/summary/run-cleanup.mjs +44 -0
  113. package/dist/engine/summary/run-failure.d.mts +14 -0
  114. package/dist/engine/summary/run-failure.mjs +62 -0
  115. package/dist/engine/summary/run-hooks.d.mts +14 -0
  116. package/dist/engine/summary/run-hooks.mjs +63 -0
  117. package/dist/engine/summary/run-lease.d.mts +11 -0
  118. package/dist/engine/summary/run-lease.mjs +64 -0
  119. package/dist/engine/summary/run-message-waits.d.mts +15 -0
  120. package/dist/engine/summary/run-message-waits.mjs +62 -0
  121. package/dist/engine/summary/run-metrics.d.mts +31 -0
  122. package/dist/engine/summary/run-metrics.mjs +93 -0
  123. package/dist/engine/summary/run-retry.d.mts +9 -0
  124. package/dist/engine/summary/run-retry.mjs +69 -0
  125. package/dist/engine/summary/run-sleeps.d.mts +15 -0
  126. package/dist/engine/summary/run-sleeps.mjs +61 -0
  127. package/dist/engine/summary/run-state.d.mts +26 -0
  128. package/dist/engine/summary/run-state.mjs +48 -0
  129. package/dist/engine/summary/run-status.d.mts +16 -0
  130. package/dist/engine/summary/run-status.mjs +35 -0
  131. package/dist/engine/summary/run-streams.d.mts +14 -0
  132. package/dist/engine/summary/run-streams.mjs +46 -0
  133. package/dist/engine/summary/run-transition.d.mts +9 -0
  134. package/dist/engine/summary/run-transition.mjs +39 -0
  135. package/dist/engine/summary/run-workflow.d.mts +9 -0
  136. package/dist/engine/summary/run-workflow.mjs +47 -0
  137. package/dist/engine/summary/step-attempt-active-child-workflows.d.mts +13 -0
  138. package/dist/engine/summary/step-attempt-active-child-workflows.mjs +55 -0
  139. package/dist/engine/summary/step-attempt-active-fields.d.mts +23 -0
  140. package/dist/engine/summary/step-attempt-active-fields.mjs +14 -0
  141. package/dist/engine/summary/step-attempt-active-message-waits.d.mts +12 -0
  142. package/dist/engine/summary/step-attempt-active-message-waits.mjs +47 -0
  143. package/dist/engine/summary/step-attempt-active-sleeps.d.mts +19 -0
  144. package/dist/engine/summary/step-attempt-active-sleeps.mjs +44 -0
  145. package/dist/engine/summary/step-attempt-buckets.d.mts +22 -0
  146. package/dist/engine/summary/step-attempt-buckets.mjs +152 -0
  147. package/dist/engine/summary/step-attempt-failure.d.mts +12 -0
  148. package/dist/engine/summary/step-attempt-failure.mjs +61 -0
  149. package/dist/engine/summary/step-attempt-lifecycle.d.mts +13 -0
  150. package/dist/engine/summary/step-attempt-lifecycle.mjs +19 -0
  151. package/dist/engine/summary/step-attempts.d.mts +11 -0
  152. package/dist/engine/summary/step-attempts.mjs +43 -0
  153. package/dist/engine/summary.d.mts +32 -0
  154. package/dist/engine/summary.mjs +37 -0
  155. package/dist/engine/task.d.mts +6 -0
  156. package/dist/engine/task.mjs +207 -0
  157. package/dist/errors/base.d.mts +99 -0
  158. package/dist/errors/base.mjs +426 -0
  159. package/dist/errors/capability.d.mts +11 -0
  160. package/dist/errors/capability.mjs +23 -0
  161. package/dist/errors/definition.d.mts +21 -0
  162. package/dist/errors/definition.mjs +51 -0
  163. package/dist/errors/details.d.mts +13 -0
  164. package/dist/errors/details.mjs +65 -0
  165. package/dist/errors/failures.d.mts +81 -0
  166. package/dist/errors/failures.mjs +168 -0
  167. package/dist/errors/hook.d.mts +14 -0
  168. package/dist/errors/hook.mjs +30 -0
  169. package/dist/errors/implementation.d.mts +11 -0
  170. package/dist/errors/implementation.mjs +25 -0
  171. package/dist/errors/lock.d.mts +28 -0
  172. package/dist/errors/lock.mjs +70 -0
  173. package/dist/errors/message.d.mts +106 -0
  174. package/dist/errors/message.mjs +122 -0
  175. package/dist/errors/mod.d.mts +17 -0
  176. package/dist/errors/mod.mjs +17 -0
  177. package/dist/errors/record-view.d.mts +11 -0
  178. package/dist/errors/record-view.mjs +24 -0
  179. package/dist/errors/records.d.mts +7 -0
  180. package/dist/errors/records.mjs +280 -0
  181. package/dist/errors/run.d.mts +116 -0
  182. package/dist/errors/run.mjs +232 -0
  183. package/dist/errors/runtime.d.mts +12 -0
  184. package/dist/errors/runtime.mjs +24 -0
  185. package/dist/errors/schedule.d.mts +27 -0
  186. package/dist/errors/schedule.mjs +65 -0
  187. package/dist/errors/step.d.mts +76 -0
  188. package/dist/errors/step.mjs +113 -0
  189. package/dist/errors/stream.d.mts +24 -0
  190. package/dist/errors/stream.mjs +64 -0
  191. package/dist/esbuild.d.mts +7 -0
  192. package/dist/esbuild.mjs +6 -0
  193. package/dist/events/descriptors.d.mts +245 -0
  194. package/dist/events/descriptors.mjs +405 -0
  195. package/dist/events/mod.d.mts +3 -0
  196. package/dist/events/mod.mjs +2 -0
  197. package/dist/history/attempt-key.d.mts +6 -0
  198. package/dist/history/attempt-key.mjs +7 -0
  199. package/dist/history/mod.d.mts +71 -0
  200. package/dist/history/mod.mjs +195 -0
  201. package/dist/history/projection.d.mts +8 -0
  202. package/dist/history/projection.mjs +259 -0
  203. package/dist/history/replay-projection.d.mts +88 -0
  204. package/dist/history/replay-projection.mjs +369 -0
  205. package/dist/history/sequencer.d.mts +16 -0
  206. package/dist/history/sequencer.mjs +78 -0
  207. package/dist/history/step-attempts.d.mts +9 -0
  208. package/dist/history/step-attempts.mjs +50 -0
  209. package/dist/history/timeline.d.mts +16 -0
  210. package/dist/history/timeline.mjs +272 -0
  211. package/dist/history/validator.d.mts +9 -0
  212. package/dist/history/validator.mjs +110 -0
  213. package/dist/inspection/mod.d.mts +5 -0
  214. package/dist/inspection/mod.mjs +3 -0
  215. package/dist/message-options.d.mts +8 -0
  216. package/dist/message-options.mjs +25 -0
  217. package/dist/mod.d.mts +52 -0
  218. package/dist/mod.mjs +26 -0
  219. package/dist/otel/support.d.mts +18 -0
  220. package/dist/otel/support.mjs +102 -0
  221. package/dist/otel.d.mts +30 -0
  222. package/dist/otel.mjs +588 -0
  223. package/dist/pagination.d.mts +25 -0
  224. package/dist/pagination.mjs +73 -0
  225. package/dist/registry.d.mts +20 -0
  226. package/dist/registry.mjs +48 -0
  227. package/dist/rolldown.d.mts +7 -0
  228. package/dist/rolldown.mjs +6 -0
  229. package/dist/rollup.d.mts +7 -0
  230. package/dist/rollup.mjs +6 -0
  231. package/dist/rspack.d.mts +7 -0
  232. package/dist/rspack.mjs +6 -0
  233. package/dist/runtime.d.mts +34 -0
  234. package/dist/runtime.mjs +194 -0
  235. package/dist/step-definition.d.mts +10 -0
  236. package/dist/step-definition.mjs +15 -0
  237. package/dist/store/append-projection.d.mts +15 -0
  238. package/dist/store/append-projection.mjs +26 -0
  239. package/dist/store/capabilities.d.mts +14 -0
  240. package/dist/store/capabilities.mjs +42 -0
  241. package/dist/store/cleanup.d.mts +18 -0
  242. package/dist/store/cleanup.mjs +338 -0
  243. package/dist/store/compaction.d.mts +5 -0
  244. package/dist/store/compaction.mjs +8 -0
  245. package/dist/store/create.d.mts +52 -0
  246. package/dist/store/create.mjs +159 -0
  247. package/dist/store/event-append-project.d.mts +15 -0
  248. package/dist/store/event-append-project.mjs +77 -0
  249. package/dist/store/event-append.d.mts +37 -0
  250. package/dist/store/event-append.mjs +80 -0
  251. package/dist/store/event-history.d.mts +22 -0
  252. package/dist/store/event-history.mjs +75 -0
  253. package/dist/store/event.d.mts +10 -0
  254. package/dist/store/event.mjs +28 -0
  255. package/dist/store/idempotency.d.mts +10 -0
  256. package/dist/store/idempotency.mjs +167 -0
  257. package/dist/store/instrumentation.d.mts +7 -0
  258. package/dist/store/instrumentation.mjs +123 -0
  259. package/dist/store/lock.d.mts +8 -0
  260. package/dist/store/lock.mjs +28 -0
  261. package/dist/store/materialization.d.mts +30 -0
  262. package/dist/store/materialization.mjs +127 -0
  263. package/dist/store/message-index.d.mts +21 -0
  264. package/dist/store/message-index.mjs +121 -0
  265. package/dist/store/mod.d.mts +5 -0
  266. package/dist/store/mod.mjs +4 -0
  267. package/dist/store/query.d.mts +24 -0
  268. package/dist/store/query.mjs +82 -0
  269. package/dist/store/revision.d.mts +4 -0
  270. package/dist/store/revision.mjs +7 -0
  271. package/dist/store/run.d.mts +49 -0
  272. package/dist/store/run.mjs +236 -0
  273. package/dist/store/schedule.d.mts +12 -0
  274. package/dist/store/schedule.mjs +41 -0
  275. package/dist/store/schema.d.mts +14 -0
  276. package/dist/store/schema.mjs +17 -0
  277. package/dist/store/step-attempt.d.mts +14 -0
  278. package/dist/store/step-attempt.mjs +23 -0
  279. package/dist/store/storage-value.d.mts +5 -0
  280. package/dist/store/storage-value.mjs +6 -0
  281. package/dist/store/validation.d.mts +35 -0
  282. package/dist/store/validation.mjs +77 -0
  283. package/dist/store-keys.d.mts +49 -0
  284. package/dist/store-keys.mjs +63 -0
  285. package/dist/telemetry.d.mts +132 -0
  286. package/dist/telemetry.mjs +172 -0
  287. package/dist/temporal.d.mts +23 -0
  288. package/dist/temporal.mjs +59 -0
  289. package/dist/timer.d.mts +12 -0
  290. package/dist/timer.mjs +28 -0
  291. package/dist/types/cleanup.d.mts +112 -0
  292. package/dist/types/cleanup.mjs +22 -0
  293. package/dist/types/client.d.mts +270 -0
  294. package/dist/types/client.mjs +1 -0
  295. package/dist/types/common.d.mts +19 -0
  296. package/dist/types/common.mjs +15 -0
  297. package/dist/types/definition.d.mts +92 -0
  298. package/dist/types/definition.mjs +1 -0
  299. package/dist/types/engine-options.d.mts +76 -0
  300. package/dist/types/engine-options.mjs +1 -0
  301. package/dist/types/engine.d.mts +309 -0
  302. package/dist/types/engine.mjs +1 -0
  303. package/dist/types/error-code.d.mts +256 -0
  304. package/dist/types/error-code.mjs +131 -0
  305. package/dist/types/error.d.mts +236 -0
  306. package/dist/types/error.mjs +48 -0
  307. package/dist/types/events.d.mts +2869 -0
  308. package/dist/types/events.mjs +283 -0
  309. package/dist/types/hook.d.mts +149 -0
  310. package/dist/types/hook.mjs +66 -0
  311. package/dist/types/lock.d.mts +63 -0
  312. package/dist/types/lock.mjs +18 -0
  313. package/dist/types/message-id.d.mts +7 -0
  314. package/dist/types/message-id.mjs +5 -0
  315. package/dist/types/message.d.mts +87 -0
  316. package/dist/types/message.mjs +1 -0
  317. package/dist/types/observation.d.mts +146 -0
  318. package/dist/types/observation.mjs +1 -0
  319. package/dist/types/pagination.d.mts +32 -0
  320. package/dist/types/pagination.mjs +13 -0
  321. package/dist/types/result.d.mts +62 -0
  322. package/dist/types/result.mjs +1 -0
  323. package/dist/types/retry.d.mts +48 -0
  324. package/dist/types/retry.mjs +1 -0
  325. package/dist/types/run-id.d.mts +7 -0
  326. package/dist/types/run-id.mjs +5 -0
  327. package/dist/types/run-list.d.mts +43 -0
  328. package/dist/types/run-list.mjs +1 -0
  329. package/dist/types/run-options.d.mts +86 -0
  330. package/dist/types/run-options.mjs +1 -0
  331. package/dist/types/run.d.mts +355 -0
  332. package/dist/types/run.mjs +207 -0
  333. package/dist/types/runtime.d.mts +143 -0
  334. package/dist/types/runtime.mjs +21 -0
  335. package/dist/types/schedule.d.mts +127 -0
  336. package/dist/types/schedule.mjs +48 -0
  337. package/dist/types/step-attempts.d.mts +326 -0
  338. package/dist/types/step-attempts.mjs +43 -0
  339. package/dist/types/step-id.d.mts +7 -0
  340. package/dist/types/step-id.mjs +5 -0
  341. package/dist/types/step.d.mts +183 -0
  342. package/dist/types/step.mjs +5 -0
  343. package/dist/types/store.d.mts +254 -0
  344. package/dist/types/store.mjs +1 -0
  345. package/dist/types/stream-id.d.mts +7 -0
  346. package/dist/types/stream-id.mjs +5 -0
  347. package/dist/types/stream.d.mts +126 -0
  348. package/dist/types/stream.mjs +1 -0
  349. package/dist/types/summary.d.mts +318 -0
  350. package/dist/types/summary.mjs +1 -0
  351. package/dist/types/telemetry.d.mts +74 -0
  352. package/dist/types/telemetry.mjs +9 -0
  353. package/dist/types/timeline.d.mts +237 -0
  354. package/dist/types/timeline.mjs +1 -0
  355. package/dist/types/vite.d.mts +65 -0
  356. package/dist/types/vite.mjs +1 -0
  357. package/dist/types/worker-id.d.mts +7 -0
  358. package/dist/types/worker-id.mjs +5 -0
  359. package/dist/types/worker.d.mts +94 -0
  360. package/dist/types/worker.mjs +1 -0
  361. package/dist/utility.d.mts +49 -0
  362. package/dist/utility.mjs +122 -0
  363. package/dist/vite/ast.d.mts +23 -0
  364. package/dist/vite/ast.mjs +73 -0
  365. package/dist/vite/error.d.mts +19 -0
  366. package/dist/vite/error.mjs +47 -0
  367. package/dist/vite/generated-name.d.mts +7 -0
  368. package/dist/vite/generated-name.mjs +9 -0
  369. package/dist/vite/manifest.d.mts +7 -0
  370. package/dist/vite/manifest.mjs +106 -0
  371. package/dist/vite/plugin.d.mts +7 -0
  372. package/dist/vite/plugin.mjs +190 -0
  373. package/dist/vite/safety.d.mts +12 -0
  374. package/dist/vite/safety.mjs +96 -0
  375. package/dist/vite/source-edit.d.mts +12 -0
  376. package/dist/vite/source-edit.mjs +44 -0
  377. package/dist/vite/source-map.d.mts +11 -0
  378. package/dist/vite/source-map.mjs +53 -0
  379. package/dist/vite/source.d.mts +7 -0
  380. package/dist/vite/source.mjs +14 -0
  381. package/dist/vite/transform.d.mts +7 -0
  382. package/dist/vite/transform.mjs +405 -0
  383. package/dist/vite.d.mts +6 -0
  384. package/dist/vite.mjs +5 -0
  385. package/dist/webhook.d.mts +16 -0
  386. package/dist/webhook.mjs +17 -0
  387. package/dist/webpack.d.mts +7 -0
  388. package/dist/webpack.mjs +6 -0
  389. package/dist/worker/error.d.mts +11 -0
  390. package/dist/worker/error.mjs +40 -0
  391. package/dist/worker.d.mts +18 -0
  392. package/dist/worker.mjs +427 -0
  393. package/package.json +144 -0
@@ -0,0 +1,207 @@
1
+ import { WorkflowDurationError, WorkflowNonRetryableError } from "../errors/failures.mjs";
2
+ import { isAbortError, safeDuration } from "../utility.mjs";
3
+ import { WorkflowStepExecutionError, WorkflowStepRetryLimitError, WorkflowStepTimeoutError } from "../errors/step.mjs";
4
+ import "../errors/mod.mjs";
5
+ import { WORKFLOW_ATTRIBUTES, withStepTelemetry } from "../telemetry.mjs";
6
+ import { serializeError, toOptionalPersistedValue } from "./serialization.mjs";
7
+ import { nextRetryAt, resolveWorkflowRetryConfig, retryClassificationRetryAt } from "./retry.mjs";
8
+ import { WorkflowSuspended } from "./state.mjs";
9
+ import { resolveWorkflowCommandIdentityFromCandidates } from "./command-identity.mjs";
10
+ import { appendDurableStepStartedEvent, appendDurableStepTerminalEvent } from "./durable-command.mjs";
11
+ import { isRunStepTerminalForStartedAttempt, recordedStepCompletionTimestamp, requireRecordedDurableStepStarted, requireRunStepReplayTimeoutMatches, sleepUntil } from "./replay.mjs";
12
+ //#region src/engine/task.ts
13
+ function createWorkflowStepTaskApi(environment, executionSignal) {
14
+ const { runId, history, now, limits, executionOwner, telemetry } = environment;
15
+ const run = async (config, callback) => {
16
+ const identity = resolveWorkflowCommandIdentityFromCandidates(history, "run", [config.commandId, config.name], "Workflow step name or commandId");
17
+ const timeout = config.timeout === void 0 ? void 0 : (() => {
18
+ const value = safeDuration(config.timeout.total({ unit: "millisecond" }), "Workflow step timeout");
19
+ if (value <= 0) WorkflowDurationError.stepTimeoutPositive();
20
+ return value;
21
+ })();
22
+ const started = history.startedStep(identity.id);
23
+ const completed = history.completedStep(identity.id);
24
+ if (completed !== void 0 && (started === void 0 || isRunStepTerminalForStartedAttempt(completed, started))) {
25
+ requireRecordedDurableStepStarted(identity, history.hasStartedEventBeforeTerminalEvent(completed));
26
+ requireRunStepReplayTimeoutMatches(identity, started, config);
27
+ recordedStepCompletionTimestamp(identity, completed.timestamp);
28
+ return completed.result;
29
+ }
30
+ if (history.unstartedFailedStep(identity.id) !== void 0) requireRecordedDurableStepStarted(identity, false);
31
+ const retry = resolveWorkflowRetryConfig(config.retry, {
32
+ maximumAttempts: 10,
33
+ backoffCoefficient: 2
34
+ }, "Workflow step retry");
35
+ let attempt = history.nextStepAttempt(identity.id);
36
+ while (retry.maximumAttempts === 0 || attempt <= retry.maximumAttempts) {
37
+ const startedAt = now();
38
+ const timestamp = startedAt;
39
+ const timeoutAt = timeout === void 0 ? void 0 : startedAt.add(Temporal.Duration.from({ milliseconds: timeout }));
40
+ await appendDurableStepStartedEvent(environment, {
41
+ kind: "step_started",
42
+ timestamp,
43
+ stepId: identity.id,
44
+ stepName: identity.name,
45
+ count: identity.count,
46
+ attempt,
47
+ ...timeoutAt === void 0 ? {} : { timeoutAt }
48
+ });
49
+ try {
50
+ const telemetryContext = {
51
+ run: executionOwner,
52
+ step: {
53
+ id: identity.id,
54
+ name: identity.name,
55
+ count: identity.count,
56
+ kind: "run"
57
+ },
58
+ attempt,
59
+ retry,
60
+ ...timeoutAt === void 0 ? {} : { timeoutAt }
61
+ };
62
+ const result = await withStepTelemetry(telemetry, telemetryContext, async () => {
63
+ return await runStepCallbackWithTimeout(callback, createStepContext(identity, attempt, retry, executionSignal, environment.logger.child({
64
+ [WORKFLOW_ATTRIBUTES.stepId]: identity.id,
65
+ [WORKFLOW_ATTRIBUTES.stepName]: identity.name,
66
+ [WORKFLOW_ATTRIBUTES.stepKind]: identity.kind,
67
+ [WORKFLOW_ATTRIBUTES.stepAttempt]: attempt,
68
+ [WORKFLOW_ATTRIBUTES.replay]: false
69
+ })), {
70
+ runId,
71
+ stepId: identity.id,
72
+ stepName: identity.name,
73
+ attempt,
74
+ timeoutAt,
75
+ timeout
76
+ });
77
+ });
78
+ try {
79
+ telemetry?.recordStepExecution?.(telemetryContext);
80
+ } catch {}
81
+ const persistedResult = toOptionalPersistedValue(result, "step result", limits);
82
+ await appendDurableStepTerminalEvent(environment, {
83
+ kind: "step_completed",
84
+ timestamp: now(),
85
+ stepId: identity.id,
86
+ stepName: identity.name,
87
+ attempt,
88
+ ...persistedResult === void 0 ? {} : { result: persistedResult }
89
+ });
90
+ return result;
91
+ } catch (error) {
92
+ if (executionSignal.aborted && isAbortError(error)) throw error;
93
+ try {
94
+ telemetry?.recordStepExecution?.({
95
+ run: executionOwner,
96
+ step: {
97
+ id: identity.id,
98
+ name: identity.name,
99
+ count: identity.count,
100
+ kind: "run"
101
+ },
102
+ attempt,
103
+ retry,
104
+ ...timeoutAt === void 0 ? {} : { timeoutAt },
105
+ error
106
+ });
107
+ } catch {}
108
+ const failedAt = now();
109
+ await appendDurableStepTerminalEvent(environment, {
110
+ kind: "step_failed",
111
+ timestamp: failedAt,
112
+ stepId: identity.id,
113
+ stepName: identity.name,
114
+ attempt,
115
+ error: serializeError(error)
116
+ });
117
+ if (error instanceof WorkflowNonRetryableError || retry.maximumAttempts !== 0 && attempt >= retry.maximumAttempts) WorkflowStepExecutionError.failed({
118
+ stepId: identity.id,
119
+ stepName: identity.name,
120
+ attempt,
121
+ cause: error
122
+ });
123
+ const retryAt = retryClassificationRetryAt(failedAt, error, "Workflow step retry classification") ?? nextRetryAt(failedAt, retry, attempt, "Workflow step retry delay");
124
+ if (retryAt !== void 0) WorkflowSuspended.forStepRetry(retryAt, identity, attempt + 1);
125
+ attempt++;
126
+ }
127
+ }
128
+ WorkflowStepExecutionError.failed({
129
+ stepId: identity.id,
130
+ stepName: identity.name,
131
+ attempt,
132
+ cause: WorkflowStepRetryLimitError.create({
133
+ stepId: identity.id,
134
+ stepName: identity.name,
135
+ attempt
136
+ })
137
+ });
138
+ };
139
+ return {
140
+ run,
141
+ async call(definition, ...args) {
142
+ return await run(definition.config, async (context) => {
143
+ return await definition.handler(...args, context);
144
+ });
145
+ },
146
+ async sleep(commandId, duration) {
147
+ const resolvedDuration = duration.total({ unit: "millisecond" });
148
+ safeDuration(resolvedDuration, "Workflow sleep duration");
149
+ await sleepUntil(environment, commandId, now().add(Temporal.Duration.from({ milliseconds: resolvedDuration })), { duration });
150
+ },
151
+ async sleepUntil(commandId, timestamp) {
152
+ await sleepUntil(environment, commandId, timestamp, {});
153
+ }
154
+ };
155
+ }
156
+ function createStepContext(identity, attempt, config, signal, log) {
157
+ return new WorkflowStepContext(identity, attempt, config, signal, log);
158
+ }
159
+ var WorkflowStepContext = class {
160
+ step;
161
+ attempt;
162
+ config;
163
+ signal;
164
+ log;
165
+ constructor(step, attempt, config, signal, log) {
166
+ this.step = step;
167
+ this.attempt = attempt;
168
+ this.config = config;
169
+ this.signal = signal;
170
+ this.log = log;
171
+ }
172
+ };
173
+ async function runStepCallbackWithTimeout(callback, context, timeout) {
174
+ if (timeout.timeoutAt === void 0 || timeout.timeout === void 0) return await callback(context);
175
+ const timeoutAt = timeout.timeoutAt;
176
+ const timeoutAbort = new AbortController();
177
+ const abortFromParent = () => {
178
+ timeoutAbort.abort(context.signal.reason);
179
+ };
180
+ if (context.signal.aborted) timeoutAbort.abort(context.signal.reason);
181
+ else context.signal.addEventListener("abort", abortFromParent, { once: true });
182
+ let timeoutHandle;
183
+ const timeoutPromise = new Promise((_resolve, reject) => {
184
+ timeoutHandle = setTimeout(() => {
185
+ const error = WorkflowStepTimeoutError.create({
186
+ runId: timeout.runId,
187
+ stepId: timeout.stepId,
188
+ stepName: timeout.stepName,
189
+ attempt: timeout.attempt,
190
+ timeoutAt
191
+ });
192
+ timeoutAbort.abort(error);
193
+ reject(error);
194
+ }, timeout.timeout);
195
+ });
196
+ try {
197
+ return await Promise.race([callback({
198
+ ...context,
199
+ signal: timeoutAbort.signal
200
+ }), timeoutPromise]);
201
+ } finally {
202
+ if (timeoutHandle !== void 0) clearTimeout(timeoutHandle);
203
+ context.signal.removeEventListener("abort", abortFromParent);
204
+ }
205
+ }
206
+ //#endregion
207
+ export { createWorkflowStepTaskApi };
@@ -0,0 +1,99 @@
1
+ import { WorkflowErrorCode } from "../types/error-code.mjs";
2
+ import { RunId } from "../types/run-id.mjs";
3
+ import { StepId } from "../types/step-id.mjs";
4
+ import "../types/step.mjs";
5
+ import { WorkflowTerminalRunStatus } from "../types/run.mjs";
6
+ import { WorkflowErrorDetails, WorkflowErrorOptions } from "../types/error.mjs";
7
+ import { EventKind } from "../types/events.mjs";
8
+ //#region src/errors/base.d.ts
9
+ /** Base error for workflow failures that carry optional structured details. */
10
+ declare class WorkflowError extends Error {
11
+ readonly code: WorkflowErrorCode;
12
+ readonly cause: unknown;
13
+ readonly details: WorkflowErrorDetails | undefined;
14
+ constructor(message: string, options?: WorkflowErrorOptions, context?: Function);
15
+ static fromMessage(this: void, message: string, options?: WorkflowErrorOptions): WorkflowError;
16
+ }
17
+ /** Error thrown for options failures. */
18
+ declare class WorkflowOptionsError extends WorkflowError {
19
+ constructor(message: string, context?: Function, options?: WorkflowErrorOptions);
20
+ static create(this: void, message: string): WorkflowOptionsError;
21
+ static object(this: void, label: string): never;
22
+ static array(this: void, label: string): never;
23
+ static function(this: void, label: string): never;
24
+ static string(this: void, label: string): never;
25
+ static nonEmpty(this: void, label: string): never;
26
+ static nonBlank(this: void, label: string): never;
27
+ static number(this: void, label: string): never;
28
+ static boolean(this: void, label: string): never;
29
+ static required(this: void, label: string): never;
30
+ static positiveSafeInteger(this: void, label: string): never;
31
+ static nonNegativeSafeInteger(this: void, label: string): never;
32
+ static positiveDuration(this: void, label: string): never;
33
+ static nonNegativeDuration(this: void, label: string): never;
34
+ static safeDuration(this: void, label: string): never;
35
+ static positiveSafeIntegerDuration(this: void, label: string): never;
36
+ static temporalInstant(this: void, label: string): never;
37
+ static abortSignal(this: void, label: string): never;
38
+ static childCancellationPolicy(this: void): never;
39
+ static cursorInvalid(this: void, label: string): never;
40
+ static retryMaximumIntervalTooSmall(this: void, label: string): never;
41
+ static retryableErrorDelayConflict(this: void): never;
42
+ static engineStoreAndStorageConflict(this: void): never;
43
+ static missingImplementationRetryAttemptPositiveSafeInteger(this: void): never;
44
+ }
45
+ /** Error thrown for state failures. */
46
+ declare class WorkflowStateError extends WorkflowError {
47
+ constructor(message: string, context?: Function, options?: WorkflowErrorOptions);
48
+ static create(this: void, message: string): WorkflowStateError;
49
+ static runNamespaceMismatch(this: void, actual: string, expected: string): never;
50
+ static runIdMismatch(this: void, actual: string, expected: string): never;
51
+ static runIdAlreadyExists(this: void, runId: RunId): never;
52
+ static eventHistoryAlreadyExists(this: void, runId: RunId): never;
53
+ static eventNotTerminalStep(this: void, kind: EventKind): never;
54
+ static unsupportedRecordedStepEventType(this: void, kind: EventKind): never;
55
+ static stepAttemptFieldMismatch(this: void, stepId: StepId, field: string): never;
56
+ static failedRunMissingError(this: void, runId: RunId): never;
57
+ static runNotClaimable(this: void, runId: RunId): never;
58
+ static workerStoppedBeforeRun(this: void, runId: RunId): never;
59
+ static storeRunIdInvalid(this: void): never;
60
+ static invalid(this: void, label: string, issues: string): never;
61
+ static idempotencyKeyClaimedWithoutRun(this: void, runId: RunId): never;
62
+ static runMissingIdempotencyKey(this: void, runId: RunId): never;
63
+ static failedRunMetadataUpdate(this: void, runId: RunId): never;
64
+ static failedRunAttributesUpdate(this: void, runId: RunId): never;
65
+ static runCannotBeRescheduled(this: void, runId: RunId): never;
66
+ static failedRunReschedule(this: void, runId: RunId): never;
67
+ static staleLeaseReleaseRequiresRunning(this: void, runId: RunId): never;
68
+ static runLeaseStillActive(this: void, runId: RunId): never;
69
+ static failedStaleRunLeaseRelease(this: void, runId: RunId): never;
70
+ static runRetryRequiresFailed(this: void, runId: RunId): never;
71
+ static runRetryRequiresForceAfterPermanentFailure(this: void, runId: RunId): never;
72
+ static failedRunRetryRequiresForce(this: void, runId: RunId): never;
73
+ static failedRunRetry(this: void, runId: RunId): never;
74
+ static failedPermanentRunFailure(this: void, runId: RunId): never;
75
+ static permanentFailureInvalidStatus(this: void, runId: RunId, status: WorkflowTerminalRunStatus): never;
76
+ static failedMessageAppend(this: void, runId: RunId): never;
77
+ static cleanupSelectedNonTerminalRun(this: void, runId: RunId): never;
78
+ static cleanupRunMissingFinishedAt(this: void, runId: RunId): never;
79
+ static failedWorkflowEventAppend(this: void, runId: RunId, attempts: number): never;
80
+ static failedStepAttemptMaterialization(this: void, runId: RunId, attempts: number): never;
81
+ static appendProjectionPipelineMissing(this: void): never;
82
+ }
83
+ /** Error thrown for run failures. */
84
+ declare class WorkflowRunError extends WorkflowError {
85
+ constructor(message: string, options: WorkflowErrorOptions, context?: Function);
86
+ static fromMessage(this: void, message: string, options: WorkflowErrorOptions): WorkflowRunError;
87
+ }
88
+ /** Error thrown for step failures. */
89
+ declare class WorkflowStepError extends WorkflowError {
90
+ constructor(message: string, options: WorkflowErrorOptions, context?: Function);
91
+ static fromMessage(this: void, message: string, options: WorkflowErrorOptions): WorkflowStepError;
92
+ }
93
+ /** Error thrown for message failures. */
94
+ declare class WorkflowMessageError extends WorkflowError {
95
+ constructor(message: string, options: WorkflowErrorOptions, context?: Function);
96
+ static fromMessage(this: void, message: string, options: WorkflowErrorOptions): WorkflowMessageError;
97
+ }
98
+ //#endregion
99
+ export { WorkflowError, type WorkflowErrorOptions, WorkflowMessageError, WorkflowOptionsError, WorkflowRunError, WorkflowStateError, WorkflowStepError };