@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,383 @@
1
+ import { workflowName, } from './workflow-ref.js';
2
+ /**
3
+ * Lifecycle events: when a run settles, the engine publishes `run.completed:<workflow>` or
4
+ * `run.failed:<workflow>` on the same bus as `publishEvent`, so another workflow can start on it
5
+ * through `onEvent` (or `@OnWorkflowCompleted` / `@OnWorkflowFailed`)
6
+ * without the settling workflow knowing it exists.
7
+ *
8
+ * Delivery is exactly once per subscriber and settled run. The terminal status write also tags the
9
+ * run {@link LIFECYCLE_PENDING_TAG}, so a process that dies before publishing leaves a marker the
10
+ * timer poller's lifecycle sweep picks up; the subscriber's run id is deterministic
11
+ * ({@link lifecycleRunId}), so publishing twice starts it once.
12
+ */
13
+ /** The event published when a run of `workflow` completes. */
14
+ export function runCompletedEvent(workflow) {
15
+ return `run.completed:${workflowName(workflow)}`;
16
+ }
17
+ /** The event published when a run of `workflow` ends failed, cancelled or dead. */
18
+ export function runFailedEvent(workflow) {
19
+ return `run.failed:${workflowName(workflow)}`;
20
+ }
21
+ /**
22
+ * Tag written with a run's terminal status when some workflow subscribes to its lifecycle event,
23
+ * and removed once the event is published. A settled run still carrying it was never published.
24
+ *
25
+ * Without any {@link LIFECYCLE_OWED_TAG_PREFIX} tag beside it, the run's owed set is unresolved: the
26
+ * terminal write happened before this instance could read the subscriptions the fleet announces
27
+ * (no read yet, or the last one failed). The publish that next reads them successfully resolves it
28
+ * into owed tags; until then, the subscribers registered on an instance are started by it.
29
+ */
30
+ export const LIFECYCLE_PENDING_TAG = 'durable:lifecycle:pending';
31
+ /**
32
+ * How long after a run settled the lifecycle sweep still looks for subscribers the run owes its
33
+ * event to but was never marked for: one announced by an instance that came up just after the
34
+ * run settled, before the settling instance's snapshot of the fleet's subscriptions saw it. A
35
+ * subscriber that appears later than this is a backfill, done with
36
+ * `WorkflowEngine.republishLifecycle`.
37
+ */
38
+ export const LIFECYCLE_HEAL_WINDOW_MS = 2 * 60 * 1000;
39
+ /** Prefix of the tags naming the subscribers a settled run started (`durable:triggered:<workflow>`). */
40
+ export const LIFECYCLE_TRIGGERED_TAG_PREFIX = 'durable:triggered:';
41
+ /**
42
+ * Prefix of the tags naming each subscriber a settled run still owes its lifecycle event to
43
+ * (`durable:lifecycle:owed:<workflow>`). Written with the terminal status, beside
44
+ * {@link LIFECYCLE_PENDING_TAG}, for every subscriber registered locally or announced by a live
45
+ * worker. An instance removes the owed tags of the subscribers it starts; the pending tag goes with
46
+ * the last owed tag.
47
+ */
48
+ export const LIFECYCLE_OWED_TAG_PREFIX = 'durable:lifecycle:owed:';
49
+ /**
50
+ * How long after a run settled the lifecycle sweep keeps an owed subscriber that no live worker
51
+ * announces and this instance does not register. Past it, the owed tag is dropped and the engine
52
+ * emits `run.trigger_failed`, so a removed subscriber does not keep the run from retention forever.
53
+ */
54
+ export const LIFECYCLE_ORPHAN_MS = 24 * 60 * 60 * 1000;
55
+ /**
56
+ * Prefix of the tags naming each subscriber a settled run could not start
57
+ * (`durable:trigger_failed:<workflow>`): its `where` threw, its input was rejected, its start failed,
58
+ * or the sweep dropped it as an orphan (see {@link LIFECYCLE_ORPHAN_MS}). Written by the same tag
59
+ * write that drops the subscriber's owed tag, and removed by the write that records a later start of
60
+ * it. The reason is not stored: it is in the `run.trigger_failed` event the failure emits.
61
+ */
62
+ export const LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX = 'durable:trigger_failed:';
63
+ /** The trigger-failed tag of `subscriber` (see {@link LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX}). */
64
+ export function lifecycleTriggerFailedTag(subscriber) {
65
+ return `${LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX}${subscriber}`;
66
+ }
67
+ /** The owed tag of `subscriber` (see {@link LIFECYCLE_OWED_TAG_PREFIX}). */
68
+ export function lifecycleOwedTag(subscriber) {
69
+ return `${LIFECYCLE_OWED_TAG_PREFIX}${subscriber}`;
70
+ }
71
+ /** The subscribers a run still owes its lifecycle event to, read from its owed tags. */
72
+ export function owedSubscribersOf(run) {
73
+ return (run.tags ?? [])
74
+ .filter((tag) => tag.startsWith(LIFECYCLE_OWED_TAG_PREFIX))
75
+ .map((tag) => tag.slice(LIFECYCLE_OWED_TAG_PREFIX.length));
76
+ }
77
+ /**
78
+ * Prefix of the tags naming each debounce/batch subscriber a settled run's event was routed to
79
+ * (`durable:coalesced:<workflow>`). Such a subscriber starts no run of the source's id, so it gets no
80
+ * {@link LIFECYCLE_TRIGGERED_TAG_PREFIX} tag; this one records the delivery instead, written by the
81
+ * same tag write that drops its owed tag.
82
+ */
83
+ export const LIFECYCLE_COALESCED_TAG_PREFIX = 'durable:coalesced:';
84
+ /** The coalesced tag of `subscriber` (see {@link LIFECYCLE_COALESCED_TAG_PREFIX}). */
85
+ export function lifecycleCoalescedTag(subscriber) {
86
+ return `${LIFECYCLE_COALESCED_TAG_PREFIX}${subscriber}`;
87
+ }
88
+ /** The subscribers whose {@link LIFECYCLE_COALESCED_TAG_PREFIX} tag is in `tags`. */
89
+ export function coalescedSubscribersOf(tags) {
90
+ return (tags ?? [])
91
+ .filter((tag) => tag.startsWith(LIFECYCLE_COALESCED_TAG_PREFIX))
92
+ .map((tag) => tag.slice(LIFECYCLE_COALESCED_TAG_PREFIX.length));
93
+ }
94
+ /**
95
+ * The subscribers a settled run's tags record as done with its event: started (a
96
+ * {@link LIFECYCLE_TRIGGERED_TAG_PREFIX} tag), routed into an accumulator (a
97
+ * {@link LIFECYCLE_COALESCED_TAG_PREFIX} tag) or failed (a {@link LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX}
98
+ * tag).
99
+ */
100
+ export function deliveredSubscribersOf(run) {
101
+ const out = new Set(coalescedSubscribersOf(run.tags));
102
+ for (const tag of run.tags ?? []) {
103
+ if (tag.startsWith(LIFECYCLE_TRIGGERED_TAG_PREFIX)) {
104
+ out.add(tag.slice(LIFECYCLE_TRIGGERED_TAG_PREFIX.length));
105
+ }
106
+ else if (tag.startsWith(LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX)) {
107
+ out.add(tag.slice(LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX.length));
108
+ }
109
+ }
110
+ return out;
111
+ }
112
+ /**
113
+ * Prefix of the tag holding the W3C `traceparent` of a settled run's own span
114
+ * (`durable:lifecycle:trace:<traceparent>`). Written with the lifecycle marker, when some workflow
115
+ * subscribes to the run's ending and the engine has a run trace provider (see
116
+ * `WorkflowEngine.setRunTraceparent`), so a subscriber's trace can link to its source run from any
117
+ * process.
118
+ */
119
+ export const LIFECYCLE_TRACE_TAG_PREFIX = 'durable:lifecycle:trace:';
120
+ /** The traceparent a settled run recorded in its {@link LIFECYCLE_TRACE_TAG_PREFIX} tag, if any. */
121
+ export function lifecycleTraceparentOf(tags) {
122
+ const tag = (tags ?? []).find((t) => t.startsWith(LIFECYCLE_TRACE_TAG_PREFIX));
123
+ return tag?.slice(LIFECYCLE_TRACE_TAG_PREFIX.length) || undefined;
124
+ }
125
+ /** Whether `tag` is one of the engine's lifecycle bookkeeping tags rather than a user tag. */
126
+ export function isLifecycleTag(tag) {
127
+ return (tag === LIFECYCLE_PENDING_TAG ||
128
+ tag.startsWith(LIFECYCLE_OWED_TAG_PREFIX) ||
129
+ tag.startsWith(LIFECYCLE_TRIGGERED_TAG_PREFIX) ||
130
+ tag.startsWith(LIFECYCLE_COALESCED_TAG_PREFIX) ||
131
+ tag.startsWith(LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX) ||
132
+ tag.startsWith(LIFECYCLE_TRACE_TAG_PREFIX));
133
+ }
134
+ /**
135
+ * The id of the run a lifecycle event starts for `subscriber`. Deterministic, so the same settled
136
+ * run never starts the same subscriber twice, and either side of the link can be found from the other.
137
+ */
138
+ export function lifecycleRunId(sourceRunId, kind, subscriber) {
139
+ return `evt:${sourceRunId}:${kind}:${subscriber}`;
140
+ }
141
+ /** The lifecycle event a run in `status` published, or undefined while it has not settled. */
142
+ export function lifecycleKindOf(status) {
143
+ if (status === 'completed')
144
+ return 'completed';
145
+ if (status === 'failed' || status === 'cancelled' || status === 'dead')
146
+ return 'failed';
147
+ return undefined;
148
+ }
149
+ /** The event name a run of `workflow` publishes when it settles as `kind`. */
150
+ export function lifecycleEventName(workflow, kind) {
151
+ return kind === 'completed' ? runCompletedEvent(workflow) : runFailedEvent(workflow);
152
+ }
153
+ /** The workflow and ending a lifecycle event name stands for, or undefined for any other event. */
154
+ export function parseLifecycleEvent(event) {
155
+ for (const kind of ['completed', 'failed']) {
156
+ const prefix = `run.${kind}:`;
157
+ if (event.startsWith(prefix) && event.length > prefix.length) {
158
+ return { workflow: event.slice(prefix.length), kind };
159
+ }
160
+ }
161
+ return undefined;
162
+ }
163
+ /**
164
+ * The run whose settling started `run`, when a lifecycle event started it. Read from the run's id,
165
+ * which ends in `:<kind>:<its own workflow>`, so it holds whatever input the subscriber was given.
166
+ */
167
+ export function lifecycleSourceOf(run) {
168
+ if (!run.id.startsWith('evt:'))
169
+ return undefined;
170
+ for (const kind of ['completed', 'failed']) {
171
+ const suffix = `:${kind}:${run.workflow}`;
172
+ if (run.id.endsWith(suffix) && run.id.length > 'evt:'.length + suffix.length) {
173
+ return { runId: run.id.slice('evt:'.length, -suffix.length), kind };
174
+ }
175
+ }
176
+ return undefined;
177
+ }
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 function triggeredRunsOf(run) {
184
+ const kind = lifecycleKindOf(run.status);
185
+ if (!kind)
186
+ return [];
187
+ return (run.tags ?? [])
188
+ .filter((tag) => tag.startsWith(LIFECYCLE_TRIGGERED_TAG_PREFIX))
189
+ .map((tag) => lifecycleRunId(run.id, kind, tag.slice(LIFECYCLE_TRIGGERED_TAG_PREFIX.length)));
190
+ }
191
+ /** The {@link WorkflowLifecycleEvent} a settled run publishes. */
192
+ export function lifecycleEventOf(run) {
193
+ const completed = run.status === 'completed';
194
+ return {
195
+ runId: run.id,
196
+ workflow: run.workflow,
197
+ workflowVersion: run.workflowVersion,
198
+ status: run.status,
199
+ namespace: run.namespace,
200
+ input: run.input,
201
+ ...(completed ? { output: run.output } : { error: run.error }),
202
+ tags: run.tags?.filter((tag) => !isLifecycleTag(tag)),
203
+ searchAttributes: run.searchAttributes,
204
+ };
205
+ }
206
+ /** The literal prefix of every `ctx.waitForRun` waiter token. */
207
+ export const RUN_WAIT_TOKEN_PREFIX = 'runwait:';
208
+ /** Token prefix of every `ctx.waitForRun` waiter on `targetRunId`. */
209
+ export function runWaitPrefix(targetRunId) {
210
+ return `${RUN_WAIT_TOKEN_PREFIX}${targetRunId}#`;
211
+ }
212
+ /** The waiter token of one `ctx.waitForRun(targetRunId)` call, unique by the waiting run's `runId#seq`. */
213
+ export function runWaitToken(targetRunId, runId, seq) {
214
+ return `${runWaitPrefix(targetRunId)}${runId}#${seq}`;
215
+ }
216
+ /**
217
+ * The run a `ctx.waitForRun` waiter waits for, read from its token, or undefined for any other
218
+ * waiter. The token ends in the waiter's own `#<runId>#<seq>`, so a target id holding `#` still
219
+ * parses.
220
+ */
221
+ export function runWaitTargetOf(waiter) {
222
+ if (!waiter.token.startsWith(RUN_WAIT_TOKEN_PREFIX))
223
+ return undefined;
224
+ const suffix = `#${waiter.runId}#${waiter.seq}`;
225
+ if (!waiter.token.endsWith(suffix))
226
+ return undefined;
227
+ const target = waiter.token.slice(RUN_WAIT_TOKEN_PREFIX.length, -suffix.length);
228
+ return target.length > 0 ? target : undefined;
229
+ }
230
+ /**
231
+ * The {@link LifecycleDelivery} of each subscriber of a settled run, sorted by subscriber: the
232
+ * union of `subscribers` (the ones the run's event goes to now), the owed, triggered, coalesced and
233
+ * trigger-failed tags. A started or coalesced subscriber wins over the others, then an owed one over
234
+ * a failed one. `live` names the subscribers a live instance registers or announces; an owed
235
+ * subscriber outside it gets `orphanAt`. `coalesced` maps each subscriber that coalesces its events
236
+ * to its accumulator run id (undefined when it cannot be derived), the link of a coalesced one; a
237
+ * subscriber in it with no tag at all (a run settled before coalesced deliveries were tagged) is
238
+ * `coalesced` too. Empty for a run that has not settled.
239
+ */
240
+ export function lifecycleDeliveriesOf(run, opts) {
241
+ const kind = lifecycleKindOf(run.status);
242
+ if (!kind)
243
+ return [];
244
+ const tags = run.tags ?? [];
245
+ const owed = new Set(owedSubscribersOf(run));
246
+ const triggered = new Set(tags
247
+ .filter((t) => t.startsWith(LIFECYCLE_TRIGGERED_TAG_PREFIX))
248
+ .map((t) => t.slice(LIFECYCLE_TRIGGERED_TAG_PREFIX.length)));
249
+ const failed = new Set(tags
250
+ .filter((t) => t.startsWith(LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX))
251
+ .map((t) => t.slice(LIFECYCLE_TRIGGER_FAILED_TAG_PREFIX.length)));
252
+ const coalescedTagged = new Set(coalescedSubscribersOf(tags));
253
+ // A run marked pending without owed tags is owed to every subscriber it has not started.
254
+ const owedToAll = owed.size === 0 && tags.includes(LIFECYCLE_PENDING_TAG);
255
+ const settledAt = run.updatedAt.getTime();
256
+ const names = [
257
+ ...new Set([...opts.subscribers, ...owed, ...triggered, ...coalescedTagged, ...failed]),
258
+ ].sort();
259
+ const coalescedState = (subscriber) => {
260
+ const runId = opts.coalesced?.get(subscriber);
261
+ return { subscriber, state: 'coalesced', ...(runId !== undefined ? { runId } : {}) };
262
+ };
263
+ return names.map((subscriber) => {
264
+ if (triggered.has(subscriber)) {
265
+ return { subscriber, state: 'started', runId: lifecycleRunId(run.id, kind, subscriber) };
266
+ }
267
+ if (coalescedTagged.has(subscriber))
268
+ return coalescedState(subscriber);
269
+ if (owed.has(subscriber) || owedToAll) {
270
+ return {
271
+ subscriber,
272
+ state: 'owed',
273
+ owedSince: settledAt,
274
+ ...(opts.live.has(subscriber) ? {} : { orphanAt: settledAt + LIFECYCLE_ORPHAN_MS }),
275
+ };
276
+ }
277
+ if (failed.has(subscriber))
278
+ return { subscriber, state: 'failed' };
279
+ if (opts.coalesced?.has(subscriber))
280
+ return coalescedState(subscriber);
281
+ return { subscriber, state: 'not-started' };
282
+ });
283
+ }
284
+ /** The id of the run a continue-as-new of `runId` hands off to: `r` → `r~1` → `r~2` … */
285
+ export function nextContinuationId(runId) {
286
+ const m = runId.match(/^(.*)~(\d+)$/);
287
+ return m ? `${m[1]}~${Number(m[2]) + 1}` : `${runId}~1`;
288
+ }
289
+ /** How many continue-as-new hops `ctx.waitForRun` follows to the run that ends a chain. */
290
+ export const RUN_WAIT_MAX_HOPS = 100;
291
+ /**
292
+ * The run that ends `runId`'s continue-as-new chain: `runId` itself, or the last continuation it
293
+ * handed off to, following at most {@link RUN_WAIT_MAX_HOPS} hops. A completed run whose
294
+ * continuation exists was a handoff, not the end. Null when `runId` is unknown.
295
+ */
296
+ export async function lastRunOfChain(getRun, runId) {
297
+ let run = await getRun(runId);
298
+ for (let hop = 0; run?.status === 'completed' && hop < RUN_WAIT_MAX_HOPS; hop += 1) {
299
+ const next = await getRun(nextContinuationId(run.id));
300
+ if (!next)
301
+ break;
302
+ run = next;
303
+ }
304
+ return run;
305
+ }
306
+ /**
307
+ * The runs whose continue-as-new chain `runId` may end (`r~3` → `r`, `r~1`, `r~2`, at most
308
+ * {@link RUN_WAIT_MAX_HOPS}), so a `ctx.waitForRun` on an earlier run of the chain is found when the
309
+ * last one settles. Empty for a run that is no continuation.
310
+ */
311
+ export function chainPredecessorsOf(runId) {
312
+ const m = runId.match(/^(.*)~(\d+)$/);
313
+ if (!m)
314
+ return [];
315
+ const base = m[1];
316
+ const n = Number(m[2]);
317
+ const ids = [];
318
+ for (let i = Math.max(0, n - RUN_WAIT_MAX_HOPS); i < n; i += 1) {
319
+ ids.push(i === 0 ? base : `${base}~${i}`);
320
+ }
321
+ return ids;
322
+ }
323
+ /**
324
+ * The internal workflow whose runs make up the lifecycle subscription registry: one completed run
325
+ * per engine that registers `onEvent` subscriptions (lifecycle ones included), id
326
+ * {@link lifecycleRegistryRunId}, tagged {@link LIFECYCLE_REGISTRY_TAG}, its subscriptions in
327
+ * `input` ({@link LifecycleRegistryEntry}) and its `updatedAt` the heartbeat. Each heartbeat also
328
+ * sets `createdAt`, so a read of the live runs is a range over the store's `created_at` index. Kept
329
+ * in the state store, so an engine learns what the others subscribe to over any transport.
330
+ * Retention, run lists and the dashboard skip these runs.
331
+ */
332
+ export const LIFECYCLE_REGISTRY_WORKFLOW = '__lifecycle_registry';
333
+ /** Tag every registry run carries. Retention never prunes a run that has it. */
334
+ export const LIFECYCLE_REGISTRY_TAG = 'durable:lifecycle:registry';
335
+ /** How often an engine's worker tick rewrites its registry run. */
336
+ export const LIFECYCLE_REGISTRY_HEARTBEAT_MS = 10_000;
337
+ /** How long after its last heartbeat a registry run still counts as a live engine's. */
338
+ export const LIFECYCLE_REGISTRY_TTL_MS = 35_000;
339
+ /** How long after its last heartbeat a registry run is deleted, by the tick of an engine with one. */
340
+ export const LIFECYCLE_REGISTRY_STALE_MS = 10 * 60 * 1000;
341
+ /** The id of the registry run of engine instance `instanceId`. */
342
+ export function lifecycleRegistryRunId(instanceId) {
343
+ return `${LIFECYCLE_REGISTRY_WORKFLOW}:${instanceId}`;
344
+ }
345
+ /**
346
+ * The namespace whose settled runs owe their lifecycle events to the subscriptions of a registry
347
+ * run, or `null` for every namespace: the entry's `engineNamespace`, or for a row written without it,
348
+ * the row's `namespace`, read as every namespace when that is `default` (an engine with no namespace
349
+ * wrote it, as far as the row can tell).
350
+ */
351
+ export function lifecycleRegistryNamespace(input, rowNamespace) {
352
+ const engineNamespace = input
353
+ ?.engineNamespace;
354
+ if (engineNamespace === null)
355
+ return null;
356
+ if (typeof engineNamespace === 'string')
357
+ return engineNamespace || 'default';
358
+ const row = rowNamespace || 'default';
359
+ return row === 'default' ? null : row;
360
+ }
361
+ /** The subscriptions a registry run's `input` holds; malformed entries are skipped. */
362
+ export function lifecycleRegistrySubscriptions(input) {
363
+ const subscriptions = input
364
+ ?.subscriptions;
365
+ if (!Array.isArray(subscriptions))
366
+ return [];
367
+ return subscriptions.flatMap((entry) => {
368
+ const { workflow, events } = (entry ?? {});
369
+ if (typeof workflow !== 'string' || !Array.isArray(events))
370
+ return [];
371
+ return [{ workflow, events: events.filter((e) => typeof e === 'string') }];
372
+ });
373
+ }
374
+ /**
375
+ * Whether retention must keep a run with these `tags`: its lifecycle event is still owed
376
+ * ({@link LIFECYCLE_PENDING_TAG}), or it is a lifecycle registry run ({@link LIFECYCLE_REGISTRY_TAG}).
377
+ */
378
+ export function retentionKeeps(tags) {
379
+ if (!Array.isArray(tags))
380
+ return false;
381
+ return tags.includes(LIFECYCLE_PENDING_TAG) || tags.includes(LIFECYCLE_REGISTRY_TAG);
382
+ }
383
+ //# sourceMappingURL=lifecycle-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle-events.js","sourceRoot":"","sources":["../../src/lifecycle-events.ts"],"names":[],"mappings":"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"}
@@ -8,9 +8,24 @@ export interface MetricsSnapshot {
8
8
  suspended: number;
9
9
  routed: number;
10
10
  unrouted: number;
11
+ /** Subscriber runs started by a settled run's lifecycle event. */
12
+ triggered: number;
13
+ /** Subscribers a settled run's lifecycle event could not start (`where` threw, start failed). */
14
+ triggerFailed: number;
11
15
  };
