@adonis-agora/durable 0.58.3 → 0.60.0

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 (219) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/dist/assets/spa/assets/index-70hGzOnT.css +1 -0
  3. package/dist/assets/spa/assets/index-BI1EANJO.js +16 -0
  4. package/dist/assets/spa/assets/index-BI1EANJO.js.map +1 -0
  5. package/dist/assets/spa/index.html +2 -2
  6. package/dist/commands/lifecycle_republish.d.ts +23 -0
  7. package/dist/commands/lifecycle_republish.d.ts.map +1 -0
  8. package/dist/commands/lifecycle_republish.js +64 -0
  9. package/dist/commands/lifecycle_republish.js.map +1 -0
  10. package/dist/commands/main.d.ts +4 -3
  11. package/dist/commands/main.d.ts.map +1 -1
  12. package/dist/commands/main.js +3 -1
  13. package/dist/commands/main.js.map +1 -1
  14. package/dist/providers/dashboard_provider.d.ts +2 -0
  15. package/dist/providers/dashboard_provider.d.ts.map +1 -1
  16. package/dist/providers/dashboard_provider.js +9 -1
  17. package/dist/providers/dashboard_provider.js.map +1 -1
  18. package/dist/providers/durable_provider.d.ts.map +1 -1
  19. package/dist/providers/durable_provider.js +3 -0
  20. package/dist/providers/durable_provider.js.map +1 -1
  21. package/dist/src/codec-state-store.d.ts +10 -1
  22. package/dist/src/codec-state-store.d.ts.map +1 -1
  23. package/dist/src/codec-state-store.js +25 -0
  24. package/dist/src/codec-state-store.js.map +1 -1
  25. package/dist/src/commands/index.d.ts +1 -1
  26. package/dist/src/commands/index.d.ts.map +1 -1
  27. package/dist/src/commands/index.js +1 -1
  28. package/dist/src/commands/index.js.map +1 -1
  29. package/dist/src/commands/runs.d.ts +24 -1
  30. package/dist/src/commands/runs.d.ts.map +1 -1
  31. package/dist/src/commands/runs.js +50 -0
  32. package/dist/src/commands/runs.js.map +1 -1
  33. package/dist/src/commands/worker.d.ts.map +1 -1
  34. package/dist/src/commands/worker.js +3 -0
  35. package/dist/src/commands/worker.js.map +1 -1
  36. package/dist/src/dashboard/gateway-adapter.d.ts +5 -0
  37. package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -1
  38. package/dist/src/dashboard/gateway-adapter.js +20 -0
  39. package/dist/src/dashboard/gateway-adapter.js.map +1 -1
  40. package/dist/src/dashboard/handlers.d.ts +29 -1
  41. package/dist/src/dashboard/handlers.d.ts.map +1 -1
  42. package/dist/src/dashboard/handlers.js +103 -0
  43. package/dist/src/dashboard/handlers.js.map +1 -1
  44. package/dist/src/dashboard/index.d.ts +2 -2
  45. package/dist/src/dashboard/index.d.ts.map +1 -1
  46. package/dist/src/dashboard/index.js +2 -2
  47. package/dist/src/dashboard/index.js.map +1 -1
  48. package/dist/src/dashboard/openapi.d.ts.map +1 -1
  49. package/dist/src/dashboard/openapi.js +39 -0
  50. package/dist/src/dashboard/openapi.js.map +1 -1
  51. package/dist/src/define_config.d.ts +13 -0
  52. package/dist/src/define_config.d.ts.map +1 -1
  53. package/dist/src/define_config.js.map +1 -1
  54. package/dist/src/diagnostics-bridge.d.ts +5 -1
  55. package/dist/src/diagnostics-bridge.d.ts.map +1 -1
  56. package/dist/src/diagnostics-bridge.js +16 -2
  57. package/dist/src/diagnostics-bridge.js.map +1 -1
  58. package/dist/src/engine.d.ts +426 -6
  59. package/dist/src/engine.d.ts.map +1 -1
  60. package/dist/src/engine.js +1951 -101
  61. package/dist/src/engine.js.map +1 -1
  62. package/dist/src/errors.d.ts.map +1 -1
  63. package/dist/src/errors.js +4 -0
  64. package/dist/src/errors.js.map +1 -1
  65. package/dist/src/event-accumulators.d.ts +28 -5
  66. package/dist/src/event-accumulators.d.ts.map +1 -1
  67. package/dist/src/event-accumulators.js +102 -21
  68. package/dist/src/event-accumulators.js.map +1 -1
  69. package/dist/src/events.d.ts +25 -0
  70. package/dist/src/events.d.ts.map +1 -1
  71. package/dist/src/events.js +24 -0
  72. package/dist/src/events.js.map +1 -1
  73. package/dist/src/handshake/announced.d.ts +6 -0
  74. package/dist/src/handshake/announced.d.ts.map +1 -1
  75. package/dist/src/handshake/announced.js +20 -0
  76. package/dist/src/handshake/announced.js.map +1 -1
  77. package/dist/src/handshake/descriptor.d.ts +6 -0
  78. package/dist/src/handshake/descriptor.d.ts.map +1 -1
  79. package/dist/src/handshake/descriptor.js +1 -0
  80. package/dist/src/handshake/descriptor.js.map +1 -1
  81. package/dist/src/index.d.ts +3 -2
  82. package/dist/src/index.d.ts.map +1 -1
  83. package/dist/src/index.js +3 -2
  84. package/dist/src/index.js.map +1 -1
  85. package/dist/src/interfaces.d.ts +139 -3
  86. package/dist/src/interfaces.d.ts.map +1 -1
  87. package/dist/src/interfaces.js +11 -0
  88. package/dist/src/interfaces.js.map +1 -1
  89. package/dist/src/lifecycle-events.d.ts +372 -0
  90. package/dist/src/lifecycle-events.d.ts.map +1 -0
  91. package/dist/src/lifecycle-events.js +383 -0
  92. package/dist/src/lifecycle-events.js.map +1 -0
  93. package/dist/src/metrics.d.ts +15 -0
  94. package/dist/src/metrics.d.ts.map +1 -1
  95. package/dist/src/metrics.js +36 -1
  96. package/dist/src/metrics.js.map +1 -1
  97. package/dist/src/otel/durable-metrics.d.ts +9 -0
  98. package/dist/src/otel/durable-metrics.d.ts.map +1 -1
  99. package/dist/src/otel/durable-metrics.js +17 -0
  100. package/dist/src/otel/durable-metrics.js.map +1 -1
  101. package/dist/src/otel/durable-otel.d.ts +7 -0
  102. package/dist/src/otel/durable-otel.d.ts.map +1 -1
  103. package/dist/src/otel/durable-otel.js +69 -3
  104. package/dist/src/otel/durable-otel.js.map +1 -1
  105. package/dist/src/run-detail-summary.d.ts +48 -1
  106. package/dist/src/run-detail-summary.d.ts.map +1 -1
  107. package/dist/src/run-detail-summary.js +30 -2
  108. package/dist/src/run-detail-summary.js.map +1 -1
  109. package/dist/src/run-gateway/interface.d.ts +16 -0
  110. package/dist/src/run-gateway/interface.d.ts.map +1 -1
  111. package/dist/src/run-gateway/proxy-run-gateway.d.ts +31 -1
  112. package/dist/src/run-gateway/proxy-run-gateway.d.ts.map +1 -1
  113. package/dist/src/run-gateway/proxy-run-gateway.js +59 -7
  114. package/dist/src/run-gateway/proxy-run-gateway.js.map +1 -1
  115. package/dist/src/run-gateway/run-request-responder.d.ts +4 -29
  116. package/dist/src/run-gateway/run-request-responder.d.ts.map +1 -1
  117. package/dist/src/run-gateway/run-request-responder.js +183 -6
  118. package/dist/src/run-gateway/run-request-responder.js.map +1 -1
  119. package/dist/src/run-gateway/store-run-gateway.d.ts +9 -0
  120. package/dist/src/run-gateway/store-run-gateway.d.ts.map +1 -1
  121. package/dist/src/run-gateway/store-run-gateway.js +8 -0
  122. package/dist/src/run-gateway/store-run-gateway.js.map +1 -1
  123. package/dist/src/run-waiting.d.ts +1 -0
  124. package/dist/src/run-waiting.d.ts.map +1 -1
  125. package/dist/src/run-waiting.js +6 -1
  126. package/dist/src/run-waiting.js.map +1 -1
  127. package/dist/src/sticky-continuation.d.ts +141 -0
  128. package/dist/src/sticky-continuation.d.ts.map +1 -0
  129. package/dist/src/sticky-continuation.js +231 -0
  130. package/dist/src/sticky-continuation.js.map +1 -0
  131. package/dist/src/stores/factory.d.ts +6 -0
  132. package/dist/src/stores/factory.d.ts.map +1 -1
  133. package/dist/src/stores/factory.js +3 -0
  134. package/dist/src/stores/factory.js.map +1 -1
  135. package/dist/src/stores/lucid-pg-hot-path.d.ts +30 -0
  136. package/dist/src/stores/lucid-pg-hot-path.d.ts.map +1 -0
  137. package/dist/src/stores/lucid-pg-hot-path.js +67 -0
  138. package/dist/src/stores/lucid-pg-hot-path.js.map +1 -0
  139. package/dist/src/stores/lucid.d.ts +30 -1
  140. package/dist/src/stores/lucid.d.ts.map +1 -1
  141. package/dist/src/stores/lucid.js +460 -17
  142. package/dist/src/stores/lucid.js.map +1 -1
  143. package/dist/src/telescope/dashboard.d.ts.map +1 -1
  144. package/dist/src/telescope/dashboard.js +50 -0
  145. package/dist/src/telescope/dashboard.js.map +1 -1
  146. package/dist/src/telescope/data-providers.d.ts +19 -0
  147. package/dist/src/telescope/data-providers.d.ts.map +1 -1
  148. package/dist/src/telescope/data-providers.js +128 -2
  149. package/dist/src/telescope/data-providers.js.map +1 -1
  150. package/dist/src/telescope/extension.d.ts.map +1 -1
  151. package/dist/src/telescope/extension.js +4 -1
  152. package/dist/src/telescope/extension.js.map +1 -1
  153. package/dist/src/telescope/index.d.ts +3 -2
  154. package/dist/src/telescope/index.d.ts.map +1 -1
  155. package/dist/src/telescope/index.js +2 -1
  156. package/dist/src/telescope/index.js.map +1 -1
  157. package/dist/src/telescope/telescope-sdk.d.ts +16 -0
  158. package/dist/src/telescope/telescope-sdk.d.ts.map +1 -1
  159. package/dist/src/telescope/watcher.d.ts +66 -0
  160. package/dist/src/telescope/watcher.d.ts.map +1 -0
  161. package/dist/src/telescope/watcher.js +185 -0
  162. package/dist/src/telescope/watcher.js.map +1 -0
  163. package/dist/src/testing/in-memory-state-store.d.ts +12 -1
  164. package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
  165. package/dist/src/testing/in-memory-state-store.js +109 -1
  166. package/dist/src/testing/in-memory-state-store.js.map +1 -1
  167. package/dist/src/testing-kit/harness.d.ts +1 -1
  168. package/dist/src/testing-kit/harness.d.ts.map +1 -1
  169. package/dist/src/testing-kit/harness.js +3 -1
  170. package/dist/src/testing-kit/harness.js.map +1 -1
  171. package/dist/src/testing-kit/state-store-conformance.d.ts.map +1 -1
  172. package/dist/src/testing-kit/state-store-conformance.js +258 -0
  173. package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
  174. package/dist/src/transport-pool.d.ts +10 -0
  175. package/dist/src/transport-pool.d.ts.map +1 -1
  176. package/dist/src/transport-pool.js +23 -2
  177. package/dist/src/transport-pool.js.map +1 -1
  178. package/dist/src/transports/bullmq/bullmq-transport.d.ts +41 -1
  179. package/dist/src/transports/bullmq/bullmq-transport.d.ts.map +1 -1
  180. package/dist/src/transports/bullmq/bullmq-transport.js +283 -5
  181. package/dist/src/transports/bullmq/bullmq-transport.js.map +1 -1
  182. package/dist/src/transports/bullmq/deps.d.ts +12 -1
  183. package/dist/src/transports/bullmq/deps.d.ts.map +1 -1
  184. package/dist/src/transports/bullmq/deps.js.map +1 -1
  185. package/dist/src/transports/bullmq/naming.d.ts +10 -0
  186. package/dist/src/transports/bullmq/naming.d.ts.map +1 -1
  187. package/dist/src/transports/bullmq/naming.js +16 -0
  188. package/dist/src/transports/bullmq/naming.js.map +1 -1
  189. package/dist/src/transports/db.d.ts +3 -1
  190. package/dist/src/transports/db.d.ts.map +1 -1
  191. package/dist/src/transports/db.js +4 -4
  192. package/dist/src/transports/db.js.map +1 -1
  193. package/dist/src/transports/queue.d.ts +3 -1
  194. package/dist/src/transports/queue.d.ts.map +1 -1
  195. package/dist/src/transports/queue.js +2 -2
  196. package/dist/src/transports/queue.js.map +1 -1
  197. package/dist/src/transports/worker-keys.d.ts +2 -1
  198. package/dist/src/transports/worker-keys.d.ts.map +1 -1
  199. package/dist/src/transports/worker-keys.js +3 -2
  200. package/dist/src/transports/worker-keys.js.map +1 -1
  201. package/dist/src/workflow-ctx.d.ts +7 -0
  202. package/dist/src/workflow-ctx.d.ts.map +1 -1
  203. package/dist/src/workflow-ctx.js +90 -1
  204. package/dist/src/workflow-ctx.js.map +1 -1
  205. package/dist/src/workflow-discovery.d.ts.map +1 -1
  206. package/dist/src/workflow-discovery.js +1 -0
  207. package/dist/src/workflow-discovery.js.map +1 -1
  208. package/dist/src/workflow-events.d.ts +101 -0
  209. package/dist/src/workflow-events.d.ts.map +1 -1
  210. package/dist/src/workflow-events.js +79 -1
  211. package/dist/src/workflow-events.js.map +1 -1
  212. package/dist/src/workflow-ref.d.ts +17 -2
  213. package/dist/src/workflow-ref.d.ts.map +1 -1
  214. package/dist/src/workflow-ref.js.map +1 -1
  215. package/package.json +5 -5
  216. package/skills/durable-cluster/SKILL.md +4 -2
  217. package/dist/assets/spa/assets/index-6nmSTfT7.css +0 -1
  218. package/dist/assets/spa/assets/index-Dj0X-IAu.js +0 -16
  219. package/dist/assets/spa/assets/index-Dj0X-IAu.js.map +0 -1
