@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,283 @@
1
+ import { nonBlankStringListSchema, nonBlankStringSchema, nonNegativeSafeIntegerSchema, positiveSafeIntegerSchema, temporalInstantSchema, temporalNonNegativeDurationSchema } from "./common.mjs";
2
+ import { workflowErrorRecordSchema } from "./error.mjs";
3
+ import { runIdSchema } from "./run-id.mjs";
4
+ import { stepIdSchema } from "./step-id.mjs";
5
+ import { workflowTelemetryContextSchema } from "./telemetry.mjs";
6
+ import { workflowAttributeValueSchema, workflowPersistedValueSchema } from "./run.mjs";
7
+ import { messageIdSchema } from "./message-id.mjs";
8
+ import { workflowChildWorkflowCancellationPolicySchema } from "./step.mjs";
9
+ import { streamIdSchema } from "./stream-id.mjs";
10
+ import { z } from "zod";
11
+ //#region src/types/events.ts
12
+ const workflowMessageWaitSourceSchema = z.enum(["hook", "webhook"]);
13
+ const workflowRunEventKindSchema = z.enum([
14
+ "workflow_started",
15
+ "workflow_completed",
16
+ "workflow_failed"
17
+ ]);
18
+ const workflowStepEventKindSchema = z.enum([
19
+ "step_started",
20
+ "step_completed",
21
+ "step_failed"
22
+ ]);
23
+ const workflowSleepEventKindSchema = z.enum(["sleep_started", "sleep_completed"]);
24
+ const workflowChildWorkflowEventKindSchema = z.enum([
25
+ "child_workflow_started",
26
+ "child_workflow_completed",
27
+ "child_workflow_failed"
28
+ ]);
29
+ const workflowMessageEventKindSchema = z.enum([
30
+ "message_sent",
31
+ "message_send_started",
32
+ "message_send_completed",
33
+ "message_send_failed",
34
+ "message_wait_started",
35
+ "message_wait_completed",
36
+ "message_wait_failed"
37
+ ]);
38
+ const workflowStreamEventKindSchema = z.enum([
39
+ "stream_started",
40
+ "stream_chunk",
41
+ "stream_closed",
42
+ "stream_failed"
43
+ ]);
44
+ const workflowDataEventKindSchema = z.enum(["metadata_set", "attributes_set"]);
45
+ const workflowDeterministicEventKindSchema = z.literal("deterministic_value_recorded");
46
+ const workflowEventKindSchema = z.union([
47
+ workflowRunEventKindSchema,
48
+ workflowStepEventKindSchema,
49
+ workflowSleepEventKindSchema,
50
+ workflowChildWorkflowEventKindSchema,
51
+ workflowMessageEventKindSchema,
52
+ workflowStreamEventKindSchema,
53
+ workflowDataEventKindSchema,
54
+ workflowDeterministicEventKindSchema
55
+ ]);
56
+ const persistedValueSchema = workflowPersistedValueSchema;
57
+ const runAttributesSchema = z.record(z.string(), workflowAttributeValueSchema);
58
+ const eventBaseShape = { timestamp: temporalInstantSchema };
59
+ const stepIdentityShape = {
60
+ stepId: stepIdSchema,
61
+ stepName: nonBlankStringSchema
62
+ };
63
+ const countShape = { count: positiveSafeIntegerSchema };
64
+ const attemptShape = { attempt: positiveSafeIntegerSchema };
65
+ const workflowMessageWaiterStepIdsSchema = nonBlankStringListSchema.refine((items) => new Set(items).size === items.length, { error: "Expected unique step ids" });
66
+ const workflowStartedEventSchema = z.object({
67
+ ...eventBaseShape,
68
+ kind: z.literal("workflow_started")
69
+ });
70
+ const workflowCompletedEventSchema = z.object({
71
+ ...eventBaseShape,
72
+ kind: z.literal("workflow_completed")
73
+ });
74
+ const workflowFailedEventSchema = z.object({
75
+ ...eventBaseShape,
76
+ kind: z.literal("workflow_failed")
77
+ });
78
+ const workflowStepStartedEventSchema = z.object({
79
+ ...eventBaseShape,
80
+ ...stepIdentityShape,
81
+ ...countShape,
82
+ ...attemptShape,
83
+ kind: z.literal("step_started"),
84
+ timeoutAt: temporalInstantSchema.optional()
85
+ });
86
+ const workflowStepCompletedEventSchema = z.object({
87
+ ...eventBaseShape,
88
+ ...stepIdentityShape,
89
+ ...attemptShape,
90
+ kind: z.literal("step_completed"),
91
+ result: persistedValueSchema.optional()
92
+ });
93
+ const workflowStepFailedEventSchema = z.object({
94
+ ...eventBaseShape,
95
+ ...stepIdentityShape,
96
+ ...attemptShape,
97
+ kind: z.literal("step_failed"),
98
+ error: workflowErrorRecordSchema
99
+ });
100
+ const workflowSleepStartedEventSchema = z.object({
101
+ ...eventBaseShape,
102
+ ...stepIdentityShape,
103
+ ...countShape,
104
+ kind: z.literal("sleep_started"),
105
+ until: temporalInstantSchema,
106
+ duration: temporalNonNegativeDurationSchema.optional()
107
+ });
108
+ const workflowSleepCompletedEventSchema = z.object({
109
+ ...eventBaseShape,
110
+ ...stepIdentityShape,
111
+ kind: z.literal("sleep_completed")
112
+ });
113
+ const workflowChildWorkflowStartedEventSchema = z.object({
114
+ ...eventBaseShape,
115
+ ...stepIdentityShape,
116
+ ...countShape,
117
+ ...attemptShape,
118
+ kind: z.literal("child_workflow_started"),
119
+ childRunId: runIdSchema,
120
+ workflowName: nonBlankStringSchema,
121
+ workflowVersion: nonBlankStringSchema.optional(),
122
+ cancellation: workflowChildWorkflowCancellationPolicySchema.optional(),
123
+ input: persistedValueSchema.optional(),
124
+ idempotencyKey: nonBlankStringSchema.optional(),
125
+ timeoutAt: temporalInstantSchema.optional()
126
+ });
127
+ const workflowChildWorkflowCompletedEventSchema = z.object({
128
+ ...eventBaseShape,
129
+ ...stepIdentityShape,
130
+ ...attemptShape,
131
+ kind: z.literal("child_workflow_completed"),
132
+ childRunId: runIdSchema,
133
+ result: persistedValueSchema.optional()
134
+ });
135
+ const workflowChildWorkflowFailedEventSchema = z.object({
136
+ ...eventBaseShape,
137
+ ...stepIdentityShape,
138
+ ...attemptShape,
139
+ kind: z.literal("child_workflow_failed"),
140
+ childRunId: runIdSchema,
141
+ error: workflowErrorRecordSchema
142
+ });
143
+ const workflowMessageSentEventSchema = z.object({
144
+ ...eventBaseShape,
145
+ kind: z.literal("message_sent"),
146
+ messageId: messageIdSchema,
147
+ payload: persistedValueSchema.optional(),
148
+ waiterStepIds: workflowMessageWaiterStepIdsSchema.optional(),
149
+ idempotencyKey: nonBlankStringSchema.optional(),
150
+ telemetryContext: workflowTelemetryContextSchema.optional()
151
+ });
152
+ const workflowMessageSendStartedEventSchema = z.object({
153
+ ...eventBaseShape,
154
+ ...stepIdentityShape,
155
+ ...countShape,
156
+ kind: z.literal("message_send_started"),
157
+ targetRunId: runIdSchema,
158
+ messageId: messageIdSchema,
159
+ payload: persistedValueSchema.optional(),
160
+ idempotencyKey: nonBlankStringSchema.optional()
161
+ });
162
+ const workflowMessageSendCompletedEventSchema = z.object({
163
+ ...eventBaseShape,
164
+ ...stepIdentityShape,
165
+ kind: z.literal("message_send_completed"),
166
+ targetRunId: runIdSchema,
167
+ messageId: messageIdSchema
168
+ });
169
+ const workflowMessageSendFailedEventSchema = z.object({
170
+ ...eventBaseShape,
171
+ ...stepIdentityShape,
172
+ kind: z.literal("message_send_failed"),
173
+ targetRunId: runIdSchema,
174
+ messageId: messageIdSchema,
175
+ error: workflowErrorRecordSchema
176
+ });
177
+ const workflowMessageWaitStartedEventSchema = z.object({
178
+ ...eventBaseShape,
179
+ ...stepIdentityShape,
180
+ ...countShape,
181
+ kind: z.literal("message_wait_started"),
182
+ messageId: messageIdSchema,
183
+ source: workflowMessageWaitSourceSchema.optional(),
184
+ timeoutAt: temporalInstantSchema.optional()
185
+ });
186
+ const workflowMessageWaitCompletedEventSchema = z.object({
187
+ ...eventBaseShape,
188
+ ...stepIdentityShape,
189
+ kind: z.literal("message_wait_completed"),
190
+ messageId: messageIdSchema,
191
+ payload: persistedValueSchema.optional(),
192
+ messageTimestamp: temporalInstantSchema,
193
+ telemetryContext: workflowTelemetryContextSchema.optional()
194
+ });
195
+ const workflowMessageWaitFailedEventSchema = z.object({
196
+ ...eventBaseShape,
197
+ ...stepIdentityShape,
198
+ kind: z.literal("message_wait_failed"),
199
+ messageId: messageIdSchema,
200
+ error: workflowErrorRecordSchema
201
+ });
202
+ const workflowMetadataSetEventSchema = z.object({
203
+ ...eventBaseShape,
204
+ ...stepIdentityShape,
205
+ ...countShape,
206
+ kind: z.literal("metadata_set"),
207
+ metadata: persistedValueSchema
208
+ });
209
+ const workflowAttributesSetEventSchema = z.object({
210
+ ...eventBaseShape,
211
+ ...stepIdentityShape,
212
+ ...countShape,
213
+ kind: z.literal("attributes_set"),
214
+ attributes: runAttributesSchema.optional(),
215
+ removeAttributes: z.array(nonBlankStringSchema).readonly().optional()
216
+ });
217
+ const workflowStreamStartedEventSchema = z.object({
218
+ ...eventBaseShape,
219
+ ...stepIdentityShape,
220
+ ...countShape,
221
+ kind: z.literal("stream_started"),
222
+ streamId: streamIdSchema,
223
+ contentType: nonBlankStringSchema.optional(),
224
+ metadata: persistedValueSchema.optional()
225
+ });
226
+ const workflowStreamChunkEventSchema = z.object({
227
+ ...eventBaseShape,
228
+ ...stepIdentityShape,
229
+ kind: z.literal("stream_chunk"),
230
+ streamId: streamIdSchema,
231
+ index: nonNegativeSafeIntegerSchema,
232
+ chunk: persistedValueSchema.optional()
233
+ });
234
+ const workflowStreamClosedEventSchema = z.object({
235
+ ...eventBaseShape,
236
+ ...stepIdentityShape,
237
+ kind: z.literal("stream_closed"),
238
+ streamId: streamIdSchema
239
+ });
240
+ const workflowStreamFailedEventSchema = z.object({
241
+ ...eventBaseShape,
242
+ ...stepIdentityShape,
243
+ kind: z.literal("stream_failed"),
244
+ streamId: streamIdSchema,
245
+ error: workflowErrorRecordSchema
246
+ });
247
+ const workflowDeterministicValueRecordedEventSchema = z.object({
248
+ ...eventBaseShape,
249
+ ...stepIdentityShape,
250
+ ...countShape,
251
+ kind: z.literal("deterministic_value_recorded"),
252
+ value: persistedValueSchema
253
+ });
254
+ const workflowEventRecordSchema = z.discriminatedUnion("kind", [
255
+ workflowStartedEventSchema,
256
+ workflowCompletedEventSchema,
257
+ workflowFailedEventSchema,
258
+ workflowStepStartedEventSchema,
259
+ workflowStepCompletedEventSchema,
260
+ workflowStepFailedEventSchema,
261
+ workflowSleepStartedEventSchema,
262
+ workflowSleepCompletedEventSchema,
263
+ workflowChildWorkflowStartedEventSchema,
264
+ workflowChildWorkflowCompletedEventSchema,
265
+ workflowChildWorkflowFailedEventSchema,
266
+ workflowMessageSentEventSchema,
267
+ workflowMessageSendStartedEventSchema,
268
+ workflowMessageSendCompletedEventSchema,
269
+ workflowMessageSendFailedEventSchema,
270
+ workflowMessageWaitStartedEventSchema,
271
+ workflowMessageWaitCompletedEventSchema,
272
+ workflowMessageWaitFailedEventSchema,
273
+ workflowMetadataSetEventSchema,
274
+ workflowAttributesSetEventSchema,
275
+ workflowStreamStartedEventSchema,
276
+ workflowStreamChunkEventSchema,
277
+ workflowStreamClosedEventSchema,
278
+ workflowStreamFailedEventSchema,
279
+ workflowDeterministicValueRecordedEventSchema
280
+ ]);
281
+ const workflowEventRecordListSchema = z.array(workflowEventRecordSchema);
282
+ //#endregion
283
+ export { workflowAttributesSetEventSchema, workflowChildWorkflowCompletedEventSchema, workflowChildWorkflowEventKindSchema, workflowChildWorkflowFailedEventSchema, workflowChildWorkflowStartedEventSchema, workflowCompletedEventSchema, workflowDataEventKindSchema, workflowDeterministicEventKindSchema, workflowDeterministicValueRecordedEventSchema, workflowEventKindSchema, workflowEventRecordListSchema, workflowEventRecordSchema, workflowFailedEventSchema, workflowMessageEventKindSchema, workflowMessageSendCompletedEventSchema, workflowMessageSendFailedEventSchema, workflowMessageSendStartedEventSchema, workflowMessageSentEventSchema, workflowMessageWaitCompletedEventSchema, workflowMessageWaitFailedEventSchema, workflowMessageWaitSourceSchema, workflowMessageWaitStartedEventSchema, workflowMessageWaiterStepIdsSchema, workflowMetadataSetEventSchema, workflowRunEventKindSchema, workflowSleepCompletedEventSchema, workflowSleepEventKindSchema, workflowSleepStartedEventSchema, workflowStartedEventSchema, workflowStepCompletedEventSchema, workflowStepEventKindSchema, workflowStepFailedEventSchema, workflowStepStartedEventSchema, workflowStreamChunkEventSchema, workflowStreamClosedEventSchema, workflowStreamEventKindSchema, workflowStreamFailedEventSchema, workflowStreamStartedEventSchema };
@@ -0,0 +1,149 @@
1
+ import { MessageId } from "./message-id.mjs";
2
+ import { RunId } from "./run-id.mjs";
3
+ import "./run.mjs";
4
+ import { WorkflowErrorRecord } from "./error.mjs";
5
+ import { z } from "zod";
6
+ import { Schema, SchemaOutput } from "@temelj/standard-schema";
7
+ //#region src/types/hook.d.ts
8
+ declare const WORKFLOW_HOOK_TOKEN_PREFIX = "temelj-hook:";
9
+ declare const WORKFLOW_HOOK_TOKEN_VERSION = "v1";
10
+ declare const workflowHookKindSchema: z.ZodEnum<{
11
+ hook: "hook";
12
+ webhook: "webhook";
13
+ }>;
14
+ declare const workflowHookTokenPayloadSchema: z.ZodObject<{
15
+ v: z.ZodOptional<z.ZodLiteral<1>>;
16
+ runId: z.ZodString;
17
+ name: z.ZodString;
18
+ messageId: z.ZodString;
19
+ kind: z.ZodOptional<z.ZodEnum<{
20
+ hook: "hook";
21
+ webhook: "webhook";
22
+ }>>;
23
+ metadata: z.ZodOptional<z.ZodType<import("@temelj/storage").StorageValue, unknown, z.core.$ZodTypeInternals<import("@temelj/storage").StorageValue, unknown>>>;
24
+ }, z.core.$strip>;
25
+ declare const workflowHookTokenSchema: z.ZodString;
26
+ /** Decoded fields carried by a workflow webhook resume token. */
27
+ declare const parsedWorkflowWebhookTokenSchema: z.ZodObject<{
28
+ runId: z.ZodString;
29
+ name: z.ZodString;
30
+ messageId: z.ZodString;
31
+ }, z.core.$strip>;
32
+ declare const parsedWorkflowHookTokenSchema: z.ZodObject<{
33
+ runId: z.ZodString;
34
+ name: z.ZodString;
35
+ messageId: z.ZodString;
36
+ kind: z.ZodEnum<{
37
+ hook: "hook";
38
+ webhook: "webhook";
39
+ }>;
40
+ metadata: z.ZodOptional<z.ZodType<import("@temelj/storage").StorageValue, unknown, z.core.$ZodTypeInternals<import("@temelj/storage").StorageValue, unknown>>>;
41
+ }, z.core.$strip>;
42
+ /** Parses a workflow hook token and throws WorkflowHookError when it is invalid. */
43
+ declare function parseHookToken(token: string): ParsedWorkflowHookToken;
44
+ /** Parses a workflow webhook token and throws a webhook-specific options error when invalid. */
45
+ declare function parseWebhookToken(token: string): ParsedWorkflowHookToken;
46
+ /** Promise-like handle for a message-backed workflow hook created by workflow code. */
47
+ interface Hook<TPayload = unknown> extends PromiseLike<TPayload> {
48
+ /** Opaque token used by external code to resume or dispose the hook. */
49
+ readonly token: string;
50
+ /** Run ID that owns the waiting hook. */
51
+ readonly runId: RunId;
52
+ /** Hook name supplied when the hook was created. */
53
+ readonly name: string;
54
+ /** Message ID that will resume the hook. */
55
+ readonly messageId: MessageId;
56
+ /** Waits until the hook receives a payload, fails, expires, or is disposed. */
57
+ wait(): Promise<TPayload>;
58
+ }
59
+ /** Promise-like handle for a webhook-backed workflow hook created by workflow code. */
60
+ interface Webhook<TPayload = unknown> extends PromiseLike<TPayload> {
61
+ /** Opaque token used by external code to resume or dispose the webhook hook. */
62
+ readonly token: string;
63
+ /** Run ID that owns the waiting webhook hook. */
64
+ readonly runId: RunId;
65
+ /** Webhook hook name supplied when the hook was created. */
66
+ readonly name: string;
67
+ /** Message ID that will resume the webhook hook. */
68
+ readonly messageId: MessageId;
69
+ /** Optional persisted metadata encoded into the webhook token. */
70
+ readonly metadata?: unknown;
71
+ /** Waits until the webhook hook receives a payload, fails, expires, or is disposed. */
72
+ wait(): Promise<TPayload>;
73
+ }
74
+ /** Options for creating a message-backed external resume hook. */
75
+ interface CreateHookOptions<TSchema extends Schema | undefined = undefined> {
76
+ readonly commandId?: string;
77
+ readonly name: string;
78
+ readonly messageId?: MessageId;
79
+ readonly timeout?: Temporal.Duration;
80
+ readonly schema?: TSchema;
81
+ }
82
+ /** Options for creating a webhook-labeled external resume hook. */
83
+ interface CreateWebhookOptions<TSchema extends Schema | undefined = undefined> extends CreateHookOptions<TSchema> {
84
+ readonly metadata?: unknown;
85
+ }
86
+ /** Options for completing an external resume hook. */
87
+ interface ResumeHookOptions {
88
+ readonly payload?: unknown;
89
+ readonly idempotencyKey?: string;
90
+ }
91
+ /** Options for completing a webhook-labeled external resume hook. */
92
+ type ResumeWebhookOptions = ResumeHookOptions;
93
+ /** Kind of external resume token represented in hook inspection data. */
94
+ type HookKind = "hook" | "webhook";
95
+ /** Payload encoded into a workflow hook token before it is given to external systems. */
96
+ interface HookTokenPayload {
97
+ readonly v?: 1;
98
+ readonly runId: RunId;
99
+ readonly name: string;
100
+ readonly messageId: MessageId;
101
+ readonly kind?: HookKind;
102
+ readonly metadata?: unknown;
103
+ }
104
+ /** Opaque token string used to resume or dispose an external workflow hook. */
105
+ type HookToken = string;
106
+ /** Observed lifecycle status of an external resume token. */
107
+ type HookInspectionStatus = "waiting" | "completed" | "failed" | "disposed" | "expired" | "run-terminal" | "not-found";
108
+ /** Inspection record for an external resume token and its recorded outcome. */
109
+ interface HookInspection {
110
+ readonly token: string;
111
+ readonly runId: RunId;
112
+ readonly name: string;
113
+ readonly messageId: MessageId;
114
+ readonly kind: HookKind;
115
+ readonly status: HookInspectionStatus;
116
+ readonly stepId?: string;
117
+ readonly timeoutAt?: Temporal.Instant;
118
+ readonly metadata?: unknown;
119
+ readonly payload?: unknown;
120
+ readonly error?: WorkflowErrorRecord;
121
+ }
122
+ /** Decoded fields carried by a workflow webhook resume token. */
123
+ interface ParsedWorkflowWebhookToken {
124
+ readonly runId: RunId;
125
+ readonly name: string;
126
+ readonly messageId: MessageId;
127
+ }
128
+ /** Decoded fields carried by any workflow hook token, including webhook tokens. */
129
+ interface ParsedWorkflowHookToken extends ParsedWorkflowWebhookToken {
130
+ readonly kind: HookKind;
131
+ readonly metadata?: unknown;
132
+ }
133
+ /** Alias for message-backed hook handles. */
134
+ type HookCreator<TPayload = unknown> = Hook<TPayload>;
135
+ /** Alias for webhook-backed hook handles. */
136
+ type WebhookCreator<TPayload = unknown> = Webhook<TPayload>;
137
+ /** Minimal hook creation surface exposed on the workflow step API. */
138
+ interface WorkflowStepHookCreateApi {
139
+ /** Creates a message-backed external resume hook. */
140
+ create<TPayload = unknown>(options: CreateHookOptions): Hook<TPayload>;
141
+ /** Creates a message-backed external resume hook with schema-validated payloads. */
142
+ create<const TSchema extends Schema>(options: CreateHookOptions<TSchema>): Hook<SchemaOutput<TSchema>>;
143
+ /** Creates a webhook-labeled external resume hook. */
144
+ createWebhook<TPayload = unknown>(options: CreateWebhookOptions): Webhook<TPayload>;
145
+ /** Creates a webhook-labeled external resume hook with schema-validated payloads. */
146
+ createWebhook<const TSchema extends Schema>(options: CreateWebhookOptions<TSchema>): Webhook<SchemaOutput<TSchema>>;
147
+ }
148
+ //#endregion
149
+ export { CreateHookOptions, CreateWebhookOptions, Hook, HookCreator, HookInspection, HookInspectionStatus, HookKind, HookToken, HookTokenPayload, ParsedWorkflowHookToken, ParsedWorkflowWebhookToken, ResumeHookOptions, ResumeWebhookOptions, WORKFLOW_HOOK_TOKEN_PREFIX, WORKFLOW_HOOK_TOKEN_VERSION, Webhook, WebhookCreator, WorkflowStepHookCreateApi, parseHookToken, parseWebhookToken, parsedWorkflowHookTokenSchema, parsedWorkflowWebhookTokenSchema, workflowHookKindSchema, workflowHookTokenPayloadSchema, workflowHookTokenSchema };
@@ -0,0 +1,66 @@
1
+ import { nonBlankStringSchema } from "./common.mjs";
2
+ import { runIdSchema } from "./run-id.mjs";
3
+ import { workflowPersistedValueSchema } from "./run.mjs";
4
+ import { WorkflowHookError } from "../errors/hook.mjs";
5
+ import "../errors/mod.mjs";
6
+ import { messageIdSchema } from "./message-id.mjs";
7
+ import { z } from "zod";
8
+ import { decodeBase64UrlString } from "@temelj/string";
9
+ //#region src/types/hook.ts
10
+ const WORKFLOW_HOOK_TOKEN_PREFIX = "temelj-hook:";
11
+ const WORKFLOW_HOOK_TOKEN_VERSION = "v1";
12
+ const workflowHookKindSchema = z.enum(["hook", "webhook"]);
13
+ const workflowHookTokenPayloadSchema = z.object({
14
+ v: z.literal(1).optional(),
15
+ runId: runIdSchema,
16
+ name: nonBlankStringSchema,
17
+ messageId: messageIdSchema,
18
+ kind: workflowHookKindSchema.optional(),
19
+ metadata: workflowPersistedValueSchema.optional()
20
+ });
21
+ const workflowHookTokenSchema = nonBlankStringSchema.refine((token) => token.startsWith(WORKFLOW_HOOK_TOKEN_PREFIX), { error: "Workflow hook token is invalid" });
22
+ /** Decoded fields carried by a workflow webhook resume token. */
23
+ const parsedWorkflowWebhookTokenSchema = z.object({
24
+ runId: runIdSchema,
25
+ name: nonBlankStringSchema,
26
+ messageId: messageIdSchema
27
+ });
28
+ const parsedWorkflowHookTokenSchema = parsedWorkflowWebhookTokenSchema.extend({
29
+ kind: workflowHookKindSchema,
30
+ metadata: workflowPersistedValueSchema.optional()
31
+ });
32
+ /** Parses a workflow hook token and throws WorkflowHookError when it is invalid. */
33
+ function parseHookToken(token) {
34
+ const parsedToken = workflowHookTokenSchema.safeParse(token);
35
+ if (!parsedToken.success) WorkflowHookError.tokenInvalid();
36
+ const body = parsedToken.data.slice(12);
37
+ if (body.startsWith(`v1:`)) try {
38
+ const payload = JSON.parse(decodeBase64UrlString(body.slice(3)));
39
+ const hook = workflowHookTokenPayloadSchema.safeParse(payload);
40
+ if (!hook.success) WorkflowHookError.tokenInvalid();
41
+ const parsedHook = parsedWorkflowHookTokenSchema.safeParse({
42
+ runId: hook.data.runId,
43
+ name: hook.data.name,
44
+ messageId: hook.data.messageId,
45
+ kind: hook.data.kind ?? "hook",
46
+ ...hook.data.metadata === void 0 ? {} : { metadata: hook.data.metadata }
47
+ });
48
+ if (!parsedHook.success) WorkflowHookError.tokenInvalid();
49
+ return parsedHook.data;
50
+ } catch (error) {
51
+ if (!(error instanceof WorkflowHookError)) WorkflowHookError.tokenInvalid();
52
+ WorkflowHookError.tokenInvalid();
53
+ }
54
+ WorkflowHookError.tokenInvalid();
55
+ }
56
+ /** Parses a workflow webhook token and throws a webhook-specific options error when invalid. */
57
+ function parseWebhookToken(token) {
58
+ try {
59
+ return parseHookToken(token);
60
+ } catch (error) {
61
+ if (error instanceof WorkflowHookError) WorkflowHookError.webhookTokenInvalid();
62
+ throw error;
63
+ }
64
+ }
65
+ //#endregion
66
+ export { WORKFLOW_HOOK_TOKEN_PREFIX, WORKFLOW_HOOK_TOKEN_VERSION, parseHookToken, parseWebhookToken, parsedWorkflowHookTokenSchema, parsedWorkflowWebhookTokenSchema, workflowHookKindSchema, workflowHookTokenPayloadSchema, workflowHookTokenSchema };
@@ -0,0 +1,63 @@
1
+ import { RunId } from "./run-id.mjs";
2
+ import { StepId } from "./step-id.mjs";
3
+ import "./run.mjs";
4
+ import { z } from "zod";
5
+ //#region src/types/lock.d.ts
6
+ declare const workflowLockRecordSchema: z.ZodObject<{
7
+ key: z.ZodString;
8
+ namespace: z.ZodString;
9
+ holderId: z.ZodString;
10
+ holderRunId: z.ZodOptional<z.ZodString>;
11
+ holderStepId: z.ZodOptional<z.ZodString>;
12
+ fencingToken: z.ZodNumber;
13
+ acquiredAt: z.ZodCustom<Temporal.Instant, Temporal.Instant>;
14
+ leaseExpiresAt: z.ZodCustom<Temporal.Instant, Temporal.Instant>;
15
+ releasedAt: z.ZodOptional<z.ZodCustom<Temporal.Instant, Temporal.Instant>>;
16
+ }, z.core.$strip>;
17
+ /** Stored lease-backed workflow lock state. */
18
+ interface LockRecord {
19
+ readonly key: string;
20
+ readonly namespace: string;
21
+ readonly holderId: string;
22
+ readonly holderRunId?: RunId;
23
+ readonly holderStepId?: StepId;
24
+ readonly fencingToken: number;
25
+ readonly acquiredAt: Temporal.Instant;
26
+ readonly leaseExpiresAt: Temporal.Instant;
27
+ readonly releasedAt?: Temporal.Instant;
28
+ }
29
+ /** Options for acquiring a workflow lock. */
30
+ interface AcquireLockOptions {
31
+ readonly holderId: string;
32
+ readonly holderRunId?: RunId;
33
+ readonly holderStepId?: StepId;
34
+ readonly leaseDuration: Temporal.Duration;
35
+ readonly wait?: boolean;
36
+ readonly waitTimeout?: Temporal.Duration;
37
+ readonly waitDeadlineAt?: Temporal.Instant;
38
+ readonly now?: Temporal.Instant;
39
+ }
40
+ /** Options for acquiring a workflow lock from a durable step. */
41
+ interface WorkflowStepAcquireLockOptions {
42
+ readonly holderId?: string;
43
+ readonly leaseDuration: Temporal.Duration;
44
+ readonly wait?: boolean;
45
+ readonly waitTimeout?: Temporal.Duration;
46
+ readonly now?: Temporal.Instant;
47
+ }
48
+ /** Options for releasing a workflow lock from a durable step. */
49
+ interface WorkflowStepReleaseLockOptions {
50
+ readonly holderId?: string;
51
+ readonly now?: Temporal.Instant;
52
+ }
53
+ /** Options for releasing a workflow lock outside workflow step execution. */
54
+ interface ReleaseLockOptions {
55
+ readonly holderId: string;
56
+ readonly now?: Temporal.Instant;
57
+ }
58
+ /** Options for releasing a workflow lock whose lease has expired. */
59
+ interface ReleaseStaleLockOptions {
60
+ readonly now?: Temporal.Instant;
61
+ }
62
+ //#endregion
63
+ export { AcquireLockOptions, LockRecord, ReleaseLockOptions, ReleaseStaleLockOptions, WorkflowStepAcquireLockOptions, WorkflowStepReleaseLockOptions, workflowLockRecordSchema };
@@ -0,0 +1,18 @@
1
+ import { nonBlankStringSchema, positiveSafeIntegerSchema, temporalInstantSchema } from "./common.mjs";
2
+ import { runIdSchema } from "./run-id.mjs";
3
+ import { stepIdSchema } from "./step-id.mjs";
4
+ import { z } from "zod";
5
+ //#region src/types/lock.ts
6
+ const workflowLockRecordSchema = z.object({
7
+ key: nonBlankStringSchema,
8
+ namespace: nonBlankStringSchema,
9
+ holderId: nonBlankStringSchema,
10
+ holderRunId: runIdSchema.optional(),
11
+ holderStepId: stepIdSchema.optional(),
12
+ fencingToken: positiveSafeIntegerSchema,
13
+ acquiredAt: temporalInstantSchema,
14
+ leaseExpiresAt: temporalInstantSchema,
15
+ releasedAt: temporalInstantSchema.optional()
16
+ });
17
+ //#endregion
18
+ export { workflowLockRecordSchema };
@@ -0,0 +1,7 @@
1
+ import { z } from "zod";
2
+ //#region src/types/message-id.d.ts
3
+ declare const messageIdSchema: z.ZodString;
4
+ /** Non-empty identifier used to route durable workflow messages. */
5
+ type MessageId = string;
6
+ //#endregion
7
+ export { MessageId, messageIdSchema };
@@ -0,0 +1,5 @@
1
+ import { z } from "zod";
2
+ //#region src/types/message-id.ts
3
+ const messageIdSchema = z.string().refine((value) => value.trim().length > 0, "Expected an ID");
4
+ //#endregion
5
+ export { messageIdSchema };
@@ -0,0 +1,87 @@
1
+ import { MessageId } from "./message-id.mjs";
2
+ import { RunId } from "./run-id.mjs";
3
+ import { WorkflowListRunsOptions } from "./run-list.mjs";
4
+ import { Schema } from "@temelj/standard-schema";
5
+ //#region src/types/message.d.ts
6
+ /** Typed message channel that maps optional keys to durable message ids. */
7
+ interface MessageChannel<TPayload = unknown, TKey = void> {
8
+ readonly name: string;
9
+ readonly schema?: Schema;
10
+ readonly resolveMessageId: (...args: MessageChannelKeyArgs<TKey>) => MessageId;
11
+ readonly types?: MessageChannelTypes<TPayload, TKey>;
12
+ }
13
+ /** Compile-time payload and key markers carried by a message channel. */
14
+ interface MessageChannelTypes<TPayload, TKey> {
15
+ readonly payload: TPayload;
16
+ readonly key: TKey;
17
+ }
18
+ /** Argument tuple required when deriving a message id from a channel key. */
19
+ type MessageChannelKeyArgs<TKey> = [void] extends [TKey] ? [key?: TKey] : [key: TKey];
20
+ /** Configuration for defining a typed message channel. */
21
+ interface MessageChannelConfig<TKey = void, TSchema extends Schema | undefined = undefined> {
22
+ readonly name: string;
23
+ readonly schema?: TSchema;
24
+ readonly resolveMessageId?: (...args: MessageChannelKeyArgs<TKey>) => MessageId;
25
+ }
26
+ /** Options for sending a concrete message id to a workflow run. */
27
+ interface SendMessageOptions {
28
+ readonly messageId: MessageId;
29
+ readonly payload?: unknown;
30
+ readonly idempotencyKey?: string;
31
+ }
32
+ /** Options for sending through a typed message channel. */
33
+ interface SendMessageChannelOptions<TPayload = unknown, TKey = void> {
34
+ readonly key?: TKey;
35
+ readonly payload?: TPayload;
36
+ readonly idempotencyKey?: string;
37
+ }
38
+ /** Object form for sending through a typed message channel. */
39
+ interface SendMessageChannelObject<TPayload = unknown, TKey = void> extends SendMessageChannelOptions<TPayload, TKey> {
40
+ readonly channel: MessageChannel<TPayload, TKey>;
41
+ }
42
+ /** Accepted input forms for sending a message to one run. */
43
+ type SendMessageInput = SendMessageOptions | SendMessageChannelObject;
44
+ /** Options for broadcasting a concrete message id to matching runs. */
45
+ interface BroadcastMessageOptions extends SendMessageOptions {
46
+ readonly payload?: unknown;
47
+ readonly target?: WorkflowListRunsOptions;
48
+ }
49
+ /** Options for broadcasting through a typed message channel to matching runs. */
50
+ interface BroadcastMessageChannelOptions<TPayload = unknown, TKey = void> extends SendMessageChannelOptions<TPayload, TKey> {
51
+ readonly target?: WorkflowListRunsOptions;
52
+ }
53
+ /** Object form for broadcasting through a typed message channel. */
54
+ interface BroadcastMessageChannelObject<TPayload = unknown, TKey = void> extends BroadcastMessageChannelOptions<TPayload, TKey> {
55
+ readonly channel: MessageChannel<TPayload, TKey>;
56
+ }
57
+ /** Accepted input forms for broadcasting a message to matching runs. */
58
+ type BroadcastMessageInput = BroadcastMessageOptions | BroadcastMessageChannelObject;
59
+ /** Summary returned after broadcasting a message to matching runs. */
60
+ interface BroadcastMessageResult {
61
+ readonly messageId: MessageId;
62
+ readonly runIds: RunId[];
63
+ readonly deliveredMessages: number;
64
+ }
65
+ /** Options for waiting on a concrete message id from workflow code. */
66
+ interface WaitForMessageOptions<TSchema extends Schema | undefined = undefined> {
67
+ readonly commandId?: string;
68
+ readonly name?: string;
69
+ readonly messageId: MessageId;
70
+ readonly timeout?: Temporal.Duration;
71
+ readonly schema?: TSchema;
72
+ }
73
+ /** Options for waiting through a typed message channel from workflow code. */
74
+ interface WaitForMessageChannelOptions<TKey = void> {
75
+ readonly commandId?: string;
76
+ readonly name?: string;
77
+ readonly key?: TKey;
78
+ readonly timeout?: Temporal.Duration;
79
+ }
80
+ /** Object form for waiting through a typed message channel. */
81
+ interface WaitForMessageChannelObject<TKey = void> extends WaitForMessageChannelOptions<TKey> {
82
+ readonly channel: MessageChannel<unknown, TKey>;
83
+ }
84
+ /** Accepted input forms for waiting on a workflow message. */
85
+ type WaitForMessageInput<TSchema extends Schema | undefined = undefined> = WaitForMessageOptions<TSchema> | WaitForMessageChannelObject;
86
+ //#endregion
87
+ export { BroadcastMessageChannelObject, BroadcastMessageChannelOptions, BroadcastMessageInput, BroadcastMessageOptions, BroadcastMessageResult, MessageChannel, MessageChannelConfig, MessageChannelKeyArgs, MessageChannelTypes, type MessageId, SendMessageChannelObject, SendMessageChannelOptions, SendMessageInput, SendMessageOptions, WaitForMessageChannelObject, WaitForMessageChannelOptions, WaitForMessageInput, WaitForMessageOptions };