@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,426 @@
1
+ import { WorkflowErrorCode } from "../types/error-code.mjs";
2
+ //#region src/errors/base.ts
3
+ /** Base error for workflow failures that carry optional structured details. */
4
+ var WorkflowError = class WorkflowError extends Error {
5
+ code;
6
+ cause;
7
+ details;
8
+ constructor(message, options = {}, context) {
9
+ super(message);
10
+ this.name = "WorkflowError";
11
+ this.code = options.code ?? WorkflowErrorCode.ERROR;
12
+ this.cause = options.cause;
13
+ this.details = options.details;
14
+ if (Error.captureStackTrace !== void 0) Error.captureStackTrace(this, context ?? this.constructor);
15
+ }
16
+ static fromMessage(message, options = {}) {
17
+ return new WorkflowError(message, options, WorkflowError.fromMessage);
18
+ }
19
+ };
20
+ /** Error thrown for options failures. */
21
+ var WorkflowOptionsError = class WorkflowOptionsError extends WorkflowError {
22
+ constructor(message, context, options = {}) {
23
+ super(message, {
24
+ ...options,
25
+ code: options.code ?? WorkflowErrorCode.OPTIONS_INVALID
26
+ }, context);
27
+ this.name = "WorkflowOptionsError";
28
+ }
29
+ static create(message) {
30
+ return new WorkflowOptionsError(message, WorkflowOptionsError.create);
31
+ }
32
+ static object(label) {
33
+ throw new WorkflowOptionsError(`${label} must be an object`, WorkflowOptionsError.object, {
34
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_OBJECT,
35
+ details: { label }
36
+ });
37
+ }
38
+ static array(label) {
39
+ throw new WorkflowOptionsError(`${label} must be an array`, WorkflowOptionsError.array, {
40
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_ARRAY,
41
+ details: { label }
42
+ });
43
+ }
44
+ static function(label) {
45
+ throw new WorkflowOptionsError(`${label} must be a function`, WorkflowOptionsError.function, {
46
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_FUNCTION,
47
+ details: { label }
48
+ });
49
+ }
50
+ static string(label) {
51
+ throw new WorkflowOptionsError(`${label} must be a string`, WorkflowOptionsError.string, {
52
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_STRING,
53
+ details: { label }
54
+ });
55
+ }
56
+ static nonEmpty(label) {
57
+ throw new WorkflowOptionsError(`${label} must not be empty`, WorkflowOptionsError.nonEmpty, {
58
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_NON_EMPTY,
59
+ details: { label }
60
+ });
61
+ }
62
+ static nonBlank(label) {
63
+ throw new WorkflowOptionsError(`${label} must not be blank`, WorkflowOptionsError.nonBlank, {
64
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_NON_BLANK,
65
+ details: { label }
66
+ });
67
+ }
68
+ static number(label) {
69
+ throw new WorkflowOptionsError(`${label} must be a number`, WorkflowOptionsError.number, {
70
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_NUMBER,
71
+ details: { label }
72
+ });
73
+ }
74
+ static boolean(label) {
75
+ throw new WorkflowOptionsError(`${label} must be a boolean`, WorkflowOptionsError.boolean, {
76
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_BOOLEAN,
77
+ details: { label }
78
+ });
79
+ }
80
+ static required(label) {
81
+ throw new WorkflowOptionsError(`${label} is required`, WorkflowOptionsError.required, {
82
+ code: WorkflowErrorCode.OPTIONS_REQUIRED,
83
+ details: { label }
84
+ });
85
+ }
86
+ static positiveSafeInteger(label) {
87
+ throw new WorkflowOptionsError(`${label} must be a positive safe integer`, WorkflowOptionsError.positiveSafeInteger, {
88
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_POSITIVE_SAFE_INTEGER,
89
+ details: { label }
90
+ });
91
+ }
92
+ static nonNegativeSafeInteger(label) {
93
+ throw new WorkflowOptionsError(`${label} must be a non-negative safe integer`, WorkflowOptionsError.nonNegativeSafeInteger, {
94
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_NON_NEGATIVE_SAFE_INTEGER,
95
+ details: { label }
96
+ });
97
+ }
98
+ static positiveDuration(label) {
99
+ throw new WorkflowOptionsError(`${label} must be greater than zero`, WorkflowOptionsError.positiveDuration, {
100
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_POSITIVE_DURATION,
101
+ details: { label }
102
+ });
103
+ }
104
+ static nonNegativeDuration(label) {
105
+ throw new WorkflowOptionsError(`${label} must be non-negative`, WorkflowOptionsError.nonNegativeDuration, {
106
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_NON_NEGATIVE_DURATION,
107
+ details: { label }
108
+ });
109
+ }
110
+ static safeDuration(label) {
111
+ throw new WorkflowOptionsError(`${label} must be a timer-safe duration`, WorkflowOptionsError.safeDuration, {
112
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_TIMER_SAFE_DURATION,
113
+ details: { label }
114
+ });
115
+ }
116
+ static positiveSafeIntegerDuration(label) {
117
+ throw new WorkflowOptionsError(`${label} must be a positive safe integer duration`, WorkflowOptionsError.positiveSafeIntegerDuration, {
118
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_POSITIVE_SAFE_INTEGER_DURATION,
119
+ details: { label }
120
+ });
121
+ }
122
+ static temporalInstant(label) {
123
+ throw new WorkflowOptionsError(`${label} must be a Temporal.Instant`, WorkflowOptionsError.temporalInstant, {
124
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_TEMPORAL_INSTANT,
125
+ details: { label }
126
+ });
127
+ }
128
+ static abortSignal(label) {
129
+ throw new WorkflowOptionsError(`${label} must be an AbortSignal`, WorkflowOptionsError.abortSignal, {
130
+ code: WorkflowErrorCode.OPTIONS_EXPECTED_ABORT_SIGNAL,
131
+ details: { label }
132
+ });
133
+ }
134
+ static childCancellationPolicy() {
135
+ throw new WorkflowOptionsError("Workflow child cancellation policy must be cascade or detach", WorkflowOptionsError.childCancellationPolicy, { code: WorkflowErrorCode.OPTIONS_CHILD_CANCELLATION_POLICY_INVALID });
136
+ }
137
+ static cursorInvalid(label) {
138
+ throw new WorkflowOptionsError(`${label} cursor is invalid`, WorkflowOptionsError.cursorInvalid, {
139
+ code: WorkflowErrorCode.OPTIONS_CURSOR_INVALID,
140
+ details: { label }
141
+ });
142
+ }
143
+ static retryMaximumIntervalTooSmall(label) {
144
+ throw new WorkflowOptionsError(`${label} maximumInterval must be at least initialInterval`, WorkflowOptionsError.retryMaximumIntervalTooSmall, {
145
+ code: WorkflowErrorCode.OPTIONS_RETRY_MAXIMUM_INTERVAL_TOO_SMALL,
146
+ details: { label }
147
+ });
148
+ }
149
+ static retryableErrorDelayConflict() {
150
+ throw new WorkflowOptionsError("Workflow retryable error cannot include both retryAt and retryDelay", WorkflowOptionsError.retryableErrorDelayConflict, { code: WorkflowErrorCode.OPTIONS_RETRYABLE_ERROR_DELAY_CONFLICT });
151
+ }
152
+ static engineStoreAndStorageConflict() {
153
+ throw new WorkflowOptionsError("Workflow engine options cannot include both store and storage", WorkflowOptionsError.engineStoreAndStorageConflict, { code: WorkflowErrorCode.OPTIONS_ENGINE_STORE_STORAGE_CONFLICT });
154
+ }
155
+ static missingImplementationRetryAttemptPositiveSafeInteger() {
156
+ throw new WorkflowOptionsError("Workflow missing implementation retry delay attempt must be a positive safe integer", WorkflowOptionsError.missingImplementationRetryAttemptPositiveSafeInteger, { code: WorkflowErrorCode.OPTIONS_MISSING_IMPLEMENTATION_RETRY_ATTEMPT_INVALID });
157
+ }
158
+ };
159
+ /** Error thrown for state failures. */
160
+ var WorkflowStateError = class WorkflowStateError extends WorkflowError {
161
+ constructor(message, context, options = {}) {
162
+ super(message, {
163
+ ...options,
164
+ code: options.code ?? WorkflowErrorCode.STATE_INVALID
165
+ }, context);
166
+ this.name = "WorkflowStateError";
167
+ if (Error.captureStackTrace) Error.captureStackTrace(this, context ?? this.constructor);
168
+ }
169
+ static create(message) {
170
+ return new WorkflowStateError(message, WorkflowStateError.create);
171
+ }
172
+ static runNamespaceMismatch(actual, expected) {
173
+ throw new WorkflowStateError(`Workflow run namespace mismatch: ${actual} !== ${expected}`, WorkflowStateError.runNamespaceMismatch, {
174
+ code: WorkflowErrorCode.STATE_RUN_NAMESPACE_MISMATCH,
175
+ details: {
176
+ actual,
177
+ expected
178
+ }
179
+ });
180
+ }
181
+ static runIdMismatch(actual, expected) {
182
+ throw new WorkflowStateError(`Workflow store runId mismatch: ${actual} !== ${expected}`, WorkflowStateError.runIdMismatch, {
183
+ code: WorkflowErrorCode.STATE_RUN_ID_MISMATCH,
184
+ details: {
185
+ actual,
186
+ expected
187
+ }
188
+ });
189
+ }
190
+ static runIdAlreadyExists(runId) {
191
+ throw new WorkflowStateError(`Workflow run already exists: ${runId}`, WorkflowStateError.runIdAlreadyExists, {
192
+ code: WorkflowErrorCode.STATE_RUN_ALREADY_EXISTS,
193
+ details: { runId }
194
+ });
195
+ }
196
+ static eventHistoryAlreadyExists(runId) {
197
+ throw new WorkflowStateError(`Workflow event history already exists: ${runId}`, WorkflowStateError.eventHistoryAlreadyExists, {
198
+ code: WorkflowErrorCode.STATE_EVENT_HISTORY_ALREADY_EXISTS,
199
+ details: { runId }
200
+ });
201
+ }
202
+ static eventNotTerminalStep(kind) {
203
+ throw new WorkflowStateError(`Workflow event is not a terminal step event: ${kind}`, WorkflowStateError.eventNotTerminalStep, {
204
+ code: WorkflowErrorCode.STATE_EVENT_NOT_TERMINAL_STEP,
205
+ details: { kind }
206
+ });
207
+ }
208
+ static unsupportedRecordedStepEventType(kind) {
209
+ throw new WorkflowStateError(`Workflow recorded step event type is not supported: ${kind}`, WorkflowStateError.unsupportedRecordedStepEventType, {
210
+ code: WorkflowErrorCode.STATE_RECORDED_STEP_EVENT_UNSUPPORTED,
211
+ details: { kind }
212
+ });
213
+ }
214
+ static stepAttemptFieldMismatch(stepId, field) {
215
+ throw new WorkflowStateError(`Workflow step attempt ${stepId} ${field} must match started attempt`, WorkflowStateError.stepAttemptFieldMismatch, {
216
+ code: WorkflowErrorCode.STATE_STEP_ATTEMPT_FIELD_MISMATCH,
217
+ details: {
218
+ stepId,
219
+ field
220
+ }
221
+ });
222
+ }
223
+ static failedRunMissingError(runId) {
224
+ throw new WorkflowStateError(`Failed workflow run is missing error: ${runId}`, WorkflowStateError.failedRunMissingError, {
225
+ code: WorkflowErrorCode.STATE_FAILED_RUN_MISSING_ERROR,
226
+ details: { runId }
227
+ });
228
+ }
229
+ static runNotClaimable(runId) {
230
+ throw new WorkflowStateError(`Workflow run is not claimable: ${runId}`, WorkflowStateError.runNotClaimable, {
231
+ code: WorkflowErrorCode.STATE_RUN_NOT_CLAIMABLE,
232
+ details: { runId }
233
+ });
234
+ }
235
+ static workerStoppedBeforeRun(runId) {
236
+ throw new WorkflowStateError(`Workflow worker stopped before executing run: ${runId}`, WorkflowStateError.workerStoppedBeforeRun, {
237
+ code: WorkflowErrorCode.STATE_WORKER_STOPPED_BEFORE_RUN,
238
+ details: { runId }
239
+ });
240
+ }
241
+ static storeRunIdInvalid() {
242
+ throw new WorkflowStateError("Workflow store runId is invalid: Expected a non-blank string", WorkflowStateError.storeRunIdInvalid, { code: WorkflowErrorCode.STATE_STORE_RUN_ID_INVALID });
243
+ }
244
+ static invalid(label, issues) {
245
+ throw new WorkflowStateError(`${label} is invalid: ${issues}`, WorkflowStateError.invalid, {
246
+ code: WorkflowErrorCode.STATE_INVALID,
247
+ details: {
248
+ label,
249
+ issues
250
+ }
251
+ });
252
+ }
253
+ static idempotencyKeyClaimedWithoutRun(runId) {
254
+ throw new WorkflowStateError(`Workflow idempotency key was claimed without a run: ${runId}`, WorkflowStateError.idempotencyKeyClaimedWithoutRun, {
255
+ code: WorkflowErrorCode.STATE_IDEMPOTENCY_KEY_CLAIMED_WITHOUT_RUN,
256
+ details: { runId }
257
+ });
258
+ }
259
+ static runMissingIdempotencyKey(runId) {
260
+ throw new WorkflowStateError(`Workflow run does not have an idempotency key: ${runId}`, WorkflowStateError.runMissingIdempotencyKey, {
261
+ code: WorkflowErrorCode.STATE_RUN_MISSING_IDEMPOTENCY_KEY,
262
+ details: { runId }
263
+ });
264
+ }
265
+ static failedRunMetadataUpdate(runId) {
266
+ throw new WorkflowStateError(`Failed to update workflow run metadata for run ${runId}`, WorkflowStateError.failedRunMetadataUpdate, {
267
+ code: WorkflowErrorCode.STATE_RUN_METADATA_UPDATE_FAILED,
268
+ details: { runId }
269
+ });
270
+ }
271
+ static failedRunAttributesUpdate(runId) {
272
+ throw new WorkflowStateError(`Failed to update workflow run attributes for run ${runId}`, WorkflowStateError.failedRunAttributesUpdate, {
273
+ code: WorkflowErrorCode.STATE_RUN_ATTRIBUTES_UPDATE_FAILED,
274
+ details: { runId }
275
+ });
276
+ }
277
+ static runCannotBeRescheduled(runId) {
278
+ throw new WorkflowStateError(`Workflow run cannot be rescheduled unless pending or waiting: ${runId}`, WorkflowStateError.runCannotBeRescheduled, {
279
+ code: WorkflowErrorCode.STATE_RUN_CANNOT_BE_RESCHEDULED,
280
+ details: { runId }
281
+ });
282
+ }
283
+ static failedRunReschedule(runId) {
284
+ throw new WorkflowStateError(`Failed to reschedule workflow run ${runId}`, WorkflowStateError.failedRunReschedule, {
285
+ code: WorkflowErrorCode.STATE_RUN_RESCHEDULE_FAILED,
286
+ details: { runId }
287
+ });
288
+ }
289
+ static staleLeaseReleaseRequiresRunning(runId) {
290
+ throw new WorkflowStateError(`Workflow run stale lease cannot be released unless running: ${runId}`, WorkflowStateError.staleLeaseReleaseRequiresRunning, {
291
+ code: WorkflowErrorCode.STATE_STALE_LEASE_RELEASE_REQUIRES_RUNNING,
292
+ details: { runId }
293
+ });
294
+ }
295
+ static runLeaseStillActive(runId) {
296
+ throw new WorkflowStateError(`Workflow run lease is still active: ${runId}`, WorkflowStateError.runLeaseStillActive, {
297
+ code: WorkflowErrorCode.STATE_RUN_LEASE_STILL_ACTIVE,
298
+ details: { runId }
299
+ });
300
+ }
301
+ static failedStaleRunLeaseRelease(runId) {
302
+ throw new WorkflowStateError(`Failed to release stale workflow run lease ${runId}`, WorkflowStateError.failedStaleRunLeaseRelease, {
303
+ code: WorkflowErrorCode.STATE_STALE_RUN_LEASE_RELEASE_FAILED,
304
+ details: { runId }
305
+ });
306
+ }
307
+ static runRetryRequiresFailed(runId) {
308
+ throw new WorkflowStateError(`Workflow run cannot be retried unless failed: ${runId}`, WorkflowStateError.runRetryRequiresFailed, {
309
+ code: WorkflowErrorCode.STATE_RUN_RETRY_REQUIRES_FAILED,
310
+ details: { runId }
311
+ });
312
+ }
313
+ static runRetryRequiresForceAfterPermanentFailure(runId) {
314
+ throw new WorkflowStateError(`Workflow run cannot be retried after permanent failure without force: ${runId}`, WorkflowStateError.runRetryRequiresForceAfterPermanentFailure, {
315
+ code: WorkflowErrorCode.STATE_RUN_RETRY_REQUIRES_FORCE_AFTER_PERMANENT_FAILURE,
316
+ details: { runId }
317
+ });
318
+ }
319
+ static failedRunRetryRequiresForce(runId) {
320
+ throw new WorkflowStateError(`Workflow failed run retry requires force when no retry metadata exists: ${runId}`, WorkflowStateError.failedRunRetryRequiresForce, {
321
+ code: WorkflowErrorCode.STATE_FAILED_RUN_RETRY_REQUIRES_FORCE,
322
+ details: { runId }
323
+ });
324
+ }
325
+ static failedRunRetry(runId) {
326
+ throw new WorkflowStateError(`Failed to retry workflow run ${runId}`, WorkflowStateError.failedRunRetry, {
327
+ code: WorkflowErrorCode.STATE_RUN_RETRY_FAILED,
328
+ details: { runId }
329
+ });
330
+ }
331
+ static failedPermanentRunFailure(runId) {
332
+ throw new WorkflowStateError(`Failed to mark workflow run permanently failed ${runId}`, WorkflowStateError.failedPermanentRunFailure, {
333
+ code: WorkflowErrorCode.STATE_PERMANENT_RUN_FAILURE_FAILED,
334
+ details: { runId }
335
+ });
336
+ }
337
+ static permanentFailureInvalidStatus(runId, status) {
338
+ throw new WorkflowStateError(`Workflow run cannot be marked permanently failed from ${status}: ${runId}`, WorkflowStateError.permanentFailureInvalidStatus, {
339
+ code: WorkflowErrorCode.STATE_PERMANENT_FAILURE_STATUS_INVALID,
340
+ details: {
341
+ runId,
342
+ status
343
+ }
344
+ });
345
+ }
346
+ static failedMessageAppend(runId) {
347
+ throw new WorkflowStateError(`Failed to append workflow message for run ${runId}`, WorkflowStateError.failedMessageAppend, {
348
+ code: WorkflowErrorCode.STATE_MESSAGE_APPEND_FAILED,
349
+ details: { runId }
350
+ });
351
+ }
352
+ static cleanupSelectedNonTerminalRun(runId) {
353
+ throw new WorkflowStateError(`Workflow cleanup selected non-terminal run: ${runId}`, WorkflowStateError.cleanupSelectedNonTerminalRun, {
354
+ code: WorkflowErrorCode.STATE_CLEANUP_SELECTED_NON_TERMINAL_RUN,
355
+ details: { runId }
356
+ });
357
+ }
358
+ static cleanupRunMissingFinishedAt(runId) {
359
+ throw new WorkflowStateError(`Workflow cleanup run is missing finishedAt: ${runId}`, WorkflowStateError.cleanupRunMissingFinishedAt, {
360
+ code: WorkflowErrorCode.STATE_CLEANUP_RUN_MISSING_FINISHED_AT,
361
+ details: { runId }
362
+ });
363
+ }
364
+ static failedWorkflowEventAppend(runId, attempts) {
365
+ throw new WorkflowStateError(`Failed to append workflow event for run ${runId} after ${attempts} attempts`, WorkflowStateError.failedWorkflowEventAppend, {
366
+ code: WorkflowErrorCode.STATE_WORKFLOW_EVENT_APPEND_FAILED,
367
+ details: {
368
+ runId,
369
+ attempts
370
+ }
371
+ });
372
+ }
373
+ static failedStepAttemptMaterialization(runId, attempts) {
374
+ throw new WorkflowStateError(`Failed to materialize workflow step attempt for run ${runId} after ${attempts} attempts`, WorkflowStateError.failedStepAttemptMaterialization, {
375
+ code: WorkflowErrorCode.STATE_STEP_ATTEMPT_MATERIALIZATION_FAILED,
376
+ details: {
377
+ runId,
378
+ attempts
379
+ }
380
+ });
381
+ }
382
+ static appendProjectionPipelineMissing() {
383
+ throw new WorkflowStateError("Cannot finalize workflow event append without an append projection pipeline.", WorkflowStateError.appendProjectionPipelineMissing, { code: WorkflowErrorCode.STATE_APPEND_PROJECTION_PIPELINE_MISSING });
384
+ }
385
+ };
386
+ /** Error thrown for run failures. */
387
+ var WorkflowRunError = class WorkflowRunError extends WorkflowError {
388
+ constructor(message, options, context) {
389
+ super(message, {
390
+ ...options,
391
+ code: options.code ?? WorkflowErrorCode.RUN_ERROR
392
+ }, context);
393
+ this.name = "WorkflowRunError";
394
+ }
395
+ static fromMessage(message, options) {
396
+ return new WorkflowRunError(message, options, WorkflowRunError.fromMessage);
397
+ }
398
+ };
399
+ /** Error thrown for step failures. */
400
+ var WorkflowStepError = class WorkflowStepError extends WorkflowError {
401
+ constructor(message, options, context) {
402
+ super(message, {
403
+ ...options,
404
+ code: options.code ?? WorkflowErrorCode.STEP_ERROR
405
+ }, context);
406
+ this.name = "WorkflowStepError";
407
+ }
408
+ static fromMessage(message, options) {
409
+ return new WorkflowStepError(message, options, WorkflowStepError.fromMessage);
410
+ }
411
+ };
412
+ /** Error thrown for message failures. */
413
+ var WorkflowMessageError = class WorkflowMessageError extends WorkflowError {
414
+ constructor(message, options, context) {
415
+ super(message, {
416
+ ...options,
417
+ code: options.code ?? WorkflowErrorCode.MESSAGE_ERROR
418
+ }, context);
419
+ this.name = "WorkflowMessageError";
420
+ }
421
+ static fromMessage(message, options) {
422
+ return new WorkflowMessageError(message, options, WorkflowMessageError.fromMessage);
423
+ }
424
+ };
425
+ //#endregion
426
+ export { WorkflowError, WorkflowMessageError, WorkflowOptionsError, WorkflowRunError, WorkflowStateError, WorkflowStepError };
@@ -0,0 +1,11 @@
1
+ import { WorkflowError } from "./base.mjs";
2
+ //#region src/errors/capability.d.ts
3
+ /** Error thrown for capability failures. */
4
+ declare class WorkflowCapabilityError extends WorkflowError {
5
+ readonly capability: string;
6
+ constructor(capability: string, context?: Function);
7
+ static create(this: void, capability: string): WorkflowCapabilityError;
8
+ static unsupported(this: void, capability: string): never;
9
+ }
10
+ //#endregion
11
+ export { WorkflowCapabilityError };
@@ -0,0 +1,23 @@
1
+ import { WorkflowErrorCode } from "../types/error-code.mjs";
2
+ import { WorkflowError } from "./base.mjs";
3
+ //#region src/errors/capability.ts
4
+ /** Error thrown for capability failures. */
5
+ var WorkflowCapabilityError = class WorkflowCapabilityError extends WorkflowError {
6
+ capability;
7
+ constructor(capability, context) {
8
+ super(`Workflow engine does not support ${capability}`, {
9
+ code: WorkflowErrorCode.CAPABILITY_UNSUPPORTED,
10
+ details: { capability }
11
+ }, context);
12
+ this.name = "WorkflowCapabilityError";
13
+ this.capability = capability;
14
+ }
15
+ static create(capability) {
16
+ return new WorkflowCapabilityError(capability, WorkflowCapabilityError.create);
17
+ }
18
+ static unsupported(capability) {
19
+ throw new WorkflowCapabilityError(capability, WorkflowCapabilityError.unsupported);
20
+ }
21
+ };
22
+ //#endregion
23
+ export { WorkflowCapabilityError };
@@ -0,0 +1,21 @@
1
+ import { WorkflowError } from "./base.mjs";
2
+ //#region src/errors/definition.d.ts
3
+ /** Error thrown for definition failures. */
4
+ declare class WorkflowDefinitionError extends WorkflowError {
5
+ constructor(message: string, context?: Function);
6
+ static create(this: void, message: string): WorkflowDefinitionError;
7
+ static object(this: void, label: string): never;
8
+ static standardObject(this: void, label: string): never;
9
+ static standardValidateFunction(this: void, label: string): never;
10
+ static handlerFunction(this: void): never;
11
+ static stepNameOrCommandIdRequired(this: void): never;
12
+ static string(this: void, label: string): never;
13
+ static nonEmpty(this: void, label: string): never;
14
+ static nameMismatch(this: void, label: string): never;
15
+ static versionMismatch(this: void, label: string): never;
16
+ static compiledMetadataMissing(this: void): never;
17
+ static compiledStepMetadataMissing(this: void): never;
18
+ static implementationAlreadyRegistered(this: void, key: string): never;
19
+ }
20
+ //#endregion
21
+ export { WorkflowDefinitionError };
@@ -0,0 +1,51 @@
1
+ import { WorkflowErrorCode } from "../types/error-code.mjs";
2
+ import { WorkflowError } from "./base.mjs";
3
+ //#region src/errors/definition.ts
4
+ /** Error thrown for definition failures. */
5
+ var WorkflowDefinitionError = class WorkflowDefinitionError extends WorkflowError {
6
+ constructor(message, context) {
7
+ super(message, { code: WorkflowErrorCode.DEFINITION_INVALID }, context);
8
+ this.name = "WorkflowDefinitionError";
9
+ }
10
+ static create(message) {
11
+ return new WorkflowDefinitionError(message, WorkflowDefinitionError.create);
12
+ }
13
+ static object(label) {
14
+ throw new WorkflowDefinitionError(`${label} must be an object`, WorkflowDefinitionError.object);
15
+ }
16
+ static standardObject(label) {
17
+ throw new WorkflowDefinitionError(`${label}.~standard must be an object`, WorkflowDefinitionError.standardObject);
18
+ }
19
+ static standardValidateFunction(label) {
20
+ throw new WorkflowDefinitionError(`${label}.~standard.validate must be a function`, WorkflowDefinitionError.standardValidateFunction);
21
+ }
22
+ static handlerFunction() {
23
+ throw new WorkflowDefinitionError("Workflow handler must be a function", WorkflowDefinitionError.handlerFunction);
24
+ }
25
+ static stepNameOrCommandIdRequired() {
26
+ throw new WorkflowDefinitionError("Workflow step name or commandId is required", WorkflowDefinitionError.stepNameOrCommandIdRequired);
27
+ }
28
+ static string(label) {
29
+ throw new WorkflowDefinitionError(`${label} must be a string`, WorkflowDefinitionError.string);
30
+ }
31
+ static nonEmpty(label) {
32
+ throw new WorkflowDefinitionError(`${label} must not be empty`, WorkflowDefinitionError.nonEmpty);
33
+ }
34
+ static nameMismatch(label) {
35
+ throw new WorkflowDefinitionError(`${label} name mismatch`, WorkflowDefinitionError.nameMismatch);
36
+ }
37
+ static versionMismatch(label) {
38
+ throw new WorkflowDefinitionError(`${label} version mismatch`, WorkflowDefinitionError.versionMismatch);
39
+ }
40
+ static compiledMetadataMissing() {
41
+ throw new WorkflowDefinitionError("Compiled workflow function is missing compiled workflow metadata", WorkflowDefinitionError.compiledMetadataMissing);
42
+ }
43
+ static compiledStepMetadataMissing() {
44
+ throw new WorkflowDefinitionError("Compiled workflow step function is missing compiled workflow metadata", WorkflowDefinitionError.compiledStepMetadataMissing);
45
+ }
46
+ static implementationAlreadyRegistered(key) {
47
+ throw new WorkflowDefinitionError(`Workflow implementation already registered: ${key}`, WorkflowDefinitionError.implementationAlreadyRegistered);
48
+ }
49
+ };
50
+ //#endregion
51
+ export { WorkflowDefinitionError };
@@ -0,0 +1,13 @@
1
+ import { WorkflowRunStatus, WorkflowTerminalRunStatus } from "../types/run.mjs";
2
+ import { WorkflowErrorDetails, WorkflowErrorRecord } from "../types/error.mjs";
3
+ //#region src/errors/details.d.ts
4
+ declare function hasWorkflowErrorCauseDetails(details: WorkflowErrorDetails): boolean;
5
+ declare function unprefixWorkflowErrorCauseDetails(details: WorkflowErrorDetails): WorkflowErrorRecord;
6
+ declare function workflowErrorDetailString(details: WorkflowErrorDetails | undefined, key: string): string | undefined;
7
+ declare function workflowErrorDetailPositiveSafeInteger(details: WorkflowErrorDetails | undefined, key: string): number | undefined;
8
+ declare function workflowErrorRunStatusOrUndefined(value: unknown): WorkflowRunStatus | undefined;
9
+ declare function workflowTerminalErrorRunStatusOrUndefined(value: unknown): WorkflowTerminalRunStatus | undefined;
10
+ declare function workflowErrorDetailTimestamp(details: WorkflowErrorDetails | undefined, key: string): Temporal.Instant | undefined;
11
+ declare function workflowErrorDetailDuration(details: WorkflowErrorDetails | undefined, key: string): Temporal.Duration | undefined;
12
+ //#endregion
13
+ export { hasWorkflowErrorCauseDetails, unprefixWorkflowErrorCauseDetails, workflowErrorDetailDuration, workflowErrorDetailPositiveSafeInteger, workflowErrorDetailString, workflowErrorDetailTimestamp, workflowErrorRunStatusOrUndefined, workflowTerminalErrorRunStatusOrUndefined };
@@ -0,0 +1,65 @@
1
+ import { workflowErrorCodeSchema } from "../types/error-code.mjs";
2
+ import { positiveSafeIntegerSchema } from "../types/common.mjs";
3
+ import { optionalWorkflowErrorStringSchema, sanitizedWorkflowErrorDetails, workflowErrorDetailsSchema, workflowErrorRunStatusSchema, workflowTerminalErrorRunStatusSchema } from "../types/error.mjs";
4
+ //#region src/errors/details.ts
5
+ function hasWorkflowErrorCauseDetails(details) {
6
+ return workflowErrorDetailString(details, "causeName") !== void 0 || workflowErrorDetailString(details, "causeMessage") !== void 0;
7
+ }
8
+ function unprefixWorkflowErrorCauseDetails(details) {
9
+ const unprefixed = Object.fromEntries(Object.entries(details).filter(([key]) => /^cause[A-Z]/.test(key)).map(([key, value]) => {
10
+ const unprefixedKey = key.slice(5);
11
+ return [`${unprefixedKey[0]?.toLowerCase() ?? ""}${unprefixedKey.slice(1)}`, value];
12
+ }));
13
+ const name = typeof unprefixed.name === "string" && unprefixed.name.trim() !== "" ? unprefixed.name : "WorkflowError";
14
+ const message = typeof unprefixed.message === "string" && unprefixed.message.trim() !== "" ? unprefixed.message : name;
15
+ const stack = typeof unprefixed.stack === "string" && unprefixed.stack.trim() !== "" ? unprefixed.stack : void 0;
16
+ const code = workflowErrorCodeSchema.safeParse(unprefixed.code);
17
+ const sanitizedDetails = sanitizedWorkflowErrorDetails(Object.fromEntries(Object.entries(unprefixed).filter(([key]) => key !== "code" && key !== "name" && key !== "message" && key !== "stack")));
18
+ return {
19
+ ...code.success ? { code: code.data } : {},
20
+ name,
21
+ message,
22
+ ...stack === void 0 ? {} : { stack },
23
+ ...sanitizedDetails === void 0 ? {} : { details: sanitizedDetails }
24
+ };
25
+ }
26
+ function workflowErrorDetailString(details, key) {
27
+ const parsed = workflowErrorDetailsSchema.safeParse(details);
28
+ if (!parsed.success) return;
29
+ const result = optionalWorkflowErrorStringSchema.safeParse(parsed.data[key]);
30
+ return result.success ? result.data : void 0;
31
+ }
32
+ function workflowErrorDetailPositiveSafeInteger(details, key) {
33
+ const parsed = workflowErrorDetailsSchema.safeParse(details);
34
+ if (!parsed.success) return;
35
+ const result = positiveSafeIntegerSchema.optional().safeParse(parsed.data[key]);
36
+ return result.success ? result.data : void 0;
37
+ }
38
+ function workflowErrorRunStatusOrUndefined(value) {
39
+ const result = workflowErrorRunStatusSchema.safeParse(value);
40
+ return result.success ? result.data : void 0;
41
+ }
42
+ function workflowTerminalErrorRunStatusOrUndefined(value) {
43
+ const result = workflowTerminalErrorRunStatusSchema.safeParse(value);
44
+ return result.success ? result.data : void 0;
45
+ }
46
+ function workflowErrorDetailTimestamp(details, key) {
47
+ const value = workflowErrorDetailString(details, key);
48
+ if (value === void 0) return;
49
+ try {
50
+ return Temporal.Instant.from(value);
51
+ } catch {
52
+ return;
53
+ }
54
+ }
55
+ function workflowErrorDetailDuration(details, key) {
56
+ const value = workflowErrorDetailString(details, key);
57
+ if (value === void 0) return;
58
+ try {
59
+ return Temporal.Duration.from(value);
60
+ } catch {
61
+ return;
62
+ }
63
+ }
64
+ //#endregion
65
+ export { hasWorkflowErrorCauseDetails, unprefixWorkflowErrorCauseDetails, workflowErrorDetailDuration, workflowErrorDetailPositiveSafeInteger, workflowErrorDetailString, workflowErrorDetailTimestamp, workflowErrorRunStatusOrUndefined, workflowTerminalErrorRunStatusOrUndefined };