@adonis-agora/durable 0.46.1 → 0.48.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 +31 -0
- package/dist/assets/spa/assets/{index-DU6cGcJz.css → index-DtGMBUDm.css} +1 -1
- package/dist/assets/spa/assets/{index-CL6q2kMB.js → index-_VISH9Xg.js} +4 -4
- package/dist/assets/spa/assets/index-_VISH9Xg.js.map +1 -0
- package/dist/assets/spa/index.html +2 -2
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +1 -0
- package/dist/configure.js.map +1 -1
- package/dist/providers/durable_provider.d.ts +0 -25
- package/dist/providers/durable_provider.d.ts.map +1 -1
- package/dist/providers/durable_provider.js +29 -5
- package/dist/providers/durable_provider.js.map +1 -1
- package/dist/src/codec-state-store.d.ts +3 -0
- package/dist/src/codec-state-store.d.ts.map +1 -1
- package/dist/src/codec-state-store.js +7 -0
- package/dist/src/codec-state-store.js.map +1 -1
- package/dist/src/completion.d.ts +11 -0
- package/dist/src/completion.d.ts.map +1 -1
- package/dist/src/completion.js +18 -1
- package/dist/src/completion.js.map +1 -1
- package/dist/src/dashboard/index.d.ts +1 -1
- package/dist/src/dashboard/index.js +1 -1
- package/dist/src/engine.d.ts +47 -0
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +251 -18
- package/dist/src/engine.js.map +1 -1
- package/dist/src/errors.d.ts +18 -11
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +9 -7
- package/dist/src/errors.js.map +1 -1
- package/dist/src/fan-join.d.ts +4 -3
- package/dist/src/fan-join.d.ts.map +1 -1
- package/dist/src/fan-join.js +5 -4
- package/dist/src/fan-join.js.map +1 -1
- package/dist/src/handshake/announced.d.ts +94 -0
- package/dist/src/handshake/announced.d.ts.map +1 -0
- package/dist/src/handshake/announced.js +113 -0
- package/dist/src/handshake/announced.js.map +1 -0
- package/dist/src/handshake/descriptor.d.ts +59 -0
- package/dist/src/handshake/descriptor.d.ts.map +1 -1
- package/dist/src/handshake/descriptor.js +38 -0
- package/dist/src/handshake/descriptor.js.map +1 -1
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/interfaces.d.ts +49 -4
- package/dist/src/interfaces.d.ts.map +1 -1
- package/dist/src/interfaces.js.map +1 -1
- package/dist/src/metrics.d.ts +5 -0
- package/dist/src/metrics.d.ts.map +1 -1
- package/dist/src/metrics.js +14 -1
- package/dist/src/metrics.js.map +1 -1
- package/dist/src/on-error.d.ts +59 -0
- package/dist/src/on-error.d.ts.map +1 -0
- package/dist/src/on-error.js +71 -0
- package/dist/src/on-error.js.map +1 -0
- package/dist/src/otel/durable-metrics.d.ts +6 -0
- package/dist/src/otel/durable-metrics.d.ts.map +1 -1
- package/dist/src/otel/durable-metrics.js +22 -2
- package/dist/src/otel/durable-metrics.js.map +1 -1
- package/dist/src/otel/durable-otel.d.ts.map +1 -1
- package/dist/src/otel/durable-otel.js +15 -0
- package/dist/src/otel/durable-otel.js.map +1 -1
- package/dist/src/protocol.d.ts.map +1 -1
- package/dist/src/protocol.js +1 -0
- package/dist/src/protocol.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +1 -0
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +11 -1
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/testing/in-memory-state-store.d.ts +1 -0
- package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-state-store.js +7 -0
- package/dist/src/testing/in-memory-state-store.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 +19 -0
- package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
- package/dist/src/transports/bullmq/bullmq-transport.d.ts.map +1 -1
- package/dist/src/transports/bullmq/bullmq-transport.js +13 -3
- package/dist/src/transports/bullmq/bullmq-transport.js.map +1 -1
- package/dist/src/transports/bullmq/deps.d.ts +4 -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 +16 -0
- package/dist/src/transports/bullmq/serialization.d.ts.map +1 -1
- package/dist/src/transports/bullmq/serialization.js +8 -0
- package/dist/src/transports/bullmq/serialization.js.map +1 -1
- package/dist/src/transports/db-schema.d.ts +12 -0
- package/dist/src/transports/db-schema.d.ts.map +1 -1
- package/dist/src/transports/db-schema.js +24 -0
- package/dist/src/transports/db-schema.js.map +1 -1
- package/dist/src/transports/db.d.ts +14 -0
- package/dist/src/transports/db.d.ts.map +1 -1
- package/dist/src/transports/db.js +34 -0
- package/dist/src/transports/db.js.map +1 -1
- package/dist/src/transports/event-emitter.d.ts +8 -0
- package/dist/src/transports/event-emitter.d.ts.map +1 -1
- package/dist/src/transports/event-emitter.js +27 -0
- package/dist/src/transports/event-emitter.js.map +1 -1
- package/dist/src/transports/factory.d.ts +12 -0
- package/dist/src/transports/factory.d.ts.map +1 -1
- package/dist/src/transports/factory.js +24 -0
- package/dist/src/transports/factory.js.map +1 -1
- package/dist/src/transports/queue.d.ts +19 -0
- package/dist/src/transports/queue.d.ts.map +1 -1
- package/dist/src/transports/queue.js +17 -0
- package/dist/src/transports/queue.js.map +1 -1
- package/dist/src/transports/worker-keys-db.d.ts +17 -0
- package/dist/src/transports/worker-keys-db.d.ts.map +1 -0
- package/dist/src/transports/worker-keys-db.js +43 -0
- package/dist/src/transports/worker-keys-db.js.map +1 -0
- package/dist/src/transports/worker-keys.d.ts +56 -0
- package/dist/src/transports/worker-keys.d.ts.map +1 -0
- package/dist/src/transports/worker-keys.js +92 -0
- package/dist/src/transports/worker-keys.js.map +1 -0
- package/dist/src/worker-runtime/index.d.ts +1 -1
- package/dist/src/worker-runtime/index.d.ts.map +1 -1
- package/dist/src/worker-runtime/index.js.map +1 -1
- package/dist/src/worker-runtime/worker-runtime.d.ts +7 -2
- package/dist/src/worker-runtime/worker-runtime.d.ts.map +1 -1
- package/dist/src/worker-runtime/worker-runtime.js +22 -20
- package/dist/src/worker-runtime/worker-runtime.js.map +1 -1
- package/dist/src/workflow-ctx.d.ts.map +1 -1
- package/dist/src/workflow-ctx.js +19 -5
- 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 +2 -1
- package/dist/src/workflow-discovery.js.map +1 -1
- package/dist/src/workflow-ref.d.ts +31 -0
- package/dist/src/workflow-ref.d.ts.map +1 -1
- package/dist/src/workflow-ref.js +22 -0
- package/dist/src/workflow-ref.js.map +1 -1
- package/dist/stubs/database/migrations/create_durable_transport_worker_keys.stub +24 -0
- package/package.json +4 -4
- package/skills/durable-workflows/SKILL.md +4 -1
- package/dist/assets/spa/assets/index-CL6q2kMB.js.map +0 -1
package/dist/src/errors.d.ts
CHANGED
|
@@ -6,7 +6,12 @@ import { CONTROL_FLOW_SIGNAL } from './control-flow-signal.js';
|
|
|
6
6
|
*/
|
|
7
7
|
export declare class FatalError extends Error {
|
|
8
8
|
readonly code?: string | undefined;
|
|
9
|
-
|
|
9
|
+
/** Structured, JSON-serializable detail (e.g. validation issues). It travels with the failure to
|
|
10
|
+
* the run's error, a parent's `allSettled` item and an onError handler's input. */
|
|
11
|
+
readonly details?: unknown;
|
|
12
|
+
/** Read by the step result builders, so a dispatched step's retry policy honours it too. */
|
|
13
|
+
readonly retryable = false;
|
|
14
|
+
constructor(message: string, code?: string, details?: unknown);
|
|
10
15
|
}
|
|
11
16
|
/**
|
|
12
17
|
* Thrown by `start` when a run would exceed its concurrency quota: `active` runs sharing the quota
|
|
@@ -61,6 +66,8 @@ export declare class RemoteStepTimeout extends Error {
|
|
|
61
66
|
* breaking changes (old runs finish on the version they started on).
|
|
62
67
|
*/
|
|
63
68
|
export declare class NonDeterminismError extends Error {
|
|
69
|
+
/** Marks the failure as a broken deploy, which an `onError` route never takes. */
|
|
70
|
+
readonly code = "non_determinism";
|
|
64
71
|
readonly runId: string;
|
|
65
72
|
readonly seq: number;
|
|
66
73
|
constructor(runId: string, seq: number, expected: string, recorded: string);
|
|
@@ -91,17 +98,17 @@ export declare class NestedWorkflowCallError extends FatalError {
|
|
|
91
98
|
* and the failing ids — the wait-all/fail-fast counterpart to a single child's FatalError. Mirrors
|
|
92
99
|
* the Python SDK's `GatherFailed`.
|
|
93
100
|
*/
|
|
101
|
+
/** One failed item of a fan: its input index, the child run id, and its failure. */
|
|
102
|
+
export interface GatherItemFailure {
|
|
103
|
+
index: number;
|
|
104
|
+
id: string;
|
|
105
|
+
error: string;
|
|
106
|
+
code?: string | undefined;
|
|
107
|
+
details?: unknown;
|
|
108
|
+
}
|
|
94
109
|
export declare class GatherError extends Error {
|
|
95
|
-
readonly failures:
|
|
96
|
-
|
|
97
|
-
id: string;
|
|
98
|
-
error: string;
|
|
99
|
-
}[];
|
|
100
|
-
constructor(failures: {
|
|
101
|
-
index: number;
|
|
102
|
-
id: string;
|
|
103
|
-
error: string;
|
|
104
|
-
}[], total?: number);
|
|
110
|
+
readonly failures: GatherItemFailure[];
|
|
111
|
+
constructor(failures: GatherItemFailure[], total?: number);
|
|
105
112
|
}
|
|
106
113
|
export declare class WorkflowSuspended extends Error {
|
|
107
114
|
/** Epoch ms to auto-resume (durable sleep), or undefined when waiting on an external signal. */
|
package/dist/src/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAoC,MAAM,0BAA0B,CAAC;AAEjG;;;;GAIG;AACH,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/src/errors.js
CHANGED
|
@@ -6,10 +6,16 @@ import { CONTROL_FLOW_SIGNAL } from './control-flow-signal.js';
|
|
|
6
6
|
*/
|
|
7
7
|
export class FatalError extends Error {
|
|
8
8
|
code;
|
|
9
|
-
|
|
9
|
+
/** Structured, JSON-serializable detail (e.g. validation issues). It travels with the failure to
|
|
10
|
+
* the run's error, a parent's `allSettled` item and an onError handler's input. */
|
|
11
|
+
details;
|
|
12
|
+
/** Read by the step result builders, so a dispatched step's retry policy honours it too. */
|
|
13
|
+
retryable = false;
|
|
14
|
+
constructor(message, code, details) {
|
|
10
15
|
super(message);
|
|
11
16
|
this.name = 'FatalError';
|
|
12
17
|
this.code = code;
|
|
18
|
+
this.details = details;
|
|
13
19
|
}
|
|
14
20
|
}
|
|
15
21
|
/**
|
|
@@ -88,6 +94,8 @@ export class RemoteStepTimeout extends Error {
|
|
|
88
94
|
* breaking changes (old runs finish on the version they started on).
|
|
89
95
|
*/
|
|
90
96
|
export class NonDeterminismError extends Error {
|
|
97
|
+
/** Marks the failure as a broken deploy, which an `onError` route never takes. */
|
|
98
|
+
code = 'non_determinism';
|
|
91
99
|
runId;
|
|
92
100
|
seq;
|
|
93
101
|
constructor(runId, seq, expected, recorded) {
|
|
@@ -124,12 +132,6 @@ export class NestedWorkflowCallError extends FatalError {
|
|
|
124
132
|
this.step = step;
|
|
125
133
|
}
|
|
126
134
|
}
|
|
127
|
-
/**
|
|
128
|
-
* Thrown by `ctx.all` when one or more parallel child workflows fail. Carries the per-item failures
|
|
129
|
-
* (input index, child run id, error message) and presents an aggregate message summarizing the count
|
|
130
|
-
* and the failing ids — the wait-all/fail-fast counterpart to a single child's FatalError. Mirrors
|
|
131
|
-
* the Python SDK's `GatherFailed`.
|
|
132
|
-
*/
|
|
133
135
|
export class GatherError extends Error {
|
|
134
136
|
failures;
|
|
135
137
|
constructor(failures, total) {
|
package/dist/src/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAoC,MAAM,0BAA0B,CAAC;AAEjG;;;;GAIG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;IAC1B,IAAI,CAAsB;IACnC,YAAY,OAAe,EAAE,IAAa;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/src/fan-join.d.ts
CHANGED
|
@@ -43,9 +43,10 @@ export declare function allWaves(size: number, concurrency: number | undefined):
|
|
|
43
43
|
} | undefined;
|
|
44
44
|
/**
|
|
45
45
|
* The parent of a child run whose id the engine minted: a `ctx.all` child
|
|
46
|
-
* (`<parent>.all.<seq>.<i>`, or `.w<k>.<i>` under a `concurrency` limit)
|
|
47
|
-
* `ctx.startChild` child without an explicit id (`<parent>.child.<seq>`)
|
|
48
|
-
* run, including a child started with a
|
|
46
|
+
* (`<parent>.all.<seq>.<i>`, or `.w<k>.<i>` under a `concurrency` limit), a `ctx.child` /
|
|
47
|
+
* `ctx.startChild` child without an explicit id (`<parent>.child.<seq>`), or the onError handler of
|
|
48
|
+
* a failed run (`<parent>.onError.<attempt>`). Undefined for any other run, including a child started with a
|
|
49
|
+
* caller-chosen id.
|
|
49
50
|
*/
|
|
50
51
|
export declare function parentRunIdOf(runId: string): string | undefined;
|
|
51
52
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fan-join.d.ts","sourceRoot":"","sources":["../../src/fan-join.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,wGAAwG;AACxG,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAE/E;AAED,yFAAyF;AACzF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAG/E;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAEjD;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAMvF;AAMD;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAUpD;AAID
|
|
1
|
+
{"version":3,"file":"fan-join.d.ts","sourceRoot":"","sources":["../../src/fan-join.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhG;AAED,wGAAwG;AACxG,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,CAE/E;AAED,yFAAyF;AACzF,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAG/E;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAEjD;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,SAAS,CAAC;AAEpC,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,EAAE,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,wDAAwD;AACxD,wBAAgB,cAAc,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,EAAE,CAMvF;AAMD;;;;;GAKG;AACH,wBAAgB,QAAQ,CACtB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAAG,SAAS,GAC9B;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAUpD;AAID;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAE/D;AAKD;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,YAAY,GACnB;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CASzD"}
|
package/dist/src/fan-join.js
CHANGED
|
@@ -63,12 +63,13 @@ export function allWaves(size, concurrency) {
|
|
|
63
63
|
return { waveSize: 1, maxWaves: 1 };
|
|
64
64
|
return { waveSize: Math.floor(concurrency / 2), maxWaves: 2 };
|
|
65
65
|
}
|
|
66
|
-
const ENGINE_CHILD_ID = /^(.+)\.(?:all\.\d+\.(?:w\d+\.)?\d+|child\.\d+)$/;
|
|
66
|
+
const ENGINE_CHILD_ID = /^(.+)\.(?:all\.\d+\.(?:w\d+\.)?\d+|child\.\d+|onError\.\d+)$/;
|
|
67
67
|
/**
|
|
68
68
|
* The parent of a child run whose id the engine minted: a `ctx.all` child
|
|
69
|
-
* (`<parent>.all.<seq>.<i>`, or `.w<k>.<i>` under a `concurrency` limit)
|
|
70
|
-
* `ctx.startChild` child without an explicit id (`<parent>.child.<seq>`)
|
|
71
|
-
* run, including a child started with a
|
|
69
|
+
* (`<parent>.all.<seq>.<i>`, or `.w<k>.<i>` under a `concurrency` limit), a `ctx.child` /
|
|
70
|
+
* `ctx.startChild` child without an explicit id (`<parent>.child.<seq>`), or the onError handler of
|
|
71
|
+
* a failed run (`<parent>.onError.<attempt>`). Undefined for any other run, including a child started with a
|
|
72
|
+
* caller-chosen id.
|
|
72
73
|
*/
|
|
73
74
|
export function parentRunIdOf(runId) {
|
|
74
75
|
return ENGINE_CHILD_ID.exec(runId)?.[1];
|
package/dist/src/fan-join.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fan-join.js","sourceRoot":"","sources":["../../src/fan-join.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,KAAa,EAAE,QAAgB,EAAE,KAAa,EAAE,IAAa;IACtF,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;AACrD,CAAC;AAED,wGAAwG;AACxG,MAAM,UAAU,QAAQ,CAAC,QAAgB,EAAE,IAA4B;IACrE,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,QAAQ,WAAW,CAAC,CAAC,CAAC,OAAO,QAAQ,EAAE,CAAC;AAC9E,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,QAAgB,EAAE,IAAa;IACpE,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC5C,OAAO,EAAE,YAAY,EAAE,SAAS,IAAI,EAAE,EAAE,gBAAgB,EAAE,gBAAgB,IAAI,EAAE,EAAE,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,KAAgB;IACtC,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC;AAOpC,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,QAAgB,EAAE,IAAa;IAC1E,OAAO,GAAG,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,cAAc,CAAC,UAA8C;IAC3E,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,UAAU,CAAC,MAAoD,CAAC;IAC/E,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC3F,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,OAAO,CAAC,KAAa,EAAE,QAAgB,EAAE,IAAa;IAC7D,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,QAAQ,KAAK,IAAI,GAAG,CAAC;AACjG,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CACtB,IAAY,EACZ,WAA+B;IAE/B,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACtD,MAAM,IAAI,KAAK,CAAC,wDAAwD,WAAW,EAAE,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,WAAW,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAC1C,mGAAmG;IACnG,mCAAmC;IACnC,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAC3D,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,eAAe,GAAG,
|
|
1
|
+
{"version":3,"file":"fan-join.js","sourceRoot":"","sources":["../../src/fan-join.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The announced workflow registry (design §7.9) — the aggregate answer to "what workflows exist in
|
|
3
|
+
* this deployment?", built ONLY from what live workers say about themselves: each worker publishes
|
|
4
|
+
* what it can execute ({@link WorkerDescriptor.registrations}, or bare `workflows` names), and this
|
|
5
|
+
* module folds those statements together. Every entry is a fact somebody asserted, and the aggregate
|
|
6
|
+
* is the same on every pod because every pod reads the same published statements. Pure data, no I/O.
|
|
7
|
+
*/
|
|
8
|
+
import type { RawWorkerDescriptor, WorkerDescriptor, WorkflowRegistration } from './descriptor.js';
|
|
9
|
+
/** One live worker's claim about one workflow: the registration plus who announced it. */
|
|
10
|
+
export interface WorkflowAnnouncement extends WorkflowRegistration {
|
|
11
|
+
/** The announcing worker's instance id. */
|
|
12
|
+
instanceId: string;
|
|
13
|
+
/** The announcing worker's runtime — how a Python-served workflow is told from a Node-served one. */
|
|
14
|
+
runtime: 'node' | 'python';
|
|
15
|
+
}
|
|
16
|
+
/** An axis on which the live announcers of one workflow do not agree. `values` holds every distinct
|
|
17
|
+
* DECLARED value (sorted); an announcer that stated nothing on the axis contributes nothing. */
|
|
18
|
+
export interface Disagreement {
|
|
19
|
+
axis: 'group' | 'origin' | 'requires' | 'onError';
|
|
20
|
+
values: string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* How strong the fleet's claim about a workflow is. The two tiers are NOT interchangeable and a
|
|
24
|
+
* caller must not read them as the same fact:
|
|
25
|
+
*
|
|
26
|
+
* - `'declared'` — at least one live worker published a descriptor naming this workflow. Everything
|
|
27
|
+
* populated on the entry was STATED by that worker; everything absent it declined to state.
|
|
28
|
+
* - `'observed'` — nobody described it. What exists is a live routing token of this name, which is
|
|
29
|
+
* precisely the condition `resolveRemoteByConvention` uses to route a call, so the name IS
|
|
30
|
+
* reachable. Nothing else is known: no version, no origin, no runtime, and no assurance that the
|
|
31
|
+
* worker consuming that token serves a WORKFLOW there rather than a step handler of the same name.
|
|
32
|
+
* An entry like this is a live queue, not a promise.
|
|
33
|
+
*/
|
|
34
|
+
export type AnnouncementEvidence = 'declared' | 'observed';
|
|
35
|
+
/** One workflow the live fleet announces, folded across every worker that announced it. */
|
|
36
|
+
export interface AnnouncedWorkflow {
|
|
37
|
+
/** What kind of claim this entry rests on — see {@link AnnouncementEvidence}. A caller that shows
|
|
38
|
+
* a version, an origin or a runtime must check this first: an `'observed'` entry has none of
|
|
39
|
+
* them, and the emptiness is a fact about the fleet, not a rendering gap. */
|
|
40
|
+
evidence: AnnouncementEvidence;
|
|
41
|
+
/** `name@version`, or the bare `name` when no announcer stated a version. Stable sort key. */
|
|
42
|
+
key: string;
|
|
43
|
+
name: string;
|
|
44
|
+
/** Absent when no announcer stated one — never inferred from another announcer's version. */
|
|
45
|
+
version?: string;
|
|
46
|
+
/** Every distinct routing group announced (sorted). Empty = nobody stated one. On an `'observed'`
|
|
47
|
+
* entry this is the token the heartbeat was published UNDER — not a claim by anybody, but the
|
|
48
|
+
* queue a call would actually land on, which is the one thing an observation does establish. */
|
|
49
|
+
groups: string[];
|
|
50
|
+
/** Every distinct declaring package announced (sorted). Empty = nobody stated one. */
|
|
51
|
+
origins: string[];
|
|
52
|
+
/** Every distinct capability demand announced, each de-duplicated + sorted. Empty = nobody stated
|
|
53
|
+
* one. Two entries here means two workers demand different capabilities for the same version. */
|
|
54
|
+
requires: string[][];
|
|
55
|
+
/** Every distinct set of `onError` routes announced, each in canonical order. Empty = nobody stated
|
|
56
|
+
* one. Two entries here means the live workers route this workflow's failures differently. */
|
|
57
|
+
onError: {
|
|
58
|
+
code?: string;
|
|
59
|
+
workflow: string;
|
|
60
|
+
}[][];
|
|
61
|
+
/** Runtimes of the live announcers (sorted, de-duplicated). EMPTY on an `'observed'` entry: a
|
|
62
|
+
* heartbeat does not say what runtime wrote it, and the instance id's shape is a convention, not
|
|
63
|
+
* a statement, so it is not read as one. */
|
|
64
|
+
runtimes: ('node' | 'python')[];
|
|
65
|
+
/** Instance ids of the live workers announcing it (sorted, de-duplicated). Its length is how many
|
|
66
|
+
* workers can currently run this workflow — `1` is a single point of failure, and it is never 0
|
|
67
|
+
* (an entry exists only because somebody announced it, or because somebody is beating on it). */
|
|
68
|
+
instances: string[];
|
|
69
|
+
/** The axes the announcers differ on, empty when they speak with one voice. A caller that must
|
|
70
|
+
* pick a single target has to resolve these itself — the registry refuses to guess. */
|
|
71
|
+
disagreements: Disagreement[];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* What one descriptor announces. `registrations` is authoritative when present; any `workflows` name
|
|
75
|
+
* it does not cover is still announced as a bare, unversioned claim, so a worker that describes some
|
|
76
|
+
* of its workflows richly and others by name alone is reported in full rather than in part.
|
|
77
|
+
*
|
|
78
|
+
* A descriptor with neither field announces nothing — including the control plane's own descriptor,
|
|
79
|
+
* which is a router, not an executor.
|
|
80
|
+
*/
|
|
81
|
+
export declare function announcementsOf(raw: RawWorkerDescriptor | WorkerDescriptor): WorkflowAnnouncement[];
|
|
82
|
+
/**
|
|
83
|
+
* Fold every live descriptor's announcements into one entry per `name@version`, sorted by key.
|
|
84
|
+
*
|
|
85
|
+
* Pure: it holds nothing and caches nothing, so no pod ever carries a growing table of the fleet's
|
|
86
|
+
* registrations — the caller reads the live descriptors it already knows how to read, folds them
|
|
87
|
+
* here, and drops the result. The work is O(descriptors × announcements) per call, on demand.
|
|
88
|
+
*
|
|
89
|
+
* The same instance announcing the same workflow twice (a worker publishes its descriptor under
|
|
90
|
+
* every routing token it consumes, so the same bytes arrive several times) folds to ONE announcer:
|
|
91
|
+
* `instances` is a set, so it counts workers, not keys.
|
|
92
|
+
*/
|
|
93
|
+
export declare function aggregateAnnouncements(descriptors: readonly (RawWorkerDescriptor | WorkerDescriptor)[]): AnnouncedWorkflow[];
|
|
94
|
+
//# sourceMappingURL=announced.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"announced.d.ts","sourceRoot":"","sources":["../../../src/handshake/announced.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAGnG,0FAA0F;AAC1F,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB;IAChE,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,qGAAqG;IACrG,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC5B;AAED;iGACiG;AACjG,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;IAClD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3D,2FAA2F;AAC3F,MAAM,WAAW,iBAAiB;IAChC;;kFAE8E;IAC9E,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,8FAA8F;IAC9F,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;qGAEiG;IACjG,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,sFAAsF;IACtF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;sGACkG;IAClG,QAAQ,EAAE,MAAM,EAAE,EAAE,CAAC;IACrB;mGAC+F;IAC/F,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,EAAE,CAAC;IACjD;;iDAE6C;IAC7C,QAAQ,EAAE,CAAC,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC;IAChC;;sGAEkG;IAClG,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;4FACwF;IACxF,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,mBAAmB,GAAG,gBAAgB,GAC1C,oBAAoB,EAAE,CASxB;AAYD;;;;;;;;;;GAUG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,SAAS,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,GAC/D,iBAAiB,EAAE,CAkErB"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The announced workflow registry (design §7.9) — the aggregate answer to "what workflows exist in
|
|
3
|
+
* this deployment?", built ONLY from what live workers say about themselves: each worker publishes
|
|
4
|
+
* what it can execute ({@link WorkerDescriptor.registrations}, or bare `workflows` names), and this
|
|
5
|
+
* module folds those statements together. Every entry is a fact somebody asserted, and the aggregate
|
|
6
|
+
* is the same on every pod because every pod reads the same published statements. Pure data, no I/O.
|
|
7
|
+
*/
|
|
8
|
+
import { canonicalRoutes, normalizeDescriptor } from './descriptor.js';
|
|
9
|
+
/**
|
|
10
|
+
* What one descriptor announces. `registrations` is authoritative when present; any `workflows` name
|
|
11
|
+
* it does not cover is still announced as a bare, unversioned claim, so a worker that describes some
|
|
12
|
+
* of its workflows richly and others by name alone is reported in full rather than in part.
|
|
13
|
+
*
|
|
14
|
+
* A descriptor with neither field announces nothing — including the control plane's own descriptor,
|
|
15
|
+
* which is a router, not an executor.
|
|
16
|
+
*/
|
|
17
|
+
export function announcementsOf(raw) {
|
|
18
|
+
const d = normalizeDescriptor(raw);
|
|
19
|
+
const identity = { instanceId: d.instanceId, runtime: d.runtime };
|
|
20
|
+
const announcements = (d.registrations ?? []).map((reg) => ({ ...reg, ...identity }));
|
|
21
|
+
const covered = new Set(announcements.map((a) => a.name));
|
|
22
|
+
for (const name of d.workflows) {
|
|
23
|
+
if (!covered.has(name))
|
|
24
|
+
announcements.push({ name, ...identity });
|
|
25
|
+
}
|
|
26
|
+
return announcements;
|
|
27
|
+
}
|
|
28
|
+
/** `name@version`, or the bare name when unversioned — the identity two announcements are folded on. */
|
|
29
|
+
function announcementKey(a) {
|
|
30
|
+
return a.version === undefined ? a.name : `${a.name}@${a.version}`;
|
|
31
|
+
}
|
|
32
|
+
/** Sorted, de-duplicated members of `values`, dropping the un-stated ones. */
|
|
33
|
+
function stated(values) {
|
|
34
|
+
return [...new Set(values.filter((v) => v !== undefined))].sort();
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Fold every live descriptor's announcements into one entry per `name@version`, sorted by key.
|
|
38
|
+
*
|
|
39
|
+
* Pure: it holds nothing and caches nothing, so no pod ever carries a growing table of the fleet's
|
|
40
|
+
* registrations — the caller reads the live descriptors it already knows how to read, folds them
|
|
41
|
+
* here, and drops the result. The work is O(descriptors × announcements) per call, on demand.
|
|
42
|
+
*
|
|
43
|
+
* The same instance announcing the same workflow twice (a worker publishes its descriptor under
|
|
44
|
+
* every routing token it consumes, so the same bytes arrive several times) folds to ONE announcer:
|
|
45
|
+
* `instances` is a set, so it counts workers, not keys.
|
|
46
|
+
*/
|
|
47
|
+
export function aggregateAnnouncements(descriptors) {
|
|
48
|
+
const byKey = new Map();
|
|
49
|
+
for (const descriptor of descriptors) {
|
|
50
|
+
for (const announcement of announcementsOf(descriptor)) {
|
|
51
|
+
const key = announcementKey(announcement);
|
|
52
|
+
const bucket = byKey.get(key);
|
|
53
|
+
if (bucket)
|
|
54
|
+
bucket.push(announcement);
|
|
55
|
+
else
|
|
56
|
+
byKey.set(key, [announcement]);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
const out = [];
|
|
60
|
+
for (const [key, announcements] of byKey) {
|
|
61
|
+
const groups = stated(announcements.map((a) => a.group));
|
|
62
|
+
const origins = stated(announcements.map((a) => a.origin));
|
|
63
|
+
// A capability demand is a SET, so it is compared as its canonical (sorted, de-duplicated) form:
|
|
64
|
+
// two workers demanding ['saga','signals'] and ['signals','saga'] agree, and must not be reported
|
|
65
|
+
// as a disagreement over the same demand written two ways.
|
|
66
|
+
const requiresByJson = new Map();
|
|
67
|
+
for (const a of announcements) {
|
|
68
|
+
if (a.requires === undefined)
|
|
69
|
+
continue;
|
|
70
|
+
const canonical = [...new Set(a.requires)].sort();
|
|
71
|
+
requiresByJson.set(JSON.stringify(canonical), canonical);
|
|
72
|
+
}
|
|
73
|
+
// Ordered by the same rendering `disagreements` uses, so the two lists read in step.
|
|
74
|
+
const requires = [...requiresByJson.values()].sort((x, y) => x.join(',').localeCompare(y.join(',')));
|
|
75
|
+
const routesByJson = new Map();
|
|
76
|
+
for (const a of announcements) {
|
|
77
|
+
if (a.onError === undefined)
|
|
78
|
+
continue;
|
|
79
|
+
const canonical = canonicalRoutes(a.onError).map((r) => r.code === null ? { workflow: r.workflow } : { code: r.code, workflow: r.workflow });
|
|
80
|
+
routesByJson.set(JSON.stringify(canonical), canonical);
|
|
81
|
+
}
|
|
82
|
+
const onError = [...routesByJson.keys()].sort().map((k) => routesByJson.get(k) ?? []);
|
|
83
|
+
const disagreements = [];
|
|
84
|
+
if (groups.length > 1)
|
|
85
|
+
disagreements.push({ axis: 'group', values: groups });
|
|
86
|
+
if (origins.length > 1)
|
|
87
|
+
disagreements.push({ axis: 'origin', values: origins });
|
|
88
|
+
if (requires.length > 1) {
|
|
89
|
+
disagreements.push({ axis: 'requires', values: requires.map((r) => r.join(',')) });
|
|
90
|
+
}
|
|
91
|
+
if (onError.length > 1) {
|
|
92
|
+
disagreements.push({ axis: 'onError', values: [...routesByJson.keys()].sort() });
|
|
93
|
+
}
|
|
94
|
+
const first = announcements[0];
|
|
95
|
+
if (!first)
|
|
96
|
+
continue;
|
|
97
|
+
out.push({
|
|
98
|
+
evidence: 'declared',
|
|
99
|
+
key,
|
|
100
|
+
name: first.name,
|
|
101
|
+
...(first.version !== undefined ? { version: first.version } : {}),
|
|
102
|
+
groups,
|
|
103
|
+
origins,
|
|
104
|
+
requires,
|
|
105
|
+
onError,
|
|
106
|
+
runtimes: [...new Set(announcements.map((a) => a.runtime))].sort(),
|
|
107
|
+
instances: [...new Set(announcements.map((a) => a.instanceId))].sort(),
|
|
108
|
+
disagreements,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return out.sort((a, b) => a.key.localeCompare(b.key));
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=announced.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"announced.js","sourceRoot":"","sources":["../../../src/handshake/announced.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,44 @@
|
|
|
4
4
|
* order-insensitive content hash; NO transport, NO I/O. Every field is part of the cross-language
|
|
5
5
|
* wire contract (the nestjs + python SDKs build the byte-identical shape, design §7.8).
|
|
6
6
|
*/
|
|
7
|
+
/**
|
|
8
|
+
* One workflow a worker ANNOUNCES it can execute — the richer form of a `workflows` name.
|
|
9
|
+
*
|
|
10
|
+
* The rule is "announce only what you can run": a process publishes a registration for a workflow
|
|
11
|
+
* whose body it holds and whose queue it consumes. It never publishes one for a workflow it merely
|
|
12
|
+
* knows how to *route to* (an engine's `registerRemote`), because that claim says nothing about a
|
|
13
|
+
* live executor existing — which is precisely the ambiguity an aggregate registry has to remove.
|
|
14
|
+
*
|
|
15
|
+
* Every field but `name` is optional because the SDKs hold different amounts of this. A worker that
|
|
16
|
+
* knows only names (the Python `@worker.workflow("x")` form, or any pre-registrations SDK) publishes
|
|
17
|
+
* bare `workflows` names instead and is still a first-class announcer — see {@link WorkerDescriptor.registrations}.
|
|
18
|
+
* A reader must therefore treat an absent field as "not stated", never as a value: the aggregate in
|
|
19
|
+
* `./announced` never invents a version, a group or an origin that nobody announced.
|
|
20
|
+
*/
|
|
21
|
+
export interface WorkflowRegistration {
|
|
22
|
+
/** Registered workflow name — the `workflow` a `WorkflowTask` carries. */
|
|
23
|
+
name: string;
|
|
24
|
+
/** Registered version, when the announcer knows one. Absent = unversioned announcement. */
|
|
25
|
+
version?: string;
|
|
26
|
+
/** The routing token this workflow's turns are dispatched to (the queue this worker consumes for
|
|
27
|
+
* it). Absent = the announcer did not say; a reader must NOT assume the by-convention token. */
|
|
28
|
+
group?: string;
|
|
29
|
+
/** Capabilities a worker must advertise to run it (design §7.5), as the announcer declares them. */
|
|
30
|
+
requires?: string[];
|
|
31
|
+
/** The package that DECLARED the workflow (see `WorkflowRun.origin`). Absent = unknown; nothing
|
|
32
|
+
* ever substitutes a default, because a wrong origin is worse than no origin. */
|
|
33
|
+
origin?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Where the engine routes a failed run of this workflow, by error `code` (`code` absent = the
|
|
36
|
+
* catch-all): the handler workflow it starts instead of failing the run. The one announced field
|
|
37
|
+
* the engine ACTS on, for a workflow it serves by convention rather than by local registration.
|
|
38
|
+
* Absent = not stated, which routes nothing.
|
|
39
|
+
*/
|
|
40
|
+
onError?: {
|
|
41
|
+
code?: string;
|
|
42
|
+
workflow: string;
|
|
43
|
+
}[];
|
|
44
|
+
}
|
|
7
45
|
/**
|
|
8
46
|
* A worker's (or control-plane's) advertised identity, wire-protocol support, feature capabilities
|
|
9
47
|
* and registered handlers. Published on startup + on change (design §7.2) and consumed by
|
|
@@ -36,6 +74,19 @@ export interface WorkerDescriptor {
|
|
|
36
74
|
workflows: string[];
|
|
37
75
|
/** Registered step handler names → routing targets. Order-insensitive (a set). */
|
|
38
76
|
steps: string[];
|
|
77
|
+
/**
|
|
78
|
+
* The richer, per-workflow ANNOUNCEMENT of what this instance can execute (name + version + group
|
|
79
|
+
* + requires + origin). OPTIONAL and purely additive: an SDK that has only names keeps publishing
|
|
80
|
+
* {@link workflows} and is aggregated all the same, just unversioned. An SDK that publishes this
|
|
81
|
+
* SHOULD also list the same names in {@link workflows}, so a reader that predates this field still
|
|
82
|
+
* sees the workflow at all.
|
|
83
|
+
*
|
|
84
|
+
* It rides the descriptor rather than a registry of its own so it inherits the whole liveness
|
|
85
|
+
* story for free: the descriptor key is written with the heartbeat's TTL and refreshed by the same
|
|
86
|
+
* beat, so an announcement from a worker that has since died EXPIRES instead of offering a choice
|
|
87
|
+
* that fails at run time.
|
|
88
|
+
*/
|
|
89
|
+
registrations?: WorkflowRegistration[];
|
|
39
90
|
/** Optional routing partition (queue/group sharding). */
|
|
40
91
|
partition?: string;
|
|
41
92
|
/** Optional tenant namespace this instance serves. */
|
|
@@ -107,6 +158,14 @@ export interface HeartbeatStatus {
|
|
|
107
158
|
/** ETag over the full descriptor — see {@link descriptorHash}. */
|
|
108
159
|
descriptorHash: string;
|
|
109
160
|
}
|
|
161
|
+
/** Routes in a fixed key order, de-duplicated and sorted, so their order never changes the hash. */
|
|
162
|
+
export declare function canonicalRoutes(routes: readonly {
|
|
163
|
+
code?: string;
|
|
164
|
+
workflow: string;
|
|
165
|
+
}[]): {
|
|
166
|
+
code: string | null;
|
|
167
|
+
workflow: string;
|
|
168
|
+
}[];
|
|
110
169
|
/**
|
|
111
170
|
* Stable ETag over a descriptor's content (design §7.2). **Order-insensitive** over the set-valued
|
|
112
171
|
* fields (`capabilities`/`workflows`/`steps`) — the same members in any order yield the same hash —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../src/handshake/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6FAA6F;IAC7F,UAAU,EAAE,MAAM,CAAC;IACnB,mGAAmG;IACnG,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC3B,8FAA8F;IAC9F,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC;;;;OAIG;IACH,QAAQ,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IACvD;;4EAEwE;IACxE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,sFAAsF;IACtF,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,kFAAkF;IAClF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oGAAoG;IACpG,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,gBAAgB,CAAC,UAAU,CAAiC,CAAC;AAE9F;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,SAAS,MAAM,EAYlD,CAAC;AAEH;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC,GAAG;IAC5F,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,OAAO,CAEvF;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,GAAG,gBAAgB,GAAG,gBAAgB,
|
|
1
|
+
{"version":3,"file":"descriptor.d.ts","sourceRoot":"","sources":["../../../src/handshake/descriptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -63,11 +63,45 @@ export function normalizeDescriptor(raw) {
|
|
|
63
63
|
capabilities: raw.capabilities ?? [...LEGACY_V1_CAPABILITIES],
|
|
64
64
|
workflows: raw.workflows ?? [],
|
|
65
65
|
steps: raw.steps ?? [],
|
|
66
|
+
...(raw.registrations !== undefined ? { registrations: raw.registrations } : {}),
|
|
66
67
|
...(raw.partition !== undefined ? { partition: raw.partition } : {}),
|
|
67
68
|
...(raw.namespace !== undefined ? { namespace: raw.namespace } : {}),
|
|
68
69
|
startedAt: raw.startedAt ?? 0,
|
|
69
70
|
};
|
|
70
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Canonical, order-insensitive projection of the `registrations` announcement: each entry gets a
|
|
74
|
+
* FIXED key order with absent fields collapsed to `null` (so present-with-undefined and absent
|
|
75
|
+
* agree), `requires` sorted + de-duplicated, and the entries themselves de-duplicated and sorted by
|
|
76
|
+
* their own canonical JSON. Announcement order therefore cannot change the hash — only the announced
|
|
77
|
+
* CONTENT can, which is exactly when a control plane should re-read.
|
|
78
|
+
*/
|
|
79
|
+
function canonicalizeRegistrations(regs) {
|
|
80
|
+
const canonical = regs.map((r) => ({
|
|
81
|
+
name: r.name,
|
|
82
|
+
version: r.version ?? null,
|
|
83
|
+
group: r.group ?? null,
|
|
84
|
+
requires: r.requires ? [...new Set(r.requires)].sort() : null,
|
|
85
|
+
origin: r.origin ?? null,
|
|
86
|
+
// Conditional, so a registration that states no routes keeps the hash it had before routes existed.
|
|
87
|
+
...(r.onError !== undefined ? { onError: canonicalRoutes(r.onError) } : {}),
|
|
88
|
+
}));
|
|
89
|
+
const byJson = new Map();
|
|
90
|
+
for (const entry of canonical)
|
|
91
|
+
byJson.set(JSON.stringify(entry), entry);
|
|
92
|
+
return [...byJson.keys()].sort().map((k) => byJson.get(k));
|
|
93
|
+
}
|
|
94
|
+
/** Routes in a fixed key order, de-duplicated and sorted, so their order never changes the hash. */
|
|
95
|
+
export function canonicalRoutes(routes) {
|
|
96
|
+
const byJson = new Map();
|
|
97
|
+
for (const r of routes) {
|
|
98
|
+
const entry = { code: r.code ?? null, workflow: r.workflow };
|
|
99
|
+
byJson.set(JSON.stringify(entry), entry);
|
|
100
|
+
}
|
|
101
|
+
return [...byJson.keys()]
|
|
102
|
+
.sort()
|
|
103
|
+
.map((k) => byJson.get(k));
|
|
104
|
+
}
|
|
71
105
|
/** Canonical, order-insensitive projection of a descriptor used for hashing. The three set-valued
|
|
72
106
|
* fields are sorted + de-duplicated so member order can never change the hash; scalar fields are
|
|
73
107
|
* taken verbatim; optional fields collapse to `null` so present-with-undefined and absent agree. */
|
|
@@ -83,6 +117,10 @@ function canonicalizeForHash(d) {
|
|
|
83
117
|
capabilities: set(d.capabilities),
|
|
84
118
|
workflows: set(d.workflows),
|
|
85
119
|
steps: set(d.steps),
|
|
120
|
+
// Conditional, so a descriptor that announces nothing keeps the hash it had before this field.
|
|
121
|
+
...(d.registrations !== undefined
|
|
122
|
+
? { registrations: canonicalizeRegistrations(d.registrations) }
|
|
123
|
+
: {}),
|
|
86
124
|
partition: d.partition ?? null,
|
|
87
125
|
namespace: d.namespace ?? null,
|
|
88
126
|
startedAt: d.startedAt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../../src/handshake/descriptor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"descriptor.js","sourceRoot":"","sources":["../../../src/handshake/descriptor.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.48.0";
|
|
3
3
|
export { configure } from '../configure.js';
|
|
4
4
|
export * from './admission.js';
|
|
5
5
|
export type { AdmissionContext, AdmissionFactory, RedisAdmissionConfig, } from './admissions/factory.js';
|
|
@@ -25,12 +25,14 @@ export * from './event-accumulators.js';
|
|
|
25
25
|
export * from './event-trigger-bridge.js';
|
|
26
26
|
export * from './events.js';
|
|
27
27
|
export { parentRunIdOf } from './fan-join.js';
|
|
28
|
+
export * from './handshake/announced.js';
|
|
28
29
|
export * from './handshake/descriptor.js';
|
|
29
30
|
export * from './handshake/negotiate.js';
|
|
30
31
|
export * from './handshake/routing.js';
|
|
31
32
|
export * from './interfaces.js';
|
|
32
33
|
export * from './metrics.js';
|
|
33
34
|
export { asHeartbeat, withScheduleOrigin } from './observability-scope.js';
|
|
35
|
+
export * from './on-error.js';
|
|
34
36
|
export * from './pollers.js';
|
|
35
37
|
export * from './protocol.js';
|
|
36
38
|
export * from './queue.js';
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|