@lostgradient/weft 0.2.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/LICENSE +21 -0
- package/README.md +493 -0
- package/dist/alerting/alert-manager.d.ts +42 -0
- package/dist/alerting/alert-manager.js +167 -0
- package/dist/alerting/index.d.ts +2 -0
- package/dist/alerting/index.js +1 -0
- package/dist/alerting/sliding-window.d.ts +26 -0
- package/dist/alerting/sliding-window.js +97 -0
- package/dist/alerting/types.d.ts +157 -0
- package/dist/alerting/types.js +0 -0
- package/dist/cli/api-arguments.d.ts +2 -0
- package/dist/cli/api-arguments.js +48 -0
- package/dist/cli/api.d.ts +13 -0
- package/dist/cli/api.js +191 -0
- package/dist/cli/codegen-arguments.d.ts +10 -0
- package/dist/cli/codegen-arguments.js +50 -0
- package/dist/cli/codegen-emit-keywords.d.ts +28 -0
- package/dist/cli/codegen-emit-keywords.js +48 -0
- package/dist/cli/codegen-emit.d.ts +50 -0
- package/dist/cli/codegen-emit.js +280 -0
- package/dist/cli/codegen.d.ts +38 -0
- package/dist/cli/codegen.js +268 -0
- package/dist/cli/command-suggestions.d.ts +9 -0
- package/dist/cli/command-suggestions.js +27 -0
- package/dist/cli/completions.d.ts +17 -0
- package/dist/cli/completions.js +112 -0
- package/dist/cli/conformance.d.ts +9 -0
- package/dist/cli/conformance.js +226 -0
- package/dist/cli/doctor.d.ts +6 -0
- package/dist/cli/doctor.js +9 -0
- package/dist/cli/generated/operation-client.generated.d.ts +605 -0
- package/dist/cli/generated/operation-client.generated.js +60 -0
- package/dist/cli/help-text.d.ts +13 -0
- package/dist/cli/help-text.js +269 -0
- package/dist/cli/index.d.ts +23 -0
- package/dist/cli/index.js +34 -0
- package/dist/cli/json-rpc-client.d.ts +15 -0
- package/dist/cli/json-rpc-client.js +37 -0
- package/dist/cli/noun-verb-arguments.d.ts +15 -0
- package/dist/cli/noun-verb-arguments.js +190 -0
- package/dist/cli/operation-catalog-snapshot.d.ts +38 -0
- package/dist/cli/operation-catalog-snapshot.js +48 -0
- package/dist/cli/operation-client-runtime.d.ts +47 -0
- package/dist/cli/operation-client-runtime.js +33 -0
- package/dist/cli/output.d.ts +66 -0
- package/dist/cli/output.js +83 -0
- package/dist/cli/parse-arguments.d.ts +3 -0
- package/dist/cli/parse-arguments.js +214 -0
- package/dist/cli/parse-schedule-arguments.d.ts +9 -0
- package/dist/cli/parse-schedule-arguments.js +132 -0
- package/dist/cli/schedule.d.ts +3 -0
- package/dist/cli/schedule.js +128 -0
- package/dist/cli/serve-registrations.d.ts +15 -0
- package/dist/cli/serve-registrations.js +23 -0
- package/dist/cli/server-client.d.ts +45 -0
- package/dist/cli/server-client.js +33 -0
- package/dist/cli/server-commands.d.ts +19 -0
- package/dist/cli/server-commands.js +151 -0
- package/dist/cli/storage-backend-arguments.d.ts +15 -0
- package/dist/cli/storage-backend-arguments.js +16 -0
- package/dist/cli/storage-factory.d.ts +8 -0
- package/dist/cli/storage-factory.js +18 -0
- package/dist/cli/subcommand-detection.d.ts +2 -0
- package/dist/cli/subcommand-detection.js +38 -0
- package/dist/cli/tail.d.ts +50 -0
- package/dist/cli/tail.js +161 -0
- package/dist/cli/timeline.d.ts +9 -0
- package/dist/cli/timeline.js +78 -0
- package/dist/cli/types.d.ts +224 -0
- package/dist/cli/types.js +0 -0
- package/dist/cli/utilities.d.ts +9 -0
- package/dist/cli/utilities.js +120 -0
- package/dist/cli/validate.d.ts +6 -0
- package/dist/cli/validate.js +70 -0
- package/dist/cli/version-check.d.ts +7 -0
- package/dist/cli/version-check.js +16 -0
- package/dist/cli/version.d.ts +7 -0
- package/dist/cli/version.js +4 -0
- package/dist/cli/workflow-commands.d.ts +15 -0
- package/dist/cli/workflow-commands.js +195 -0
- package/dist/cli-main.d.ts +2 -0
- package/dist/cli-main.js +402 -0
- package/dist/client/event-stream-transport.d.ts +73 -0
- package/dist/client/event-stream-transport.js +59 -0
- package/dist/client/event-stream.d.ts +90 -0
- package/dist/client/event-stream.js +221 -0
- package/dist/client/event-tail.d.ts +50 -0
- package/dist/client/event-tail.js +0 -0
- package/dist/client/handle-delegation.d.ts +73 -0
- package/dist/client/handle-delegation.js +66 -0
- package/dist/client/http-client-requests.d.ts +65 -0
- package/dist/client/http-client-requests.js +178 -0
- package/dist/client/http-client.d.ts +130 -0
- package/dist/client/http-client.js +217 -0
- package/dist/client/http-handle.d.ts +27 -0
- package/dist/client/http-handle.js +43 -0
- package/dist/client/http-operations.d.ts +29 -0
- package/dist/client/http-operations.js +36 -0
- package/dist/client/http-request.d.ts +101 -0
- package/dist/client/http-request.js +73 -0
- package/dist/client/http-schedule-handle.d.ts +5 -0
- package/dist/client/http-schedule-handle.js +5 -0
- package/dist/client/in-process-operations.d.ts +30 -0
- package/dist/client/in-process-operations.js +17 -0
- package/dist/client/index.d.ts +15 -0
- package/dist/client/index.js +2 -0
- package/dist/client/interface.d.ts +333 -0
- package/dist/client/interface.js +0 -0
- package/dist/client/local-event-tail.d.ts +30 -0
- package/dist/client/local-event-tail.js +131 -0
- package/dist/client/local.d.ts +115 -0
- package/dist/client/local.js +178 -0
- package/dist/client/open-event-subscription.d.ts +33 -0
- package/dist/client/open-event-subscription.js +5 -0
- package/dist/client/schedule-list-search-params.d.ts +3 -0
- package/dist/client/schedule-list-search-params.js +18 -0
- package/dist/client/search-params.d.ts +3 -0
- package/dist/client/search-params.js +54 -0
- package/dist/client/start-body.d.ts +9 -0
- package/dist/client/start-body.js +23 -0
- package/dist/client/workflow-name-typing.d.ts +33 -0
- package/dist/client/workflow-name-typing.js +0 -0
- package/dist/connection.d.ts +121 -0
- package/dist/connection.js +161 -0
- package/dist/core/activity-registry.d.ts +135 -0
- package/dist/core/activity-registry.js +174 -0
- package/dist/core/activity.d.ts +2 -0
- package/dist/core/activity.js +1 -0
- package/dist/core/aggregate-validation.d.ts +85 -0
- package/dist/core/aggregate-validation.js +48 -0
- package/dist/core/atomic-state-events.d.ts +214 -0
- package/dist/core/atomic-state-events.js +39 -0
- package/dist/core/atomic-state.d.ts +79 -0
- package/dist/core/atomic-state.js +231 -0
- package/dist/core/bulk-workflow-filter.d.ts +23 -0
- package/dist/core/bulk-workflow-filter.js +38 -0
- package/dist/core/checkpoint/comparison.d.ts +2 -0
- package/dist/core/checkpoint/comparison.js +137 -0
- package/dist/core/checkpoint/index.d.ts +4 -0
- package/dist/core/checkpoint/index.js +3 -0
- package/dist/core/checkpoint/interfaces.d.ts +11 -0
- package/dist/core/checkpoint/interfaces.js +0 -0
- package/dist/core/checkpoint/lifecycle.d.ts +49 -0
- package/dist/core/checkpoint/lifecycle.js +36 -0
- package/dist/core/checkpoint/serialization.d.ts +31 -0
- package/dist/core/checkpoint/serialization.js +155 -0
- package/dist/core/checkpoint/validation.d.ts +4 -0
- package/dist/core/checkpoint/validation.js +26 -0
- package/dist/core/checkpoint.d.ts +1 -0
- package/dist/core/checkpoint.js +1 -0
- package/dist/core/codec/api.d.ts +32 -0
- package/dist/core/codec/api.js +9 -0
- package/dist/core/codec/extension-codec.d.ts +7 -0
- package/dist/core/codec/extension-codec.js +145 -0
- package/dist/core/codec/index.d.ts +3 -0
- package/dist/core/codec/index.js +2 -0
- package/dist/core/codec/validation.d.ts +28 -0
- package/dist/core/codec/validation.js +139 -0
- package/dist/core/codec-helpers.d.ts +8 -0
- package/dist/core/codec-helpers.js +19 -0
- package/dist/core/codec.d.ts +1 -0
- package/dist/core/codec.js +1 -0
- package/dist/core/compression.d.ts +127 -0
- package/dist/core/compression.js +88 -0
- package/dist/core/concurrency-lock-record.d.ts +122 -0
- package/dist/core/concurrency-lock-record.js +53 -0
- package/dist/core/concurrency.d.ts +221 -0
- package/dist/core/concurrency.js +93 -0
- package/dist/core/constraint.d.ts +144 -0
- package/dist/core/constraint.js +3 -0
- package/dist/core/context/attributes.d.ts +7 -0
- package/dist/core/context/attributes.js +29 -0
- package/dist/core/context/child-workflow-pipe.d.ts +18 -0
- package/dist/core/context/child-workflow-pipe.js +111 -0
- package/dist/core/context/durable-operations.d.ts +29 -0
- package/dist/core/context/durable-operations.js +166 -0
- package/dist/core/context/index.d.ts +114 -0
- package/dist/core/context/index.js +224 -0
- package/dist/core/context/internals.d.ts +30 -0
- package/dist/core/context/internals.js +36 -0
- package/dist/core/context/operation-request.d.ts +160 -0
- package/dist/core/context/operation-request.js +0 -0
- package/dist/core/context/parallel-cache-entry.d.ts +91 -0
- package/dist/core/context/parallel-cache-entry.js +92 -0
- package/dist/core/context/parallel-operations.d.ts +9 -0
- package/dist/core/context/parallel-operations.js +202 -0
- package/dist/core/context/run-operation.d.ts +21 -0
- package/dist/core/context/run-operation.js +231 -0
- package/dist/core/context/saga.d.ts +4 -0
- package/dist/core/context/saga.js +65 -0
- package/dist/core/context/session-state.d.ts +22 -0
- package/dist/core/context/session-state.js +154 -0
- package/dist/core/context/speculate-operations.d.ts +4 -0
- package/dist/core/context/speculate-operations.js +14 -0
- package/dist/core/context/speculative-child.d.ts +6 -0
- package/dist/core/context/speculative-child.js +67 -0
- package/dist/core/context/state-namespace.d.ts +27 -0
- package/dist/core/context/state-namespace.js +138 -0
- package/dist/core/context/types.d.ts +181 -0
- package/dist/core/context/types.js +0 -0
- package/dist/core/context/updates.d.ts +46 -0
- package/dist/core/context/updates.js +21 -0
- package/dist/core/context/validation.d.ts +2 -0
- package/dist/core/context/validation.js +12 -0
- package/dist/core/context.d.ts +1 -0
- package/dist/core/context.js +1 -0
- package/dist/core/debug-output.d.ts +3 -0
- package/dist/core/debug-output.js +112 -0
- package/dist/core/effect-log/index.d.ts +194 -0
- package/dist/core/effect-log/index.js +104 -0
- package/dist/core/engine/activity-reconciliation.d.ts +108 -0
- package/dist/core/engine/activity-reconciliation.js +182 -0
- package/dist/core/engine/aggregate.d.ts +47 -0
- package/dist/core/engine/aggregate.js +132 -0
- package/dist/core/engine/anonymous-signal-sequence.d.ts +4 -0
- package/dist/core/engine/anonymous-signal-sequence.js +101 -0
- package/dist/core/engine/async-activity-completion.d.ts +141 -0
- package/dist/core/engine/async-activity-completion.js +131 -0
- package/dist/core/engine/attributes-tags.d.ts +31 -0
- package/dist/core/engine/attributes-tags.js +178 -0
- package/dist/core/engine/broadcast.d.ts +8 -0
- package/dist/core/engine/broadcast.js +26 -0
- package/dist/core/engine/bulk-operations-purge.d.ts +11 -0
- package/dist/core/engine/bulk-operations-purge.js +246 -0
- package/dist/core/engine/bulk-operations-shared.d.ts +28 -0
- package/dist/core/engine/bulk-operations-shared.js +198 -0
- package/dist/core/engine/bulk-operations.d.ts +21 -0
- package/dist/core/engine/bulk-operations.js +128 -0
- package/dist/core/engine/callback-creators-bundles.d.ts +25 -0
- package/dist/core/engine/callback-creators-bundles.js +154 -0
- package/dist/core/engine/callback-creators-core.d.ts +39 -0
- package/dist/core/engine/callback-creators-core.js +136 -0
- package/dist/core/engine/callback-creators-router-registry.d.ts +4 -0
- package/dist/core/engine/callback-creators-router-registry.js +9 -0
- package/dist/core/engine/callback-creators-router.d.ts +3 -0
- package/dist/core/engine/callback-creators-router.js +68 -0
- package/dist/core/engine/callback-creators-schedule.d.ts +13 -0
- package/dist/core/engine/callback-creators-schedule.js +65 -0
- package/dist/core/engine/callback-creators.d.ts +9 -0
- package/dist/core/engine/callback-creators.js +87 -0
- package/dist/core/engine/cancel-handlers.d.ts +6 -0
- package/dist/core/engine/cancel-handlers.js +32 -0
- package/dist/core/engine/checkpoint-commit-snapshots.d.ts +4 -0
- package/dist/core/engine/checkpoint-commit-snapshots.js +16 -0
- package/dist/core/engine/checkpoint-io.d.ts +34 -0
- package/dist/core/engine/checkpoint-io.js +183 -0
- package/dist/core/engine/checkpoint-reads.d.ts +22 -0
- package/dist/core/engine/checkpoint-reads.js +98 -0
- package/dist/core/engine/child-workflow.d.ts +20 -0
- package/dist/core/engine/child-workflow.js +72 -0
- package/dist/core/engine/completed-review-storage.d.ts +14 -0
- package/dist/core/engine/completed-review-storage.js +61 -0
- package/dist/core/engine/constraints.d.ts +24 -0
- package/dist/core/engine/constraints.js +57 -0
- package/dist/core/engine/construction.d.ts +60 -0
- package/dist/core/engine/construction.js +213 -0
- package/dist/core/engine/disposal.d.ts +9 -0
- package/dist/core/engine/disposal.js +58 -0
- package/dist/core/engine/engine-create-types.d.ts +70 -0
- package/dist/core/engine/engine-create-types.js +0 -0
- package/dist/core/engine/engine-internal-types.d.ts +59 -0
- package/dist/core/engine/engine-internal-types.js +0 -0
- package/dist/core/engine/engine-leak-warnings.d.ts +26 -0
- package/dist/core/engine/engine-leak-warnings.js +42 -0
- package/dist/core/engine/engine-runtime-helpers.d.ts +8 -0
- package/dist/core/engine/engine-runtime-helpers.js +52 -0
- package/dist/core/engine/engine-state-namespace.d.ts +20 -0
- package/dist/core/engine/engine-state-namespace.js +0 -0
- package/dist/core/engine/errors.d.ts +215 -0
- package/dist/core/engine/errors.js +90 -0
- package/dist/core/engine/event-log-compaction.d.ts +102 -0
- package/dist/core/engine/event-log-compaction.js +76 -0
- package/dist/core/engine/guards.d.ts +17 -0
- package/dist/core/engine/guards.js +43 -0
- package/dist/core/engine/handle-iteration.d.ts +2 -0
- package/dist/core/engine/handle-iteration.js +59 -0
- package/dist/core/engine/handle-result.d.ts +8 -0
- package/dist/core/engine/handle-result.js +74 -0
- package/dist/core/engine/handles.d.ts +137 -0
- package/dist/core/engine/handles.js +173 -0
- package/dist/core/engine/index.d.ts +311 -0
- package/dist/core/engine/index.js +595 -0
- package/dist/core/engine/inline-launch-queue.d.ts +17 -0
- package/dist/core/engine/inline-launch-queue.js +93 -0
- package/dist/core/engine/inline-parking.d.ts +26 -0
- package/dist/core/engine/inline-parking.js +86 -0
- package/dist/core/engine/internals.d.ts +167 -0
- package/dist/core/engine/internals.js +11 -0
- package/dist/core/engine/lifecycle/fork-helpers.d.ts +9 -0
- package/dist/core/engine/lifecycle/fork-helpers.js +66 -0
- package/dist/core/engine/lifecycle/persist.d.ts +22 -0
- package/dist/core/engine/lifecycle/persist.js +80 -0
- package/dist/core/engine/lifecycle/resume.d.ts +4 -0
- package/dist/core/engine/lifecycle/resume.js +136 -0
- package/dist/core/engine/lifecycle/shared.d.ts +79 -0
- package/dist/core/engine/lifecycle/shared.js +49 -0
- package/dist/core/engine/lifecycle/start-batch.d.ts +7 -0
- package/dist/core/engine/lifecycle/start-batch.js +70 -0
- package/dist/core/engine/lifecycle/start-exec.d.ts +5 -0
- package/dist/core/engine/lifecycle/start-exec.js +39 -0
- package/dist/core/engine/lifecycle/start.d.ts +13 -0
- package/dist/core/engine/lifecycle/start.js +163 -0
- package/dist/core/engine/lifecycle/transition.d.ts +8 -0
- package/dist/core/engine/lifecycle/transition.js +183 -0
- package/dist/core/engine/lifecycle.d.ts +8 -0
- package/dist/core/engine/lifecycle.js +40 -0
- package/dist/core/engine/list-candidate-resolution.d.ts +15 -0
- package/dist/core/engine/list-candidate-resolution.js +88 -0
- package/dist/core/engine/listing.d.ts +17 -0
- package/dist/core/engine/listing.js +186 -0
- package/dist/core/engine/operations-activity.d.ts +40 -0
- package/dist/core/engine/operations-activity.js +194 -0
- package/dist/core/engine/operations-coordination.d.ts +39 -0
- package/dist/core/engine/operations-coordination.js +162 -0
- package/dist/core/engine/operations-data.d.ts +23 -0
- package/dist/core/engine/operations-data.js +38 -0
- package/dist/core/engine/operations-router.d.ts +75 -0
- package/dist/core/engine/operations-router.js +90 -0
- package/dist/core/engine/operations-speculate.d.ts +16 -0
- package/dist/core/engine/operations-speculate.js +40 -0
- package/dist/core/engine/operations-state.d.ts +16 -0
- package/dist/core/engine/operations-state.js +27 -0
- package/dist/core/engine/operations-stream.d.ts +20 -0
- package/dist/core/engine/operations-stream.js +54 -0
- package/dist/core/engine/operations-time.d.ts +28 -0
- package/dist/core/engine/operations-time.js +167 -0
- package/dist/core/engine/parallel-dispatch.d.ts +92 -0
- package/dist/core/engine/parallel-dispatch.js +45 -0
- package/dist/core/engine/pending-updates.d.ts +18 -0
- package/dist/core/engine/pending-updates.js +109 -0
- package/dist/core/engine/persisted-data-version.d.ts +24 -0
- package/dist/core/engine/persisted-data-version.js +25 -0
- package/dist/core/engine/queries.d.ts +3 -0
- package/dist/core/engine/queries.js +17 -0
- package/dist/core/engine/registration.d.ts +6 -0
- package/dist/core/engine/registration.js +107 -0
- package/dist/core/engine/retention.d.ts +15 -0
- package/dist/core/engine/retention.js +76 -0
- package/dist/core/engine/review-list-entries.d.ts +6 -0
- package/dist/core/engine/review-list-entries.js +117 -0
- package/dist/core/engine/reviews.d.ts +34 -0
- package/dist/core/engine/reviews.js +242 -0
- package/dist/core/engine/schedule-occurrence.d.ts +35 -0
- package/dist/core/engine/schedule-occurrence.js +26 -0
- package/dist/core/engine/schedule-timer.d.ts +4 -0
- package/dist/core/engine/schedule-timer.js +77 -0
- package/dist/core/engine/schedules.d.ts +34 -0
- package/dist/core/engine/schedules.js +204 -0
- package/dist/core/engine/signals.d.ts +40 -0
- package/dist/core/engine/signals.js +185 -0
- package/dist/core/engine/speculative-execution-state.d.ts +8 -0
- package/dist/core/engine/speculative-execution-state.js +26 -0
- package/dist/core/engine/state-utilities.d.ts +62 -0
- package/dist/core/engine/state-utilities.js +306 -0
- package/dist/core/engine/storage-io.d.ts +21 -0
- package/dist/core/engine/storage-io.js +82 -0
- package/dist/core/engine/strategy-helpers.d.ts +27 -0
- package/dist/core/engine/strategy-helpers.js +47 -0
- package/dist/core/engine/stream-chunk-loading.d.ts +5 -0
- package/dist/core/engine/stream-chunk-loading.js +22 -0
- package/dist/core/engine/sub-operation.d.ts +24 -0
- package/dist/core/engine/sub-operation.js +78 -0
- package/dist/core/engine/termination/cleanup.d.ts +67 -0
- package/dist/core/engine/termination/cleanup.js +167 -0
- package/dist/core/engine/termination/complete.d.ts +13 -0
- package/dist/core/engine/termination/complete.js +249 -0
- package/dist/core/engine/termination.d.ts +7 -0
- package/dist/core/engine/termination.js +23 -0
- package/dist/core/engine/updates.d.ts +56 -0
- package/dist/core/engine/updates.js +230 -0
- package/dist/core/engine/validation/schedule.d.ts +38 -0
- package/dist/core/engine/validation/schedule.js +258 -0
- package/dist/core/engine/validation.d.ts +40 -0
- package/dist/core/engine/validation.js +144 -0
- package/dist/core/engine/workflow-feed.d.ts +82 -0
- package/dist/core/engine/workflow-feed.js +96 -0
- package/dist/core/engine/workflow-indexes.d.ts +103 -0
- package/dist/core/engine/workflow-indexes.js +93 -0
- package/dist/core/engine/workflow-state-stream.d.ts +9 -0
- package/dist/core/engine/workflow-state-stream.js +126 -0
- package/dist/core/engine/workflow-visibility-queries.d.ts +40 -0
- package/dist/core/engine/workflow-visibility-queries.js +56 -0
- package/dist/core/engine-helpers.d.ts +56 -0
- package/dist/core/engine-helpers.js +52 -0
- package/dist/core/engine.d.ts +1 -0
- package/dist/core/engine.js +1 -0
- package/dist/core/event-log-shared.d.ts +65 -0
- package/dist/core/event-log-shared.js +31 -0
- package/dist/core/event-log-verify.d.ts +51 -0
- package/dist/core/event-log-verify.js +64 -0
- package/dist/core/event-log.d.ts +112 -0
- package/dist/core/event-log.js +81 -0
- package/dist/core/events/activity-events.d.ts +104 -0
- package/dist/core/events/activity-events.js +63 -0
- package/dist/core/events/attribute-events.d.ts +22 -0
- package/dist/core/events/attribute-events.js +10 -0
- package/dist/core/events/event-map.d.ts +80 -0
- package/dist/core/events/event-map.js +0 -0
- package/dist/core/events/index.d.ts +7 -0
- package/dist/core/events/index.js +7 -0
- package/dist/core/events/signal-events.d.ts +45 -0
- package/dist/core/events/signal-events.js +23 -0
- package/dist/core/events/system-events.d.ts +149 -0
- package/dist/core/events/system-events.js +92 -0
- package/dist/core/events/update-events.d.ts +53 -0
- package/dist/core/events/update-events.js +31 -0
- package/dist/core/events/workflow-events.d.ts +198 -0
- package/dist/core/events/workflow-events.js +91 -0
- package/dist/core/events.d.ts +1 -0
- package/dist/core/events.js +1 -0
- package/dist/core/execution-strategy.d.ts +107 -0
- package/dist/core/execution-strategy.js +0 -0
- package/dist/core/failure-categories.d.ts +18 -0
- package/dist/core/failure-categories.js +70 -0
- package/dist/core/fault-code.d.ts +92 -0
- package/dist/core/fault-code.js +21 -0
- package/dist/core/inline-execution-strategy.d.ts +76 -0
- package/dist/core/inline-execution-strategy.js +264 -0
- package/dist/core/interceptor/activity-composition.d.ts +20 -0
- package/dist/core/interceptor/activity-composition.js +17 -0
- package/dist/core/interceptor/index.d.ts +25 -0
- package/dist/core/interceptor/index.js +8 -0
- package/dist/core/interceptor/interception-contexts.d.ts +200 -0
- package/dist/core/interceptor/interception-contexts.js +0 -0
- package/dist/core/interceptor/interceptor-interfaces.d.ts +149 -0
- package/dist/core/interceptor/interceptor-interfaces.js +9 -0
- package/dist/core/interceptor/split.d.ts +11 -0
- package/dist/core/interceptor/split.js +14 -0
- package/dist/core/interceptor/workflow-composition.d.ts +21 -0
- package/dist/core/interceptor/workflow-composition.js +116 -0
- package/dist/core/interceptor.d.ts +1 -0
- package/dist/core/interceptor.js +1 -0
- package/dist/core/json.d.ts +56 -0
- package/dist/core/json.js +77 -0
- package/dist/core/list-filter-validation.d.ts +78 -0
- package/dist/core/list-filter-validation.js +75 -0
- package/dist/core/payload-size.d.ts +78 -0
- package/dist/core/payload-size.js +27 -0
- package/dist/core/persisted-data-incompatible-error.d.ts +48 -0
- package/dist/core/persisted-data-incompatible-error.js +12 -0
- package/dist/core/registry-snapshot.d.ts +69 -0
- package/dist/core/registry-snapshot.js +70 -0
- package/dist/core/review/events.d.ts +73 -0
- package/dist/core/review/events.js +31 -0
- package/dist/core/review/index.d.ts +265 -0
- package/dist/core/review/index.js +96 -0
- package/dist/core/runtime-workflow-engine.d.ts +16 -0
- package/dist/core/runtime-workflow-engine.js +6 -0
- package/dist/core/schedule/cron-formatter.d.ts +10 -0
- package/dist/core/schedule/cron-formatter.js +103 -0
- package/dist/core/schedule/cron-occurrence.d.ts +3 -0
- package/dist/core/schedule/cron-occurrence.js +129 -0
- package/dist/core/schedule/cron-parser.d.ts +2 -0
- package/dist/core/schedule/cron-parser.js +93 -0
- package/dist/core/schedule/cron-types.d.ts +35 -0
- package/dist/core/schedule/cron-types.js +0 -0
- package/dist/core/schedule/index.d.ts +3 -0
- package/dist/core/schedule/index.js +2 -0
- package/dist/core/schedule/interval-occurrence.d.ts +31 -0
- package/dist/core/schedule/interval-occurrence.js +26 -0
- package/dist/core/schedule.d.ts +1 -0
- package/dist/core/schedule.js +1 -0
- package/dist/core/scheduler/duration.d.ts +44 -0
- package/dist/core/scheduler/duration.js +48 -0
- package/dist/core/scheduler/index.d.ts +4 -0
- package/dist/core/scheduler/index.js +3 -0
- package/dist/core/scheduler/scheduler-class.d.ts +52 -0
- package/dist/core/scheduler/scheduler-class.js +167 -0
- package/dist/core/scheduler/timer-batch.d.ts +10 -0
- package/dist/core/scheduler/timer-batch.js +42 -0
- package/dist/core/scheduler/timer-sources.d.ts +17 -0
- package/dist/core/scheduler/timer-sources.js +61 -0
- package/dist/core/scheduler.d.ts +1 -0
- package/dist/core/scheduler.js +1 -0
- package/dist/core/search-attributes.d.ts +67 -0
- package/dist/core/search-attributes.js +196 -0
- package/dist/core/session-state.d.ts +18 -0
- package/dist/core/session-state.js +71 -0
- package/dist/core/signal-id.d.ts +2 -0
- package/dist/core/signal-id.js +10 -0
- package/dist/core/start-workflow-validation.d.ts +14 -0
- package/dist/core/start-workflow-validation.js +63 -0
- package/dist/core/step-context.d.ts +97 -0
- package/dist/core/step-context.js +113 -0
- package/dist/core/timeouts.d.ts +98 -0
- package/dist/core/timeouts.js +38 -0
- package/dist/core/types/activity.d.ts +316 -0
- package/dist/core/types/activity.js +15 -0
- package/dist/core/types/archive-adapter.d.ts +49 -0
- package/dist/core/types/archive-adapter.js +0 -0
- package/dist/core/types/bulk.d.ts +312 -0
- package/dist/core/types/bulk.js +1 -0
- package/dist/core/types/checkpoint.d.ts +237 -0
- package/dist/core/types/checkpoint.js +12 -0
- package/dist/core/types/clone-plain.d.ts +17 -0
- package/dist/core/types/clone-plain.js +25 -0
- package/dist/core/types/constants.d.ts +54 -0
- package/dist/core/types/constants.js +1 -0
- package/dist/core/types/deep-freeze.d.ts +31 -0
- package/dist/core/types/deep-freeze.js +31 -0
- package/dist/core/types/definition-schema-to-json.d.ts +41 -0
- package/dist/core/types/definition-schema-to-json.js +56 -0
- package/dist/core/types/definition-schema.d.ts +341 -0
- package/dist/core/types/definition-schema.js +45 -0
- package/dist/core/types/history-policy.d.ts +92 -0
- package/dist/core/types/history-policy.js +1 -0
- package/dist/core/types/identity.d.ts +55 -0
- package/dist/core/types/identity.js +0 -0
- package/dist/core/types/message-handles.d.ts +229 -0
- package/dist/core/types/message-handles.js +36 -0
- package/dist/core/types/name-grammar.d.ts +30 -0
- package/dist/core/types/name-grammar.js +9 -0
- package/dist/core/types/options.d.ts +360 -0
- package/dist/core/types/options.js +0 -0
- package/dist/core/types/payload-size-policy.d.ts +47 -0
- package/dist/core/types/payload-size-policy.js +0 -0
- package/dist/core/types/registry-type-helpers.d.ts +1 -0
- package/dist/core/types/registry-type-helpers.js +0 -0
- package/dist/core/types/retry-retention.d.ts +163 -0
- package/dist/core/types/retry-retention.js +6 -0
- package/dist/core/types/reviews.d.ts +170 -0
- package/dist/core/types/reviews.js +0 -0
- package/dist/core/types/schedules.d.ts +176 -0
- package/dist/core/types/schedules.js +3 -0
- package/dist/core/types/search-attributes.d.ts +127 -0
- package/dist/core/types/search-attributes.js +8 -0
- package/dist/core/types/serializer.d.ts +30 -0
- package/dist/core/types/serializer.js +0 -0
- package/dist/core/types/standard-schema-validate.d.ts +113 -0
- package/dist/core/types/standard-schema-validate.js +60 -0
- package/dist/core/types/state.d.ts +261 -0
- package/dist/core/types/state.js +0 -0
- package/dist/core/types/workflow-builder-helpers.d.ts +310 -0
- package/dist/core/types/workflow-builder-helpers.js +0 -0
- package/dist/core/types/workflow-builder-runtime.d.ts +97 -0
- package/dist/core/types/workflow-builder-runtime.js +137 -0
- package/dist/core/types/workflow-builder.d.ts +343 -0
- package/dist/core/types/workflow-builder.js +0 -0
- package/dist/core/types/workflow-context.d.ts +168 -0
- package/dist/core/types/workflow-context.js +0 -0
- package/dist/core/types/workflow-definition.d.ts +61 -0
- package/dist/core/types/workflow-definition.js +0 -0
- package/dist/core/types/workflow-function.d.ts +330 -0
- package/dist/core/types/workflow-function.js +9 -0
- package/dist/core/types/workflow-registries.d.ts +203 -0
- package/dist/core/types/workflow-registries.js +0 -0
- package/dist/core/types/workflow-registry.d.ts +31 -0
- package/dist/core/types/workflow-registry.js +0 -0
- package/dist/core/types.d.ts +26 -0
- package/dist/core/types.js +26 -0
- package/dist/core/updates.d.ts +183 -0
- package/dist/core/updates.js +141 -0
- package/dist/core/versioning.d.ts +153 -0
- package/dist/core/versioning.js +94 -0
- package/dist/core/weft-error.d.ts +82 -0
- package/dist/core/weft-error.js +43 -0
- package/dist/core/worker-checkpoint-resume-state.d.ts +11 -0
- package/dist/core/worker-checkpoint-resume-state.js +40 -0
- package/dist/core/worker-execution-dispatcher.d.ts +42 -0
- package/dist/core/worker-execution-dispatcher.js +95 -0
- package/dist/core/worker-execution-ownership.d.ts +20 -0
- package/dist/core/worker-execution-ownership.js +91 -0
- package/dist/core/worker-execution-strategy-options.d.ts +7 -0
- package/dist/core/worker-execution-strategy-options.js +0 -0
- package/dist/core/worker-execution-strategy.d.ts +29 -0
- package/dist/core/worker-execution-strategy.js +356 -0
- package/dist/core/worker-listener-registry.d.ts +11 -0
- package/dist/core/worker-listener-registry.js +35 -0
- package/dist/core/worker-message-helpers.d.ts +5 -0
- package/dist/core/worker-message-helpers.js +14 -0
- package/dist/core/worker-protocol-guard.d.ts +20 -0
- package/dist/core/worker-protocol-guard.js +69 -0
- package/dist/core/worker-protocol.d.ts +27 -0
- package/dist/core/worker-protocol.js +346 -0
- package/dist/core/worker-turn-watchdog.d.ts +14 -0
- package/dist/core/worker-turn-watchdog.js +40 -0
- package/dist/core/workflow-identifiers.d.ts +1 -0
- package/dist/core/workflow-identifiers.js +19 -0
- package/dist/core/workflow-tags.d.ts +9 -0
- package/dist/core/workflow-tags.js +37 -0
- package/dist/core/workflow-version-tuple.d.ts +67 -0
- package/dist/core/workflow-version-tuple.js +77 -0
- package/dist/diagnostics/doctor.d.ts +30 -0
- package/dist/diagnostics/doctor.js +173 -0
- package/dist/diagnostics/format.d.ts +77 -0
- package/dist/diagnostics/format.js +115 -0
- package/dist/diagnostics/index.d.ts +15 -0
- package/dist/diagnostics/index.js +10 -0
- package/dist/diagnostics/memory-profiler.d.ts +136 -0
- package/dist/diagnostics/memory-profiler.js +93 -0
- package/dist/diagnostics/recommendations.d.ts +37 -0
- package/dist/diagnostics/recommendations.js +116 -0
- package/dist/diagnostics/types.d.ts +178 -0
- package/dist/diagnostics/types.js +9 -0
- package/dist/diagnostics/validate.d.ts +79 -0
- package/dist/diagnostics/validate.js +88 -0
- package/dist/diagnostics/version-check.d.ts +34 -0
- package/dist/diagnostics/version-check.js +61 -0
- package/dist/index.d.ts +109 -0
- package/dist/index.js +182 -0
- package/dist/json-schema.d.ts +55 -0
- package/dist/json-schema.js +4 -0
- package/dist/mcp/access.d.ts +21 -0
- package/dist/mcp/access.js +22 -0
- package/dist/mcp/cli.d.ts +2 -0
- package/dist/mcp/cli.js +72 -0
- package/dist/mcp/dispatcher.d.ts +13 -0
- package/dist/mcp/dispatcher.js +198 -0
- package/dist/mcp/http.d.ts +64 -0
- package/dist/mcp/http.js +272 -0
- package/dist/mcp/index.d.ts +17 -0
- package/dist/mcp/index.js +26 -0
- package/dist/mcp/list-filter.d.ts +10 -0
- package/dist/mcp/list-filter.js +116 -0
- package/dist/mcp/protocol.d.ts +89 -0
- package/dist/mcp/protocol.js +64 -0
- package/dist/mcp/resources.d.ts +40 -0
- package/dist/mcp/resources.js +141 -0
- package/dist/mcp/session.d.ts +138 -0
- package/dist/mcp/session.js +204 -0
- package/dist/mcp/stdio.d.ts +89 -0
- package/dist/mcp/stdio.js +204 -0
- package/dist/mcp/tools.d.ts +27 -0
- package/dist/mcp/tools.js +262 -0
- package/dist/observability/activity-interceptor.d.ts +3 -0
- package/dist/observability/activity-interceptor.js +34 -0
- package/dist/observability/index.d.ts +60 -0
- package/dist/observability/index.js +4 -0
- package/dist/observability/metrics-catalog.d.ts +128 -0
- package/dist/observability/metrics-catalog.js +110 -0
- package/dist/observability/metrics-snapshot.d.ts +106 -0
- package/dist/observability/metrics-snapshot.js +0 -0
- package/dist/observability/metrics.d.ts +156 -0
- package/dist/observability/metrics.js +152 -0
- package/dist/observability/no-op-telemetry.d.ts +168 -0
- package/dist/observability/no-op-telemetry.js +96 -0
- package/dist/observability/propagation.d.ts +121 -0
- package/dist/observability/propagation.js +41 -0
- package/dist/observability/span-helpers.d.ts +50 -0
- package/dist/observability/span-helpers.js +83 -0
- package/dist/observability/types.d.ts +92 -0
- package/dist/observability/types.js +0 -0
- package/dist/observability/workflow-interceptor.d.ts +3 -0
- package/dist/observability/workflow-interceptor.js +106 -0
- package/dist/observability/workflow-lifecycle.d.ts +8 -0
- package/dist/observability/workflow-lifecycle.js +103 -0
- package/dist/runtime/portable.d.ts +119 -0
- package/dist/runtime/portable.js +90 -0
- package/dist/server/api-catalog.d.ts +85 -0
- package/dist/server/api-catalog.js +47 -0
- package/dist/server/asyncapi-channels.d.ts +40 -0
- package/dist/server/asyncapi-channels.js +264 -0
- package/dist/server/asyncapi.d.ts +25 -0
- package/dist/server/asyncapi.js +110 -0
- package/dist/server/attribute-filters.d.ts +37 -0
- package/dist/server/attribute-filters.js +39 -0
- package/dist/server/authentication/api-key.d.ts +3 -0
- package/dist/server/authentication/api-key.js +80 -0
- package/dist/server/authentication/audit.d.ts +116 -0
- package/dist/server/authentication/audit.js +25 -0
- package/dist/server/authentication/crypto.d.ts +7 -0
- package/dist/server/authentication/crypto.js +99 -0
- package/dist/server/authentication/index.d.ts +68 -0
- package/dist/server/authentication/index.js +144 -0
- package/dist/server/authentication/rate-limiter.d.ts +126 -0
- package/dist/server/authentication/rate-limiter.js +61 -0
- package/dist/server/authentication/redaction.d.ts +72 -0
- package/dist/server/authentication/redaction.js +30 -0
- package/dist/server/authentication/rotating-api-key-store.d.ts +107 -0
- package/dist/server/authentication/rotating-api-key-store.js +43 -0
- package/dist/server/authentication/types.d.ts +290 -0
- package/dist/server/authentication/types.js +13 -0
- package/dist/server/authentication.d.ts +1 -0
- package/dist/server/authentication.js +1 -0
- package/dist/server/authorization-scope.d.ts +43 -0
- package/dist/server/authorization-scope.js +53 -0
- package/dist/server/authorization.d.ts +55 -0
- package/dist/server/authorization.js +87 -0
- package/dist/server/deadline-tracker.d.ts +47 -0
- package/dist/server/deadline-tracker.js +106 -0
- package/dist/server/discovery-filter.d.ts +13 -0
- package/dist/server/discovery-filter.js +5 -0
- package/dist/server/discovery-info.d.ts +69 -0
- package/dist/server/discovery-info.js +12 -0
- package/dist/server/engine-event-feed-backend.d.ts +31 -0
- package/dist/server/engine-event-feed-backend.js +36 -0
- package/dist/server/fault-to-http.d.ts +14 -0
- package/dist/server/fault-to-http.js +29 -0
- package/dist/server/fault-to-json-rpc.d.ts +23 -0
- package/dist/server/fault-to-json-rpc.js +60 -0
- package/dist/server/handler/binding-dispatch.d.ts +11 -0
- package/dist/server/handler/binding-dispatch.js +13 -0
- package/dist/server/handler/index.d.ts +31 -0
- package/dist/server/handler/index.js +78 -0
- package/dist/server/handler/response-helpers.d.ts +5 -0
- package/dist/server/handler/response-helpers.js +28 -0
- package/dist/server/handler/route-dispatch.d.ts +144 -0
- package/dist/server/handler/route-dispatch.js +192 -0
- package/dist/server/handler/route-matching.d.ts +55 -0
- package/dist/server/handler/route-matching.js +45 -0
- package/dist/server/handler.d.ts +1 -0
- package/dist/server/handler.js +56 -0
- package/dist/server/index.d.ts +346 -0
- package/dist/server/index.js +64 -0
- package/dist/server/interactive-operations.d.ts +18 -0
- package/dist/server/interactive-operations.js +28 -0
- package/dist/server/json-rpc-dispatch.d.ts +49 -0
- package/dist/server/json-rpc-dispatch.js +92 -0
- package/dist/server/json-rpc-framing.d.ts +42 -0
- package/dist/server/json-rpc-framing.js +15 -0
- package/dist/server/json-rpc-http.d.ts +33 -0
- package/dist/server/json-rpc-http.js +112 -0
- package/dist/server/json-rpc-parse.d.ts +69 -0
- package/dist/server/json-rpc-parse.js +139 -0
- package/dist/server/json-rpc-protocol.d.ts +76 -0
- package/dist/server/json-rpc-protocol.js +27 -0
- package/dist/server/json-rpc-transport-helpers.d.ts +17 -0
- package/dist/server/json-rpc-transport-helpers.js +26 -0
- package/dist/server/json-rpc-websocket-runtime.d.ts +37 -0
- package/dist/server/json-rpc-websocket-runtime.js +51 -0
- package/dist/server/json-rpc-websocket-validation.d.ts +38 -0
- package/dist/server/json-rpc-websocket-validation.js +96 -0
- package/dist/server/json-rpc-websocket.d.ts +60 -0
- package/dist/server/json-rpc-websocket.js +268 -0
- package/dist/server/json-schema-utilities.d.ts +4 -0
- package/dist/server/json-schema-utilities.js +16 -0
- package/dist/server/mcp-discovery.d.ts +57 -0
- package/dist/server/mcp-discovery.js +50 -0
- package/dist/server/openapi-canonical-json.d.ts +10 -0
- package/dist/server/openapi-canonical-json.js +13 -0
- package/dist/server/openapi-error-responses.d.ts +15 -0
- package/dist/server/openapi-error-responses.js +36 -0
- package/dist/server/openapi-schemas.d.ts +17 -0
- package/dist/server/openapi-schemas.js +69 -0
- package/dist/server/openapi.d.ts +48 -0
- package/dist/server/openapi.js +290 -0
- package/dist/server/openrpc-document-schema.d.ts +112 -0
- package/dist/server/openrpc-document-schema.js +65 -0
- package/dist/server/openrpc-errors.d.ts +73 -0
- package/dist/server/openrpc-errors.js +57 -0
- package/dist/server/openrpc.d.ts +53 -0
- package/dist/server/openrpc.js +179 -0
- package/dist/server/operation-catalog/activity-adapter.d.ts +11 -0
- package/dist/server/operation-catalog/activity-adapter.js +9 -0
- package/dist/server/operation-catalog/dispatch-allowlist.d.ts +4 -0
- package/dist/server/operation-catalog/dispatch-allowlist.js +4 -0
- package/dist/server/operation-catalog/dispatch-preparation.d.ts +39 -0
- package/dist/server/operation-catalog/dispatch-preparation.js +52 -0
- package/dist/server/operation-catalog/index.d.ts +22 -0
- package/dist/server/operation-catalog/index.js +17 -0
- package/dist/server/operation-catalog/pipeline-helpers.d.ts +66 -0
- package/dist/server/operation-catalog/pipeline-helpers.js +179 -0
- package/dist/server/operation-catalog/pipeline-stages.d.ts +23 -0
- package/dist/server/operation-catalog/pipeline-stages.js +189 -0
- package/dist/server/operation-catalog/pipeline.d.ts +7 -0
- package/dist/server/operation-catalog/pipeline.js +32 -0
- package/dist/server/operation-catalog/raise-fault.d.ts +32 -0
- package/dist/server/operation-catalog/raise-fault.js +18 -0
- package/dist/server/operation-catalog/registry.d.ts +6 -0
- package/dist/server/operation-catalog/registry.js +93 -0
- package/dist/server/operation-catalog/stream-pipeline.d.ts +25 -0
- package/dist/server/operation-catalog/stream-pipeline.js +122 -0
- package/dist/server/operation-catalog/types.d.ts +246 -0
- package/dist/server/operation-catalog/types.js +9 -0
- package/dist/server/operation-catalog/workflow-adapter.d.ts +55 -0
- package/dist/server/operation-catalog/workflow-adapter.js +85 -0
- package/dist/server/operation-catalog.d.ts +1 -0
- package/dist/server/operation-catalog.js +1 -0
- package/dist/server/operation-fault.d.ts +153 -0
- package/dist/server/operation-fault.js +50 -0
- package/dist/server/operation-registry.d.ts +100 -0
- package/dist/server/operation-registry.js +56 -0
- package/dist/server/operations/add-workflow-tags.d.ts +15 -0
- package/dist/server/operations/add-workflow-tags.js +13 -0
- package/dist/server/operations/aggregate-workflows.d.ts +81 -0
- package/dist/server/operations/aggregate-workflows.js +110 -0
- package/dist/server/operations/async-activity.d.ts +44 -0
- package/dist/server/operations/async-activity.js +134 -0
- package/dist/server/operations/bulk-cancel-workflows.d.ts +7 -0
- package/dist/server/operations/bulk-cancel-workflows.js +64 -0
- package/dist/server/operations/bulk-delete-workflows.d.ts +7 -0
- package/dist/server/operations/bulk-delete-workflows.js +71 -0
- package/dist/server/operations/bulk-filter-helpers.d.ts +62 -0
- package/dist/server/operations/bulk-filter-helpers.js +334 -0
- package/dist/server/operations/bulk-mutate-workflow-tags.d.ts +94 -0
- package/dist/server/operations/bulk-mutate-workflow-tags.js +100 -0
- package/dist/server/operations/bulk-operation-helpers.d.ts +27 -0
- package/dist/server/operations/bulk-operation-helpers.js +29 -0
- package/dist/server/operations/bulk-signal-workflows.d.ts +87 -0
- package/dist/server/operations/bulk-signal-workflows.js +80 -0
- package/dist/server/operations/cancel-schedule.d.ts +13 -0
- package/dist/server/operations/cancel-schedule.js +43 -0
- package/dist/server/operations/cancel-workflow.d.ts +13 -0
- package/dist/server/operations/cancel-workflow.js +34 -0
- package/dist/server/operations/create-schedule.d.ts +29 -0
- package/dist/server/operations/create-schedule.js +116 -0
- package/dist/server/operations/failure-category-filter.d.ts +2 -0
- package/dist/server/operations/failure-category-filter.js +19 -0
- package/dist/server/operations/fork-workflow.d.ts +29 -0
- package/dist/server/operations/fork-workflow.js +88 -0
- package/dist/server/operations/get-checkpoint-at.d.ts +15 -0
- package/dist/server/operations/get-checkpoint-at.js +74 -0
- package/dist/server/operations/get-registry.d.ts +26 -0
- package/dist/server/operations/get-registry.js +56 -0
- package/dist/server/operations/get-retention-overview.d.ts +9 -0
- package/dist/server/operations/get-retention-overview.js +39 -0
- package/dist/server/operations/get-review.d.ts +15 -0
- package/dist/server/operations/get-review.js +57 -0
- package/dist/server/operations/get-schedule.d.ts +20 -0
- package/dist/server/operations/get-schedule.js +48 -0
- package/dist/server/operations/get-stream-chunks.d.ts +19 -0
- package/dist/server/operations/get-stream-chunks.js +71 -0
- package/dist/server/operations/get-system-metrics.d.ts +42 -0
- package/dist/server/operations/get-system-metrics.js +43 -0
- package/dist/server/operations/get-task-diagnostics.d.ts +184 -0
- package/dist/server/operations/get-task-diagnostics.js +340 -0
- package/dist/server/operations/get-update-result.d.ts +18 -0
- package/dist/server/operations/get-update-result.js +55 -0
- package/dist/server/operations/get-workflow-attributes.d.ts +13 -0
- package/dist/server/operations/get-workflow-attributes.js +51 -0
- package/dist/server/operations/get-workflow-events.d.ts +15 -0
- package/dist/server/operations/get-workflow-events.js +51 -0
- package/dist/server/operations/get-workflow-result.d.ts +14 -0
- package/dist/server/operations/get-workflow-result.js +93 -0
- package/dist/server/operations/get-workflow-timeline.d.ts +13 -0
- package/dist/server/operations/get-workflow-timeline.js +51 -0
- package/dist/server/operations/get-workflow.d.ts +36 -0
- package/dist/server/operations/get-workflow.js +49 -0
- package/dist/server/operations/list-checkpoints.d.ts +13 -0
- package/dist/server/operations/list-checkpoints.js +43 -0
- package/dist/server/operations/list-filter-query-extractor.d.ts +23 -0
- package/dist/server/operations/list-filter-query-extractor.js +87 -0
- package/dist/server/operations/list-reviews.d.ts +19 -0
- package/dist/server/operations/list-reviews.js +77 -0
- package/dist/server/operations/list-schedules.d.ts +28 -0
- package/dist/server/operations/list-schedules.js +108 -0
- package/dist/server/operations/list-task-queues.d.ts +71 -0
- package/dist/server/operations/list-task-queues.js +105 -0
- package/dist/server/operations/list-workers.d.ts +56 -0
- package/dist/server/operations/list-workers.js +92 -0
- package/dist/server/operations/list-workflows.d.ts +79 -0
- package/dist/server/operations/list-workflows.js +136 -0
- package/dist/server/operations/operation-helpers.d.ts +21 -0
- package/dist/server/operations/operation-helpers.js +22 -0
- package/dist/server/operations/pause-schedule.d.ts +13 -0
- package/dist/server/operations/pause-schedule.js +43 -0
- package/dist/server/operations/purge-workflows.d.ts +41 -0
- package/dist/server/operations/purge-workflows.js +57 -0
- package/dist/server/operations/query-workflow.d.ts +19 -0
- package/dist/server/operations/query-workflow.js +99 -0
- package/dist/server/operations/recover-all.d.ts +13 -0
- package/dist/server/operations/recover-all.js +65 -0
- package/dist/server/operations/remove-workflow-tags.d.ts +15 -0
- package/dist/server/operations/remove-workflow-tags.js +13 -0
- package/dist/server/operations/replay-workflow.d.ts +28 -0
- package/dist/server/operations/replay-workflow.js +69 -0
- package/dist/server/operations/resume-schedule.d.ts +13 -0
- package/dist/server/operations/resume-schedule.js +43 -0
- package/dist/server/operations/resume-workflow.d.ts +17 -0
- package/dist/server/operations/resume-workflow.js +40 -0
- package/dist/server/operations/schedule-faults.d.ts +14 -0
- package/dist/server/operations/schedule-faults.js +41 -0
- package/dist/server/operations/set-workflow-attributes.d.ts +19 -0
- package/dist/server/operations/set-workflow-attributes.js +67 -0
- package/dist/server/operations/signal-workflow.d.ts +23 -0
- package/dist/server/operations/signal-workflow.js +58 -0
- package/dist/server/operations/single-workflow-control-operation.d.ts +32 -0
- package/dist/server/operations/single-workflow-control-operation.js +44 -0
- package/dist/server/operations/single-workflow-tag-mutation.d.ts +27 -0
- package/dist/server/operations/single-workflow-tag-mutation.js +108 -0
- package/dist/server/operations/sse-stream.d.ts +13 -0
- package/dist/server/operations/sse-stream.js +42 -0
- package/dist/server/operations/start-workflow.d.ts +33 -0
- package/dist/server/operations/start-workflow.js +181 -0
- package/dist/server/operations/storage.d.ts +112 -0
- package/dist/server/operations/storage.js +358 -0
- package/dist/server/operations/stream-workflow-sse.d.ts +17 -0
- package/dist/server/operations/stream-workflow-sse.js +94 -0
- package/dist/server/operations/submit-review-decision.d.ts +25 -0
- package/dist/server/operations/submit-review-decision.js +113 -0
- package/dist/server/operations/timeout-workflow.d.ts +11 -0
- package/dist/server/operations/timeout-workflow.js +34 -0
- package/dist/server/operations/update-schedule.d.ts +15 -0
- package/dist/server/operations/update-schedule.js +60 -0
- package/dist/server/operations/update-workflow.d.ts +27 -0
- package/dist/server/operations/update-workflow.js +109 -0
- package/dist/server/operations/worker-drain.d.ts +69 -0
- package/dist/server/operations/worker-drain.js +214 -0
- package/dist/server/operations/workflow-events-subscription.d.ts +47 -0
- package/dist/server/operations/workflow-events-subscription.js +51 -0
- package/dist/server/principal.d.ts +176 -0
- package/dist/server/principal.js +59 -0
- package/dist/server/rest-binding.d.ts +158 -0
- package/dist/server/rest-binding.js +35 -0
- package/dist/server/rest-bindings.d.ts +76 -0
- package/dist/server/rest-bindings.js +376 -0
- package/dist/server/route-model.d.ts +268 -0
- package/dist/server/route-model.js +166 -0
- package/dist/server/runtime/authentication-bridge.d.ts +22 -0
- package/dist/server/runtime/authentication-bridge.js +194 -0
- package/dist/server/runtime/context.d.ts +73 -0
- package/dist/server/runtime/context.js +0 -0
- package/dist/server/runtime/cors.d.ts +149 -0
- package/dist/server/runtime/cors.js +123 -0
- package/dist/server/runtime/event-broadcasting.d.ts +71 -0
- package/dist/server/runtime/event-broadcasting.js +205 -0
- package/dist/server/runtime/request-gate.d.ts +54 -0
- package/dist/server/runtime/request-gate.js +71 -0
- package/dist/server/runtime/shutdown.d.ts +10 -0
- package/dist/server/runtime/shutdown.js +18 -0
- package/dist/server/runtime/stop-server.d.ts +3 -0
- package/dist/server/runtime/stop-server.js +19 -0
- package/dist/server/runtime/task-dispatch.d.ts +8 -0
- package/dist/server/runtime/task-dispatch.js +157 -0
- package/dist/server/runtime/task-metrics.d.ts +12 -0
- package/dist/server/runtime/task-metrics.js +36 -0
- package/dist/server/runtime/task-polling.d.ts +9 -0
- package/dist/server/runtime/task-polling.js +132 -0
- package/dist/server/runtime/task-reconciliation.d.ts +17 -0
- package/dist/server/runtime/task-reconciliation.js +163 -0
- package/dist/server/runtime/websocket-stream.d.ts +15 -0
- package/dist/server/runtime/websocket-stream.js +79 -0
- package/dist/server/runtime/websocket-upgrade.d.ts +8 -0
- package/dist/server/runtime/websocket-upgrade.js +76 -0
- package/dist/server/runtime/websocket-worker.d.ts +7 -0
- package/dist/server/runtime/websocket-worker.js +224 -0
- package/dist/server/runtime-helpers.d.ts +18 -0
- package/dist/server/runtime-helpers.js +23 -0
- package/dist/server/sequence-cursor.d.ts +5 -0
- package/dist/server/sequence-cursor.js +19 -0
- package/dist/server/serve-internals.d.ts +83 -0
- package/dist/server/serve-internals.js +203 -0
- package/dist/server/stdio-session.d.ts +51 -0
- package/dist/server/stdio-session.js +245 -0
- package/dist/server/task-queue-summary.d.ts +27 -0
- package/dist/server/task-queue-summary.js +34 -0
- package/dist/server/task-queue-types.d.ts +95 -0
- package/dist/server/task-queue-types.js +0 -0
- package/dist/server/task-queue.d.ts +90 -0
- package/dist/server/task-queue.js +247 -0
- package/dist/server/task-resolved-record.d.ts +12 -0
- package/dist/server/task-resolved-record.js +35 -0
- package/dist/server/task-state.d.ts +152 -0
- package/dist/server/task-state.js +178 -0
- package/dist/server/workflow-event-feed.d.ts +166 -0
- package/dist/server/workflow-event-feed.js +193 -0
- package/dist/service-worker/index.d.ts +123 -0
- package/dist/service-worker/index.js +56 -0
- package/dist/service-worker/scheduler.d.ts +37 -0
- package/dist/service-worker/scheduler.js +117 -0
- package/dist/service-worker/setup.d.ts +127 -0
- package/dist/service-worker/setup.js +129 -0
- package/dist/service-worker/shared.d.ts +94 -0
- package/dist/service-worker/shared.js +15 -0
- package/dist/storage/auto.d.ts +45 -0
- package/dist/storage/auto.js +2 -0
- package/dist/storage/bun-sql.d.ts +64 -0
- package/dist/storage/bun-sql.js +575 -0
- package/dist/storage/byte-encoding.d.ts +6 -0
- package/dist/storage/byte-encoding.js +16 -0
- package/dist/storage/capabilities.d.ts +187 -0
- package/dist/storage/capabilities.js +19 -0
- package/dist/storage/compressed-storage.d.ts +45 -0
- package/dist/storage/compressed-storage.js +2 -0
- package/dist/storage/default-scope.d.ts +17 -0
- package/dist/storage/default-scope.js +1 -0
- package/dist/storage/delete-range.d.ts +109 -0
- package/dist/storage/delete-range.js +64 -0
- package/dist/storage/derived-operations.d.ts +53 -0
- package/dist/storage/derived-operations.js +31 -0
- package/dist/storage/http.d.ts +67 -0
- package/dist/storage/http.js +2 -0
- package/dist/storage/index.d.ts +292 -0
- package/dist/storage/index.js +51 -0
- package/dist/storage/indexeddb.d.ts +49 -0
- package/dist/storage/indexeddb.js +1 -0
- package/dist/storage/interface.d.ts +340 -0
- package/dist/storage/interface.js +2 -0
- package/dist/storage/key-prefixes.d.ts +19 -0
- package/dist/storage/key-prefixes.js +35 -0
- package/dist/storage/lmdb.d.ts +40 -0
- package/dist/storage/lmdb.js +2 -0
- package/dist/storage/memory.d.ts +46 -0
- package/dist/storage/memory.js +2 -0
- package/dist/storage/node-sqlite.d.ts +85 -0
- package/dist/storage/node-sqlite.js +323 -0
- package/dist/storage/read-only-query.d.ts +2 -0
- package/dist/storage/read-only-query.js +19 -0
- package/dist/storage/resolve.d.ts +180 -0
- package/dist/storage/resolve.js +2 -0
- package/dist/storage/scoped-storage.d.ts +68 -0
- package/dist/storage/scoped-storage.js +2 -0
- package/dist/storage/sqlite-key-value-queries.d.ts +40 -0
- package/dist/storage/sqlite-key-value-queries.js +64 -0
- package/dist/storage/sqlite.d.ts +31 -0
- package/dist/storage/sqlite.js +0 -0
- package/dist/storage/text-value-import.d.ts +87 -0
- package/dist/storage/text-value-import.js +50 -0
- package/dist/storage/text-value-store.d.ts +171 -0
- package/dist/storage/text-value-store.js +55 -0
- package/dist/storage/turso.d.ts +60 -0
- package/dist/storage/turso.js +5 -0
- package/dist/storage/typed-storage.d.ts +258 -0
- package/dist/storage/typed-storage.js +2 -0
- package/dist/storage/web-extension.d.ts +55 -0
- package/dist/storage/web-extension.js +1 -0
- package/dist/testing/chaos.d.ts +157 -0
- package/dist/testing/chaos.js +69 -0
- package/dist/testing/event-loop.d.ts +4 -0
- package/dist/testing/event-loop.js +21 -0
- package/dist/testing/index.d.ts +126 -0
- package/dist/testing/index.js +61 -0
- package/dist/testing/mocks.d.ts +145 -0
- package/dist/testing/mocks.js +136 -0
- package/dist/testing/subprocess-engine.d.ts +100 -0
- package/dist/testing/subprocess-engine.js +291 -0
- package/dist/testing/test-engine.d.ts +145 -0
- package/dist/testing/test-engine.js +147 -0
- package/dist/testing/time-control.d.ts +59 -0
- package/dist/testing/time-control.js +68 -0
- package/dist/version.d.ts +12 -0
- package/dist/version.js +1 -0
- package/dist/worker/activity-table.d.ts +33 -0
- package/dist/worker/activity-table.js +20 -0
- package/dist/worker/execute-with-interceptors.d.ts +28 -0
- package/dist/worker/execute-with-interceptors.js +21 -0
- package/dist/worker/heartbeat.d.ts +34 -0
- package/dist/worker/heartbeat.js +31 -0
- package/dist/worker/index.d.ts +57 -0
- package/dist/worker/index.js +334 -0
- package/dist/worker/long-poll.d.ts +54 -0
- package/dist/worker/long-poll.js +134 -0
- package/dist/worker/options.d.ts +66 -0
- package/dist/worker/options.js +19 -0
- package/dist/worker/protocol-internals.d.ts +82 -0
- package/dist/worker/protocol-internals.js +56 -0
- package/dist/worker/protocol-messages.d.ts +264 -0
- package/dist/worker/protocol-messages.js +0 -0
- package/dist/worker/protocol-schemas.d.ts +559 -0
- package/dist/worker/protocol-schemas.js +180 -0
- package/dist/worker/protocol-version.d.ts +71 -0
- package/dist/worker/protocol-version.js +1 -0
- package/dist/worker/protocol.d.ts +72 -0
- package/dist/worker/protocol.js +2 -0
- package/dist/worker/registry/fair-share.d.ts +59 -0
- package/dist/worker/registry/fair-share.js +15 -0
- package/dist/worker/registry/routing.d.ts +17 -0
- package/dist/worker/registry/routing.js +16 -0
- package/dist/worker/registry/summary.d.ts +87 -0
- package/dist/worker/registry/summary.js +81 -0
- package/dist/worker/registry/types.d.ts +123 -0
- package/dist/worker/registry/types.js +0 -0
- package/dist/worker/registry.d.ts +94 -0
- package/dist/worker/registry.js +305 -0
- package/dist/worker/remote-activity-context.d.ts +15 -0
- package/dist/worker/remote-activity-context.js +0 -0
- package/dist/worker/task-result-outbox.d.ts +40 -0
- package/dist/worker/task-result-outbox.js +42 -0
- package/dist/worker/worker-protocol-incompatible-error.d.ts +52 -0
- package/dist/worker/worker-protocol-incompatible-error.js +15 -0
- package/dist/worker/workflow-activity-binding.d.ts +96 -0
- package/dist/worker/workflow-activity-binding.js +22 -0
- package/dist/workers/activity-runner.d.ts +87 -0
- package/dist/workers/activity-runner.js +29 -0
- package/dist/workers/activity-worker-dispatcher.d.ts +85 -0
- package/dist/workers/activity-worker-dispatcher.js +68 -0
- package/dist/workers/activity-worker-entry.d.ts +99 -0
- package/dist/workers/activity-worker-entry.js +59 -0
- package/dist/workers/pool.d.ts +83 -0
- package/dist/workers/pool.js +174 -0
- package/dist/workers/workflow-runner.d.ts +79 -0
- package/dist/workers/workflow-runner.js +245 -0
- package/dist/workers/workflow-worker-entry.d.ts +24 -0
- package/dist/workers/workflow-worker-entry.js +70 -0
- package/package.json +297 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { WeftError } from "../core/weft-error.js";
|
|
2
|
+
export function workerProtocolIncompatibleMessage(versions) {
|
|
3
|
+
const receivedDisplay = versions.received === void 0 ? "unknown" : String(versions.received);
|
|
4
|
+
return `This server requires Weft worker protocol v${String(versions.expected)}; got v${receivedDisplay}. Upgrade the worker SDK to use qualified activity names (workflowType.activityName).`;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export class WorkerProtocolIncompatibleError extends WeftError {
|
|
8
|
+
expectedProtocolVersion;
|
|
9
|
+
receivedProtocolVersion;
|
|
10
|
+
constructor(versions) {
|
|
11
|
+
super("WorkerProtocolIncompatibleError", workerProtocolIncompatibleMessage(versions));
|
|
12
|
+
this.expectedProtocolVersion = versions.expected;
|
|
13
|
+
this.receivedProtocolVersion = versions.received;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker-side helper that turns a `workflows` map into the qualified-name
|
|
3
|
+
* activity table the RemoteWorker advertises and dispatches against.
|
|
4
|
+
*
|
|
5
|
+
* Protocol v2 (Phase 4) shifted activity advertisements from bare activity
|
|
6
|
+
* names to `${workflowType}.${activityName}` qualified names. This module owns
|
|
7
|
+
* the worker-side normalization:
|
|
8
|
+
*
|
|
9
|
+
* - the outer map key is canonical — if `workflow.name` disagrees with the
|
|
10
|
+
* key, throw immediately (same rule as the engine-side `Engine.create({
|
|
11
|
+
* workflows })`).
|
|
12
|
+
* - workflow names and activity keys are validated through the shared
|
|
13
|
+
* `validateWorkflowOrActivityName` helper so a `.` in either name is
|
|
14
|
+
* rejected at construction time, not in the middle of a task dispatch.
|
|
15
|
+
* - the resulting table keys every activity under
|
|
16
|
+
* `${workflowType}.${activityName}`, which is exactly the string the
|
|
17
|
+
* server matches against the `RegisterMessage.activities` array.
|
|
18
|
+
*
|
|
19
|
+
* Bare function activities and `{ execute }` objects are both accepted, matching
|
|
20
|
+
* the engine-side `activities()` builder contract.
|
|
21
|
+
*
|
|
22
|
+
* @module worker/workflow-activity-binding
|
|
23
|
+
*/
|
|
24
|
+
import type { RemoteActivityContext } from './remote-activity-context.ts';
|
|
25
|
+
/**
|
|
26
|
+
* An activity implementation accepted by the worker-side `workflows` map.
|
|
27
|
+
*
|
|
28
|
+
* Returns a `Promise<unknown>` to match `executeWithInterceptors`. Sync
|
|
29
|
+
* activities can return `Promise.resolve(...)` or be declared `async`.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```ts
|
|
33
|
+
* import type { RemoteWorkerActivityFunction } from '@lostgradient/weft';
|
|
34
|
+
*
|
|
35
|
+
* const formatGreeting: RemoteWorkerActivityFunction = async (input) =>
|
|
36
|
+
* `hi ${String((input as { name: string }).name)}`;
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
export type RemoteWorkerActivityFunction = (input: unknown, context?: RemoteActivityContext) => Promise<unknown>;
|
|
40
|
+
/**
|
|
41
|
+
* Either a bare function or an `{ execute }` object — same shape the engine
|
|
42
|
+
* accepts when normalising a builder's `.activities({ ... })` map.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```ts
|
|
46
|
+
* import type { RemoteWorkerActivityImplementation } from '@lostgradient/weft';
|
|
47
|
+
*
|
|
48
|
+
* const bare: RemoteWorkerActivityImplementation = async () => 'a';
|
|
49
|
+
* const shaped: RemoteWorkerActivityImplementation = { execute: async () => 'b' };
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export type RemoteWorkerActivityImplementation = RemoteWorkerActivityFunction | {
|
|
53
|
+
execute: RemoteWorkerActivityFunction;
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Minimal workflow shape the worker SDK consumes from a `workflows` map. Only
|
|
57
|
+
* `name` and `activities` are read; the rest of the engine-side definition is
|
|
58
|
+
* irrelevant to dispatch.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* import type { RemoteWorkerWorkflowDefinition } from '@lostgradient/weft';
|
|
63
|
+
*
|
|
64
|
+
* const welcome: RemoteWorkerWorkflowDefinition = {
|
|
65
|
+
* name: 'welcome',
|
|
66
|
+
* activities: { formatGreeting: async () => 'hi' },
|
|
67
|
+
* };
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export type RemoteWorkerWorkflowDefinition = {
|
|
71
|
+
name: string;
|
|
72
|
+
activities: Record<string, RemoteWorkerActivityImplementation>;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Build a flat `qualifiedName → executor` table from a `workflows` map.
|
|
76
|
+
*
|
|
77
|
+
* Throws if any workflow's `name` disagrees with the outer key, or if any
|
|
78
|
+
* workflow/activity name fails the wire-safe grammar.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* import { buildQualifiedActivityTable } from '@lostgradient/weft';
|
|
83
|
+
*
|
|
84
|
+
* const table = buildQualifiedActivityTable({
|
|
85
|
+
* welcome: {
|
|
86
|
+
* name: 'welcome',
|
|
87
|
+
* activities: {
|
|
88
|
+
* formatGreeting: async (input) =>
|
|
89
|
+
* `hi ${String((input as { name: string }).name)}`,
|
|
90
|
+
* },
|
|
91
|
+
* },
|
|
92
|
+
* });
|
|
93
|
+
* // table['welcome.formatGreeting'] is the bound executor.
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export declare function buildQualifiedActivityTable(workflows: Record<string, RemoteWorkerWorkflowDefinition>): Record<string, RemoteWorkerActivityFunction>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { validateWorkflowOrActivityName } from "../core/types/name-grammar.js";
|
|
2
|
+
export function buildQualifiedActivityTable(workflows) {
|
|
3
|
+
const table = {};
|
|
4
|
+
for (const [key, workflow] of Object.entries(workflows)) {
|
|
5
|
+
if (workflow.name !== key)
|
|
6
|
+
throw Error(`Worker workflow map key "${key}" does not match workflow.name "${workflow.name}"`);
|
|
7
|
+
validateWorkflowOrActivityName(key, "workflow");
|
|
8
|
+
for (const [activityKey, implementation] of Object.entries(workflow.activities)) {
|
|
9
|
+
validateWorkflowOrActivityName(activityKey, "activity");
|
|
10
|
+
const qualifiedName = `${key}.${activityKey}`;
|
|
11
|
+
table[qualifiedName] = resolveActivityExecutor(implementation, qualifiedName);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return table;
|
|
15
|
+
}
|
|
16
|
+
function resolveActivityExecutor(implementation, qualifiedName) {
|
|
17
|
+
if (typeof implementation === "function")
|
|
18
|
+
return implementation;
|
|
19
|
+
if (implementation === null || typeof implementation !== "object" || typeof implementation.execute !== "function")
|
|
20
|
+
throw TypeError(`Activity "${qualifiedName}" must be a function or an object with a callable "execute" method`);
|
|
21
|
+
return implementation.execute;
|
|
22
|
+
}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request payload sent to a Web Worker (or passed to {@link executeActivity})
|
|
3
|
+
* describing a single activity execution.
|
|
4
|
+
*
|
|
5
|
+
* Generated by the worker dispatcher and consumed by the activity runner
|
|
6
|
+
* inside the worker. Callers do not normally construct this directly — it is
|
|
7
|
+
* built by the engine's task-dispatch path.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { executeActivity, type ActivityExecutionRequest } from '@lostgradient/weft';
|
|
12
|
+
*
|
|
13
|
+
* const request: ActivityExecutionRequest = {
|
|
14
|
+
* operationId: crypto.randomUUID(),
|
|
15
|
+
* activityName: 'sendEmail',
|
|
16
|
+
* input: { to: 'user@example.com' },
|
|
17
|
+
* attempt: 1,
|
|
18
|
+
* };
|
|
19
|
+
* const result = await executeActivity(request, async (input) => {
|
|
20
|
+
* return `sent to ${(input as { to: string }).to}`;
|
|
21
|
+
* });
|
|
22
|
+
* console.log(result.status); // 'completed'
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export interface ActivityExecutionRequest {
|
|
26
|
+
operationId: string;
|
|
27
|
+
activityName: string;
|
|
28
|
+
input: unknown;
|
|
29
|
+
attempt: number;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Result payload returned by {@link executeActivity} and posted back by the
|
|
33
|
+
* Web Worker after activity execution.
|
|
34
|
+
*
|
|
35
|
+
* Check `status` first: `'completed'` means `value` holds the return value;
|
|
36
|
+
* `'failed'` means `error` holds a human-readable failure message. The
|
|
37
|
+
* `operationId` mirrors the request so the dispatcher can match results.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* import { executeActivity, type ActivityExecutionResult } from '@lostgradient/weft';
|
|
42
|
+
*
|
|
43
|
+
* const result: ActivityExecutionResult = await executeActivity(
|
|
44
|
+
* { operationId: 'op-1', activityName: 'add', input: [1, 2], attempt: 1 },
|
|
45
|
+
* async (input) => (input as number[])[0]! + (input as number[])[1]!,
|
|
46
|
+
* );
|
|
47
|
+
*
|
|
48
|
+
* if (result.status === 'completed') {
|
|
49
|
+
* console.log(result.value); // 3
|
|
50
|
+
* }
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export interface ActivityExecutionResult {
|
|
54
|
+
operationId: string;
|
|
55
|
+
status: 'completed' | 'failed';
|
|
56
|
+
value?: unknown;
|
|
57
|
+
error?: string;
|
|
58
|
+
/** Error constructor name used by retry classification and diagnostics. */
|
|
59
|
+
errorName?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Executes an activity function with structured error handling and optional
|
|
63
|
+
* abort-signal support.
|
|
64
|
+
*
|
|
65
|
+
* Returns a resolved {@link ActivityExecutionResult} regardless of whether the
|
|
66
|
+
* function throws — failures are caught and returned as `{ status: 'failed' }`.
|
|
67
|
+
* If `signal` is already aborted before execution begins, the function is
|
|
68
|
+
* skipped and a failed result is returned immediately.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* import { executeActivity } from '@lostgradient/weft';
|
|
73
|
+
*
|
|
74
|
+
* const result = await executeActivity(
|
|
75
|
+
* {
|
|
76
|
+
* operationId: 'op-abc',
|
|
77
|
+
* activityName: 'greet',
|
|
78
|
+
* input: { name: 'World' },
|
|
79
|
+
* attempt: 1,
|
|
80
|
+
* },
|
|
81
|
+
* async (input) => `Hello, ${(input as { name: string }).name}!`,
|
|
82
|
+
* );
|
|
83
|
+
* console.log(result.status); // 'completed'
|
|
84
|
+
* console.log(result.value); // 'Hello, World!'
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare function executeActivity(request: ActivityExecutionRequest, activityFunction: (...arguments_: unknown[]) => unknown, signal?: AbortSignal): Promise<ActivityExecutionResult>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export async function executeActivity(request, activityFunction, signal) {
|
|
2
|
+
if (signal?.aborted)
|
|
3
|
+
return {
|
|
4
|
+
operationId: request.operationId,
|
|
5
|
+
status: "failed",
|
|
6
|
+
error: `Activity "${request.activityName}" aborted before execution`,
|
|
7
|
+
errorName: "AbortError"
|
|
8
|
+
};
|
|
9
|
+
try {
|
|
10
|
+
const result = await activityFunction(request.input);
|
|
11
|
+
return {
|
|
12
|
+
operationId: request.operationId,
|
|
13
|
+
status: "completed",
|
|
14
|
+
value: result
|
|
15
|
+
};
|
|
16
|
+
} catch (error) {
|
|
17
|
+
return {
|
|
18
|
+
operationId: request.operationId,
|
|
19
|
+
status: "failed",
|
|
20
|
+
error: `Activity "${request.activityName}" failed (attempt ${request.attempt}): ${formatError(error)}`,
|
|
21
|
+
...error instanceof Error ? { errorName: error.name } : {}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function formatError(error) {
|
|
26
|
+
if (error instanceof Error)
|
|
27
|
+
return error.message;
|
|
28
|
+
return String(error);
|
|
29
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dispatches activity execution requests to a pool of Web Workers.
|
|
3
|
+
*
|
|
4
|
+
* Wraps {@link WorkerPool} with a request-response pattern: acquire a worker,
|
|
5
|
+
* post the activity request, wait for the result, and release the worker.
|
|
6
|
+
*
|
|
7
|
+
* @module workers/activity-worker-dispatcher
|
|
8
|
+
*/
|
|
9
|
+
import type { ActivityExecutionRequest, ActivityExecutionResult } from './activity-runner.ts';
|
|
10
|
+
import type { WorkerPool } from './pool.ts';
|
|
11
|
+
/**
|
|
12
|
+
* Options for {@link ActivityWorkerDispatcher}.
|
|
13
|
+
*
|
|
14
|
+
* Currently the only option is `timeoutMilliseconds`, which controls how long
|
|
15
|
+
* the dispatcher waits for a worker to respond before treating the task as
|
|
16
|
+
* failed and terminating the worker.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { ActivityWorkerDispatcher, WorkerPool, type ActivityWorkerDispatcherOptions } from '@lostgradient/weft';
|
|
21
|
+
*
|
|
22
|
+
* const options: ActivityWorkerDispatcherOptions = {
|
|
23
|
+
* timeoutMilliseconds: 60_000,
|
|
24
|
+
* };
|
|
25
|
+
* const pool = new WorkerPool({ concurrency: 4, workerUrl: './worker.ts' });
|
|
26
|
+
* using dispatcher = new ActivityWorkerDispatcher(pool, options);
|
|
27
|
+
* void dispatcher;
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
export type ActivityWorkerDispatcherOptions = {
|
|
31
|
+
/** Maximum time in milliseconds to wait for a worker to respond before
|
|
32
|
+
* rejecting and terminating the worker. Default: 30 000 (30 seconds). */
|
|
33
|
+
timeoutMilliseconds?: number;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Dispatches activity execution requests to a pool of Web Workers and awaits
|
|
37
|
+
* their results, implementing a request-response pattern over the Worker
|
|
38
|
+
* message protocol.
|
|
39
|
+
*
|
|
40
|
+
* Acquires a worker from the {@link WorkerPool}, posts the
|
|
41
|
+
* {@link ActivityExecutionRequest}, waits for the matching
|
|
42
|
+
* {@link ActivityExecutionResult}, then releases the worker back to the pool.
|
|
43
|
+
* If no response arrives within the configured timeout, the task fails and the
|
|
44
|
+
* worker is terminated.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```ts
|
|
48
|
+
* import { ActivityWorkerDispatcher, WorkerPool } from '@lostgradient/weft';
|
|
49
|
+
*
|
|
50
|
+
* const pool = new WorkerPool({
|
|
51
|
+
* concurrency: 4,
|
|
52
|
+
* workerUrl: new URL('./my-worker.ts', import.meta.url),
|
|
53
|
+
* });
|
|
54
|
+
* using dispatcher = new ActivityWorkerDispatcher(pool, { timeoutMilliseconds: 30_000 });
|
|
55
|
+
*
|
|
56
|
+
* const result = await dispatcher.execute({
|
|
57
|
+
* operationId: crypto.randomUUID(),
|
|
58
|
+
* activityName: 'processImage',
|
|
59
|
+
* input: { url: 'https://example.com/img.png' },
|
|
60
|
+
* attempt: 1,
|
|
61
|
+
* });
|
|
62
|
+
* console.log(result.status); // 'completed' or 'failed'
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export declare class ActivityWorkerDispatcher implements Disposable, AsyncDisposable {
|
|
66
|
+
#private;
|
|
67
|
+
constructor(pool: WorkerPool, options?: ActivityWorkerDispatcherOptions);
|
|
68
|
+
/**
|
|
69
|
+
* Dispatch an activity execution request to a worker and wait for the result.
|
|
70
|
+
* Acquires a worker from the pool, sends the request, waits for a matching
|
|
71
|
+
* response, then releases the worker back to the pool.
|
|
72
|
+
*
|
|
73
|
+
* If the worker does not respond within the configured timeout, the promise
|
|
74
|
+
* resolves with a `failed` result and the worker is terminated.
|
|
75
|
+
*/
|
|
76
|
+
execute(request: ActivityExecutionRequest): Promise<ActivityExecutionResult>;
|
|
77
|
+
/** Get the number of available workers. */
|
|
78
|
+
get availableCount(): number;
|
|
79
|
+
/** Get the total number of workers in the pool. */
|
|
80
|
+
get totalCount(): number;
|
|
81
|
+
/** Get the number of pending dispatch requests. */
|
|
82
|
+
get pendingCount(): number;
|
|
83
|
+
[Symbol.dispose](): void;
|
|
84
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
85
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
const DEFAULT_WORKER_TIMEOUT_MILLISECONDS = 30000;
|
|
2
|
+
|
|
3
|
+
export class ActivityWorkerDispatcher {
|
|
4
|
+
#pool;
|
|
5
|
+
#timeoutMilliseconds;
|
|
6
|
+
constructor(pool, options) {
|
|
7
|
+
this.#pool = pool;
|
|
8
|
+
this.#timeoutMilliseconds = options?.timeoutMilliseconds ?? DEFAULT_WORKER_TIMEOUT_MILLISECONDS;
|
|
9
|
+
}
|
|
10
|
+
async execute(request) {
|
|
11
|
+
const worker = await this.#pool.acquire();
|
|
12
|
+
let terminated = !1;
|
|
13
|
+
try {
|
|
14
|
+
return await new Promise((resolve) => {
|
|
15
|
+
let settled = !1;
|
|
16
|
+
const settle = (result) => {
|
|
17
|
+
if (settled)
|
|
18
|
+
return;
|
|
19
|
+
settled = !0;
|
|
20
|
+
cleanup();
|
|
21
|
+
resolve(result);
|
|
22
|
+
}, onMessage = (event) => {
|
|
23
|
+
if (event.data.operationId === request.operationId)
|
|
24
|
+
settle(event.data);
|
|
25
|
+
}, onError = (event) => {
|
|
26
|
+
settle({
|
|
27
|
+
operationId: request.operationId,
|
|
28
|
+
status: "failed",
|
|
29
|
+
error: `Activity worker crashed: ${event.message ?? "unknown error"}`
|
|
30
|
+
});
|
|
31
|
+
}, timer = setTimeout(() => {
|
|
32
|
+
settle({
|
|
33
|
+
operationId: request.operationId,
|
|
34
|
+
status: "failed",
|
|
35
|
+
error: `Activity "${request.activityName}" timed out after ${this.#timeoutMilliseconds}ms (operationId: ${request.operationId})`
|
|
36
|
+
});
|
|
37
|
+
terminated = !0;
|
|
38
|
+
worker.terminate();
|
|
39
|
+
}, this.#timeoutMilliseconds), cleanup = () => {
|
|
40
|
+
clearTimeout(timer);
|
|
41
|
+
worker.removeEventListener("message", onMessage);
|
|
42
|
+
worker.removeEventListener("error", onError);
|
|
43
|
+
};
|
|
44
|
+
worker.addEventListener("message", onMessage);
|
|
45
|
+
worker.addEventListener("error", onError);
|
|
46
|
+
worker.postMessage(request);
|
|
47
|
+
});
|
|
48
|
+
} finally {
|
|
49
|
+
if (!terminated)
|
|
50
|
+
this.#pool.release(worker);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
get availableCount() {
|
|
54
|
+
return this.#pool.availableCount;
|
|
55
|
+
}
|
|
56
|
+
get totalCount() {
|
|
57
|
+
return this.#pool.totalCount;
|
|
58
|
+
}
|
|
59
|
+
get pendingCount() {
|
|
60
|
+
return this.#pool.pendingCount;
|
|
61
|
+
}
|
|
62
|
+
[Symbol.dispose]() {
|
|
63
|
+
this.#pool[Symbol.dispose]();
|
|
64
|
+
}
|
|
65
|
+
async[Symbol.asyncDispose]() {
|
|
66
|
+
await this.#pool[Symbol.asyncDispose]();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web Worker entry point for activity execution.
|
|
3
|
+
*
|
|
4
|
+
* Sets up `self.onmessage` to handle {@link ActivityExecutionRequest} and
|
|
5
|
+
* posts back {@link ActivityExecutionResult} via `self.postMessage`. Uses
|
|
6
|
+
* the existing `executeActivity` helper from `activity-runner.ts`.
|
|
7
|
+
*
|
|
8
|
+
* @module workers/activity-worker-entry
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Function type that resolves an activity name to its handler function, or
|
|
12
|
+
* returns `undefined` when the activity is not registered.
|
|
13
|
+
*
|
|
14
|
+
* Passed to `initializeActivityWorkerMessageLoop` to wire up the message
|
|
15
|
+
* handler inside a Web Worker. Typically backed by a `Map` built at worker
|
|
16
|
+
* startup from the activity registration object.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { type ActivityHandlerLookup } from '@lostgradient/weft';
|
|
21
|
+
*
|
|
22
|
+
* const activities = new Map<string, (input: unknown) => unknown>([
|
|
23
|
+
* ['double', (n: unknown) => (n as number) * 2],
|
|
24
|
+
* ]);
|
|
25
|
+
*
|
|
26
|
+
* const lookup: ActivityHandlerLookup = (name) => activities.get(name);
|
|
27
|
+
* console.log(lookup('double')); // [Function: double]
|
|
28
|
+
* console.log(lookup('missing')); // undefined
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export type ActivityHandlerLookup = (name: string) => ((input: unknown) => unknown) | undefined;
|
|
32
|
+
/**
|
|
33
|
+
* Initialize the activity worker message loop. Call this from within a Web
|
|
34
|
+
* Worker to wire up the activity execution protocol.
|
|
35
|
+
*
|
|
36
|
+
* @param getActivity - Resolves an activity name to its function. Typically
|
|
37
|
+
* backed by a registration map built at worker creation time.
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* import { initializeActivityWorkerMessageLoop } from '@lostgradient/weft';
|
|
42
|
+
*
|
|
43
|
+
* const activities = new Map<string, (input: unknown) => unknown>();
|
|
44
|
+
* activities.set('greet', (input: unknown) => {
|
|
45
|
+
* if (typeof input !== 'object' || input === null || !('name' in input)) {
|
|
46
|
+
* throw new Error('Expected greeting input');
|
|
47
|
+
* }
|
|
48
|
+
* if (typeof input.name !== 'string') {
|
|
49
|
+
* throw new Error('Expected greeting name');
|
|
50
|
+
* }
|
|
51
|
+
* return `Hello, ${input.name}!`;
|
|
52
|
+
* });
|
|
53
|
+
*
|
|
54
|
+
* // Call inside a Worker file to start listening for tasks:
|
|
55
|
+
* initializeActivityWorkerMessageLoop((name) => activities.get(name));
|
|
56
|
+
* ```
|
|
57
|
+
*/
|
|
58
|
+
export declare function initializeActivityWorkerMessageLoop(getActivity: ActivityHandlerLookup): void;
|
|
59
|
+
/**
|
|
60
|
+
* Create a Blob URL that can be used to spawn an activity Web Worker with
|
|
61
|
+
* the given activity registrations.
|
|
62
|
+
*
|
|
63
|
+
* @param registrations - Map of activity names to handler functions. The
|
|
64
|
+
* handlers must be serializable (no closures over local state).
|
|
65
|
+
* @returns A Blob URL string suitable for the `activityExecution.workerUrl`
|
|
66
|
+
* option. Call {@link revokeActivityWorkerEntryUrl} when the URL is no
|
|
67
|
+
* longer needed (e.g., during engine disposal) to free the registration.
|
|
68
|
+
* @throws {Error} If any handler function cannot be safely serialized.
|
|
69
|
+
*
|
|
70
|
+
* @example
|
|
71
|
+
* ```ts
|
|
72
|
+
* import { createActivityWorkerEntryUrl, revokeActivityWorkerEntryUrl } from '@lostgradient/weft';
|
|
73
|
+
*
|
|
74
|
+
* const registrations = new Map<string, (input: unknown) => unknown>();
|
|
75
|
+
* registrations.set('double', (n: unknown) => (n as number) * 2);
|
|
76
|
+
*
|
|
77
|
+
* const url = createActivityWorkerEntryUrl(registrations);
|
|
78
|
+
* // Pass url to Engine as activityExecution.workerUrl
|
|
79
|
+
* revokeActivityWorkerEntryUrl(url); // cleanup when done
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function createActivityWorkerEntryUrl(registrations: Map<string, (input: unknown) => unknown>): string;
|
|
83
|
+
/**
|
|
84
|
+
* Revoke a Blob URL previously created by {@link createActivityWorkerEntryUrl}.
|
|
85
|
+
* Call this once all workers that need the URL have been constructed (e.g.,
|
|
86
|
+
* during engine disposal) to free the URL registration and prevent leaks.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* import { createActivityWorkerEntryUrl, revokeActivityWorkerEntryUrl } from '@lostgradient/weft';
|
|
91
|
+
*
|
|
92
|
+
* const registrations = new Map<string, (input: unknown) => unknown>();
|
|
93
|
+
* registrations.set('greet', (input: unknown) => 'hello');
|
|
94
|
+
* const url = createActivityWorkerEntryUrl(registrations);
|
|
95
|
+
* // After all workers using this URL have been created:
|
|
96
|
+
* revokeActivityWorkerEntryUrl(url);
|
|
97
|
+
* ```
|
|
98
|
+
*/
|
|
99
|
+
export declare function revokeActivityWorkerEntryUrl(url: string): void;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { executeActivity } from "./activity-runner.js";
|
|
2
|
+
export function initializeActivityWorkerMessageLoop(getActivity) {
|
|
3
|
+
self.addEventListener("message", async (event) => {
|
|
4
|
+
const request = event.data, activityFunction = getActivity(request.activityName);
|
|
5
|
+
if (!activityFunction) {
|
|
6
|
+
const result = {
|
|
7
|
+
operationId: request.operationId,
|
|
8
|
+
status: "failed",
|
|
9
|
+
error: `Unknown activity in worker: "${request.activityName}"`
|
|
10
|
+
};
|
|
11
|
+
self.postMessage(result);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const result = await executeActivity(request, activityFunction);
|
|
15
|
+
self.postMessage(result);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
const CLOSURE_PATTERNS = [
|
|
19
|
+
{
|
|
20
|
+
pattern: /\bthis\b/,
|
|
21
|
+
description: "references `this` (class method or bound context)"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
pattern: /\bimport\s*\(/,
|
|
25
|
+
description: "uses dynamic `import()`"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
pattern: /\brequire\s*\(/,
|
|
29
|
+
description: "uses `require()`"
|
|
30
|
+
}
|
|
31
|
+
];
|
|
32
|
+
function stripStringsAndComments(source) {
|
|
33
|
+
return source.replace(/\/\/[^\n]*|\/\*[\s\S]*?\*\/|`(?:\\[\s\S]|[^`\\])*`|"(?:\\[\s\S]|[^"\\])*"|'(?:\\[\s\S]|[^'\\])*'/g, "");
|
|
34
|
+
}
|
|
35
|
+
function validateHandlerSerializable(name, handler) {
|
|
36
|
+
const source = handler.toString();
|
|
37
|
+
if (source.includes("[native code]"))
|
|
38
|
+
throw Error(`Activity handler "${name}" is a native function and cannot be serialized for worker execution.`);
|
|
39
|
+
const codeOnly = stripStringsAndComments(source);
|
|
40
|
+
for (const { pattern, description } of CLOSURE_PATTERNS)
|
|
41
|
+
if (pattern.test(codeOnly))
|
|
42
|
+
throw Error(`Activity handler "${name}" ${description}. Handlers passed to createActivityWorkerEntryUrl must be self-contained functions without closures over outer scope, class instances, or module-level variables.`);
|
|
43
|
+
}
|
|
44
|
+
export function createActivityWorkerEntryUrl(registrations) {
|
|
45
|
+
for (const [name, handler] of registrations)
|
|
46
|
+
validateHandlerSerializable(name, handler);
|
|
47
|
+
const script = `
|
|
48
|
+
const activities = new Map();
|
|
49
|
+
${[...registrations.entries()].map(([name, handler]) => ` activities.set(${JSON.stringify(name)}, ${handler.toString()});`).join(`
|
|
50
|
+
`)}
|
|
51
|
+
|
|
52
|
+
import { initializeActivityWorkerMessageLoop } from '${import.meta.url}';
|
|
53
|
+
initializeActivityWorkerMessageLoop((name) => activities.get(name));
|
|
54
|
+
`, blob = new Blob([script], { type: "application/javascript" });
|
|
55
|
+
return URL.createObjectURL(blob);
|
|
56
|
+
}
|
|
57
|
+
export function revokeActivityWorkerEntryUrl(url) {
|
|
58
|
+
URL.revokeObjectURL(url);
|
|
59
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Construction options for {@link WorkerPool}.
|
|
3
|
+
*
|
|
4
|
+
* `concurrency` sets the maximum number of Worker instances created; once this
|
|
5
|
+
* limit is reached, `acquire()` calls queue until a worker is released.
|
|
6
|
+
* `workerUrl` is the script URL passed to `new Worker()`. Set `smol: true` on
|
|
7
|
+
* Bun to request a reduced-heap worker.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* import { WorkerPool, type WorkerPoolOptions } from '@lostgradient/weft';
|
|
12
|
+
*
|
|
13
|
+
* const options: WorkerPoolOptions = {
|
|
14
|
+
* concurrency: 4,
|
|
15
|
+
* workerUrl: new URL('./activity-worker.ts', import.meta.url),
|
|
16
|
+
* smol: false,
|
|
17
|
+
* };
|
|
18
|
+
* using pool = new WorkerPool(options);
|
|
19
|
+
* void pool;
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export interface WorkerPoolOptions {
|
|
23
|
+
concurrency: number;
|
|
24
|
+
workerUrl: string | URL;
|
|
25
|
+
smol?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Bounded pool of Web Workers with acquire/release lifecycle management.
|
|
29
|
+
*
|
|
30
|
+
* Workers are created lazily up to `concurrency` and reused across tasks.
|
|
31
|
+
* `acquire()` returns a `Worker` immediately if one is available, creates a new
|
|
32
|
+
* one if under the limit, or queues the request until a worker is released.
|
|
33
|
+
* Use `[Symbol.asyncDispose]()` for a graceful shutdown that waits for
|
|
34
|
+
* in-flight workers to finish, or `[Symbol.dispose]()` for immediate
|
|
35
|
+
* termination.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```ts
|
|
39
|
+
* import { WorkerPool } from '@lostgradient/weft';
|
|
40
|
+
*
|
|
41
|
+
* await using pool = new WorkerPool({
|
|
42
|
+
* concurrency: 2,
|
|
43
|
+
* workerUrl: new URL('./worker.ts', import.meta.url),
|
|
44
|
+
* });
|
|
45
|
+
*
|
|
46
|
+
* const worker = await pool.acquire();
|
|
47
|
+
* worker.postMessage({ task: 'hello' });
|
|
48
|
+
* // ... wait for message event ...
|
|
49
|
+
* pool.release(worker);
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare class WorkerPool implements Disposable, AsyncDisposable {
|
|
53
|
+
#private;
|
|
54
|
+
constructor(options: WorkerPoolOptions);
|
|
55
|
+
/** Acquire a worker from the pool. Blocks if at capacity. */
|
|
56
|
+
acquire(): Promise<Worker>;
|
|
57
|
+
/**
|
|
58
|
+
* Acquire a specific worker once it is released back to the pool.
|
|
59
|
+
*
|
|
60
|
+
* This is intentionally narrower than `acquire()`: it preserves worker-local
|
|
61
|
+
* generator state for parked workflow execution without reserving unrelated
|
|
62
|
+
* idle workers while the target worker is still busy.
|
|
63
|
+
*/
|
|
64
|
+
acquireSpecificWorker(worker: Worker): Promise<Worker>;
|
|
65
|
+
/**
|
|
66
|
+
* Remove a failed worker from the pool without returning it to the available
|
|
67
|
+
* set. Pending requests for that exact worker fail; generic waiters may get
|
|
68
|
+
* a replacement worker if the pool still has capacity.
|
|
69
|
+
*/
|
|
70
|
+
discard(worker: Worker): void;
|
|
71
|
+
/** Release a worker back to the pool. */
|
|
72
|
+
release(worker: Worker): void;
|
|
73
|
+
/** Get the number of available workers. */
|
|
74
|
+
get availableCount(): number;
|
|
75
|
+
/** Get the total number of workers. */
|
|
76
|
+
get totalCount(): number;
|
|
77
|
+
/** Get the number of pending acquire requests. */
|
|
78
|
+
get pendingCount(): number;
|
|
79
|
+
/** Immediate termination. */
|
|
80
|
+
[Symbol.dispose](): void;
|
|
81
|
+
/** Graceful: wait for in-flight, then terminate. */
|
|
82
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
83
|
+
}
|