@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,144 @@
|
|
|
1
|
+
import { decode } from "../codec.js";
|
|
2
|
+
import { isRecord } from "../debug-output.js";
|
|
3
|
+
import { normalizeFailureCategory } from "../failure-categories.js";
|
|
4
|
+
import { coerceStartWorkflowId, parseStartWorkflowDuration } from "../start-workflow-validation.js";
|
|
5
|
+
import { isWorkflowTagArray } from "../workflow-tags.js";
|
|
6
|
+
const WORKFLOW_TIMELINE_STATUSES = new Set([
|
|
7
|
+
"running",
|
|
8
|
+
"completed",
|
|
9
|
+
"failed",
|
|
10
|
+
"cancelled",
|
|
11
|
+
"timed-out"
|
|
12
|
+
]);
|
|
13
|
+
export function isSanitizedSearchAttributeValue(value) {
|
|
14
|
+
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean")
|
|
15
|
+
return !0;
|
|
16
|
+
return Array.isArray(value) && value.every((entry) => typeof entry === "string");
|
|
17
|
+
}
|
|
18
|
+
export function isWorkflowVersionTuple(value) {
|
|
19
|
+
if (!isRecord(value) || typeof value.workflowVersion !== "string")
|
|
20
|
+
return !1;
|
|
21
|
+
if (value.agentVersion !== void 0 && typeof value.agentVersion !== "string")
|
|
22
|
+
return !1;
|
|
23
|
+
return value.toolVersions === void 0 || Array.isArray(value.toolVersions) && value.toolVersions.every((entry) => typeof entry === "string");
|
|
24
|
+
}
|
|
25
|
+
export function isFiniteNumber(value) {
|
|
26
|
+
return typeof value === "number" && Number.isFinite(value);
|
|
27
|
+
}
|
|
28
|
+
export function isTimelineStep(value) {
|
|
29
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 1;
|
|
30
|
+
}
|
|
31
|
+
const TIMELINE_ENTRY_FIELD_CHECKS = [
|
|
32
|
+
(entry) => isTimelineStep(entry.step),
|
|
33
|
+
(entry) => typeof entry.operationType === "string",
|
|
34
|
+
(entry) => typeof entry.operationLabel === "string",
|
|
35
|
+
(entry) => typeof entry.inputSummary === "string",
|
|
36
|
+
(entry) => isFiniteNumber(entry.timestamp),
|
|
37
|
+
(entry) => WORKFLOW_TIMELINE_STATUSES.has(entry.status),
|
|
38
|
+
(entry) => entry.outputSummary === void 0 || typeof entry.outputSummary === "string",
|
|
39
|
+
(entry) => entry.duration === void 0 || isFiniteNumber(entry.duration),
|
|
40
|
+
(entry) => entry.versionTuple === void 0 || isWorkflowVersionTuple(entry.versionTuple)
|
|
41
|
+
];
|
|
42
|
+
export function isWorkflowTimelineEntry(value) {
|
|
43
|
+
if (!isRecord(value))
|
|
44
|
+
return !1;
|
|
45
|
+
return TIMELINE_ENTRY_FIELD_CHECKS.every((check) => check(value));
|
|
46
|
+
}
|
|
47
|
+
export function normalizeBulkFilterNumber(value, fieldName) {
|
|
48
|
+
if (value === void 0)
|
|
49
|
+
return;
|
|
50
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value < 0)
|
|
51
|
+
throw Error(`filter.${fieldName} must be a non-negative number when provided`);
|
|
52
|
+
return Math.floor(value);
|
|
53
|
+
}
|
|
54
|
+
export function isValidDecodedTags(value) {
|
|
55
|
+
return value === void 0 || isWorkflowTagArray(value);
|
|
56
|
+
}
|
|
57
|
+
export function decodeWorkflowState(bytes) {
|
|
58
|
+
const state = decode(bytes);
|
|
59
|
+
if ("tenant" in state)
|
|
60
|
+
delete state.tenant;
|
|
61
|
+
if (!isValidDecodedTags(state.tags)) {
|
|
62
|
+
console.warn(`[weft] Decoded workflow state for "${String(state.id)}" has invalid tags; dropping the malformed tag list from the decoded state.`);
|
|
63
|
+
delete state.tags;
|
|
64
|
+
}
|
|
65
|
+
if (state.failureCategory !== void 0 && state.failureCategory !== null) {
|
|
66
|
+
const normalizedFailureCategory = normalizeFailureCategory(state.failureCategory);
|
|
67
|
+
if (normalizedFailureCategory === void 0)
|
|
68
|
+
delete state.failureCategory;
|
|
69
|
+
else
|
|
70
|
+
state.failureCategory = normalizedFailureCategory;
|
|
71
|
+
}
|
|
72
|
+
if (state.executionStateOwnerId !== void 0)
|
|
73
|
+
try {
|
|
74
|
+
coerceStartWorkflowId(state.executionStateOwnerId, "executionStateOwnerId");
|
|
75
|
+
} catch {
|
|
76
|
+
console.warn(`[weft] Decoded workflow state for "${String(state.id)}" has an invalid executionStateOwnerId field; falling back to the workflow id as the execution owner. This usually indicates corruption or tampering of the storage record.`);
|
|
77
|
+
delete state.executionStateOwnerId;
|
|
78
|
+
}
|
|
79
|
+
return state;
|
|
80
|
+
}
|
|
81
|
+
export function normalizeRetentionDuration(value, fieldName) {
|
|
82
|
+
if (value === void 0)
|
|
83
|
+
return;
|
|
84
|
+
const milliseconds = parseStartWorkflowDuration(value, fieldName);
|
|
85
|
+
return Math.ceil(milliseconds);
|
|
86
|
+
}
|
|
87
|
+
export function normalizeHistoryPolicy(policy, context) {
|
|
88
|
+
return {
|
|
89
|
+
maxEvents: normalizePositiveCountOrDisabled(policy?.maxEvents, `${context}.maxEvents`),
|
|
90
|
+
retentionWindow: normalizePositiveCountOrDisabled(policy?.retentionWindow, `${context}.retentionWindow`)
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function normalizePositiveCountOrDisabled(value, field) {
|
|
94
|
+
if (value === void 0 || value === 0)
|
|
95
|
+
return null;
|
|
96
|
+
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 0)
|
|
97
|
+
throw TypeError(`${field} must be a positive safe integer (or 0/undefined to disable); received ${String(value)}`);
|
|
98
|
+
return value;
|
|
99
|
+
}
|
|
100
|
+
export function normalizePayloadSizePolicy(policy, context) {
|
|
101
|
+
const maxBytes = policy?.maxBytes;
|
|
102
|
+
if (maxBytes === void 0 || maxBytes === null || maxBytes === 0)
|
|
103
|
+
return { maxBytes: null };
|
|
104
|
+
if (typeof maxBytes !== "number" || !Number.isSafeInteger(maxBytes) || maxBytes < 0)
|
|
105
|
+
throw TypeError(`${context}.maxBytes must be a positive safe integer (or 0/null/undefined to disable); received ${String(maxBytes)}`);
|
|
106
|
+
return { maxBytes };
|
|
107
|
+
}
|
|
108
|
+
export function normalizeRetentionPolicy(policy, context) {
|
|
109
|
+
if (!policy)
|
|
110
|
+
return null;
|
|
111
|
+
const normalized = {}, completed = normalizeRetentionDuration(policy.completed, `${context}.completed`), failed = normalizeRetentionDuration(policy.failed, `${context}.failed`), cancelled = normalizeRetentionDuration(policy.cancelled, `${context}.cancelled`), timedOut = normalizeRetentionDuration(policy.timedOut, `${context}.timedOut`);
|
|
112
|
+
if (completed !== void 0)
|
|
113
|
+
normalized.completed = completed;
|
|
114
|
+
if (failed !== void 0)
|
|
115
|
+
normalized.failed = failed;
|
|
116
|
+
if (cancelled !== void 0)
|
|
117
|
+
normalized.cancelled = cancelled;
|
|
118
|
+
if (timedOut !== void 0)
|
|
119
|
+
normalized.timedOut = timedOut;
|
|
120
|
+
return normalized.completed === void 0 && normalized.failed === void 0 && normalized.cancelled === void 0 && normalized.timedOut === void 0 ? null : normalized;
|
|
121
|
+
}
|
|
122
|
+
export function resolveRetentionForStatus(policy, status) {
|
|
123
|
+
switch (status) {
|
|
124
|
+
case "completed":
|
|
125
|
+
return policy?.completed;
|
|
126
|
+
case "failed":
|
|
127
|
+
return policy?.failed;
|
|
128
|
+
case "cancelled":
|
|
129
|
+
return policy?.cancelled;
|
|
130
|
+
case "timed-out":
|
|
131
|
+
return policy?.timedOut;
|
|
132
|
+
default:
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
export function isTerminalWorkflowStatus(status) {
|
|
137
|
+
return status === "completed" || status === "failed" || status === "cancelled" || status === "timed-out";
|
|
138
|
+
}
|
|
139
|
+
export function isPlainObjectRecord(value) {
|
|
140
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
141
|
+
return !1;
|
|
142
|
+
const prototype = Object.getPrototypeOf(value);
|
|
143
|
+
return prototype === Object.prototype || prototype === null;
|
|
144
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import type { EngineInternals } from './internals.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Discriminator for `replayWorkflowFeed` / `snapshotWorkflowFeedTail`
|
|
4
|
+
* / `subscribeWorkflowFeedCommits`. Mirrored by `EventSelector` in
|
|
5
|
+
* `src/server/workflow-event-feed.ts` so the core engine takes no
|
|
6
|
+
* dependency on the server package.
|
|
7
|
+
*/
|
|
8
|
+
export type WorkflowFeedSelector = 'events' | 'tokens';
|
|
9
|
+
/**
|
|
10
|
+
* Hard-coded stream key for the `tokens` selector. Matches the
|
|
11
|
+
* legacy REST SSE endpoint's key so resumption cursors round-trip
|
|
12
|
+
* across transports.
|
|
13
|
+
*/
|
|
14
|
+
export declare const TOKENS_STREAM_KEY = "tokens";
|
|
15
|
+
/** Record `kind` for every token stream chunk emitted by the feed. */
|
|
16
|
+
export declare const STREAM_CHUNK_KIND = "stream:chunk";
|
|
17
|
+
/**
|
|
18
|
+
* Record `kind` emitted when a subscriber resumes from a cursor below the
|
|
19
|
+
* event-log compaction watermark. The `[cursor, watermark.sequence)` records
|
|
20
|
+
* were truncated, so the feed reports an explicit boundary marker (rather than
|
|
21
|
+
* silently skipping) before continuing from the surviving records. `sequence`
|
|
22
|
+
* is the watermark sequence (the first surviving record).
|
|
23
|
+
*/
|
|
24
|
+
export declare const COMPACTION_BOUNDARY_KIND = "workflow:compaction-boundary";
|
|
25
|
+
/**
|
|
26
|
+
* A committed workflow-feed record surfaced to subscribers of
|
|
27
|
+
* `subscribeWorkflowFeedCommits()`. Fires after `storage.batch()`
|
|
28
|
+
* (events) or `storage.put()` (tokens) resolves, so replay and live
|
|
29
|
+
* delivery share the same committed sequence authority. The same
|
|
30
|
+
* shape covers both selectors — consumers filter on `selector`
|
|
31
|
+
* before interpreting `payload`.
|
|
32
|
+
*
|
|
33
|
+
* - `events` selector: `kind` is the durable log entry type
|
|
34
|
+
* (e.g. `'workflow:checkpoint'`). `sequence` / `timestamp` come
|
|
35
|
+
* from the `WorkflowLogEntry` written inside the batch.
|
|
36
|
+
* - `tokens` selector: `kind` is always `'stream:chunk'`.
|
|
37
|
+
* `sequence` is the chunk index; `timestamp` is wall-clock at
|
|
38
|
+
* write time.
|
|
39
|
+
*/
|
|
40
|
+
export type WorkflowFeedRecord = {
|
|
41
|
+
readonly workflowId: string;
|
|
42
|
+
readonly selector: WorkflowFeedSelector;
|
|
43
|
+
readonly kind: string;
|
|
44
|
+
readonly sequence: number;
|
|
45
|
+
readonly timestamp: number;
|
|
46
|
+
readonly payload: unknown;
|
|
47
|
+
};
|
|
48
|
+
export type WorkflowFeedRecordValue = WorkflowFeedRecord;
|
|
49
|
+
/**
|
|
50
|
+
* Listener signature for `subscribeWorkflowFeedCommits()`. Returning
|
|
51
|
+
* `void | Promise<void>` is explicit: an async listener's rejected
|
|
52
|
+
* promise is caught by the notifier and discarded, exactly like a
|
|
53
|
+
* sync throw. This is the only correct shape for a notifier called
|
|
54
|
+
* from a hot path — an escaped unhandled rejection would surface as
|
|
55
|
+
* a test-runner or Node process-level crash.
|
|
56
|
+
*/
|
|
57
|
+
export type WorkflowFeedListener = (record: WorkflowFeedRecord) => void | Promise<void>;
|
|
58
|
+
/**
|
|
59
|
+
* Iterate over the workflow's post-commit records for a given selector.
|
|
60
|
+
*/
|
|
61
|
+
export declare function replayWorkflowFeed(internals: EngineInternals, workflowId: string, selector: WorkflowFeedSelector, afterSequence: number): AsyncIterable<WorkflowFeedRecord>;
|
|
62
|
+
/**
|
|
63
|
+
* Snapshot the current tail sequence for the selector.
|
|
64
|
+
*/
|
|
65
|
+
export declare function snapshotWorkflowFeedTail(internals: EngineInternals, workflowId: string, selector: WorkflowFeedSelector): Promise<number>;
|
|
66
|
+
/**
|
|
67
|
+
* Subscribe to post-commit workflow-feed notifications.
|
|
68
|
+
*/
|
|
69
|
+
export declare function subscribeWorkflowFeedCommits(internals: EngineInternals, workflowId: string, selector: WorkflowFeedSelector, listener: WorkflowFeedListener): () => void;
|
|
70
|
+
/**
|
|
71
|
+
* Replay committed workflow event-log entries after a durable sequence cursor.
|
|
72
|
+
*/
|
|
73
|
+
export declare function replayWorkflowEventLog(internals: EngineInternals, workflowId: string, afterSequence: number): AsyncIterable<WorkflowFeedRecord>;
|
|
74
|
+
/**
|
|
75
|
+
* Replay committed token stream chunks after a durable sequence cursor.
|
|
76
|
+
*/
|
|
77
|
+
export declare function replayWorkflowTokens(internals: EngineInternals, workflowId: string, afterSequence: number): AsyncIterable<WorkflowFeedRecord>;
|
|
78
|
+
/**
|
|
79
|
+
* Dispatch a committed record to every listener registered for
|
|
80
|
+
* `(workflowId, selector)`.
|
|
81
|
+
*/
|
|
82
|
+
export declare function notifyWorkflowFeedCommit(internals: EngineInternals, workflowId: string, selector: WorkflowFeedSelector, record: WorkflowFeedRecord): void;
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { EventLog } from "../event-log.js";
|
|
2
|
+
import { readEventLogWatermark } from "./event-log-compaction.js";
|
|
3
|
+
import { workflowFeedListenerKey } from "./state-utilities.js";
|
|
4
|
+
import { loadStoredStreamChunks } from "./stream-chunk-loading.js";
|
|
5
|
+
export const TOKENS_STREAM_KEY = "tokens", STREAM_CHUNK_KIND = "stream:chunk", COMPACTION_BOUNDARY_KIND = "workflow:compaction-boundary";
|
|
6
|
+
export async function* replayWorkflowFeed(internals, workflowId, selector, afterSequence) {
|
|
7
|
+
if (selector === "events") {
|
|
8
|
+
yield* replayWorkflowEventLog(internals, workflowId, afterSequence);
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
yield* replayWorkflowTokens(internals, workflowId, afterSequence);
|
|
12
|
+
}
|
|
13
|
+
export async function snapshotWorkflowFeedTail(internals, workflowId, selector) {
|
|
14
|
+
if (selector === "events") {
|
|
15
|
+
const head = internals.eventLogHeads.get(workflowId);
|
|
16
|
+
if (head)
|
|
17
|
+
return head.sequence;
|
|
18
|
+
return (await new EventLog(internals.storage, workflowId).loadHead()).sequence;
|
|
19
|
+
}
|
|
20
|
+
const chunks = await loadStoredStreamChunks(internals.storage, workflowId, TOKENS_STREAM_KEY);
|
|
21
|
+
if (chunks.length === 0)
|
|
22
|
+
return -1;
|
|
23
|
+
let max = -1;
|
|
24
|
+
for (const chunk of chunks)
|
|
25
|
+
if (chunk.sequence > max)
|
|
26
|
+
max = chunk.sequence;
|
|
27
|
+
return max;
|
|
28
|
+
}
|
|
29
|
+
export function subscribeWorkflowFeedCommits(internals, workflowId, selector, listener) {
|
|
30
|
+
const key = workflowFeedListenerKey(workflowId, selector);
|
|
31
|
+
let bucket = internals.workflowFeedListeners.get(key);
|
|
32
|
+
if (!bucket) {
|
|
33
|
+
bucket = new Set;
|
|
34
|
+
internals.workflowFeedListeners.set(key, bucket);
|
|
35
|
+
}
|
|
36
|
+
bucket.add(listener);
|
|
37
|
+
return () => {
|
|
38
|
+
const set = internals.workflowFeedListeners.get(key);
|
|
39
|
+
if (!set)
|
|
40
|
+
return;
|
|
41
|
+
set.delete(listener);
|
|
42
|
+
if (set.size === 0)
|
|
43
|
+
internals.workflowFeedListeners.delete(key);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export async function* replayWorkflowEventLog(internals, workflowId, afterSequence) {
|
|
47
|
+
const eventLog = new EventLog(internals.storage, workflowId);
|
|
48
|
+
let fromSequence = afterSequence < 0 ? 0 : afterSequence + 1;
|
|
49
|
+
const watermark = await readEventLogWatermark(internals.storage, workflowId);
|
|
50
|
+
if (watermark !== null && fromSequence < watermark.sequence) {
|
|
51
|
+
yield {
|
|
52
|
+
workflowId,
|
|
53
|
+
selector: "events",
|
|
54
|
+
kind: COMPACTION_BOUNDARY_KIND,
|
|
55
|
+
sequence: watermark.sequence - 1,
|
|
56
|
+
timestamp: 0,
|
|
57
|
+
payload: { compactedBefore: watermark.sequence, requestedFrom: fromSequence }
|
|
58
|
+
};
|
|
59
|
+
fromSequence = watermark.sequence;
|
|
60
|
+
}
|
|
61
|
+
for await (const entry of eventLog.scan({ fromSequence }))
|
|
62
|
+
yield {
|
|
63
|
+
workflowId,
|
|
64
|
+
selector: "events",
|
|
65
|
+
kind: entry.type,
|
|
66
|
+
sequence: entry.sequence,
|
|
67
|
+
timestamp: entry.timestamp,
|
|
68
|
+
payload: entry.payload
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
export async function* replayWorkflowTokens(internals, workflowId, afterSequence) {
|
|
72
|
+
const chunks = afterSequence >= 0 ? await loadStoredStreamChunks(internals.storage, workflowId, TOKENS_STREAM_KEY, {
|
|
73
|
+
after: afterSequence
|
|
74
|
+
}) : await loadStoredStreamChunks(internals.storage, workflowId, TOKENS_STREAM_KEY), timestamp = Date.now();
|
|
75
|
+
for (const chunk of chunks)
|
|
76
|
+
yield {
|
|
77
|
+
workflowId,
|
|
78
|
+
selector: "tokens",
|
|
79
|
+
kind: STREAM_CHUNK_KIND,
|
|
80
|
+
sequence: chunk.sequence,
|
|
81
|
+
timestamp,
|
|
82
|
+
payload: chunk.value
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export function notifyWorkflowFeedCommit(internals, workflowId, selector, record) {
|
|
86
|
+
const bucket = internals.workflowFeedListeners.get(workflowFeedListenerKey(workflowId, selector));
|
|
87
|
+
if (!bucket || bucket.size === 0)
|
|
88
|
+
return;
|
|
89
|
+
const listeners = [...bucket];
|
|
90
|
+
for (const listener of listeners)
|
|
91
|
+
try {
|
|
92
|
+
const result = listener(record);
|
|
93
|
+
if (result && typeof result.then === "function")
|
|
94
|
+
result.catch(() => {});
|
|
95
|
+
} catch {}
|
|
96
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build the storage operations that keep the workflow visibility indexes in
|
|
3
|
+
* sync with workflow state writes. Called from every state-mutation chokepoint
|
|
4
|
+
* (start, status transition, attribute/tag updates, termination cleanup).
|
|
5
|
+
*
|
|
6
|
+
* The runtime path mirrors the backfill path: read the per-workflow manifest
|
|
7
|
+
* to learn which index keys are currently occupied, delete them, write the
|
|
8
|
+
* new index keys derived from `nextState`, and persist the new manifest. When
|
|
9
|
+
* `nextState` is `null` the workflow is being removed and we simply drop the
|
|
10
|
+
* manifest and every key it lists.
|
|
11
|
+
*
|
|
12
|
+
* @module core/engine/workflow-indexes
|
|
13
|
+
*/
|
|
14
|
+
import { type BatchOperation, type Storage } from '../../storage/interface.ts';
|
|
15
|
+
import type { WorkflowState } from '../types.ts';
|
|
16
|
+
import { WeftError } from '../weft-error.ts';
|
|
17
|
+
/**
|
|
18
|
+
* Bumped whenever the index layout or population rules change. The engine
|
|
19
|
+
* compares this to the watermark stored at `wf-idx-meta:version` to decide
|
|
20
|
+
* whether the indexes are trustworthy for query-time use.
|
|
21
|
+
*/
|
|
22
|
+
export declare const WORKFLOW_VISIBILITY_INDEX_VERSION = 1;
|
|
23
|
+
/**
|
|
24
|
+
* Hard cap on the number of candidate workflow ids the engine will
|
|
25
|
+
* materialize for a single `list` or `aggregate` query. Exceeding the cap
|
|
26
|
+
* raises a {@link WorkflowListScanCapExceededError} — the operator should
|
|
27
|
+
* narrow the filter or run the visibility-index backfill so a narrower
|
|
28
|
+
* scan applies.
|
|
29
|
+
*/
|
|
30
|
+
export declare const MAX_LIST_SCAN_ROWS = 1000000;
|
|
31
|
+
/**
|
|
32
|
+
* Thrown when `list`/`aggregate` would materialize more candidates than
|
|
33
|
+
* {@link MAX_LIST_SCAN_ROWS} allows. Transport layers map this to an
|
|
34
|
+
* `Unprocessable` fault.
|
|
35
|
+
*/
|
|
36
|
+
export declare class WorkflowListScanCapExceededError extends WeftError<'WorkflowListScanCapExceededError'> {
|
|
37
|
+
readonly cap: number;
|
|
38
|
+
constructor(cap: number);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Per-workflow manifest payload — the exact set of visibility-index keys
|
|
42
|
+
* this workflow occupies right now. Decoded from the
|
|
43
|
+
* `wf-idx-manifest:{id}` storage entry.
|
|
44
|
+
*/
|
|
45
|
+
export type WorkflowVisibilityManifest = {
|
|
46
|
+
/** Schema version that wrote this manifest. */
|
|
47
|
+
version: number;
|
|
48
|
+
/** Sorted list of index keys this workflow currently owns. */
|
|
49
|
+
keys: string[];
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Compute the visibility-index keys a workflow should occupy given its
|
|
53
|
+
* current state. Returns a deterministic, sorted list so manifests compare
|
|
54
|
+
* stably across runs.
|
|
55
|
+
*/
|
|
56
|
+
export declare function deriveWorkflowVisibilityIndexKeys(state: WorkflowState): string[];
|
|
57
|
+
/**
|
|
58
|
+
* Decode a manifest payload read from storage. Returns `null` for missing or
|
|
59
|
+
* malformed values so callers fall back to the "treat as empty" path — the
|
|
60
|
+
* derived diff still produces the right set of inserts.
|
|
61
|
+
*/
|
|
62
|
+
export declare function decodeWorkflowVisibilityManifest(bytes: Uint8Array | null): WorkflowVisibilityManifest | null;
|
|
63
|
+
/**
|
|
64
|
+
* Result of {@link buildWorkflowVisibilityIndexOperations}. `nextManifestKeys`
|
|
65
|
+
* is `null` when the workflow is being removed (delete manifest + all keys).
|
|
66
|
+
*/
|
|
67
|
+
export type WorkflowVisibilityIndexUpdate = {
|
|
68
|
+
batchOps: BatchOperation[];
|
|
69
|
+
nextManifestKeys: string[] | null;
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* Build the batch operations required to transition a workflow's visibility
|
|
73
|
+
* indexes from `currentManifest` (whatever the storage currently records) to
|
|
74
|
+
* the keys derived from `nextState`. Pass `nextState = null` to drop the
|
|
75
|
+
* workflow's index footprint entirely.
|
|
76
|
+
*
|
|
77
|
+
* The caller is responsible for appending the returned `batchOps` to its own
|
|
78
|
+
* write batch so storage commits the index update atomically with the state
|
|
79
|
+
* write it accompanies.
|
|
80
|
+
*/
|
|
81
|
+
export declare function buildWorkflowVisibilityIndexOperations(workflowId: string, currentManifest: WorkflowVisibilityManifest | null, nextState: WorkflowState | null): WorkflowVisibilityIndexUpdate;
|
|
82
|
+
/**
|
|
83
|
+
* Variant of {@link buildWorkflowVisibilityIndexOperations} that derives the
|
|
84
|
+
* previous index keys directly from `previousState` instead of from a stored
|
|
85
|
+
* manifest. Use this on every runtime state-transition write — it avoids an
|
|
86
|
+
* extra storage round-trip per write and is always correct because the index
|
|
87
|
+
* is a deterministic function of state.
|
|
88
|
+
*
|
|
89
|
+
* The manifest-based variant remains the right choice for backfill, which
|
|
90
|
+
* may need to delete rows produced by a different schema version.
|
|
91
|
+
*/
|
|
92
|
+
export declare function buildWorkflowVisibilityIndexTransition(workflowId: string, previousState: WorkflowState | null, nextState: WorkflowState | null): WorkflowVisibilityIndexUpdate;
|
|
93
|
+
/**
|
|
94
|
+
* Watermark recorded by the backfill once every workflow has a manifest at
|
|
95
|
+
* the current schema version. `engine.list()` and `engine.aggregate()` only
|
|
96
|
+
* consult the new `wf-idx-*` rows when the watermark is `current`.
|
|
97
|
+
*/
|
|
98
|
+
export type WorkflowVisibilityWatermark = 'current' | 'stale';
|
|
99
|
+
/**
|
|
100
|
+
* Read the visibility-index watermark. Returns `'current'` when the
|
|
101
|
+
* persisted version is at or above {@link WORKFLOW_VISIBILITY_INDEX_VERSION}.
|
|
102
|
+
*/
|
|
103
|
+
export declare function getWorkflowVisibilityWatermark(storage: Storage): Promise<WorkflowVisibilityWatermark>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { KEYS } from "../../storage/interface.js";
|
|
2
|
+
import { decode, encode } from "../codec.js";
|
|
3
|
+
import { WeftError } from "../weft-error.js";
|
|
4
|
+
export const WORKFLOW_VISIBILITY_INDEX_VERSION = 1, MAX_LIST_SCAN_ROWS = 1e6;
|
|
5
|
+
|
|
6
|
+
export class WorkflowListScanCapExceededError extends WeftError {
|
|
7
|
+
cap;
|
|
8
|
+
constructor(cap) {
|
|
9
|
+
super("WorkflowListScanCapExceededError", `Listing workflows would exceed the scan cap of ${cap}. Narrow the filter or run the visibility-index backfill.`);
|
|
10
|
+
this.cap = cap;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function deriveWorkflowVisibilityIndexKeys(state) {
|
|
14
|
+
const keys = [
|
|
15
|
+
KEYS.workflowVisibilityStatus(state.status, state.id),
|
|
16
|
+
KEYS.workflowVisibilityType(state.type, state.id),
|
|
17
|
+
KEYS.workflowVisibilityCreated(state.createdAt, state.id),
|
|
18
|
+
KEYS.workflowVisibilityUpdated(state.updatedAt, state.id)
|
|
19
|
+
];
|
|
20
|
+
if (state.executionDeadline !== void 0)
|
|
21
|
+
keys.push(KEYS.workflowVisibilityDeadline(state.executionDeadline, state.id));
|
|
22
|
+
return keys.toSorted();
|
|
23
|
+
}
|
|
24
|
+
export function decodeWorkflowVisibilityManifest(bytes) {
|
|
25
|
+
if (!bytes)
|
|
26
|
+
return null;
|
|
27
|
+
let payload;
|
|
28
|
+
try {
|
|
29
|
+
payload = decode(bytes);
|
|
30
|
+
} catch {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
if (typeof payload !== "object" || payload === null)
|
|
34
|
+
return null;
|
|
35
|
+
const candidate = payload;
|
|
36
|
+
if (typeof candidate.version !== "number")
|
|
37
|
+
return null;
|
|
38
|
+
if (!Array.isArray(candidate.keys))
|
|
39
|
+
return null;
|
|
40
|
+
const keys = [];
|
|
41
|
+
for (const entry of candidate.keys) {
|
|
42
|
+
if (typeof entry !== "string")
|
|
43
|
+
return null;
|
|
44
|
+
keys.push(entry);
|
|
45
|
+
}
|
|
46
|
+
return { version: candidate.version, keys };
|
|
47
|
+
}
|
|
48
|
+
export function buildWorkflowVisibilityIndexOperations(workflowId, currentManifest, nextState) {
|
|
49
|
+
return buildWorkflowVisibilityIndexOperationsInternal(workflowId, currentManifest?.keys ?? [], currentManifest !== null, nextState);
|
|
50
|
+
}
|
|
51
|
+
export function buildWorkflowVisibilityIndexTransition(workflowId, previousState, nextState) {
|
|
52
|
+
const previousKeys = previousState ? deriveWorkflowVisibilityIndexKeys(previousState) : [];
|
|
53
|
+
return buildWorkflowVisibilityIndexOperationsInternal(workflowId, previousKeys, previousState !== null, nextState);
|
|
54
|
+
}
|
|
55
|
+
function buildWorkflowVisibilityIndexOperationsInternal(workflowId, previousKeys, hadPriorManifest, nextState) {
|
|
56
|
+
const manifestKey = KEYS.workflowVisibilityManifest(workflowId);
|
|
57
|
+
if (nextState === null) {
|
|
58
|
+
const batchOps = [];
|
|
59
|
+
for (const key of previousKeys)
|
|
60
|
+
batchOps.push({ type: "delete", key });
|
|
61
|
+
if (hadPriorManifest)
|
|
62
|
+
batchOps.push({ type: "delete", key: manifestKey });
|
|
63
|
+
return { batchOps, nextManifestKeys: null };
|
|
64
|
+
}
|
|
65
|
+
const nextKeys = deriveWorkflowVisibilityIndexKeys(nextState), previousSet = new Set(previousKeys), nextSet = new Set(nextKeys), batchOps = [];
|
|
66
|
+
for (const key of previousKeys)
|
|
67
|
+
if (!nextSet.has(key))
|
|
68
|
+
batchOps.push({ type: "delete", key });
|
|
69
|
+
for (const key of nextKeys)
|
|
70
|
+
if (!previousSet.has(key))
|
|
71
|
+
batchOps.push({ type: "put", key, value: EMPTY_INDEX_VALUE });
|
|
72
|
+
const manifestPayload = {
|
|
73
|
+
version: WORKFLOW_VISIBILITY_INDEX_VERSION,
|
|
74
|
+
keys: nextKeys
|
|
75
|
+
};
|
|
76
|
+
batchOps.push({ type: "put", key: manifestKey, value: encode(manifestPayload) });
|
|
77
|
+
return { batchOps, nextManifestKeys: nextKeys };
|
|
78
|
+
}
|
|
79
|
+
const EMPTY_INDEX_VALUE = new Uint8Array(0);
|
|
80
|
+
export async function getWorkflowVisibilityWatermark(storage) {
|
|
81
|
+
const bytes = await storage.get(KEYS.workflowVisibilityMetaVersion());
|
|
82
|
+
if (!bytes)
|
|
83
|
+
return "stale";
|
|
84
|
+
let payload;
|
|
85
|
+
try {
|
|
86
|
+
payload = decode(bytes);
|
|
87
|
+
} catch {
|
|
88
|
+
return "stale";
|
|
89
|
+
}
|
|
90
|
+
if (typeof payload !== "number")
|
|
91
|
+
return "stale";
|
|
92
|
+
return payload >= WORKFLOW_VISIBILITY_INDEX_VERSION ? "current" : "stale";
|
|
93
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AttributeFilter, ListFilter, WorkflowState } from '../types.ts';
|
|
2
|
+
import type { EngineInternals } from './internals.ts';
|
|
3
|
+
/** Stream decoded workflow states that match a list filter. */
|
|
4
|
+
export declare function streamMatchingWorkflowStates(internals: EngineInternals, filter?: ListFilter): AsyncGenerator<WorkflowState>;
|
|
5
|
+
/** Resolve the indexed workflow IDs implied by tag and search-attribute filters. */
|
|
6
|
+
export declare function resolveConstrainedIds(internals: EngineInternals, filter: ListFilter | undefined, normalizedTagFilters: readonly string[] | undefined): Promise<Set<string> | null>;
|
|
7
|
+
/** Query a single search-attribute index filter and return matching workflow IDs. */
|
|
8
|
+
export declare function queryAttributeIndex(internals: EngineInternals, filter: AttributeFilter): Promise<Set<string>>;
|
|
9
|
+
export declare function isTopLevelWorkflowStateKey(key: string): boolean;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import {
|
|
2
|
+
KEYS,
|
|
3
|
+
encodeStorageKeyComponent,
|
|
4
|
+
tryDecodeStorageKeyComponent
|
|
5
|
+
} from "../../storage/interface.js";
|
|
6
|
+
import { failureCategorySearchValues, isFailureCategory } from "../failure-categories.js";
|
|
7
|
+
import { encodeAttributeValue, searchAttributeName } from "../search-attributes.js";
|
|
8
|
+
import { normalizeWorkflowTags } from "../workflow-tags.js";
|
|
9
|
+
import { intersectIdentifierSets, matchesListFilter } from "./state-utilities.js";
|
|
10
|
+
import { decodeWorkflowState } from "./validation.js";
|
|
11
|
+
const ATTRIBUTE_SCAN_CONCURRENCY = 8;
|
|
12
|
+
export async function* streamMatchingWorkflowStates(internals, filter) {
|
|
13
|
+
const normalizedTagFilters = normalizeWorkflowTags(filter?.tags), constrainedIds = await resolveConstrainedIds(internals, filter, normalizedTagFilters);
|
|
14
|
+
if (constrainedIds !== null) {
|
|
15
|
+
for (const workflowId of constrainedIds) {
|
|
16
|
+
const state = await loadMatchingWorkflowState(internals, workflowId, filter, constrainedIds, normalizedTagFilters);
|
|
17
|
+
if (state === null)
|
|
18
|
+
continue;
|
|
19
|
+
yield state;
|
|
20
|
+
}
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
for await (const [key, value] of internals.storage.scan("wf:")) {
|
|
24
|
+
if (!isTopLevelWorkflowStateKey(key))
|
|
25
|
+
continue;
|
|
26
|
+
const state = decodeWorkflowState(value);
|
|
27
|
+
if (!matchesListFilter(state, filter, constrainedIds, normalizedTagFilters))
|
|
28
|
+
continue;
|
|
29
|
+
yield state;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
async function loadMatchingWorkflowState(internals, workflowId, filter, constrainedIds, normalizedTagFilters) {
|
|
33
|
+
const stateBytes = await internals.storage.get(KEYS.workflow(workflowId));
|
|
34
|
+
if (!stateBytes)
|
|
35
|
+
return null;
|
|
36
|
+
const state = decodeWorkflowState(stateBytes);
|
|
37
|
+
if (!matchesListFilter(state, filter, constrainedIds, normalizedTagFilters))
|
|
38
|
+
return null;
|
|
39
|
+
return state;
|
|
40
|
+
}
|
|
41
|
+
export async function resolveConstrainedIds(internals, filter, normalizedTagFilters) {
|
|
42
|
+
const attributeFilters = filter?.attributes, hasAttributeFilters = attributeFilters !== void 0 && attributeFilters.length > 0, hasTagFilters = normalizedTagFilters !== void 0 && normalizedTagFilters.length > 0;
|
|
43
|
+
if (!hasAttributeFilters && !hasTagFilters)
|
|
44
|
+
return null;
|
|
45
|
+
const queries = buildConstrainedIdQueries(internals, normalizedTagFilters, attributeFilters);
|
|
46
|
+
return intersectIdentifierSets(await runConstrainedIdQueries(queries));
|
|
47
|
+
}
|
|
48
|
+
export async function queryAttributeIndex(internals, filter) {
|
|
49
|
+
const ids = new Set, attributeName = searchAttributeName(filter.key), prefix = `idx:${attributeName}:`;
|
|
50
|
+
if (filter.value !== void 0)
|
|
51
|
+
await collectExactAttributeMatches(internals, filter, attributeName, ids);
|
|
52
|
+
else
|
|
53
|
+
await collectRangeAttributeMatches(internals, filter, prefix, ids);
|
|
54
|
+
return ids;
|
|
55
|
+
}
|
|
56
|
+
function buildConstrainedIdQueries(internals, normalizedTagFilters, attributeFilters) {
|
|
57
|
+
return [
|
|
58
|
+
...normalizedTagFilters?.map((tag) => () => queryTagIndex(internals, tag)) ?? [],
|
|
59
|
+
...attributeFilters?.map((attributeFilter) => () => queryAttributeIndex(internals, attributeFilter)) ?? []
|
|
60
|
+
];
|
|
61
|
+
}
|
|
62
|
+
async function runConstrainedIdQueries(queries) {
|
|
63
|
+
const idSets = Array.from({ length: queries.length });
|
|
64
|
+
let nextIndex = 0;
|
|
65
|
+
const runWorker = async () => {
|
|
66
|
+
while (nextIndex < queries.length) {
|
|
67
|
+
const currentIndex = nextIndex;
|
|
68
|
+
nextIndex += 1;
|
|
69
|
+
idSets[currentIndex] = await queries[currentIndex]();
|
|
70
|
+
}
|
|
71
|
+
}, workerLimit = Math.max(1, Math.min(ATTRIBUTE_SCAN_CONCURRENCY, queries.length));
|
|
72
|
+
await Promise.all(Array.from({ length: workerLimit }, () => runWorker()));
|
|
73
|
+
return idSets.map(requireConstrainedIdSet);
|
|
74
|
+
}
|
|
75
|
+
function requireConstrainedIdSet(idSet) {
|
|
76
|
+
if (idSet === void 0)
|
|
77
|
+
throw Error("Attribute index query did not produce a workflow ID set.");
|
|
78
|
+
return idSet;
|
|
79
|
+
}
|
|
80
|
+
async function collectExactAttributeMatches(internals, filter, attributeName, ids) {
|
|
81
|
+
const exactValue = filter.value;
|
|
82
|
+
if (exactValue === void 0)
|
|
83
|
+
return;
|
|
84
|
+
const values = filter.key === "failureCategory" && isFailureCategory(exactValue) ? failureCategorySearchValues(exactValue) : [exactValue];
|
|
85
|
+
for (const value of values) {
|
|
86
|
+
const exactPrefix = `idx:${attributeName}:${encodeAttributeValue(value)}:`;
|
|
87
|
+
for await (const [key] of internals.storage.scan(exactPrefix))
|
|
88
|
+
addWorkflowIdFromIndexKey(ids, key.slice(exactPrefix.length));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
async function collectRangeAttributeMatches(internals, filter, prefix, ids) {
|
|
92
|
+
for await (const [key] of internals.storage.scan(prefix, attributeRangeScanOptions(filter))) {
|
|
93
|
+
const afterPrefix = key.slice(prefix.length), lastColon = afterPrefix.lastIndexOf(":");
|
|
94
|
+
if (lastColon >= 0)
|
|
95
|
+
addWorkflowIdFromIndexKey(ids, afterPrefix.slice(lastColon + 1));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function attributeRangeScanOptions(filter) {
|
|
99
|
+
const scanOptions = {};
|
|
100
|
+
if (filter.gte !== void 0)
|
|
101
|
+
scanOptions.gte = `idx:${searchAttributeName(filter.key)}:${encodeAttributeValue(filter.gte)}:`;
|
|
102
|
+
if (filter.gt !== void 0)
|
|
103
|
+
scanOptions.gt = `idx:${searchAttributeName(filter.key)}:${encodeAttributeValue(filter.gt)}:\xFF`;
|
|
104
|
+
if (filter.lte !== void 0)
|
|
105
|
+
scanOptions.lte = `idx:${searchAttributeName(filter.key)}:${encodeAttributeValue(filter.lte)}:\xFF`;
|
|
106
|
+
if (filter.lt !== void 0)
|
|
107
|
+
scanOptions.lt = `idx:${searchAttributeName(filter.key)}:${encodeAttributeValue(filter.lt)}:`;
|
|
108
|
+
return scanOptions;
|
|
109
|
+
}
|
|
110
|
+
function addWorkflowIdFromIndexKey(ids, encodedWorkflowId) {
|
|
111
|
+
const workflowId = tryDecodeStorageKeyComponent(encodedWorkflowId);
|
|
112
|
+
if (workflowId !== null)
|
|
113
|
+
ids.add(workflowId);
|
|
114
|
+
}
|
|
115
|
+
async function queryTagIndex(internals, tag) {
|
|
116
|
+
const ids = new Set, prefix = `tag:${encodeStorageKeyComponent(tag)}:`;
|
|
117
|
+
for await (const [key] of internals.storage.scan(prefix)) {
|
|
118
|
+
const workflowId = tryDecodeStorageKeyComponent(key.slice(prefix.length));
|
|
119
|
+
if (workflowId !== null)
|
|
120
|
+
ids.add(workflowId);
|
|
121
|
+
}
|
|
122
|
+
return ids;
|
|
123
|
+
}
|
|
124
|
+
export function isTopLevelWorkflowStateKey(key) {
|
|
125
|
+
return !key.slice(3).includes(":");
|
|
126
|
+
}
|