@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,221 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Durable concurrency primitives — a counting semaphore and a mutex built on
|
|
3
|
+
* top of the compare-and-swap state slots exposed by `ctx.state.*` and
|
|
4
|
+
* `engine.state.*`.
|
|
5
|
+
*
|
|
6
|
+
* Workflows frequently need to serialize access to a shared resource: only one
|
|
7
|
+
* workflow may charge a customer at a time, at most three may hit a
|
|
8
|
+
* rate-limited API concurrently, and so on. The building block already exists —
|
|
9
|
+
* {@link AtomicState} gives you a single CAS-backed state slot — but reusing it
|
|
10
|
+
* correctly (with FIFO fairness and a lease that frees the lock if a holder
|
|
11
|
+
* crashes) is fiddly. {@link DurableSemaphore} and {@link DurableMutex} package
|
|
12
|
+
* that algorithm so you do not have to hand-roll it.
|
|
13
|
+
*
|
|
14
|
+
* The primitives store a single {@link LockRecord} in one CAS slot. Each
|
|
15
|
+
* `acquire`/`release` is a CAS transaction over that record, so every mutation
|
|
16
|
+
* is durable, replay-safe, and recovered automatically after a crash. The
|
|
17
|
+
* primitive never reads the wall clock itself: callers pass a deterministic
|
|
18
|
+
* `now` (captured durably, e.g. via a clock activity) so the lease arithmetic
|
|
19
|
+
* replays identically. A holder whose lease has expired is reclaimed by the
|
|
20
|
+
* next contender, which is what prevents a crashed holder from deadlocking the
|
|
21
|
+
* lock forever.
|
|
22
|
+
*
|
|
23
|
+
* @module core/concurrency
|
|
24
|
+
*/
|
|
25
|
+
import { type AcquireAttempt, type LockRecord } from './concurrency-lock-record.ts';
|
|
26
|
+
export { initialLockRecord, reduceAcquire, reduceRelease, reduceRenew, } from './concurrency-lock-record.ts';
|
|
27
|
+
export type { AcquireAttempt, LockHolder, LockRecord } from './concurrency-lock-record.ts';
|
|
28
|
+
/**
|
|
29
|
+
* Minimal CAS state-slot surface shared by the durable `ctx.state.*` handles
|
|
30
|
+
* (whose methods are workflow operations) and the admin `engine.state.*`
|
|
31
|
+
* handles (whose methods are promises). `RUpdate` is the result of `update`
|
|
32
|
+
* and `RGet` the result of `get`; both are a `Promise` for {@link AtomicState}
|
|
33
|
+
* and a workflow-operation generator for `ctx.state.*`. They are decoupled
|
|
34
|
+
* because `get` may resolve to `T | undefined` while `update` resolves to `T`.
|
|
35
|
+
* Both {@link AtomicState} and the durable `ctx.state.*` handles satisfy this
|
|
36
|
+
* structurally, so the same primitive drives both flavours.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```ts
|
|
40
|
+
* import { AtomicState, type CasSlot, type LockRecord } from '@lostgradient/weft';
|
|
41
|
+
* import { MemoryStorage } from '@lostgradient/weft/storage/memory';
|
|
42
|
+
*
|
|
43
|
+
* // AtomicState satisfies CasSlot structurally (its methods return promises).
|
|
44
|
+
* const slot: CasSlot<LockRecord, Promise<LockRecord>, Promise<LockRecord | undefined>> =
|
|
45
|
+
* new AtomicState<LockRecord>(new MemoryStorage(), 'state:workflow-scope:default:lock');
|
|
46
|
+
* void slot;
|
|
47
|
+
* ```
|
|
48
|
+
*/
|
|
49
|
+
export interface CasSlot<T, RUpdate, RGet = RUpdate> {
|
|
50
|
+
get(): RGet;
|
|
51
|
+
update(updater: (current: T | undefined) => T): RUpdate;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Options for {@link DurableSemaphore} and {@link DurableMutex}.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* import { DurableSemaphore, type DurableSemaphoreOptions } from '@lostgradient/weft';
|
|
59
|
+
*
|
|
60
|
+
* const options: DurableSemaphoreOptions = { permits: 3, leaseMs: 60_000 };
|
|
61
|
+
* const semaphore = new DurableSemaphore(options);
|
|
62
|
+
* void semaphore;
|
|
63
|
+
* ```
|
|
64
|
+
*/
|
|
65
|
+
export interface DurableSemaphoreOptions {
|
|
66
|
+
/**
|
|
67
|
+
* Number of permits. At most this many holders may hold the lock at once.
|
|
68
|
+
* Defaults to `1` (a mutex).
|
|
69
|
+
*/
|
|
70
|
+
permits?: number;
|
|
71
|
+
/**
|
|
72
|
+
* Default lease duration in milliseconds applied to an acquired permit when
|
|
73
|
+
* an explicit `leaseMs` is not supplied to `tryAcquire`. A permit whose lease
|
|
74
|
+
* expires may be reclaimed by another contender, which is what frees the lock
|
|
75
|
+
* when a holder crashes without releasing. Defaults to `30_000`.
|
|
76
|
+
*/
|
|
77
|
+
leaseMs?: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* A durable counting semaphore: at most `permits` holders may hold the lock at
|
|
81
|
+
* once. Built entirely on a single compare-and-swap state slot, so it works
|
|
82
|
+
* inside workflows (via `ctx.state.*`) and from admin code (via
|
|
83
|
+
* `engine.state.*`).
|
|
84
|
+
*
|
|
85
|
+
* The semaphore is intentionally non-blocking at the slot level: `tryAcquire`
|
|
86
|
+
* performs one CAS transaction and reports whether the permit was granted. The
|
|
87
|
+
* caller decides how to wait between attempts — inside a workflow you
|
|
88
|
+
* `yield* ctx.sleep(...)` between retries so the wait is durable and
|
|
89
|
+
* replay-safe.
|
|
90
|
+
*
|
|
91
|
+
* Fairness is FIFO: a contender enqueues itself and only acquires once it
|
|
92
|
+
* reaches the head of the waiter queue and a permit is free. Each granted
|
|
93
|
+
* permit carries a lease; an expired lease is reclaimed by the next contender,
|
|
94
|
+
* so a crashed holder cannot deadlock the lock forever.
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* ```ts
|
|
98
|
+
* import { DurableSemaphore } from '@lostgradient/weft';
|
|
99
|
+
* import { AtomicState } from '@lostgradient/weft';
|
|
100
|
+
* import { MemoryStorage } from '@lostgradient/weft/storage/memory';
|
|
101
|
+
*
|
|
102
|
+
* const storage = new MemoryStorage();
|
|
103
|
+
* const slot = new AtomicState<import('@lostgradient/weft').LockRecord>(
|
|
104
|
+
* storage,
|
|
105
|
+
* 'state:workflow-scope:default:rate-limit:lock',
|
|
106
|
+
* { initial: { holders: [], waiters: [] } },
|
|
107
|
+
* );
|
|
108
|
+
* const semaphore = new DurableSemaphore({ permits: 3, leaseMs: 60_000 });
|
|
109
|
+
* const attempt = await semaphore.tryAcquire(slot, { holderId: 'worker-1', now: Date.now() });
|
|
110
|
+
* if (attempt.acquired) {
|
|
111
|
+
* try {
|
|
112
|
+
* // ...use the shared resource...
|
|
113
|
+
* } finally {
|
|
114
|
+
* await semaphore.release(slot, { holderId: 'worker-1', now: Date.now() });
|
|
115
|
+
* }
|
|
116
|
+
* }
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export declare class DurableSemaphore {
|
|
120
|
+
readonly permits: number;
|
|
121
|
+
readonly leaseMs: number;
|
|
122
|
+
constructor(options?: DurableSemaphoreOptions);
|
|
123
|
+
/**
|
|
124
|
+
* Attempt to acquire a permit with a single CAS transaction. Returns whether
|
|
125
|
+
* the permit was granted and the caller's FIFO queue position when it was
|
|
126
|
+
* not. The caller is registered in the waiter queue on a failed attempt so a
|
|
127
|
+
* subsequent retry preserves FIFO order.
|
|
128
|
+
*
|
|
129
|
+
* `RUpdate` is the slot's `update` return type — a `Promise` for
|
|
130
|
+
* {@link AtomicState} or a workflow-operation generator for `ctx.state.*`.
|
|
131
|
+
*/
|
|
132
|
+
tryAcquire<RUpdate>(slot: CasSlot<LockRecord, RUpdate>, options: {
|
|
133
|
+
holderId: string;
|
|
134
|
+
now: number;
|
|
135
|
+
leaseMs?: number;
|
|
136
|
+
}): AcquireWithSlot<RUpdate>;
|
|
137
|
+
/**
|
|
138
|
+
* Release a held permit with a single CAS transaction. Idempotent: releasing
|
|
139
|
+
* a permit the caller does not hold simply removes any stale waiter entry.
|
|
140
|
+
*/
|
|
141
|
+
release<RUpdate>(slot: CasSlot<LockRecord, RUpdate>, options: {
|
|
142
|
+
holderId: string;
|
|
143
|
+
now: number;
|
|
144
|
+
}): RUpdate;
|
|
145
|
+
/**
|
|
146
|
+
* Extend the lease on a held permit. Long-running holders renew before their
|
|
147
|
+
* lease expires so a contender does not reclaim a still-active permit.
|
|
148
|
+
* Resolves/returns `false` when the caller is not currently a holder.
|
|
149
|
+
*/
|
|
150
|
+
renew<RUpdate>(slot: CasSlot<LockRecord, RUpdate>, options: {
|
|
151
|
+
holderId: string;
|
|
152
|
+
now: number;
|
|
153
|
+
leaseMs?: number;
|
|
154
|
+
}): RenewWithSlot<RUpdate>;
|
|
155
|
+
/**
|
|
156
|
+
* Read the current record without mutating it. `RGet` is the slot's `get`
|
|
157
|
+
* return type — a `Promise<LockRecord | undefined>` for {@link AtomicState}
|
|
158
|
+
* or a workflow-operation generator for `ctx.state.*`.
|
|
159
|
+
*/
|
|
160
|
+
inspect<RGet>(slot: CasSlot<LockRecord, unknown, RGet>): RGet;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* A durable mutual-exclusion lock: a {@link DurableSemaphore} with exactly one
|
|
164
|
+
* permit, so at most one holder at a time. Acquire it with `tryAcquire` and
|
|
165
|
+
* `yield* ctx.sleep(...)` between retries to wait durably for release.
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* ```ts
|
|
169
|
+
* import { DurableMutex } from '@lostgradient/weft';
|
|
170
|
+
* import { workflow, type WorkflowContext, type LockRecord } from '@lostgradient/weft';
|
|
171
|
+
*
|
|
172
|
+
* const transfer = workflow({ name: 'transfer' }).execute(async function* (ctx: WorkflowContext) {
|
|
173
|
+
* const slot = ctx.state.workflow<LockRecord>('account-42:lock', {
|
|
174
|
+
* initial: { holders: [], waiters: [] },
|
|
175
|
+
* });
|
|
176
|
+
* const mutex = new DurableMutex({ leaseMs: 60_000 });
|
|
177
|
+
* const now = yield* ctx.run(() => Date.now());
|
|
178
|
+
* yield* mutex.tryAcquire(slot, { holderId: ctx.workflowId, now });
|
|
179
|
+
* try {
|
|
180
|
+
* // ...critical section...
|
|
181
|
+
* } finally {
|
|
182
|
+
* const releaseNow = yield* ctx.run(() => Date.now());
|
|
183
|
+
* yield* mutex.release(slot, { holderId: ctx.workflowId, now: releaseNow });
|
|
184
|
+
* }
|
|
185
|
+
* });
|
|
186
|
+
* void transfer;
|
|
187
|
+
* ```
|
|
188
|
+
*/
|
|
189
|
+
export declare class DurableMutex extends DurableSemaphore {
|
|
190
|
+
constructor(options?: Omit<DurableSemaphoreOptions, 'permits'>);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Result of {@link DurableSemaphore.tryAcquire}, mirroring the slot's flavour:
|
|
194
|
+
* a `Promise<AcquireAttempt>` when the slot's `update` returns a promise (an
|
|
195
|
+
* {@link AtomicState}), or a workflow-operation generator otherwise.
|
|
196
|
+
*
|
|
197
|
+
* @example
|
|
198
|
+
* ```ts
|
|
199
|
+
* import type { AcquireAttempt, AcquireWithSlot } from '@lostgradient/weft';
|
|
200
|
+
*
|
|
201
|
+
* type PromiseResult = AcquireWithSlot<Promise<unknown>>; // Promise<AcquireAttempt>
|
|
202
|
+
* const result: PromiseResult = Promise.resolve<AcquireAttempt>({ acquired: true, position: -1 });
|
|
203
|
+
* void result;
|
|
204
|
+
* ```
|
|
205
|
+
*/
|
|
206
|
+
export type AcquireWithSlot<R> = R extends Promise<unknown> ? Promise<AcquireAttempt> : Generator<unknown, AcquireAttempt, unknown>;
|
|
207
|
+
/**
|
|
208
|
+
* Result of {@link DurableSemaphore.renew}, mirroring the slot's flavour: a
|
|
209
|
+
* `Promise<boolean>` for an {@link AtomicState} slot, or a workflow-operation
|
|
210
|
+
* generator that yields to a `boolean` for a `ctx.state.*` slot.
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```ts
|
|
214
|
+
* import type { RenewWithSlot } from '@lostgradient/weft';
|
|
215
|
+
*
|
|
216
|
+
* type PromiseResult = RenewWithSlot<Promise<unknown>>; // Promise<boolean>
|
|
217
|
+
* const result: PromiseResult = Promise.resolve(true);
|
|
218
|
+
* void result;
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
export type RenewWithSlot<R> = R extends Promise<unknown> ? Promise<boolean> : Generator<unknown, boolean, unknown>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import {
|
|
2
|
+
reduceAcquire,
|
|
3
|
+
reduceRelease,
|
|
4
|
+
reduceRenew
|
|
5
|
+
} from "./concurrency-lock-record.js";
|
|
6
|
+
export {
|
|
7
|
+
initialLockRecord,
|
|
8
|
+
reduceAcquire,
|
|
9
|
+
reduceRelease,
|
|
10
|
+
reduceRenew
|
|
11
|
+
} from "./concurrency-lock-record.js";
|
|
12
|
+
function assertValidPermits(permits) {
|
|
13
|
+
if (!Number.isInteger(permits) || permits < 1)
|
|
14
|
+
throw RangeError(`DurableSemaphore permits must be a positive integer, received ${permits}`);
|
|
15
|
+
}
|
|
16
|
+
function assertValidLease(leaseMs) {
|
|
17
|
+
if (!Number.isFinite(leaseMs) || leaseMs <= 0)
|
|
18
|
+
throw RangeError(`DurableSemaphore lease must be a positive number of milliseconds, received ${leaseMs}`);
|
|
19
|
+
}
|
|
20
|
+
const DEFAULT_LEASE_MS = 30000;
|
|
21
|
+
|
|
22
|
+
export class DurableSemaphore {
|
|
23
|
+
permits;
|
|
24
|
+
leaseMs;
|
|
25
|
+
constructor(options = {}) {
|
|
26
|
+
const permits = options.permits ?? 1, leaseMs = options.leaseMs ?? DEFAULT_LEASE_MS;
|
|
27
|
+
assertValidPermits(permits);
|
|
28
|
+
assertValidLease(leaseMs);
|
|
29
|
+
this.permits = permits;
|
|
30
|
+
this.leaseMs = leaseMs;
|
|
31
|
+
}
|
|
32
|
+
tryAcquire(slot, options) {
|
|
33
|
+
const leaseMs = options.leaseMs ?? this.leaseMs;
|
|
34
|
+
assertValidLease(leaseMs);
|
|
35
|
+
let attempt = { acquired: !1, position: -1 };
|
|
36
|
+
const update = slot.update((current) => {
|
|
37
|
+
const reduced = reduceAcquire(current, {
|
|
38
|
+
holderId: options.holderId,
|
|
39
|
+
now: options.now,
|
|
40
|
+
leaseMs,
|
|
41
|
+
permits: this.permits
|
|
42
|
+
});
|
|
43
|
+
attempt = reduced.attempt;
|
|
44
|
+
return reduced.record;
|
|
45
|
+
});
|
|
46
|
+
return mapSlotResult(update, () => attempt);
|
|
47
|
+
}
|
|
48
|
+
release(slot, options) {
|
|
49
|
+
return slot.update((current) => reduceRelease(current, options));
|
|
50
|
+
}
|
|
51
|
+
renew(slot, options) {
|
|
52
|
+
const leaseMs = options.leaseMs ?? this.leaseMs;
|
|
53
|
+
assertValidLease(leaseMs);
|
|
54
|
+
let renewed = !1;
|
|
55
|
+
const update = slot.update((current) => {
|
|
56
|
+
const reduced = reduceRenew(current, {
|
|
57
|
+
holderId: options.holderId,
|
|
58
|
+
now: options.now,
|
|
59
|
+
leaseMs
|
|
60
|
+
});
|
|
61
|
+
renewed = reduced.renewed;
|
|
62
|
+
return reduced.record;
|
|
63
|
+
});
|
|
64
|
+
return mapSlotResult(update, () => renewed);
|
|
65
|
+
}
|
|
66
|
+
inspect(slot) {
|
|
67
|
+
return slot.get();
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export class DurableMutex extends DurableSemaphore {
|
|
72
|
+
constructor(options = {}) {
|
|
73
|
+
super({ ...options, permits: 1 });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
function isPromise(value) {
|
|
77
|
+
return typeof value === "object" && value !== null && "then" in value && typeof value.then === "function";
|
|
78
|
+
}
|
|
79
|
+
function isGenerator(value) {
|
|
80
|
+
return typeof value === "object" && value !== null && "next" in value && typeof value.next === "function";
|
|
81
|
+
}
|
|
82
|
+
function mapSlotResult(result, derive) {
|
|
83
|
+
if (isPromise(result))
|
|
84
|
+
return result.then(() => derive());
|
|
85
|
+
if (isGenerator(result)) {
|
|
86
|
+
const generator = result;
|
|
87
|
+
return function* () {
|
|
88
|
+
yield* generator;
|
|
89
|
+
return derive();
|
|
90
|
+
}();
|
|
91
|
+
}
|
|
92
|
+
throw TypeError("CAS slot update must return a Promise or a workflow-operation generator");
|
|
93
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Workflow constraint primitive.
|
|
3
|
+
*
|
|
4
|
+
* Constraints are domain invariants registered alongside a workflow. The
|
|
5
|
+
* engine evaluates them at every checkpoint commit. When a constraint's
|
|
6
|
+
* `check` function returns `false`, the engine dispatches a
|
|
7
|
+
* {@link ConstraintViolatedEvent} and reacts according to `onViolation`:
|
|
8
|
+
*
|
|
9
|
+
* - `'fail'` — immediately fails the workflow; saga compensators do NOT run.
|
|
10
|
+
* - `'compensate'` — throws into the generator so an active `ctx.saga()`
|
|
11
|
+
* can run its compensators before the error propagates.
|
|
12
|
+
* - `'warn'` — logs a warning and continues execution.
|
|
13
|
+
*
|
|
14
|
+
* @module core/constraint
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* Reaction to a violated {@link ConstraintDefinition}. `'fail'` immediately
|
|
18
|
+
* fails the workflow without running saga compensators; `'compensate'`
|
|
19
|
+
* throws into the workflow generator so an active `ctx.saga()` can run its
|
|
20
|
+
* compensators in reverse before the error propagates; `'warn'` logs and
|
|
21
|
+
* continues. Returned from `onViolation` on every constraint definition.
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* import type { ConstraintViolation } from '@lostgradient/weft';
|
|
26
|
+
*
|
|
27
|
+
* const policy: ConstraintViolation = 'compensate';
|
|
28
|
+
* void policy;
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export type ConstraintViolation = 'compensate' | 'fail' | 'warn';
|
|
32
|
+
/**
|
|
33
|
+
* The minimal state snapshot passed to a constraint's `check` function.
|
|
34
|
+
*
|
|
35
|
+
* Only `id`, `type`, and `status` (`'running'`) are available — constraints
|
|
36
|
+
* are evaluated mid-execution, before the workflow has a result or final
|
|
37
|
+
* status. To inspect external state (e.g. a balance), capture it in the
|
|
38
|
+
* enclosing scope instead of relying on this parameter.
|
|
39
|
+
*/
|
|
40
|
+
export interface ConstraintCheckState {
|
|
41
|
+
id: string;
|
|
42
|
+
type: string;
|
|
43
|
+
status: 'running';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Domain invariant evaluated at every workflow checkpoint commit. Build via
|
|
47
|
+
* the {@link constraint} factory function and attach to a workflow with the
|
|
48
|
+
* builder's `.constraints(...)` step (or via `WorkflowDefinition.constraints`
|
|
49
|
+
* on a hand-rolled definition). When `check` returns `false` the engine reacts
|
|
50
|
+
* per `onViolation` and emits a {@link ConstraintViolatedEvent}.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```ts
|
|
54
|
+
* import { constraint, Engine, workflow, type ConstraintDefinition } from '@lostgradient/weft';
|
|
55
|
+
*
|
|
56
|
+
* let balance = 0;
|
|
57
|
+
* const positiveBalance: ConstraintDefinition = constraint({
|
|
58
|
+
* name: 'positiveBalance',
|
|
59
|
+
* scope: 'transaction',
|
|
60
|
+
* check: () => balance >= 0,
|
|
61
|
+
* onViolation: 'compensate',
|
|
62
|
+
* });
|
|
63
|
+
*
|
|
64
|
+
* const transfer = workflow({ name: 'transfer', constraints: [positiveBalance] })
|
|
65
|
+
* .execute(async function* () { return 'done'; });
|
|
66
|
+
*
|
|
67
|
+
* const engine = new Engine();
|
|
68
|
+
* engine.register(transfer);
|
|
69
|
+
* void engine;
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* **Worker execution caveat**: constraints attached to a workflow are only
|
|
73
|
+
* evaluated under the inline execution strategy. When
|
|
74
|
+
* `EngineOptions.workerExecution` is configured, constraint evaluation is
|
|
75
|
+
* silently skipped.
|
|
76
|
+
*/
|
|
77
|
+
export interface ConstraintDefinition {
|
|
78
|
+
name: string;
|
|
79
|
+
/** Domain label for observability (e.g. 'transaction', 'budget'). */
|
|
80
|
+
scope: string;
|
|
81
|
+
/**
|
|
82
|
+
* Return `true` when the invariant holds, `false` when it is violated.
|
|
83
|
+
*
|
|
84
|
+
* The `state` parameter is a {@link ConstraintCheckState} — always
|
|
85
|
+
* `{ id: string; type: string; status: 'running' }`. To check external
|
|
86
|
+
* state (e.g. a balance from your own closure), capture it in the
|
|
87
|
+
* enclosing scope instead:
|
|
88
|
+
*
|
|
89
|
+
* ```ts
|
|
90
|
+
* let balance = 0;
|
|
91
|
+
* const balanceCheck = constraint({
|
|
92
|
+
* name: 'positiveBalance',
|
|
93
|
+
* scope: 'transaction',
|
|
94
|
+
* check: () => balance >= 0,
|
|
95
|
+
* onViolation: 'compensate',
|
|
96
|
+
* });
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* The function may be async — returning `Promise<boolean>` is supported.
|
|
100
|
+
*
|
|
101
|
+
* **Note**: Constraints are only evaluated when using the inline execution
|
|
102
|
+
* strategy. Workflows running in a Web Worker will silently skip constraint
|
|
103
|
+
* evaluation. Document this on your registration if using worker execution.
|
|
104
|
+
*/
|
|
105
|
+
check: (state: ConstraintCheckState) => boolean | Promise<boolean>;
|
|
106
|
+
/**
|
|
107
|
+
* Reaction when the constraint is violated.
|
|
108
|
+
*
|
|
109
|
+
* - `'fail'` — immediately fails the workflow without running any
|
|
110
|
+
* `ctx.saga()` compensators. Use this for hard invariants
|
|
111
|
+
* where partial rollback would be unsafe or meaningless.
|
|
112
|
+
* - `'compensate'` — throws into the workflow generator so an active
|
|
113
|
+
* `ctx.saga()` can catch the error, run its compensators
|
|
114
|
+
* in reverse, and then re-throw. Use this when you have
|
|
115
|
+
* compensating actions registered that need to execute.
|
|
116
|
+
* - `'warn'` — logs a warning and continues execution.
|
|
117
|
+
*/
|
|
118
|
+
onViolation: ConstraintViolation;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Create a constraint definition.
|
|
122
|
+
*
|
|
123
|
+
* Constraints are domain invariants evaluated at every checkpoint commit.
|
|
124
|
+
* Capture external state in the enclosing scope — the `state` parameter
|
|
125
|
+
* passed to `check` is always a minimal `{ id, type, status }` snapshot.
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```ts
|
|
129
|
+
* import { constraint, Engine } from '@lostgradient/weft';
|
|
130
|
+
*
|
|
131
|
+
* let balance = 0;
|
|
132
|
+
*
|
|
133
|
+
* const positiveBalance = constraint({
|
|
134
|
+
* name: 'positiveBalance',
|
|
135
|
+
* scope: 'transaction',
|
|
136
|
+
* check: () => balance >= 0,
|
|
137
|
+
* onViolation: 'compensate',
|
|
138
|
+
* });
|
|
139
|
+
*
|
|
140
|
+
* const engine = new Engine();
|
|
141
|
+
* // engine.register(workflow, { constraints: [positiveBalance] });
|
|
142
|
+
* ```
|
|
143
|
+
*/
|
|
144
|
+
export declare function constraint(definition: ConstraintDefinition): ConstraintDefinition;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SearchAttributeValue } from '../types.ts';
|
|
2
|
+
import type { ContextInternals } from './internals.ts';
|
|
3
|
+
export declare function validateAttribute(internals: ContextInternals, key: string, value: SearchAttributeValue): void;
|
|
4
|
+
export declare function setAttribute(internals: ContextInternals, key: string, value: SearchAttributeValue): void;
|
|
5
|
+
export declare function setAttributes(internals: ContextInternals, attributes: Record<string, SearchAttributeValue>): void;
|
|
6
|
+
export declare function getAttribute<T extends SearchAttributeValue = SearchAttributeValue>(internals: ContextInternals, key: string): T | undefined;
|
|
7
|
+
export declare function getAttributes(internals: ContextInternals): Readonly<Record<string, SearchAttributeValue>>;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { validateAttributeType } from "../search-attributes.js";
|
|
2
|
+
export function validateAttribute(internals, key, value) {
|
|
3
|
+
if (internals.searchAttributeSchema) {
|
|
4
|
+
if (!(key in internals.searchAttributeSchema))
|
|
5
|
+
throw Error(`Unknown search attribute "${key}". Registered attributes: ${Object.keys(internals.searchAttributeSchema).join(", ")}`);
|
|
6
|
+
validateAttributeType(key, value, internals.searchAttributeSchema[key]);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function setAttribute(internals, key, value) {
|
|
10
|
+
validateAttribute(internals, key, value);
|
|
11
|
+
internals.searchAttributes[key] = value;
|
|
12
|
+
internals.pendingAttributeChanges ??= {};
|
|
13
|
+
internals.pendingAttributeChanges[key] = value;
|
|
14
|
+
}
|
|
15
|
+
export function setAttributes(internals, attributes) {
|
|
16
|
+
for (const [key, value] of Object.entries(attributes))
|
|
17
|
+
validateAttribute(internals, key, value);
|
|
18
|
+
for (const [key, value] of Object.entries(attributes)) {
|
|
19
|
+
internals.searchAttributes[key] = value;
|
|
20
|
+
internals.pendingAttributeChanges ??= {};
|
|
21
|
+
internals.pendingAttributeChanges[key] = value;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function getAttribute(internals, key) {
|
|
25
|
+
return internals.searchAttributes[key];
|
|
26
|
+
}
|
|
27
|
+
export function getAttributes(internals) {
|
|
28
|
+
return { ...internals.searchAttributes };
|
|
29
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ChildWorkflowOptions, ChildWorkflowTarget, WorkflowMapOptions, WorkflowPipeStage, WorkflowReduceInput, WorkflowReduceOptions } from '../types.ts';
|
|
2
|
+
import type { Context } from './index.ts';
|
|
3
|
+
import type { ContextInternals } from './internals.ts';
|
|
4
|
+
import type { ContextOperationRequest } from './operation-request.ts';
|
|
5
|
+
export declare function normalizePipeStage(internals: ContextInternals, stage: WorkflowPipeStage | ChildWorkflowTarget): {
|
|
6
|
+
workflowType: string;
|
|
7
|
+
options: ChildWorkflowOptions | undefined;
|
|
8
|
+
};
|
|
9
|
+
export declare function resolveChildWorkflowTarget<TInput = unknown, TOutput = unknown>(internals: ContextInternals, target: ChildWorkflowTarget<TInput, TOutput>): string;
|
|
10
|
+
export declare function resolveMapConcurrency(totalItems: number, requestedConcurrency: number | undefined): number;
|
|
11
|
+
export declare function createCompositionToken(internals: ContextInternals, kind: 'map' | 'pipe' | 'reduce'): string;
|
|
12
|
+
export declare function createCompositionChildWorkflowOptions(internals: ContextInternals, token: string, index: number, options?: ChildWorkflowOptions | undefined): ChildWorkflowOptions;
|
|
13
|
+
export declare function createReduceChildWorkflowOptions(internals: ContextInternals, token: string, index: number, options: WorkflowReduceOptions | undefined): ChildWorkflowOptions;
|
|
14
|
+
export declare function primeParallelOperations(operations: Generator<ContextOperationRequest, unknown, unknown>[]): ContextOperationRequest[];
|
|
15
|
+
export declare function startChild<TResult = unknown>(context: Context, internals: ContextInternals, workflowType: string, input: unknown, options?: ChildWorkflowOptions): Generator<ContextOperationRequest, TResult, unknown>;
|
|
16
|
+
export declare function pipe<TResult = unknown>(context: Context, internals: ContextInternals, stages: Array<WorkflowPipeStage | ChildWorkflowTarget>, input: unknown): Generator<ContextOperationRequest, TResult, unknown>;
|
|
17
|
+
export declare function map<TItem, TResult>(context: Context, internals: ContextInternals, items: readonly TItem[], workflowType: ChildWorkflowTarget<TItem, TResult>, options?: WorkflowMapOptions): Generator<ContextOperationRequest, TResult[], unknown>;
|
|
18
|
+
export declare function reduce<TItem, TAccumulator>(context: Context, internals: ContextInternals, items: readonly TItem[], workflowType: ChildWorkflowTarget<WorkflowReduceInput<TAccumulator, TItem>, TAccumulator>, initialValue: TAccumulator, options?: WorkflowReduceOptions): Generator<ContextOperationRequest, TAccumulator, unknown>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { captureCallerStack } from "./validation.js";
|
|
2
|
+
export function normalizePipeStage(internals, stage) {
|
|
3
|
+
if (typeof stage === "object" && stage !== null && "type" in stage)
|
|
4
|
+
return {
|
|
5
|
+
workflowType: resolveChildWorkflowTarget(internals, stage.type),
|
|
6
|
+
options: stage.options
|
|
7
|
+
};
|
|
8
|
+
return {
|
|
9
|
+
workflowType: resolveChildWorkflowTarget(internals, stage),
|
|
10
|
+
options: void 0
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function resolveChildWorkflowTarget(internals, target) {
|
|
14
|
+
if (typeof target === "string")
|
|
15
|
+
return target;
|
|
16
|
+
if (internals.resolveWorkflowType)
|
|
17
|
+
return internals.resolveWorkflowType(target);
|
|
18
|
+
throw Error("Workflow functions used in composition operators must be registered before use. Pass the registered workflow type string or register the function on the engine first.");
|
|
19
|
+
}
|
|
20
|
+
export function resolveMapConcurrency(totalItems, requestedConcurrency) {
|
|
21
|
+
if (requestedConcurrency === void 0)
|
|
22
|
+
return totalItems;
|
|
23
|
+
if (!Number.isFinite(requestedConcurrency) || !Number.isInteger(requestedConcurrency) || requestedConcurrency < 1)
|
|
24
|
+
throw Error("ctx.map concurrency must be a positive integer");
|
|
25
|
+
return Math.min(requestedConcurrency, totalItems);
|
|
26
|
+
}
|
|
27
|
+
export function createCompositionToken(internals, kind) {
|
|
28
|
+
return `${kind}:${internals.stepIndex}`;
|
|
29
|
+
}
|
|
30
|
+
export function createCompositionChildWorkflowOptions(internals, token, index, options = void 0) {
|
|
31
|
+
if (options?.id !== void 0)
|
|
32
|
+
return options;
|
|
33
|
+
return {
|
|
34
|
+
...options,
|
|
35
|
+
id: `${internals.context.workflowId}:${token}:${index}`
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export function createReduceChildWorkflowOptions(internals, token, index, options) {
|
|
39
|
+
if (options === void 0)
|
|
40
|
+
return createCompositionChildWorkflowOptions(internals, token, index);
|
|
41
|
+
const { idPrefix, ...childWorkflowOptions } = options;
|
|
42
|
+
return createCompositionChildWorkflowOptions(internals, token, index, idPrefix !== void 0 ? {
|
|
43
|
+
...childWorkflowOptions,
|
|
44
|
+
id: `${idPrefix}:${index}`
|
|
45
|
+
} : childWorkflowOptions);
|
|
46
|
+
}
|
|
47
|
+
export function primeParallelOperations(operations) {
|
|
48
|
+
const subOperations = [];
|
|
49
|
+
for (const generator of operations) {
|
|
50
|
+
const yielded = generator.next();
|
|
51
|
+
if (!yielded.done)
|
|
52
|
+
subOperations.push(yielded.value);
|
|
53
|
+
}
|
|
54
|
+
return subOperations;
|
|
55
|
+
}
|
|
56
|
+
export function* startChild(context, internals, workflowType, input, options) {
|
|
57
|
+
const step = internals.stepIndex++;
|
|
58
|
+
if (internals.accumulatedResults?.has(step)) {
|
|
59
|
+
if (internals.explainMode)
|
|
60
|
+
console.log(`[weft] ctx.startChild("${workflowType}") \u2192 Returning cached result from step ${step}`);
|
|
61
|
+
return internals.accumulatedResults.get(step);
|
|
62
|
+
}
|
|
63
|
+
if (internals.explainMode) {
|
|
64
|
+
console.log(`[weft] ctx.startChild("${workflowType}", ${JSON.stringify(input)})`);
|
|
65
|
+
console.log(` \u2192 Creating checkpoint at step ${step}`);
|
|
66
|
+
console.log(` \u2192 Starting child workflow of type "${workflowType}"`);
|
|
67
|
+
}
|
|
68
|
+
const operationId = crypto.randomUUID(), callerStack = captureCallerStack(), result = yield {
|
|
69
|
+
type: "child-workflow",
|
|
70
|
+
operationId,
|
|
71
|
+
workflowType,
|
|
72
|
+
input,
|
|
73
|
+
callerStack,
|
|
74
|
+
...options !== void 0 ? { options } : {}
|
|
75
|
+
};
|
|
76
|
+
context.accumulatedResults.set(step, result);
|
|
77
|
+
return result;
|
|
78
|
+
}
|
|
79
|
+
export function* pipe(context, internals, stages, input) {
|
|
80
|
+
const pipelineToken = createCompositionToken(internals, "pipe");
|
|
81
|
+
let currentInput = input;
|
|
82
|
+
for (const [index, stage] of stages.entries()) {
|
|
83
|
+
const resolvedStage = normalizePipeStage(internals, stage);
|
|
84
|
+
currentInput = yield* context.startChild(resolvedStage.workflowType, currentInput, createCompositionChildWorkflowOptions(internals, pipelineToken, index, resolvedStage.options));
|
|
85
|
+
}
|
|
86
|
+
return currentInput;
|
|
87
|
+
}
|
|
88
|
+
export function* map(context, internals, items, workflowType, options) {
|
|
89
|
+
if (items.length === 0)
|
|
90
|
+
return [];
|
|
91
|
+
const mapToken = createCompositionToken(internals, "map"), concurrency = resolveMapConcurrency(items.length, options?.concurrency), resolvedWorkflowType = resolveChildWorkflowTarget(internals, workflowType), results = [];
|
|
92
|
+
for (let startIndex = 0;startIndex < items.length; startIndex += concurrency) {
|
|
93
|
+
const batchItems = items.slice(startIndex, startIndex + concurrency), batchResults = yield* context.all(batchItems.map((item, batchIndex) => context.startChild(resolvedWorkflowType, item, createCompositionChildWorkflowOptions(internals, mapToken, startIndex + batchIndex))));
|
|
94
|
+
for (let batchIndex = 0;batchIndex < batchResults.length; batchIndex++)
|
|
95
|
+
results[startIndex + batchIndex] = batchResults[batchIndex];
|
|
96
|
+
}
|
|
97
|
+
return results;
|
|
98
|
+
}
|
|
99
|
+
export function* reduce(context, internals, items, workflowType, initialValue, options) {
|
|
100
|
+
if (items.length === 0)
|
|
101
|
+
return initialValue;
|
|
102
|
+
const reduceToken = createCompositionToken(internals, "reduce"), resolvedWorkflowType = resolveChildWorkflowTarget(internals, workflowType);
|
|
103
|
+
let accumulator = initialValue;
|
|
104
|
+
for (const [index, item] of items.entries())
|
|
105
|
+
accumulator = yield* context.startChild(resolvedWorkflowType, {
|
|
106
|
+
accumulator,
|
|
107
|
+
item,
|
|
108
|
+
index
|
|
109
|
+
}, createReduceChildWorkflowOptions(internals, reduceToken, index, options));
|
|
110
|
+
return accumulator;
|
|
111
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { HumanReviewOptions, HumanReviewResult } from '../review/index.ts';
|
|
2
|
+
import type { Duration } from '../types.ts';
|
|
3
|
+
import type { Context } from './index.ts';
|
|
4
|
+
import type { ContextInternals } from './internals.ts';
|
|
5
|
+
import type { ContextOperationRequest } from './operation-request.ts';
|
|
6
|
+
import type { OffloadReference, StreamReference, StreamSink } from './types.ts';
|
|
7
|
+
export type PreparedSleepOperation = {
|
|
8
|
+
cached: true;
|
|
9
|
+
} | {
|
|
10
|
+
cached: false;
|
|
11
|
+
milliseconds: number;
|
|
12
|
+
request: ContextOperationRequest;
|
|
13
|
+
step: number;
|
|
14
|
+
};
|
|
15
|
+
export declare function prepareSleepOperation(internals: ContextInternals, duration: Duration): PreparedSleepOperation;
|
|
16
|
+
export declare function completePreparedSleepOperation(context: Context, prepared: Exclude<PreparedSleepOperation, {
|
|
17
|
+
cached: true;
|
|
18
|
+
}>): Generator<ContextOperationRequest, void, unknown>;
|
|
19
|
+
export declare function sleep(context: Context, internals: ContextInternals, duration: Duration): Generator<ContextOperationRequest, void, unknown>;
|
|
20
|
+
export declare function waitForSignal<T = unknown>(context: Context, internals: ContextInternals, name: string): Generator<ContextOperationRequest, T, unknown>;
|
|
21
|
+
export declare function waitForUpdate<T = unknown>(context: Context, internals: ContextInternals, name: string): Generator<ContextOperationRequest, {
|
|
22
|
+
payload: T;
|
|
23
|
+
respond: (result: unknown) => void;
|
|
24
|
+
}, unknown>;
|
|
25
|
+
export declare function review(context: Context, internals: ContextInternals, options: HumanReviewOptions): Generator<ContextOperationRequest, HumanReviewResult, unknown>;
|
|
26
|
+
export declare function offload<T>(context: Context, internals: ContextInternals, key: string, fn: () => Promise<T>): Generator<ContextOperationRequest, OffloadReference, unknown>;
|
|
27
|
+
export declare function stream(context: Context, internals: ContextInternals, key: string, fn: (sink: StreamSink) => AsyncGenerator<unknown, void, unknown>): Generator<ContextOperationRequest, StreamReference, unknown>;
|
|
28
|
+
export declare function load<T>(context: Context, internals: ContextInternals, reference: OffloadReference): Generator<ContextOperationRequest, T, unknown>;
|
|
29
|
+
export declare function archive(context: Context, internals: ContextInternals, key: string, data: unknown): Generator<ContextOperationRequest, void, unknown>;
|