@adonis-agora/durable 0.9.1 → 0.11.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 +12 -0
- package/dist/assets/dashboard.html +116 -3
- package/dist/commands/durable_worker.d.ts +25 -0
- package/dist/commands/durable_worker.d.ts.map +1 -0
- package/dist/commands/durable_worker.js +113 -0
- package/dist/commands/durable_worker.js.map +1 -0
- package/dist/commands/main.d.ts +6 -5
- package/dist/commands/main.d.ts.map +1 -1
- package/dist/commands/main.js +11 -4
- package/dist/commands/main.js.map +1 -1
- package/dist/providers/dashboard_provider.d.ts +38 -0
- package/dist/providers/dashboard_provider.d.ts.map +1 -1
- package/dist/providers/dashboard_provider.js +103 -10
- package/dist/providers/dashboard_provider.js.map +1 -1
- package/dist/providers/durable_provider.d.ts +24 -16
- package/dist/providers/durable_provider.d.ts.map +1 -1
- package/dist/providers/durable_provider.js +195 -20
- package/dist/providers/durable_provider.js.map +1 -1
- package/dist/src/config_types.d.ts +92 -0
- package/dist/src/config_types.d.ts.map +1 -0
- package/dist/src/config_types.js +2 -0
- package/dist/src/config_types.js.map +1 -0
- package/dist/src/dashboard/compat-view.d.ts +13 -0
- package/dist/src/dashboard/compat-view.d.ts.map +1 -0
- package/dist/src/dashboard/compat-view.js +32 -0
- package/dist/src/dashboard/compat-view.js.map +1 -0
- package/dist/src/dashboard/compat.d.ts +76 -0
- package/dist/src/dashboard/compat.d.ts.map +1 -0
- package/dist/src/dashboard/compat.js +130 -0
- package/dist/src/dashboard/compat.js.map +1 -0
- package/dist/src/dashboard/diagnostics-recorder.d.ts +59 -0
- package/dist/src/dashboard/diagnostics-recorder.d.ts.map +1 -0
- package/dist/src/dashboard/diagnostics-recorder.js +75 -0
- package/dist/src/dashboard/diagnostics-recorder.js.map +1 -0
- package/dist/src/dashboard/gateway-adapter.d.ts +37 -0
- package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -0
- package/dist/src/dashboard/gateway-adapter.js +49 -0
- package/dist/src/dashboard/gateway-adapter.js.map +1 -0
- package/dist/src/dashboard/handlers.d.ts +38 -8
- package/dist/src/dashboard/handlers.d.ts.map +1 -1
- package/dist/src/dashboard/handlers.js +17 -1
- package/dist/src/dashboard/handlers.js.map +1 -1
- package/dist/src/dashboard/index.d.ts +10 -3
- package/dist/src/dashboard/index.d.ts.map +1 -1
- package/dist/src/dashboard/index.js +8 -2
- package/dist/src/dashboard/index.js.map +1 -1
- package/dist/src/define_config.d.ts +31 -5
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js +4 -3
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/dispatch-routing.d.ts +105 -0
- package/dist/src/dispatch-routing.d.ts.map +1 -0
- package/dist/src/dispatch-routing.js +114 -0
- package/dist/src/dispatch-routing.js.map +1 -0
- package/dist/src/engine.d.ts +129 -3
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +354 -12
- package/dist/src/engine.js.map +1 -1
- package/dist/src/handshake/descriptor.d.ts +128 -0
- package/dist/src/handshake/descriptor.d.ts.map +1 -0
- package/dist/src/handshake/descriptor.js +133 -0
- package/dist/src/handshake/descriptor.js.map +1 -0
- package/dist/src/handshake/negotiate.d.ts +83 -0
- package/dist/src/handshake/negotiate.d.ts.map +1 -0
- package/dist/src/handshake/negotiate.js +108 -0
- package/dist/src/handshake/negotiate.js.map +1 -0
- package/dist/src/handshake/routing.d.ts +51 -0
- package/dist/src/handshake/routing.d.ts.map +1 -0
- package/dist/src/handshake/routing.js +57 -0
- package/dist/src/handshake/routing.js.map +1 -0
- package/dist/src/index.d.ts +14 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/interfaces.d.ts +184 -7
- package/dist/src/interfaces.d.ts.map +1 -1
- package/dist/src/remote-workflow-executor.d.ts +25 -1
- package/dist/src/remote-workflow-executor.d.ts.map +1 -1
- package/dist/src/remote-workflow-executor.js +41 -0
- package/dist/src/remote-workflow-executor.js.map +1 -1
- package/dist/src/role_bindings.d.ts +85 -0
- package/dist/src/role_bindings.d.ts.map +1 -0
- package/dist/src/role_bindings.js +73 -0
- package/dist/src/role_bindings.js.map +1 -0
- package/dist/src/run-gateway/interface.d.ts +89 -0
- package/dist/src/run-gateway/interface.d.ts.map +1 -0
- package/dist/src/run-gateway/interface.js +2 -0
- package/dist/src/run-gateway/interface.js.map +1 -0
- package/dist/src/run-gateway/proxy-run-gateway.d.ts +84 -0
- package/dist/src/run-gateway/proxy-run-gateway.d.ts.map +1 -0
- package/dist/src/run-gateway/proxy-run-gateway.js +142 -0
- package/dist/src/run-gateway/proxy-run-gateway.js.map +1 -0
- package/dist/src/run-gateway/run-request-responder.d.ts +67 -0
- package/dist/src/run-gateway/run-request-responder.d.ts.map +1 -0
- package/dist/src/run-gateway/run-request-responder.js +228 -0
- package/dist/src/run-gateway/run-request-responder.js.map +1 -0
- package/dist/src/run-gateway/store-run-gateway.d.ts +90 -0
- package/dist/src/run-gateway/store-run-gateway.d.ts.map +1 -0
- package/dist/src/run-gateway/store-run-gateway.js +80 -0
- package/dist/src/run-gateway/store-run-gateway.js.map +1 -0
- package/dist/src/run-gateway/tenant-auth.d.ts +19 -0
- package/dist/src/run-gateway/tenant-auth.d.ts.map +1 -0
- package/dist/src/run-gateway/tenant-auth.js +71 -0
- package/dist/src/run-gateway/tenant-auth.js.map +1 -0
- package/dist/src/services/main.d.ts +16 -3
- package/dist/src/services/main.d.ts.map +1 -1
- package/dist/src/services/main.js +23 -4
- package/dist/src/services/main.js.map +1 -1
- package/dist/src/step-name-symbol.d.ts +3 -0
- package/dist/src/step-name-symbol.d.ts.map +1 -1
- package/dist/src/step-name-symbol.js.map +1 -1
- package/dist/src/step-ref.d.ts +4 -0
- package/dist/src/step-ref.d.ts.map +1 -1
- package/dist/src/step-ref.js +2 -0
- package/dist/src/step-ref.js.map +1 -1
- package/dist/src/transports/bullmq/bullmq-transport.d.ts +130 -0
- package/dist/src/transports/bullmq/bullmq-transport.d.ts.map +1 -0
- package/dist/src/transports/bullmq/bullmq-transport.js +562 -0
- package/dist/src/transports/bullmq/bullmq-transport.js.map +1 -0
- package/dist/src/transports/bullmq/deps.d.ts +59 -0
- package/dist/src/transports/bullmq/deps.d.ts.map +1 -0
- package/dist/src/transports/bullmq/deps.js +41 -0
- package/dist/src/transports/bullmq/deps.js.map +1 -0
- package/dist/src/transports/bullmq/index.d.ts +5 -0
- package/dist/src/transports/bullmq/index.d.ts.map +1 -0
- package/dist/src/transports/bullmq/index.js +5 -0
- package/dist/src/transports/bullmq/index.js.map +1 -0
- package/dist/src/transports/bullmq/naming.d.ts +71 -0
- package/dist/src/transports/bullmq/naming.d.ts.map +1 -0
- package/dist/src/transports/bullmq/naming.js +101 -0
- package/dist/src/transports/bullmq/naming.js.map +1 -0
- package/dist/src/transports/bullmq/serialization.d.ts +56 -0
- package/dist/src/transports/bullmq/serialization.d.ts.map +1 -0
- package/dist/src/transports/bullmq/serialization.js +101 -0
- package/dist/src/transports/bullmq/serialization.js.map +1 -0
- package/dist/src/transports/factory.d.ts +31 -0
- package/dist/src/transports/factory.d.ts.map +1 -1
- package/dist/src/transports/factory.js +21 -0
- package/dist/src/transports/factory.js.map +1 -1
- package/dist/src/worker-runtime/index.d.ts +22 -0
- package/dist/src/worker-runtime/index.d.ts.map +1 -0
- package/dist/src/worker-runtime/index.js +27 -0
- package/dist/src/worker-runtime/index.js.map +1 -0
- package/dist/src/worker-runtime/naming.d.ts +24 -0
- package/dist/src/worker-runtime/naming.d.ts.map +1 -0
- package/dist/src/worker-runtime/naming.js +28 -0
- package/dist/src/worker-runtime/naming.js.map +1 -0
- package/dist/src/worker-runtime/registry.d.ts +81 -0
- package/dist/src/worker-runtime/registry.d.ts.map +1 -0
- package/dist/src/worker-runtime/registry.js +44 -0
- package/dist/src/worker-runtime/registry.js.map +1 -0
- package/dist/src/worker-runtime/worker-runtime.d.ts +155 -0
- package/dist/src/worker-runtime/worker-runtime.d.ts.map +1 -0
- package/dist/src/worker-runtime/worker-runtime.js +265 -0
- package/dist/src/worker-runtime/worker-runtime.js.map +1 -0
- package/dist/src/workflow-ctx.d.ts +9 -0
- package/dist/src/workflow-ctx.d.ts.map +1 -1
- package/dist/src/workflow-ctx.js +78 -27
- package/dist/src/workflow-ctx.js.map +1 -1
- package/dist/src/workflow-turn.d.ts +167 -0
- package/dist/src/workflow-turn.d.ts.map +1 -0
- package/dist/src/workflow-turn.js +372 -0
- package/dist/src/workflow-turn.js.map +1 -0
- package/package.json +7 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnF,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,MAAM,EACN,EAAE,GACH,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGnF,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,EACT,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export const VERSION = '0.
|
|
2
|
+
export const VERSION = '0.11.0';
|
|
3
3
|
export { defineConfig, defaultAuthorize, resolveConfig } from './define_config.js';
|
|
4
|
-
export { listRuns, getRun, retryRun, cancelRun, health, } from './handlers.js';
|
|
4
|
+
export { listRuns, getRun, retryRun, redispatchPendingRun, cancelRun, health, ok, } from './handlers.js';
|
|
5
5
|
export { renderDashboard } from './html.js';
|
|
6
|
+
// Fleet health / protocol-compatibility panel (design §7.6, §10).
|
|
7
|
+
export { compat, enumerateLiveFleet, mergeFleets } from './compat.js';
|
|
8
|
+
export { BlockedDiagnosticsRecorder } from './diagnostics-recorder.js';
|
|
9
|
+
export { outcomeClass, outcomeLabel, formatProtocolRange } from './compat-view.js';
|
|
10
|
+
// Store-less `tenant` dashboard: adapt the RunGateway to the handlers' read/control port (design §8).
|
|
11
|
+
export { gatewayDashboardEngine, dashboardEngineForRole } from './gateway-adapter.js';
|
|
6
12
|
// Built-in `dashboardAuth` login screen (optional; opt-in via `config/durable_dashboard.ts`).
|
|
7
13
|
export { resolveDashboardAuth, performLogin, readSession, sanitizeReturnTo, SESSION_COOKIE_NAME, } from './auth.js';
|
|
8
14
|
export { signSessionCookie, verifySessionCookie, } from './session_cookie.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnF,OAAO,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,MAAM,EACN,EAAE,GACH,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,kEAAkE;AAClE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEnF,sGAAsG;AACtG,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,8FAA8F;AAC9F,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAOnB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ControlPlaneConfig, StandaloneConfig, TenantConfig, TenantVerifier, VerifiedTenant } from './config_types.js';
|
|
1
2
|
import { controlPlanes } from './control-planes/factory.js';
|
|
2
3
|
import type { ControlPlaneContext, ControlPlaneFactory, RedisControlPlaneConfig } from './control-planes/factory.js';
|
|
3
4
|
import type { ControlPlane, RunDispatcher } from './interfaces.js';
|
|
@@ -7,7 +8,8 @@ import type { LucidStoreConfig, StoreContext, StoreFactory } from './stores/fact
|
|
|
7
8
|
import { transports } from './transports/factory.js';
|
|
8
9
|
import type { DbTransportConfig, EventEmitterTransportConfig, MemoryTransportConfig, QueueTransportConfig, TransportContext, TransportFactory } from './transports/factory.js';
|
|
9
10
|
/**
|
|
10
|
-
*
|
|
11
|
+
* The **shared** fields of `config/durable.ts`, common to every {@link DurableConfig} role. Everything
|
|
12
|
+
* here is optional — by default the engine uses an in-process
|
|
11
13
|
* state store + transport (single-process, no extra infra). Pick a `transport`/`store` by name from
|
|
12
14
|
* the `transports`/`stores` maps to run cross-process or persist durably; build the entries with the
|
|
13
15
|
* {@link transports} / {@link stores} factories so each peer dependency (`@adonisjs/queue`,
|
|
@@ -32,7 +34,15 @@ import type { DbTransportConfig, EventEmitterTransportConfig, MemoryTransportCon
|
|
|
32
34
|
* })
|
|
33
35
|
* ```
|
|
34
36
|
*/
|
|
35
|
-
export interface
|
|
37
|
+
export interface BaseDurableConfig {
|
|
38
|
+
/**
|
|
39
|
+
* Which topology this engine runs as (spec §3): `'standalone'` (default — control-plane + embedded
|
|
40
|
+
* worker), `'control-plane'` (pure coordinator), or `'tenant'` (store-less thin pod). Selected
|
|
41
|
+
* explicitly, never inferred. Omit it and {@link defineConfig} defaults to `'standalone'`, so a
|
|
42
|
+
* config written before roles existed behaves identically. The concrete per-role shape is a member
|
|
43
|
+
* of the {@link DurableConfig} union; this base only declares the discriminant for shared reads.
|
|
44
|
+
*/
|
|
45
|
+
role?: 'standalone' | 'control-plane' | 'tenant';
|
|
36
46
|
/**
|
|
37
47
|
* Name of the transport (a key of {@link transports}) the engine dispatches over. Omit for the
|
|
38
48
|
* in-process transport (single-process, no extra infra).
|
|
@@ -96,8 +106,24 @@ export interface DurableConfig {
|
|
|
96
106
|
*/
|
|
97
107
|
stepsPath?: string | false;
|
|
98
108
|
}
|
|
99
|
-
/**
|
|
100
|
-
|
|
109
|
+
/**
|
|
110
|
+
* Shape of `config/durable.ts` — a **role-discriminated union** (spec §5). TypeScript narrows the
|
|
111
|
+
* accepted config on the `role` literal, so each topology gets exactly the right fields and an
|
|
112
|
+
* invalid combination is a compile error. The headline invariant: a `tenant` config may not name a
|
|
113
|
+
* store (`store?: never` on {@link TenantConfig}), making store-less isolation a compile-time fact.
|
|
114
|
+
* A config with no `role` lands on {@link StandaloneConfig} — the default — preserving the
|
|
115
|
+
* pre-roles config byte-for-byte.
|
|
116
|
+
*/
|
|
117
|
+
export type DurableConfig = StandaloneConfig | ControlPlaneConfig | TenantConfig;
|
|
118
|
+
/**
|
|
119
|
+
* Identity helper giving `config/durable.ts` full type-checking. Overloaded so the return type
|
|
120
|
+
* **narrows on `role`**: pass a `tenant` config and you get a {@link TenantConfig} back, etc. The
|
|
121
|
+
* `role` is defaulted to `'standalone'` at runtime, so a config that omits it (every config written
|
|
122
|
+
* before roles existed) still boots as the single-process standalone engine.
|
|
123
|
+
*/
|
|
124
|
+
export declare function defineConfig(config: TenantConfig): TenantConfig;
|
|
125
|
+
export declare function defineConfig(config: ControlPlaneConfig): ControlPlaneConfig;
|
|
126
|
+
export declare function defineConfig(config?: StandaloneConfig): StandaloneConfig;
|
|
101
127
|
export { transports, stores, controlPlanes };
|
|
102
|
-
export type { TransportContext, TransportFactory, MemoryTransportConfig, EventEmitterTransportConfig, QueueTransportConfig, DbTransportConfig, StoreContext, StoreFactory, LucidStoreConfig, ControlPlaneContext, ControlPlaneFactory, RedisControlPlaneConfig, };
|
|
128
|
+
export type { StandaloneConfig, ControlPlaneConfig, TenantConfig, TenantVerifier, VerifiedTenant, TransportContext, TransportFactory, MemoryTransportConfig, EventEmitterTransportConfig, QueueTransportConfig, DbTransportConfig, StoreContext, StoreFactory, LucidStoreConfig, ControlPlaneContext, ControlPlaneFactory, RedisControlPlaneConfig, };
|
|
103
129
|
//# sourceMappingURL=define_config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC
|
|
1
|
+
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,KAAK,EACV,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,YAAY,GAAG,eAAe,GAAG,QAAQ,CAAC;IACjD;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9C;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,YAAY,GAAG,mBAAmB,CAAC;IAClD,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yFAAyF;IACzF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gEAAgE;IAChE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,gFAAgF;IAChF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAChC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAC/B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,kBAAkB,GAAG,YAAY,CAAC;AAEjF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAAC;AACjE,wBAAgB,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,kBAAkB,CAAC;AAC7E,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAC;AAO1E,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;AAC7C,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,GACxB,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { controlPlanes } from './control-planes/factory.js';
|
|
2
2
|
import { stores } from './stores/factory.js';
|
|
3
3
|
import { transports } from './transports/factory.js';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
export function defineConfig(config = { role: 'standalone' }) {
|
|
5
|
+
// Default the discriminant so downstream (provider, gateway) can branch on a always-present `role`
|
|
6
|
+
// without re-deriving it. `...config` wins, so an explicit role is preserved.
|
|
7
|
+
return { role: 'standalone', ...config };
|
|
7
8
|
}
|
|
8
9
|
export { transports, stores, controlPlanes };
|
|
9
10
|
//# sourceMappingURL=define_config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAQ5D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAiIrD,MAAM,UAAU,YAAY,CAAC,SAAwB,EAAE,IAAI,EAAE,YAAY,EAAE;IACzE,mGAAmG;IACnG,8EAA8E;IAC9E,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,EAAmB,CAAC;AAC5D,CAAC;AAED,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability- & protocol-aware dispatch planning (design §7.5/§7.6). Sits BETWEEN the pure handshake
|
|
3
|
+
* (`resolveRouting`/`negotiate`, `src/handshake/*`) and the engine's dispatch path: given a step's/
|
|
4
|
+
* workflow's required capabilities and the LIVE worker descriptors for its routing token, decide
|
|
5
|
+
* whether a live worker can actually run it — and if not, produce the LOUD, structured reason the
|
|
6
|
+
* engine parks the run `blocked` with (never a silent hang into a queue nobody consumes).
|
|
7
|
+
*
|
|
8
|
+
* Pure logic + a small control-plane descriptor factory: no transport, no store, no I/O. The engine
|
|
9
|
+
* feeds in descriptors it read off the broker and acts on the returned plan.
|
|
10
|
+
*/
|
|
11
|
+
import { type RawWorkerDescriptor, type WorkerDescriptor } from './handshake/descriptor.js';
|
|
12
|
+
/**
|
|
13
|
+
* Build the control-plane's OWN handshake descriptor — the side the engine negotiates AGAINST each
|
|
14
|
+
* worker (design §7.3). The CP advertises the protocol band it speaks so a worker stuck on an
|
|
15
|
+
* incompatible major is detected instead of dispatched into (design §7.4). Capabilities default to
|
|
16
|
+
* empty (the CP demands nothing of itself); `partition`/`namespace` scope it to a pool when set.
|
|
17
|
+
*
|
|
18
|
+
* The CP is not a worker, so `workflows`/`steps` are empty and `runtime` is `node`. `startedAt`
|
|
19
|
+
* participates only in the descriptor hash (irrelevant for negotiation), so it defaults to `0` unless
|
|
20
|
+
* a caller wants a stable identity.
|
|
21
|
+
*/
|
|
22
|
+
export declare function controlPlaneDescriptor(opts: {
|
|
23
|
+
instanceId: string;
|
|
24
|
+
/** SDK identity for observability (never gates dispatch). */
|
|
25
|
+
sdk?: {
|
|
26
|
+
name: string;
|
|
27
|
+
version: string;
|
|
28
|
+
};
|
|
29
|
+
/** Protocol majors the CP can negotiate. Defaults to the current single-major band `[v, v]`. */
|
|
30
|
+
protocol?: {
|
|
31
|
+
version: number;
|
|
32
|
+
range: [number, number];
|
|
33
|
+
};
|
|
34
|
+
/** Capabilities the CP itself advertises (rarely needed; the CP is a router, not an executor). */
|
|
35
|
+
capabilities?: string[];
|
|
36
|
+
partition?: string | undefined;
|
|
37
|
+
namespace?: string | undefined;
|
|
38
|
+
startedAt?: number;
|
|
39
|
+
}): WorkerDescriptor;
|
|
40
|
+
/** The structured delta a blocked-dispatch diagnostics event carries (design §7.6) — enough for the
|
|
41
|
+
* telescope timeline + dashboard health panel to render exactly WHY nobody could run the work, never
|
|
42
|
+
* a bare boolean. Serializable (plain data), so it rides an `EngineEvent`/control-plane message. */
|
|
43
|
+
export interface DispatchDiagnostics {
|
|
44
|
+
/** Which machine code fired — a missing capability vs. an unbridgeable protocol gap. */
|
|
45
|
+
code: 'capability.unavailable' | 'protocol.incompatible';
|
|
46
|
+
/** The routing token the work would have been dispatched to. */
|
|
47
|
+
token: string;
|
|
48
|
+
/** The capabilities the handler required (de-duplicated). */
|
|
49
|
+
requires: string[];
|
|
50
|
+
/** How many live workers were advertising on this token at decision time. */
|
|
51
|
+
liveWorkers: number;
|
|
52
|
+
/** Required capabilities NOT advertised by ANY live worker (the `capability.unavailable` delta). */
|
|
53
|
+
missingCapabilities?: string[];
|
|
54
|
+
/** The protocol band the control-plane speaks (the `protocol.incompatible` delta). */
|
|
55
|
+
controlPlaneRange?: [number, number];
|
|
56
|
+
/** Protocol bands of the capable-but-incompatible workers (the `protocol.incompatible` delta). */
|
|
57
|
+
workerRanges?: [number, number][];
|
|
58
|
+
/** The control-plane descriptor negotiated against (attached wholesale for observability). */
|
|
59
|
+
controlPlane: WorkerDescriptor;
|
|
60
|
+
/** The live worker descriptors considered (attached wholesale — the full picture on the timeline). */
|
|
61
|
+
workers: WorkerDescriptor[];
|
|
62
|
+
}
|
|
63
|
+
/** At least one live worker can run the handler — dispatch proceeds as today. */
|
|
64
|
+
export interface RoutableDispatch {
|
|
65
|
+
status: 'routable';
|
|
66
|
+
/** The normalized subset that is BOTH capable and protocol-compatible. */
|
|
67
|
+
workers: WorkerDescriptor[];
|
|
68
|
+
}
|
|
69
|
+
/** No live worker can run the handler — the engine parks the run `blocked` with this reason/delta. */
|
|
70
|
+
export interface BlockedDispatch {
|
|
71
|
+
status: 'blocked';
|
|
72
|
+
code: 'capability.unavailable' | 'protocol.incompatible';
|
|
73
|
+
/** Dashboard/telescope copy, e.g. `blocked: no compatible worker (requires saga)`. */
|
|
74
|
+
reason: string;
|
|
75
|
+
requires: string[];
|
|
76
|
+
diagnostics: DispatchDiagnostics;
|
|
77
|
+
}
|
|
78
|
+
export type DispatchPlan = RoutableDispatch | BlockedDispatch;
|
|
79
|
+
/**
|
|
80
|
+
* Thrown from deep in a `ctx.step`/`ctx.call` dispatch when {@link planDispatch} returns `blocked`, so
|
|
81
|
+
* the engine's run-execution catch can park the run `blocked` (with the carried plan) instead of
|
|
82
|
+
* writing a `pending` checkpoint + dispatching into a queue no live worker consumes. Distinct from
|
|
83
|
+
* `WorkflowSuspended` — a blocked run is re-driven by the blocked-recovery poll, not a durable timer.
|
|
84
|
+
*/
|
|
85
|
+
export declare class WorkflowBlocked extends Error {
|
|
86
|
+
readonly plan: BlockedDispatch;
|
|
87
|
+
constructor(plan: BlockedDispatch);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Decide whether a handler requiring `requires` can be dispatched to a token whose LIVE fleet is
|
|
91
|
+
* `liveDescriptors`, negotiating each candidate against the control-plane descriptor `cp`
|
|
92
|
+
* (design §7.4/§7.5).
|
|
93
|
+
*
|
|
94
|
+
* A worker is dispatchable iff it is BOTH capability-capable ({@link canRoute}) AND
|
|
95
|
+
* protocol-compatible ({@link negotiate} outcome ≠ `incompatible`). If ≥1 such worker exists →
|
|
96
|
+
* `routable`. Otherwise `blocked`, with the reason discriminated:
|
|
97
|
+
* - some workers had the capability but ALL are protocol-incompatible → `protocol.incompatible`;
|
|
98
|
+
* - otherwise (no live worker advertises every required capability) → `capability.unavailable`.
|
|
99
|
+
*
|
|
100
|
+
* Precondition (enforced by the caller): `liveDescriptors` is NON-EMPTY. An empty fleet means "no
|
|
101
|
+
* descriptors published" — the legacy/pre-handshake path — where the guard is intentionally skipped so
|
|
102
|
+
* existing workers keep flowing (design §7.7); the engine never calls this with an empty fleet.
|
|
103
|
+
*/
|
|
104
|
+
export declare function planDispatch(requires: string[], liveDescriptors: readonly (RawWorkerDescriptor | WorkerDescriptor)[], cp: WorkerDescriptor, token: string): DispatchPlan;
|
|
105
|
+
//# sourceMappingURL=dispatch-routing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch-routing.d.ts","sourceRoot":"","sources":["../../src/dispatch-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EAEtB,MAAM,2BAA2B,CAAC;AAInC;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,GAAG,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,gGAAgG;IAChG,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAAE,CAAC;IACxD,kGAAkG;IAClG,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,gBAAgB,CAcnB;AAED;;qGAEqG;AACrG,MAAM,WAAW,mBAAmB;IAClC,wFAAwF;IACxF,IAAI,EAAE,wBAAwB,GAAG,uBAAuB,CAAC;IACzD,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,6EAA6E;IAC7E,WAAW,EAAE,MAAM,CAAC;IACpB,oGAAoG;IACpG,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,sFAAsF;IACtF,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,kGAAkG;IAClG,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAClC,8FAA8F;IAC9F,YAAY,EAAE,gBAAgB,CAAC;IAC/B,sGAAsG;IACtG,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,iFAAiF;AACjF,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,UAAU,CAAC;IACnB,0EAA0E;IAC1E,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,sGAAsG;AACtG,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,wBAAwB,GAAG,uBAAuB,CAAC;IACzD,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,EAAE,mBAAmB,CAAC;CAClC;AAED,MAAM,MAAM,YAAY,GAAG,gBAAgB,GAAG,eAAe,CAAC;AAE9D;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IAC5B,QAAQ,CAAC,IAAI,EAAE,eAAe;gBAArB,IAAI,EAAE,eAAe;CAI3C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,MAAM,EAAE,EAClB,eAAe,EAAE,SAAS,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,EACpE,EAAE,EAAE,gBAAgB,EACpB,KAAK,EAAE,MAAM,GACZ,YAAY,CAmDd"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Capability- & protocol-aware dispatch planning (design §7.5/§7.6). Sits BETWEEN the pure handshake
|
|
3
|
+
* (`resolveRouting`/`negotiate`, `src/handshake/*`) and the engine's dispatch path: given a step's/
|
|
4
|
+
* workflow's required capabilities and the LIVE worker descriptors for its routing token, decide
|
|
5
|
+
* whether a live worker can actually run it — and if not, produce the LOUD, structured reason the
|
|
6
|
+
* engine parks the run `blocked` with (never a silent hang into a queue nobody consumes).
|
|
7
|
+
*
|
|
8
|
+
* Pure logic + a small control-plane descriptor factory: no transport, no store, no I/O. The engine
|
|
9
|
+
* feeds in descriptors it read off the broker and acts on the returned plan.
|
|
10
|
+
*/
|
|
11
|
+
import { CURRENT_PROTOCOL_VERSION, normalizeDescriptor, } from './handshake/descriptor.js';
|
|
12
|
+
import { negotiate } from './handshake/negotiate.js';
|
|
13
|
+
import { canRoute, requiredCapabilities } from './handshake/routing.js';
|
|
14
|
+
/**
|
|
15
|
+
* Build the control-plane's OWN handshake descriptor — the side the engine negotiates AGAINST each
|
|
16
|
+
* worker (design §7.3). The CP advertises the protocol band it speaks so a worker stuck on an
|
|
17
|
+
* incompatible major is detected instead of dispatched into (design §7.4). Capabilities default to
|
|
18
|
+
* empty (the CP demands nothing of itself); `partition`/`namespace` scope it to a pool when set.
|
|
19
|
+
*
|
|
20
|
+
* The CP is not a worker, so `workflows`/`steps` are empty and `runtime` is `node`. `startedAt`
|
|
21
|
+
* participates only in the descriptor hash (irrelevant for negotiation), so it defaults to `0` unless
|
|
22
|
+
* a caller wants a stable identity.
|
|
23
|
+
*/
|
|
24
|
+
export function controlPlaneDescriptor(opts) {
|
|
25
|
+
const version = CURRENT_PROTOCOL_VERSION;
|
|
26
|
+
return {
|
|
27
|
+
instanceId: opts.instanceId,
|
|
28
|
+
runtime: 'node',
|
|
29
|
+
sdk: opts.sdk ?? { name: '@agora/durable', version: String(version) },
|
|
30
|
+
protocol: opts.protocol ?? { version, range: [version, version] },
|
|
31
|
+
capabilities: opts.capabilities ?? [],
|
|
32
|
+
workflows: [],
|
|
33
|
+
steps: [],
|
|
34
|
+
...(opts.partition !== undefined ? { partition: opts.partition } : {}),
|
|
35
|
+
...(opts.namespace !== undefined ? { namespace: opts.namespace } : {}),
|
|
36
|
+
startedAt: opts.startedAt ?? 0,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Thrown from deep in a `ctx.step`/`ctx.call` dispatch when {@link planDispatch} returns `blocked`, so
|
|
41
|
+
* the engine's run-execution catch can park the run `blocked` (with the carried plan) instead of
|
|
42
|
+
* writing a `pending` checkpoint + dispatching into a queue no live worker consumes. Distinct from
|
|
43
|
+
* `WorkflowSuspended` — a blocked run is re-driven by the blocked-recovery poll, not a durable timer.
|
|
44
|
+
*/
|
|
45
|
+
export class WorkflowBlocked extends Error {
|
|
46
|
+
plan;
|
|
47
|
+
constructor(plan) {
|
|
48
|
+
super(plan.reason);
|
|
49
|
+
this.plan = plan;
|
|
50
|
+
this.name = 'WorkflowBlocked';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Decide whether a handler requiring `requires` can be dispatched to a token whose LIVE fleet is
|
|
55
|
+
* `liveDescriptors`, negotiating each candidate against the control-plane descriptor `cp`
|
|
56
|
+
* (design §7.4/§7.5).
|
|
57
|
+
*
|
|
58
|
+
* A worker is dispatchable iff it is BOTH capability-capable ({@link canRoute}) AND
|
|
59
|
+
* protocol-compatible ({@link negotiate} outcome ≠ `incompatible`). If ≥1 such worker exists →
|
|
60
|
+
* `routable`. Otherwise `blocked`, with the reason discriminated:
|
|
61
|
+
* - some workers had the capability but ALL are protocol-incompatible → `protocol.incompatible`;
|
|
62
|
+
* - otherwise (no live worker advertises every required capability) → `capability.unavailable`.
|
|
63
|
+
*
|
|
64
|
+
* Precondition (enforced by the caller): `liveDescriptors` is NON-EMPTY. An empty fleet means "no
|
|
65
|
+
* descriptors published" — the legacy/pre-handshake path — where the guard is intentionally skipped so
|
|
66
|
+
* existing workers keep flowing (design §7.7); the engine never calls this with an empty fleet.
|
|
67
|
+
*/
|
|
68
|
+
export function planDispatch(requires, liveDescriptors, cp, token) {
|
|
69
|
+
const required = requiredCapabilities({ requires });
|
|
70
|
+
const workers = liveDescriptors.map(normalizeDescriptor);
|
|
71
|
+
const capable = workers.filter((w) => canRoute({ requires }, w));
|
|
72
|
+
const compatible = capable.filter((w) => negotiate(cp, w).outcome !== 'incompatible');
|
|
73
|
+
if (compatible.length > 0)
|
|
74
|
+
return { status: 'routable', workers: compatible };
|
|
75
|
+
// Blocked. Which failure? Capable-but-incompatible → protocol; no capable at all → capability.
|
|
76
|
+
if (capable.length > 0) {
|
|
77
|
+
const workerRanges = capable.map((w) => w.protocol.range);
|
|
78
|
+
return {
|
|
79
|
+
status: 'blocked',
|
|
80
|
+
code: 'protocol.incompatible',
|
|
81
|
+
reason: `blocked: no protocol-compatible worker${required.length > 0 ? ` (requires ${required.join(', ')})` : ''}`,
|
|
82
|
+
requires: required,
|
|
83
|
+
diagnostics: {
|
|
84
|
+
code: 'protocol.incompatible',
|
|
85
|
+
token,
|
|
86
|
+
requires: required,
|
|
87
|
+
liveWorkers: workers.length,
|
|
88
|
+
controlPlaneRange: cp.protocol.range,
|
|
89
|
+
workerRanges,
|
|
90
|
+
controlPlane: cp,
|
|
91
|
+
workers,
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
// Capability gap: required caps advertised by NO live worker.
|
|
96
|
+
const advertised = new Set(workers.flatMap((w) => w.capabilities));
|
|
97
|
+
const missingCapabilities = required.filter((cap) => !advertised.has(cap));
|
|
98
|
+
return {
|
|
99
|
+
status: 'blocked',
|
|
100
|
+
code: 'capability.unavailable',
|
|
101
|
+
reason: `blocked: no compatible worker${required.length > 0 ? ` (requires ${required.join(', ')})` : ''}`,
|
|
102
|
+
requires: required,
|
|
103
|
+
diagnostics: {
|
|
104
|
+
code: 'capability.unavailable',
|
|
105
|
+
token,
|
|
106
|
+
requires: required,
|
|
107
|
+
liveWorkers: workers.length,
|
|
108
|
+
missingCapabilities,
|
|
109
|
+
controlPlane: cp,
|
|
110
|
+
workers,
|
|
111
|
+
},
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=dispatch-routing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dispatch-routing.js","sourceRoot":"","sources":["../../src/dispatch-routing.ts"],"names":[],"mappings":"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"}
|
package/dist/src/engine.d.ts
CHANGED
|
@@ -85,6 +85,40 @@ export interface WorkflowEngineDeps {
|
|
|
85
85
|
* Omit for unlimited (the default — recovery always retries).
|
|
86
86
|
*/
|
|
87
87
|
maxRecoveryAttempts?: number | undefined;
|
|
88
|
+
/**
|
|
89
|
+
* Fallback re-drive window (ms) for a run that SUSPENDS with no natural timer — i.e. it's waiting on
|
|
90
|
+
* an EVENT to wake it (a child's completion, a signal, a remote step with no `timeoutMs`) rather than
|
|
91
|
+
* a `ctx.sleep`. Those events re-drive the run directly; but if the wake is LOST (the delivering pod
|
|
92
|
+
* crashed / rolled mid-handoff), the run would otherwise sit `suspended` forever with `wakeAt: null` —
|
|
93
|
+
* invisible to both the timer poller (no `wakeAt`) and crash-recovery (no lease). This stamps a
|
|
94
|
+
* fallback `wakeAt` so {@link resumeDueTimers} re-drives it after the window; the re-drive is an
|
|
95
|
+
* idempotent replay (a still-pending dependency re-suspends via the checkpoint guard, a settled one
|
|
96
|
+
* advances), so it's a safe self-heal, not a retry that can double-dispatch. The primary event path
|
|
97
|
+
* still wins first for a healthy run (it re-drives long before this fires), so this only ever fires
|
|
98
|
+
* for a genuinely-orphaned run. Default 5min; set `0` to disable (the prior wake-forever behavior).
|
|
99
|
+
*/
|
|
100
|
+
reconcileMs?: number | undefined;
|
|
101
|
+
/**
|
|
102
|
+
* Opt-in self-heal window (ms) for a remote step with NO `timeoutMs` whose dispatched job was LOST —
|
|
103
|
+
* the worker crashed mid-step leaving no result, or the transport dropped the job (a Redis
|
|
104
|
+
* flush/eviction, or a broker moving a stalled job to `failed` and removing it). The `pending`
|
|
105
|
+
* checkpoint then has no result to resume on, and — BY DESIGN (see {@link reconcileMs}) — the
|
|
106
|
+
* reconcile re-drive re-suspends a still-pending step rather than re-dispatching, so a slow-but-live
|
|
107
|
+
* worker is never double-run. That safety means a genuinely-lost dispatch would otherwise hang
|
|
108
|
+
* forever. When set, a reconcile re-drive that finds a remote step still `pending` PAST this window
|
|
109
|
+
* re-dispatches it (bumping `attempts`, bounded by {@link remoteRedispatchMax}). Off by default:
|
|
110
|
+
* re-dispatch can double-run a step whose original job is merely slow, so the window MUST exceed the
|
|
111
|
+
* longest such step and the step MUST be idempotent. Prefer a per-step `timeoutMs` (tighter,
|
|
112
|
+
* heartbeat-aware) where you can; this is the store-driven net for no-timeout steps that must
|
|
113
|
+
* survive a lost dispatch. {@link WorkflowEngine.redispatchPending} is the manual counterpart.
|
|
114
|
+
*/
|
|
115
|
+
remoteRedispatchMs?: number | undefined;
|
|
116
|
+
/**
|
|
117
|
+
* Max times {@link remoteRedispatchMs} re-dispatches one lost remote step before giving up and
|
|
118
|
+
* failing it as a {@link RemoteStepError} (`code: 'remote_step_lost'`), so the run fails / dead-letters
|
|
119
|
+
* instead of re-dispatching forever. Default 10. Ignored when `remoteRedispatchMs` is unset.
|
|
120
|
+
*/
|
|
121
|
+
remoteRedispatchMax?: number | undefined;
|
|
88
122
|
/**
|
|
89
123
|
* Build the public callback URL for a `ctx.webhook()` token (e.g.
|
|
90
124
|
* ``(t) => `https://api.example.com/durable/webhooks/${t}` ``). Populates
|
|
@@ -150,6 +184,29 @@ export interface WorkflowEngineDeps {
|
|
|
150
184
|
* (the default), an unregistered workflow throws exactly as before. Existing behaviour is unchanged.
|
|
151
185
|
*/
|
|
152
186
|
remoteByConvention?: boolean | undefined;
|
|
187
|
+
/**
|
|
188
|
+
* Capabilities the control-plane itself advertises in its handshake descriptor (design §7.3). The
|
|
189
|
+
* CP is a router, not an executor, so this is rarely needed — leave empty. Never gates which workers
|
|
190
|
+
* are dispatchable (that's the worker descriptors); it only shapes the `missingOnLocal` delta.
|
|
191
|
+
*/
|
|
192
|
+
controlPlaneCapabilities?: string[] | undefined;
|
|
193
|
+
/**
|
|
194
|
+
* The wire-protocol band the control-plane speaks, negotiated against each worker (design §7.4).
|
|
195
|
+
* Defaults to the current single-major band. Widen the `range` when this CP can talk to workers on
|
|
196
|
+
* an older/newer major; a worker whose band doesn't overlap this one is flagged
|
|
197
|
+
* `protocol.incompatible` and its runs park `blocked` instead of dispatching into the void.
|
|
198
|
+
*/
|
|
199
|
+
controlPlaneProtocol?: {
|
|
200
|
+
version: number;
|
|
201
|
+
range: [number, number];
|
|
202
|
+
} | undefined;
|
|
203
|
+
/**
|
|
204
|
+
* How long (ms) a run parked `blocked` (no capable/compatible worker, design §7.5) waits before the
|
|
205
|
+
* blocked-recovery poll re-drives it to re-check the live fleet. Default 5000. The run proceeds the
|
|
206
|
+
* moment a capable+compatible worker appears on the next poll; a lower value trades broker SCANs for
|
|
207
|
+
* faster pickup.
|
|
208
|
+
*/
|
|
209
|
+
blockedPollMs?: number | undefined;
|
|
153
210
|
}
|
|
154
211
|
/** Thrown by {@link WorkflowEngine.resume} when the run belongs to a different namespace. */
|
|
155
212
|
export declare class NamespaceMismatch extends Error {
|
|
@@ -177,6 +234,9 @@ export declare class WorkflowEngine {
|
|
|
177
234
|
private readonly namespace;
|
|
178
235
|
private readonly leaseMs;
|
|
179
236
|
private readonly maxRecoveryAttempts?;
|
|
237
|
+
private readonly reconcileMs;
|
|
238
|
+
private readonly remoteRedispatchMs;
|
|
239
|
+
private readonly remoteRedispatchMax;
|
|
180
240
|
private readonly webhookUrl?;
|
|
181
241
|
private readonly traceparent?;
|
|
182
242
|
private readonly context?;
|
|
@@ -187,6 +247,11 @@ export declare class WorkflowEngine {
|
|
|
187
247
|
private readonly trackStepStart;
|
|
188
248
|
/** Where a freshly-started run executes — in-process by default (see {@link RunDispatcher}). */
|
|
189
249
|
private readonly runDispatcher;
|
|
250
|
+
/** The control-plane's OWN handshake descriptor — negotiated against each worker's descriptor to
|
|
251
|
+
* detect protocol incompatibility before dispatch (design §7.3/§7.4). Built once at construction. */
|
|
252
|
+
private readonly cpDescriptor;
|
|
253
|
+
/** How long a `blocked` run waits before the recovery poll re-checks the live fleet (design §7.5). */
|
|
254
|
+
private readonly blockedPollMs;
|
|
190
255
|
/** Per-key serialization for singleton workflows (admission, back-pressure, notify-on-release). */
|
|
191
256
|
private readonly singletons;
|
|
192
257
|
/** Every registered workflow, keyed by `name@version` — so old versions stay runnable. */
|
|
@@ -256,6 +321,7 @@ export declare class WorkflowEngine {
|
|
|
256
321
|
validateInput?: ((input: unknown) => void | Promise<void>) | undefined;
|
|
257
322
|
onEvent?: string[] | undefined;
|
|
258
323
|
eventBatch?: EventBatchConfig | undefined;
|
|
324
|
+
requires?: string[] | undefined;
|
|
259
325
|
}): void;
|
|
260
326
|
/**
|
|
261
327
|
* Register a workflow whose body runs in another SDK (e.g. Python). The engine owns the run exactly
|
|
@@ -270,6 +336,7 @@ export declare class WorkflowEngine {
|
|
|
270
336
|
singleton?: SingletonConfig;
|
|
271
337
|
executionTimeout?: string | number;
|
|
272
338
|
validateInput?: (input: unknown) => void | Promise<void>;
|
|
339
|
+
requires?: string[];
|
|
273
340
|
}): void;
|
|
274
341
|
/**
|
|
275
342
|
* Convention-dispatch resolution (opt-in via {@link WorkflowEngineDeps.remoteByConvention}): when
|
|
@@ -369,8 +436,11 @@ export declare class WorkflowEngine {
|
|
|
369
436
|
*/
|
|
370
437
|
private countRecovery;
|
|
371
438
|
/**
|
|
372
|
-
* Resume every suspended run whose durable timer is due
|
|
373
|
-
*
|
|
439
|
+
* Resume every suspended run whose durable timer is due — AND every run parked `blocked` (no
|
|
440
|
+
* capable/compatible worker, design §7.5) whose recovery poll is due. Call periodically (a poller)
|
|
441
|
+
* and on boot. A blocked run re-drives to re-check the live fleet: it dispatches the moment a
|
|
442
|
+
* capable+compatible worker has appeared, else re-parks `blocked` with a fresh `wakeAt`. A run still
|
|
443
|
+
* not due re-suspends cheaply without running new work.
|
|
374
444
|
*/
|
|
375
445
|
resumeDueTimers(nowMs?: number): Promise<RunResult[]>;
|
|
376
446
|
/**
|
|
@@ -387,7 +457,20 @@ export declare class WorkflowEngine {
|
|
|
387
457
|
* inline — or null if the run is unknown. The dashboard "retry" goes through here so it can't block
|
|
388
458
|
* the HTTP request on workflow execution.
|
|
389
459
|
*/
|
|
390
|
-
requeue(runId: string): Promise<RunResult | null>;
|
|
460
|
+
requeue(runId: string, _seen?: Set<string>): Promise<RunResult | null>;
|
|
461
|
+
/**
|
|
462
|
+
* Explicitly re-dispatch every remote step of `runId` stuck `pending` — the OPERATOR escape hatch for
|
|
463
|
+
* a run whose dispatched step job was LOST (worker crashed with no result, or a transport that dropped
|
|
464
|
+
* the job). No automatic recovery re-drives these: a reconcile re-drive re-suspends a still-pending
|
|
465
|
+
* step by design (unless `remoteRedispatchMs` is set), `recoverIncomplete` only reclaims LEASED runs,
|
|
466
|
+
* and `requeue` just replays back to the pending guard. This re-enqueues the same `stepId` so the
|
|
467
|
+
* (idempotent) step re-runs and its result resumes the run. Safe to call on a healthy run — it re-runs
|
|
468
|
+
* only in-flight `pending` remote steps, which are idempotent by the durable contract. Returns the
|
|
469
|
+
* run's current status (with the count re-dispatched), or null if the run is unknown.
|
|
470
|
+
*/
|
|
471
|
+
redispatchPending(runId: string): Promise<(RunResult & {
|
|
472
|
+
redispatched: number;
|
|
473
|
+
}) | null>;
|
|
391
474
|
/**
|
|
392
475
|
* **Fix-and-replay**: re-run a run (typically a `dead`/`failed` one) with a corrected `input`, as a
|
|
393
476
|
* fresh run with clean history. It's a NEW run — `newRunId` defaults to `<runId>~retry~<uuid>` — so
|
|
@@ -599,6 +682,13 @@ export declare class WorkflowEngine {
|
|
|
599
682
|
* keeps its own lease handling (the TS executor's `finally`, the remote path's caller).
|
|
600
683
|
*/
|
|
601
684
|
private settleRun;
|
|
685
|
+
/**
|
|
686
|
+
* A wakeAt to persist on a suspend: the natural timer if the turn produced one (a `ctx.sleep`, a
|
|
687
|
+
* remote-step deadline), else the {@link reconcileMs} fallback so an event-waiting run (child/signal/
|
|
688
|
+
* timeout-less remote step) can't be orphaned forever if its wake is lost. `undefined` only when the
|
|
689
|
+
* fallback is disabled (`reconcileMs: 0`). See {@link WorkflowEngineDeps.reconcileMs}.
|
|
690
|
+
*/
|
|
691
|
+
private reconcileWakeAt;
|
|
602
692
|
private runRemoteExecution;
|
|
603
693
|
/** The run's resolved durable ops as replay inputs: completed/failed steps + elapsed timers. */
|
|
604
694
|
private remoteHistory;
|
|
@@ -652,7 +742,43 @@ export declare class WorkflowEngine {
|
|
|
652
742
|
* if nothing was waiting — a too-early or duplicate update).
|
|
653
743
|
*/
|
|
654
744
|
update(runId: string, name: string, arg: unknown): Promise<UpdateResult>;
|
|
745
|
+
/** The LIVE worker handshake descriptors advertised on `token`, read from the primary transport's
|
|
746
|
+
* descriptor keyspace. Empty when no transport can introspect it (in-process / pre-handshake broker)
|
|
747
|
+
* OR nobody is publishing — either way the guard is skipped and dispatch proceeds legacy
|
|
748
|
+
* assume-compatible (design §7.7). Never throws (the transport degrades to `[]`). */
|
|
749
|
+
private liveDescriptorsFor;
|
|
750
|
+
/**
|
|
751
|
+
* Plan a dispatch to `token` for a handler requiring `requires` (design §7.5). Returns:
|
|
752
|
+
* - `undefined` — NO live descriptors published on this token: the guard does not engage, so a
|
|
753
|
+
* pre-handshake fleet (or an in-process transport) keeps flowing exactly as before (design §7.7);
|
|
754
|
+
* - a `routable` plan — ≥1 live worker is capability-capable AND protocol-compatible (dispatch);
|
|
755
|
+
* - a `blocked` plan — descriptors exist but none can run it (park the run, never dispatch into it).
|
|
756
|
+
*/
|
|
757
|
+
private planRoute;
|
|
758
|
+
/** Throw {@link WorkflowBlocked} when no live worker can run a dispatch to `token` — so the caller's
|
|
759
|
+
* run-execution catch parks the run `blocked` (with the plan) instead of persisting a `pending`
|
|
760
|
+
* checkpoint + dispatching into a queue nobody consumes (design §7.5). A no-op when the guard does
|
|
761
|
+
* not engage (no descriptors) or a capable+compatible worker exists. */
|
|
762
|
+
private ensureRoutable;
|
|
763
|
+
/**
|
|
764
|
+
* Park a run `blocked`: no live worker can run its next dispatch (design §7.5/§7.6). Persists the
|
|
765
|
+
* `blocked` status with a human reason + a `wakeAt` so the blocked-recovery poll re-drives it, emits
|
|
766
|
+
* the LOUD structured `capability.unavailable`/`protocol.incompatible` diagnostics event (carrying
|
|
767
|
+
* both descriptors + the precise delta), and releases the run lease so any instance can re-drive it.
|
|
768
|
+
* Re-checks the persisted status first so a concurrent `cancel` is never clobbered.
|
|
769
|
+
*/
|
|
770
|
+
private parkBlocked;
|
|
771
|
+
/** Runs parked `blocked` whose recovery poll is due (`wakeAt <= nowMs`), namespace-scoped like
|
|
772
|
+
* {@link resumeDueTimers}. Re-driving one re-checks the live fleet: it dispatches if a
|
|
773
|
+
* capable+compatible worker has appeared, else re-parks with a fresh `wakeAt` (design §7.5). */
|
|
774
|
+
private dueBlockedRuns;
|
|
655
775
|
private callRemote;
|
|
776
|
+
/**
|
|
777
|
+
* Enqueue a remote step task to its worker group via the transport pool. Shared by the initial
|
|
778
|
+
* dispatch, the opt-in self-heal re-dispatch (see `remoteRedispatchMs`), and the explicit
|
|
779
|
+
* {@link redispatchPending}. Carries the current trace/context so a re-dispatch is traceable.
|
|
780
|
+
*/
|
|
781
|
+
private dispatchRemoteTask;
|
|
656
782
|
/**
|
|
657
783
|
* Complete a durable remote step from its worker result and resume the run — runs on whichever
|
|
658
784
|
* instance receives the result (the dispatching one may be gone), so the run is crash/scale-safe.
|
package/dist/src/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/engine.ts"],"names":[],"mappings":"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"}
|