@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,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Query helpers that read the workflow visibility indexes laid down by
|
|
3
|
+
* {@link buildWorkflowVisibilityIndexTransition} / backfill. Each helper
|
|
4
|
+
* produces a `Set<string>` of candidate workflow ids; the caller
|
|
5
|
+
* intersects sets across dimensions to narrow the slow-path scan.
|
|
6
|
+
*
|
|
7
|
+
* Every helper assumes the visibility-index watermark is `current` — the
|
|
8
|
+
* caller checks {@link getWorkflowVisibilityWatermark} once per query and
|
|
9
|
+
* falls back to the legacy scan path when it is `stale`.
|
|
10
|
+
*
|
|
11
|
+
* @module core/engine/workflow-visibility-queries
|
|
12
|
+
*/
|
|
13
|
+
import { type Storage } from '../../storage/interface.ts';
|
|
14
|
+
import type { FailureCategory, WorkflowStatus } from '../types/identity.ts';
|
|
15
|
+
import type { TimeRange } from '../types/options.ts';
|
|
16
|
+
/**
|
|
17
|
+
* Match every workflow whose `status` appears in `statuses`. Empty input
|
|
18
|
+
* returns an empty set (intersection short-circuits to "no matches").
|
|
19
|
+
*/
|
|
20
|
+
export declare function queryWorkflowStatusIndex(storage: Storage, statuses: readonly WorkflowStatus[]): Promise<Set<string>>;
|
|
21
|
+
/** Match every workflow with the given `type`. */
|
|
22
|
+
export declare function queryWorkflowTypeIndex(storage: Storage, type: string): Promise<Set<string>>;
|
|
23
|
+
/**
|
|
24
|
+
* Time-range scan over `wf-idx-{kind}:` (created, updated, or deadline).
|
|
25
|
+
* Returns the candidate ids the engine post-filter will refine.
|
|
26
|
+
*/
|
|
27
|
+
export declare function queryWorkflowTimeRangeIndex(storage: Storage, kind: 'created' | 'updated' | 'deadline', range: TimeRange): Promise<Set<string>>;
|
|
28
|
+
/**
|
|
29
|
+
* Enumerate candidate workflow ids whose raw id starts with `idPrefix`.
|
|
30
|
+
* Uses the primary-key `wf:{enc(prefix)}` scan, which is sound because the
|
|
31
|
+
* encoder is identity + concatenation-preserving on the validated safe
|
|
32
|
+
* subset (see `src/storage/interface.test.ts`). The caller still re-checks
|
|
33
|
+
* `state.id.startsWith(idPrefix)` as a defensive post-filter.
|
|
34
|
+
*/
|
|
35
|
+
export declare function queryWorkflowIdPrefixCandidates(storage: Storage, idPrefix: string): Promise<Set<string>>;
|
|
36
|
+
/**
|
|
37
|
+
* Re-export for callers that only need the failure-category value type.
|
|
38
|
+
* Keeps imports tidy at the call sites.
|
|
39
|
+
*/
|
|
40
|
+
export type { FailureCategory };
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import {
|
|
2
|
+
encodeStorageKeyComponent,
|
|
3
|
+
tryDecodeStorageKeyComponent
|
|
4
|
+
} from "../../storage/interface.js";
|
|
5
|
+
function isFinitePositive(value) {
|
|
6
|
+
return Number.isFinite(value) && value >= 0;
|
|
7
|
+
}
|
|
8
|
+
function sortableTimestamp(value) {
|
|
9
|
+
return String(value).padStart(16, "0");
|
|
10
|
+
}
|
|
11
|
+
async function collectWorkflowIdsFromIndex(storage, prefix, options) {
|
|
12
|
+
const ids = new Set;
|
|
13
|
+
for await (const [key] of storage.scan(prefix, options)) {
|
|
14
|
+
const encoded = key.slice(key.lastIndexOf(":") + 1), workflowId = tryDecodeStorageKeyComponent(encoded);
|
|
15
|
+
if (workflowId !== null)
|
|
16
|
+
ids.add(workflowId);
|
|
17
|
+
}
|
|
18
|
+
return ids;
|
|
19
|
+
}
|
|
20
|
+
export async function queryWorkflowStatusIndex(storage, statuses) {
|
|
21
|
+
const ids = new Set;
|
|
22
|
+
for (const status of statuses) {
|
|
23
|
+
const prefix = `wf-idx-status:${encodeStorageKeyComponent(status)}:`;
|
|
24
|
+
for (const id of await collectWorkflowIdsFromIndex(storage, prefix))
|
|
25
|
+
ids.add(id);
|
|
26
|
+
}
|
|
27
|
+
return ids;
|
|
28
|
+
}
|
|
29
|
+
export async function queryWorkflowTypeIndex(storage, type) {
|
|
30
|
+
const prefix = `wf-idx-type:${encodeStorageKeyComponent(type)}:`;
|
|
31
|
+
return collectWorkflowIdsFromIndex(storage, prefix);
|
|
32
|
+
}
|
|
33
|
+
export async function queryWorkflowTimeRangeIndex(storage, kind, range) {
|
|
34
|
+
const prefix = `wf-idx-${kind}:`, scanOptions = {};
|
|
35
|
+
if (range.gte !== void 0 && isFinitePositive(range.gte))
|
|
36
|
+
scanOptions.gte = `${prefix}${sortableTimestamp(range.gte)}:`;
|
|
37
|
+
if (range.gt !== void 0 && isFinitePositive(range.gt))
|
|
38
|
+
scanOptions.gt = `${prefix}${sortableTimestamp(range.gt)}:\xFF`;
|
|
39
|
+
if (range.lte !== void 0 && isFinitePositive(range.lte))
|
|
40
|
+
scanOptions.lte = `${prefix}${sortableTimestamp(range.lte)}:\xFF`;
|
|
41
|
+
if (range.lt !== void 0 && isFinitePositive(range.lt))
|
|
42
|
+
scanOptions.lt = `${prefix}${sortableTimestamp(range.lt)}:`;
|
|
43
|
+
return collectWorkflowIdsFromIndex(storage, prefix, scanOptions);
|
|
44
|
+
}
|
|
45
|
+
export async function queryWorkflowIdPrefixCandidates(storage, idPrefix) {
|
|
46
|
+
const ids = new Set, prefix = `wf:${encodeStorageKeyComponent(idPrefix)}`;
|
|
47
|
+
for await (const [key] of storage.scan(prefix)) {
|
|
48
|
+
const idPart = key.slice(3);
|
|
49
|
+
if (idPart.includes(":"))
|
|
50
|
+
continue;
|
|
51
|
+
const workflowId = tryDecodeStorageKeyComponent(idPart);
|
|
52
|
+
if (workflowId !== null)
|
|
53
|
+
ids.add(workflowId);
|
|
54
|
+
}
|
|
55
|
+
return ids;
|
|
56
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { Storage as WeftStorage } from '../storage/interface.ts';
|
|
2
|
+
/** Build a cleanup reporter that preserves the workflow identifier for downstream error handling. */
|
|
3
|
+
export declare function createCleanupErrorReporter(onCleanupError: (source: string, error: unknown, workflowId: string) => void, workflowId: string): (source: string, error: unknown, _ignoredWorkflowId: string) => void;
|
|
4
|
+
/** Create a finalizer callback that evicts only the stale handle entry that was actually finalized. */
|
|
5
|
+
export declare function createHandleCacheFinalizer<TValue extends object>(handleCache: Map<string, {
|
|
6
|
+
ref: Pick<WeakRef<TValue>, 'deref'>;
|
|
7
|
+
}>): (workflowId: string) => void;
|
|
8
|
+
/** Create the periodic update-response cleanup callback used by the engine interval. */
|
|
9
|
+
export declare function createExpiredResponseCleanupTick(updateCoordinator: {
|
|
10
|
+
cleanupExpiredResponses(): Promise<unknown>;
|
|
11
|
+
}, onCleanupError: (source: string, error: unknown) => void): () => void;
|
|
12
|
+
/** Delete partially written stream chunks and surface any cleanup failure through the callback. */
|
|
13
|
+
export declare function cleanupPartialStreamChunks(storage: WeftStorage, workflowId: string, key: string, writtenKeys: string[], onCleanupError: (source: string, error: unknown, workflowId: string) => void): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Settled outcome for a single `ctx.runAll` branch. Returned by
|
|
16
|
+
* `executeRunAllBranchesSettled` so callers can record partial-failure
|
|
17
|
+
* state in the parent operation's cache entry before propagating the
|
|
18
|
+
* first rejection.
|
|
19
|
+
*/
|
|
20
|
+
export type RunAllBranchOutcome = {
|
|
21
|
+
status: 'fulfilled';
|
|
22
|
+
name: string;
|
|
23
|
+
value: unknown;
|
|
24
|
+
} | {
|
|
25
|
+
status: 'rejected';
|
|
26
|
+
name: string;
|
|
27
|
+
reason: unknown;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Result of `executeRunAllBranchesSettled`. `firstError` carries the
|
|
31
|
+
* original rejection reason captured by settlement timing (matching
|
|
32
|
+
* native `Promise.all` behavior — whichever branch rejects first at
|
|
33
|
+
* runtime, not whichever appears first in branch insertion order).
|
|
34
|
+
* `hasFirstError` distinguishes "no rejection" from "rejected with
|
|
35
|
+
* `undefined`" (a workflow that threw `undefined` explicitly).
|
|
36
|
+
*/
|
|
37
|
+
export type RunAllSettledResult = {
|
|
38
|
+
outcomes: RunAllBranchOutcome[];
|
|
39
|
+
hasFirstError: boolean;
|
|
40
|
+
firstError: unknown;
|
|
41
|
+
};
|
|
42
|
+
export type RunAllBranch = readonly [fn: Function] | readonly [fn: Function, input: unknown];
|
|
43
|
+
/**
|
|
44
|
+
* Execute every `ctx.runAll()` branch and return per-branch settled
|
|
45
|
+
* outcomes plus the first rejection captured by settlement timing.
|
|
46
|
+
* Never rejects: callers inspect the result and decide how to surface
|
|
47
|
+
* failure. Used by the top-level run-all dispatch path so fulfilled
|
|
48
|
+
* branches can be persisted before any rejection propagates.
|
|
49
|
+
*
|
|
50
|
+
* The first-rejection-by-settlement-timing contract is shared with
|
|
51
|
+
* `dispatchBranchesAllSettled` via the `FirstRejectionCapture` helper
|
|
52
|
+
* to keep both fan-out paths consistent.
|
|
53
|
+
*/
|
|
54
|
+
export declare function executeRunAllBranchesSettled(branches: Record<string, RunAllBranch>, callActivity: (fn: Function, input: unknown) => unknown): Promise<RunAllSettledResult>;
|
|
55
|
+
/** Execute the `ctx.runAll()` branches and return a name-keyed result record. */
|
|
56
|
+
export declare function executeRunAllBranches(branches: Record<string, RunAllBranch>, callActivity: (fn: Function, input: unknown) => unknown): Promise<Record<string, unknown>>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { KEYS } from "../storage/interface.js";
|
|
2
|
+
import { captureFirstRejection, createFirstRejectionCapture } from "./engine/parallel-dispatch.js";
|
|
3
|
+
export function createCleanupErrorReporter(onCleanupError, workflowId) {
|
|
4
|
+
return (source, error) => {
|
|
5
|
+
onCleanupError(source, error, workflowId);
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export function createHandleCacheFinalizer(handleCache) {
|
|
9
|
+
return (workflowId) => {
|
|
10
|
+
const entry = handleCache.get(workflowId);
|
|
11
|
+
if (!entry || entry.ref.deref() !== void 0)
|
|
12
|
+
return;
|
|
13
|
+
handleCache.delete(workflowId);
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export function createExpiredResponseCleanupTick(updateCoordinator, onCleanupError) {
|
|
17
|
+
return () => {
|
|
18
|
+
updateCoordinator.cleanupExpiredResponses().catch((error) => {
|
|
19
|
+
onCleanupError("cleanupExpiredResponses", error);
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export async function cleanupPartialStreamChunks(storage, workflowId, key, writtenKeys, onCleanupError) {
|
|
24
|
+
if (writtenKeys.length === 0)
|
|
25
|
+
return;
|
|
26
|
+
const deleteOperations = [
|
|
27
|
+
...writtenKeys.map((writtenKey) => ({ type: "delete", key: writtenKey })),
|
|
28
|
+
{ type: "delete", key: KEYS.streamMetadata(workflowId, key) }
|
|
29
|
+
];
|
|
30
|
+
await storage.batch(deleteOperations).catch((deleteError) => {
|
|
31
|
+
onCleanupError("cleanupPartialStreamChunks", deleteError, workflowId);
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export async function executeRunAllBranchesSettled(branches, callActivity) {
|
|
35
|
+
const entries = Object.entries(branches), capture = createFirstRejectionCapture();
|
|
36
|
+
return { outcomes: await Promise.all(entries.map(async ([name, [fn, input]]) => {
|
|
37
|
+
try {
|
|
38
|
+
const value = await callActivity(fn, input);
|
|
39
|
+
return { status: "fulfilled", name, value };
|
|
40
|
+
} catch (error) {
|
|
41
|
+
captureFirstRejection(capture, error);
|
|
42
|
+
return { status: "rejected", name, reason: error };
|
|
43
|
+
}
|
|
44
|
+
})), hasFirstError: capture.hasFirstError, firstError: capture.firstError };
|
|
45
|
+
}
|
|
46
|
+
export async function executeRunAllBranches(branches, callActivity) {
|
|
47
|
+
const results = {}, entries = Object.entries(branches);
|
|
48
|
+
await Promise.all(entries.map(async ([name, [fn, input]]) => {
|
|
49
|
+
results[name] = await callActivity(fn, input);
|
|
50
|
+
}));
|
|
51
|
+
return results;
|
|
52
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './engine/index.ts';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./engine/index.js";
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared primitives for the hash-chained event log: record shapes, the genesis
|
|
3
|
+
* hash, type guards, the byte hasher, and the head reader. Split out so both
|
|
4
|
+
* {@link EventLog} (`event-log.ts`) and the watermark-aware verifier
|
|
5
|
+
* (`event-log-verify.ts`) can depend on them without an import cycle.
|
|
6
|
+
*
|
|
7
|
+
* @module core/event-log-shared
|
|
8
|
+
*/
|
|
9
|
+
import type { Storage } from '../storage/interface.ts';
|
|
10
|
+
import type { WorkflowVersionTuple } from './workflow-version-tuple.ts';
|
|
11
|
+
/** Hash value used as `prevHash` for the very first entry in a log. */
|
|
12
|
+
export declare const GENESIS_HASH = "0000000000000000";
|
|
13
|
+
/** A single entry in the event log, as stored in the KV backend. */
|
|
14
|
+
export interface WorkflowLogEntry {
|
|
15
|
+
/** Discriminates the entry type, e.g. `'workflow:checkpoint'`. */
|
|
16
|
+
type: string;
|
|
17
|
+
/** Workflow this entry belongs to. */
|
|
18
|
+
workflowId: string;
|
|
19
|
+
/** Zero-based monotonic sequence number. */
|
|
20
|
+
sequence: number;
|
|
21
|
+
/**
|
|
22
|
+
* wyhash (16 hex chars) of the *encoded bytes* of the previous entry.
|
|
23
|
+
* The first entry carries {@link GENESIS_HASH}.
|
|
24
|
+
*/
|
|
25
|
+
prevHash: string;
|
|
26
|
+
/** Arbitrary event payload. */
|
|
27
|
+
payload: unknown;
|
|
28
|
+
/** Unix timestamp (ms) at the time of the append. */
|
|
29
|
+
timestamp: number;
|
|
30
|
+
/**
|
|
31
|
+
* Workflow, agent, and tool version tuple captured at the time of this
|
|
32
|
+
* entry. Only present when the caller passes a `versionTuple` argument.
|
|
33
|
+
* Absent for entries written by non-agent workflows or callers that opt out.
|
|
34
|
+
*/
|
|
35
|
+
versionTuple?: WorkflowVersionTuple;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* The head record stored at `ev:{workflowId}:head`.
|
|
39
|
+
* Tracks both the latest sequence number and the hash of the last committed
|
|
40
|
+
* entry so that subsequent appends can chain without a second storage read.
|
|
41
|
+
*/
|
|
42
|
+
export interface EventHeadRecord {
|
|
43
|
+
sequence: number;
|
|
44
|
+
lastHash: string;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The head state for a workflow with no committed entries.
|
|
48
|
+
* Used as the starting point when appending the first event.
|
|
49
|
+
* Frozen to prevent accidental mutation of the shared genesis sentinel.
|
|
50
|
+
*/
|
|
51
|
+
export declare const EMPTY_EVENT_HEAD: Readonly<EventHeadRecord>;
|
|
52
|
+
/** Compute a 16-character hex hash of an arbitrary byte buffer. */
|
|
53
|
+
export declare function hashBytes(bytes: Uint8Array): string;
|
|
54
|
+
/** Narrow an unknown decoded value to {@link WorkflowLogEntry}. */
|
|
55
|
+
export declare function isWorkflowLogEntry(value: unknown): value is WorkflowLogEntry;
|
|
56
|
+
/** Narrow an unknown decoded value to {@link EventHeadRecord}. */
|
|
57
|
+
export declare function isEventHeadRecord(value: unknown): value is EventHeadRecord;
|
|
58
|
+
/**
|
|
59
|
+
* Read the current head record for a workflow from storage.
|
|
60
|
+
*
|
|
61
|
+
* Returns {@link EMPTY_EVENT_HEAD} (`sequence: -1`) when no head record exists
|
|
62
|
+
* (i.e., the log is empty). This lets the first append compute `sequence = 0`
|
|
63
|
+
* and `prevHash = GENESIS_HASH`.
|
|
64
|
+
*/
|
|
65
|
+
export declare function readEventHead(storage: Storage, workflowId: string): Promise<EventHeadRecord>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { hashBytes as portableHashBytes } from "../runtime/portable.js";
|
|
2
|
+
import { KEYS } from "../storage/interface.js";
|
|
3
|
+
import { decode } from "./codec.js";
|
|
4
|
+
export const GENESIS_HASH = "0000000000000000", EMPTY_EVENT_HEAD = Object.freeze({
|
|
5
|
+
sequence: -1,
|
|
6
|
+
lastHash: GENESIS_HASH
|
|
7
|
+
});
|
|
8
|
+
export function hashBytes(bytes) {
|
|
9
|
+
return portableHashBytes(bytes);
|
|
10
|
+
}
|
|
11
|
+
export function isWorkflowLogEntry(value) {
|
|
12
|
+
if (typeof value !== "object" || value === null)
|
|
13
|
+
return !1;
|
|
14
|
+
const obj = value;
|
|
15
|
+
return typeof obj.type === "string" && typeof obj.workflowId === "string" && typeof obj.sequence === "number" && typeof obj.prevHash === "string" && typeof obj.timestamp === "number" && "payload" in obj;
|
|
16
|
+
}
|
|
17
|
+
export function isEventHeadRecord(value) {
|
|
18
|
+
if (typeof value !== "object" || value === null)
|
|
19
|
+
return !1;
|
|
20
|
+
const obj = value;
|
|
21
|
+
return typeof obj.sequence === "number" && typeof obj.lastHash === "string";
|
|
22
|
+
}
|
|
23
|
+
export async function readEventHead(storage, workflowId) {
|
|
24
|
+
const bytes = await storage.get(KEYS.eventHead(workflowId));
|
|
25
|
+
if (bytes === null)
|
|
26
|
+
return { sequence: -1, lastHash: GENESIS_HASH };
|
|
27
|
+
const decoded = decode(bytes);
|
|
28
|
+
if (isEventHeadRecord(decoded))
|
|
29
|
+
return decoded;
|
|
30
|
+
return { sequence: -1, lastHash: GENESIS_HASH };
|
|
31
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Watermark-aware hash-chain verification for the event log.
|
|
3
|
+
*
|
|
4
|
+
* Split out from `event-log.ts` so the (intricate) concurrent-compaction retry
|
|
5
|
+
* logic lives on its own. Depends only on the shared primitives in
|
|
6
|
+
* `event-log-shared.ts` and the watermark reader in `event-log-compaction.ts`,
|
|
7
|
+
* so there is no import cycle with `event-log.ts`.
|
|
8
|
+
*
|
|
9
|
+
* @module core/event-log-verify
|
|
10
|
+
*/
|
|
11
|
+
import type { Storage } from '../storage/interface.ts';
|
|
12
|
+
/**
|
|
13
|
+
* Result of {@link verifyEventLog}. The `indeterminate` variant keeps
|
|
14
|
+
* `valid: false` so existing `if (result.valid)` callers never get a false
|
|
15
|
+
* positive, but signals that verification could not complete because the log
|
|
16
|
+
* was being compacted concurrently — it is NOT a corruption report (it carries
|
|
17
|
+
* no `firstInvalidSequence`).
|
|
18
|
+
*/
|
|
19
|
+
export type VerifyResult = {
|
|
20
|
+
valid: true;
|
|
21
|
+
} | {
|
|
22
|
+
valid: false;
|
|
23
|
+
firstInvalidSequence: number;
|
|
24
|
+
} | {
|
|
25
|
+
valid: false;
|
|
26
|
+
indeterminate: true;
|
|
27
|
+
reason: 'concurrent-compaction';
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Walk a workflow's event log and verify hash-chain integrity.
|
|
31
|
+
*
|
|
32
|
+
* When event-log compaction has truncated the early records, a
|
|
33
|
+
* {@link EventLogWatermark} at `ev:{id}:watermark` marks where the surviving
|
|
34
|
+
* chain begins; verification seeds its walk from the watermark's `prevHash`
|
|
35
|
+
* instead of {@link GENESIS_HASH} so a compacted log does not look broken.
|
|
36
|
+
*
|
|
37
|
+
* A compaction can commit concurrently (before or during the scan); to avoid
|
|
38
|
+
* reporting a *false* chain break, the walk re-reads the watermark on any break
|
|
39
|
+
* and, only when the watermark has ACTUALLY ADVANCED past the snapshot the
|
|
40
|
+
* failing pass used, restarts — up to a small bound. A stable break is genuine
|
|
41
|
+
* corruption. If it never stabilizes, the result is flagged `indeterminate`.
|
|
42
|
+
*
|
|
43
|
+
* Corruption cases worth calling out: a watermark pointing at a first surviving
|
|
44
|
+
* record that is no longer present is reported at `watermark.sequence`; a tail
|
|
45
|
+
* record lost while the head still points past it is reported at the missing
|
|
46
|
+
* sequence (the tail is cross-checked against `ev:{id}:head`); and a compacted
|
|
47
|
+
* log whose watermark was removed (e.g. a code rollback) is reported broken at
|
|
48
|
+
* the expected genesis sequence rather than silently passing — compaction is
|
|
49
|
+
* one-way.
|
|
50
|
+
*/
|
|
51
|
+
export declare function verifyEventLog(storage: Storage, workflowId: string): Promise<VerifyResult>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { KEYS } from "../storage/interface.js";
|
|
2
|
+
import { decode } from "./codec.js";
|
|
3
|
+
import { readEventLogWatermark } from "./engine/event-log-compaction.js";
|
|
4
|
+
import {
|
|
5
|
+
EMPTY_EVENT_HEAD,
|
|
6
|
+
GENESIS_HASH,
|
|
7
|
+
hashBytes,
|
|
8
|
+
isWorkflowLogEntry,
|
|
9
|
+
readEventHead
|
|
10
|
+
} from "./event-log-shared.js";
|
|
11
|
+
export async function verifyEventLog(storage, workflowId) {
|
|
12
|
+
const MAX_ATTEMPTS = 5;
|
|
13
|
+
for (let attempt = 0;attempt < MAX_ATTEMPTS; attempt += 1) {
|
|
14
|
+
const watermark = await readEventLogWatermark(storage, workflowId), head = await readEventHead(storage, workflowId), result = await verifyAgainstSnapshot(storage, workflowId, watermark, head);
|
|
15
|
+
if (result.outcome === "ok")
|
|
16
|
+
return { valid: !0 };
|
|
17
|
+
const watermarkAfter = await readEventLogWatermark(storage, workflowId), headAfter = await readEventHead(storage, workflowId), watermarkMoved = (watermarkAfter?.sequence ?? -1) > (watermark?.sequence ?? -1), headMoved = headAfter.sequence !== head.sequence || headAfter.lastHash !== head.lastHash;
|
|
18
|
+
if (watermarkMoved || headMoved)
|
|
19
|
+
continue;
|
|
20
|
+
return { valid: !1, firstInvalidSequence: result.firstInvalidSequence };
|
|
21
|
+
}
|
|
22
|
+
return { valid: !1, indeterminate: !0, reason: "concurrent-compaction" };
|
|
23
|
+
}
|
|
24
|
+
async function verifyAgainstSnapshot(storage, workflowId, watermark, head) {
|
|
25
|
+
const seed = watermark?.prevHash ?? GENESIS_HASH, expectedFirstSequence = watermark?.sequence ?? 0, prefix = KEYS.eventPrefix(workflowId), options = watermark ? { gte: KEYS.event(workflowId, watermark.sequence) } : void 0, scan = await scanChain(storage, prefix, options, seed, expectedFirstSequence);
|
|
26
|
+
if (scan.outcome === "invalid")
|
|
27
|
+
return scan;
|
|
28
|
+
if (scan.entriesSeen === 0 && watermark !== null)
|
|
29
|
+
return { outcome: "invalid", firstInvalidSequence: watermark.sequence };
|
|
30
|
+
return verifyTailAgainstHead(scan, head);
|
|
31
|
+
}
|
|
32
|
+
function verifyTailAgainstHead(scan, head) {
|
|
33
|
+
if (head.sequence === EMPTY_EVENT_HEAD.sequence)
|
|
34
|
+
return scan.entriesSeen === 0 ? { outcome: "ok" } : { outcome: "invalid", firstInvalidSequence: 0 };
|
|
35
|
+
if (scan.entriesSeen === 0)
|
|
36
|
+
return { outcome: "invalid", firstInvalidSequence: head.sequence };
|
|
37
|
+
if (scan.lastSequence !== head.sequence)
|
|
38
|
+
return { outcome: "invalid", firstInvalidSequence: scan.lastSequence + 1 };
|
|
39
|
+
if (scan.lastHash !== head.lastHash)
|
|
40
|
+
return { outcome: "invalid", firstInvalidSequence: scan.lastSequence };
|
|
41
|
+
return { outcome: "ok" };
|
|
42
|
+
}
|
|
43
|
+
async function scanChain(storage, prefix, options, seed, expectedFirstSequence) {
|
|
44
|
+
let previousHash = seed, entriesSeen = 0, lastSequence = -1;
|
|
45
|
+
for await (const [, bytes] of storage.scan(prefix, options)) {
|
|
46
|
+
const decoded = decode(bytes);
|
|
47
|
+
if (!isWorkflowLogEntry(decoded))
|
|
48
|
+
continue;
|
|
49
|
+
const link = checkChainLink(decoded, previousHash, entriesSeen === 0, expectedFirstSequence);
|
|
50
|
+
if (link.outcome === "invalid")
|
|
51
|
+
return link;
|
|
52
|
+
entriesSeen += 1;
|
|
53
|
+
lastSequence = decoded.sequence;
|
|
54
|
+
previousHash = hashBytes(bytes);
|
|
55
|
+
}
|
|
56
|
+
return { outcome: "scanned", entriesSeen, lastSequence, lastHash: previousHash };
|
|
57
|
+
}
|
|
58
|
+
function checkChainLink(entry, previousHash, isFirst, expectedFirstSequence) {
|
|
59
|
+
if (isFirst && entry.sequence !== expectedFirstSequence)
|
|
60
|
+
return { outcome: "invalid", firstInvalidSequence: expectedFirstSequence };
|
|
61
|
+
if (entry.prevHash !== previousHash)
|
|
62
|
+
return { outcome: "invalid", firstInvalidSequence: entry.sequence };
|
|
63
|
+
return { outcome: "ok" };
|
|
64
|
+
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hash-chained event log for durable workflow event sourcing.
|
|
3
|
+
*
|
|
4
|
+
* Each workflow accumulates an append-only log of `WorkflowLogEntry` records
|
|
5
|
+
* stored under `ev:{workflowId}:{sequence}`. A separate head record at
|
|
6
|
+
* `ev:{workflowId}:head` tracks the current sequence counter and the hash of
|
|
7
|
+
* the most recently committed entry.
|
|
8
|
+
*
|
|
9
|
+
* Entries are chained by a `prevHash` field (wyhash of the previous entry's
|
|
10
|
+
* encoded bytes), enabling tamper detection via {@link EventLog.verify}.
|
|
11
|
+
*
|
|
12
|
+
* Callers that hold a batch accumulator (e.g. the engine's checkpoint writer)
|
|
13
|
+
* pass it to {@link EventLog.append} so that the event write is included in
|
|
14
|
+
* the same atomic `storage.batch()` call as the checkpoint — the two can never
|
|
15
|
+
* diverge.
|
|
16
|
+
*
|
|
17
|
+
* @module core/event-log
|
|
18
|
+
*/
|
|
19
|
+
import type { BatchOperation, Storage } from '../storage/interface.ts';
|
|
20
|
+
import { EMPTY_EVENT_HEAD, type EventHeadRecord, type WorkflowLogEntry } from './event-log-shared.ts';
|
|
21
|
+
import { type VerifyResult } from './event-log-verify.ts';
|
|
22
|
+
import type { WorkflowVersionTuple } from './workflow-version-tuple.ts';
|
|
23
|
+
export { EMPTY_EVENT_HEAD };
|
|
24
|
+
export type { EventHeadRecord, VerifyResult, WorkflowLogEntry };
|
|
25
|
+
/**
|
|
26
|
+
* Result returned from `appendToBatch()`. Carries the updated head
|
|
27
|
+
* record AND the entry's wall-clock `timestamp` so post-commit
|
|
28
|
+
* listeners can emit the exact value written into the durable log
|
|
29
|
+
* without reaching for `Date.now()` a second time (which could
|
|
30
|
+
* produce a different value under a ticking `getNow` used in tests).
|
|
31
|
+
*/
|
|
32
|
+
export type AppendToBatchResult = {
|
|
33
|
+
readonly newHead: EventHeadRecord;
|
|
34
|
+
readonly timestamp: number;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Append-only, hash-chained event log scoped to a single workflow.
|
|
38
|
+
*
|
|
39
|
+
* All reads and writes go through the {@link Storage} interface so the log
|
|
40
|
+
* works with every backend (memory, SQLite, LMDB, Turso, IndexedDB).
|
|
41
|
+
*/
|
|
42
|
+
export declare class EventLog {
|
|
43
|
+
#private;
|
|
44
|
+
constructor(storage: Storage, workflowId: string);
|
|
45
|
+
/**
|
|
46
|
+
* Synchronously build the batch operations for a new event entry and push
|
|
47
|
+
* them onto `batchOperations`.
|
|
48
|
+
*
|
|
49
|
+
* This is the fast path used by the engine: no storage reads occur.
|
|
50
|
+
* The caller is responsible for supplying the current `head` (from an
|
|
51
|
+
* in-memory cache) and storing the returned `newHead` back into that cache
|
|
52
|
+
* after the batch is committed.
|
|
53
|
+
*
|
|
54
|
+
* @returns The updated head record to cache for the next call.
|
|
55
|
+
*/
|
|
56
|
+
appendToBatch(event: {
|
|
57
|
+
type: string;
|
|
58
|
+
payload: unknown;
|
|
59
|
+
}, batchOperations: BatchOperation[], head: Readonly<EventHeadRecord>, versionTuple?: WorkflowVersionTuple): AppendToBatchResult;
|
|
60
|
+
/**
|
|
61
|
+
* Append a new event entry to the log.
|
|
62
|
+
*
|
|
63
|
+
* When `batchOperations` is supplied the writes are pushed onto it instead
|
|
64
|
+
* of being flushed immediately, enabling the caller to include them in the
|
|
65
|
+
* same atomic `storage.batch()` call as a checkpoint write.
|
|
66
|
+
*
|
|
67
|
+
* @returns The new sequence number, the hash of the appended entry, and the
|
|
68
|
+
* updated head record that the caller should cache for the next append.
|
|
69
|
+
*/
|
|
70
|
+
append(event: {
|
|
71
|
+
type: string;
|
|
72
|
+
payload: unknown;
|
|
73
|
+
}, batchOperations?: BatchOperation[], versionTuple?: WorkflowVersionTuple): Promise<{
|
|
74
|
+
sequence: number;
|
|
75
|
+
hash: string;
|
|
76
|
+
newHead: EventHeadRecord;
|
|
77
|
+
}>;
|
|
78
|
+
/**
|
|
79
|
+
* Iterate over all log entries in ascending sequence order.
|
|
80
|
+
*
|
|
81
|
+
* @param options.fromSequence Start at this sequence number (inclusive). Defaults to 0.
|
|
82
|
+
*/
|
|
83
|
+
scan(options?: {
|
|
84
|
+
fromSequence?: number;
|
|
85
|
+
}): AsyncIterable<WorkflowLogEntry>;
|
|
86
|
+
/**
|
|
87
|
+
* Return all entries up to and including `toStep`.
|
|
88
|
+
*
|
|
89
|
+
* "Step" here is the `sequence` field. Entries with `sequence > toStep`
|
|
90
|
+
* are excluded, so callers can reconstruct state as it was at any point.
|
|
91
|
+
*/
|
|
92
|
+
replay(toStep: number): Promise<WorkflowLogEntry[]>;
|
|
93
|
+
/**
|
|
94
|
+
* Walk the log and verify hash-chain integrity, tolerating concurrent
|
|
95
|
+
* compaction and a compaction watermark. Delegates to {@link verifyEventLog};
|
|
96
|
+
* see that function for the full watermark-seeding, retry, and corruption
|
|
97
|
+
* semantics.
|
|
98
|
+
*/
|
|
99
|
+
verify(): Promise<VerifyResult>;
|
|
100
|
+
/**
|
|
101
|
+
* Read the current head record from storage and return it.
|
|
102
|
+
*
|
|
103
|
+
* This is the async counterpart to the synchronous cache lookup in the
|
|
104
|
+
* engine. Call it when resuming a workflow after an engine restart so that
|
|
105
|
+
* the in-memory `#eventLogHeads` cache can be re-seeded before the next
|
|
106
|
+
* {@link appendToBatch} call.
|
|
107
|
+
*
|
|
108
|
+
* Returns `EMPTY_EVENT_HEAD` (sequence -1) when no head record exists
|
|
109
|
+
* (i.e., the log is empty or this workflow has never written an event).
|
|
110
|
+
*/
|
|
111
|
+
loadHead(): Promise<EventHeadRecord>;
|
|
112
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { KEYS } from "../storage/interface.js";
|
|
2
|
+
import { decode, encode } from "./codec.js";
|
|
3
|
+
import {
|
|
4
|
+
EMPTY_EVENT_HEAD,
|
|
5
|
+
hashBytes,
|
|
6
|
+
isWorkflowLogEntry,
|
|
7
|
+
readEventHead
|
|
8
|
+
} from "./event-log-shared.js";
|
|
9
|
+
import { verifyEventLog } from "./event-log-verify.js";
|
|
10
|
+
|
|
11
|
+
export { EMPTY_EVENT_HEAD };
|
|
12
|
+
|
|
13
|
+
export class EventLog {
|
|
14
|
+
#storage;
|
|
15
|
+
#workflowId;
|
|
16
|
+
constructor(storage, workflowId) {
|
|
17
|
+
this.#storage = storage;
|
|
18
|
+
this.#workflowId = workflowId;
|
|
19
|
+
}
|
|
20
|
+
appendToBatch(event, batchOperations, head, versionTuple) {
|
|
21
|
+
const { entry, encoded, newHead } = this.#buildEntry(event, head, versionTuple);
|
|
22
|
+
batchOperations.push({ type: "put", key: KEYS.event(this.#workflowId, newHead.sequence), value: encoded }, { type: "put", key: KEYS.eventHead(this.#workflowId), value: encode(newHead) });
|
|
23
|
+
return { newHead, timestamp: entry.timestamp };
|
|
24
|
+
}
|
|
25
|
+
async append(event, batchOperations, versionTuple) {
|
|
26
|
+
const head = await this.#readHead(), { encoded, hash, newHead } = this.#buildEntry(event, head, versionTuple), entryPut = {
|
|
27
|
+
type: "put",
|
|
28
|
+
key: KEYS.event(this.#workflowId, newHead.sequence),
|
|
29
|
+
value: encoded
|
|
30
|
+
}, headPut = {
|
|
31
|
+
type: "put",
|
|
32
|
+
key: KEYS.eventHead(this.#workflowId),
|
|
33
|
+
value: encode(newHead)
|
|
34
|
+
};
|
|
35
|
+
if (batchOperations)
|
|
36
|
+
batchOperations.push(entryPut, headPut);
|
|
37
|
+
else
|
|
38
|
+
await this.#storage.batch([entryPut, headPut]);
|
|
39
|
+
return { sequence: newHead.sequence, hash, newHead };
|
|
40
|
+
}
|
|
41
|
+
async* scan(options) {
|
|
42
|
+
const from = options?.fromSequence ?? 0, prefix = KEYS.eventPrefix(this.#workflowId), gte = KEYS.event(this.#workflowId, from);
|
|
43
|
+
for await (const [, bytes] of this.#storage.scan(prefix, { gte })) {
|
|
44
|
+
const decoded = decode(bytes);
|
|
45
|
+
if (isWorkflowLogEntry(decoded))
|
|
46
|
+
yield decoded;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
async replay(toStep) {
|
|
50
|
+
const results = [];
|
|
51
|
+
for await (const entry of this.scan()) {
|
|
52
|
+
if (entry.sequence > toStep)
|
|
53
|
+
break;
|
|
54
|
+
results.push(entry);
|
|
55
|
+
}
|
|
56
|
+
return results;
|
|
57
|
+
}
|
|
58
|
+
async verify() {
|
|
59
|
+
return verifyEventLog(this.#storage, this.#workflowId);
|
|
60
|
+
}
|
|
61
|
+
async loadHead() {
|
|
62
|
+
return this.#readHead();
|
|
63
|
+
}
|
|
64
|
+
#buildEntry(event, head, versionTuple) {
|
|
65
|
+
const sequence = head.sequence + 1, prevHash = head.lastHash, entry = {
|
|
66
|
+
type: event.type,
|
|
67
|
+
workflowId: this.#workflowId,
|
|
68
|
+
sequence,
|
|
69
|
+
prevHash,
|
|
70
|
+
payload: event.payload,
|
|
71
|
+
timestamp: Date.now()
|
|
72
|
+
};
|
|
73
|
+
if (versionTuple !== void 0)
|
|
74
|
+
entry.versionTuple = versionTuple;
|
|
75
|
+
const encoded = encode(entry), hash = hashBytes(encoded);
|
|
76
|
+
return { entry, encoded, hash, newHead: { sequence, lastHash: hash } };
|
|
77
|
+
}
|
|
78
|
+
async#readHead() {
|
|
79
|
+
return readEventHead(this.#storage, this.#workflowId);
|
|
80
|
+
}
|
|
81
|
+
}
|