@adonis-agora/durable 0.49.0 → 0.50.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 +261 -0
- package/README.md +53 -22
- package/dist/assets/spa/assets/index-DupjrK7N.js +16 -0
- package/dist/assets/spa/assets/index-DupjrK7N.js.map +1 -0
- package/dist/assets/spa/index.html +1 -1
- package/dist/commands/durable_worker.d.ts.map +1 -1
- package/dist/commands/durable_worker.js +9 -8
- package/dist/commands/durable_worker.js.map +1 -1
- package/dist/configure.d.ts.map +1 -1
- package/dist/configure.js +1 -0
- package/dist/configure.js.map +1 -1
- package/dist/providers/dashboard_provider.d.ts +2 -0
- package/dist/providers/dashboard_provider.d.ts.map +1 -1
- package/dist/providers/dashboard_provider.js +50 -6
- package/dist/providers/dashboard_provider.js.map +1 -1
- package/dist/providers/durable_provider.d.ts.map +1 -1
- package/dist/providers/durable_provider.js +143 -34
- package/dist/providers/durable_provider.js.map +1 -1
- package/dist/src/admission-redis/redis-admission-backend.d.ts.map +1 -1
- package/dist/src/admission-redis/redis-admission-backend.js +3 -1
- package/dist/src/admission-redis/redis-admission-backend.js.map +1 -1
- package/dist/src/ambient-step.d.ts +24 -0
- package/dist/src/ambient-step.d.ts.map +1 -0
- package/dist/src/ambient-step.js +42 -0
- package/dist/src/ambient-step.js.map +1 -0
- package/dist/src/base-workflow.d.ts +10 -1
- package/dist/src/base-workflow.d.ts.map +1 -1
- package/dist/src/base-workflow.js.map +1 -1
- package/dist/src/codec-state-store.d.ts +28 -2
- package/dist/src/codec-state-store.d.ts.map +1 -1
- package/dist/src/codec-state-store.js +61 -3
- package/dist/src/codec-state-store.js.map +1 -1
- package/dist/src/commands/worker.d.ts +4 -1
- package/dist/src/commands/worker.d.ts.map +1 -1
- package/dist/src/commands/worker.js +27 -3
- package/dist/src/commands/worker.js.map +1 -1
- package/dist/src/config_types.d.ts +6 -0
- package/dist/src/config_types.d.ts.map +1 -1
- package/dist/src/control-plane-redis/redis-control-plane.d.ts.map +1 -1
- package/dist/src/control-plane-redis/redis-control-plane.js +22 -6
- package/dist/src/control-plane-redis/redis-control-plane.js.map +1 -1
- package/dist/src/control-planes/factory.d.ts +6 -0
- package/dist/src/control-planes/factory.d.ts.map +1 -1
- package/dist/src/control-planes/factory.js +1 -0
- package/dist/src/control-planes/factory.js.map +1 -1
- package/dist/src/dashboard/gateway-adapter.d.ts +15 -5
- package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -1
- package/dist/src/dashboard/gateway-adapter.js +71 -7
- package/dist/src/dashboard/gateway-adapter.js.map +1 -1
- package/dist/src/dashboard/handlers.d.ts +53 -1
- package/dist/src/dashboard/handlers.d.ts.map +1 -1
- package/dist/src/dashboard/handlers.js +200 -20
- package/dist/src/dashboard/handlers.js.map +1 -1
- package/dist/src/dashboard/index.d.ts +2 -2
- package/dist/src/dashboard/index.d.ts.map +1 -1
- package/dist/src/dashboard/index.js +2 -2
- package/dist/src/dashboard/index.js.map +1 -1
- package/dist/src/dashboard/openapi.d.ts.map +1 -1
- package/dist/src/dashboard/openapi.js +71 -1
- package/dist/src/dashboard/openapi.js.map +1 -1
- package/dist/src/define_config.d.ts +122 -8
- package/dist/src/define_config.d.ts.map +1 -1
- package/dist/src/define_config.js.map +1 -1
- package/dist/src/diagnostics-bridge.d.ts +16 -3
- package/dist/src/diagnostics-bridge.d.ts.map +1 -1
- package/dist/src/diagnostics-bridge.js +9 -3
- package/dist/src/diagnostics-bridge.js.map +1 -1
- package/dist/src/discovery-roots.d.ts +92 -0
- package/dist/src/discovery-roots.d.ts.map +1 -0
- package/dist/src/discovery-roots.js +150 -0
- package/dist/src/discovery-roots.js.map +1 -0
- package/dist/src/engine.d.ts +418 -20
- package/dist/src/engine.d.ts.map +1 -1
- package/dist/src/engine.js +1523 -159
- package/dist/src/engine.js.map +1 -1
- package/dist/src/entities.d.ts +36 -1
- package/dist/src/entities.d.ts.map +1 -1
- package/dist/src/entities.js +65 -4
- package/dist/src/entities.js.map +1 -1
- package/dist/src/errors.d.ts +36 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +44 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/event-trigger-bridge.d.ts +8 -0
- package/dist/src/event-trigger-bridge.d.ts.map +1 -1
- package/dist/src/event-trigger-bridge.js +24 -3
- package/dist/src/event-trigger-bridge.js.map +1 -1
- package/dist/src/handshake/announced.d.ts +27 -0
- package/dist/src/handshake/announced.d.ts.map +1 -1
- package/dist/src/handshake/announced.js +62 -0
- package/dist/src/handshake/announced.js.map +1 -1
- package/dist/src/handshake/directory.d.ts +92 -0
- package/dist/src/handshake/directory.d.ts.map +1 -0
- package/dist/src/handshake/directory.js +139 -0
- package/dist/src/handshake/directory.js.map +1 -0
- package/dist/src/hooks/barrel-sources.d.ts +28 -0
- package/dist/src/hooks/barrel-sources.d.ts.map +1 -0
- package/dist/src/hooks/barrel-sources.js +92 -0
- package/dist/src/hooks/barrel-sources.js.map +1 -0
- package/dist/src/hooks/steps.d.ts +12 -3
- package/dist/src/hooks/steps.d.ts.map +1 -1
- package/dist/src/hooks/steps.js +7 -11
- package/dist/src/hooks/steps.js.map +1 -1
- package/dist/src/hooks/workflows.d.ts +12 -3
- package/dist/src/hooks/workflows.d.ts.map +1 -1
- package/dist/src/hooks/workflows.js +7 -13
- package/dist/src/hooks/workflows.js.map +1 -1
- package/dist/src/index.d.ts +12 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +12 -3
- package/dist/src/index.js.map +1 -1
- package/dist/src/interfaces.d.ts +309 -21
- package/dist/src/interfaces.d.ts.map +1 -1
- package/dist/src/interfaces.js +10 -0
- package/dist/src/interfaces.js.map +1 -1
- package/dist/src/metrics.d.ts.map +1 -1
- package/dist/src/metrics.js +5 -0
- package/dist/src/metrics.js.map +1 -1
- package/dist/src/namespaces.d.ts +17 -0
- package/dist/src/namespaces.d.ts.map +1 -0
- package/dist/src/namespaces.js +24 -0
- package/dist/src/namespaces.js.map +1 -0
- package/dist/src/otel/durable-metrics.d.ts.map +1 -1
- package/dist/src/otel/durable-metrics.js +5 -0
- 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 +5 -0
- package/dist/src/otel/durable-otel.js.map +1 -1
- package/dist/src/pollers.d.ts +10 -1
- package/dist/src/pollers.d.ts.map +1 -1
- package/dist/src/pollers.js +15 -5
- package/dist/src/pollers.js.map +1 -1
- package/dist/src/protocol.d.ts +12 -0
- package/dist/src/protocol.d.ts.map +1 -1
- package/dist/src/protocol.js +27 -1
- package/dist/src/protocol.js.map +1 -1
- package/dist/src/remote-event.d.ts +6 -0
- package/dist/src/remote-event.d.ts.map +1 -0
- package/dist/src/remote-event.js +19 -0
- package/dist/src/remote-event.js.map +1 -0
- package/dist/src/remote-workflow-executor.d.ts +34 -12
- package/dist/src/remote-workflow-executor.d.ts.map +1 -1
- package/dist/src/remote-workflow-executor.js +42 -40
- package/dist/src/remote-workflow-executor.js.map +1 -1
- package/dist/src/run-detail-summary.d.ts +90 -3
- package/dist/src/run-detail-summary.d.ts.map +1 -1
- package/dist/src/run-detail-summary.js +360 -2
- package/dist/src/run-detail-summary.js.map +1 -1
- package/dist/src/run-facets.d.ts +48 -0
- package/dist/src/run-facets.d.ts.map +1 -0
- package/dist/src/run-facets.js +100 -0
- package/dist/src/run-facets.js.map +1 -0
- package/dist/src/run-gateway/interface.d.ts +27 -1
- package/dist/src/run-gateway/interface.d.ts.map +1 -1
- package/dist/src/run-gateway/proxy-run-gateway.d.ts +32 -4
- package/dist/src/run-gateway/proxy-run-gateway.d.ts.map +1 -1
- package/dist/src/run-gateway/proxy-run-gateway.js +101 -5
- package/dist/src/run-gateway/proxy-run-gateway.js.map +1 -1
- package/dist/src/run-gateway/run-request-responder.d.ts +18 -5
- package/dist/src/run-gateway/run-request-responder.d.ts.map +1 -1
- package/dist/src/run-gateway/run-request-responder.js +155 -32
- package/dist/src/run-gateway/run-request-responder.js.map +1 -1
- package/dist/src/run-gateway/store-run-gateway.d.ts +23 -1
- package/dist/src/run-gateway/store-run-gateway.d.ts.map +1 -1
- package/dist/src/run-gateway/store-run-gateway.js +38 -0
- package/dist/src/run-gateway/store-run-gateway.js.map +1 -1
- package/dist/src/search-attributes-schema.d.ts +44 -0
- package/dist/src/search-attributes-schema.d.ts.map +1 -0
- package/dist/src/search-attributes-schema.js +51 -0
- package/dist/src/search-attributes-schema.js.map +1 -0
- package/dist/src/singleton-admission.d.ts +75 -0
- package/dist/src/singleton-admission.d.ts.map +1 -0
- package/dist/src/singleton-admission.js +156 -0
- package/dist/src/singleton-admission.js.map +1 -0
- package/dist/src/singleton-gate.d.ts +23 -8
- package/dist/src/singleton-gate.d.ts.map +1 -1
- package/dist/src/singleton-gate.js +59 -12
- package/dist/src/singleton-gate.js.map +1 -1
- package/dist/src/standard-schema.d.ts +83 -0
- package/dist/src/standard-schema.d.ts.map +1 -0
- package/dist/src/standard-schema.js +31 -0
- package/dist/src/standard-schema.js.map +1 -0
- package/dist/src/step-discovery.d.ts +21 -11
- package/dist/src/step-discovery.d.ts.map +1 -1
- package/dist/src/step-discovery.js +86 -45
- package/dist/src/step-discovery.js.map +1 -1
- package/dist/src/step-ref.d.ts +38 -12
- package/dist/src/step-ref.d.ts.map +1 -1
- package/dist/src/step-ref.js +5 -13
- package/dist/src/step-ref.js.map +1 -1
- package/dist/src/stores/factory.d.ts +6 -0
- package/dist/src/stores/factory.d.ts.map +1 -1
- package/dist/src/stores/factory.js +4 -1
- package/dist/src/stores/factory.js.map +1 -1
- package/dist/src/stores/lucid-helpers.d.ts +2 -0
- package/dist/src/stores/lucid-helpers.d.ts.map +1 -1
- package/dist/src/stores/lucid-helpers.js +7 -0
- package/dist/src/stores/lucid-helpers.js.map +1 -1
- package/dist/src/stores/lucid-mappers.d.ts +25 -0
- package/dist/src/stores/lucid-mappers.d.ts.map +1 -1
- package/dist/src/stores/lucid-mappers.js +81 -18
- package/dist/src/stores/lucid-mappers.js.map +1 -1
- package/dist/src/stores/lucid-schema.d.ts +59 -1
- package/dist/src/stores/lucid-schema.d.ts.map +1 -1
- package/dist/src/stores/lucid-schema.js +271 -25
- package/dist/src/stores/lucid-schema.js.map +1 -1
- package/dist/src/stores/lucid.d.ts +61 -2
- package/dist/src/stores/lucid.d.ts.map +1 -1
- package/dist/src/stores/lucid.js +346 -41
- package/dist/src/stores/lucid.js.map +1 -1
- package/dist/src/telescope/dashboard.d.ts.map +1 -1
- package/dist/src/telescope/dashboard.js +30 -1
- package/dist/src/telescope/dashboard.js.map +1 -1
- package/dist/src/telescope/data-providers.d.ts +19 -1
- package/dist/src/telescope/data-providers.d.ts.map +1 -1
- package/dist/src/telescope/data-providers.js +119 -3
- package/dist/src/telescope/data-providers.js.map +1 -1
- package/dist/src/telescope/extension.d.ts.map +1 -1
- package/dist/src/telescope/extension.js +2 -1
- package/dist/src/telescope/extension.js.map +1 -1
- package/dist/src/telescope/index.d.ts +1 -1
- package/dist/src/telescope/index.d.ts.map +1 -1
- package/dist/src/telescope/index.js +1 -1
- package/dist/src/telescope/index.js.map +1 -1
- package/dist/src/testing/in-memory-state-store.d.ts +44 -15
- package/dist/src/testing/in-memory-state-store.d.ts.map +1 -1
- package/dist/src/testing/in-memory-state-store.js +204 -41
- package/dist/src/testing/in-memory-state-store.js.map +1 -1
- package/dist/src/testing-kit/checkpoint-aggregation-contract.d.ts +16 -0
- package/dist/src/testing-kit/checkpoint-aggregation-contract.d.ts.map +1 -0
- package/dist/src/testing-kit/checkpoint-aggregation-contract.js +228 -0
- package/dist/src/testing-kit/checkpoint-aggregation-contract.js.map +1 -0
- package/dist/src/testing-kit/state-store-conformance.d.ts.map +1 -1
- package/dist/src/testing-kit/state-store-conformance.js +355 -3
- package/dist/src/testing-kit/state-store-conformance.js.map +1 -1
- package/dist/src/transport-pool.d.ts +15 -1
- package/dist/src/transport-pool.d.ts.map +1 -1
- package/dist/src/transport-pool.js +50 -4
- package/dist/src/transport-pool.js.map +1 -1
- package/dist/src/transports/adaptive-concurrency.d.ts +168 -0
- package/dist/src/transports/adaptive-concurrency.d.ts.map +1 -0
- package/dist/src/transports/adaptive-concurrency.js +353 -0
- package/dist/src/transports/adaptive-concurrency.js.map +1 -0
- package/dist/src/transports/bullmq/adaptive-concurrency.d.ts +1 -143
- package/dist/src/transports/bullmq/adaptive-concurrency.d.ts.map +1 -1
- package/dist/src/transports/bullmq/adaptive-concurrency.js +3 -311
- package/dist/src/transports/bullmq/adaptive-concurrency.js.map +1 -1
- package/dist/src/transports/bullmq/bullmq-transport.d.ts +49 -1
- package/dist/src/transports/bullmq/bullmq-transport.d.ts.map +1 -1
- package/dist/src/transports/bullmq/bullmq-transport.js +330 -38
- package/dist/src/transports/bullmq/bullmq-transport.js.map +1 -1
- package/dist/src/transports/bullmq/deps.d.ts +18 -2
- package/dist/src/transports/bullmq/deps.d.ts.map +1 -1
- package/dist/src/transports/bullmq/deps.js +44 -2
- package/dist/src/transports/bullmq/deps.js.map +1 -1
- package/dist/src/transports/db-helpers.d.ts +39 -0
- package/dist/src/transports/db-helpers.d.ts.map +1 -1
- package/dist/src/transports/db-helpers.js +73 -0
- package/dist/src/transports/db-helpers.js.map +1 -1
- package/dist/src/transports/db-remote.d.ts +53 -0
- package/dist/src/transports/db-remote.d.ts.map +1 -0
- package/dist/src/transports/db-remote.js +147 -0
- package/dist/src/transports/db-remote.js.map +1 -0
- package/dist/src/transports/db-schema.d.ts +44 -1
- package/dist/src/transports/db-schema.d.ts.map +1 -1
- package/dist/src/transports/db-schema.js +227 -88
- package/dist/src/transports/db-schema.js.map +1 -1
- package/dist/src/transports/db.d.ts +189 -6
- package/dist/src/transports/db.d.ts.map +1 -1
- package/dist/src/transports/db.js +1291 -137
- 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 +36 -3
- package/dist/src/transports/event-emitter.js.map +1 -1
- package/dist/src/transports/factory.d.ts +110 -5
- package/dist/src/transports/factory.d.ts.map +1 -1
- package/dist/src/transports/factory.js +56 -9
- package/dist/src/transports/factory.js.map +1 -1
- package/dist/src/transports/queue-mock-adapter.d.ts +7 -2
- package/dist/src/transports/queue-mock-adapter.d.ts.map +1 -1
- package/dist/src/transports/queue-mock-adapter.js +18 -2
- package/dist/src/transports/queue-mock-adapter.js.map +1 -1
- package/dist/src/transports/queue-remote.d.ts +146 -0
- package/dist/src/transports/queue-remote.d.ts.map +1 -0
- package/dist/src/transports/queue-remote.js +398 -0
- package/dist/src/transports/queue-remote.js.map +1 -0
- package/dist/src/transports/queue.d.ts +159 -6
- package/dist/src/transports/queue.d.ts.map +1 -1
- package/dist/src/transports/queue.js +747 -37
- package/dist/src/transports/queue.js.map +1 -1
- package/dist/src/transports/task-failure.d.ts +31 -0
- package/dist/src/transports/task-failure.d.ts.map +1 -0
- package/dist/src/transports/task-failure.js +50 -0
- package/dist/src/transports/task-failure.js.map +1 -0
- package/dist/src/workflow-als.d.ts +1 -1
- package/dist/src/workflow-als.d.ts.map +1 -1
- package/dist/src/workflow-ctx.d.ts +10 -0
- package/dist/src/workflow-ctx.d.ts.map +1 -1
- package/dist/src/workflow-ctx.js +97 -15
- package/dist/src/workflow-ctx.js.map +1 -1
- package/dist/src/workflow-discovery.d.ts +32 -41
- package/dist/src/workflow-discovery.d.ts.map +1 -1
- package/dist/src/workflow-discovery.js +65 -88
- package/dist/src/workflow-discovery.js.map +1 -1
- package/dist/src/workflow-ref.d.ts +24 -0
- package/dist/src/workflow-ref.d.ts.map +1 -1
- package/dist/src/workflow-ref.js.map +1 -1
- package/dist/stubs/config/durable.stub +6 -0
- package/dist/stubs/config/durable_dashboard.stub +7 -3
- package/dist/stubs/database/migrations/create_durable_tables.stub +2 -1
- package/dist/stubs/database/migrations/create_durable_transport_messages.stub +43 -0
- package/dist/stubs/database/migrations/create_durable_transport_tables.stub +12 -9
- package/dist/stubs/database/migrations/create_durable_transport_worker_keys.stub +1 -1
- package/dist/stubs/make/workflow/main.stub +1 -1
- package/package.json +6 -4
- package/skills/durable-cluster/SKILL.md +80 -11
- package/skills/durable-determinism/SKILL.md +11 -5
- package/skills/durable-reliability/SKILL.md +77 -37
- package/skills/durable-setup/SKILL.md +51 -22
- package/skills/durable-transports-stores/SKILL.md +130 -19
- package/skills/durable-workflows/SKILL.md +71 -18
- package/dist/assets/spa/assets/index-DdB9zxuX.js +0 -16
- package/dist/assets/spa/assets/index-DdB9zxuX.js.map +0 -1
package/dist/src/entities.d.ts
CHANGED
|
@@ -20,6 +20,19 @@ export interface EntityHost {
|
|
|
20
20
|
getEvent<T>(runId: string, key: string): Promise<T | undefined>;
|
|
21
21
|
signal(token: string, payload: unknown): Promise<unknown>;
|
|
22
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* What a workflow-side send needs on top of {@link EntityHost}: a durable buffer write it can AWAIT
|
|
25
|
+
* inside its turn, and a way to wake an entity run that is parked on its wait. Optional so a bare
|
|
26
|
+
* {@link EntityHost} (tests, older hosts) still works through {@link Entities.dispatch}.
|
|
27
|
+
*/
|
|
28
|
+
export interface EntityWorkflowHost {
|
|
29
|
+
/** Durably buffer `payload` on `token` (the store's `bufferSignal`). */
|
|
30
|
+
bufferSignal(token: string, payload: unknown): Promise<void>;
|
|
31
|
+
/** If a run is parked on `token`, wake it with `payload`; if none is, do nothing (no buffering). */
|
|
32
|
+
wakeWaiter(token: string, payload: unknown): Promise<unknown>;
|
|
33
|
+
/** Start `runId` of `workflow` if it doesn't exist yet (idempotent by run id). */
|
|
34
|
+
ensureStarted(workflow: string, input: unknown, runId: string): Promise<unknown>;
|
|
35
|
+
}
|
|
23
36
|
/**
|
|
24
37
|
* Durable keyed **entities** (virtual objects): a keyed actor whose handlers run **serialized per
|
|
25
38
|
* key** over **durable state**, exactly once. Each key is one long-lived run (`entity:<name>:<key>`)
|
|
@@ -28,14 +41,36 @@ export interface EntityHost {
|
|
|
28
41
|
*/
|
|
29
42
|
export declare class Entities {
|
|
30
43
|
private readonly host;
|
|
44
|
+
private readonly workflowHost?;
|
|
31
45
|
private readonly configs;
|
|
32
|
-
constructor(host: EntityHost);
|
|
46
|
+
constructor(host: EntityHost, workflowHost?: EntityWorkflowHost | undefined);
|
|
33
47
|
register<S>(name: string, config: EntityConfig<S>): void;
|
|
34
48
|
/** Deliver an op to an entity's runner, starting it on first contact. `reply` (a signal token)
|
|
35
49
|
* receives the handler's result, for `ctx.callEntity`. */
|
|
36
50
|
dispatch(name: string, key: string, op: string, arg: unknown, reply?: string): Promise<{
|
|
37
51
|
runId: string;
|
|
38
52
|
}>;
|
|
53
|
+
/**
|
|
54
|
+
* The durable half of a send from INSIDE a workflow (`ctx.callEntity` / `ctx.signalEntity`): write
|
|
55
|
+
* the op to the entity's signal buffer and return once it is stored, so the caller can checkpoint
|
|
56
|
+
* after it. The op carries `id`, the caller's stable `<runId>:<seq>`, so if the caller dies between
|
|
57
|
+
* this write and its checkpoint and sends again on replay, the entity skips the second copy. The
|
|
58
|
+
* wake-up ({@link kick}) is separate and may be lost: the buffered op is still consumed by the
|
|
59
|
+
* entity's next wait. Falls back to a plain {@link dispatch} on a host without a workflow host.
|
|
60
|
+
*/
|
|
61
|
+
enqueue(name: string, key: string, op: string, arg: unknown, id: string, reply?: string): Promise<boolean>;
|
|
62
|
+
/**
|
|
63
|
+
* Make the entity act on what {@link enqueue} buffered: start its run if it has none, and wake it
|
|
64
|
+
* if it is parked on its wait. A run that is busy needs nothing: its next wait reads the buffer
|
|
65
|
+
* before suspending. The wake carries a no-op `nudge`, never the op itself, so the op stays in
|
|
66
|
+
* the buffer in arrival order and a lost or repeated kick costs at most one empty iteration.
|
|
67
|
+
*/
|
|
68
|
+
kick(name: string, key: string): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* {@link kick} by the entity's run id (`entity:<name>:<key>`), for the lost-wake reconcile. Returns
|
|
71
|
+
* false for a run id that is not an entity's, or an entity this process does not know.
|
|
72
|
+
*/
|
|
73
|
+
kickRunId(runId: string): Promise<boolean>;
|
|
39
74
|
signal(name: string, key: string, op: string, arg?: unknown): Promise<void>;
|
|
40
75
|
getState<S = unknown>(name: string, key: string): Promise<S | undefined>;
|
|
41
76
|
/** The built-in runner: one long-lived run per key, processing ops serially over state. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/entities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD,yFAAyF;AACzF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAEhG,iGAAiG;AACjG,MAAM,WAAW,YAAY,CAAC,CAAC,GAAG,OAAO;IACvC,+CAA+C;IAC/C,YAAY,EAAE,MAAM,CAAC,CAAC;IACtB,sFAAsF;IACtF,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;CAC5C;AAED,4FAA4F;AAC5F,MAAM,WAAW,UAAU;IACzB,QAAQ,CACN,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,EAAE,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GACzD,IAAI,CAAC;IACR,eAAe,CACb,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,KAAK,EAAE,MAAM,EACb,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,GAC3C,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9B,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;IAChE,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3D;
|
|
1
|
+
{"version":3,"file":"entities.d.ts","sourceRoot":"","sources":["../../src/entities.ts"],"names":[],"mappings":"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"}
|
package/dist/src/entities.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { FatalError } from './errors.js';
|
|
2
|
+
const NUDGE = { nudge: true };
|
|
2
3
|
const ENTITY_WORKFLOW = '__entity';
|
|
3
4
|
const entityRunId = (name, key) => `entity:${name}:${key}`;
|
|
4
5
|
/**
|
|
@@ -9,9 +10,11 @@ const entityRunId = (name, key) => `entity:${name}:${key}`;
|
|
|
9
10
|
*/
|
|
10
11
|
export class Entities {
|
|
11
12
|
host;
|
|
13
|
+
workflowHost;
|
|
12
14
|
configs = new Map();
|
|
13
|
-
constructor(host) {
|
|
15
|
+
constructor(host, workflowHost) {
|
|
14
16
|
this.host = host;
|
|
17
|
+
this.workflowHost = workflowHost;
|
|
15
18
|
host.register(ENTITY_WORKFLOW, '1', (ctx, input) => this.run(ctx, input));
|
|
16
19
|
}
|
|
17
20
|
register(name, config) {
|
|
@@ -26,6 +29,52 @@ export class Entities {
|
|
|
26
29
|
payload: { op, arg, reply },
|
|
27
30
|
});
|
|
28
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* The durable half of a send from INSIDE a workflow (`ctx.callEntity` / `ctx.signalEntity`): write
|
|
34
|
+
* the op to the entity's signal buffer and return once it is stored, so the caller can checkpoint
|
|
35
|
+
* after it. The op carries `id`, the caller's stable `<runId>:<seq>`, so if the caller dies between
|
|
36
|
+
* this write and its checkpoint and sends again on replay, the entity skips the second copy. The
|
|
37
|
+
* wake-up ({@link kick}) is separate and may be lost: the buffered op is still consumed by the
|
|
38
|
+
* entity's next wait. Falls back to a plain {@link dispatch} on a host without a workflow host.
|
|
39
|
+
*/
|
|
40
|
+
async enqueue(name, key, op, arg, id, reply) {
|
|
41
|
+
if (!this.workflowHost)
|
|
42
|
+
return false;
|
|
43
|
+
const message = { op, arg, id, ...(reply ? { reply } : {}) };
|
|
44
|
+
await this.workflowHost.bufferSignal(entityRunId(name, key), message);
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Make the entity act on what {@link enqueue} buffered: start its run if it has none, and wake it
|
|
49
|
+
* if it is parked on its wait. A run that is busy needs nothing: its next wait reads the buffer
|
|
50
|
+
* before suspending. The wake carries a no-op `nudge`, never the op itself, so the op stays in
|
|
51
|
+
* the buffer in arrival order and a lost or repeated kick costs at most one empty iteration.
|
|
52
|
+
*/
|
|
53
|
+
async kick(name, key) {
|
|
54
|
+
const host = this.workflowHost;
|
|
55
|
+
if (!host)
|
|
56
|
+
return;
|
|
57
|
+
const runId = entityRunId(name, key);
|
|
58
|
+
await host.ensureStarted(ENTITY_WORKFLOW, { name, key }, runId);
|
|
59
|
+
await host.wakeWaiter(runId, NUDGE);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* {@link kick} by the entity's run id (`entity:<name>:<key>`), for the lost-wake reconcile. Returns
|
|
63
|
+
* false for a run id that is not an entity's, or an entity this process does not know.
|
|
64
|
+
*/
|
|
65
|
+
async kickRunId(runId) {
|
|
66
|
+
if (!runId.startsWith('entity:'))
|
|
67
|
+
return false;
|
|
68
|
+
const rest = runId.slice('entity:'.length);
|
|
69
|
+
const sep = rest.indexOf(':');
|
|
70
|
+
if (sep <= 0)
|
|
71
|
+
return false;
|
|
72
|
+
const name = rest.slice(0, sep);
|
|
73
|
+
if (!this.configs.has(name))
|
|
74
|
+
return false;
|
|
75
|
+
await this.kick(name, rest.slice(sep + 1));
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
29
78
|
async signal(name, key, op, arg) {
|
|
30
79
|
await this.dispatch(name, key, op, arg);
|
|
31
80
|
}
|
|
@@ -40,22 +89,34 @@ export class Entities {
|
|
|
40
89
|
throw new FatalError(`entity "${name}" is not registered`);
|
|
41
90
|
const token = entityRunId(name, key);
|
|
42
91
|
let state = config.initialState();
|
|
92
|
+
// Ids of workflow-side sends already handled. Rebuilt on replay from the recorded messages, so
|
|
93
|
+
// the skip below is deterministic.
|
|
94
|
+
const seen = new Set();
|
|
43
95
|
for (let i = 0;; i += 1) {
|
|
44
96
|
const msg = (await ctx.waitForSignal(token));
|
|
97
|
+
if (msg.nudge)
|
|
98
|
+
continue; // a wake-up only: the op it announced is read from the buffer next
|
|
99
|
+
if (msg.id !== undefined) {
|
|
100
|
+
if (seen.has(msg.id))
|
|
101
|
+
continue; // a re-sent copy of an op already applied: exactly once
|
|
102
|
+
seen.add(msg.id);
|
|
103
|
+
}
|
|
104
|
+
const op = msg.op;
|
|
45
105
|
// Run the handler and snapshot the (possibly mutated) state in ONE checkpoint, so replay
|
|
46
106
|
// restores the state from the checkpoint instead of re-running the handler.
|
|
47
107
|
const out = await ctx.localStep(`op:${i}`, async () => {
|
|
48
|
-
const handler = config.handlers[
|
|
108
|
+
const handler = config.handlers[op];
|
|
49
109
|
if (!handler)
|
|
50
|
-
throw new FatalError(`entity "${name}" has no handler for op "${
|
|
110
|
+
throw new FatalError(`entity "${name}" has no handler for op "${op}"`);
|
|
51
111
|
const result = await handler(state, msg.arg);
|
|
52
112
|
return { result, state };
|
|
53
113
|
});
|
|
54
114
|
state = out.state; // carry state forward (and restore it from the checkpoint on replay)
|
|
55
115
|
await ctx.setEvent('state', state); // publish for getState
|
|
56
116
|
if (msg.reply) {
|
|
117
|
+
const reply = msg.reply;
|
|
57
118
|
await ctx.localStep(`reply:${i}`, async () => {
|
|
58
|
-
await this.host.signal(
|
|
119
|
+
await this.host.signal(reply, out.result);
|
|
59
120
|
});
|
|
60
121
|
}
|
|
61
122
|
}
|
package/dist/src/entities.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/entities.ts"],"names":[],"mappings":"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"}
|
package/dist/src/errors.d.ts
CHANGED
|
@@ -57,6 +57,19 @@ export declare class RemoteStepTimeout extends Error {
|
|
|
57
57
|
readonly timeoutMs: number;
|
|
58
58
|
constructor(stepId: string, timeoutMs: number);
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* Raised when an INLINE remote workflow `advance` (an executor that returns its decision in-process)
|
|
62
|
+
* neither produced a decision nor received a run-scoped heartbeat within the engine's
|
|
63
|
+
* `remoteAdvanceSilenceMs` — the worker is presumed gone. NOT a run failure: the work may have
|
|
64
|
+
* completed and only the decision was lost. The engine releases the run lease and leaves the run
|
|
65
|
+
* `running`, so crash recovery re-drives it (replaying completed steps from history). An executor may
|
|
66
|
+
* throw it too, to ask for the same recovery instead of a failed run.
|
|
67
|
+
*/
|
|
68
|
+
export declare class RemoteWorkflowTimeout extends Error {
|
|
69
|
+
readonly taskId: string;
|
|
70
|
+
readonly timeoutMs: number | undefined;
|
|
71
|
+
constructor(taskId: string, timeoutMs?: number);
|
|
72
|
+
}
|
|
60
73
|
/**
|
|
61
74
|
* Thrown on resume when the workflow code no longer matches the recorded history: the step at a
|
|
62
75
|
* logical position has a different name/kind than the checkpoint saved there. This means the
|
|
@@ -92,6 +105,29 @@ export declare class NestedWorkflowCallError extends FatalError {
|
|
|
92
105
|
readonly step: string;
|
|
93
106
|
constructor(runId: string, primitive: string, step: string);
|
|
94
107
|
}
|
|
108
|
+
/** One Standard Schema issue in JSON-safe form: its message and the dotted-path segments. */
|
|
109
|
+
export interface SchemaIssue {
|
|
110
|
+
message: string;
|
|
111
|
+
path: string[];
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Thrown when a value fails a Standard Schema (zod / valibot / arktype / …) the app declared: a
|
|
115
|
+
* `@Step({ input, output })` schema, a workflow's `inputSchema`, or its typed `searchAttributes`.
|
|
116
|
+
* A `FatalError` (code `schema_validation`), so it is NOT retried — retrying cannot fix a payload
|
|
117
|
+
* that doesn't match its schema. `issues` (also in `details.issues`, so it survives the transport
|
|
118
|
+
* to the run's error / an `onError` handler) lists every issue with a JSON-safe `path`. Route it
|
|
119
|
+
* with `onError: [{ code: SchemaValidationError, workflow: … }]`.
|
|
120
|
+
*/
|
|
121
|
+
export declare class SchemaValidationError extends FatalError {
|
|
122
|
+
static readonly code = "schema_validation";
|
|
123
|
+
readonly issues: SchemaIssue[];
|
|
124
|
+
constructor(label: string, issues: ReadonlyArray<{
|
|
125
|
+
readonly message: string;
|
|
126
|
+
readonly path?: ReadonlyArray<PropertyKey | {
|
|
127
|
+
readonly key: PropertyKey;
|
|
128
|
+
}> | undefined;
|
|
129
|
+
}>);
|
|
130
|
+
}
|
|
95
131
|
/**
|
|
96
132
|
* Thrown by `ctx.all` when one or more parallel child workflows fail. Carries the per-item failures
|
|
97
133
|
* (input index, child run id, error message) and presents an aggregate message summarizing the count
|
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;wFACoF;IACpF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,SAAS;IAC3B,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAK5D;CACF;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,YAAY,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EASvE;CACF;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,YAAY,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAQ/D;CACF;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,YAAY,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAK3C;CACF;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,YAAY,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAK5C;CACF;AAED;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,kFAAkF;IAClF,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,YAAY,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAQzE;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,YAAY,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EASzD;CACF;AAED;;;;;GAKG;AACH,oFAAoF;AACpF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IACvC,YAAY,QAAQ,EAAE,iBAAiB,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,EAMxD;CACF;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,gGAAgG;IAChG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,sFAAsF;IACtF,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IAC/C,qFAAqF;IACrF,QAAQ,CAAC,CAAC,mBAAmB,CAAC,QAAQ;IACtC,YAAY,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,EAOzF;CACF;AAED,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;IAG1B,QAAQ,CAAC,KAAK,EAAE,OAAO;IAFnC,qFAAqF;IACrF,QAAQ,CAAC,CAAC,mBAAmB,CAAC,QAAQ;IACtC,YAAqB,KAAK,EAAE,OAAO,EAGlC;CACF"}
|
|
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;wFACoF;IACpF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,4FAA4F;IAC5F,QAAQ,CAAC,SAAS,SAAS;IAC3B,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAK5D;CACF;AAED;;;;;GAKG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,YAAY,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EASvE;CACF;AAED;;;;;GAKG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,YAAY,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAQ/D;CACF;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,YAAY,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAK3C;CACF;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,YAAY,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAK5C;CACF;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,YAAY,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,EAO7C;CACF;AAED;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,kFAAkF;IAClF,QAAQ,CAAC,IAAI,qBAAqB;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,YAAY,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAQzE;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,uBAAwB,SAAQ,UAAU;IACrD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,YAAY,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EASzD;CACF;AAED,6FAA6F;AAC7F,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,UAAU;IACnD,MAAM,CAAC,QAAQ,CAAC,IAAI,uBAAuB;IAC3C,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAC/B,YACE,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,aAAa,CAAC;QACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,WAAW,GAAG;YAAE,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAA;SAAE,CAAC,GAAG,SAAS,CAAC;KACxF,CAAC,EAkBH;CACF;AAED;;;;;GAKG;AACH,oFAAoF;AACpF,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,CAAC;IACvC,YAAY,QAAQ,EAAE,iBAAiB,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,EAMxD;CACF;AAED,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,gGAAgG;IAChG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IACzC,sFAAsF;IACtF,QAAQ,CAAC,GAAG,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACnC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC;IAC/C,qFAAqF;IACrF,QAAQ,CAAC,CAAC,mBAAmB,CAAC,QAAQ;IACtC,YAAY,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,EAOzF;CACF;AAED,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,OAAO,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,OAAO;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,KAAK;IAG1B,QAAQ,CAAC,KAAK,EAAE,OAAO;IAFnC,qFAAqF;IACrF,QAAQ,CAAC,CAAC,mBAAmB,CAAC,QAAQ;IACtC,YAAqB,KAAK,EAAE,OAAO,EAGlC;CACF"}
|
package/dist/src/errors.js
CHANGED
|
@@ -85,6 +85,24 @@ export class RemoteStepTimeout extends Error {
|
|
|
85
85
|
this.timeoutMs = timeoutMs;
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
+
/**
|
|
89
|
+
* Raised when an INLINE remote workflow `advance` (an executor that returns its decision in-process)
|
|
90
|
+
* neither produced a decision nor received a run-scoped heartbeat within the engine's
|
|
91
|
+
* `remoteAdvanceSilenceMs` — the worker is presumed gone. NOT a run failure: the work may have
|
|
92
|
+
* completed and only the decision was lost. The engine releases the run lease and leaves the run
|
|
93
|
+
* `running`, so crash recovery re-drives it (replaying completed steps from history). An executor may
|
|
94
|
+
* throw it too, to ask for the same recovery instead of a failed run.
|
|
95
|
+
*/
|
|
96
|
+
export class RemoteWorkflowTimeout extends Error {
|
|
97
|
+
taskId;
|
|
98
|
+
timeoutMs;
|
|
99
|
+
constructor(taskId, timeoutMs) {
|
|
100
|
+
super(`remote workflow task ${taskId} produced no decision within ${timeoutMs}ms — presumed lost; re-driving via recovery`);
|
|
101
|
+
this.name = 'RemoteWorkflowTimeout';
|
|
102
|
+
this.taskId = taskId;
|
|
103
|
+
this.timeoutMs = timeoutMs;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
88
106
|
/**
|
|
89
107
|
* Thrown on resume when the workflow code no longer matches the recorded history: the step at a
|
|
90
108
|
* logical position has a different name/kind than the checkpoint saved there. This means the
|
|
@@ -132,6 +150,32 @@ export class NestedWorkflowCallError extends FatalError {
|
|
|
132
150
|
this.step = step;
|
|
133
151
|
}
|
|
134
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Thrown when a value fails a Standard Schema (zod / valibot / arktype / …) the app declared: a
|
|
155
|
+
* `@Step({ input, output })` schema, a workflow's `inputSchema`, or its typed `searchAttributes`.
|
|
156
|
+
* A `FatalError` (code `schema_validation`), so it is NOT retried — retrying cannot fix a payload
|
|
157
|
+
* that doesn't match its schema. `issues` (also in `details.issues`, so it survives the transport
|
|
158
|
+
* to the run's error / an `onError` handler) lists every issue with a JSON-safe `path`. Route it
|
|
159
|
+
* with `onError: [{ code: SchemaValidationError, workflow: … }]`.
|
|
160
|
+
*/
|
|
161
|
+
export class SchemaValidationError extends FatalError {
|
|
162
|
+
static code = 'schema_validation';
|
|
163
|
+
issues;
|
|
164
|
+
constructor(label, issues) {
|
|
165
|
+
const normalized = issues.map((issue) => ({
|
|
166
|
+
message: issue.message,
|
|
167
|
+
path: (issue.path ?? []).map((segment) => String(typeof segment === 'object' && segment !== null ? segment.key : segment)),
|
|
168
|
+
}));
|
|
169
|
+
const summary = normalized
|
|
170
|
+
.map((issue) => `${issue.path.length > 0 ? issue.path.join('.') : '(root)'}: ${issue.message}`)
|
|
171
|
+
.join('; ');
|
|
172
|
+
super(`${label} failed schema validation — ${summary}`, SchemaValidationError.code, {
|
|
173
|
+
issues: normalized,
|
|
174
|
+
});
|
|
175
|
+
this.name = 'SchemaValidationError';
|
|
176
|
+
this.issues = normalized;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
135
179
|
export class GatherError extends Error {
|
|
136
180
|
failures;
|
|
137
181
|
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":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,14 @@ export interface EventTriggerBridgeOptions {
|
|
|
10
10
|
engine: WorkflowEngine;
|
|
11
11
|
/** The AdonisJS app emitter, when resolvable (missing = emitter triggers are inert). */
|
|
12
12
|
emitter?: EmitterLike;
|
|
13
|
+
/**
|
|
14
|
+
* Called when a triggered start or publish fails (an unregistered workflow, a rejected input, a
|
|
15
|
+
* concurrency quota, a store error). Default: a `console.warn`. The bridge always catches, so a
|
|
16
|
+
* failing trigger never becomes an unhandled rejection that could take the process down.
|
|
17
|
+
*/
|
|
18
|
+
onError?: (error: unknown, info: {
|
|
19
|
+
trigger: NormalizedEventTrigger;
|
|
20
|
+
}) => void;
|
|
13
21
|
}
|
|
14
22
|
/**
|
|
15
23
|
* Bridge the event sources a workflow declares via `static on` / `@OnEvent` / `@OnDiagnostic`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-trigger-bridge.d.ts","sourceRoot":"","sources":["../../src/event-trigger-bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAA6B,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAoB9F,2FAA2F;AAC3F,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAChE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;CAClE;AAED,MAAM,WAAW,yBAAyB;IACxC,iDAAiD;IACjD,MAAM,EAAE,cAAc,CAAC;IACvB,wFAAwF;IACxF,OAAO,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"event-trigger-bridge.d.ts","sourceRoot":"","sources":["../../src/event-trigger-bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAA6B,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAoB9F,2FAA2F;AAC3F,MAAM,WAAW,WAAW;IAC1B,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;IAChE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC;CAClE;AAED,MAAM,WAAW,yBAAyB;IACxC,iDAAiD;IACjD,MAAM,EAAE,cAAc,CAAC;IACvB,wFAAwF;IACxF,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;QAAE,OAAO,EAAE,sBAAsB,CAAA;KAAE,KAAK,IAAI,CAAC;CAC/E;AAkCD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,EAC3C,OAAO,EAAE,yBAAyB,GACjC,MAAM,IAAI,CASZ"}
|
|
@@ -5,6 +5,27 @@ const DIAGNOSTICS_REGISTRY_KEY = Symbol.for('@agora/diagnostics:registry');
|
|
|
5
5
|
function diagnosticsRegistry() {
|
|
6
6
|
return globalThis[DIAGNOSTICS_REGISTRY_KEY];
|
|
7
7
|
}
|
|
8
|
+
/** Run a trigger's start/publish, routing a rejection to `onError` (or a warning). */
|
|
9
|
+
function fire(trigger, options, run) {
|
|
10
|
+
const report = (error) => {
|
|
11
|
+
try {
|
|
12
|
+
if (options.onError) {
|
|
13
|
+
options.onError(error, { trigger });
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
/* a throwing reporter must not escape either; fall through to the warning */
|
|
19
|
+
}
|
|
20
|
+
console.warn(`[durable] event trigger for workflow "${trigger.workflow}" (${String(trigger.event)}) failed:`, error);
|
|
21
|
+
};
|
|
22
|
+
try {
|
|
23
|
+
run().catch(report);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
report(error);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
8
29
|
/**
|
|
9
30
|
* Bridge the event sources a workflow declares via `static on` / `@OnEvent` / `@OnDiagnostic`
|
|
10
31
|
* into the engine:
|
|
@@ -39,7 +60,7 @@ function wireEmitter(trigger, options) {
|
|
|
39
60
|
if (!options.emitter)
|
|
40
61
|
return { disposer: () => { } };
|
|
41
62
|
const handler = (payload) => {
|
|
42
|
-
|
|
63
|
+
fire(trigger, options, () => options.engine.publishEvent(trigger.event, payload));
|
|
43
64
|
};
|
|
44
65
|
options.emitter.on(trigger.event, handler);
|
|
45
66
|
return { disposer: () => options.emitter?.off(trigger.event, handler) };
|
|
@@ -57,11 +78,11 @@ function wireDiagnostics(trigger, options) {
|
|
|
57
78
|
if (exact) {
|
|
58
79
|
const name = eventTriggerCanonicalName(trigger);
|
|
59
80
|
if (name !== null)
|
|
60
|
-
|
|
81
|
+
fire(trigger, options, () => options.engine.publishEvent(name, payload));
|
|
61
82
|
}
|
|
62
83
|
else {
|
|
63
84
|
// Regex/any: the concrete name is unknown upfront — start the workflow directly.
|
|
64
|
-
|
|
85
|
+
fire(trigger, options, () => options.engine.start(trigger.workflow, payload, crypto.randomUUID()));
|
|
65
86
|
}
|
|
66
87
|
};
|
|
67
88
|
const subscribeChannel = (name) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"event-trigger-bridge.js","sourceRoot":"","sources":["../../src/event-trigger-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,yBAAyB,EAA+B,MAAM,sBAAsB,CAAC;AAE9F,sGAAsG;AACtG,MAAM,wBAAwB,GAAG,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;AAK3E,SAAS,mBAAmB;IAC1B,OAAQ,UAAsC,CAAC,wBAAwB,CAE1D,CAAC;AAChB,CAAC;
|
|
1
|
+
{"version":3,"file":"event-trigger-bridge.js","sourceRoot":"","sources":["../../src/event-trigger-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -91,4 +91,31 @@ export declare function announcementsOf(raw: RawWorkerDescriptor | WorkerDescrip
|
|
|
91
91
|
* `instances` is a set, so it counts workers, not keys.
|
|
92
92
|
*/
|
|
93
93
|
export declare function aggregateAnnouncements(descriptors: readonly (RawWorkerDescriptor | WorkerDescriptor)[]): AnnouncedWorkflow[];
|
|
94
|
+
/** One live worker heartbeat as {@link observedAnnouncements} reads it: the token and who beats. */
|
|
95
|
+
export interface HeartbeatSighting {
|
|
96
|
+
/** The routing token the beat was published under (already partition-suffixed when partitioned). */
|
|
97
|
+
group: string;
|
|
98
|
+
/** The beating process's instance id. */
|
|
99
|
+
instanceId: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The weaker tier: one `'observed'` entry per live routing token that NO descriptor accounts for —
|
|
103
|
+
* how a worker on an SDK too old to describe itself still appears. `covered` holds every token the
|
|
104
|
+
* declared announcements already explain (see {@link coveredTokens}); those are dropped, so a fleet
|
|
105
|
+
* that describes itself gets exactly the registry it got before, and no worker counts twice.
|
|
106
|
+
*
|
|
107
|
+
* Everything an observation cannot know stays empty rather than guessed: no version (nothing can be
|
|
108
|
+
* pinned against it), no origin, no requires, no runtime. The `name` is the token itself, which
|
|
109
|
+
* equals the workflow name for every name a queue token round-trips (`sanitizeQueueToken` rewrites
|
|
110
|
+
* `:` to `-`, which is not invertible).
|
|
111
|
+
*/
|
|
112
|
+
export declare function observedAnnouncements(heartbeats: readonly HeartbeatSighting[], covered: ReadonlySet<string>): AnnouncedWorkflow[];
|
|
113
|
+
/**
|
|
114
|
+
* Every routing token a live descriptor already accounts for, so it needs no observation: a token
|
|
115
|
+
* some worker announced as a WORKFLOW (already in the registry, richer than an observation), and a
|
|
116
|
+
* token some worker declared as a STEP handler (a step is not callable from outside a run, and
|
|
117
|
+
* route-by-handler gives every step its own queue, so without this the liveness floor would list a
|
|
118
|
+
* fleet's whole step surface as fake workflows). `sanitize` is the queue-token form of a name.
|
|
119
|
+
*/
|
|
120
|
+
export declare function coveredTokens(announced: readonly AnnouncedWorkflow[], descriptors: readonly (RawWorkerDescriptor | WorkerDescriptor)[], sanitize: (name: string) => string): Set<string>;
|
|
94
121
|
//# sourceMappingURL=announced.d.ts.map
|
|
@@ -1 +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"}
|
|
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;AAED,oGAAoG;AACpG,MAAM,WAAW,iBAAiB;IAChC,oGAAoG;IACpG,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,SAAS,iBAAiB,EAAE,EACxC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,GAC3B,iBAAiB,EAAE,CAsBrB;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,SAAS,EAAE,SAAS,iBAAiB,EAAE,EACvC,WAAW,EAAE,SAAS,CAAC,mBAAmB,GAAG,gBAAgB,CAAC,EAAE,EAChE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACjC,GAAG,CAAC,MAAM,CAAC,CAeb"}
|
|
@@ -110,4 +110,66 @@ export function aggregateAnnouncements(descriptors) {
|
|
|
110
110
|
}
|
|
111
111
|
return out.sort((a, b) => a.key.localeCompare(b.key));
|
|
112
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* The weaker tier: one `'observed'` entry per live routing token that NO descriptor accounts for —
|
|
115
|
+
* how a worker on an SDK too old to describe itself still appears. `covered` holds every token the
|
|
116
|
+
* declared announcements already explain (see {@link coveredTokens}); those are dropped, so a fleet
|
|
117
|
+
* that describes itself gets exactly the registry it got before, and no worker counts twice.
|
|
118
|
+
*
|
|
119
|
+
* Everything an observation cannot know stays empty rather than guessed: no version (nothing can be
|
|
120
|
+
* pinned against it), no origin, no requires, no runtime. The `name` is the token itself, which
|
|
121
|
+
* equals the workflow name for every name a queue token round-trips (`sanitizeQueueToken` rewrites
|
|
122
|
+
* `:` to `-`, which is not invertible).
|
|
123
|
+
*/
|
|
124
|
+
export function observedAnnouncements(heartbeats, covered) {
|
|
125
|
+
const byToken = new Map();
|
|
126
|
+
for (const beat of heartbeats) {
|
|
127
|
+
if (!beat.group || covered.has(beat.group))
|
|
128
|
+
continue;
|
|
129
|
+
const instances = byToken.get(beat.group);
|
|
130
|
+
if (instances)
|
|
131
|
+
instances.add(beat.instanceId);
|
|
132
|
+
else
|
|
133
|
+
byToken.set(beat.group, new Set([beat.instanceId]));
|
|
134
|
+
}
|
|
135
|
+
return [...byToken.entries()]
|
|
136
|
+
.map(([group, instances]) => ({
|
|
137
|
+
evidence: 'observed',
|
|
138
|
+
key: group,
|
|
139
|
+
name: group,
|
|
140
|
+
groups: [group],
|
|
141
|
+
origins: [],
|
|
142
|
+
requires: [],
|
|
143
|
+
onError: [],
|
|
144
|
+
runtimes: [],
|
|
145
|
+
instances: [...instances].sort(),
|
|
146
|
+
disagreements: [],
|
|
147
|
+
}))
|
|
148
|
+
.sort((a, b) => a.key.localeCompare(b.key));
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Every routing token a live descriptor already accounts for, so it needs no observation: a token
|
|
152
|
+
* some worker announced as a WORKFLOW (already in the registry, richer than an observation), and a
|
|
153
|
+
* token some worker declared as a STEP handler (a step is not callable from outside a run, and
|
|
154
|
+
* route-by-handler gives every step its own queue, so without this the liveness floor would list a
|
|
155
|
+
* fleet's whole step surface as fake workflows). `sanitize` is the queue-token form of a name.
|
|
156
|
+
*/
|
|
157
|
+
export function coveredTokens(announced, descriptors, sanitize) {
|
|
158
|
+
const tokens = new Set();
|
|
159
|
+
for (const entry of announced) {
|
|
160
|
+
tokens.add(sanitize(entry.name));
|
|
161
|
+
for (const group of entry.groups)
|
|
162
|
+
tokens.add(group);
|
|
163
|
+
}
|
|
164
|
+
for (const raw of descriptors) {
|
|
165
|
+
const d = normalizeDescriptor(raw);
|
|
166
|
+
for (const step of d.steps) {
|
|
167
|
+
const token = sanitize(step);
|
|
168
|
+
tokens.add(token);
|
|
169
|
+
if (d.partition)
|
|
170
|
+
tokens.add(`${token}@${d.partition}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return tokens;
|
|
174
|
+
}
|
|
113
175
|
//# sourceMappingURL=announced.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"announced.js","sourceRoot":"","sources":["../../../src/handshake/announced.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"announced.js","sourceRoot":"","sources":["../../../src/handshake/announced.ts"],"names":[],"mappings":"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"}
|