@temelj/workflow 0.0.0-alpha.2 → 0.0.0-alpha.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (461) hide show
  1. package/README.md +394 -2
  2. package/dist/attributes.d.mts +11 -9
  3. package/dist/attributes.mjs +23 -5
  4. package/dist/bundle.d.mts +5 -23
  5. package/dist/bundle.mjs +2 -18
  6. package/dist/client/create.d.mts +26 -23
  7. package/dist/client/create.mjs +26 -32
  8. package/dist/client/facades.d.mts +12 -18
  9. package/dist/client/facades.mjs +102 -93
  10. package/dist/client/mod.mjs +1 -2
  11. package/dist/client/run-handle.d.mts +17 -54
  12. package/dist/client/run-handle.mjs +35 -105
  13. package/dist/client/worker-options.d.mts +8 -8
  14. package/dist/client/worker-options.mjs +11 -11
  15. package/dist/cloudflare/cloudflare.d.mts +4 -5
  16. package/dist/cloudflare/codec.d.mts +28 -13
  17. package/dist/cloudflare/codec.mjs +40 -17
  18. package/dist/cloudflare/entrypoint.d.mts +3 -4
  19. package/dist/cloudflare/entrypoint.mjs +4 -3
  20. package/dist/cloudflare/execution.d.mts +3 -4
  21. package/dist/cloudflare/execution.mjs +20 -13
  22. package/dist/cloudflare/host.d.mts +6 -7
  23. package/dist/cloudflare/host.mjs +7 -6
  24. package/dist/cloudflare/mod.d.mts +4 -4
  25. package/dist/cloudflare/mod.mjs +2 -2
  26. package/dist/cloudflare/name.d.mts +3 -4
  27. package/dist/cloudflare/name.mjs +3 -3
  28. package/dist/cloudflare/registry.d.mts +3 -23
  29. package/dist/cloudflare/registry.mjs +2 -20
  30. package/dist/cloudflare/runtime.d.mts +11 -18
  31. package/dist/cloudflare/runtime.mjs +52 -73
  32. package/dist/cloudflare/step.d.mts +6 -6
  33. package/dist/cloudflare/step.mjs +69 -57
  34. package/dist/cloudflare/types.d.mts +17 -36
  35. package/dist/collection.d.mts +8 -11
  36. package/dist/collection.mjs +10 -14
  37. package/dist/compiled-function.d.mts +14 -19
  38. package/dist/compiled-function.mjs +12 -24
  39. package/dist/compiled.d.mts +4 -0
  40. package/dist/compiled.mjs +4 -0
  41. package/dist/compiler/ast.d.mts +26 -0
  42. package/dist/{vite → compiler}/ast.mjs +24 -16
  43. package/dist/{vite → compiler}/error.d.mts +4 -6
  44. package/dist/{vite → compiler}/error.mjs +14 -16
  45. package/dist/compiler/manifest.d.mts +6 -0
  46. package/dist/{vite → compiler}/manifest.mjs +9 -7
  47. package/dist/compiler/plugin.d.mts +7 -0
  48. package/dist/{vite → compiler}/plugin.mjs +45 -46
  49. package/dist/compiler/safety.d.mts +12 -0
  50. package/dist/{vite → compiler}/safety.mjs +5 -11
  51. package/dist/{vite → compiler}/source-edit.d.mts +3 -4
  52. package/dist/{vite → compiler}/source-edit.mjs +1 -1
  53. package/dist/{vite → compiler}/source-map.d.mts +4 -3
  54. package/dist/{vite → compiler}/source-map.mjs +3 -3
  55. package/dist/compiler/source.d.mts +7 -0
  56. package/dist/{vite → compiler}/source.mjs +1 -1
  57. package/dist/compiler/transform.d.mts +12 -0
  58. package/dist/{vite → compiler}/transform.mjs +37 -38
  59. package/dist/definition.d.mts +17 -25
  60. package/dist/definition.mjs +19 -35
  61. package/dist/engine/child-workflow.d.mts +5 -9
  62. package/dist/engine/child-workflow.mjs +46 -67
  63. package/dist/engine/command-identity.d.mts +5 -6
  64. package/dist/engine/command-identity.mjs +9 -5
  65. package/dist/engine/context.d.mts +17 -0
  66. package/dist/engine/create.d.mts +36 -94
  67. package/dist/engine/create.mjs +55 -260
  68. package/dist/engine/deterministic.d.mts +6 -11
  69. package/dist/engine/deterministic.mjs +47 -68
  70. package/dist/engine/durable-command.d.mts +5 -5
  71. package/dist/engine/durable-command.mjs +2 -2
  72. package/dist/engine/execution-service.d.mts +20 -24
  73. package/dist/engine/execution-service.mjs +54 -52
  74. package/dist/engine/hooks.d.mts +17 -39
  75. package/dist/engine/hooks.mjs +73 -94
  76. package/dist/engine/inspection.d.mts +23 -15
  77. package/dist/engine/inspection.mjs +55 -29
  78. package/dist/engine/lifecycle.d.mts +6 -12
  79. package/dist/engine/lifecycle.mjs +5 -5
  80. package/dist/engine/lock-replay.d.mts +8 -15
  81. package/dist/engine/lock-replay.mjs +12 -25
  82. package/dist/engine/lock.d.mts +10 -15
  83. package/dist/engine/lock.mjs +65 -51
  84. package/dist/engine/message.d.mts +14 -34
  85. package/dist/engine/message.mjs +94 -127
  86. package/dist/engine/observation.d.mts +9 -11
  87. package/dist/engine/observation.mjs +18 -27
  88. package/dist/engine/replay.d.mts +18 -19
  89. package/dist/engine/replay.mjs +32 -56
  90. package/dist/engine/resume.d.mts +16 -0
  91. package/dist/engine/resume.mjs +24 -0
  92. package/dist/engine/retry.d.mts +15 -19
  93. package/dist/engine/retry.mjs +17 -17
  94. package/dist/engine/run-data.d.mts +4 -8
  95. package/dist/engine/run-data.mjs +24 -22
  96. package/dist/engine/run-service.d.mts +24 -33
  97. package/dist/engine/run-service.mjs +125 -93
  98. package/dist/engine/run-utils.d.mts +11 -13
  99. package/dist/engine/run-utils.mjs +23 -46
  100. package/dist/engine/schedule.d.mts +8 -22
  101. package/dist/engine/schedule.mjs +37 -34
  102. package/dist/engine/serialization.d.mts +9 -6
  103. package/dist/engine/serialization.mjs +30 -21
  104. package/dist/engine/signals.d.mts +23 -0
  105. package/dist/engine/signals.mjs +41 -0
  106. package/dist/engine/start.d.mts +18 -0
  107. package/dist/engine/start.mjs +88 -0
  108. package/dist/engine/state.d.mts +37 -67
  109. package/dist/engine/state.mjs +127 -282
  110. package/dist/engine/step-api.d.mts +5 -8
  111. package/dist/engine/step-api.mjs +16 -16
  112. package/dist/engine/stream-reader.d.mts +12 -0
  113. package/dist/engine/stream-reader.mjs +154 -0
  114. package/dist/engine/stream.d.mts +9 -54
  115. package/dist/engine/stream.mjs +54 -196
  116. package/dist/engine/summary/recovery.d.mts +35 -0
  117. package/dist/engine/summary/recovery.mjs +363 -0
  118. package/dist/engine/summary/runs.d.mts +43 -0
  119. package/dist/engine/summary/runs.mjs +294 -0
  120. package/dist/engine/summary/step-attempts.d.mts +5 -10
  121. package/dist/engine/summary/step-attempts.mjs +157 -36
  122. package/dist/engine/summary/tally.d.mts +44 -0
  123. package/dist/engine/summary/tally.mjs +142 -0
  124. package/dist/engine/task.d.mts +4 -5
  125. package/dist/engine/task.mjs +40 -48
  126. package/dist/errors/base.d.mts +17 -77
  127. package/dist/errors/base.mjs +26 -327
  128. package/dist/errors/capability.d.mts +3 -6
  129. package/dist/errors/capability.mjs +4 -8
  130. package/dist/errors/codes.d.mts +116 -0
  131. package/dist/{types/error-code.mjs → errors/codes.mjs} +2 -17
  132. package/dist/errors/definition.d.mts +3 -17
  133. package/dist/errors/definition.mjs +5 -42
  134. package/dist/errors/failures.d.mts +17 -51
  135. package/dist/errors/failures.mjs +35 -102
  136. package/dist/errors/hook.d.mts +5 -9
  137. package/dist/errors/hook.mjs +4 -16
  138. package/dist/errors/implementation.d.mts +3 -6
  139. package/dist/errors/implementation.mjs +7 -12
  140. package/dist/errors/lock.d.mts +7 -20
  141. package/dist/errors/lock.mjs +8 -44
  142. package/dist/errors/message.d.mts +14 -59
  143. package/dist/errors/message.mjs +13 -39
  144. package/dist/errors/mod.d.mts +4 -5
  145. package/dist/errors/mod.mjs +5 -7
  146. package/dist/errors/records.d.mts +10 -4
  147. package/dist/errors/records.mjs +256 -256
  148. package/dist/errors/run.d.mts +27 -68
  149. package/dist/errors/run.mjs +31 -85
  150. package/dist/errors/schedule.d.mts +7 -18
  151. package/dist/errors/schedule.mjs +7 -39
  152. package/dist/errors/step.d.mts +12 -45
  153. package/dist/errors/step.mjs +13 -34
  154. package/dist/errors/stream.d.mts +8 -16
  155. package/dist/errors/stream.mjs +7 -41
  156. package/dist/esbuild.d.mts +6 -4
  157. package/dist/esbuild.mjs +2 -1
  158. package/dist/events/descriptors.d.mts +12 -241
  159. package/dist/events/descriptors.mjs +12 -5
  160. package/dist/history/projection.d.mts +4 -6
  161. package/dist/history/projection.mjs +22 -26
  162. package/dist/history/replay-projection.d.mts +44 -48
  163. package/dist/history/replay-projection.mjs +41 -50
  164. package/dist/history/{mod.d.mts → replay.d.mts} +16 -21
  165. package/dist/history/{mod.mjs → replay.mjs} +21 -25
  166. package/dist/history/sequencer.d.mts +10 -11
  167. package/dist/history/sequencer.mjs +11 -7
  168. package/dist/history/step-attempts.d.mts +4 -7
  169. package/dist/history/step-attempts.mjs +8 -9
  170. package/dist/history/timeline.d.mts +4 -13
  171. package/dist/history/timeline.mjs +46 -265
  172. package/dist/history/validator.d.mts +5 -7
  173. package/dist/history/validator.mjs +9 -24
  174. package/dist/hook-token.d.mts +7 -0
  175. package/dist/hook-token.mjs +32 -0
  176. package/dist/ids.d.mts +8 -0
  177. package/dist/ids.mjs +21 -0
  178. package/dist/message-options.d.mts +11 -5
  179. package/dist/message-options.mjs +9 -7
  180. package/dist/mod.d.mts +32 -36
  181. package/dist/mod.mjs +9 -13
  182. package/dist/otel/metrics.d.mts +31 -0
  183. package/dist/otel/metrics.mjs +60 -0
  184. package/dist/otel/mod.d.mts +3 -0
  185. package/dist/otel/mod.mjs +3 -0
  186. package/dist/otel/spans.d.mts +24 -0
  187. package/dist/otel/spans.mjs +218 -0
  188. package/dist/otel/support.d.mts +15 -8
  189. package/dist/otel/support.mjs +18 -40
  190. package/dist/{otel.d.mts → otel/telemetry.d.mts} +5 -6
  191. package/dist/otel/telemetry.mjs +305 -0
  192. package/dist/pagination.d.mts +6 -12
  193. package/dist/pagination.mjs +10 -14
  194. package/dist/registry.d.mts +8 -5
  195. package/dist/registry.mjs +19 -10
  196. package/dist/rolldown.d.mts +6 -4
  197. package/dist/rolldown.mjs +2 -1
  198. package/dist/rollup.d.mts +6 -4
  199. package/dist/rollup.mjs +2 -1
  200. package/dist/rspack.d.mts +6 -4
  201. package/dist/rspack.mjs +2 -1
  202. package/dist/run-status.d.mts +29 -0
  203. package/dist/run-status.mjs +42 -0
  204. package/dist/schema/common.d.mts +22 -0
  205. package/dist/schema/common.mjs +54 -0
  206. package/dist/schema/error.d.mts +17 -0
  207. package/dist/schema/error.mjs +39 -0
  208. package/dist/schema/events.d.mts +446 -0
  209. package/dist/schema/events.mjs +235 -0
  210. package/dist/schema/pagination.d.mts +5 -0
  211. package/dist/schema/pagination.mjs +11 -0
  212. package/dist/schema/persisted-value.d.mts +8 -0
  213. package/dist/schema/persisted-value.mjs +94 -0
  214. package/dist/schema/run.d.mts +51 -0
  215. package/dist/schema/run.mjs +88 -0
  216. package/dist/schema/store.d.mts +94 -0
  217. package/dist/schema/store.mjs +116 -0
  218. package/dist/step-definition.d.mts +4 -9
  219. package/dist/step-definition.mjs +2 -2
  220. package/dist/store/capabilities.d.mts +8 -9
  221. package/dist/store/capabilities.mjs +7 -7
  222. package/dist/store/cleanup.d.mts +9 -14
  223. package/dist/store/cleanup.mjs +86 -85
  224. package/dist/store/create.d.mts +28 -29
  225. package/dist/store/create.mjs +10 -11
  226. package/dist/store/events.d.mts +48 -0
  227. package/dist/store/events.mjs +263 -0
  228. package/dist/store/indexes.d.mts +25 -0
  229. package/dist/store/indexes.mjs +282 -0
  230. package/dist/store/instrumentation.d.mts +2 -3
  231. package/dist/store/instrumentation.mjs +30 -30
  232. package/dist/store/lock.d.mts +4 -5
  233. package/dist/store/lock.mjs +5 -7
  234. package/dist/store/materialization.d.mts +10 -17
  235. package/dist/store/materialization.mjs +39 -33
  236. package/dist/store/mod.d.mts +3 -3
  237. package/dist/store/mod.mjs +2 -2
  238. package/dist/store/query.d.mts +13 -17
  239. package/dist/store/query.mjs +13 -13
  240. package/dist/store/run.d.mts +25 -34
  241. package/dist/store/run.mjs +67 -108
  242. package/dist/store/schedule.d.mts +6 -8
  243. package/dist/store/schedule.mjs +11 -11
  244. package/dist/store/step-attempt.d.mts +9 -12
  245. package/dist/store/step-attempt.mjs +9 -9
  246. package/dist/store/storage-value.d.mts +3 -3
  247. package/dist/store/storage-value.mjs +17 -1
  248. package/dist/store/validation.d.mts +17 -20
  249. package/dist/store/validation.mjs +30 -33
  250. package/dist/store-keys.d.mts +35 -47
  251. package/dist/store-keys.mjs +9 -17
  252. package/dist/telemetry.d.mts +16 -16
  253. package/dist/telemetry.mjs +3 -3
  254. package/dist/temporal.d.mts +11 -16
  255. package/dist/temporal.mjs +8 -9
  256. package/dist/timer.d.mts +12 -10
  257. package/dist/timer.mjs +11 -3
  258. package/dist/types/cleanup.d.mts +13 -50
  259. package/dist/types/cleanup.mjs +1 -22
  260. package/dist/types/client.d.mts +101 -162
  261. package/dist/types/{vite.d.mts → compiler.d.mts} +17 -24
  262. package/dist/types/compiler.mjs +1 -0
  263. package/dist/types/definition.d.mts +22 -34
  264. package/dist/types/engine-options.d.mts +10 -17
  265. package/dist/types/engine.d.mts +15 -274
  266. package/dist/types/error.d.mts +15 -217
  267. package/dist/types/error.mjs +1 -48
  268. package/dist/types/events.d.mts +59 -2730
  269. package/dist/types/events.mjs +1 -283
  270. package/dist/types/hook.d.mts +27 -85
  271. package/dist/types/hook.mjs +1 -66
  272. package/dist/types/ids.d.mts +9 -0
  273. package/dist/types/ids.mjs +1 -0
  274. package/dist/types/lock.d.mts +8 -26
  275. package/dist/types/lock.mjs +1 -18
  276. package/dist/types/message.d.mts +29 -43
  277. package/dist/types/observation.d.mts +43 -58
  278. package/dist/types/pagination.d.mts +6 -22
  279. package/dist/types/pagination.mjs +1 -13
  280. package/dist/types/result.d.mts +11 -43
  281. package/dist/types/retry.d.mts +7 -14
  282. package/dist/types/run-list.d.mts +9 -11
  283. package/dist/types/run-options.d.mts +25 -32
  284. package/dist/types/run.d.mts +35 -315
  285. package/dist/types/run.mjs +1 -207
  286. package/dist/types/runtime.d.mts +33 -145
  287. package/dist/types/runtime.mjs +1 -21
  288. package/dist/types/schedule.d.mts +13 -72
  289. package/dist/types/schedule.mjs +1 -48
  290. package/dist/types/step-attempts.d.mts +65 -261
  291. package/dist/types/step-attempts.mjs +1 -43
  292. package/dist/types/step.d.mts +66 -77
  293. package/dist/types/step.mjs +1 -5
  294. package/dist/types/store.d.mts +50 -182
  295. package/dist/types/stream.d.mts +19 -40
  296. package/dist/types/summary.d.mts +174 -278
  297. package/dist/types/telemetry.d.mts +23 -28
  298. package/dist/types/telemetry.mjs +1 -9
  299. package/dist/types/timeline.d.mts +46 -233
  300. package/dist/types/worker.d.mts +22 -29
  301. package/dist/values.d.mts +15 -0
  302. package/dist/values.mjs +57 -0
  303. package/dist/vite.d.mts +5 -6
  304. package/dist/vite.mjs +3 -4
  305. package/dist/webpack.d.mts +6 -4
  306. package/dist/webpack.mjs +2 -1
  307. package/dist/worker/error.d.mts +2 -9
  308. package/dist/worker/error.mjs +20 -32
  309. package/dist/worker/missing-implementation.d.mts +19 -0
  310. package/dist/worker/missing-implementation.mjs +62 -0
  311. package/dist/worker/worker.d.mts +18 -0
  312. package/dist/{worker.mjs → worker/worker.mjs} +64 -118
  313. package/package.json +28 -47
  314. package/dist/engine/execution-api.d.mts +0 -29
  315. package/dist/engine/execution-api.mjs +0 -33
  316. package/dist/engine/inspection-api.d.mts +0 -34
  317. package/dist/engine/inspection-api.mjs +0 -78
  318. package/dist/engine/mod.d.mts +0 -4
  319. package/dist/engine/mod.mjs +0 -2
  320. package/dist/engine/recovery.d.mts +0 -26
  321. package/dist/engine/recovery.mjs +0 -92
  322. package/dist/engine/retry-policy.d.mts +0 -4
  323. package/dist/engine/retry-policy.mjs +0 -4
  324. package/dist/engine/start-api.d.mts +0 -30
  325. package/dist/engine/start-api.mjs +0 -99
  326. package/dist/engine/summary/active-events.d.mts +0 -34
  327. package/dist/engine/summary/active-events.mjs +0 -69
  328. package/dist/engine/summary/child-workflow-runs.d.mts +0 -24
  329. package/dist/engine/summary/child-workflow-runs.mjs +0 -138
  330. package/dist/engine/summary/child-workflow-waits.d.mts +0 -21
  331. package/dist/engine/summary/child-workflow-waits.mjs +0 -67
  332. package/dist/engine/summary/recovery-child-workflow-waits.d.mts +0 -11
  333. package/dist/engine/summary/recovery-child-workflow-waits.mjs +0 -89
  334. package/dist/engine/summary/recovery-due-runs.d.mts +0 -16
  335. package/dist/engine/summary/recovery-due-runs.mjs +0 -52
  336. package/dist/engine/summary/recovery-failed-runs.d.mts +0 -14
  337. package/dist/engine/summary/recovery-failed-runs.mjs +0 -33
  338. package/dist/engine/summary/recovery-lease-runs.d.mts +0 -16
  339. package/dist/engine/summary/recovery-lease-runs.mjs +0 -69
  340. package/dist/engine/summary/recovery-locks.d.mts +0 -18
  341. package/dist/engine/summary/recovery-locks.mjs +0 -100
  342. package/dist/engine/summary/recovery-message-waits.d.mts +0 -11
  343. package/dist/engine/summary/recovery-message-waits.mjs +0 -74
  344. package/dist/engine/summary/recovery-retry-runs.d.mts +0 -17
  345. package/dist/engine/summary/recovery-retry-runs.mjs +0 -65
  346. package/dist/engine/summary/recovery-run-timestamps.d.mts +0 -13
  347. package/dist/engine/summary/recovery-run-timestamps.mjs +0 -18
  348. package/dist/engine/summary/recovery-runs.d.mts +0 -23
  349. package/dist/engine/summary/recovery-runs.mjs +0 -54
  350. package/dist/engine/summary/recovery-schedules.d.mts +0 -10
  351. package/dist/engine/summary/recovery-schedules.mjs +0 -46
  352. package/dist/engine/summary/recovery-sleep-waits.d.mts +0 -10
  353. package/dist/engine/summary/recovery-sleep-waits.mjs +0 -53
  354. package/dist/engine/summary/recovery-waits.d.mts +0 -21
  355. package/dist/engine/summary/recovery-waits.mjs +0 -29
  356. package/dist/engine/summary/run-availability.d.mts +0 -13
  357. package/dist/engine/summary/run-availability.mjs +0 -37
  358. package/dist/engine/summary/run-cleanup.d.mts +0 -14
  359. package/dist/engine/summary/run-cleanup.mjs +0 -44
  360. package/dist/engine/summary/run-failure.d.mts +0 -14
  361. package/dist/engine/summary/run-failure.mjs +0 -62
  362. package/dist/engine/summary/run-hooks.d.mts +0 -14
  363. package/dist/engine/summary/run-hooks.mjs +0 -63
  364. package/dist/engine/summary/run-lease.d.mts +0 -11
  365. package/dist/engine/summary/run-lease.mjs +0 -64
  366. package/dist/engine/summary/run-message-waits.d.mts +0 -15
  367. package/dist/engine/summary/run-message-waits.mjs +0 -62
  368. package/dist/engine/summary/run-metrics.d.mts +0 -31
  369. package/dist/engine/summary/run-metrics.mjs +0 -93
  370. package/dist/engine/summary/run-retry.d.mts +0 -9
  371. package/dist/engine/summary/run-retry.mjs +0 -69
  372. package/dist/engine/summary/run-sleeps.d.mts +0 -15
  373. package/dist/engine/summary/run-sleeps.mjs +0 -61
  374. package/dist/engine/summary/run-state.d.mts +0 -26
  375. package/dist/engine/summary/run-state.mjs +0 -48
  376. package/dist/engine/summary/run-status.d.mts +0 -16
  377. package/dist/engine/summary/run-status.mjs +0 -35
  378. package/dist/engine/summary/run-streams.d.mts +0 -14
  379. package/dist/engine/summary/run-streams.mjs +0 -46
  380. package/dist/engine/summary/run-transition.d.mts +0 -9
  381. package/dist/engine/summary/run-transition.mjs +0 -39
  382. package/dist/engine/summary/run-workflow.d.mts +0 -9
  383. package/dist/engine/summary/run-workflow.mjs +0 -47
  384. package/dist/engine/summary/step-attempt-active-child-workflows.d.mts +0 -13
  385. package/dist/engine/summary/step-attempt-active-child-workflows.mjs +0 -55
  386. package/dist/engine/summary/step-attempt-active-fields.d.mts +0 -23
  387. package/dist/engine/summary/step-attempt-active-fields.mjs +0 -14
  388. package/dist/engine/summary/step-attempt-active-message-waits.d.mts +0 -12
  389. package/dist/engine/summary/step-attempt-active-message-waits.mjs +0 -47
  390. package/dist/engine/summary/step-attempt-active-sleeps.d.mts +0 -19
  391. package/dist/engine/summary/step-attempt-active-sleeps.mjs +0 -44
  392. package/dist/engine/summary/step-attempt-buckets.d.mts +0 -22
  393. package/dist/engine/summary/step-attempt-buckets.mjs +0 -152
  394. package/dist/engine/summary/step-attempt-failure.d.mts +0 -12
  395. package/dist/engine/summary/step-attempt-failure.mjs +0 -61
  396. package/dist/engine/summary/step-attempt-lifecycle.d.mts +0 -13
  397. package/dist/engine/summary/step-attempt-lifecycle.mjs +0 -19
  398. package/dist/engine/summary.d.mts +0 -32
  399. package/dist/engine/summary.mjs +0 -37
  400. package/dist/errors/details.d.mts +0 -13
  401. package/dist/errors/details.mjs +0 -66
  402. package/dist/errors/record-view.d.mts +0 -11
  403. package/dist/errors/record-view.mjs +0 -24
  404. package/dist/errors/runtime.d.mts +0 -12
  405. package/dist/errors/runtime.mjs +0 -24
  406. package/dist/events/mod.d.mts +0 -3
  407. package/dist/events/mod.mjs +0 -2
  408. package/dist/history/attempt-key.d.mts +0 -6
  409. package/dist/history/attempt-key.mjs +0 -7
  410. package/dist/inspection/mod.d.mts +0 -5
  411. package/dist/inspection/mod.mjs +0 -3
  412. package/dist/otel.mjs +0 -590
  413. package/dist/runtime.d.mts +0 -35
  414. package/dist/runtime.mjs +0 -198
  415. package/dist/store/append-projection.d.mts +0 -15
  416. package/dist/store/append-projection.mjs +0 -26
  417. package/dist/store/compaction.d.mts +0 -5
  418. package/dist/store/compaction.mjs +0 -8
  419. package/dist/store/event-append-project.d.mts +0 -15
  420. package/dist/store/event-append-project.mjs +0 -77
  421. package/dist/store/event-append.d.mts +0 -37
  422. package/dist/store/event-append.mjs +0 -80
  423. package/dist/store/event-history.d.mts +0 -22
  424. package/dist/store/event-history.mjs +0 -75
  425. package/dist/store/event.d.mts +0 -10
  426. package/dist/store/event.mjs +0 -28
  427. package/dist/store/idempotency.d.mts +0 -10
  428. package/dist/store/idempotency.mjs +0 -167
  429. package/dist/store/message-index.d.mts +0 -21
  430. package/dist/store/message-index.mjs +0 -122
  431. package/dist/store/revision.d.mts +0 -4
  432. package/dist/store/revision.mjs +0 -7
  433. package/dist/store/schema.d.mts +0 -14
  434. package/dist/store/schema.mjs +0 -17
  435. package/dist/types/common.d.mts +0 -20
  436. package/dist/types/common.mjs +0 -16
  437. package/dist/types/error-code.d.mts +0 -256
  438. package/dist/types/message-id.d.mts +0 -7
  439. package/dist/types/message-id.mjs +0 -5
  440. package/dist/types/run-id.d.mts +0 -7
  441. package/dist/types/run-id.mjs +0 -5
  442. package/dist/types/step-id.d.mts +0 -7
  443. package/dist/types/step-id.mjs +0 -5
  444. package/dist/types/stream-id.d.mts +0 -7
  445. package/dist/types/stream-id.mjs +0 -5
  446. package/dist/types/worker-id.d.mts +0 -7
  447. package/dist/types/worker-id.mjs +0 -5
  448. package/dist/utility.d.mts +0 -49
  449. package/dist/utility.mjs +0 -122
  450. package/dist/vite/ast.d.mts +0 -23
  451. package/dist/vite/generated-name.d.mts +0 -7
  452. package/dist/vite/generated-name.mjs +0 -9
  453. package/dist/vite/manifest.d.mts +0 -7
  454. package/dist/vite/plugin.d.mts +0 -7
  455. package/dist/vite/safety.d.mts +0 -12
  456. package/dist/vite/source.d.mts +0 -7
  457. package/dist/vite/transform.d.mts +0 -7
  458. package/dist/webhook.d.mts +0 -16
  459. package/dist/webhook.mjs +0 -17
  460. package/dist/worker.d.mts +0 -19
  461. /package/dist/{types/vite.mjs → engine/context.mjs} +0 -0