@@ -0,0 +1,372 @@
1
+ import type { RunStatus, SearchAttributes, StepError, WorkflowRun } from './interfaces.js';
2
+ import { type WorkflowInputOf, type WorkflowOutputOf, type WorkflowRef } from './workflow-ref.js';
3
+ /**
4
+ * Lifecycle events: when a run settles, the engine publishes `run.completed:<workflow>` or
5
+ * `run.failed:<workflow>` on the same bus as `publishEvent`, so another workflow can start on it
6
+ * through `onEvent` (or `@OnWorkflowCompleted` / `@OnWorkflowFailed`)
7
+ * without the settling workflow knowing it exists.
8
+ *
9
+ * Delivery is exactly once per subscriber and settled run. The terminal status write also tags the
10
+ * run {@link LIFECYCLE_PENDING_TAG}, so a process that dies before publishing leaves a marker the
11
+ * timer poller's lifecycle sweep picks up; the subscriber's run id is deterministic
12
+ * ({@link lifecycleRunId}), so publishing twice starts it once.
13
+ */
14
+ /** The event published when a run of `workflow` completes. */
15
+ export declare function runCompletedEvent(workflow: WorkflowRef): string;
16
+ /** The event published when a run of `workflow` ends failed, cancelled or dead. */
17
+ export declare function runFailedEvent(workflow: WorkflowRef): string;
18
+ /**
19
+ * Tag written with a run's terminal status when some workflow subscribes to its lifecycle event,
20
+ * and removed once the event is published. A settled run still carrying it was never published.
21
+ *
22
+ * Without any {@link LIFECYCLE_OWED_TAG_PREFIX} tag beside it, the run's owed set is unresolved: the
23
+ * terminal write happened before this instance could read the subscriptions the fleet announces
24
+ * (no read yet, or the last one failed). The publish that next reads them successfully resolves it
25
+ * into owed tags; until then, the subscribers registered on an instance are started by it.
26
+ */
27
+ export declare const LIFECYCLE_PENDING_TAG = "durable:lifecycle:pending";
28
+ /**
29
+ * How long after a run settled the lifecycle sweep still looks for subscribers the run owes its
30
+ * event to but was never marked for: one announced by an instance that came up just after the
31
+ * run settled, before the settling instance's snapshot of the fleet's subscriptions saw it. A
32
+ * subscriber that appears later than this is a backfill, done with
33
+ * `WorkflowEngine.republishLifecycle`.
34
+ */
35
+ export declare const LIFECYCLE_HEAL_WINDOW_MS: number;
36
+ /** Prefix of the tags naming the subscribers a settled run started (`durable:triggered:<workflow>`). */
37
+ export declare const LIFECYCLE_TRIGGERED_TAG_PREFIX = "durable:triggered:";
38
+ /**
39
+ * Prefix of the tags naming each subscriber a settled run still owes its lifecycle event to
40
+ * (`durable:lifecycle:owed:<workflow>`). Written with the terminal status, beside
41
+ * {@link LIFECYCLE_PENDING_TAG}, for every subscriber registered locally or announced by a live
42
+ * worker. An instance removes the owed tags of the subscribers it starts; the pending tag goes with
43
+ * the last owed tag.
44
+ */
45
+ export declare const LIFECYCLE_OWED_TAG_PREFIX = "durable:lifecycle:owed:";
46
+ /**
47
+ * How long after a run settled the lifecycle sweep keeps an owed subscriber that no live worker
48
+ * announces and this instance does not register. Past it, the owed tag is dropped and the engine
49
+ * emits `run.trigger_failed`, so a removed subscriber does not keep the run from retention forever.
50
+ */
51
+ export declare const LIFECYCLE_ORPHAN_MS: number;
52
+ /**
53
+ * Prefix of the tags naming each subscriber a settled run could not start
54
+ * (`durable:trigger_failed:<workflow>`): its `where` threw, its input was rejected, its start failed,
55
+ * or the sweep dropped it as an orphan (see {@link LIFECYCLE_ORPHAN_MS}). Written by the same tag
56
+ * write that drops the subscriber's owed tag, and removed by the write that records a later start of
57
+ * it. The reason is not stored: it is in the `run.trigger_failed` event the failure emits.
58
+ */
59
+ export declare const LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX = "durable:trigger_failed:";
60
+ /** The trigger-failed tag of `subscriber` (see {@link LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX}). */
61
+ export declare function lifecycleTriggerFailedTag(subscriber: string): string;
62
+ /** The owed tag of `subscriber` (see {@link LIFECYCLE_OWED_TAG_PREFIX}). */
63
+ export declare function lifecycleOwedTag(subscriber: string): string;
64
+ /** The subscribers a run still owes its lifecycle event to, read from its owed tags. */
65
+ export declare function owedSubscribersOf(run: Pick<WorkflowRun, 'tags'>): string[];
66
+ /**
67
+ * Prefix of the tags naming each debounce/batch subscriber a settled run's event was routed to
68
+ * (`durable:coalesced:<workflow>`). Such a subscriber starts no run of the source's id, so it gets no
69
+ * {@link LIFECYCLE_TRIGGERED_TAG_PREFIX} tag; this one records the delivery instead, written by the
70
+ * same tag write that drops its owed tag.
71
+ */
72
+ export declare const LIFECYCLE_COALESCED_TAG_PREFIX = "durable:coalesced:";
73
+ /** The coalesced tag of `subscriber` (see {@link LIFECYCLE_COALESCED_TAG_PREFIX}). */
74
+ export declare function lifecycleCoalescedTag(subscriber: string): string;
75
+ /** The subscribers whose {@link LIFECYCLE_COALESCED_TAG_PREFIX} tag is in `tags`. */
76
+ export declare function coalescedSubscribersOf(tags: readonly string[] | undefined): string[];
77
+ /**
78
+ * The subscribers a settled run's tags record as done with its event: started (a
79
+ * {@link LIFECYCLE_TRIGGERED_TAG_PREFIX} tag), routed into an accumulator (a
80
+ * {@link LIFECYCLE_COALESCED_TAG_PREFIX} tag) or failed (a {@link LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX}
81
+ * tag).
82
+ */
83
+ export declare function deliveredSubscribersOf(run: Pick<WorkflowRun, 'tags'>): Set<string>;
84
+ /**
85
+ * Prefix of the tag holding the W3C `traceparent` of a settled run's own span
86
+ * (`durable:lifecycle:trace:<traceparent>`). Written with the lifecycle marker, when some workflow
87
+ * subscribes to the run's ending and the engine has a run trace provider (see
88
+ * `WorkflowEngine.setRunTraceparent`), so a subscriber's trace can link to its source run from any
89
+ * process.
90
+ */
91
+ export declare const LIFECYCLE_TRACE_TAG_PREFIX = "durable:lifecycle:trace:";
92
+ /** The traceparent a settled run recorded in its {@link LIFECYCLE_TRACE_TAG_PREFIX} tag, if any. */
93
+ export declare function lifecycleTraceparentOf(tags: readonly string[] | undefined): string | undefined;
94
+ /** Whether `tag` is one of the engine's lifecycle bookkeeping tags rather than a user tag. */
95
+ export declare function isLifecycleTag(tag: string): boolean;
96
+ /** The payload of a lifecycle event, read from the store after the run settled. */
97
+ export interface WorkflowLifecycleEvent<TInput = unknown, TOutput = unknown> {
98
+ runId: string;
99
+ workflow: string;
100
+ workflowVersion: string;
101
+ /** `completed` on `run.completed:*`; `failed`, `cancelled` or `dead` on `run.failed:*`. */
102
+ status: RunStatus;
103
+ namespace?: string | undefined;
104
+ input: TInput;
105
+ /** Present on a completed run. */
106
+ output?: TOutput | undefined;
107
+ /** Present on a run that did not complete. */
108
+ error?: StepError | undefined;
109
+ tags?: string[] | undefined;
110
+ searchAttributes?: SearchAttributes | undefined;
111
+ }
112
+ /** The lifecycle event a run of workflow class `C` publishes, typed by its input and output. */
113
+ export type LifecycleEventOf<C> = WorkflowLifecycleEvent<WorkflowInputOf<C>, WorkflowOutputOf<C>>;
114
+ /** Which lifecycle event a settled run publishes: `completed`, or `failed` for any other ending. */
115
+ export type LifecycleKind = 'completed' | 'failed';
116
+ /**
117
+ * The id of the run a lifecycle event starts for `subscriber`. Deterministic, so the same settled
118
+ * run never starts the same subscriber twice, and either side of the link can be found from the other.
119
+ */
120
+ export declare function lifecycleRunId(sourceRunId: string, kind: LifecycleKind, subscriber: string): string;
121
+ /** The lifecycle event a run in `status` published, or undefined while it has not settled. */
122
+ export declare function lifecycleKindOf(status: RunStatus | undefined): LifecycleKind | undefined;
123
+ /** The event name a run of `workflow` publishes when it settles as `kind`. */
124
+ export declare function lifecycleEventName(workflow: string, kind: LifecycleKind): string;
125
+ /** The workflow and ending a lifecycle event name stands for, or undefined for any other event. */
126
+ export declare function parseLifecycleEvent(event: string): {
127
+ workflow: string;
128
+ kind: LifecycleKind;
129
+ } | undefined;
130
+ /**
131
+ * One workflow that starts when another settles, as the dashboard's workflow page lists it. `local`
132
+ * is what the answering instance has registered, with what its subscription does to the payload;
133
+ * an entry only live workers announce (a Python subscriber, or a TypeScript one served elsewhere)
134
+ * states none of that, since the announcement carries only the event name.
135
+ */
136
+ export interface LifecycleSubscriptionLink {
137
+ /** The other end: the subscriber on `startsOnSettle`, the settling workflow on `startedBy`. */
138
+ workflow: string;
139
+ kind: LifecycleKind;
140
+ /** Registered on the answering instance (true) or only announced by live workers (false). */
141
+ local: boolean;
142
+ /** Announced by at least one live worker. */
143
+ announced: boolean;
144
+ /** The subscription filters payloads with `where`. */
145
+ where: boolean;
146
+ /** The subscription maps the payload to the run's input with `input`. */
147
+ input: boolean;
148
+ /** The subscriber coalesces events: debounced or batched, and whether per `key`. */
149
+ coalesce?: {
150
+ mode: 'debounce' | 'batch';
151
+ keyed: boolean;
152
+ } | undefined;
153
+ }
154
+ /**
155
+ * Who starts whom through lifecycle events, for one workflow: the subscribers of its
156
+ * `run.completed:<workflow>` / `run.failed:<workflow>` events, and the workflows whose settling
157
+ * starts it. Built from the answering instance's registry and the subscriptions live workers
158
+ * announce.
159
+ */
160
+ export interface WorkflowLifecycleLinks {
161
+ workflow: string;
162
+ /** Workflows that start when this one settles, sorted by workflow then kind. */
163
+ startsOnSettle: LifecycleSubscriptionLink[];
164
+ /** Workflows whose settling starts this one, sorted by workflow then kind. */
165
+ startedBy: LifecycleSubscriptionLink[];
166
+ }
167
+ /**
168
+ * The run whose settling started `run`, when a lifecycle event started it. Read from the run's id,
169
+ * which ends in `:<kind>:<its own workflow>`, so it holds whatever input the subscriber was given.
170
+ */
171
+ export declare function lifecycleSourceOf(run: {
172
+ id: string;
173
+ workflow: string;
174
+ }): {
175
+ runId: string;
176
+ kind: LifecycleKind;
177
+ } | undefined;
178
+ /**
179
+ * The runs `run`'s settling started, read from its {@link LIFECYCLE_TRIGGERED_TAG_PREFIX} tags.
180
+ * Empty for a run that has not settled or started nobody. Needs no subscriber registry, so any
181
+ * process holding the run row can answer it.
182
+ */
183
+ export declare function triggeredRunsOf(run: Pick<WorkflowRun, 'id' | 'status' | 'tags'>): string[];
184
+ /** The {@link WorkflowLifecycleEvent} a settled run publishes. */
185
+ export declare function lifecycleEventOf(run: WorkflowRun): WorkflowLifecycleEvent;
186
+ /**
187
+ * What `engine.republishLifecycle` publishes again: one settled run, or the settled runs of a
188
+ * workflow (by ending and settle time). `subscriber` restricts it to one subscribing workflow.
189
+ */
190
+ export type RepublishLifecycleTarget = {
191
+ runId: string;
192
+ subscriber?: string | undefined;
193
+ } | {
194
+ workflow: string;
195
+ /** Only runs that settled this way. Both when absent. */
196
+ kind?: LifecycleKind | undefined;
197
+ /** Only runs that settled at or after this instant. */
198
+ since?: Date | undefined;
199
+ /** Only runs that settled at or before this instant. */
200
+ until?: Date | undefined;
201
+ subscriber?: string | undefined;
202
+ /** At most this many runs. Default 1000. */
203
+ limit?: number | undefined;
204
+ /**
205
+ * Only runs of this namespace. Defaults to the engine's own namespace (every namespace on an
206
+ * engine without one). The run gateway's tenant proxy forces it to the tenant's.
207
+ */
208
+ namespace?: string | undefined;
209
+ };
210
+ /** What `engine.republishLifecycle` did. */
211
+ export interface RepublishLifecycleResult {
212
+ /** Settled runs it published. */
213
+ runs: number;
214
+ /** Subscriber runs it started. A subscriber run that already existed is not counted. */
215
+ started: number;
216
+ /** Subscribers it could not start, with why. */
217
+ failed: {
218
+ runId: string;
219
+ subscriber: string;
220
+ error: string;
221
+ }[];
222
+ }
223
+ /** The literal prefix of every `ctx.waitForRun` waiter token. */
224
+ export declare const RUN_WAIT_TOKEN_PREFIX = "runwait:";
225
+ /** Token prefix of every `ctx.waitForRun` waiter on `targetRunId`. */
226
+ export declare function runWaitPrefix(targetRunId: string): string;
227
+ /** The waiter token of one `ctx.waitForRun(targetRunId)` call, unique by the waiting run's `runId#seq`. */
228
+ export declare function runWaitToken(targetRunId: string, runId: string, seq: number): string;
229
+ /**
230
+ * The run a `ctx.waitForRun` waiter waits for, read from its token, or undefined for any other
231
+ * waiter. The token ends in the waiter's own `#<runId>#<seq>`, so a target id holding `#` still
232
+ * parses.
233
+ */
234
+ export declare function runWaitTargetOf(waiter: {
235
+ token: string;
236
+ runId: string;
237
+ seq: number;
238
+ }): string | undefined;
239
+ /**
240
+ * One end of a `ctx.waitForRun` wait, as a run detail lists it: the run waited for (`waitsFor`) or
241
+ * the waiting run (`awaitedBy`), the waiting run's `seq` of the call, and the other run's status and
242
+ * namespace when it was read.
243
+ */
244
+ export interface RunWaitLink {
245
+ runId: string;
246
+ seq: number;
247
+ status?: RunStatus | undefined;
248
+ namespace?: string | undefined;
249
+ }
250
+ /**
251
+ * Where a settled run's lifecycle event stands for one subscriber:
252
+ * - `started`: its run exists (`runId`, a `durable:triggered:<subscriber>` tag);
253
+ * - `owed`: still pending (a `durable:lifecycle:owed:<subscriber>` tag);
254
+ * - `failed`: its last delivery failed (a `durable:trigger_failed:<subscriber>` tag): its `where`
255
+ * threw, its input was rejected, its start failed, or the sweep dropped it as an orphan. A
256
+ * republish retries it;
257
+ * - `coalesced`: routed into a debounce/batch accumulator (a `durable:coalesced:<subscriber>` tag;
258
+ * `runId` is the accumulator's, when it can be derived);
259
+ * - `not-started`: no run and nothing owed: its `where` declined the event, or it subscribed after
260
+ * the run settled.
261
+ */
262
+ export type LifecycleDeliveryState = 'started' | 'owed' | 'failed' | 'coalesced' | 'not-started';
263
+ /** One subscriber of a settled run's lifecycle event, as the run detail lists it. */
264
+ export interface LifecycleDelivery {
265
+ subscriber: string;
266
+ state: LifecycleDeliveryState;
267
+ /** The subscriber's run when `started`; the accumulator run when `coalesced` and derivable. */
268
+ runId?: string | undefined;
269
+ /** The status of a `started` subscriber's run, when it was read. */
270
+ status?: RunStatus | undefined;
271
+ /** The namespace of a `started` subscriber's run, when it was read. */
272
+ namespace?: string | undefined;
273
+ /** When an `owed` subscriber became owed: the settled run's last update (epoch ms). */
274
+ owedSince?: number | undefined;
275
+ /**
276
+ * When the lifecycle sweep drops an `owed` subscriber that no live instance registers or
277
+ * announces for the run's namespace (epoch ms; see {@link LIFECYCLE_ORPHAN_MS}). Absent while one
278
+ * does.
279
+ */
280
+ orphanAt?: number | undefined;
281
+ /**
282
+ * Why a `failed` subscriber could not be started, when the caller knows it (the `run.trigger_failed`
283
+ * event carries it). Not stored with the run, so {@link lifecycleDeliveriesOf} leaves it unset.
284
+ */
285
+ error?: string | undefined;
286
+ }
287
+ /**
288
+ * The {@link LifecycleDelivery} of each subscriber of a settled run, sorted by subscriber: the
289
+ * union of `subscribers` (the ones the run's event goes to now), the owed, triggered, coalesced and
290
+ * trigger-failed tags. A started or coalesced subscriber wins over the others, then an owed one over
291
+ * a failed one. `live` names the subscribers a live instance registers or announces; an owed
292
+ * subscriber outside it gets `orphanAt`. `coalesced` maps each subscriber that coalesces its events
293
+ * to its accumulator run id (undefined when it cannot be derived), the link of a coalesced one; a
294
+ * subscriber in it with no tag at all (a run settled before coalesced deliveries were tagged) is
295
+ * `coalesced` too. Empty for a run that has not settled.
296
+ */
297
+ export declare function lifecycleDeliveriesOf(run: Pick<WorkflowRun, 'id' | 'status' | 'tags' | 'updatedAt'>, opts: {
298
+ subscribers: readonly string[];
299
+ live: ReadonlySet<string>;
300
+ coalesced?: ReadonlyMap<string, string | undefined> | undefined;
301
+ }): LifecycleDelivery[];
302
+ /** The id of the run a continue-as-new of `runId` hands off to: `r` → `r~1` → `r~2` … */
303
+ export declare function nextContinuationId(runId: string): string;
304
+ /** How many continue-as-new hops `ctx.waitForRun` follows to the run that ends a chain. */
305
+ export declare const RUN_WAIT_MAX_HOPS = 100;
306
+ /**
307
+ * The run that ends `runId`'s continue-as-new chain: `runId` itself, or the last continuation it
308
+ * handed off to, following at most {@link RUN_WAIT_MAX_HOPS} hops. A completed run whose
309
+ * continuation exists was a handoff, not the end. Null when `runId` is unknown.
310
+ */
311
+ export declare function lastRunOfChain(getRun: (runId: string) => Promise<WorkflowRun | null>, runId: string): Promise<WorkflowRun | null>;
312
+ /**
313
+ * The runs whose continue-as-new chain `runId` may end (`r~3` → `r`, `r~1`, `r~2`, at most
314
+ * {@link RUN_WAIT_MAX_HOPS}), so a `ctx.waitForRun` on an earlier run of the chain is found when the
315
+ * last one settles. Empty for a run that is no continuation.
316
+ */
317
+ export declare function chainPredecessorsOf(runId: string): string[];
318
+ /**
319
+ * The internal workflow whose runs make up the lifecycle subscription registry: one completed run
320
+ * per engine that registers `onEvent` subscriptions (lifecycle ones included), id
321
+ * {@link lifecycleRegistryRunId}, tagged {@link LIFECYCLE_REGISTRY_TAG}, its subscriptions in
322
+ * `input` ({@link LifecycleRegistryEntry}) and its `updatedAt` the heartbeat. Each heartbeat also
323
+ * sets `createdAt`, so a read of the live runs is a range over the store's `created_at` index. Kept
324
+ * in the state store, so an engine learns what the others subscribe to over any transport.
325
+ * Retention, run lists and the dashboard skip these runs.
326
+ */
327
+ export declare const LIFECYCLE_REGISTRY_WORKFLOW = "__lifecycle_registry";
328
+ /** Tag every registry run carries. Retention never prunes a run that has it. */
329
+ export declare const LIFECYCLE_REGISTRY_TAG = "durable:lifecycle:registry";
330
+ /** How often an engine's worker tick rewrites its registry run. */
331
+ export declare const LIFECYCLE_REGISTRY_HEARTBEAT_MS = 10000;
332
+ /** How long after its last heartbeat a registry run still counts as a live engine's. */
333
+ export declare const LIFECYCLE_REGISTRY_TTL_MS = 35000;
334
+ /** How long after its last heartbeat a registry run is deleted, by the tick of an engine with one. */
335
+ export declare const LIFECYCLE_REGISTRY_STALE_MS: number;
336
+ /** The id of the registry run of engine instance `instanceId`. */
337
+ export declare function lifecycleRegistryRunId(instanceId: string): string;
338
+ /** What a registry run holds in `input`: the `onEvent` subscriptions of one engine instance. */
339
+ export interface LifecycleRegistryEntry {
340
+ instanceId: string;
341
+ runtime: 'node';
342
+ /**
343
+ * The namespace of the engine that writes the row, or `null` for an engine with no namespace. The
344
+ * row's own `namespace` cannot tell the two apart: the stores write both as `default`. An engine
345
+ * with no namespace sweeps and starts its subscribers for the runs of every namespace, so its
346
+ * subscriptions are owed by settled runs of any namespace; an engine with one, only by its own.
347
+ */
348
+ engineNamespace: string | null;
349
+ /** Each subscribing workflow with the event names it starts on, lifecycle ones included. */
350
+ subscriptions: {
351
+ workflow: string;
352
+ events: string[];
353
+ }[];
354
+ }
355
+ /**
356
+ * The namespace whose settled runs owe their lifecycle events to the subscriptions of a registry
357
+ * run, or `null` for every namespace: the entry's `engineNamespace`, or for a row written without it,
358
+ * the row's `namespace`, read as every namespace when that is `default` (an engine with no namespace
359
+ * wrote it, as far as the row can tell).
360
+ */
361
+ export declare function lifecycleRegistryNamespace(input: unknown, rowNamespace: string | undefined): string | null;
362
+ /** The subscriptions a registry run's `input` holds; malformed entries are skipped. */
363
+ export declare function lifecycleRegistrySubscriptions(input: unknown): {
364
+ workflow: string;
365
+ events: string[];
366
+ }[];
367
+ /**
368
+ * Whether retention must keep a run with these `tags`: its lifecycle event is still owed
369
+ * ({@link LIFECYCLE_PENDING_TAG}), or it is a lifecycle registry run ({@link LIFECYCLE_REGISTRY_TAG}).
370
+ */
371
+ export declare function retentionKeeps(tags: unknown): boolean;
372
+ //# sourceMappingURL=lifecycle-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-events.d.ts","sourceRoot":"","sources":["../../src/lifecycle-events.ts"],"names":[],"mappings":"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"}