@adonis-agora/durable 0.35.1 → 0.37.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 +119 -0
- package/dist/assets/spa/assets/index-DU6cGcJz.css +1 -0
- package/dist/assets/spa/assets/index-Dx5lG7Vu.js +16 -0
- package/dist/assets/spa/assets/index-Dx5lG7Vu.js.map +1 -0
- package/dist/assets/spa/index.html +2 -2
- package/dist/commands/export_run.d.ts +18 -0
- package/dist/commands/export_run.d.ts.map +1 -0
- package/dist/commands/export_run.js +45 -0
- package/dist/commands/export_run.js.map +1 -0
- package/dist/commands/main.d.ts +1 -1
- 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 +7 -0
- package/dist/providers/dashboard_provider.d.ts.map +1 -1
- package/dist/providers/dashboard_provider.js +36 -1
- package/dist/providers/dashboard_provider.js.map +1 -1
- package/dist/providers/durable_provider.d.ts.map +1 -1
- package/dist/providers/durable_provider.js +18 -0
- package/dist/providers/durable_provider.js.map +1 -1
- package/dist/src/admission-redis/redis-admission-backend.d.ts +2 -1
- package/dist/src/admission-redis/redis-admission-backend.d.ts.map +1 -1
- package/dist/src/admission-redis/redis-admission-backend.js +35 -8
- package/dist/src/admission-redis/redis-admission-backend.js.map +1 -1
- package/dist/src/backoff.d.ts +7 -0
- package/dist/src/backoff.d.ts.map +1 -1
- package/dist/src/backoff.js +12 -2
- package/dist/src/backoff.js.map +1 -1
- package/dist/src/codec-state-store.d.ts +4 -2
- package/dist/src/codec-state-store.d.ts.map +1 -1
- package/dist/src/codec-state-store.js +23 -4
- package/dist/src/codec-state-store.js.map +1 -1
- package/dist/src/commands/worker.d.ts +2 -0
- package/dist/src/commands/worker.d.ts.map +1 -1
- package/dist/src/commands/worker.js +18 -1
- package/dist/src/commands/worker.js.map +1 -1
- package/dist/src/dashboard/gateway-adapter.d.ts +13 -1
- package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -1
- package/dist/src/dashboard/gateway-adapter.js +12 -0
- package/dist/src/dashboard/gateway-adapter.js.map +1 -1
- package/dist/src/dashboard/handlers.d.ts +47 -1
- package/dist/src/dashboard/handlers.d.ts.map +1 -1
- package/dist/src/dashboard/handlers.js +141 -8
- package/dist/src/dashboard/handlers.js.map +1 -1
- package/dist/src/dashboard/index.d.ts +1 -1
- package/dist/src/dashboard/index.js +1 -1
- package/dist/src/dashboard/openapi.d.ts +13 -0
- package/dist/src/dashboard/openapi.d.ts.map +1 -0
- package/dist/src/dashboard/openapi.js +395 -0
- package/dist/src/dashboard/openapi.js.map +1 -0
- package/dist/src/dashboard/run-filter.d.ts +8 -3
- package/dist/src/dashboard/run-filter.d.ts.map +1 -1
- package/dist/src/dashboard/run-filter.js +35 -4
- package/dist/src/dashboard/run-filter.js.map +1 -1
- package/dist/src/define_config.d.ts +24 -0
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/engine.d.ts +204 -7
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +820 -115
- package/dist/src/engine.js.map +1 -1
- package/dist/src/errors.d.ts +9 -1
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +10 -1
- package/dist/src/errors.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/interfaces.d.ts +116 -7
- package/dist/src/interfaces.d.ts.map +1 -1
- package/dist/src/pollers.d.ts +26 -2
- package/dist/src/pollers.d.ts.map +1 -1
- package/dist/src/pollers.js +47 -4
- package/dist/src/pollers.js.map +1 -1
- package/dist/src/queue.d.ts +9 -1
- package/dist/src/queue.d.ts.map +1 -1
- package/dist/src/queue.js +26 -7
- package/dist/src/queue.js.map +1 -1
- package/dist/src/run-value-facets.d.ts +1 -1
- package/dist/src/run-value-facets.d.ts.map +1 -1
- package/dist/src/run-value-facets.js +7 -1
- package/dist/src/run-value-facets.js.map +1 -1
- package/dist/src/scheduler.d.ts +15 -1
- package/dist/src/scheduler.d.ts.map +1 -1
- package/dist/src/scheduler.js +36 -1
- package/dist/src/scheduler.js.map +1 -1
- package/dist/src/stores/lucid-mappers.d.ts +5 -0
- package/dist/src/stores/lucid-mappers.d.ts.map +1 -1
- package/dist/src/stores/lucid-mappers.js +8 -0
- package/dist/src/stores/lucid-mappers.js.map +1 -1
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +53 -7
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +10 -3
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +74 -67
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/testing/in-memory-state-store.d.ts +4 -2
- package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-state-store.js +54 -8
- package/dist/src/testing/in-memory-state-store.js.map +1 -1
- package/dist/src/testing-kit/replay.d.ts +12 -0
- package/dist/src/testing-kit/replay.d.ts.map +1 -1
- package/dist/src/testing-kit/replay.js +33 -0
- package/dist/src/testing-kit/replay.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 +68 -0
- package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
- package/dist/src/transports/bullmq/bullmq-transport.d.ts +0 -5
- package/dist/src/transports/bullmq/bullmq-transport.d.ts.map +1 -1
- package/dist/src/transports/bullmq/bullmq-transport.js +92 -10
- package/dist/src/transports/bullmq/bullmq-transport.js.map +1 -1
- package/dist/src/transports/bullmq/deps.d.ts +2 -0
- package/dist/src/transports/bullmq/deps.d.ts.map +1 -1
- package/dist/src/transports/bullmq/deps.js.map +1 -1
- package/dist/src/transports/bullmq/serialization.d.ts +2 -1
- package/dist/src/transports/bullmq/serialization.d.ts.map +1 -1
- package/dist/src/transports/bullmq/serialization.js +9 -3
- package/dist/src/transports/bullmq/serialization.js.map +1 -1
- package/dist/src/transports/db.d.ts +3 -1
- package/dist/src/transports/db.d.ts.map +1 -1
- package/dist/src/transports/db.js +89 -35
- package/dist/src/transports/db.js.map +1 -1
- package/dist/src/transports/queue.d.ts +7 -1
- package/dist/src/transports/queue.d.ts.map +1 -1
- package/dist/src/transports/queue.js +23 -1
- package/dist/src/transports/queue.js.map +1 -1
- package/dist/src/workflow-ctx.d.ts.map +1 -1
- package/dist/src/workflow-ctx.js +77 -14
- 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-ref.d.ts +6 -0
- 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/dist/assets/spa/assets/index-CNnTzTNK.css +0 -1
- package/dist/assets/spa/assets/index-DxLx4LRM.js +0 -16
- package/dist/assets/spa/assets/index-DxLx4LRM.js.map +0 -1
package/dist/src/backoff.js
CHANGED
|
@@ -1,11 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Absolute ceiling for any computed backoff delay: Node's `setTimeout` max (2³¹−1 ms ≈ 24.8 days).
|
|
3
|
+
* Above it Node silently clamps the timer to fire ~immediately — so an uncapped exponential
|
|
4
|
+
* (`2 ** attempt` overflows into Infinity around attempt ~40) would turn "wait a very long time"
|
|
5
|
+
* into a HOT retry loop. Clamping to the max keeps the intent (an extremely long wait) representable.
|
|
6
|
+
*/
|
|
7
|
+
export const MAX_BACKOFF_MS = 2 ** 31 - 1;
|
|
1
8
|
/** Delay in ms before the next retry attempt, per a step's `StepOptions` backoff config. Shared by
|
|
2
9
|
* the local-step retry loop and the durable remote-step retry, so they stay consistent. */
|
|
3
10
|
export function backoffDelay(attempt, options) {
|
|
4
11
|
const base = options?.backoffMs ?? 0;
|
|
5
12
|
if (base <= 0)
|
|
6
13
|
return 0;
|
|
7
|
-
|
|
14
|
+
// Cap the exponent before multiplying: `2 ** (attempt - 1)` reaches Infinity long before the
|
|
15
|
+
// MAX_BACKOFF_MS clamp below could catch it, and `Infinity * 0` jitter would produce NaN.
|
|
16
|
+
const raw = options?.backoff === 'exp' ? base * 2 ** Math.min(attempt - 1, 31) : base;
|
|
8
17
|
const capped = options?.backoffMaxMs ? Math.min(raw, options.backoffMaxMs) : raw;
|
|
9
|
-
|
|
18
|
+
const clamped = Math.min(capped, MAX_BACKOFF_MS);
|
|
19
|
+
return options?.jitter ? Math.round(clamped * (0.5 + Math.random() * 0.5)) : clamped;
|
|
10
20
|
}
|
|
11
21
|
//# sourceMappingURL=backoff.js.map
|
package/dist/src/backoff.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backoff.js","sourceRoot":"","sources":["../../src/backoff.ts"],"names":[],"mappings":"AAEA;4FAC4F;AAC5F,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,OAAqB;IACjE,MAAM,IAAI,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACxB,MAAM,GAAG,GAAG,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"backoff.js","sourceRoot":"","sources":["../../src/backoff.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAE1C;4FAC4F;AAC5F,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,OAAqB;IACjE,MAAM,IAAI,GAAG,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC;IACrC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,CAAC,CAAC;IACxB,6FAA6F;IAC7F,0FAA0F;IAC1F,MAAM,GAAG,GAAG,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtF,MAAM,MAAM,GAAG,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACjF,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACjD,OAAO,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;AACvF,CAAC"}
|
|
@@ -42,13 +42,15 @@ export declare class CodecStateStore implements StateStore {
|
|
|
42
42
|
}) => Promise<T>): Promise<T>;
|
|
43
43
|
listIncompleteRuns(namespace?: string): Promise<WorkflowRun[]>;
|
|
44
44
|
listPendingRuns(limit: number, namespace?: string): Promise<WorkflowRun[]>;
|
|
45
|
-
listDueTimers(nowMs: number, namespace?: string): Promise<WorkflowRun[]>;
|
|
45
|
+
listDueTimers(nowMs: number, namespace?: string, limit?: number): Promise<WorkflowRun[]>;
|
|
46
|
+
listOrphanedRuns(nowMs: number, limit: number, namespace?: string): Promise<WorkflowRun[]>;
|
|
46
47
|
tryLockRun(runId: string, owner: string, leaseUntilMs: number, nowMs: number): Promise<boolean>;
|
|
47
|
-
releaseRunLock(runId: string): Promise<void>;
|
|
48
|
+
releaseRunLock(runId: string, owner?: string): Promise<void>;
|
|
48
49
|
renewRunLock(runId: string, owner: string, leaseUntilMs: number): Promise<boolean>;
|
|
49
50
|
putSignalWaiter(waiter: SignalWaiter): Promise<void>;
|
|
50
51
|
takeSignalWaiter(token: string): Promise<SignalWaiter | null>;
|
|
51
52
|
listSignalWaiters(prefix: string): Promise<SignalWaiter[]>;
|
|
53
|
+
listSignalWaitersByRunIds(runIds: string[]): Promise<SignalWaiter[]>;
|
|
52
54
|
removeSignalWaiter(waiter: SignalWaiter): Promise<void>;
|
|
53
55
|
bufferSignal(token: string, payload: unknown): Promise<void>;
|
|
54
56
|
takeBufferedSignal(token: string): Promise<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-state-store.d.ts","sourceRoot":"","sources":["../../src/codec-state-store.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,cAAc,EACd,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAGzB;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAChC,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;CACjC;AAED;;;;;;;;;GASG;AACH,qBAAa,eAAgB,YAAW,UAAU;IAE9C,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAFxB,YACmB,KAAK,EAAE,UAAU,EACjB,KAAK,EAAE,YAAY,EAClC;IAEJ,OAAO,CAAC,GAAG;IAGX,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,MAAM;IAGd,OAAO,CAAC,MAAM;IAGd,OAAO,CAAC,KAAK;IAGb,OAAO,CAAC,KAAK;IAIb,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5B;IAED,SAAS,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAEzC;IACD,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAKnE;IACD,WAAW,CACT,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,SAAS,EAAE,EAC7B,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAC1B,OAAO,CAAC,OAAO,CAAC,CAKlB;IACK,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAEvD;IACD,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtC;IACK,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAE9E;IACD,cAAc,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAExD;IACD,WAAW,CAAC,CAAC,EACX,IAAI,EAAE,CAAC,EAAE,EAAE;QACT,GAAG,EAAE,OAAO,CAAC;QACb,cAAc,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;KACvD,KAAK,OAAO,CAAC,CAAC,CAAC,GACf,OAAO,CAAC,CAAC,CAAC,CAQZ;IACK,kBAAkB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAEnE;IACK,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAE/E;IACK,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"codec-state-store.d.ts","sourceRoot":"","sources":["../../src/codec-state-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -81,14 +81,25 @@ export class CodecStateStore {
|
|
|
81
81
|
async listPendingRuns(limit, namespace) {
|
|
82
82
|
return (await this.inner.listPendingRuns(limit, namespace)).map((r) => this.decRun(r));
|
|
83
83
|
}
|
|
84
|
-
async listDueTimers(nowMs, namespace) {
|
|
85
|
-
return (await this.inner.listDueTimers(nowMs, namespace)).map((r) => this.decRun(r));
|
|
84
|
+
async listDueTimers(nowMs, namespace, limit) {
|
|
85
|
+
return (await this.inner.listDueTimers(nowMs, namespace, limit)).map((r) => this.decRun(r));
|
|
86
|
+
}
|
|
87
|
+
async listOrphanedRuns(nowMs, limit, namespace) {
|
|
88
|
+
// Forward when the inner store implements it; otherwise mirror the engine's own fallback
|
|
89
|
+
// (filter listIncompleteRuns in-process) so wrapping never REMOVES the optimized path's shape.
|
|
90
|
+
if (this.inner.listOrphanedRuns) {
|
|
91
|
+
return (await this.inner.listOrphanedRuns(nowMs, limit, namespace)).map((r) => this.decRun(r));
|
|
92
|
+
}
|
|
93
|
+
return (await this.inner.listIncompleteRuns(namespace))
|
|
94
|
+
.filter((r) => r.lockedUntil === undefined || r.lockedUntil <= nowMs)
|
|
95
|
+
.slice(0, limit)
|
|
96
|
+
.map((r) => this.decRun(r));
|
|
86
97
|
}
|
|
87
98
|
tryLockRun(runId, owner, leaseUntilMs, nowMs) {
|
|
88
99
|
return this.inner.tryLockRun(runId, owner, leaseUntilMs, nowMs);
|
|
89
100
|
}
|
|
90
|
-
releaseRunLock(runId) {
|
|
91
|
-
return this.inner.releaseRunLock(runId);
|
|
101
|
+
releaseRunLock(runId, owner) {
|
|
102
|
+
return this.inner.releaseRunLock(runId, owner);
|
|
92
103
|
}
|
|
93
104
|
renewRunLock(runId, owner, leaseUntilMs) {
|
|
94
105
|
return this.inner.renewRunLock(runId, owner, leaseUntilMs);
|
|
@@ -102,6 +113,14 @@ export class CodecStateStore {
|
|
|
102
113
|
listSignalWaiters(prefix) {
|
|
103
114
|
return this.inner.listSignalWaiters(prefix);
|
|
104
115
|
}
|
|
116
|
+
listSignalWaitersByRunIds(runIds) {
|
|
117
|
+
if (this.inner.listSignalWaitersByRunIds) {
|
|
118
|
+
return this.inner.listSignalWaitersByRunIds(runIds);
|
|
119
|
+
}
|
|
120
|
+
// Fallback scan keeps the optional method PRESENT on the wrapper without requiring it inner.
|
|
121
|
+
const ids = new Set(runIds);
|
|
122
|
+
return this.inner.listSignalWaiters('').then((ws) => ws.filter((w) => ids.has(w.runId)));
|
|
123
|
+
}
|
|
105
124
|
removeSignalWaiter(waiter) {
|
|
106
125
|
return this.inner.removeSignalWaiter(waiter);
|
|
107
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codec-state-store.js","sourceRoot":"","sources":["../../src/codec-state-store.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"codec-state-store.js","sourceRoot":"","sources":["../../src/codec-state-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,8 @@ export interface TickResult {
|
|
|
19
19
|
timers: number;
|
|
20
20
|
/** Run ids the schedules phase started this tick (due windows fired). */
|
|
21
21
|
scheduled: number;
|
|
22
|
+
/** Terminal runs (subtrees included) the retention phase deleted this tick — 0 without a policy. */
|
|
23
|
+
evicted: number;
|
|
22
24
|
/** Phase errors caught during the tick (e.g. a transient store hiccup), keyed by phase name. */
|
|
23
25
|
errors: {
|
|
24
26
|
phase: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/commands/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,kGAAkG;AAClG,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,gGAAgG;IAChG,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,gGAAgG;IAChG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,eAAe,EAAE,SAAS,iBAAiB,EAAE,EAC7C,UAAU,EAAE,SAAS,iBAAiB,EAAE,GACvC,iBAAiB,EAAE,CAIrB;AAID,0GAA0G;AAC1G,wBAAsB,OAAO,CAC3B,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAOrB;
|
|
1
|
+
{"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/commands/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAgB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEvE,kGAAkG;AAClG,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAC;IAClB,oGAAoG;IACpG,OAAO,EAAE,MAAM,CAAC;IAChB,gGAAgG;IAChG,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAAE,CAAC;CAC3C;AAED,yCAAyC;AACzC,MAAM,WAAW,WAAW;IAC1B,gGAAgG;IAChG,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,eAAe,EAAE,SAAS,iBAAiB,EAAE,EAC7C,UAAU,EAAE,SAAS,iBAAiB,EAAE,GACvC,iBAAiB,EAAE,CAIrB;AAID,0GAA0G;AAC1G,wBAAsB,OAAO,CAC3B,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,WAAgB,GACxB,OAAO,CAAC,UAAU,CAAC,CAOrB;AA0DD,yCAAyC;AACzC,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,6FAA6F;IAC7F,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,uEAAuE;IACvE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kFAAkF;IAClF,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,gGAAgG;IAChG,SAAS,CAAC,EAAE,SAAS,iBAAiB,EAAE,CAAC;CAC1C;AAQD;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,MAAM,CAAC,CA+BjB"}
|
|
@@ -25,7 +25,18 @@ export async function runTick(engine, options = {}) {
|
|
|
25
25
|
async function runTickInScope(engine, options) {
|
|
26
26
|
const now = options.now;
|
|
27
27
|
const schedules = options.schedules;
|
|
28
|
-
|
|
28
|
+
// Let the engine's runtime schedule-control surface (list/pause/trigger) see the exact set that
|
|
29
|
+
// fires — including a console-issued pause applying to the very next tick.
|
|
30
|
+
if (schedules)
|
|
31
|
+
engine.adoptSchedules(schedules);
|
|
32
|
+
const result = {
|
|
33
|
+
pending: 0,
|
|
34
|
+
recovered: 0,
|
|
35
|
+
timers: 0,
|
|
36
|
+
scheduled: 0,
|
|
37
|
+
evicted: 0,
|
|
38
|
+
errors: [],
|
|
39
|
+
};
|
|
29
40
|
const phase = async (name, fn) => {
|
|
30
41
|
try {
|
|
31
42
|
return await fn();
|
|
@@ -51,6 +62,12 @@ async function runTickInScope(engine, options) {
|
|
|
51
62
|
const ids = await runSchedules(engine, schedules, now ?? Date.now());
|
|
52
63
|
return ids.length;
|
|
53
64
|
});
|
|
65
|
+
// 6th phase — retention: evict terminal runs past their configured age. Self-throttled inside the
|
|
66
|
+
// engine (one pass a minute); a no-op without a `retention` config.
|
|
67
|
+
result.evicted = await phase('sweepRetention', async () => engine.sweepRetention(now));
|
|
68
|
+
// 7th phase — stalled detection: page onStalled listeners about stranded runs. Self-throttled
|
|
69
|
+
// inside the engine (one pass a minute); a no-op without listeners.
|
|
70
|
+
await phase('sweepStalled', async () => (await engine.sweepStalled(now)).length);
|
|
54
71
|
return result;
|
|
55
72
|
}
|
|
56
73
|
function toError(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/commands/worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAA0B,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/commands/worker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ScheduleInfo } from '../engine.js';
|
|
2
|
+
import type { EngineEvent, RunFacetQuery, RunResult, RunValueAxis, RunValueFacetOptions, RunValueFacetRow, SignalWaiter, UpdateResult } from '../interfaces.js';
|
|
2
3
|
import type { RunGateway } from '../run-gateway/interface.js';
|
|
3
4
|
import type { DashboardEngine } from './handlers.js';
|
|
4
5
|
/**
|
|
@@ -22,12 +23,23 @@ export interface StoreEngineLike {
|
|
|
22
23
|
runId: string;
|
|
23
24
|
} | null>;
|
|
24
25
|
continue(runId: string): Promise<RunResult | null>;
|
|
26
|
+
/** Console human-in-the-loop verbs — every real `WorkflowEngine` has them; forwarded 1:1. */
|
|
27
|
+
signal(token: string, payload: unknown): Promise<RunResult | null>;
|
|
28
|
+
update(runId: string, name: string, arg: unknown): Promise<UpdateResult>;
|
|
29
|
+
completeTask(runId: string, name: string, result: unknown): Promise<RunResult | null>;
|
|
30
|
+
failTask(runId: string, name: string, error: string): Promise<RunResult | null>;
|
|
31
|
+
/** Runtime schedule control — every real `WorkflowEngine` has these; forwarded 1:1. */
|
|
32
|
+
listSchedules(): Promise<ScheduleInfo[]>;
|
|
33
|
+
setSchedulePaused(key: string, paused: boolean): boolean;
|
|
34
|
+
triggerSchedule(key: string): Promise<RunResult | null>;
|
|
25
35
|
/** The engine's GLOBAL listener (every run) — {@link storeDashboardEngine} filters it to one run,
|
|
26
36
|
* same as `StoreRunGateway.subscribe` does. */
|
|
27
37
|
subscribe(listener: (event: EngineEvent) => void): () => void;
|
|
28
38
|
/** Bulk signal-waiter scan — forwarded 1:1 to power `listRuns`' `waiting` stamp (see
|
|
29
39
|
* `DashboardEngine.listSignalWaiters`'s doc). Every real `WorkflowEngine` has it. */
|
|
30
40
|
listSignalWaiters?(prefix: string): Promise<SignalWaiter[]>;
|
|
41
|
+
/** Targeted per-page variant (`run_id IN (...)`, indexed) — forwarded when the engine has it. */
|
|
42
|
+
listSignalWaitersByRunIds?(runIds: string[]): Promise<SignalWaiter[]>;
|
|
31
43
|
/** Value enumeration for the console's pickers — forwarded 1:1 when the engine has it. */
|
|
32
44
|
runValueFacets?(axis: RunValueAxis, query: RunFacetQuery, opts?: RunValueFacetOptions): Promise<RunValueFacetRow[]>;
|
|
33
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-adapter.d.ts","sourceRoot":"","sources":["../../../src/dashboard/gateway-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACb,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,CAAC;IACtC,eAAe,EAAE,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACpD,cAAc,EAAE,eAAe,CAAC,gBAAgB,CAAC,CAAC;IAClD,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACpC,iBAAiB,CAAC,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACzD,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,YAAY,EAAE,eAAe,CAAC,cAAc,CAAC,CAAC;IAC9C,cAAc,CACZ,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACnD;oDACgD;IAChD,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC9D;0FACsF;IACtF,iBAAiB,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D,0FAA0F;IAC1F,cAAc,CAAC,CACb,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,aAAa,EACpB,IAAI,CAAC,EAAE,oBAAoB,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CAChC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"gateway-adapter.d.ts","sourceRoot":"","sources":["../../../src/dashboard/gateway-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,13 @@ export function storeDashboardEngine(engine) {
|
|
|
23
23
|
workerHealth: (extra) => engine.workerHealth(extra),
|
|
24
24
|
retryWithInput: (runId, input) => engine.retryWithInput(runId, input),
|
|
25
25
|
continue: (runId) => engine.continue(runId),
|
|
26
|
+
signal: (token, payload) => engine.signal(token, payload),
|
|
27
|
+
update: (runId, name, arg) => engine.update(runId, name, arg),
|
|
28
|
+
completeTask: (runId, name, result) => engine.completeTask(runId, name, result),
|
|
29
|
+
failTask: (runId, name, error) => engine.failTask(runId, name, error),
|
|
30
|
+
listSchedules: () => engine.listSchedules(),
|
|
31
|
+
setSchedulePaused: (key, paused) => engine.setSchedulePaused(key, paused),
|
|
32
|
+
triggerSchedule: (key) => engine.triggerSchedule(key),
|
|
26
33
|
subscribe: (runId, onEvent) => engine.subscribe((event) => {
|
|
27
34
|
if (event.runId === runId)
|
|
28
35
|
onEvent(event);
|
|
@@ -32,6 +39,11 @@ export function storeDashboardEngine(engine) {
|
|
|
32
39
|
listSignalWaiters: (prefix) => engine.listSignalWaiters?.(prefix),
|
|
33
40
|
}
|
|
34
41
|
: {}),
|
|
42
|
+
...(engine.listSignalWaitersByRunIds
|
|
43
|
+
? {
|
|
44
|
+
listSignalWaitersByRunIds: (runIds) => engine.listSignalWaitersByRunIds?.(runIds),
|
|
45
|
+
}
|
|
46
|
+
: {}),
|
|
35
47
|
...(engine.runValueFacets
|
|
36
48
|
? {
|
|
37
49
|
runValueFacets: (axis, query, opts) => engine.runValueFacets(axis, query, opts),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gateway-adapter.js","sourceRoot":"","sources":["../../../src/dashboard/gateway-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gateway-adapter.js","sourceRoot":"","sources":["../../../src/dashboard/gateway-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ScheduleInfo } from '../engine.js';
|
|
2
|
+
import type { EngineEvent, GroupHealth, RunFacetQuery, RunQuery, RunResult, RunValueAxis, RunValueFacetOptions, RunValueFacetRow, SignalWaiter, StepCheckpoint, UpdateResult, WorkflowRun } from '../index.js';
|
|
2
3
|
/**
|
|
3
4
|
* Framework-light JSON handlers over a {@link DashboardEngine}.
|
|
4
5
|
*
|
|
@@ -50,6 +51,23 @@ export interface DashboardEngine {
|
|
|
50
51
|
/** Resume a run paused at a `ctx.breakpoint()`. Returns `null` if the run isn't paused at one, or on
|
|
51
52
|
* a topology that can't perform it yet (see `retryWithInput`). */
|
|
52
53
|
continue(runId: string): Promise<RunResult | null>;
|
|
54
|
+
/**
|
|
55
|
+
* Deliver an external signal payload on `token` (the `ctx.waitForSignal` rendezvous) — the console
|
|
56
|
+
* side of human-in-the-loop: the runs list already NAMES the token a suspended run is parked on;
|
|
57
|
+
* this lets the operator act on it. Optional: absent on a topology without the engine's signal
|
|
58
|
+
* surface yet (a store-less `tenant` pod), where the handler degrades to 404.
|
|
59
|
+
*/
|
|
60
|
+
signal?(token: string, payload: unknown): Promise<RunResult | null>;
|
|
61
|
+
/** Deliver a validated update to a run's `ctx.onUpdate(name)` point (the workflow's registered
|
|
62
|
+
* validator gates it server-side). Optional — see {@link signal}. */
|
|
63
|
+
update?(runId: string, name: string, arg: unknown): Promise<UpdateResult>;
|
|
64
|
+
/** Complete / fail a `ctx.task` the run dispatched to an external system. Optional — see {@link signal}. */
|
|
65
|
+
completeTask?(runId: string, name: string, result: unknown): Promise<RunResult | null>;
|
|
66
|
+
failTask?(runId: string, name: string, error: string): Promise<RunResult | null>;
|
|
67
|
+
/** Runtime schedule control (list / pause / resume / trigger-now). Optional — see {@link signal}. */
|
|
68
|
+
listSchedules?(): Promise<ScheduleInfo[]>;
|
|
69
|
+
setSchedulePaused?(key: string, paused: boolean): boolean | Promise<boolean>;
|
|
70
|
+
triggerSchedule?(key: string): Promise<RunResult | null>;
|
|
53
71
|
/** Live lifecycle events for ONE run; returns an unsubscribe fn. */
|
|
54
72
|
subscribe(runId: string, onEvent: (event: EngineEvent) => void): () => void;
|
|
55
73
|
/**
|
|
@@ -62,6 +80,12 @@ export interface DashboardEngine {
|
|
|
62
80
|
* for a gateway that can't do the scan.
|
|
63
81
|
*/
|
|
64
82
|
listSignalWaiters?(prefix: string): Promise<SignalWaiter[]>;
|
|
83
|
+
/**
|
|
84
|
+
* Targeted variant: only the waiters registered by these runs (`run_id IN (...)`, indexed) — what
|
|
85
|
+
* `listRuns` actually needs for one page. Optional; when absent the handlers fall back to the
|
|
86
|
+
* full `listSignalWaiters('')` scan above.
|
|
87
|
+
*/
|
|
88
|
+
listSignalWaitersByRunIds?(runIds: string[]): Promise<SignalWaiter[]>;
|
|
65
89
|
/**
|
|
66
90
|
* The distinct values of ONE filter axis over the runs matching `query`, with counts — what a
|
|
67
91
|
* console's pickers list. Optional: absent on a port that can't do the scan yet (a store-less
|
|
@@ -135,6 +159,28 @@ export declare function retryWithInputRun(deps: Deps, req: ApiRequest): Promise<
|
|
|
135
159
|
* breakpoint (the dashboard's "continue" button). `404` if the run isn't paused at one.
|
|
136
160
|
*/
|
|
137
161
|
export declare function continueRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
162
|
+
/**
|
|
163
|
+
* `POST /runs/:id/signal` — deliver `{ token, payload? }` to a run's `ctx.waitForSignal` rendezvous.
|
|
164
|
+
* Guarded: unless `force: true`, the token must be one the run is CURRENTLY waiting on (the same
|
|
165
|
+
* waiter rows the list's `waiting` column reads) — a typo'd token would otherwise buffer a stray
|
|
166
|
+
* payload silently instead of resuming anything. The 409 carries the tokens the run IS waiting on,
|
|
167
|
+
* so the console can offer them.
|
|
168
|
+
*/
|
|
169
|
+
export declare function signalRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
170
|
+
/**
|
|
171
|
+
* `POST /runs/:id/update/:name` — deliver `{ arg? }` to a run's `ctx.onUpdate(name)` point. The
|
|
172
|
+
* workflow's registered validator arbitrates server-side: a rejection comes back 422 with the
|
|
173
|
+
* reason, and nothing is delivered.
|
|
174
|
+
*/
|
|
175
|
+
export declare function updateRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
176
|
+
/** `POST /runs/:id/tasks/:name/complete` — complete a `ctx.task` from the console with `{ result? }`. */
|
|
177
|
+
export declare function completeTaskRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
178
|
+
/** `POST /runs/:id/tasks/:name/fail` — fail a `ctx.task` from the console with `{ error }`. */
|
|
179
|
+
export declare function failTaskRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
180
|
+
/** `GET /schedules` — the ticked schedules with live control state and fire windows. */
|
|
181
|
+
export declare function listSchedules(deps: Deps, _req: ApiRequest): Promise<ApiResponse>;
|
|
182
|
+
/** `POST /schedules/:key/:action` — `pause` / `resume` / `trigger` a schedule at runtime. */
|
|
183
|
+
export declare function scheduleAction(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
138
184
|
/**
|
|
139
185
|
* `POST /bulk/:action` (`action` = `retry`|`cancel`) — apply an action to every run matching the same
|
|
140
186
|
* filter `listRuns` accepts (status/workflow/tag/namespace/attr), capped at 500 matches. Skips (does
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/dashboard/handlers.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,WAAW,EACZ,MAAM,aAAa,CAAC;AAOrB;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IACnD,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAC1D,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAClD,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC5D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAClF,YAAY,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD;;iFAE6E;IAC7E,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,CAAC;IACjF;uEACmE;IACnE,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACnD,oEAAoE;IACpE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5E;;;;;;;;OAQG;IACH,iBAAiB,CAAC,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5D;;;;;OAKG;IACH,cAAc,CAAC,CACb,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,aAAa,EACpB,IAAI,CAAC,EAAE,oBAAoB,GAC1B,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CAChC;AAED,oGAAoG;AACpG,MAAM,WAAW,IAAI;IACnB,MAAM,EAAE,eAAe,CAAC;CACzB;AAED,uDAAuD;AACvD,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C;qEACiE;IACjE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,mGAAmG;AACnG,eAAO,MAAM,EAAE,SAAU,OAAO,KAAG,WAAsC,CAAC;AA0G1E;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAsBjF;AAED,sGAAsG;AACtG,wBAAsB,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/dashboard/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -146,14 +146,15 @@ export async function listRuns(deps, req) {
|
|
|
146
146
|
return filterRejection(error);
|
|
147
147
|
}
|
|
148
148
|
const query = { limit, offset, ...filter };
|
|
149
|
-
const
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
149
|
+
const runs = await engine.listRuns(query);
|
|
150
|
+
// Resolve what each suspended run on THIS page is parked on — signal / webhook / child /
|
|
151
|
+
// breakpoint — with no per-run timeline fetch. Prefers the targeted per-page lookup (`run_id IN
|
|
152
|
+
// (...)`, indexed) over the legacy full-table waiter scan; absent on a topology that can't do
|
|
153
|
+
// either yet (see `DashboardEngine.listSignalWaiters`'s doc), where the `waiting` stamp is
|
|
154
|
+
// simply skipped, same as `@dudousxd/nestjs-durable-dashboard`.
|
|
155
|
+
const waiters = engine.listSignalWaitersByRunIds
|
|
156
|
+
? await engine.listSignalWaitersByRunIds(runs.map((r) => r.id))
|
|
157
|
+
: await (engine.listSignalWaiters?.('') ?? Promise.resolve(undefined));
|
|
157
158
|
const waiterByRun = waiters ? indexWaitersByRun(waiters) : undefined;
|
|
158
159
|
return ok({
|
|
159
160
|
runs: runs.map((run) => summarizeRun(run, waiterByRun)),
|
|
@@ -253,6 +254,137 @@ export async function continueRun(deps, req) {
|
|
|
253
254
|
return notFound(`run ${id} is not paused at a breakpoint`);
|
|
254
255
|
return ok({ result });
|
|
255
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* `POST /runs/:id/signal` — deliver `{ token, payload? }` to a run's `ctx.waitForSignal` rendezvous.
|
|
259
|
+
* Guarded: unless `force: true`, the token must be one the run is CURRENTLY waiting on (the same
|
|
260
|
+
* waiter rows the list's `waiting` column reads) — a typo'd token would otherwise buffer a stray
|
|
261
|
+
* payload silently instead of resuming anything. The 409 carries the tokens the run IS waiting on,
|
|
262
|
+
* so the console can offer them.
|
|
263
|
+
*/
|
|
264
|
+
export async function signalRun(deps, req) {
|
|
265
|
+
const { engine } = deps;
|
|
266
|
+
const id = req.params.id;
|
|
267
|
+
if (!id)
|
|
268
|
+
return notFound('run id is required');
|
|
269
|
+
if (!engine.signal)
|
|
270
|
+
return notFound('signals are not available on this topology yet');
|
|
271
|
+
const body = (req.body ?? {});
|
|
272
|
+
const token = typeof body.token === 'string' && body.token.length > 0 ? body.token : undefined;
|
|
273
|
+
if (!token)
|
|
274
|
+
return badRequest('token is required');
|
|
275
|
+
const run = await engine.getRun(id);
|
|
276
|
+
if (!run)
|
|
277
|
+
return notFound(`run ${id} not found`);
|
|
278
|
+
if (body.force !== true) {
|
|
279
|
+
const waiters = engine.listSignalWaitersByRunIds
|
|
280
|
+
? await engine.listSignalWaitersByRunIds([id])
|
|
281
|
+
: await engine.listSignalWaiters?.('');
|
|
282
|
+
if (waiters) {
|
|
283
|
+
const waitingOn = waiters.filter((w) => w.runId === id).map((w) => w.token);
|
|
284
|
+
if (!waitingOn.includes(token)) {
|
|
285
|
+
return {
|
|
286
|
+
status: 409,
|
|
287
|
+
body: {
|
|
288
|
+
error: `run ${id} is not waiting on "${token}" (pass force: true to buffer it anyway)`,
|
|
289
|
+
waitingOn,
|
|
290
|
+
},
|
|
291
|
+
};
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
const result = await engine.signal(token, body.payload);
|
|
296
|
+
return ok({ result });
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* `POST /runs/:id/update/:name` — deliver `{ arg? }` to a run's `ctx.onUpdate(name)` point. The
|
|
300
|
+
* workflow's registered validator arbitrates server-side: a rejection comes back 422 with the
|
|
301
|
+
* reason, and nothing is delivered.
|
|
302
|
+
*/
|
|
303
|
+
export async function updateRun(deps, req) {
|
|
304
|
+
const { engine } = deps;
|
|
305
|
+
const id = req.params.id;
|
|
306
|
+
const name = req.params.name;
|
|
307
|
+
if (!id)
|
|
308
|
+
return notFound('run id is required');
|
|
309
|
+
if (!name)
|
|
310
|
+
return notFound('update name is required');
|
|
311
|
+
if (!engine.update)
|
|
312
|
+
return notFound('updates are not available on this topology yet');
|
|
313
|
+
const body = (req.body ?? {});
|
|
314
|
+
const result = await engine.update(id, name, body.arg);
|
|
315
|
+
if (!result.accepted) {
|
|
316
|
+
return { status: 422, body: { error: result.reason ?? 'update rejected', result } };
|
|
317
|
+
}
|
|
318
|
+
return ok({ result });
|
|
319
|
+
}
|
|
320
|
+
/** `POST /runs/:id/tasks/:name/complete` — complete a `ctx.task` from the console with `{ result? }`. */
|
|
321
|
+
export async function completeTaskRun(deps, req) {
|
|
322
|
+
const { engine } = deps;
|
|
323
|
+
const id = req.params.id;
|
|
324
|
+
const name = req.params.name;
|
|
325
|
+
if (!id)
|
|
326
|
+
return notFound('run id is required');
|
|
327
|
+
if (!name)
|
|
328
|
+
return notFound('task name is required');
|
|
329
|
+
if (!engine.completeTask)
|
|
330
|
+
return notFound('tasks are not available on this topology yet');
|
|
331
|
+
const body = (req.body ?? {});
|
|
332
|
+
const result = await engine.completeTask(id, name, body.result);
|
|
333
|
+
// A null result means no waiter was live YET — the completion was BUFFERED (reliable delivery:
|
|
334
|
+
// the run consumes it when it reaches the task's wait). Report that instead of pretending a 404.
|
|
335
|
+
return ok({ result, delivered: result != null });
|
|
336
|
+
}
|
|
337
|
+
/** `POST /runs/:id/tasks/:name/fail` — fail a `ctx.task` from the console with `{ error }`. */
|
|
338
|
+
export async function failTaskRun(deps, req) {
|
|
339
|
+
const { engine } = deps;
|
|
340
|
+
const id = req.params.id;
|
|
341
|
+
const name = req.params.name;
|
|
342
|
+
if (!id)
|
|
343
|
+
return notFound('run id is required');
|
|
344
|
+
if (!name)
|
|
345
|
+
return notFound('task name is required');
|
|
346
|
+
if (!engine.failTask)
|
|
347
|
+
return notFound('tasks are not available on this topology yet');
|
|
348
|
+
const body = (req.body ?? {});
|
|
349
|
+
const error = typeof body.error === 'string' && body.error.length > 0 ? body.error : 'failed from console';
|
|
350
|
+
const result = await engine.failTask(id, name, error);
|
|
351
|
+
// Null = buffered (no live waiter yet) — same reliable-delivery semantics as completeTaskRun.
|
|
352
|
+
return ok({ result, delivered: result != null });
|
|
353
|
+
}
|
|
354
|
+
/** `GET /schedules` — the ticked schedules with live control state and fire windows. */
|
|
355
|
+
export async function listSchedules(deps, _req) {
|
|
356
|
+
const { engine } = deps;
|
|
357
|
+
if (!engine.listSchedules)
|
|
358
|
+
return notFound('schedules are not available on this topology yet');
|
|
359
|
+
return ok({ schedules: await engine.listSchedules() });
|
|
360
|
+
}
|
|
361
|
+
/** `POST /schedules/:key/:action` — `pause` / `resume` / `trigger` a schedule at runtime. */
|
|
362
|
+
export async function scheduleAction(deps, req) {
|
|
363
|
+
const { engine } = deps;
|
|
364
|
+
const key = req.params.key;
|
|
365
|
+
const action = req.params.action;
|
|
366
|
+
if (!key)
|
|
367
|
+
return notFound('schedule key is required');
|
|
368
|
+
if (action === 'pause' || action === 'resume') {
|
|
369
|
+
if (!engine.setSchedulePaused) {
|
|
370
|
+
return notFound('schedule control is not available on this topology yet');
|
|
371
|
+
}
|
|
372
|
+
const applied = await engine.setSchedulePaused(key, action === 'pause');
|
|
373
|
+
if (!applied)
|
|
374
|
+
return notFound(`schedule ${key} not found`);
|
|
375
|
+
return ok({ key, paused: action === 'pause' });
|
|
376
|
+
}
|
|
377
|
+
if (action === 'trigger') {
|
|
378
|
+
if (!engine.triggerSchedule) {
|
|
379
|
+
return notFound('schedule control is not available on this topology yet');
|
|
380
|
+
}
|
|
381
|
+
const result = await engine.triggerSchedule(key);
|
|
382
|
+
if (!result)
|
|
383
|
+
return notFound(`schedule ${key} not found`);
|
|
384
|
+
return ok({ result });
|
|
385
|
+
}
|
|
386
|
+
return badRequest("action must be 'pause', 'resume' or 'trigger'");
|
|
387
|
+
}
|
|
256
388
|
/**
|
|
257
389
|
* `POST /bulk/:action` (`action` = `retry`|`cancel`) — apply an action to every run matching the same
|
|
258
390
|
* filter `listRuns` accepts (status/workflow/tag/namespace/attr), capped at 500 matches. Skips (does
|
|
@@ -333,6 +465,7 @@ function summarizeRun(run, waiterByRun) {
|
|
|
333
465
|
workflowVersion: run.workflowVersion,
|
|
334
466
|
status: run.status,
|
|
335
467
|
namespace: run.namespace,
|
|
468
|
+
origin: run.origin,
|
|
336
469
|
tags: run.tags ?? [],
|
|
337
470
|
createdAt: run.createdAt.toISOString(),
|
|
338
471
|
updatedAt: run.updatedAt.toISOString(),
|