@adonis-agora/durable 0.58.2 → 0.59.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.
- package/CHANGELOG.md +50 -0
- package/dist/assets/spa/assets/index-Co0ef3-q.css +1 -0
- package/dist/assets/spa/assets/index-DmgfShPp.js +16 -0
- package/dist/assets/spa/assets/index-DmgfShPp.js.map +1 -0
- package/dist/assets/spa/index.html +2 -2
- package/dist/commands/lifecycle_republish.d.ts +23 -0
- package/dist/commands/lifecycle_republish.d.ts.map +1 -0
- package/dist/commands/lifecycle_republish.js +64 -0
- package/dist/commands/lifecycle_republish.js.map +1 -0
- package/dist/commands/main.d.ts +4 -3
- package/dist/commands/main.d.ts.map +1 -1
- package/dist/commands/main.js +3 -1
- package/dist/commands/main.js.map +1 -1
- package/dist/providers/dashboard_provider.d.ts +2 -0
- package/dist/providers/dashboard_provider.d.ts.map +1 -1
- package/dist/providers/dashboard_provider.js +9 -1
- package/dist/providers/dashboard_provider.js.map +1 -1
- package/dist/src/commands/index.d.ts +1 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +1 -1
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/runs.d.ts +24 -1
- package/dist/src/commands/runs.d.ts.map +1 -1
- package/dist/src/commands/runs.js +50 -0
- package/dist/src/commands/runs.js.map +1 -1
- package/dist/src/commands/worker.d.ts.map +1 -1
- package/dist/src/commands/worker.js +3 -0
- package/dist/src/commands/worker.js.map +1 -1
- package/dist/src/dashboard/gateway-adapter.d.ts +5 -0
- package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -1
- package/dist/src/dashboard/gateway-adapter.js +20 -0
- package/dist/src/dashboard/gateway-adapter.js.map +1 -1
- package/dist/src/dashboard/handlers.d.ts +29 -1
- package/dist/src/dashboard/handlers.d.ts.map +1 -1
- package/dist/src/dashboard/handlers.js +103 -0
- package/dist/src/dashboard/handlers.js.map +1 -1
- package/dist/src/dashboard/index.d.ts +2 -2
- package/dist/src/dashboard/index.d.ts.map +1 -1
- package/dist/src/dashboard/index.js +2 -2
- package/dist/src/dashboard/index.js.map +1 -1
- package/dist/src/dashboard/openapi.d.ts.map +1 -1
- package/dist/src/dashboard/openapi.js +39 -0
- package/dist/src/dashboard/openapi.js.map +1 -1
- package/dist/src/diagnostics-bridge.d.ts +5 -1
- package/dist/src/diagnostics-bridge.d.ts.map +1 -1
- package/dist/src/diagnostics-bridge.js +16 -2
- package/dist/src/diagnostics-bridge.js.map +1 -1
- package/dist/src/engine.d.ts +365 -5
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +1491 -76
- package/dist/src/engine.js.map +1 -1
- package/dist/src/event-accumulators.d.ts +28 -5
- package/dist/src/event-accumulators.d.ts.map +1 -1
- package/dist/src/event-accumulators.js +102 -21
- package/dist/src/event-accumulators.js.map +1 -1
- package/dist/src/events.d.ts +25 -0
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +24 -0
- package/dist/src/events.js.map +1 -1
- package/dist/src/handshake/announced.d.ts +6 -0
- package/dist/src/handshake/announced.d.ts.map +1 -1
- package/dist/src/handshake/announced.js +20 -0
- package/dist/src/handshake/announced.js.map +1 -1
- package/dist/src/handshake/descriptor.d.ts +6 -0
- package/dist/src/handshake/descriptor.d.ts.map +1 -1
- package/dist/src/handshake/descriptor.js +1 -0
- package/dist/src/handshake/descriptor.js.map +1 -1
- package/dist/src/index.d.ts +3 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/interfaces.d.ts +45 -2
- package/dist/src/interfaces.d.ts.map +1 -1
- package/dist/src/interfaces.js.map +1 -1
- package/dist/src/lifecycle-events.d.ts +372 -0
- package/dist/src/lifecycle-events.d.ts.map +1 -0
- package/dist/src/lifecycle-events.js +383 -0
- package/dist/src/lifecycle-events.js.map +1 -0
- package/dist/src/metrics.d.ts +15 -0
- package/dist/src/metrics.d.ts.map +1 -1
- package/dist/src/metrics.js +36 -1
- package/dist/src/metrics.js.map +1 -1
- package/dist/src/otel/durable-metrics.d.ts +9 -0
- package/dist/src/otel/durable-metrics.d.ts.map +1 -1
- package/dist/src/otel/durable-metrics.js +17 -0
- package/dist/src/otel/durable-metrics.js.map +1 -1
- package/dist/src/otel/durable-otel.d.ts +7 -0
- package/dist/src/otel/durable-otel.d.ts.map +1 -1
- package/dist/src/otel/durable-otel.js +69 -3
- package/dist/src/otel/durable-otel.js.map +1 -1
- package/dist/src/run-detail-summary.d.ts +48 -1
- package/dist/src/run-detail-summary.d.ts.map +1 -1
- package/dist/src/run-detail-summary.js +30 -2
- package/dist/src/run-detail-summary.js.map +1 -1
- package/dist/src/run-gateway/interface.d.ts +16 -0
- package/dist/src/run-gateway/interface.d.ts.map +1 -1
- package/dist/src/run-gateway/proxy-run-gateway.d.ts +31 -1
- package/dist/src/run-gateway/proxy-run-gateway.d.ts.map +1 -1
- package/dist/src/run-gateway/proxy-run-gateway.js +59 -7
- package/dist/src/run-gateway/proxy-run-gateway.js.map +1 -1
- package/dist/src/run-gateway/run-request-responder.d.ts +4 -29
- package/dist/src/run-gateway/run-request-responder.d.ts.map +1 -1
- package/dist/src/run-gateway/run-request-responder.js +183 -6
- package/dist/src/run-gateway/run-request-responder.js.map +1 -1
- package/dist/src/run-gateway/store-run-gateway.d.ts +9 -0
- package/dist/src/run-gateway/store-run-gateway.d.ts.map +1 -1
- package/dist/src/run-gateway/store-run-gateway.js +8 -0
- package/dist/src/run-gateway/store-run-gateway.js.map +1 -1
- package/dist/src/run-waiting.d.ts +1 -0
- package/dist/src/run-waiting.d.ts.map +1 -1
- package/dist/src/run-waiting.js +6 -1
- package/dist/src/run-waiting.js.map +1 -1
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +4 -0
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/telescope/dashboard.d.ts.map +1 -1
- package/dist/src/telescope/dashboard.js +50 -0
- package/dist/src/telescope/dashboard.js.map +1 -1
- package/dist/src/telescope/data-providers.d.ts +19 -0
- package/dist/src/telescope/data-providers.d.ts.map +1 -1
- package/dist/src/telescope/data-providers.js +128 -2
- package/dist/src/telescope/data-providers.js.map +1 -1
- package/dist/src/telescope/extension.d.ts.map +1 -1
- package/dist/src/telescope/extension.js +4 -1
- package/dist/src/telescope/extension.js.map +1 -1
- package/dist/src/telescope/index.d.ts +3 -2
- package/dist/src/telescope/index.d.ts.map +1 -1
- package/dist/src/telescope/index.js +2 -1
- package/dist/src/telescope/index.js.map +1 -1
- package/dist/src/telescope/telescope-sdk.d.ts +16 -0
- package/dist/src/telescope/telescope-sdk.d.ts.map +1 -1
- package/dist/src/telescope/watcher.d.ts +66 -0
- package/dist/src/telescope/watcher.d.ts.map +1 -0
- package/dist/src/telescope/watcher.js +185 -0
- package/dist/src/telescope/watcher.js.map +1 -0
- package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-state-store.js +8 -0
- package/dist/src/testing/in-memory-state-store.js.map +1 -1
- package/dist/src/testing-kit/harness.d.ts +1 -1
- package/dist/src/testing-kit/harness.d.ts.map +1 -1
- package/dist/src/testing-kit/harness.js +3 -1
- package/dist/src/testing-kit/harness.js.map +1 -1
- package/dist/src/testing-kit/state-store-conformance.d.ts.map +1 -1
- package/dist/src/testing-kit/state-store-conformance.js +59 -0
- package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
- package/dist/src/workflow-ctx.d.ts.map +1 -1
- package/dist/src/workflow-ctx.js +62 -0
- package/dist/src/workflow-ctx.js.map +1 -1
- package/dist/src/workflow-discovery.d.ts.map +1 -1
- package/dist/src/workflow-discovery.js +1 -0
- package/dist/src/workflow-discovery.js.map +1 -1
- package/dist/src/workflow-events.d.ts +101 -0
- package/dist/src/workflow-events.d.ts.map +1 -1
- package/dist/src/workflow-events.js +79 -1
- package/dist/src/workflow-events.js.map +1 -1
- package/dist/src/workflow-ref.d.ts +17 -2
- package/dist/src/workflow-ref.d.ts.map +1 -1
- package/dist/src/workflow-ref.js.map +1 -1
- package/package.json +4 -4
- package/skills/durable-cluster/SKILL.md +4 -2
- package/dist/assets/spa/assets/index-6nmSTfT7.css +0 -1
- package/dist/assets/spa/assets/index-DjdTutsN.js +0 -16
- package/dist/assets/spa/assets/index-DjdTutsN.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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"}
|