12
16
  /** Routed failures by error code (`*` for a failure without one). */
13
17
  routedByCode: Record<string, number>;
18
+ /**
19
+ * Subscriber runs a settled run's lifecycle event started (`run.triggered`), keyed by the settled
20
+ * run's workflow, then by the subscriber. Exposed as `durable_runs_triggered_total{workflow,subscriber}`.
21
+ */
22
+ triggeredBySubscriber: Record<string, Record<string, number>>;
23
+ /**
24
+ * Subscribers a settled run's lifecycle event could not start (`run.trigger_failed`), keyed by the
25
+ * settled run's workflow, then by the subscriber. Exposed as
26
+ * `durable_runs_trigger_failed_total{workflow,subscriber}`.
27
+ */
28
+ triggerFailedBySubscriber: Record<string, Record<string, number>>;
14
29
  steps: {
15
30
  started: number;
16
31
  completed: number;
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,WAAW,eAAe;IAC9B,sGAAsG;IACtG,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,mEAAmE;IACnE,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,IAAI,eAAe,CAAC;IAC5B,0FAA0F;IAC1F,UAAU,IAAI,MAAM,CAAC;IACrB,mCAAmC;IACnC,IAAI,IAAI,IAAI,CAAC;CACd;AAED,KAAK,YAAY,GAAG;IAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAAE,CAAC;AAEtF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAwFrE"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGnD,MAAM,WAAW,eAAe;IAC9B,sGAAsG;IACtG,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,kEAAkE;QAClE,SAAS,EAAE,MAAM,CAAC;QAClB,iGAAiG;QACjG,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9D;;;;OAIG;IACH,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAClE,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,yDAAyD;IACzD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnF,mEAAmE;IACnE,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAChD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,IAAI,eAAe,CAAC;IAC5B,0FAA0F;IAC1F,UAAU,IAAI,MAAM,CAAC;IACrB,mCAAmC;IACnC,IAAI,IAAI,IAAI,CAAC;CACd;AAED,KAAK,YAAY,GAAG;IAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAAA;CAAE,CAAC;AAEtF;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,gBAAgB,CAuHrE"}
@@ -7,8 +7,19 @@ import { isRemoteEvent } from './remote-event.js';
7
7
  */
