@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,13 @@
1
+ import { RunId } from "../../types/run-id.mjs";
2
+ import "../../types/run.mjs";
3
+ //#region src/engine/summary/recovery-run-timestamps.d.ts
4
+ interface WorkflowRecoveryTimestamp {
5
+ readonly runId: RunId;
6
+ readonly timestamp: Temporal.Instant;
7
+ }
8
+ declare function isWorkflowRecoveryRunDueAt(timestamp: Temporal.Instant | undefined, now: Temporal.Instant): boolean;
9
+ declare function earliestWorkflowRecoveryTimestamp(current: WorkflowRecoveryTimestamp | undefined, runId: RunId, timestamp: Temporal.Instant): WorkflowRecoveryTimestamp;
10
+ declare function earliestWorkflowRecoveryInstant(current: Temporal.Instant | undefined, timestamp: Temporal.Instant): Temporal.Instant;
11
+ declare function latestOptionalWorkflowRecoveryInstant(current: Temporal.Instant | undefined, timestamp: Temporal.Instant | undefined): Temporal.Instant | undefined;
12
+ //#endregion
13
+ export { WorkflowRecoveryTimestamp, earliestWorkflowRecoveryInstant, earliestWorkflowRecoveryTimestamp, isWorkflowRecoveryRunDueAt, latestOptionalWorkflowRecoveryInstant };
@@ -0,0 +1,18 @@
1
+ //#region src/engine/summary/recovery-run-timestamps.ts
2
+ function isWorkflowRecoveryRunDueAt(timestamp, now) {
3
+ return timestamp === void 0 || Temporal.Instant.compare(timestamp, now) <= 0;
4
+ }
5
+ function earliestWorkflowRecoveryTimestamp(current, runId, timestamp) {
6
+ return current === void 0 || Temporal.Instant.compare(timestamp, current.timestamp) < 0 ? {
7
+ runId,
8
+ timestamp
9
+ } : current;
10
+ }
11
+ function earliestWorkflowRecoveryInstant(current, timestamp) {
12
+ return current === void 0 || Temporal.Instant.compare(timestamp, current) < 0 ? timestamp : current;
13
+ }
14
+ function latestOptionalWorkflowRecoveryInstant(current, timestamp) {
15
+ return timestamp === void 0 || current !== void 0 && Temporal.Instant.compare(timestamp, current) <= 0 ? current : timestamp;
16
+ }
17
+ //#endregion
18
+ export { earliestWorkflowRecoveryInstant, earliestWorkflowRecoveryTimestamp, isWorkflowRecoveryRunDueAt, latestOptionalWorkflowRecoveryInstant };
@@ -0,0 +1,23 @@
1
+ import { WorkflowRecoveryDueSummary, WorkflowRecoveryFailedSummary, WorkflowRecoveryLeaseSummary, WorkflowRecoveryMissingImplementationSummary, WorkflowRecoveryRetrySummary } from "../../types/summary.mjs";
2
+ import { WorkflowRunRecord } from "../../types/run.mjs";
3
+ import { WorkflowRecoveryTimestamp } from "./recovery-run-timestamps.mjs";
4
+ //#region src/engine/summary/recovery-runs.d.ts
5
+ interface WorkflowRecoveryRunSummaryParts {
6
+ readonly total: number;
7
+ readonly recoverableRunIds: readonly string[];
8
+ readonly due: WorkflowRecoveryDueSummary;
9
+ readonly lease: WorkflowRecoveryLeaseSummary;
10
+ readonly retry: WorkflowRecoveryRetrySummary;
11
+ readonly missingImplementation: WorkflowRecoveryMissingImplementationSummary;
12
+ readonly failed: WorkflowRecoveryFailedSummary;
13
+ readonly nextAvailable?: WorkflowRecoveryTimestamp;
14
+ readonly nextLeaseExpires?: WorkflowRecoveryTimestamp;
15
+ readonly nextRetry?: WorkflowRecoveryTimestamp;
16
+ }
17
+ interface WorkflowRecoveryRunSummaryReducer {
18
+ addRun(run: WorkflowRunRecord): void;
19
+ finish(): WorkflowRecoveryRunSummaryParts;
20
+ }
21
+ declare function createWorkflowRecoveryRunSummaryReducer(now: Temporal.Instant): WorkflowRecoveryRunSummaryReducer;
22
+ //#endregion
23
+ export { WorkflowRecoveryRunSummaryParts, WorkflowRecoveryRunSummaryReducer, createWorkflowRecoveryRunSummaryReducer };
@@ -0,0 +1,54 @@
1
+ import { createWorkflowRecoveryDueRunSummaryReducer } from "./recovery-due-runs.mjs";
2
+ import { createWorkflowRecoveryFailedRunSummaryReducer } from "./recovery-failed-runs.mjs";
3
+ import { createWorkflowRecoveryLeaseRunSummaryReducer } from "./recovery-lease-runs.mjs";
4
+ import { createWorkflowRecoveryRetryRunSummaryReducer } from "./recovery-retry-runs.mjs";
5
+ //#region src/engine/summary/recovery-runs.ts
6
+ function createWorkflowRecoveryRunSummaryReducer(now) {
7
+ const due = createWorkflowRecoveryDueRunSummaryReducer(now);
8
+ const lease = createWorkflowRecoveryLeaseRunSummaryReducer(now);
9
+ const retry = createWorkflowRecoveryRetryRunSummaryReducer(now);
10
+ const failed = createWorkflowRecoveryFailedRunSummaryReducer();
11
+ let total = 0;
12
+ return {
13
+ addRun(run) {
14
+ total++;
15
+ due.addRun(run);
16
+ lease.addRun(run);
17
+ retry.addRun(run);
18
+ failed.addRun(run);
19
+ },
20
+ finish() {
21
+ const dueParts = due.finish();
22
+ const leaseParts = lease.finish();
23
+ const retryParts = retry.finish();
24
+ const failedParts = failed.finish();
25
+ return {
26
+ total,
27
+ recoverableRunIds: finishWorkflowRecoveryRecoverableRunIds(dueParts, leaseParts, retryParts, failedParts),
28
+ due: dueParts.due,
29
+ lease: leaseParts.lease,
30
+ retry: retryParts.retry,
31
+ missingImplementation: retryParts.missingImplementation,
32
+ failed: failedParts.failed,
33
+ ...finishWorkflowRecoveryNextSummary(dueParts, leaseParts, retryParts)
34
+ };
35
+ }
36
+ };
37
+ }
38
+ function finishWorkflowRecoveryRecoverableRunIds(due, lease, retry, failed) {
39
+ return [.../* @__PURE__ */ new Set([
40
+ ...due.dueRunIds,
41
+ ...lease.staleRunIds,
42
+ ...retry.dueRetryRunIds,
43
+ ...failed.failedRunIds
44
+ ])].sort();
45
+ }
46
+ function finishWorkflowRecoveryNextSummary(due, lease, retry) {
47
+ return {
48
+ ...due.nextAvailable === void 0 ? {} : { nextAvailable: due.nextAvailable },
49
+ ...lease.nextLeaseExpires === void 0 ? {} : { nextLeaseExpires: lease.nextLeaseExpires },
50
+ ...retry.nextRetry === void 0 ? {} : { nextRetry: retry.nextRetry }
51
+ };
52
+ }
53
+ //#endregion
54
+ export { createWorkflowRecoveryRunSummaryReducer };
@@ -0,0 +1,10 @@
1
+ import { ScheduleRecord } from "../../types/schedule.mjs";
2
+ import { WorkflowRecoveryScheduleSummary } from "../../types/summary.mjs";
3
+ //#region src/engine/summary/recovery-schedules.d.ts
4
+ interface WorkflowRecoveryScheduleSummaryReducer {
5
+ addSchedule(schedule: ScheduleRecord): void;
6
+ finish(): WorkflowRecoveryScheduleSummary;
7
+ }
8
+ declare function createWorkflowRecoveryScheduleSummaryReducer(now: Temporal.Instant): WorkflowRecoveryScheduleSummaryReducer;
9
+ //#endregion
10
+ export { WorkflowRecoveryScheduleSummaryReducer, createWorkflowRecoveryScheduleSummaryReducer };
@@ -0,0 +1,46 @@
1
+ //#region src/engine/summary/recovery-schedules.ts
2
+ function createWorkflowRecoveryScheduleSummaryReducer(now) {
3
+ const schedules = createWorkflowRecoveryScheduleAccumulator();
4
+ return {
5
+ addSchedule(schedule) {
6
+ addWorkflowRecoverySchedule(schedules, schedule, now);
7
+ },
8
+ finish() {
9
+ return finishWorkflowRecoveryScheduleSummary(schedules);
10
+ }
11
+ };
12
+ }
13
+ function createWorkflowRecoveryScheduleAccumulator() {
14
+ return {
15
+ dueScheduleIds: /* @__PURE__ */ new Set(),
16
+ invalidNextFireScheduleIds: /* @__PURE__ */ new Set(),
17
+ scheduleIds: /* @__PURE__ */ new Set()
18
+ };
19
+ }
20
+ function addWorkflowRecoverySchedule(schedules, schedule, now) {
21
+ if (schedule.status !== "active") return;
22
+ schedules.scheduleIds.add(schedule.id);
23
+ if (Temporal.Instant.compare(schedule.nextFireAt, now) <= 0) schedules.dueScheduleIds.add(schedule.id);
24
+ schedules.nextFire = earliestWorkflowRecoveryScheduleFire(schedules.nextFire, schedule.id, schedule.nextFireAt);
25
+ }
26
+ function finishWorkflowRecoveryScheduleSummary(schedules) {
27
+ return {
28
+ total: schedules.scheduleIds.size,
29
+ due: schedules.dueScheduleIds.size,
30
+ scheduleIds: [...schedules.scheduleIds].sort(),
31
+ dueScheduleIds: [...schedules.dueScheduleIds].sort(),
32
+ invalidNextFireScheduleIds: [...schedules.invalidNextFireScheduleIds].sort(),
33
+ ...schedules.nextFire === void 0 ? {} : {
34
+ nextFireAt: schedules.nextFire.timestamp,
35
+ nextFireScheduleId: schedules.nextFire.scheduleId
36
+ }
37
+ };
38
+ }
39
+ function earliestWorkflowRecoveryScheduleFire(current, scheduleId, timestamp) {
40
+ return current === void 0 || Temporal.Instant.compare(timestamp, current.timestamp) < 0 ? {
41
+ scheduleId,
42
+ timestamp
43
+ } : current;
44
+ }
45
+ //#endregion
46
+ export { createWorkflowRecoveryScheduleSummaryReducer };
@@ -0,0 +1,10 @@
1
+ import { WorkflowRecoverySleepWaitSummary } from "../../types/summary.mjs";
2
+ import { WorkflowStepAttemptRecord } from "../../types/step-attempts.mjs";
3
+ //#region src/engine/summary/recovery-sleep-waits.d.ts
4
+ interface WorkflowRecoverySleepWaitSummaryReducer {
5
+ addAttempts(attempts: readonly WorkflowStepAttemptRecord[]): void;
6
+ finish(): WorkflowRecoverySleepWaitSummary;
7
+ }
8
+ declare function createWorkflowRecoverySleepWaitSummaryReducer(now: Temporal.Instant): WorkflowRecoverySleepWaitSummaryReducer;
9
+ //#endregion
10
+ export { WorkflowRecoverySleepWaitSummaryReducer, createWorkflowRecoverySleepWaitSummaryReducer };
@@ -0,0 +1,53 @@
1
+ import { earliestWorkflowRecoveryTimestamp } from "./recovery-run-timestamps.mjs";
2
+ //#region src/engine/summary/recovery-sleep-waits.ts
3
+ function createWorkflowRecoverySleepWaitSummaryReducer(now) {
4
+ const sleep = createWorkflowSleepWaitAccumulator();
5
+ return {
6
+ addAttempts(attempts) {
7
+ for (const attempt of attempts) addWorkflowSleepWaitAttempt(sleep, attempt, now);
8
+ },
9
+ finish() {
10
+ return finishWorkflowSleepWaitSummary(sleep);
11
+ }
12
+ };
13
+ }
14
+ function createWorkflowSleepWaitAccumulator() {
15
+ return {
16
+ runIds: /* @__PURE__ */ new Set(),
17
+ dueRunIds: /* @__PURE__ */ new Set(),
18
+ dueStepIds: /* @__PURE__ */ new Set(),
19
+ invalidUntilRunIds: /* @__PURE__ */ new Set()
20
+ };
21
+ }
22
+ function addWorkflowSleepWaitAttempt(sleep, attempt, now) {
23
+ if (attempt.status !== "running" || attempt.kind !== "sleep") return;
24
+ sleep.runIds.add(attempt.runId);
25
+ if (attempt.until === void 0) {
26
+ sleep.dueRunIds.add(attempt.runId);
27
+ sleep.dueStepIds.add(attempt.stepId);
28
+ sleep.invalidUntilRunIds.add(attempt.runId);
29
+ return;
30
+ }
31
+ if (Temporal.Instant.compare(attempt.until, now) <= 0) {
32
+ sleep.dueRunIds.add(attempt.runId);
33
+ sleep.dueStepIds.add(attempt.stepId);
34
+ return;
35
+ }
36
+ sleep.nextWake = earliestWorkflowRecoveryTimestamp(sleep.nextWake, attempt.runId, attempt.until);
37
+ }
38
+ function finishWorkflowSleepWaitSummary(sleep) {
39
+ return {
40
+ active: sleep.runIds.size,
41
+ due: sleep.dueRunIds.size,
42
+ runIds: [...sleep.runIds].sort(),
43
+ dueRunIds: [...sleep.dueRunIds].sort(),
44
+ dueStepIds: [...sleep.dueStepIds].sort(),
45
+ invalidUntilRunIds: [...sleep.invalidUntilRunIds].sort(),
46
+ ...sleep.nextWake === void 0 ? {} : {
47
+ nextWakeAt: sleep.nextWake.timestamp,
48
+ nextWakeRunId: sleep.nextWake.runId
49
+ }
50
+ };
51
+ }
52
+ //#endregion
53
+ export { createWorkflowRecoverySleepWaitSummaryReducer };
@@ -0,0 +1,21 @@
1
+ import { WorkflowRecoveryWaitSummary } from "../../types/summary.mjs";
2
+ import { WorkflowStepAttemptRecord } from "../../types/step-attempts.mjs";
3
+ import { WorkflowRunRecord } from "../../types/run.mjs";
4
+ import { EventRecord } from "../../types/events.mjs";
5
+ //#region src/engine/summary/recovery-waits.d.ts
6
+ interface WorkflowRecoveryWaitInputs {
7
+ readonly sleepAttempts?: readonly WorkflowStepAttemptRecord[];
8
+ readonly messageWaitAttempts?: readonly WorkflowStepAttemptRecord[];
9
+ readonly childWorkflowAttempts?: readonly WorkflowStepAttemptRecord[];
10
+ readonly childRuns?: readonly WorkflowRunRecord[];
11
+ readonly eventsByRunId?: ReadonlyMap<string, readonly EventRecord[]>;
12
+ }
13
+ interface WorkflowRecoveryWaitSummaryReducer {
14
+ addSleepAttempts(attempts: readonly WorkflowStepAttemptRecord[]): void;
15
+ addMessageWaitAttempts(attempts: readonly WorkflowStepAttemptRecord[]): void;
16
+ addChildWorkflowAttempts(attempts: readonly WorkflowStepAttemptRecord[]): void;
17
+ finish(): WorkflowRecoveryWaitSummary;
18
+ }
19
+ declare function createWorkflowRecoveryWaitSummaryReducer(inputs: WorkflowRecoveryWaitInputs, now: Temporal.Instant): WorkflowRecoveryWaitSummaryReducer;
20
+ //#endregion
21
+ export { WorkflowRecoveryWaitInputs, WorkflowRecoveryWaitSummaryReducer, createWorkflowRecoveryWaitSummaryReducer };
@@ -0,0 +1,29 @@
1
+ import { createWorkflowRecoveryChildWorkflowWaitSummaryReducer } from "./recovery-child-workflow-waits.mjs";
2
+ import { createWorkflowRecoveryMessageWaitSummaryReducer } from "./recovery-message-waits.mjs";
3
+ import { createWorkflowRecoverySleepWaitSummaryReducer } from "./recovery-sleep-waits.mjs";
4
+ //#region src/engine/summary/recovery-waits.ts
5
+ function createWorkflowRecoveryWaitSummaryReducer(inputs, now) {
6
+ const sleep = createWorkflowRecoverySleepWaitSummaryReducer(now);
7
+ const message = createWorkflowRecoveryMessageWaitSummaryReducer(inputs.eventsByRunId ?? /* @__PURE__ */ new Map(), now);
8
+ const childWorkflow = createWorkflowRecoveryChildWorkflowWaitSummaryReducer(inputs.childRuns ?? [], now);
9
+ return {
10
+ addSleepAttempts(attempts) {
11
+ sleep.addAttempts(attempts);
12
+ },
13
+ addMessageWaitAttempts(attempts) {
14
+ message.addAttempts(attempts);
15
+ },
16
+ addChildWorkflowAttempts(attempts) {
17
+ childWorkflow.addAttempts(attempts);
18
+ },
19
+ finish() {
20
+ return {
21
+ sleep: sleep.finish(),
22
+ message: message.finish(),
23
+ childWorkflow: childWorkflow.finish()
24
+ };
25
+ }
26
+ };
27
+ }
28
+ //#endregion
29
+ export { createWorkflowRecoveryWaitSummaryReducer };
@@ -0,0 +1,13 @@
1
+ import { WorkflowRunRecord } from "../../types/run.mjs";
2
+ //#region src/engine/summary/run-availability.d.ts
3
+ interface WorkflowRunAvailabilitySummaryFields {
4
+ readonly nextAvailableAt?: Temporal.Instant;
5
+ readonly oldestPendingAt?: Temporal.Instant;
6
+ readonly oldestRunningAt?: Temporal.Instant;
7
+ }
8
+ declare function createWorkflowRunAvailabilitySummaryReducer(): {
9
+ readonly addRun: (run: WorkflowRunRecord) => void;
10
+ readonly finish: () => WorkflowRunAvailabilitySummaryFields;
11
+ };
12
+ //#endregion
13
+ export { WorkflowRunAvailabilitySummaryFields, createWorkflowRunAvailabilitySummaryReducer };
@@ -0,0 +1,37 @@
1
+ import { isScheduledWorkflowRunStatus } from "../../utility.mjs";
2
+ import { earliestOptionalTimestamp } from "../../temporal.mjs";
3
+ //#region src/engine/summary/run-availability.ts
4
+ function createWorkflowRunAvailabilitySummaryReducer() {
5
+ const availability = createWorkflowRunAvailabilityAccumulator();
6
+ return {
7
+ addRun(run) {
8
+ addWorkflowRunAvailability(availability, run);
9
+ },
10
+ finish() {
11
+ return finishWorkflowRunAvailabilitySummary(availability);
12
+ }
13
+ };
14
+ }
15
+ function createWorkflowRunAvailabilityAccumulator() {
16
+ return {};
17
+ }
18
+ function addWorkflowRunAvailability(availability, run) {
19
+ if (isScheduledWorkflowRunStatus(run.status)) setWorkflowRunAvailabilityScheduled(availability, run);
20
+ if (run.status === "running") setWorkflowRunAvailabilityRunning(availability, run);
21
+ }
22
+ function setWorkflowRunAvailabilityScheduled(availability, run) {
23
+ availability.nextAvailableAt = earliestOptionalTimestamp(availability.nextAvailableAt, run.availableAt);
24
+ availability.oldestPendingAt = earliestOptionalTimestamp(availability.oldestPendingAt, run.createdAt);
25
+ }
26
+ function setWorkflowRunAvailabilityRunning(availability, run) {
27
+ availability.oldestRunningAt = earliestOptionalTimestamp(availability.oldestRunningAt, run.startedAt ?? run.createdAt);
28
+ }
29
+ function finishWorkflowRunAvailabilitySummary(availability) {
30
+ return {
31
+ ...availability.nextAvailableAt === void 0 ? {} : { nextAvailableAt: availability.nextAvailableAt },
32
+ ...availability.oldestPendingAt === void 0 ? {} : { oldestPendingAt: availability.oldestPendingAt },
33
+ ...availability.oldestRunningAt === void 0 ? {} : { oldestRunningAt: availability.oldestRunningAt }
34
+ };
35
+ }
36
+ //#endregion
37
+ export { createWorkflowRunAvailabilitySummaryReducer };
@@ -0,0 +1,14 @@
1
+ import { WorkflowRunCleanupSummary } from "../../types/summary.mjs";
2
+ import { WorkflowRunRecord } from "../../types/run.mjs";
3
+ //#region src/engine/summary/run-cleanup.d.ts
4
+ interface WorkflowRunCleanupSummaryFields {
5
+ readonly cleanup?: WorkflowRunCleanupSummary;
6
+ }
7
+ interface WorkflowRunCleanupSummaryReducer {
8
+ readonly addRun: (run: WorkflowRunRecord) => void;
9
+ readonly finish: () => WorkflowRunCleanupSummaryFields;
10
+ }
11
+ /** Creates an accumulator for terminal-run cleanup eligibility summary fields. */
12
+ declare function createWorkflowRunCleanupSummaryReducer(cutoff: Temporal.Instant | undefined): WorkflowRunCleanupSummaryReducer;
13
+ //#endregion
14
+ export { WorkflowRunCleanupSummaryReducer, createWorkflowRunCleanupSummaryReducer };
@@ -0,0 +1,44 @@
1
+ import { earliestOptionalTimestamp, latestOptionalTimestamp } from "../../temporal.mjs";
2
+ import { createWorkflowTerminalRunStatusCounts, createWorkflowTerminalRunStatusRunIds, sortedWorkflowTerminalRunStatusRunIds } from "./run-metrics.mjs";
3
+ //#region src/engine/summary/run-cleanup.ts
4
+ /** Creates an accumulator for terminal-run cleanup eligibility summary fields. */
5
+ function createWorkflowRunCleanupSummaryReducer(cutoff) {
6
+ const cleanup = createWorkflowRunCleanupAccumulator();
7
+ return {
8
+ addRun(run) {
9
+ addWorkflowRunCleanupEligibility(cleanup, run, cutoff);
10
+ },
11
+ finish() {
12
+ return finishWorkflowRunCleanupSummary(cleanup, cutoff);
13
+ }
14
+ };
15
+ }
16
+ function createWorkflowRunCleanupAccumulator() {
17
+ return {
18
+ eligibleRuns: 0,
19
+ status: createWorkflowTerminalRunStatusCounts(),
20
+ statusRunIds: createWorkflowTerminalRunStatusRunIds()
21
+ };
22
+ }
23
+ function addWorkflowRunCleanupEligibility(cleanup, run, cutoff) {
24
+ if (cutoff === void 0 || run.status !== "completed" && run.status !== "failed" && run.status !== "canceled" || run.finishedAt === void 0 || Temporal.Instant.compare(run.finishedAt, cutoff) >= 0) return;
25
+ cleanup.eligibleRuns++;
26
+ cleanup.status[run.status]++;
27
+ cleanup.statusRunIds[run.status].push(run.id);
28
+ setWorkflowRunCleanupFinishedRange(cleanup, run);
29
+ }
30
+ function setWorkflowRunCleanupFinishedRange(cleanup, run) {
31
+ cleanup.oldestFinishedAt = earliestOptionalTimestamp(cleanup.oldestFinishedAt, run.finishedAt);
32
+ cleanup.newestFinishedAt = latestOptionalTimestamp(cleanup.newestFinishedAt, run.finishedAt);
33
+ }
34
+ function finishWorkflowRunCleanupSummary(cleanup, cutoff) {
35
+ return cutoff === void 0 ? {} : { cleanup: {
36
+ eligibleRuns: cleanup.eligibleRuns,
37
+ status: cleanup.status,
38
+ statusRunIds: sortedWorkflowTerminalRunStatusRunIds(cleanup.statusRunIds),
39
+ ...cleanup.oldestFinishedAt === void 0 ? {} : { oldestFinishedAt: cleanup.oldestFinishedAt },
40
+ ...cleanup.newestFinishedAt === void 0 ? {} : { newestFinishedAt: cleanup.newestFinishedAt }
41
+ } };
42
+ }
43
+ //#endregion
44
+ export { createWorkflowRunCleanupSummaryReducer };
@@ -0,0 +1,14 @@
1
+ import { WorkflowRunFailureSummary } from "../../types/summary.mjs";
2
+ import { WorkflowRunRecord } from "../../types/run.mjs";
3
+ //#region src/engine/summary/run-failure.d.ts
4
+ interface WorkflowRunFailureSummaryFields {
5
+ readonly failure?: WorkflowRunFailureSummary;
6
+ }
7
+ interface WorkflowRunFailureSummaryReducer {
8
+ readonly addRun: (run: WorkflowRunRecord) => void;
9
+ readonly finish: () => WorkflowRunFailureSummaryFields;
10
+ }
11
+ /** Creates an accumulator for failed-run summary fields. */
12
+ declare function createWorkflowRunFailureSummaryReducer(): WorkflowRunFailureSummaryReducer;
13
+ //#endregion
14
+ export { WorkflowRunFailureSummaryReducer, createWorkflowRunFailureSummaryReducer };
@@ -0,0 +1,62 @@
1
+ import { latestOptionalTimestamp } from "../../temporal.mjs";
2
+ //#region src/engine/summary/run-failure.ts
3
+ /** Creates an accumulator for failed-run summary fields. */
4
+ function createWorkflowRunFailureSummaryReducer() {
5
+ const failure = createWorkflowRunFailureAccumulator();
6
+ return {
7
+ addRun(run) {
8
+ if (run.status === "failed") addWorkflowRunFailure(failure, run);
9
+ },
10
+ finish() {
11
+ return finishWorkflowRunFailureSummary(failure);
12
+ }
13
+ };
14
+ }
15
+ function createWorkflowRunFailureAccumulator() {
16
+ return {
17
+ total: 0,
18
+ failedRunIds: /* @__PURE__ */ new Set(),
19
+ errors: /* @__PURE__ */ new Map()
20
+ };
21
+ }
22
+ function addWorkflowRunFailure(failure, run) {
23
+ failure.total++;
24
+ failure.failedRunIds.add(run.id);
25
+ setWorkflowRunFailureLatestFailure(failure, run);
26
+ addWorkflowRunFailureError(failure, run);
27
+ }
28
+ function setWorkflowRunFailureLatestFailure(failure, run) {
29
+ failure.latestFailedAt = latestOptionalTimestamp(failure.latestFailedAt, run.finishedAt);
30
+ }
31
+ function addWorkflowRunFailureError(failure, run) {
32
+ const errorName = run.error?.name ?? "Error";
33
+ const current = failure.errors.get(errorName) ?? {
34
+ count: 0,
35
+ failedRunIds: /* @__PURE__ */ new Set()
36
+ };
37
+ current.count++;
38
+ current.failedRunIds.add(run.id);
39
+ setWorkflowRunFailureErrorLatestFailure(current, run);
40
+ failure.errors.set(errorName, current);
41
+ }
42
+ function setWorkflowRunFailureErrorLatestFailure(error, run) {
43
+ error.latestFailedAt = latestOptionalTimestamp(error.latestFailedAt, run.finishedAt);
44
+ }
45
+ function finishWorkflowRunFailureSummary(failure) {
46
+ return failure.total === 0 ? {} : { failure: {
47
+ total: failure.total,
48
+ failedRunIds: [...failure.failedRunIds].sort(),
49
+ errors: finishWorkflowRunFailureErrors(failure.errors),
50
+ ...failure.latestFailedAt === void 0 ? {} : { latestFailedAt: failure.latestFailedAt }
51
+ } };
52
+ }
53
+ function finishWorkflowRunFailureErrors(errors) {
54
+ return [...errors.entries()].sort(([left], [right]) => left.localeCompare(right)).map(([name, summary]) => ({
55
+ name,
56
+ count: summary.count,
57
+ failedRunIds: [...summary.failedRunIds].sort(),
58
+ ...summary.latestFailedAt === void 0 ? {} : { latestFailedAt: summary.latestFailedAt }
59
+ }));
60
+ }
61
+ //#endregion
62
+ export { createWorkflowRunFailureSummaryReducer };
@@ -0,0 +1,14 @@
1
+ import { RunId } from "../../types/run-id.mjs";
2
+ import { WorkflowRunHookSummary } from "../../types/summary.mjs";
3
+ import "../../types/run.mjs";
4
+ import { ActiveWorkflowHookSummary } from "./active-events.mjs";
5
+ //#region src/engine/summary/run-hooks.d.ts
6
+ interface WorkflowRunHookActivitySummary {
7
+ readonly hook?: WorkflowRunHookSummary;
8
+ }
9
+ declare function createWorkflowRunHookActivitySummaryReducer(): {
10
+ readonly addHook: (runId: RunId, hook: ActiveWorkflowHookSummary) => void;
11
+ readonly finish: () => WorkflowRunHookActivitySummary;
12
+ };
13
+ //#endregion
14
+ export { createWorkflowRunHookActivitySummaryReducer };
@@ -0,0 +1,63 @@
1
+ import { earliestOptionalTimestamp, shouldReplaceWorkflowEarliestDefinedInstant } from "../../temporal.mjs";
2
+ //#region src/engine/summary/run-hooks.ts
3
+ function createWorkflowRunHookActivitySummaryReducer() {
4
+ const hooks = createWorkflowRunHookActivityAccumulator();
5
+ return {
6
+ addHook(runId, hook) {
7
+ addWorkflowRunHookActivity(hooks, runId, hook);
8
+ },
9
+ finish() {
10
+ return finishWorkflowRunHookActivitySummary(hooks);
11
+ }
12
+ };
13
+ }
14
+ function createWorkflowRunHookActivityAccumulator() {
15
+ return {
16
+ hookTotal: 0,
17
+ webhookTotal: 0,
18
+ hookNames: /* @__PURE__ */ new Set(),
19
+ messages: /* @__PURE__ */ new Set(),
20
+ runIds: /* @__PURE__ */ new Set(),
21
+ stepIds: /* @__PURE__ */ new Set(),
22
+ webhookNames: /* @__PURE__ */ new Set()
23
+ };
24
+ }
25
+ function addWorkflowRunHookActivity(hooks, runId, hook) {
26
+ if (hook.source === "hook") {
27
+ hooks.hookTotal++;
28
+ hooks.hookNames.add(hook.name);
29
+ } else {
30
+ hooks.webhookTotal++;
31
+ hooks.webhookNames.add(hook.name);
32
+ }
33
+ hooks.runIds.add(runId);
34
+ hooks.stepIds.add(hook.stepId);
35
+ hooks.messages.add(hook.messageId);
36
+ hooks.oldestStartedAt = earliestOptionalTimestamp(hooks.oldestStartedAt, hook.startedAt);
37
+ if (shouldReplaceWorkflowEarliestDefinedInstant(hooks.nextTimeoutAt, hook.timeoutAt)) setWorkflowRunHookNextTimeout(hooks, runId, hook);
38
+ }
39
+ function setWorkflowRunHookNextTimeout(hooks, runId, hook) {
40
+ hooks.nextTimeoutAt = hook.timeoutAt;
41
+ hooks.nextTimeoutRunId = runId;
42
+ hooks.nextTimeoutStepId = hook.stepId;
43
+ }
44
+ function finishWorkflowRunHookActivitySummary(hooks) {
45
+ return hooks.hookTotal + hooks.webhookTotal === 0 ? {} : { hook: {
46
+ activeHooks: hooks.hookTotal,
47
+ activeWebhooks: hooks.webhookTotal,
48
+ activeHookRuns: hooks.runIds.size,
49
+ hookRunIds: [...hooks.runIds].sort(),
50
+ hookStepIds: [...hooks.stepIds].sort(),
51
+ hookNames: [...hooks.hookNames].sort(),
52
+ webhookNames: [...hooks.webhookNames].sort(),
53
+ messages: [...hooks.messages].sort(),
54
+ ...hooks.oldestStartedAt === void 0 ? {} : { oldestStartedAt: hooks.oldestStartedAt },
55
+ ...hooks.nextTimeoutAt === void 0 ? {} : {
56
+ nextTimeoutAt: hooks.nextTimeoutAt,
57
+ ...hooks.nextTimeoutRunId === void 0 ? {} : { nextTimeoutRunId: hooks.nextTimeoutRunId },
58
+ ...hooks.nextTimeoutStepId === void 0 ? {} : { nextTimeoutStepId: hooks.nextTimeoutStepId }
59
+ }
60
+ } };
61
+ }
62
+ //#endregion
63
+ export { createWorkflowRunHookActivitySummaryReducer };
@@ -0,0 +1,11 @@
1
+ import { WorkflowRunLeaseSummary } from "../../types/summary.mjs";
2
+ import { WorkflowRunRecord } from "../../types/run.mjs";
3
+ //#region src/engine/summary/run-lease.d.ts
4
+ interface WorkflowRunLeaseSummaryReducer {
5
+ readonly addRun: (run: WorkflowRunRecord) => void;
6
+ readonly finish: () => WorkflowRunLeaseSummary;
7
+ }
8
+ /** Creates an accumulator for running-run lease summary fields. */
9
+ declare function createWorkflowRunLeaseSummaryReducer(now: Temporal.Instant): WorkflowRunLeaseSummaryReducer;
10
+ //#endregion
11
+ export { WorkflowRunLeaseSummaryReducer, createWorkflowRunLeaseSummaryReducer };
@@ -0,0 +1,64 @@
1
+ import { earliestOptionalTimestamp } from "../../temporal.mjs";
2
+ //#region src/engine/summary/run-lease.ts
3
+ /** Creates an accumulator for running-run lease summary fields. */
4
+ function createWorkflowRunLeaseSummaryReducer(now) {
5
+ const lease = createWorkflowRunLeaseAccumulator();
6
+ return {
7
+ addRun(run) {
8
+ if (run.status === "running") addWorkflowRunLease(lease, run, now);
9
+ },
10
+ finish() {
11
+ return finishWorkflowRunLeaseSummary(lease);
12
+ }
13
+ };
14
+ }
15
+ function createWorkflowRunLeaseAccumulator() {
16
+ return {
17
+ total: 0,
18
+ expired: 0,
19
+ runIds: /* @__PURE__ */ new Set(),
20
+ expiredRunIds: /* @__PURE__ */ new Set(),
21
+ workerIds: /* @__PURE__ */ new Set()
22
+ };
23
+ }
24
+ function addWorkflowRunLease(lease, run, now) {
25
+ lease.total++;
26
+ lease.runIds.add(run.id);
27
+ if (run.workerId !== void 0) lease.workerIds.add(run.workerId);
28
+ if (run.workerId === void 0 || run.leaseExpiresAt === void 0) {
29
+ lease.expired++;
30
+ lease.expiredRunIds.add(run.id);
31
+ return;
32
+ }
33
+ if (Temporal.Instant.compare(run.leaseExpiresAt, now) <= 0) {
34
+ lease.expired++;
35
+ lease.expiredRunIds.add(run.id);
36
+ setWorkflowRunLeaseOldestExpiration(lease, run);
37
+ return;
38
+ }
39
+ setWorkflowRunLeaseNextExpiration(lease, run.id, run.leaseExpiresAt);
40
+ }
41
+ function setWorkflowRunLeaseOldestExpiration(lease, run) {
42
+ lease.oldestExpiredAt = earliestOptionalTimestamp(lease.oldestExpiredAt, run.leaseExpiresAt);
43
+ }
44
+ function setWorkflowRunLeaseNextExpiration(lease, runId, leaseExpiresAt) {
45
+ if (lease.nextExpiresAt !== void 0 && Temporal.Instant.compare(leaseExpiresAt, lease.nextExpiresAt) >= 0) return;
46
+ lease.nextExpiresAt = leaseExpiresAt;
47
+ lease.nextExpiringRunId = runId;
48
+ }
49
+ function finishWorkflowRunLeaseSummary(lease) {
50
+ return {
51
+ total: lease.total,
52
+ expired: lease.expired,
53
+ runIds: [...lease.runIds].sort(),
54
+ expiredRunIds: [...lease.expiredRunIds].sort(),
55
+ workerIds: [...lease.workerIds].sort(),
56
+ ...lease.nextExpiresAt === void 0 ? {} : {
57
+ nextExpiresAt: lease.nextExpiresAt,
58
+ ...lease.nextExpiringRunId === void 0 ? {} : { nextExpiringRunId: lease.nextExpiringRunId }
59
+ },
60
+ ...lease.oldestExpiredAt === void 0 ? {} : { oldestExpiredAt: lease.oldestExpiredAt }
61
+ };
62
+ }
63
+ //#endregion
64
+ export { createWorkflowRunLeaseSummaryReducer };
@@ -0,0 +1,15 @@
1
+ import { RunId } from "../../types/run-id.mjs";
2
+ import { WorkflowRunMessageSummary } from "../../types/summary.mjs";
3
+ import { WorkflowStepAttemptRecord } from "../../types/step-attempts.mjs";
4
+ import "../../types/run.mjs";
5
+ //#region src/engine/summary/run-message-waits.d.ts
6
+ interface WorkflowRunMessageWaitSummary {
7
+ readonly messageId?: WorkflowRunMessageSummary;
8
+ }
9
+ declare function createWorkflowRunMessageWaitSummaryReducer(): {
10
+ readonly addAttempt: (runId: RunId, attempt: WorkflowStepAttemptRecord) => void;
11
+ readonly addAttempts: (runId: RunId, attempts: readonly WorkflowStepAttemptRecord[]) => void;
12
+ readonly finish: () => WorkflowRunMessageWaitSummary;
13
+ };
14
+ //#endregion
15
+ export { createWorkflowRunMessageWaitSummaryReducer };