@@ -0,0 +1,363 @@
1
+ import { earliestOptionalTimestamp, latestOptionalTimestamp } from "../../temporal.mjs";
2
+ import { WorkflowErrorCode } from "../../errors/codes.mjs";
3
+ import { matchesWorkflowError } from "../../errors/records.mjs";
4
+ import "../../errors/mod.mjs";
5
+ import { History } from "../../history/replay.mjs";
6
+ import { isScheduledRunStatus } from "../../run-status.mjs";
7
+ import { Earliest, sorted } from "./tally.mjs";
8
+ import { isString } from "@temelj/value";
9
+ //#region src/engine/summary/recovery.ts
10
+ /**
11
+ * Every run that can make progress now, and when the next sleep, retry, lease, schedule,
12
+ * lock wait, or external wait should be checked again.
13
+ */
14
+ function summarizeRecovery(options) {
15
+ const { runs, now, inputs = {} } = options;
16
+ const due = new RunSet();
17
+ const pending = /* @__PURE__ */ new Set();
18
+ const waiting = /* @__PURE__ */ new Set();
19
+ const lease = new LeaseTally(now);
20
+ const retry = new RunSet();
21
+ const missingImplementation = new RunSet();
22
+ const failed = /* @__PURE__ */ new Set();
23
+ let latestFailedAt;
24
+ for (const run of runs) {
25
+ if (isScheduledRunStatus(run.status)) {
26
+ if (isDueAt(run.availableAt, now)) {
27
+ due.add(run.id, true);
28
+ (run.status === "pending" ? pending : waiting).add(run.id);
29
+ } else due.next.offer(run.availableAt, { runId: run.id });
30
+ if (run.retryReason !== void 0) {
31
+ const retryDue = isDueAt(run.retryAt, now);
32
+ retry.add(run.id, retryDue, run.retryAt);
33
+ if (run.retryReason === "missing_implementation") missingImplementation.add(run.id, retryDue, run.retryAt);
34
+ }
35
+ }
36
+ lease.add(run);
37
+ if (run.status === "failed") {
38
+ failed.add(run.id);
39
+ latestFailedAt = latestOptionalTimestamp(latestFailedAt, run.finishedAt);
40
+ }
41
+ }
42
+ const sleep = summarizeSleepWaits(inputs.sleepAttempts ?? [], now);
43
+ const message = summarizeMessageWaits(inputs.messageWaitAttempts ?? [], inputs.eventsByRunId ?? /* @__PURE__ */ new Map(), now);
44
+ const childWorkflow = summarizeChildWorkflowWaits(inputs.childWorkflowAttempts ?? [], inputs.childRuns ?? [], now);
45
+ const lock = summarizeLocks(inputs.locks ?? [], inputs.lockWaitAttempts ?? [], runs, now);
46
+ const schedule = summarizeSchedules(inputs.schedules ?? [], now);
47
+ const next = new Earliest();
48
+ for (const candidate of [
49
+ due.next.next,
50
+ lease.next.next,
51
+ retry.next.next,
52
+ schedule.next,
53
+ lock.nextExpiry,
54
+ lock.nextWaitDeadline,
55
+ sleep.next,
56
+ message.next,
57
+ childWorkflow.next
58
+ ]) next.offer(candidate?.at, {});
59
+ return {
60
+ total: runs.length,
61
+ recoverableRunIds: sorted(/* @__PURE__ */ new Set([
62
+ ...due.dueIds,
63
+ ...lease.staleRunIds,
64
+ ...retry.dueIds,
65
+ ...failed,
66
+ ...sleep.dueRunIds,
67
+ ...message.readyRunIds,
68
+ ...message.timedOutRunIds,
69
+ ...childWorkflow.terminalRunIds,
70
+ ...childWorkflow.missingRunIds,
71
+ ...childWorkflow.timedOutRunIds
72
+ ])),
73
+ due: {
74
+ runIds: sorted(due.dueIds),
75
+ pendingRunIds: sorted(pending),
76
+ waitingRunIds: sorted(waiting),
77
+ next: due.next.next
78
+ },
79
+ lease: lease.finish(),
80
+ retry: retry.finish(),
81
+ missingImplementation: missingImplementation.finish(),
82
+ failed: {
83
+ runIds: sorted(failed),
84
+ latestFailedAt
85
+ },
86
+ schedule,
87
+ lock,
88
+ wait: {
89
+ sleep,
90
+ message,
91
+ childWorkflow
92
+ },
93
+ nextRecoveryAt: next.at
94
+ };
95
+ }
96
+ /** The lock a failed step attempt was waiting for, when it failed because the lock was held. */
97
+ function lockWaitDetails(attempt) {
98
+ const error = attempt.error;
99
+ if (attempt.status !== "failed" || attempt.kind !== "run" || error === void 0 || !matchesWorkflowError(error, WorkflowErrorCode.LOCK_ALREADY_HELD) || !isString(error.details?.key) || error.details.key.trim() === "") return;
100
+ const deadline = error.details.waitDeadlineAt;
101
+ return {
102
+ key: error.details.key,
103
+ waitDeadlineAt: isString(deadline) && deadline.trim() !== "" ? parseInstant(deadline) : void 0
104
+ };
105
+ }
106
+ function parseInstant(value) {
107
+ try {
108
+ return Temporal.Instant.from(value);
109
+ } catch {
110
+ return;
111
+ }
112
+ }
113
+ function isDueAt(at, now) {
114
+ return at === void 0 || Temporal.Instant.compare(at, now) <= 0;
115
+ }
116
+ /** Runs of one kind, those that are due, and the earliest that is not yet due. */
117
+ var RunSet = class {
118
+ ids = /* @__PURE__ */ new Set();
119
+ dueIds = /* @__PURE__ */ new Set();
120
+ next = new Earliest();
121
+ add(id, due, at) {
122
+ this.ids.add(id);
123
+ if (due) this.dueIds.add(id);
124
+ else this.next.offer(at, { runId: id });
125
+ }
126
+ finish() {
127
+ return {
128
+ runIds: sorted(this.ids),
129
+ dueRunIds: sorted(this.dueIds),
130
+ next: this.next.next
131
+ };
132
+ }
133
+ };
134
+ var LeaseTally = class {
135
+ #now;
136
+ runIds = /* @__PURE__ */ new Set();
137
+ staleRunIds = /* @__PURE__ */ new Set();
138
+ #ownerless = /* @__PURE__ */ new Set();
139
+ #missingExpiresAt = /* @__PURE__ */ new Set();
140
+ #expired = /* @__PURE__ */ new Set();
141
+ #workerIds = /* @__PURE__ */ new Set();
142
+ next = new Earliest();
143
+ #oldestStaleAt;
144
+ constructor(now) {
145
+ this.#now = now;
146
+ }
147
+ add(run) {
148
+ if (run.status !== "running") return;
149
+ this.runIds.add(run.id);
150
+ if (run.workerId === void 0) {
151
+ this.staleRunIds.add(run.id);
152
+ this.#ownerless.add(run.id);
153
+ } else this.#workerIds.add(run.workerId);
154
+ if (run.leaseExpiresAt === void 0) {
155
+ this.staleRunIds.add(run.id);
156
+ this.#missingExpiresAt.add(run.id);
157
+ } else if (Temporal.Instant.compare(run.leaseExpiresAt, this.#now) <= 0) {
158
+ this.staleRunIds.add(run.id);
159
+ this.#expired.add(run.id);
160
+ this.#oldestStaleAt = earliestOptionalTimestamp(this.#oldestStaleAt, run.leaseExpiresAt);
161
+ } else if (run.workerId !== void 0) this.next.offer(run.leaseExpiresAt, { runId: run.id });
162
+ }
163
+ finish() {
164
+ return {
165
+ runIds: sorted(this.runIds),
166
+ staleRunIds: sorted(this.staleRunIds),
167
+ ownerlessRunIds: sorted(this.#ownerless),
168
+ missingExpiresAtRunIds: sorted(this.#missingExpiresAt),
169
+ expiredRunIds: sorted(this.#expired),
170
+ workerIds: sorted(this.#workerIds),
171
+ next: this.next.next,
172
+ oldestStaleAt: this.#oldestStaleAt
173
+ };
174
+ }
175
+ };
176
+ function summarizeSleepWaits(attempts, now) {
177
+ const runIds = /* @__PURE__ */ new Set();
178
+ const dueRunIds = /* @__PURE__ */ new Set();
179
+ const dueStepIds = /* @__PURE__ */ new Set();
180
+ const invalidUntilRunIds = /* @__PURE__ */ new Set();
181
+ const next = new Earliest();
182
+ for (const attempt of attempts) {
183
+ if (attempt.status !== "running" || attempt.kind !== "sleep") continue;
184
+ runIds.add(attempt.runId);
185
+ if (attempt.until === void 0) invalidUntilRunIds.add(attempt.runId);
186
+ if (isDueAt(attempt.until, now)) {
187
+ dueRunIds.add(attempt.runId);
188
+ dueStepIds.add(attempt.stepId);
189
+ } else next.offer(attempt.until, { runId: attempt.runId });
190
+ }
191
+ return {
192
+ runIds: sorted(runIds),
193
+ dueRunIds: sorted(dueRunIds),
194
+ dueStepIds: sorted(dueStepIds),
195
+ invalidUntilRunIds: sorted(invalidUntilRunIds),
196
+ next: next.next
197
+ };
198
+ }
199
+ function summarizeMessageWaits(attempts, eventsByRunId, now) {
200
+ const histories = /* @__PURE__ */ new Map();
201
+ const runIds = /* @__PURE__ */ new Set();
202
+ const readyRunIds = /* @__PURE__ */ new Set();
203
+ const readyStepIds = /* @__PURE__ */ new Set();
204
+ const timedOutRunIds = /* @__PURE__ */ new Set();
205
+ const timedOutStepIds = /* @__PURE__ */ new Set();
206
+ const messages = /* @__PURE__ */ new Set();
207
+ const next = new Earliest();
208
+ for (const attempt of attempts) {
209
+ if (attempt.status !== "running" || attempt.kind !== "message-wait") continue;
210
+ runIds.add(attempt.runId);
211
+ if (attempt.messageId !== void 0) {
212
+ messages.add(attempt.messageId);
213
+ const events = eventsByRunId.get(attempt.runId);
214
+ if (events !== void 0) {
215
+ let history = histories.get(attempt.runId);
216
+ if (history === void 0) {
217
+ history = new History(events);
218
+ histories.set(attempt.runId, history);
219
+ }
220
+ if (history.messageForWait(attempt.messageId, attempt.stepId, attempt.timeoutAt)) {
221
+ readyRunIds.add(attempt.runId);
222
+ readyStepIds.add(attempt.stepId);
223
+ continue;
224
+ }
225
+ }
226
+ }
227
+ if (attempt.timeoutAt === void 0) continue;
228
+ if (Temporal.Instant.compare(attempt.timeoutAt, now) <= 0) {
229
+ timedOutRunIds.add(attempt.runId);
230
+ timedOutStepIds.add(attempt.stepId);
231
+ } else next.offer(attempt.timeoutAt, { runId: attempt.runId });
232
+ }
233
+ return {
234
+ runIds: sorted(runIds),
235
+ readyRunIds: sorted(readyRunIds),
236
+ timedOutRunIds: sorted(timedOutRunIds),
237
+ readyStepIds: sorted(readyStepIds),
238
+ timedOutStepIds: sorted(timedOutStepIds),
239
+ messages: sorted(messages),
240
+ next: next.next
241
+ };
242
+ }
243
+ function summarizeChildWorkflowWaits(attempts, childRuns, now) {
244
+ const childById = new Map(childRuns.map((run) => [run.id, run]));
245
+ const runIds = /* @__PURE__ */ new Set();
246
+ const terminal = {
247
+ runIds: /* @__PURE__ */ new Set(),
248
+ stepIds: /* @__PURE__ */ new Set()
249
+ };
250
+ const missing = {
251
+ runIds: /* @__PURE__ */ new Set(),
252
+ stepIds: /* @__PURE__ */ new Set()
253
+ };
254
+ const timedOut = {
255
+ runIds: /* @__PURE__ */ new Set(),
256
+ stepIds: /* @__PURE__ */ new Set()
257
+ };
258
+ const childRunIds = /* @__PURE__ */ new Set();
259
+ const completed = /* @__PURE__ */ new Set();
260
+ const failed = /* @__PURE__ */ new Set();
261
+ const canceled = /* @__PURE__ */ new Set();
262
+ const next = new Earliest();
263
+ for (const attempt of attempts) {
264
+ if (attempt.status !== "running" || attempt.kind !== "workflow") continue;
265
+ runIds.add(attempt.runId);
266
+ if (attempt.childRunId !== void 0) childRunIds.add(attempt.childRunId);
267
+ const child = attempt.childRunId === void 0 ? void 0 : childById.get(attempt.childRunId);
268
+ if (child === void 0) {
269
+ missing.runIds.add(attempt.runId);
270
+ missing.stepIds.add(attempt.stepId);
271
+ continue;
272
+ }
273
+ if (child.status === "completed" || child.status === "failed" || child.status === "canceled") {
274
+ terminal.runIds.add(attempt.runId);
275
+ terminal.stepIds.add(attempt.stepId);
276
+ if (child.status === "completed") completed.add(child.id);
277
+ else if (child.status === "failed") failed.add(child.id);
278
+ else canceled.add(child.id);
279
+ continue;
280
+ }
281
+ if (attempt.timeoutAt === void 0) continue;
282
+ if (Temporal.Instant.compare(attempt.timeoutAt, now) <= 0) {
283
+ timedOut.runIds.add(attempt.runId);
284
+ timedOut.stepIds.add(attempt.stepId);
285
+ } else next.offer(attempt.timeoutAt, { runId: attempt.runId });
286
+ }
287
+ return {
288
+ runIds: sorted(runIds),
289
+ terminalRunIds: sorted(terminal.runIds),
290
+ missingRunIds: sorted(missing.runIds),
291
+ timedOutRunIds: sorted(timedOut.runIds),
292
+ terminalStepIds: sorted(terminal.stepIds),
293
+ missingStepIds: sorted(missing.stepIds),
294
+ timedOutStepIds: sorted(timedOut.stepIds),
295
+ childRunIds: sorted(childRunIds),
296
+ completedChildRunIds: sorted(completed),
297
+ failedChildRunIds: sorted(failed),
298
+ canceledChildRunIds: sorted(canceled),
299
+ next: next.next
300
+ };
301
+ }
302
+ function summarizeLocks(locks, waitAttempts, runs, now) {
303
+ const keys = /* @__PURE__ */ new Set();
304
+ const staleKeys = /* @__PURE__ */ new Set();
305
+ const holderIds = /* @__PURE__ */ new Set();
306
+ const nextExpiry = new Earliest();
307
+ let oldestStaleAt;
308
+ for (const lock of locks) {
309
+ if (lock.releasedAt !== void 0) continue;
310
+ keys.add(lock.key);
311
+ if (lock.holderId !== void 0) holderIds.add(lock.holderId);
312
+ if (Temporal.Instant.compare(lock.leaseExpiresAt, now) <= 0) {
313
+ staleKeys.add(lock.key);
314
+ oldestStaleAt = earliestOptionalTimestamp(oldestStaleAt, lock.leaseExpiresAt);
315
+ } else nextExpiry.offer(lock.leaseExpiresAt, { key: lock.key });
316
+ }
317
+ const runById = new Map(runs.map((run) => [run.id, run]));
318
+ const waitingRunIds = /* @__PURE__ */ new Set();
319
+ const dueWaitingRunIds = /* @__PURE__ */ new Set();
320
+ const waitingStepIds = /* @__PURE__ */ new Set();
321
+ const waitingKeys = /* @__PURE__ */ new Set();
322
+ const nextWaitDeadline = new Earliest();
323
+ for (const attempt of waitAttempts) {
324
+ const details = lockWaitDetails(attempt);
325
+ const run = runById.get(attempt.runId);
326
+ if (details === void 0 || run === void 0 || run.status !== "waiting" || run.retryReason !== "step") continue;
327
+ waitingRunIds.add(attempt.runId);
328
+ waitingStepIds.add(attempt.stepId);
329
+ waitingKeys.add(details.key);
330
+ if (isDueAt(run.retryAt, now)) dueWaitingRunIds.add(attempt.runId);
331
+ if (details.waitDeadlineAt !== void 0 && Temporal.Instant.compare(details.waitDeadlineAt, now) > 0) nextWaitDeadline.offer(details.waitDeadlineAt, { runId: attempt.runId });
332
+ }
333
+ return {
334
+ keys: sorted(keys),
335
+ staleKeys: sorted(staleKeys),
336
+ holderIds: sorted(holderIds),
337
+ waitingRunIds: sorted(waitingRunIds),
338
+ dueWaitingRunIds: sorted(dueWaitingRunIds),
339
+ waitingStepIds: sorted(waitingStepIds),
340
+ waitingKeys: sorted(waitingKeys),
341
+ oldestStaleAt,
342
+ nextExpiry: nextExpiry.next,
343
+ nextWaitDeadline: nextWaitDeadline.next
344
+ };
345
+ }
346
+ function summarizeSchedules(schedules, now) {
347
+ const ids = /* @__PURE__ */ new Set();
348
+ const dueIds = /* @__PURE__ */ new Set();
349
+ const next = new Earliest();
350
+ for (const schedule of schedules) {
351
+ if (schedule.status !== "active") continue;
352
+ ids.add(schedule.id);
353
+ if (Temporal.Instant.compare(schedule.nextFireAt, now) <= 0) dueIds.add(schedule.id);
354
+ next.offer(schedule.nextFireAt, { scheduleId: schedule.id });
355
+ }
356
+ return {
357
+ scheduleIds: sorted(ids),
358
+ dueScheduleIds: sorted(dueIds),
359
+ next: next.next
360
+ };
361
+ }
362
+ //#endregion
363
+ export { lockWaitDetails, summarizeRecovery };
@@ -0,0 +1,43 @@
1
+ import { RunId } from "../../types/ids.mjs";
2
+ import { RunFailureSummary, RunRetrySummary, RunSummary } from "../../types/summary.mjs";
3
+ import { StepAttemptRecord } from "../../types/step-attempts.mjs";
4
+ import { RunRecord, RunStatus } from "../../types/run.mjs";
5
+ import { EventRecord } from "../../types/events.mjs";
6
+ import { WorkflowStore } from "../../types/store.mjs";
7
+ //#region src/engine/summary/runs.d.ts
8
+ export interface RunAttemptsInput {
9
+ readonly runId: RunId;
10
+ readonly attempts: readonly StepAttemptRecord[];
11
+ }
12
+ export interface RunChildWorkflowWaitInput extends RunAttemptsInput {
13
+ readonly childRuns: readonly RunRecord[];
14
+ }
15
+ export interface RunEventActivityInput {
16
+ readonly runId: RunId;
17
+ readonly events: readonly EventRecord[];
18
+ }
19
+ export interface RunSummaryInputs {
20
+ readonly runs: readonly RunRecord[];
21
+ readonly now: Temporal.Instant;
22
+ readonly cleanupCutoff?: Temporal.Instant;
23
+ readonly runningChildWorkflows?: readonly RunChildWorkflowWaitInput[];
24
+ readonly runningSleeps?: readonly RunAttemptsInput[];
25
+ readonly runningMessageWaits?: readonly RunAttemptsInput[];
26
+ readonly runningEvents?: readonly RunEventActivityInput[];
27
+ }
28
+ /** Summarizes run records and their active waits for inspection dashboards. */
29
+ export declare function summarizeRuns(inputs: RunSummaryInputs): RunSummary;
30
+ /** Child runs that belong to the given child-workflow step attempts of a parent run. */
31
+ export declare function getChildRunsForAttempts(store: WorkflowStore, parentRunId: RunId, attempts: readonly StepAttemptRecord[]): Promise<readonly RunRecord[]>;
32
+ interface ChildRunsSummary {
33
+ readonly childStatus: Record<RunStatus, number>;
34
+ readonly retryChildRunIds?: readonly string[];
35
+ readonly failedChildRunIds?: readonly string[];
36
+ readonly canceledChildRunIds?: readonly string[];
37
+ readonly childRetry?: RunRetrySummary;
38
+ readonly childFailure?: RunFailureSummary;
39
+ }
40
+ /** The state of the child runs that active child-workflow waits point at. */
41
+ export declare function summarizeChildRuns(runs: readonly RunRecord[]): ChildRunsSummary;
42
+ //#endregion
43
+ export {};
@@ -0,0 +1,294 @@
1
+ import { earliestOptionalTimestamp, latestOptionalTimestamp } from "../../temporal.mjs";
2
+ import { runStepAttemptKey } from "../../store-keys.mjs";
3
+ import { isRunStatus, isScheduledRunStatus } from "../../run-status.mjs";
4
+ import { Earliest, FailureTally, RUN_STATUSES, RUN_TRANSITION_REASONS, RetryTally, TERMINAL_RUN_STATUSES, WaitTally, counts, sorted, sortedOrUndefined } from "./tally.mjs";
5
+ //#region src/engine/summary/runs.ts
6
+ /** Summarizes run records and their active waits for inspection dashboards. */
7
+ function summarizeRuns(inputs) {
8
+ const states = new RunStateTally(inputs.now, inputs.cleanupCutoff);
9
+ for (const run of inputs.runs) states.add(run);
10
+ const streams = new WaitTally();
11
+ const streamNames = /* @__PURE__ */ new Set();
12
+ let chunkCount = 0;
13
+ const hooks = new WaitTally();
14
+ const hookNames = /* @__PURE__ */ new Set();
15
+ const webhookNames = /* @__PURE__ */ new Set();
16
+ const hookMessages = /* @__PURE__ */ new Set();
17
+ let webhooks = 0;
18
+ for (const { runId, events } of inputs.runningEvents ?? []) {
19
+ const active = activeEvents(events);
20
+ for (const stream of active.streams) {
21
+ streams.add(stream.stepId, void 0, stream.startedAt);
22
+ streamNames.add(stream.stepName);
23
+ chunkCount += stream.chunkCount;
24
+ }
25
+ for (const hook of active.hooks) {
26
+ hooks.add(hook.stepId, void 0, hook.startedAt);
27
+ hooks.next.offer(hook.timeoutAt, {
28
+ runId,
29
+ stepId: hook.stepId
30
+ });
31
+ hookMessages.add(hook.messageId);
32
+ if (hook.source === "hook") hookNames.add(hook.name);
33
+ else {
34
+ webhooks++;
35
+ webhookNames.add(hook.name);
36
+ }
37
+ }
38
+ }
39
+ const sleeps = new WaitTally();
40
+ for (const { runId, attempts } of inputs.runningSleeps ?? []) for (const attempt of attempts) {
41
+ sleeps.add(attempt.stepId, void 0, attempt.startedAt);
42
+ sleeps.next.offer(attempt.until, {
43
+ runId,
44
+ stepId: attempt.stepId,
45
+ attemptKey: runStepAttemptKey(runId, attempt),
46
+ duration: attempt.duration instanceof Temporal.Duration ? attempt.duration : void 0
47
+ });
48
+ }
49
+ const messageWaits = new WaitTally();
50
+ const messages = /* @__PURE__ */ new Set();
51
+ for (const { runId, attempts } of inputs.runningMessageWaits ?? []) for (const attempt of attempts) {
52
+ messageWaits.add(attempt.stepId, void 0, attempt.startedAt);
53
+ messageWaits.next.offer(attempt.timeoutAt, {
54
+ runId,
55
+ stepId: attempt.stepId,
56
+ attemptKey: runStepAttemptKey(runId, attempt)
57
+ });
58
+ if (attempt.messageId !== void 0) messages.add(attempt.messageId);
59
+ }
60
+ return {
61
+ ...states.finish(),
62
+ stream: streams.total === 0 ? void 0 : {
63
+ ...waitSummary(streams),
64
+ names: sorted(streamNames),
65
+ chunkCount
66
+ },
67
+ hook: hooks.total === 0 ? void 0 : {
68
+ ...waitSummary(hooks),
69
+ webhooks,
70
+ hookNames: sorted(hookNames),
71
+ webhookNames: sorted(webhookNames),
72
+ messages: sorted(hookMessages),
73
+ next: hooks.next.next
74
+ },
75
+ sleep: sleeps.total === 0 ? void 0 : {
76
+ ...waitSummary(sleeps),
77
+ next: sleeps.next.next
78
+ },
79
+ message: messageWaits.total === 0 ? void 0 : {
80
+ ...waitSummary(messageWaits),
81
+ messages: sorted(messages),
82
+ next: messageWaits.next.next
83
+ },
84
+ childWorkflow: summarizeChildWorkflowWaits(inputs.runningChildWorkflows ?? [])
85
+ };
86
+ }
87
+ /** Child runs that belong to the given child-workflow step attempts of a parent run. */
88
+ async function getChildRunsForAttempts(store, parentRunId, attempts) {
89
+ const childRunIds = new Set(attempts.flatMap((attempt) => attempt.childRunId ?? []));
90
+ return (await Promise.all([...childRunIds].map((runId) => store.getRun(runId)))).filter((run) => run !== void 0 && attempts.some((attempt) => run.parentRunId === parentRunId && run.parentStepId === attempt.stepId && run.parentStepName === attempt.stepName && run.parentStepAttempt === attempt.attempt && attempt.childRunId === run.id && attempt.workflowName === run.workflowName && attempt.workflowVersion === run.workflowVersion));
91
+ }
92
+ function waitSummary(waits) {
93
+ return {
94
+ count: waits.total,
95
+ oldestStartedAt: waits.oldestStartedAt
96
+ };
97
+ }
98
+ /** Everything a summary reads from the run records themselves. */
99
+ var RunStateTally = class {
100
+ #now;
101
+ #cleanupCutoff;
102
+ #total = 0;
103
+ #status = counts(RUN_STATUSES);
104
+ #workflows = /* @__PURE__ */ new Map();
105
+ #transitionReason = counts(RUN_TRANSITION_REASONS);
106
+ #latestTransitionAt;
107
+ #retry = new RetryTally();
108
+ #failure = new FailureTally();
109
+ #lease = {
110
+ count: 0,
111
+ expired: 0,
112
+ workerIds: /* @__PURE__ */ new Set(),
113
+ next: new Earliest()
114
+ };
115
+ #cleanup = { status: counts(TERMINAL_RUN_STATUSES) };
116
+ #nextAvailableAt;
117
+ #oldestPendingAt;
118
+ #oldestRunningAt;
119
+ constructor(now, cleanupCutoff) {
120
+ this.#now = now;
121
+ this.#cleanupCutoff = cleanupCutoff;
122
+ }
123
+ add(run) {
124
+ if (!isRunStatus(run.status)) return;
125
+ this.#total++;
126
+ this.#status[run.status]++;
127
+ this.#addWorkflow(run);
128
+ this.#transitionReason[run.lastTransitionReason]++;
129
+ this.#latestTransitionAt = latestOptionalTimestamp(this.#latestTransitionAt, run.lastTransitionAt);
130
+ this.#retry.add(run);
131
+ this.#failure.add(run);
132
+ this.#addLease(run);
133
+ this.#addCleanup(run, run.status);
134
+ if (isScheduledRunStatus(run.status)) {
135
+ this.#nextAvailableAt = earliestOptionalTimestamp(this.#nextAvailableAt, run.availableAt);
136
+ this.#oldestPendingAt = earliestOptionalTimestamp(this.#oldestPendingAt, run.createdAt);
137
+ }
138
+ if (run.status === "running") this.#oldestRunningAt = earliestOptionalTimestamp(this.#oldestRunningAt, run.startedAt ?? run.createdAt);
139
+ }
140
+ finish() {
141
+ const lease = this.#lease;
142
+ const cleanup = this.#cleanup;
143
+ return {
144
+ total: this.#total,
145
+ status: this.#status,
146
+ workflows: [...this.#workflows.values()].sort((left, right) => left.name.localeCompare(right.name) || (left.version ?? "").localeCompare(right.version ?? "")),
147
+ transition: {
148
+ reason: this.#transitionReason,
149
+ latestTransitionAt: this.#latestTransitionAt
150
+ },
151
+ retry: this.#retry.finish(),
152
+ failure: this.#failure.total === 0 ? void 0 : this.#failure.finish(),
153
+ lease: {
154
+ count: lease.count,
155
+ expired: lease.expired,
156
+ workerIds: sorted(lease.workerIds),
157
+ oldestExpiredAt: lease.oldestExpiredAt,
158
+ next: lease.next.next
159
+ },
160
+ cleanup: this.#cleanupCutoff === void 0 ? void 0 : {
161
+ status: cleanup.status,
162
+ oldestFinishedAt: cleanup.oldestFinishedAt,
163
+ newestFinishedAt: cleanup.newestFinishedAt
164
+ },
165
+ nextAvailableAt: this.#nextAvailableAt,
166
+ oldestPendingAt: this.#oldestPendingAt,
167
+ oldestRunningAt: this.#oldestRunningAt
168
+ };
169
+ }
170
+ #addWorkflow(run) {
171
+ const key = run.workflowVersion === void 0 ? run.workflowName : `${run.workflowName}\0${run.workflowVersion}`;
172
+ const entry = this.#workflows.get(key);
173
+ this.#workflows.set(key, {
174
+ name: run.workflowName,
175
+ version: run.workflowVersion,
176
+ count: (entry?.count ?? 0) + 1
177
+ });
178
+ }
179
+ #addLease(run) {
180
+ if (run.status !== "running") return;
181
+ const lease = this.#lease;
182
+ lease.count++;
183
+ if (run.workerId !== void 0) lease.workerIds.add(run.workerId);
184
+ if (run.workerId === void 0 || run.leaseExpiresAt === void 0) lease.expired++;
185
+ else if (Temporal.Instant.compare(run.leaseExpiresAt, this.#now) <= 0) {
186
+ lease.expired++;
187
+ lease.oldestExpiredAt = earliestOptionalTimestamp(lease.oldestExpiredAt, run.leaseExpiresAt);
188
+ } else lease.next.offer(run.leaseExpiresAt, { runId: run.id });
189
+ }
190
+ #addCleanup(run, status) {
191
+ const cutoff = this.#cleanupCutoff;
192
+ if (cutoff === void 0 || status !== "completed" && status !== "failed" && status !== "canceled" || run.finishedAt === void 0 || Temporal.Instant.compare(run.finishedAt, cutoff) >= 0) return;
193
+ const cleanup = this.#cleanup;
194
+ cleanup.status[status]++;
195
+ cleanup.oldestFinishedAt = earliestOptionalTimestamp(cleanup.oldestFinishedAt, run.finishedAt);
196
+ cleanup.newestFinishedAt = latestOptionalTimestamp(cleanup.newestFinishedAt, run.finishedAt);
197
+ }
198
+ };
199
+ function summarizeChildWorkflowWaits(inputs) {
200
+ const waits = new WaitTally();
201
+ const workflows = /* @__PURE__ */ new Set();
202
+ const childRuns = /* @__PURE__ */ new Map();
203
+ for (const { runId, attempts, childRuns: runs } of inputs) {
204
+ for (const attempt of attempts) {
205
+ waits.add(attempt.stepId, void 0, attempt.startedAt);
206
+ waits.next.offer(attempt.timeoutAt, {
207
+ runId,
208
+ stepId: attempt.stepId,
209
+ attemptKey: runStepAttemptKey(runId, attempt)
210
+ });
211
+ if (attempt.workflowName !== void 0) workflows.add(attempt.workflowVersion === void 0 ? attempt.workflowName : `${attempt.workflowName}@${attempt.workflowVersion}`);
212
+ }
213
+ for (const run of runs) childRuns.set(run.id, run);
214
+ }
215
+ if (waits.total === 0) return;
216
+ const { childStatus, childRetry, childFailure } = summarizeChildRuns([...childRuns.values()]);
217
+ return {
218
+ ...waitSummary(waits),
219
+ workflows: sorted(workflows),
220
+ childStatus,
221
+ childRetry,
222
+ childFailure,
223
+ next: waits.next.next
224
+ };
225
+ }
226
+ /** The state of the child runs that active child-workflow waits point at. */
227
+ function summarizeChildRuns(runs) {
228
+ const childStatus = counts(RUN_STATUSES);
229
+ const retry = new RetryTally();
230
+ const failure = new FailureTally();
231
+ const failedChildRunIds = /* @__PURE__ */ new Set();
232
+ const canceledChildRunIds = /* @__PURE__ */ new Set();
233
+ for (const run of runs) {
234
+ if (!isRunStatus(run.status)) continue;
235
+ childStatus[run.status]++;
236
+ retry.add(run);
237
+ failure.add(run);
238
+ if (run.status === "failed") failedChildRunIds.add(run.id);
239
+ else if (run.status === "canceled") canceledChildRunIds.add(run.id);
240
+ }
241
+ return {
242
+ childStatus,
243
+ retryChildRunIds: retry.runIds(),
244
+ failedChildRunIds: sortedOrUndefined(failedChildRunIds),
245
+ canceledChildRunIds: sortedOrUndefined(canceledChildRunIds),
246
+ childRetry: retry.total === 0 ? void 0 : retry.finish(),
247
+ childFailure: failure.total === 0 ? void 0 : failure.finish()
248
+ };
249
+ }
250
+ /** Streams and hooks of one run that have started and not yet ended. */
251
+ function activeEvents(events) {
252
+ const streams = /* @__PURE__ */ new Map();
253
+ const hooks = /* @__PURE__ */ new Map();
254
+ const ended = /* @__PURE__ */ new Set();
255
+ for (const event of events) switch (event.kind) {
256
+ case "stream_started":
257
+ streams.set(event.stepId, {
258
+ stepId: event.stepId,
259
+ stepName: event.stepName,
260
+ streamId: event.streamId,
261
+ startedAt: event.timestamp,
262
+ chunkCount: 0
263
+ });
264
+ break;
265
+ case "stream_chunk": {
266
+ const stream = streams.get(event.stepId);
267
+ if (stream !== void 0) streams.set(event.stepId, {
268
+ ...stream,
269
+ chunkCount: stream.chunkCount + 1
270
+ });
271
+ break;
272
+ }
273
+ case "message_wait_started":
274
+ if (event.source === "hook" || event.source === "webhook") hooks.set(event.stepId, {
275
+ stepId: event.stepId,
276
+ name: event.stepName,
277
+ messageId: event.messageId,
278
+ source: event.source,
279
+ startedAt: event.timestamp,
280
+ timeoutAt: event.timeoutAt
281
+ });
282
+ break;
283
+ case "stream_closed":
284
+ case "stream_failed":
285
+ case "message_wait_completed":
286
+ case "message_wait_failed": ended.add(`${event.kind.startsWith("stream") ? "stream" : "hook"}:${event.stepId}`);
287
+ }
288
+ return {
289
+ streams: [...streams.values()].filter((stream) => !ended.has(`stream:${stream.stepId}`)),
290
+ hooks: [...hooks.values()].filter((hook) => !ended.has(`hook:${hook.stepId}`))
291
+ };
292
+ }
293
+ //#endregion
294
+ export { getChildRunsForAttempts, summarizeChildRuns, summarizeRuns };