8
8
  export function collectMetrics(engine) {
9
9
  const m = {
10
- runs: { started: 0, completed: 0, failed: 0, suspended: 0, routed: 0, unrouted: 0 },
10
+ runs: {
11
+ started: 0,
12
+ completed: 0,
13
+ failed: 0,
14
+ suspended: 0,
15
+ routed: 0,
16
+ unrouted: 0,
17
+ triggered: 0,
18
+ triggerFailed: 0,
19
+ },
11
20
  routedByCode: {},
21
+ triggeredBySubscriber: {},
22
+ triggerFailedBySubscriber: {},
12
23
  steps: { started: 0, completed: 0, failed: 0 },
13
24
  byWorkflow: {},
14
25
  stepDuration: { sumMs: 0, count: 0 },
@@ -52,6 +63,14 @@ export function collectMetrics(engine) {
52
63
  case 'run.unrouted':
53
64
  m.runs.unrouted += 1;
54
65
  break;
66
+ case 'run.triggered':
67
+ m.runs.triggered += 1;
68
+ countBySubscriber(m.triggeredBySubscriber, e);
69
+ break;
70
+ case 'run.trigger_failed':
71
+ m.runs.triggerFailed += 1;
72
+ countBySubscriber(m.triggerFailedBySubscriber, e);
73
+ break;
55
74
  case 'step.started':
56
75
  m.steps.started += 1;
57
76
  break;
@@ -85,6 +104,14 @@ export function collectMetrics(engine) {
85
104
  lines.push('# TYPE durable_runs_routed_total counter');
86
105
  for (const [code, n] of Object.entries(m.routedByCode))
87
106
  lines.push(`durable_runs_routed_total{code="${code}"} ${n}`);
107
+ lines.push('# TYPE durable_runs_triggered_total counter');
108
+ for (const [workflow, bySubscriber] of Object.entries(m.triggeredBySubscriber))
109
+ for (const [subscriber, n] of Object.entries(bySubscriber))
110
+ lines.push(`durable_runs_triggered_total{workflow="${workflow}",subscriber="${subscriber}"} ${n}`);
111
+ lines.push('# TYPE durable_runs_trigger_failed_total counter');
112
+ for (const [workflow, bySubscriber] of Object.entries(m.triggerFailedBySubscriber))
113
+ for (const [subscriber, n] of Object.entries(bySubscriber))
114
+ lines.push(`durable_runs_trigger_failed_total{workflow="${workflow}",subscriber="${subscriber}"} ${n}`);
88
115
  lines.push('# TYPE durable_step_duration_ms_sum counter');
89
116
  lines.push(`durable_step_duration_ms_sum ${m.stepDuration.sumMs}`);
90
117
  lines.push('# TYPE durable_step_duration_count counter');
@@ -93,4 +120,12 @@ export function collectMetrics(engine) {
93
120
  },
94
121
  };
95
122
  }
123
+ /** Count a `run.triggered` / `run.trigger_failed` event under its settled workflow and subscriber. */
124
+ function countBySubscriber(into, e) {
125
+ const workflow = e.workflow ?? 'unknown';
126
+ const subscriber = e.name ?? 'unknown';
127
+ const bySubscriber = into[workflow] ?? {};
128
+ bySubscriber[subscriber] = (bySubscriber[subscriber] ?? 0) + 1;
129
+ into[workflow] = bySubscriber;
130
+ }
96
131
  //# sourceMappingURL=metrics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/metrics.ts"],"names":[],"mappings":"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"}
@@ -16,9 +16,18 @@ export interface DurableMetricsSnapshot {
16
16
  routed: number;
17
17
  /** Failures that had onError routes the engine could not apply (workers disagree). */
18
18
  unrouted: number;
19
+ /** Subscriber runs started by a settled run's lifecycle event. */
20
+ triggered: number;
21
+ /** Subscribers a settled run's lifecycle event could not start (`where` threw, start failed). */
22
+ triggerFailed: number;
19
23
  };
20
24
  /** Routed failures by error code (`*` for a failure without one). */
21
25
  routedByCode: Record<string, number>;
26
+ /**
27
+ * The `durable.runs.triggered` counter by its attributes: `workflow` (the settled run's) and
28
+ * `subscriber` (the workflow its lifecycle event started), keyed by workflow, then subscriber.
29
+ */
30
+ triggeredBySubscriber: Record<string, Record<string, number>>;
22
31
  steps: {
23
32
  completed: number;
24
33
  failed: number;
@@ -1 +1 @@
1
- {"version":3,"file":"durable-metrics.d.ts","sourceRoot":"","sources":["../../../src/otel/durable-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,wEAAwE;QACxE,MAAM,EAAE,MAAM,CAAC;QACf,sFAAsF;QACtF,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,kEAAkE;IAClE,cAAc,EAAE,aAAa,CAAC;IAC9B,6DAA6D;IAC7D,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,QAAQ,IAAI,sBAAsB,CAAC;IACnC,qDAAqD;IACrD,KAAK,IAAI,IAAI,CAAC;IACd,uBAAuB;IACvB,WAAW,IAAI,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAkC7C;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAwF3E"}
1
+ {"version":3,"file":"durable-metrics.d.ts","sourceRoot":"","sources":["../../../src/otel/durable-metrics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAGlD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE;QACJ,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,wEAAwE;QACxE,MAAM,EAAE,MAAM,CAAC;QACf,sFAAsF;QACtF,QAAQ,EAAE,MAAM,CAAC;QACjB,kEAAkE;QAClE,SAAS,EAAE,MAAM,CAAC;QAClB,iGAAiG;QACjG,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,qEAAqE;IACrE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC;;;OAGG;IACH,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC9D,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,kEAAkE;IAClE,cAAc,EAAE,aAAa,CAAC;IAC9B,6DAA6D;IAC7D,aAAa,EAAE,aAAa,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,qEAAqE;IACrE,QAAQ,IAAI,sBAAsB,CAAC;IACnC,qDAAqD;IACrD,KAAK,IAAI,IAAI,CAAC;IACd,uBAAuB;IACvB,WAAW,IAAI,IAAI,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,QAAS,CAAC;AAkC7C;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CAyG3E"}
@@ -53,9 +53,12 @@ export function attachDurableMetrics(engine) {
53
53
  suspended: 0,
54
54
  routed: 0,
55
55
  unrouted: 0,
56
+ triggered: 0,
57
+ triggerFailed: 0,
56
58
  });
57
59
  let runs = zeroRuns();
58
60
  let routedByCode = {};
61
+ let triggeredBy = {};
59
62
  let steps = { completed: 0, failed: 0 };
60
63
  let stepDur = new DurationSamples();
61
64
  let runDur = new DurationSamples();
@@ -104,6 +107,18 @@ export function attachDurableMetrics(engine) {
104
107
  case 'run.unrouted':
105
108
  runs.unrouted += 1;
106
109
  break;
110
+ case 'run.triggered': {
111
+ runs.triggered += 1;
112
+ const workflow = e.workflow ?? 'unknown';
113
+ const subscriber = e.name ?? 'unknown';
114
+ const bySubscriber = triggeredBy[workflow] ?? {};
115
+ bySubscriber[subscriber] = (bySubscriber[subscriber] ?? 0) + 1;
116
+ triggeredBy[workflow] = bySubscriber;
117
+ break;
118
+ }
119
+ case 'run.trigger_failed':
120
+ runs.triggerFailed += 1;
121
+ break;
107
122
  case 'step.completed':
108
123
  steps.completed += 1;
109
124
  if (e.durationMs != null)
@@ -120,6 +135,7 @@ export function attachDurableMetrics(engine) {
120
135
  snapshot: () => ({
121
136
  runs: { ...runs },
122
137
  routedByCode: { ...routedByCode },
138
+ triggeredBySubscriber: structuredClone(triggeredBy),
123
139
  steps: { ...steps },
124
140
  stepDurationMs: stepDur.stats(),
125
141
  runDurationMs: runDur.stats(),
@@ -127,6 +143,7 @@ export function attachDurableMetrics(engine) {
127
143
  reset: () => {
128
144
  runs = zeroRuns();
129
145
  routedByCode = {};
146
+ triggeredBy = {};
130
147
  steps = { completed: 0, failed: 0 };
131
148
  stepDur = new DurationSamples();
132
149
  runDur = new DurationSamples();
@@ -1 +1 @@
1
- {"version":3,"file":"durable-metrics.js","sourceRoot":"","sources":["../../../src/otel/durable-metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"durable-metrics.js","sourceRoot":"","sources":["../../../src/otel/durable-metrics.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,13 @@ export interface DurableOtelOptions {
15
15
  * Zero-overhead when no OTel SDK is registered: `@opentelemetry/api` resolves to no-op spans/tracer,
16
16
  * so the bridge still subscribes but produces nothing. Pair with {@link otelTraceparent} (wired into
17
17
  * the engine's `traceparent` option) for cross-process step continuation.
18
+ *
19
+ * A run a lifecycle event started (`@OnWorkflowCompleted`, `onEvent: [runCompletedEvent(...)]`) has
20
+ * its root span linked to the source run's span, with `durable.lifecycle.source_run_id` and
21
+ * `durable.lifecycle.kind` attributes. The bridge installs the engine's run trace provider
22
+ * (`engine.setRunTraceparent`), so a run with subscribers records the traceparent of the span its
23
+ * first turn opened (with its first suspend, or its terminal write), and the link holds when the
24
+ * run settles, or the subscriber runs, in another process.
18
25
  */
19
26
  export declare function attachDurableOtel(engine: WorkflowEngine, options?: DurableOtelOptions): () => void;
20
27
  //# sourceMappingURL=durable-otel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"durable-otel.d.ts","sourceRoot":"","sources":["../../../src/otel/durable-otel.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,MAAM,EACX,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,aAAa,CAAC;AAG/D,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,IAAI,CAkHZ"}
1
+ {"version":3,"file":"durable-otel.d.ts","sourceRoot":"","sources":["../../../src/otel/durable-otel.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,MAAM,EACX,KAAK,cAAc,EAEpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,aAAa,CAAC;AA2B/D,MAAM,WAAW,kBAAkB;IACjC,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,cAAc,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,IAAI,CA0JZ"}