@lostgradient/weft 0.23.1 → 0.24.1
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/README.md +72 -4
- package/dist/cli/codegen-emit-dedup.d.ts +81 -0
- package/dist/cli/codegen-emit-dedup.js +45 -0
- package/dist/cli/codegen-emit-registry.d.ts +90 -0
- package/dist/cli/codegen-emit-registry.js +50 -0
- package/dist/cli/codegen-emit.d.ts +26 -39
- package/dist/cli/codegen-emit.js +4 -27
- package/dist/cli/codegen-validate.d.ts +49 -0
- package/dist/cli/codegen-validate.js +186 -0
- package/dist/cli/codegen.js +6 -87
- package/dist/cli/conformance.js +5 -2
- package/dist/cli/generated/operation-catalog.snapshot.json +381 -3
- package/dist/cli/generated/operation-client.generated.d.ts +350 -10
- package/dist/cli/generated/operation-client.generated.js +14 -0
- package/dist/cli/output.js +1 -1
- package/dist/cli/parse-schedule-arguments.js +15 -3
- package/dist/cli/schedule.js +2 -1
- package/dist/cli/storage-factory.js +2 -0
- package/dist/cli/types.d.ts +2 -1
- package/dist/cli/workflow-commands.js +2 -0
- package/dist/cli-main.js +1 -1
- package/dist/client/http-client-requests.js +6 -9
- package/dist/client/start-body.js +1 -0
- package/dist/core/application-payload-digest.d.ts +42 -0
- package/dist/core/application-payload-digest.js +76 -0
- package/dist/core/application-primitive-abort.d.ts +50 -0
- package/dist/core/application-primitive-abort.js +40 -0
- package/dist/core/application-primitive-attempt-registry.d.ts +74 -0
- package/dist/core/application-primitive-attempt-registry.js +73 -0
- package/dist/core/application-primitive-codec.d.ts +36 -0
- package/dist/core/application-primitive-codec.js +56 -0
- package/dist/core/application-primitive-commit.d.ts +67 -0
- package/dist/core/application-primitive-commit.js +66 -0
- package/dist/core/application-primitive-guards.d.ts +62 -0
- package/dist/core/application-primitive-guards.js +89 -0
- package/dist/core/application-primitive-payload.d.ts +29 -0
- package/dist/core/application-primitive-payload.js +65 -0
- package/dist/core/application-primitive-timing.d.ts +18 -0
- package/dist/core/application-primitive-timing.js +22 -0
- package/dist/core/atomic-state.js +2 -0
- package/dist/core/catalog/codec.d.ts +40 -0
- package/dist/core/catalog/codec.js +45 -0
- package/dist/core/catalog/errors.d.ts +104 -0
- package/dist/core/catalog/errors.js +41 -0
- package/dist/core/catalog/index.d.ts +25 -0
- package/dist/core/catalog/index.js +22 -0
- package/dist/core/catalog/reference-counts.d.ts +120 -0
- package/dist/core/catalog/reference-counts.js +28 -0
- package/dist/core/catalog/removal.d.ts +105 -0
- package/dist/core/catalog/removal.js +30 -0
- package/dist/core/catalog/storage-io.d.ts +101 -0
- package/dist/core/catalog/storage-io.js +106 -0
- package/dist/core/catalog/types.d.ts +108 -0
- package/dist/core/catalog/types.js +0 -0
- package/dist/core/catalog/workflow-catalog.d.ts +165 -0
- package/dist/core/catalog/workflow-catalog.js +198 -0
- package/dist/core/compare-codepoint.d.ts +13 -0
- package/dist/core/compare-codepoint.js +7 -0
- package/dist/core/compression.js +2 -0
- package/dist/core/context/attributes.d.ts +1 -1
- package/dist/core/context/durable-operations.d.ts +2 -2
- package/dist/core/context/index.js +5 -3
- package/dist/core/context/state-namespace.d.ts +1 -1
- package/dist/core/contract/build.d.ts +64 -0
- package/dist/core/contract/build.js +99 -0
- package/dist/core/contract/compatibility.d.ts +187 -0
- package/dist/core/contract/compatibility.js +37 -0
- package/dist/core/contract/failure.d.ts +64 -0
- package/dist/core/contract/failure.js +4 -0
- package/dist/core/contract/hash.d.ts +92 -0
- package/dist/core/contract/hash.js +34 -0
- package/dist/core/contract/index.d.ts +21 -0
- package/dist/core/contract/index.js +22 -0
- package/dist/core/contract/limits.d.ts +74 -0
- package/dist/core/contract/limits.js +1 -0
- package/dist/core/contract/manifest-parse-schema.d.ts +37 -0
- package/dist/core/contract/manifest-parse-schema.js +106 -0
- package/dist/core/contract/manifest-parse.d.ts +76 -0
- package/dist/core/contract/manifest-parse.js +189 -0
- package/dist/core/contract/manifest.d.ts +56 -0
- package/dist/core/contract/manifest.js +31 -0
- package/dist/core/contract/normalize.d.ts +97 -0
- package/dist/core/contract/normalize.js +127 -0
- package/dist/core/contract/revision.d.ts +29 -0
- package/dist/core/contract/revision.js +5 -0
- package/dist/core/contract/types.d.ts +274 -0
- package/dist/core/contract/types.js +1 -0
- package/dist/core/engine/activity-resolution.js +17 -17
- package/dist/core/engine/bulk-operations-purge.js +14 -20
- package/dist/core/engine/bulk-operations-retry.d.ts +9 -0
- package/dist/core/engine/bulk-operations-retry.js +177 -0
- package/dist/core/engine/bulk-operations-shared.d.ts +18 -0
- package/dist/core/engine/bulk-operations-shared.js +14 -0
- package/dist/core/engine/bulk-operations.js +8 -167
- package/dist/core/engine/callback-creators-bundles.js +4 -2
- package/dist/core/engine/callback-creators-core.js +9 -1
- package/dist/core/engine/callback-creators-schedule.js +2 -2
- package/dist/core/engine/catalog-activation.d.ts +40 -0
- package/dist/core/engine/catalog-activation.js +17 -0
- package/dist/core/engine/catalog-events.d.ts +36 -0
- package/dist/core/engine/catalog-events.js +15 -0
- package/dist/core/engine/catalog-readiness.d.ts +49 -0
- package/dist/core/engine/catalog-readiness.js +61 -0
- package/dist/core/engine/catalog-removal.d.ts +236 -0
- package/dist/core/engine/catalog-removal.js +123 -0
- package/dist/core/engine/catalog-tombstone-recovery.d.ts +56 -0
- package/dist/core/engine/catalog-tombstone-recovery.js +39 -0
- package/dist/core/engine/constraints.js +5 -1
- package/dist/core/engine/construction.d.ts +2 -2
- package/dist/core/engine/construction.js +4 -2
- package/dist/core/engine/decode-revision.d.ts +32 -0
- package/dist/core/engine/decode-revision.js +9 -0
- package/dist/core/engine/disposal.d.ts +6 -2
- package/dist/core/engine/disposal.js +26 -3
- package/dist/core/engine/dynamic-source-errors.d.ts +81 -0
- package/dist/core/engine/dynamic-source-errors.js +25 -0
- package/dist/core/engine/dynamic-source-execution.d.ts +173 -0
- package/dist/core/engine/dynamic-source-execution.js +108 -0
- package/dist/core/engine/engine-internal-types.d.ts +16 -0
- package/dist/core/engine/engine-workflows-namespace.d.ts +140 -0
- package/dist/core/engine/engine-workflows-namespace.js +51 -0
- package/dist/core/engine/finalizer-metadata.d.ts +22 -0
- package/dist/core/engine/finalizer-metadata.js +12 -0
- package/dist/core/engine/handle-result.js +2 -0
- package/dist/core/engine/index.d.ts +91 -0
- package/dist/core/engine/index.js +78 -6
- package/dist/core/engine/inline-launch-queue.js +1 -1
- package/dist/core/engine/internals.d.ts +54 -15
- package/dist/core/engine/internals.js +6 -0
- package/dist/core/engine/lifecycle/checkpoint-launch.d.ts +29 -0
- package/dist/core/engine/lifecycle/checkpoint-launch.js +75 -0
- package/dist/core/engine/lifecycle/delayed-start-registration.d.ts +30 -0
- package/dist/core/engine/lifecycle/delayed-start-registration.js +11 -0
- package/dist/core/engine/lifecycle/fork-helpers.d.ts +33 -1
- package/dist/core/engine/lifecycle/fork-helpers.js +3 -1
- package/dist/core/engine/lifecycle/recovery-revision-groups.d.ts +75 -0
- package/dist/core/engine/lifecycle/recovery-revision-groups.js +64 -0
- package/dist/core/engine/lifecycle/resume-generation-guard.d.ts +58 -0
- package/dist/core/engine/lifecycle/resume-generation-guard.js +11 -0
- package/dist/core/engine/lifecycle/resume.js +18 -9
- package/dist/core/engine/lifecycle/shared.d.ts +43 -0
- package/dist/core/engine/lifecycle/standalone-claim-acquire.d.ts +12 -0
- package/dist/core/engine/lifecycle/standalone-claim-acquire.js +6 -0
- package/dist/core/engine/lifecycle/start-commit-errors.d.ts +12 -0
- package/dist/core/engine/lifecycle/start-commit-errors.js +6 -0
- package/dist/core/engine/lifecycle/start-commit.d.ts +22 -7
- package/dist/core/engine/lifecycle/start-commit.js +49 -15
- package/dist/core/engine/lifecycle/start-exec.d.ts +18 -2
- package/dist/core/engine/lifecycle/start-exec.js +7 -5
- package/dist/core/engine/lifecycle/start-or-signal-create.js +1 -3
- package/dist/core/engine/lifecycle/start-or-signal.js +1 -1
- package/dist/core/engine/lifecycle/start-precondition-attribution.d.ts +49 -0
- package/dist/core/engine/lifecycle/start-precondition-attribution.js +13 -0
- package/dist/core/engine/lifecycle/start-revision-resolution.d.ts +34 -0
- package/dist/core/engine/lifecycle/start-revision-resolution.js +11 -0
- package/dist/core/engine/lifecycle/start-state.d.ts +16 -0
- package/dist/core/engine/lifecycle/start-state.js +60 -0
- package/dist/core/engine/lifecycle/start-terminal-conflict-purge.d.ts +66 -3
- package/dist/core/engine/lifecycle/start-terminal-conflict-purge.js +13 -3
- package/dist/core/engine/lifecycle/start.d.ts +16 -6
- package/dist/core/engine/lifecycle/start.js +39 -66
- package/dist/core/engine/lifecycle/transition.d.ts +3 -4
- package/dist/core/engine/lifecycle/transition.js +30 -80
- package/dist/core/engine/lifecycle.d.ts +4 -2
- package/dist/core/engine/lifecycle.js +6 -6
- package/dist/core/engine/listing.js +15 -1
- package/dist/core/engine/memo-durable-activity.js +4 -1
- package/dist/core/engine/nonterminal-revision-count.d.ts +25 -0
- package/dist/core/engine/nonterminal-revision-count.js +16 -0
- package/dist/core/engine/operations-time.d.ts +5 -23
- package/dist/core/engine/operations-time.js +13 -11
- package/dist/core/engine/ownership-bootstrap.d.ts +1 -1
- package/dist/core/engine/pinned-schedule-revision-count.d.ts +26 -0
- package/dist/core/engine/pinned-schedule-revision-count.js +19 -0
- package/dist/core/engine/pinned-schedule-revision.d.ts +76 -0
- package/dist/core/engine/pinned-schedule-revision.js +53 -0
- package/dist/core/engine/registration.d.ts +106 -0
- package/dist/core/engine/registration.js +28 -7
- package/dist/core/engine/retention.js +9 -2
- package/dist/core/engine/revision-errors.d.ts +71 -0
- package/dist/core/engine/revision-errors.js +13 -0
- package/dist/core/engine/schedule-revision-fire.d.ts +17 -0
- package/dist/core/engine/schedule-revision-fire.js +3 -0
- package/dist/core/engine/schedule-run.js +2 -1
- package/dist/core/engine/schedules.d.ts +2 -1
- package/dist/core/engine/schedules.js +28 -9
- package/dist/core/engine/source-diagnostics.d.ts +76 -0
- package/dist/core/engine/source-diagnostics.js +105 -0
- package/dist/core/engine/source-registration.d.ts +42 -0
- package/dist/core/engine/source-registration.js +38 -0
- package/dist/core/engine/source-resolution.d.ts +101 -0
- package/dist/core/engine/source-resolution.js +154 -0
- package/dist/core/engine/source-runtime-state.d.ts +92 -0
- package/dist/core/engine/source-runtime-state.js +36 -0
- package/dist/core/engine/storage-io.d.ts +19 -2
- package/dist/core/engine/storage-io.js +21 -2
- package/dist/core/engine/termination/finalizer-registration.d.ts +18 -0
- package/dist/core/engine/termination/finalizer-registration.js +21 -0
- package/dist/core/engine/termination/finalizer.d.ts +16 -19
- package/dist/core/engine/termination/finalizer.js +3 -3
- package/dist/core/engine/time-operation-callbacks.d.ts +32 -0
- package/dist/core/engine/time-operation-callbacks.js +0 -0
- package/dist/core/engine/validation/schedule-cadence.d.ts +16 -0
- package/dist/core/engine/validation/schedule-cadence.js +20 -0
- package/dist/core/engine/validation/schedule-options.d.ts +4 -1
- package/dist/core/engine/validation/schedule-options.js +14 -0
- package/dist/core/engine/validation/schedule-revision.d.ts +24 -0
- package/dist/core/engine/validation/schedule-revision.js +21 -0
- package/dist/core/engine/validation/schedule-warnings.d.ts +11 -0
- package/dist/core/engine/validation/schedule-warnings.js +5 -0
- package/dist/core/engine/validation/schedule.d.ts +4 -3
- package/dist/core/engine/validation/schedule.js +15 -26
- package/dist/core/engine/validation.js +5 -2
- package/dist/core/engine/workflow-claim-reclaim-target.d.ts +1 -1
- package/dist/core/engine/workflow-claim-reclaim-target.js +16 -2
- package/dist/core/engine/workflow-retention-deadline.d.ts +16 -0
- package/dist/core/engine/workflow-retention-deadline.js +33 -0
- package/dist/core/events/catalog-events.d.ts +117 -0
- package/dist/core/events/catalog-events.js +62 -0
- package/dist/core/events/event-map.d.ts +11 -0
- package/dist/core/events/index.d.ts +2 -0
- package/dist/core/events/index.js +2 -0
- package/dist/core/events/workflow-source-events.d.ts +102 -0
- package/dist/core/events/workflow-source-events.js +57 -0
- package/dist/core/execution-strategy.d.ts +7 -0
- package/dist/core/inline-execution-strategy.context-options.d.ts +1 -1
- package/dist/core/inline-execution-strategy.js +1 -1
- package/dist/core/mailbox-admission.d.ts +26 -0
- package/dist/core/mailbox-admission.js +130 -0
- package/dist/core/mailbox-claims.d.ts +251 -0
- package/dist/core/mailbox-claims.js +0 -0
- package/dist/core/mailbox-codec.d.ts +32 -0
- package/dist/core/mailbox-codec.js +221 -0
- package/dist/core/mailbox-contract.d.ts +290 -0
- package/dist/core/mailbox-contract.js +0 -0
- package/dist/core/mailbox-delivery.d.ts +37 -0
- package/dist/core/mailbox-delivery.js +193 -0
- package/dist/core/mailbox-guards.d.ts +78 -0
- package/dist/core/mailbox-guards.js +58 -0
- package/dist/core/mailbox-index-codec.d.ts +41 -0
- package/dist/core/mailbox-index-codec.js +71 -0
- package/dist/core/mailbox-internals.d.ts +156 -0
- package/dist/core/mailbox-internals.js +154 -0
- package/dist/core/mailbox-maintenance.d.ts +29 -0
- package/dist/core/mailbox-maintenance.js +196 -0
- package/dist/core/mailbox-settlement.d.ts +69 -0
- package/dist/core/mailbox-settlement.js +206 -0
- package/dist/core/mailbox-storage.d.ts +117 -0
- package/dist/core/mailbox-storage.js +115 -0
- package/dist/core/mailbox-transition-helpers.d.ts +70 -0
- package/dist/core/mailbox-transition-helpers.js +43 -0
- package/dist/core/mailbox-transitions-recovery.d.ts +28 -0
- package/dist/core/mailbox-transitions-recovery.js +64 -0
- package/dist/core/mailbox-transitions.d.ts +138 -0
- package/dist/core/mailbox-transitions.js +180 -0
- package/dist/core/mailbox-types.d.ts +406 -0
- package/dist/core/mailbox-types.js +16 -0
- package/dist/core/mailbox-validation.d.ts +65 -0
- package/dist/core/mailbox-validation.js +73 -0
- package/dist/core/mailbox-waits.d.ts +50 -0
- package/dist/core/mailbox-waits.js +97 -0
- package/dist/core/mailbox.d.ts +163 -0
- package/dist/core/mailbox.js +211 -0
- package/dist/core/outbox-claims.d.ts +307 -0
- package/dist/core/outbox-claims.js +0 -0
- package/dist/core/outbox-codec.d.ts +24 -0
- package/dist/core/outbox-codec.js +257 -0
- package/dist/core/outbox-contract.d.ts +346 -0
- package/dist/core/outbox-contract.js +0 -0
- package/dist/core/outbox-delivery.d.ts +34 -0
- package/dist/core/outbox-delivery.js +149 -0
- package/dist/core/outbox-drain.d.ts +29 -0
- package/dist/core/outbox-drain.js +158 -0
- package/dist/core/outbox-enqueue.d.ts +24 -0
- package/dist/core/outbox-enqueue.js +115 -0
- package/dist/core/outbox-guards.d.ts +76 -0
- package/dist/core/outbox-guards.js +60 -0
- package/dist/core/outbox-index-codec.d.ts +33 -0
- package/dist/core/outbox-index-codec.js +71 -0
- package/dist/core/outbox-internals.d.ts +99 -0
- package/dist/core/outbox-internals.js +159 -0
- package/dist/core/outbox-listing.d.ts +12 -0
- package/dist/core/outbox-listing.js +38 -0
- package/dist/core/outbox-maintenance.d.ts +28 -0
- package/dist/core/outbox-maintenance.js +191 -0
- package/dist/core/outbox-operations.d.ts +18 -0
- package/dist/core/outbox-operations.js +46 -0
- package/dist/core/outbox-runner.d.ts +30 -0
- package/dist/core/outbox-runner.js +217 -0
- package/dist/core/outbox-settlement.d.ts +57 -0
- package/dist/core/outbox-settlement.js +183 -0
- package/dist/core/outbox-storage.d.ts +107 -0
- package/dist/core/outbox-storage.js +127 -0
- package/dist/core/outbox-transition-helpers.d.ts +83 -0
- package/dist/core/outbox-transition-helpers.js +63 -0
- package/dist/core/outbox-transitions-recovery.d.ts +30 -0
- package/dist/core/outbox-transitions-recovery.js +42 -0
- package/dist/core/outbox-transitions.d.ts +145 -0
- package/dist/core/outbox-transitions.js +236 -0
- package/dist/core/outbox-types.d.ts +400 -0
- package/dist/core/outbox-types.js +20 -0
- package/dist/core/outbox-validation.d.ts +101 -0
- package/dist/core/outbox-validation.js +127 -0
- package/dist/core/outbox-waits.d.ts +39 -0
- package/dist/core/outbox-waits.js +88 -0
- package/dist/core/outbox.d.ts +156 -0
- package/dist/core/outbox.js +234 -0
- package/dist/core/registry-limits.d.ts +49 -0
- package/dist/core/registry-limits.js +10 -0
- package/dist/core/registry-schema-conversion.d.ts +20 -0
- package/dist/core/registry-schema-conversion.js +22 -0
- package/dist/core/registry-snapshot.d.ts +91 -42
- package/dist/core/registry-snapshot.js +39 -77
- package/dist/core/registry-workflow-contract-draft.d.ts +32 -0
- package/dist/core/registry-workflow-contract-draft.js +28 -0
- package/dist/core/registry-workflow-manifest.d.ts +122 -0
- package/dist/core/registry-workflow-manifest.js +92 -0
- package/dist/core/source/errors.d.ts +55 -0
- package/dist/core/source/errors.js +13 -0
- package/dist/core/source/index.d.ts +19 -0
- package/dist/core/source/index.js +4 -0
- package/dist/core/source/resolvers.d.ts +45 -0
- package/dist/core/source/resolvers.js +9 -0
- package/dist/core/source/types.d.ts +211 -0
- package/dist/core/source/types.js +0 -0
- package/dist/core/source/validate.d.ts +91 -0
- package/dist/core/source/validate.js +62 -0
- package/dist/core/source/workflow-source.d.ts +43 -0
- package/dist/core/source/workflow-source.js +16 -0
- package/dist/core/types/checkpoint.d.ts +14 -0
- package/dist/core/types/schedules.d.ts +52 -1
- package/dist/core/types/state.d.ts +16 -0
- package/dist/core/types/workflow-registries.d.ts +7 -0
- package/dist/core/types/workflow-registry.d.ts +12 -0
- package/dist/core/versioning.js +2 -0
- package/dist/core/weft-error.d.ts +1 -1
- package/dist/core/weft-error.js +12 -1
- package/dist/core/worker-execution-strategy.d.ts +1 -0
- package/dist/core/worker-execution-strategy.js +13 -1
- package/dist/core/worker-fault-handling.d.ts +10 -0
- package/dist/core/worker-fault-handling.js +1 -0
- package/dist/core/worker-inbound-message.d.ts +1 -0
- package/dist/core/worker-inbound-message.js +1 -0
- package/dist/core/worker-protocol-guard.js +4 -0
- package/dist/core/worker-protocol.d.ts +7 -0
- package/dist/core/worker-protocol.js +2 -1
- package/dist/core/worker-turn-watchdog.d.ts +8 -1
- package/dist/core/worker-turn-watchdog.js +3 -2
- package/dist/diagnostics/format.js +5 -0
- package/dist/diagnostics/types.d.ts +24 -0
- package/dist/diagnostics/version-check.js +8 -2
- package/dist/http.js +2 -2
- package/dist/index.d.ts +25 -4
- package/dist/index.js +57 -0
- package/dist/indexeddb.js +1 -1
- package/dist/json-schema.js +3 -3
- package/dist/mcp/resources.js +2 -0
- package/dist/runtime/portable.d.ts +9 -1
- package/dist/server/fault-to-json-rpc.js +4 -1
- package/dist/server/handler/auth-context-principal.js +4 -0
- package/dist/server/index.d.ts +11 -0
- package/dist/server/json-rpc-http.js +2 -0
- package/dist/server/json-rpc-websocket.js +6 -4
- package/dist/server/operation-catalog/index.d.ts +1 -1
- package/dist/server/operation-catalog/pipeline-helpers.js +2 -0
- package/dist/server/operation-catalog/types.d.ts +17 -0
- package/dist/server/operation-fault.d.ts +5 -0
- package/dist/server/operation-fault.js +4 -1
- package/dist/server/operations/activate-workflow-revision.d.ts +30 -0
- package/dist/server/operations/activate-workflow-revision.js +69 -0
- package/dist/server/operations/create-schedule.d.ts +2 -0
- package/dist/server/operations/create-schedule.js +10 -6
- package/dist/server/operations/fleet-events-subscription.js +1 -1
- package/dist/server/operations/fork-workflow.js +1 -1
- package/dist/server/operations/get-active-workflow-revision.d.ts +32 -0
- package/dist/server/operations/get-active-workflow-revision.js +46 -0
- package/dist/server/operations/get-catalog-diagnostics.d.ts +113 -0
- package/dist/server/operations/get-catalog-diagnostics.js +65 -0
- package/dist/server/operations/get-registry.js +17 -4
- package/dist/server/operations/get-task-detail-schema.d.ts +8 -0
- package/dist/server/operations/get-task-detail-schema.js +1 -0
- package/dist/server/operations/get-task-detail.d.ts +8 -0
- package/dist/server/operations/get-task-detail.js +1 -0
- package/dist/server/operations/get-task-diagnostics.d.ts +4 -4
- package/dist/server/operations/get-workflow-revision.d.ts +25 -0
- package/dist/server/operations/get-workflow-revision.js +50 -0
- package/dist/server/operations/install-workflow-revision.d.ts +27 -0
- package/dist/server/operations/install-workflow-revision.js +46 -0
- package/dist/server/operations/list-workflow-revisions.d.ts +20 -0
- package/dist/server/operations/list-workflow-revisions.js +40 -0
- package/dist/server/operations/preload-workflow-revision.d.ts +28 -0
- package/dist/server/operations/preload-workflow-revision.js +60 -0
- package/dist/server/operations/schedule-faults.d.ts +1 -0
- package/dist/server/operations/schedule-faults.js +32 -4
- package/dist/server/operations/schedule-rest-body.d.ts +1 -0
- package/dist/server/operations/schedule-rest-body.js +2 -1
- package/dist/server/operations/start-or-signal-workflow.js +1 -1
- package/dist/server/operations/start-workflow.js +1 -1
- package/dist/server/operations/static-registrations.js +42 -0
- package/dist/server/operations/storage.js +2 -2
- package/dist/server/operations/submit-review-decision.js +1 -1
- package/dist/server/operations/update-schedule.d.ts +2 -0
- package/dist/server/operations/update-schedule.js +4 -2
- package/dist/server/operations/workflow-catalog-operation-helpers.d.ts +59 -0
- package/dist/server/operations/workflow-catalog-operation-helpers.js +162 -0
- package/dist/server/runtime/task-dispatch-envelope.d.ts +14 -0
- package/dist/server/runtime/task-dispatch-envelope.js +32 -0
- package/dist/server/runtime/task-dispatch-revision.d.ts +29 -0
- package/dist/server/runtime/task-dispatch-revision.js +13 -0
- package/dist/server/runtime/task-dispatch.js +12 -37
- package/dist/server/runtime/task-ledger-recovery.js +1 -1
- package/dist/server/runtime/task-ledger-runtime.d.ts +14 -2
- package/dist/server/runtime/task-ledger-runtime.js +5 -3
- package/dist/server/runtime/task-polling.js +9 -3
- package/dist/server/runtime/task-reconciliation.js +2 -1
- package/dist/server/runtime/websocket-upgrade.js +2 -0
- package/dist/server/runtime/websocket-worker.js +9 -0
- package/dist/server/task-ledger-codec.d.ts +9 -0
- package/dist/server/task-ledger-codec.js +4 -1
- package/dist/server/task-ledger-transition-helpers.js +1 -0
- package/dist/server/task-ledger-types.d.ts +9 -0
- package/dist/server/task-ledger.d.ts +1 -1
- package/dist/server/task-ledger.js +2 -1
- package/dist/server/task-queue-types.d.ts +2 -0
- package/dist/storage/bun-sql.js +51 -6
- package/dist/storage/catalog-keys.d.ts +64 -0
- package/dist/storage/catalog-keys.js +8 -0
- package/dist/storage/compressed-storage.js +1 -1
- package/dist/storage/derived-operations.js +1 -1
- package/dist/storage/index.d.ts +28 -1
- package/dist/storage/interface.d.ts +28 -1
- package/dist/storage/interface.js +1 -1
- package/dist/storage/key-encoding.d.ts +15 -0
- package/dist/storage/key-encoding.js +3 -0
- package/dist/storage/key-prefixes.d.ts +1 -1
- package/dist/storage/key-prefixes.js +16 -0
- package/dist/storage/lmdb.d.ts +54 -1
- package/dist/storage/lmdb.js +1 -1
- package/dist/storage/mailbox-keys.d.ts +80 -0
- package/dist/storage/mailbox-keys.js +14 -0
- package/dist/storage/memory.js +1 -1
- package/dist/storage/neon.js +2 -2
- package/dist/storage/node-sqlite-loader.d.ts +1 -1
- package/dist/storage/node-sqlite.js +51 -6
- package/dist/storage/outbox-keys.d.ts +77 -0
- package/dist/storage/outbox-keys.js +14 -0
- package/dist/storage/postgres.js +2 -2
- package/dist/storage/resolve.js +1 -1
- package/dist/storage/scoped-storage.js +1 -1
- package/dist/storage/storage-configuration.d.ts +6 -0
- package/dist/storage/testing.js +1 -1
- package/dist/storage/turso.js +2 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/web-extension.js +1 -1
- package/dist/worker/manifest/registry-contract-builder.d.ts +21 -3
- package/dist/worker/manifest/registry-contract-builder.js +40 -31
- package/dist/worker/protocol-messages.d.ts +17 -0
- package/dist/worker/protocol-schemas.d.ts +32 -0
- package/dist/worker/protocol-schemas.js +7 -3
- package/dist/worker/protocol-task-result.js +35 -3
- package/dist/worker/protocol.js +1 -1
- package/dist/worker/registry/types.d.ts +2 -0
- package/dist/worker/registry.d.ts +1 -1
- package/dist/worker/registry.js +3 -1
- package/dist/workers/workflow-runner.d.ts +9 -0
- package/dist/workers/workflow-runner.js +9 -2
- package/dist/workers/workflow-worker-entry.js +9 -4
- package/package.json +2 -2
|
@@ -7,7 +7,7 @@ export class WorkerTurnWatchdog {
|
|
|
7
7
|
this.#timeoutMs = timeoutMs;
|
|
8
8
|
this.#onTimeout = onTimeout;
|
|
9
9
|
}
|
|
10
|
-
begin(worker, workflowId, turnId, kind, timeoutMs = this.#timeoutMs) {
|
|
10
|
+
begin(worker, workflowId, turnId, kind, timeoutMs = this.#timeoutMs, revision) {
|
|
11
11
|
this.clear(worker);
|
|
12
12
|
const resolvedTimeoutMs = this.#timeoutResolverForTesting?.({ workflowId, kind }) ?? timeoutMs, turn = {
|
|
13
13
|
worker,
|
|
@@ -15,7 +15,8 @@ export class WorkerTurnWatchdog {
|
|
|
15
15
|
turnId,
|
|
16
16
|
kind,
|
|
17
17
|
timeoutMs: resolvedTimeoutMs,
|
|
18
|
-
timeout: null
|
|
18
|
+
timeout: null,
|
|
19
|
+
...revision !== void 0 && { revision }
|
|
19
20
|
};
|
|
20
21
|
if (resolvedTimeoutMs !== void 0)
|
|
21
22
|
turn.timeout = setTimeout(() => {
|
|
@@ -95,6 +95,11 @@ export function formatVersionCheckReport(report) {
|
|
|
95
95
|
lines.push(`${typeReport.type} (${typeReport.storedVersion} \u2192 ${typeReport.registeredVersion}):`);
|
|
96
96
|
lines.push(` ${typeReport.runningCount} running workflows`);
|
|
97
97
|
lines.push(` Compatibility: ${typeReport.compatibility}`);
|
|
98
|
+
const revisionEntries = Object.entries(typeReport.revisionCounts);
|
|
99
|
+
if (revisionEntries.length > 0 || typeReport.unpinnedRunningCount > 0) {
|
|
100
|
+
const revisionSummary = revisionEntries.map(([revision, count]) => `${revision} (${count})`).concat(typeReport.unpinnedRunningCount > 0 ? [`unpinned (${typeReport.unpinnedRunningCount})`] : []).join(", ");
|
|
101
|
+
lines.push(` Revisions: ${revisionSummary}`);
|
|
102
|
+
}
|
|
98
103
|
lines.push("");
|
|
99
104
|
}
|
|
100
105
|
switch (report.overallVerdict) {
|
|
@@ -148,6 +148,30 @@ export interface WorkflowTypeReport {
|
|
|
148
148
|
registeredVersion: string;
|
|
149
149
|
runningCount: number;
|
|
150
150
|
compatibility: VersionCompatibility;
|
|
151
|
+
/**
|
|
152
|
+
* Count of active (running/pending) workflows for this type that carry a
|
|
153
|
+
* persisted `WorkflowState.revision`, broken down by that EXACT revision
|
|
154
|
+
* — the exact executable artifact each run started against, distinct
|
|
155
|
+
* from `storedVersion` (the semantic `versionTuple.workflowVersion`,
|
|
156
|
+
* which many revisions can share, e.g. a documentation-only redeploy).
|
|
157
|
+
*
|
|
158
|
+
* Deliberately holds only real, persisted revision values — a dynamic
|
|
159
|
+
* source's `revision` is any non-empty, bounded string with no reserved
|
|
160
|
+
* values, so folding "no persisted revision" into this same map under a
|
|
161
|
+
* sentinel key could collide with a genuinely pinned run that happens to
|
|
162
|
+
* use that literal string. A run with no persisted revision (a
|
|
163
|
+
* pre-revision-pinning record) is counted separately, in
|
|
164
|
+
* {@link WorkflowTypeReport.unpinnedRunningCount}.
|
|
165
|
+
*/
|
|
166
|
+
revisionCounts: Record<string, number>;
|
|
167
|
+
/**
|
|
168
|
+
* Count of active (running/pending) workflows for this type with no
|
|
169
|
+
* persisted `WorkflowState.revision` — a record written before
|
|
170
|
+
* per-run revision pinning existed (WFT-17). Kept out of
|
|
171
|
+
* {@link WorkflowTypeReport.revisionCounts} so it can never collide with
|
|
172
|
+
* a genuinely pinned revision that happens to share the same string.
|
|
173
|
+
*/
|
|
174
|
+
unpinnedRunningCount: number;
|
|
151
175
|
}
|
|
152
176
|
/**
|
|
153
177
|
* Deployment-safety report produced by `weft version:check`.
|
|
@@ -12,11 +12,15 @@ async function groupActiveWorkflowsByType(storage) {
|
|
|
12
12
|
const storedVersion = state.versionTuple.workflowVersion;
|
|
13
13
|
let group = groups.get(state.type);
|
|
14
14
|
if (!group) {
|
|
15
|
-
group = { count: 0, versionCounts: new Map };
|
|
15
|
+
group = { count: 0, versionCounts: new Map, revisionCounts: new Map, unpinnedCount: 0 };
|
|
16
16
|
groups.set(state.type, group);
|
|
17
17
|
}
|
|
18
18
|
group.count++;
|
|
19
19
|
group.versionCounts.set(storedVersion, (group.versionCounts.get(storedVersion) ?? 0) + 1);
|
|
20
|
+
if (state.revision === void 0)
|
|
21
|
+
group.unpinnedCount++;
|
|
22
|
+
else
|
|
23
|
+
group.revisionCounts.set(state.revision, (group.revisionCounts.get(state.revision) ?? 0) + 1);
|
|
20
24
|
}
|
|
21
25
|
return groups;
|
|
22
26
|
}
|
|
@@ -41,7 +45,9 @@ function buildWorkflowTypeReports(groups, registrations) {
|
|
|
41
45
|
storedVersion,
|
|
42
46
|
registeredVersion,
|
|
43
47
|
runningCount: group.count,
|
|
44
|
-
compatibility
|
|
48
|
+
compatibility,
|
|
49
|
+
revisionCounts: Object.fromEntries(group.revisionCounts),
|
|
50
|
+
unpinnedRunningCount: group.unpinnedCount
|
|
45
51
|
});
|
|
46
52
|
}
|
|
47
53
|
return reports;
|
package/dist/http.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
async function*
|
|
2
|
-
`);o=B.pop()??"";for(let V of B)yield V}if(o+=i.decode(),o.length>0)yield o}finally{if(!u)try{await n.cancel()}catch{}n.releaseLock()}}function m(e){let t=[];for(let n=0;n<e.length;n+=512)t.push(String.fromCharCode(...e.subarray(n,n+512)));return btoa(t.join(""))}function C(e){let t=atob(e),n=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)n[i]=t.charCodeAt(i);return n}function b(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}async function p(e,t){return await e.get(t)!==null}async function*c(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function f(e,t){let n=0;for await(let i of c(e,t))n++;return n}async function y(e,t){let n=[];for await(let i of c(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function h(e,t,n){let i=[];for await(let o of c(e,t,n))i.push({type:"delete",key:o});if(i.length===0)return 0;return await e.batch(i),i.length}function P(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}var k="default";function r(e){return encodeURIComponent(e)}var v={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var S=1e4;class E extends Error{code="StorageBatchOperationLimitExceededError";cap=S;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${S}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function l(e,t){if(t>S)throw new E(e,t)}function A(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function fe(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function ye(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}async function D(e,t){if(e.has)return e.has(t);return p(e,t)}function U(e,t,n){if(e.keys)return e.keys(t,n);return c(e,t,n)}async function I(e,t){if(e.count)return e.count(t);return f(e,t)}async function L(e,t){if(e.deletePrefix)return e.deletePrefix(t);return y(e,t)}async function _(e,t,n){if(l("conditionalBatch conditions",t.length),l("conditionalBatch operations",n.length),P(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,n)}var a=(e)=>String(e).padStart(16,"0"),W="0",q="1",T=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,he={workflow:(e)=>`wf:${r(e)}`,checkpoint:(e)=>`wf:${r(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${r(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${r(e)}:timeline:`,timeline:(e,t)=>`wf:${r(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${r(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${r(t)}`,scheduleRun:(e)=>`schedule-run:${r(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${r(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${r(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${r(e)}:${r(t)}`,operation:(e,t,n)=>`op:${e}:${a(t)}:${n}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,n)=>`audit:bulk:${a(e)}:${r(t)}:${r(n)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${a(e)}:${r(t)}`,asyncActivity:(e,t)=>`async-act:v1:${r(e)}:${r(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${r(e)}:${r(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${r(e)}:`,activityReconciliation:(e,t,n)=>`actrec:v1:${r(e)}:${r(t)}:${n}`,eventPrefix:(e)=>`ev:${r(e)}:`,event:(e,t)=>`ev:${r(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${r(e)}:head`,eventWatermark:(e)=>`ev:${r(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventWatermark:()=>"fleet-event-watermark",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${r(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${r(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,n)=>T(e,t,n,q),startSignal:(e,t,n)=>T(e,t,n,W),signalSequence:(e)=>`sigseq:v1:${r(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${r(e)}:`,signalAcceptedResponse:(e,t,n)=>`sigres:v1:${r(e)}:${r(t)}:${r(n)}`,deadline:(e,t)=>`wf-deadline:${a(e)}:${r(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${a(e)}:${r(t)}`,teardownTimer:(e,t)=>`wf-teardown:${a(e)}:${r(t)}`,delayedStart:(e,t)=>`wf-delayed:${a(e)}:${r(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${a(e)}:${r(t)}`,attribute:(e)=>`attr:${r(e)}`,attributeIndex:(e,t,n)=>`idx:${e}:${t}:${r(n)}`,tagIndex:(e,t)=>`tag:${r(e)}:${r(t)}`,updatePrefix:(e)=>`upd:${r(e)}:`,update:(e,t)=>`upd:${r(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${r(e)}:${t}`,startIdempotency:(e)=>`start-idem:${r(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${r(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...v,budget:(e,t,n)=>`budget:${e}:${t}:${n}`,review:(e,t)=>`review:${r(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${r(e)}`,childCancellationPrefix:(e)=>`child-cancel:${r(e)}:`,childCancellation:(e,t)=>`child-cancel:${r(e)}:${r(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}`,childWorkflowByParent:(e,t,n)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}${r(n)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${r(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${r(e)}:${r(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${r(e)}`,workflowHasServices:(e)=>`wf-has-services:${r(e)}`,finalizerState:(e)=>`wf-finalizer-state:${r(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${r(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${r(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${r(e)}`,offload:(e,t)=>`offload:${r(e)}:${t}`,archive:(e,t)=>`archive:${r(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${r(e)}:${r(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${k}:${r(e)}:${r(t)}`,streamChunkPrefix:(e,t)=>`blob:${r(e)}:${t}:chunk:`,streamChunk:(e,t,n)=>`blob:${r(e)}:${t}:chunk:${String(n).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${r(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${r(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,n)=>`tool-effect:${r(e)}:${t}:${n}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${r(e)}:${r(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${r(e)}:${r(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${a(e)}:${r(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${a(e)}:${r(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${a(e)}:${r(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${r(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function M(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function d(e){let t={},n=!1;for(let o of["gt","gte","lt","lte"]){let s=e[o];if(s===void 0)continue;if(typeof s!=="string")throw Error("deleteRange bounds must be strings");t[o]=s,n=!0}if(!n)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=M(e.limit);if(i!==void 0)t.limit=i;return t}async function N(e,t,n){let i=d(n);if(e.deleteRange)return e.deleteRange(t,i);return h(e,t,i)}function j(e,t){let n={key:e,open:!1};if(t.gte!==void 0&&t.gte>n.key)n.key=t.gte,n.open=!1;if(t.gt!==void 0&&t.gt>=n.key)n.key=t.gt,n.open=!0;return n}function G(e,t){let n={key:A(e),open:!0};if(t.lt!==void 0&&t.lt<=n.key)n.key=t.lt,n.open=!0;if(t.lte!==void 0&&t.lte<n.key)n.key=t.lte,n.open=!1;return n}function we(e,t){let n=j(e,t),i=G(e,t);if(n.key>i.key||n.key===i.key&&(n.open||i.open))return null;return{lower:n,upper:i}}function w(e){return e.replaceAll(/:+$/g,"")}function F(e,t){let n=w(e),i=w(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class x{#e;#n;constructor(e,t){this.#e=e,this.#n=w(t)}#t(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#i(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#t(t.key),value:t.value};return{type:"delete",key:this.#t(t.key)}})}#o(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#a(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#t(e.gt);if(e.gte!==void 0)t.gte=this.#t(e.gte);if(e.lt!==void 0)t.lt=this.#t(e.lt);if(e.lte!==void 0)t.lte=this.#t(e.lte);return t}#r(e={}){let t=this.#a(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#s(e){return this.#a(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new x(this.#e,F(this.#n,e))}async get(e){return this.#e.get(this.#t(e))}async put(e,t){await this.#e.put(this.#t(e),t)}async delete(e){await this.#e.delete(this.#t(e))}async*scan(e,t){for await(let[n,i]of this.#e.scan(this.#t(e),this.#r(t)))yield[this.#o(n),i]}async batch(e){l("batch operations",e.length),await this.#e.batch(this.#i(e))}async conditionalBatch(e,t){return _(this.#e,e.map((n)=>({key:this.#t(n.key),expectedValue:n.expectedValue})),this.#i(t))}async has(e){return D(this.#e,this.#t(e))}async deletePrefix(e){return L(this.#e,this.#t(e))}async deleteRange(e,t){let n=this.#s(d(t));return N(this.#e,this.#t(e),n)}async*keys(e,t){for await(let n of U(this.#e,this.#t(e),this.#r(t)))yield this.#o(n)}async count(e){return I(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function H(e,t){return new x(e,t)}var Y=67108864;function z(e){if(e.type==="put")return{type:"put",key:e.key,value:m(e.value)};return{type:"delete",key:e.key}}function X(e){return{key:e.key,expectedValue:e.expectedValue===null?null:m(e.expectedValue)}}function J(e){if(!b(e)||typeof e.key!=="string"||typeof e.value!=="string")throw Error("HTTPStorage scan response contained an invalid NDJSON entry.");return{key:e.key,value:e.value}}function Z(e){if(!b(e)||typeof e.applied!=="boolean")throw Error('HTTPStorage conditional batch response must include a boolean "applied" field.');return e.applied}function g(e,t,n){if(n!==void 0)e.searchParams.set(t,String(n))}function Q(e){if(e.trim().length===0)return null;let t=J(JSON.parse(e));return[t.key,C(t.value)]}class ee{#e;#n;#t;constructor(e){this.#e=e.baseUrl instanceof URL?e.baseUrl:new URL(e.baseUrl),this.#n={...e.headers},this.#t=e.remoteConditionalBatch??!1}capabilities(){return{persistence:"remote",readAfterWrite:"eventual",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:this.#t,boundedRangeDelete:!1}}#i(e){let t=this.#e.href.endsWith("/")?this.#e.href:`${this.#e.href}/`;return new URL(e.replace(/^\/+/,""),t)}#o(e){return this.#i(`/v1/storage/${encodeURIComponent(e)}`)}#a(e,t){let n=this.#i("/v1/storage");return n.searchParams.set("prefix",e),g(n,"limit",t.limit),g(n,"reverse",t.reverse),g(n,"gt",t.gt),g(n,"gte",t.gte),g(n,"lt",t.lt),g(n,"lte",t.lte),n}async#r(e,t={},n=[]){let i=new Headers(this.#n);for(let[s,u]of new Headers(t.headers).entries())i.set(s,u);let o=await fetch(e,{...t,headers:i});if(!o.ok&&!n.includes(o.status))throw Error(`HTTPStorage request failed: ${t.method??"GET"} ${e.pathname} returned ${String(o.status)}.`);return o}async get(e){let t=await this.#r(this.#o(e),{method:"GET"},[404]);if(t.status===404)return null;return new Uint8Array(await t.arrayBuffer())}async put(e,t){await this.#r(this.#o(e),{method:"PUT",headers:{"content-type":"application/octet-stream"},body:new Blob([new Uint8Array(t)])})}async delete(e){await this.#r(this.#o(e),{method:"DELETE"})}async*scan(e,t={}){let n=await this.#r(this.#a(e,t),{method:"GET",headers:{accept:"application/x-ndjson"}});for await(let i of O(n,{maximumBytes:Y,sizeLimitError:()=>Error("HTTPStorage scan response exceeded the maximum allowed size.")})){let o=Q(i);if(o!==null)yield o}}async batch(e){l("batch operations",e.length),await this.#r(this.#i("/v1/storage/-/batch"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({operations:e.map(z)})})}async conditionalBatch(e,t){l("conditionalBatch conditions",e.length),l("conditionalBatch operations",t.length);let n=await this.#r(this.#i("/v1/storage/-/conditional-batch"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({conditions:e.map(X),operations:t.map(z)})});return Z(await n.json())}has(e){return p(this,e)}async*keys(e,t){yield*c(this,e,t)}count(e){return f(this,e)}deletePrefix(e){return y(this,e)}deleteRange(e,t){return h(this,e,d(t))}scoped(e){return H(this,e)}[Symbol.dispose](){}}export{ee as HTTPStorage};
|
|
1
|
+
async function*B(e,t){if(e.body===null)return;let r=e.body.getReader(),i=new TextDecoder,o="",l=0,u=!1;try{while(!0){let{done:V,value:O}=await r.read();if(V){u=!0;break}if(l+=O.byteLength,l>t.maximumBytes)throw t.sizeLimitError();o+=i.decode(O,{stream:!0});let C=o.split(`
|
|
2
|
+
`);o=C.pop()??"";for(let Y of C)yield Y}if(o+=i.decode(),o.length>0)yield o}finally{if(!u)try{await r.cancel()}catch{}r.releaseLock()}}function b(e){let t=[];for(let r=0;r<e.length;r+=512)t.push(String.fromCharCode(...e.subarray(r,r+512)));return btoa(t.join(""))}function R(e){let t=atob(e),r=new Uint8Array(t.length);for(let i=0;i<t.length;i+=1)r[i]=t.charCodeAt(i);return r}function S(e){return typeof e==="object"&&e!==null&&!Array.isArray(e)}async function f(e,t){return await e.get(t)!==null}async function*c(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function m(e,t){let r=0;for await(let i of c(e,t))r++;return r}async function y(e,t){let r=[];for await(let i of c(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function h(e,t,r){let i=[];for await(let o of c(e,t,r))i.push({type:"delete",key:o});if(i.length===0)return 0;return await e.batch(i),i.length}function P(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function n(e){return encodeURIComponent(e)}function s(e){return String(e).padStart(16,"0")}var k={catalogEntry:(e,t)=>`catalog-entry:${n(e)}:${n(t)}`,catalogEntryPrefix:(e)=>`catalog-entry:${n(e)}:`,catalogActive:(e)=>`catalog-active:${n(e)}`,catalogTombstone:(e,t)=>`catalog-tombstone:${n(e)}:${n(t)}`,catalogTombstonePrefix:()=>"catalog-tombstone:"};var T="default";var E={applicationMailbox:(e,t)=>`appmbx:v1:${n(e)}:${n(t)}`,applicationMailboxSinkProbe:(e,t,r)=>`appprobe:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandPrefix:(e,t)=>`appcmd:v1:${n(e)}:${n(t)}:`,applicationCommand:(e,t,r)=>`appcmd:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandReadyPrefix:(e,t)=>`appready:v1:${n(e)}:${n(t)}:`,applicationCommandReady:(e,t,r)=>`appready:v1:${n(e)}:${n(t)}:${s(r)}`,applicationCommandIdempotency:(e,t,r)=>`appidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandBySequencePrefix:(e,t)=>`appseq:v1:${n(e)}:${n(t)}:`,applicationCommandBySequence:(e,t,r)=>`appseq:v1:${n(e)}:${n(t)}:${s(r)}`,applicationCommandTerminalPrefix:(e,t)=>`appterm:v1:${n(e)}:${n(t)}:`,applicationCommandTerminal:(e,t,r,i)=>`appterm:v1:${n(e)}:${n(t)}:${s(r)}:${n(i)}`};var A={applicationOutbox:(e,t)=>`appobx:v1:${n(e)}:${n(t)}`,applicationOutboxSinkProbe:(e,t,r)=>`appprobe:v1:outbox:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryPrefix:(e,t)=>`appdlv:v1:${n(e)}:${n(t)}:`,applicationDelivery:(e,t,r)=>`appdlv:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryDuePrefix:(e,t)=>`appdue:v1:${n(e)}:${n(t)}:`,applicationDeliveryDue:(e,t,r,i)=>`appdue:v1:${n(e)}:${n(t)}:${s(r)}:${n(i)}`,applicationDeliveryIdempotency:(e,t,r)=>`appdidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryBySequencePrefix:(e,t)=>`appdseq:v1:${n(e)}:${n(t)}:`,applicationDeliveryBySequence:(e,t,r)=>`appdseq:v1:${n(e)}:${n(t)}:${s(r)}`,applicationDeliveryTerminalPrefix:(e,t)=>`appdterm:v1:${n(e)}:${n(t)}:`,applicationDeliveryTerminal:(e,t,r,i)=>`appdterm:v1:${n(e)}:${n(t)}:${s(r)}:${n(i)}`};var D={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var w=1e4;class I extends Error{code="StorageBatchOperationLimitExceededError";cap=w;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${w}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function g(e,t){if(t>w)throw new I(e,t)}function L(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function Re(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function Pe(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0}async function _(e,t){if(e.has)return e.has(t);return f(e,t)}function K(e,t,r){if(e.keys)return e.keys(t,r);return c(e,t,r)}async function N(e,t){if(e.count)return e.count(t);return m(e,t)}async function H(e,t){if(e.deletePrefix)return e.deletePrefix(t);return y(e,t)}async function z(e,t,r){if(g("conditionalBatch conditions",t.length),g("conditionalBatch operations",r.length),P(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,r)}var a=s,G="0",j="1",U=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,ke={workflow:(e)=>`wf:${n(e)}`,checkpoint:(e)=>`wf:${n(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${n(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${n(e)}:timeline:`,timeline:(e,t)=>`wf:${n(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${n(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${n(t)}`,scheduleRun:(e)=>`schedule-run:${n(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${n(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${n(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${n(e)}:${n(t)}`,operation:(e,t,r)=>`op:${e}:${a(t)}:${r}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,r)=>`audit:bulk:${a(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${a(e)}:${n(t)}`,asyncActivity:(e,t)=>`async-act:v1:${n(e)}:${n(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${n(e)}:${n(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${n(e)}:`,activityReconciliation:(e,t,r)=>`actrec:v1:${n(e)}:${n(t)}:${r}`,eventPrefix:(e)=>`ev:${n(e)}:`,event:(e,t)=>`ev:${n(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${n(e)}:head`,eventWatermark:(e)=>`ev:${n(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventWatermark:()=>"fleet-event-watermark",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${n(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${n(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,r)=>U(e,t,r,j),startSignal:(e,t,r)=>U(e,t,r,G),signalSequence:(e)=>`sigseq:v1:${n(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${n(e)}:`,signalAcceptedResponse:(e,t,r)=>`sigres:v1:${n(e)}:${n(t)}:${n(r)}`,deadline:(e,t)=>`wf-deadline:${a(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${a(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${a(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${a(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${a(e)}:${n(t)}`,attribute:(e)=>`attr:${n(e)}`,attributeIndex:(e,t,r)=>`idx:${e}:${t}:${n(r)}`,tagIndex:(e,t)=>`tag:${n(e)}:${n(t)}`,updatePrefix:(e)=>`upd:${n(e)}:`,update:(e,t)=>`upd:${n(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${n(e)}:${t}`,startIdempotency:(e)=>`start-idem:${n(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...E,...A,...D,...k,budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${T}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${a(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${a(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${a(e)}:${n(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${n(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function F(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function p(e){let t={},r=!1;for(let o of["gt","gte","lt","lte"]){let l=e[o];if(l===void 0)continue;if(typeof l!=="string")throw Error("deleteRange bounds must be strings");t[o]=l,r=!0}if(!r)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=F(e.limit);if(i!==void 0)t.limit=i;return t}async function q(e,t,r){let i=p(r);if(e.deleteRange)return e.deleteRange(t,i);return h(e,t,i)}function X(e,t){let r={key:e,open:!1};if(t.gte!==void 0&&t.gte>r.key)r.key=t.gte,r.open=!1;if(t.gt!==void 0&&t.gt>=r.key)r.key=t.gt,r.open=!0;return r}function J(e,t){let r={key:L(e),open:!0};if(t.lt!==void 0&&t.lt<=r.key)r.key=t.lt,r.open=!0;if(t.lte!==void 0&&t.lte<r.key)r.key=t.lte,r.open=!1;return r}function De(e,t){let r=X(e,t),i=J(e,t);if(r.key>i.key||r.key===i.key&&(r.open||i.open))return null;return{lower:r,upper:i}}function x(e){return e.replaceAll(/:+$/g,"")}function Z(e,t){let r=x(e),i=x(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class v{#e;#n;constructor(e,t){this.#e=e,this.#n=x(t)}#t(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#i(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#t(t.key),value:t.value};return{type:"delete",key:this.#t(t.key)}})}#o(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#a(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#t(e.gt);if(e.gte!==void 0)t.gte=this.#t(e.gte);if(e.lt!==void 0)t.lt=this.#t(e.lt);if(e.lte!==void 0)t.lte=this.#t(e.lte);return t}#r(e={}){let t=this.#a(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#s(e){return this.#a(e)}capabilities(){return this.#e.capabilities()}scoped(e){return new v(this.#e,Z(this.#n,e))}async get(e){return this.#e.get(this.#t(e))}async put(e,t){await this.#e.put(this.#t(e),t)}async delete(e){await this.#e.delete(this.#t(e))}async*scan(e,t){for await(let[r,i]of this.#e.scan(this.#t(e),this.#r(t)))yield[this.#o(r),i]}async batch(e){g("batch operations",e.length),await this.#e.batch(this.#i(e))}async conditionalBatch(e,t){return z(this.#e,e.map((r)=>({key:this.#t(r.key),expectedValue:r.expectedValue})),this.#i(t))}async has(e){return _(this.#e,this.#t(e))}async deletePrefix(e){return H(this.#e,this.#t(e))}async deleteRange(e,t){let r=this.#s(p(t));return q(this.#e,this.#t(e),r)}async*keys(e,t){for await(let r of K(this.#e,this.#t(e),this.#r(t)))yield this.#o(r)}async count(e){return N(this.#e,this.#t(e))}[Symbol.dispose](){this.#e[Symbol.dispose]()}}function W(e,t){return new v(e,t)}var Q=67108864;function M(e){if(e.type==="put")return{type:"put",key:e.key,value:b(e.value)};return{type:"delete",key:e.key}}function ee(e){return{key:e.key,expectedValue:e.expectedValue===null?null:b(e.expectedValue)}}function te(e){if(!S(e)||typeof e.key!=="string"||typeof e.value!=="string")throw Error("HTTPStorage scan response contained an invalid NDJSON entry.");return{key:e.key,value:e.value}}function ne(e){if(!S(e)||typeof e.applied!=="boolean")throw Error('HTTPStorage conditional batch response must include a boolean "applied" field.');return e.applied}function d(e,t,r){if(r!==void 0)e.searchParams.set(t,String(r))}function re(e){if(e.trim().length===0)return null;let t=te(JSON.parse(e));return[t.key,R(t.value)]}class ie{#e;#n;#t;constructor(e){this.#e=e.baseUrl instanceof URL?e.baseUrl:new URL(e.baseUrl),this.#n={...e.headers},this.#t=e.remoteConditionalBatch??!1}capabilities(){return{persistence:"remote",readAfterWrite:"eventual",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:this.#t,boundedRangeDelete:!1}}#i(e){let t=this.#e.href.endsWith("/")?this.#e.href:`${this.#e.href}/`;return new URL(e.replace(/^\/+/,""),t)}#o(e){return this.#i(`/v1/storage/${encodeURIComponent(e)}`)}#a(e,t){let r=this.#i("/v1/storage");return r.searchParams.set("prefix",e),d(r,"limit",t.limit),d(r,"reverse",t.reverse),d(r,"gt",t.gt),d(r,"gte",t.gte),d(r,"lt",t.lt),d(r,"lte",t.lte),r}async#r(e,t={},r=[]){let i=new Headers(this.#n);for(let[l,u]of new Headers(t.headers).entries())i.set(l,u);let o=await fetch(e,{...t,headers:i});if(!o.ok&&!r.includes(o.status))throw Error(`HTTPStorage request failed: ${t.method??"GET"} ${e.pathname} returned ${String(o.status)}.`);return o}async get(e){let t=await this.#r(this.#o(e),{method:"GET"},[404]);if(t.status===404)return null;return new Uint8Array(await t.arrayBuffer())}async put(e,t){await this.#r(this.#o(e),{method:"PUT",headers:{"content-type":"application/octet-stream"},body:new Blob([new Uint8Array(t)])})}async delete(e){await this.#r(this.#o(e),{method:"DELETE"})}async*scan(e,t={}){let r=await this.#r(this.#a(e,t),{method:"GET",headers:{accept:"application/x-ndjson"}});for await(let i of B(r,{maximumBytes:Q,sizeLimitError:()=>Error("HTTPStorage scan response exceeded the maximum allowed size.")})){let o=re(i);if(o!==null)yield o}}async batch(e){g("batch operations",e.length),await this.#r(this.#i("/v1/storage/-/batch"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({operations:e.map(M)})})}async conditionalBatch(e,t){g("conditionalBatch conditions",e.length),g("conditionalBatch operations",t.length);let r=await this.#r(this.#i("/v1/storage/-/conditional-batch"),{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({conditions:e.map(ee),operations:t.map(M)})});return ne(await r.json())}has(e){return f(this,e)}async*keys(e,t){yield*c(this,e,t)}count(e){return m(this,e)}deletePrefix(e){return y(this,e)}deleteRange(e,t){return h(this,e,p(t))}scoped(e){return W(this,e)}[Symbol.dispose](){}}export{ie as HTTPStorage};
|
package/dist/index.d.ts
CHANGED
|
@@ -21,14 +21,20 @@ export type { WeftErrorCode } from './core/weft-error.ts';
|
|
|
21
21
|
export { FAULT_CODE_TO_FAILURE_CATEGORY, failureCategoryForFaultCode, isFaultCode, } from './core/fault-code.ts';
|
|
22
22
|
export type { FaultCode } from './core/fault-code.ts';
|
|
23
23
|
export { DurableActivityScopeError, DurableActivityUnsupportedError, durableActivity, } from './core/context/durable-activity.ts';
|
|
24
|
-
export { ActivityReconciliationCapabilityError, ActivityReconciliationConflictError, ActivityReconciliationIndeterminateError, ActivityResolutionError, AsyncActivityTokenNotFoundError, BulkDeleteRequiresTerminalWorkflowsError, BulkOperationConfirmationError, ENGINE_LEASE_LOST_WARNING_NAME, ENGINE_LEASE_SYNCHRONOUS_DISPOSE_WARNING_NAME, Engine, EngineCreateNameMismatchError, EngineDisposalError, EngineDisposedError, EngineLeaseAcquisitionTimeoutError, EngineLeaseCorruptedError, EngineLeaseNotHeldError, IdempotencyKeyPurgedError, PersistedDataCorruptError, PersistedDataIncompatibleError, ScheduleHandle, StartOrSignalConflictError, WorkflowAlreadyExistsError, WorkflowConcurrencyLimitExceededError, WorkflowHandle, WorkflowNotFoundError, WorkflowNotRegisteredError, WorkflowSuspendNotSupportedError, WorkflowTeardownPendingError, WorkflowTypeNotRegisteredForRecoveryError, } from './core/engine';
|
|
24
|
+
export { ActivityReconciliationCapabilityError, ActivityReconciliationConflictError, ActivityReconciliationIndeterminateError, ActivityResolutionError, AsyncActivityTokenNotFoundError, BulkDeleteRequiresTerminalWorkflowsError, BulkOperationConfirmationError, DynamicWorkflowSourceUnavailableError, ENGINE_LEASE_LOST_WARNING_NAME, ENGINE_LEASE_SYNCHRONOUS_DISPOSE_WARNING_NAME, Engine, EngineCreateNameMismatchError, EngineDisposalError, EngineDisposedError, EngineLeaseAcquisitionTimeoutError, EngineLeaseCorruptedError, EngineLeaseNotHeldError, IdempotencyKeyPurgedError, PersistedDataCorruptError, PersistedDataIncompatibleError, ScheduleHandle, StartOrSignalConflictError, WorkflowAlreadyExistsError, WorkflowConcurrencyLimitExceededError, WorkflowHandle, WorkflowNotFoundError, WorkflowNotRegisteredError, WorkflowRevisionUnavailableError, WorkflowSourceNotRegisteredError, WorkflowSuspendNotSupportedError, WorkflowTeardownPendingError, WorkflowTypeNotRegisteredForRecoveryError, } from './core/engine';
|
|
25
25
|
export { OwnershipModeMismatchError, WORKFLOW_CLAIM_LOST_WARNING_NAME, WORKFLOW_WAKE_DISCARDED_WARNING_NAME, WeftWorkflowClaimLostWarning, WeftWorkflowWakeDiscardedWarning, WorkflowClaimUnavailableError, } from './core/engine';
|
|
26
|
-
export type { EngineCreateOptions, EngineLeaseHealth, EngineStateNamespace, LeaseLostReason, RecoverAllOptions, RecoveredWorkflowInfo, RegistryAgnosticEngine, WorkflowWakeKind, } from './core/engine';
|
|
26
|
+
export type { ActivateWorkflowRevisionOptions, EngineCreateOptions, EngineLeaseHealth, EngineStateNamespace, EngineWorkflowsNamespace, LeaseLostReason, RecoverAllOptions, RecoveredWorkflowInfo, RegistryAgnosticEngine, ResolveWorkflowSourceOptions, WorkflowWakeKind, } from './core/engine';
|
|
27
|
+
export { WorkflowCatalogConflictError, WorkflowRevisionNotInstalledError, } from './core/catalog/index.ts';
|
|
28
|
+
export type { WorkflowCatalogActivationResult, WorkflowCatalogActivePointer, WorkflowRevisionRecord, } from './core/catalog/index.ts';
|
|
29
|
+
export { WorkflowSourceValidationError, workflowSource } from './core/source/index.ts';
|
|
30
|
+
export type { WorkflowSourceDescriptor, WorkflowSourceDescriptorInput, WorkflowSourceHandle, WorkflowSourceKind, WorkflowSourceRejectionReason, } from './core/source/index.ts';
|
|
31
|
+
export { getWorkflowRevisionDiagnostics, removeWorkflowRevision } from './core/engine';
|
|
32
|
+
export type { WorkflowCatalogRemovalResult, WorkflowRevisionDiagnostics, WorkflowRevisionReferenceCounts, } from './core/engine';
|
|
27
33
|
export { DEFAULT_CHECKPOINT_SIZE_WARNING_THRESHOLD, DEFAULT_MAX_NESTING_DEPTH, DEFAULT_POLL_INTERVAL_MS, DEFAULT_RETRY_POLICY, DEFAULT_VISIBILITY_TIMEOUT_MS, HISTORY_CIRCUIT_BREAKER_REASON, WorkflowBuilderError, query, schedule, signal, update, workflow, } from './core/types';
|
|
28
|
-
export type { ActivityArgsFor, ActivityCallOptions, ActivityCallable, ActivityContext, ActivityDefinition, ActivityEntryInput, ActivityFunction, ActivityMap, ActivityMapInput, ActivityObjectInput, ActivityResultFor, ActivityVerificationContext, ActivityVerificationPhase, ActivityVerificationResult, AnyActivityDefinition, AnyWorkflowDefinition, ArchiveAdapter, BuilderState, BuiltWorkflowDefinition, BulkCancelResult, BulkDeleteResult, BulkOperationAction, BulkOperationAuditEvent, BulkOperationCommitOptions, BulkOperationDryRunOptions, BulkOperationDryRunResult, BulkOperationError, BulkOperationFilterSummary, BulkOperationOptions, BulkOperationPrincipal, BulkOperationScopeSummary, BulkRetryFailedResult, BulkSignalAllCommitOptions, BulkSignalAllDryRunOptions, BulkSignalAllOptions, BulkSignalResult, BulkTagResult, Checkpoint, CheckpointState, CheckpointSummary, CompletedReviewEntry, CoordinatedUpdateResult, DefinitionSchema, Duration, EngineOptions, FailureCategory, ForkLineage, ForkOptions, HistoryPolicy, InferActivityEntries, InferActivityEntry, InferWorkflowEntries, InferWorkflowEntry, InitialBuilderState, LaunchMetadata, ListFilter, ListOptions, MarkBuilderState, NormalizeActivities, NormalizedActivityEntry, NormalizedRetentionPolicy, PaginatedResult, PayloadSizePolicy, PendingAsyncActivityInfo, PendingAsyncActivityListOptions, PendingAsyncActivityPage, PendingReviewEntry, PurgeResult, QueryDefinition, QueryMap, QueryShape, RegisteredWorkflowDefinition, RestartLineage, RetentionOverview, RetentionPolicy, RetryPolicy, ReviewDecision, ReviewListEntry, ReviewListFilter, ReviewStatus, ScheduleDefinition, ScheduleFilter, ScheduleOptions, ScheduleOverlapPolicy, ScheduleQueuedRun, ScheduleSpec, ScheduleState, ScheduleStatus, ScheduleSummary, ScheduleUpdateOptions, SearchAttributeDefinition, SearchAttributeHandle, SearchAttributeSchema, SearchAttributeValue, Serializer, SignalDefinition, SignalDeliveryOptions, SignalMap, SignalPayload, StartOptions, StartOrSignalOptions, StartOrSignalSignal, SubmitReviewOptions, TerminationReason, UpdateDefinition, UpdateMap, UpdatePayload, WorkerReplayOperationFailure, WorkerReplayOperationSignature, WorkflowAlreadyRegistered, WorkflowAtomicState, WorkflowAtomicStateOptions, WorkflowBuilder, WorkflowBuilderOptions, WorkflowConcurrencyOptions, WorkflowContext, WorkflowDefinition, WorkflowEvent, WorkflowFinalizerStatus, WorkflowFunction, WorkflowGenerator, WorkflowId, WorkflowKeyedRaceResult, WorkflowLogLevel, WorkflowLogRecord, WorkflowLogger, WorkflowRegistry, WorkflowReplay, WorkflowScheduleProvenance, WorkflowServicesResolution, WorkflowServicesResolverInfo, WorkflowServicesResolverLaunchOptions, WorkflowServicesResolverScheduleInfo, WorkflowSessionState, WorkflowSnapshot, WorkflowState, WorkflowStateNamespace, WorkflowStatus, WorkflowSummary, WorkflowTimelineEntry, WorkflowTimelineOperationDetail, WorkflowTimelineStatus, WorkflowTypeRetentionPolicy, } from './core/types';
|
|
34
|
+
export type { ActivityArgsFor, ActivityCallOptions, ActivityCallable, ActivityContext, ActivityDefinition, ActivityEntryInput, ActivityFunction, ActivityMap, ActivityMapInput, ActivityObjectInput, ActivityResultFor, ActivityVerificationContext, ActivityVerificationPhase, ActivityVerificationResult, AnyActivityDefinition, AnyWorkflowDefinition, ArchiveAdapter, BuilderState, BuiltWorkflowDefinition, BulkCancelResult, BulkDeleteResult, BulkOperationAction, BulkOperationAuditEvent, BulkOperationCommitOptions, BulkOperationDryRunOptions, BulkOperationDryRunResult, BulkOperationError, BulkOperationFilterSummary, BulkOperationOptions, BulkOperationPrincipal, BulkOperationScopeSummary, BulkRetryFailedResult, BulkSignalAllCommitOptions, BulkSignalAllDryRunOptions, BulkSignalAllOptions, BulkSignalResult, BulkTagResult, Checkpoint, CheckpointState, CheckpointSummary, CompletedReviewEntry, CoordinatedUpdateResult, DefinitionSchema, Duration, EngineOptions, FailureCategory, ForkLineage, ForkOptions, HistoryPolicy, InferActivityEntries, InferActivityEntry, InferWorkflowEntries, InferWorkflowEntry, InitialBuilderState, LaunchMetadata, ListFilter, ListOptions, MarkBuilderState, NormalizeActivities, NormalizedActivityEntry, NormalizedRetentionPolicy, PaginatedResult, PayloadSizePolicy, PendingAsyncActivityInfo, PendingAsyncActivityListOptions, PendingAsyncActivityPage, PendingReviewEntry, PurgeResult, QueryDefinition, QueryMap, QueryShape, RegisteredWorkflowDefinition, RestartLineage, RetentionOverview, RetentionPolicy, RetryPolicy, ReviewDecision, ReviewListEntry, ReviewListFilter, ReviewStatus, ScheduleDefinition, ScheduleFilter, ScheduleOptions, ScheduleOverlapPolicy, ScheduleQueuedRun, ScheduleRevisionPolicy, ScheduleSpec, ScheduleState, ScheduleStatus, ScheduleSummary, ScheduleUpdateOptions, SearchAttributeDefinition, SearchAttributeHandle, SearchAttributeSchema, SearchAttributeValue, Serializer, SignalDefinition, SignalDeliveryOptions, SignalMap, SignalPayload, StartOptions, StartOrSignalOptions, StartOrSignalSignal, SubmitReviewOptions, TerminationReason, UpdateDefinition, UpdateMap, UpdatePayload, WorkerReplayOperationFailure, WorkerReplayOperationSignature, WorkflowAlreadyRegistered, WorkflowAtomicState, WorkflowAtomicStateOptions, WorkflowBuilder, WorkflowBuilderOptions, WorkflowConcurrencyOptions, WorkflowContext, WorkflowDefinition, WorkflowEvent, WorkflowFinalizerStatus, WorkflowFunction, WorkflowGenerator, WorkflowId, WorkflowKeyedRaceResult, WorkflowLogLevel, WorkflowLogRecord, WorkflowLogger, WorkflowRegistry, WorkflowReplay, WorkflowScheduleProvenance, WorkflowServicesResolution, WorkflowServicesResolverInfo, WorkflowServicesResolverLaunchOptions, WorkflowServicesResolverScheduleInfo, WorkflowSessionState, WorkflowSnapshot, WorkflowState, WorkflowStateNamespace, WorkflowStatus, WorkflowSummary, WorkflowTimelineEntry, WorkflowTimelineOperationDetail, WorkflowTimelineStatus, WorkflowTypeRetentionPolicy, } from './core/types';
|
|
29
35
|
export { AlertManager } from './alerting/index';
|
|
30
36
|
export type { AlertAction, AlertMetric, AlertRule, AlertStateSnapshot, AlertStatus, AlertingOptions, WebhookTarget, } from './alerting/types';
|
|
31
|
-
export { ActivityAsyncPendingEvent, ActivityCompletedEvent, ActivityFailedEvent, ActivityStartedEvent, AlertFiredEvent, AlertResolvedEvent, AttributesChangedEvent, CheckpointSizeWarningEvent, ConstraintViolatedEvent, DevelopmentWarningEvent, ScheduleFiredEvent, ScheduleMissedFireEvent, SignalDeliveredEvent, SignalReceivedEvent, StorageSizeReportedEvent, TaskResultDeadLetteredEvent, UpdateCompletedEvent, UpdateReceivedEvent, WorkflowCancelledEvent, WorkflowCompletedEvent, WorkflowDefinitionRegisteredEvent, WorkflowFailedEvent, WorkflowRecoverySkippedEvent, WorkflowResumedEvent, WorkflowStartedEvent, WorkflowSuspendedEvent, WorkflowTeardownEvent, WorkflowTimedOutEvent, } from './core/events';
|
|
37
|
+
export { ActivityAsyncPendingEvent, ActivityCompletedEvent, ActivityFailedEvent, ActivityStartedEvent, AlertFiredEvent, AlertResolvedEvent, AttributesChangedEvent, CheckpointSizeWarningEvent, ConstraintViolatedEvent, DevelopmentWarningEvent, ScheduleFiredEvent, ScheduleMissedFireEvent, SignalDeliveredEvent, SignalReceivedEvent, StorageSizeReportedEvent, TaskResultDeadLetteredEvent, UpdateCompletedEvent, UpdateReceivedEvent, WorkflowCancelledEvent, WorkflowCompletedEvent, WorkflowDefinitionRegisteredEvent, WorkflowFailedEvent, WorkflowRecoverySkippedEvent, WorkflowResumedEvent, WorkflowRevisionActivatedEvent, WorkflowRevisionActivationRejectedEvent, WorkflowRevisionDrainingEvent, WorkflowRevisionInstalledEvent, WorkflowRevisionRemovedEvent, WorkflowSourceLoadCancelledEvent, WorkflowSourceLoadFailedEvent, WorkflowSourceLoadReadyEvent, WorkflowSourceLoadStartedEvent, WorkflowStartedEvent, WorkflowSuspendedEvent, WorkflowTeardownEvent, WorkflowTimedOutEvent, } from './core/events';
|
|
32
38
|
export type { TypedEventTarget, WeftEventMap, WorkflowRecoverySkippedReason, WorkflowTeardownStatus, } from './core/events';
|
|
33
39
|
export { detectRuntime, detectRuntimeVersion, hashBytes, hashString, sleep, } from './runtime/portable';
|
|
34
40
|
export type { RuntimeKind } from './runtime/portable';
|
|
@@ -72,6 +78,19 @@ export type { FieldDiff, ShapeDescriptor, ShapeDiffOptions } from './core/versio
|
|
|
72
78
|
export { WorkflowTimeoutError, checkExpiredDeadlines, createDeadlineOperations, timeRemaining, } from './core/timeouts';
|
|
73
79
|
export { AtomicState, AtomicStateChangeEvent, AtomicStateConflictError, AtomicStateConflictEvent, AtomicStateExhaustedEvent, OBSERVABLE_SYMBOL, } from './core/atomic-state';
|
|
74
80
|
export type { AtomicStateCommitResult, AtomicStateEvent, AtomicStateObserver, AtomicStateOptions, AtomicStateScope, AtomicStateSnapshot, AtomicStateSubscription, SleepFunction, } from './core/atomic-state';
|
|
81
|
+
export { WaitBudgetElapsedError } from './core/application-primitive-abort';
|
|
82
|
+
export { Mailbox } from './core/mailbox';
|
|
83
|
+
export type { ApplicationCommandAdmission, ApplicationCommandCancellationResult, ApplicationCommandClaim, ApplicationCommandClaimedPayload, ApplicationCommandCleanupResult, ApplicationCommandInput, ApplicationCommandReceipt, ApplicationCommandRejection, ApplicationCommandRenewalResult, ApplicationCommandSettleResult, MailboxCapacity, MailboxClaimResult, MailboxEventSink, MailboxListOptions, MailboxMaintenanceReport, MailboxOptions, MailboxWaitOptions, } from './core/mailbox-contract';
|
|
84
|
+
export { MailboxContentionError } from './core/mailbox-internals';
|
|
85
|
+
export { isApplicationCommandLeased, isApplicationCommandTerminalState, isApplicationCommandWaiting, } from './core/mailbox-types';
|
|
86
|
+
export type { ApplicationCommandAccepted, ApplicationCommandAvailable, ApplicationCommandCancelling, ApplicationCommandCausation, ApplicationCommandClaimed, ApplicationCommandFailure, ApplicationCommandFailureReason, ApplicationCommandInlinePayload, ApplicationCommandLeasedRecord, ApplicationCommandPayload, ApplicationCommandRecord, ApplicationCommandReferencePayload, ApplicationCommandState, ApplicationCommandTerminalRecord, ApplicationCommandTerminalState, ApplicationCommandWaitingRecord, MailboxRecord, } from './core/mailbox-types';
|
|
87
|
+
export { ApplicationCommandValidationError } from './core/mailbox-validation';
|
|
88
|
+
export { Outbox } from './core/outbox';
|
|
89
|
+
export type { ApplicationDeliveryAdapter, ApplicationDeliveryAdmission, ApplicationDeliveryCancellationResult, ApplicationDeliveryClaim, ApplicationDeliveryClaimedPayload, ApplicationDeliveryCleanupResult, ApplicationDeliveryHeartbeatResult, ApplicationDeliveryInput, ApplicationDeliveryOperatorResult, ApplicationDeliveryOutcome, ApplicationDeliveryReceipt, ApplicationDeliverySendRequest, ApplicationDeliverySettleResult, OutboxCapacity, OutboxClaimResult, OutboxDeliverResult, OutboxDrainReport, OutboxEventSink, OutboxListOptions, OutboxMaintenanceReport, OutboxOptions, OutboxWaitOptions, } from './core/outbox-contract';
|
|
90
|
+
export { ApplicationDeliveryValidationError } from './core/outbox-guards';
|
|
91
|
+
export { OutboxContentionError } from './core/outbox-internals';
|
|
92
|
+
export { isApplicationDeliveryAttempting, isApplicationDeliveryLeased, isApplicationDeliveryTerminalState, isApplicationDeliveryWaiting, } from './core/outbox-types';
|
|
93
|
+
export type { ApplicationDeliveryAttempting, ApplicationDeliveryCancelling, ApplicationDeliveryCausation, ApplicationDeliveryClaimed, ApplicationDeliveryFailure, ApplicationDeliveryLeasedRecord, ApplicationDeliveryPayload, ApplicationDeliveryQueued, ApplicationDeliveryRecord, ApplicationDeliveryRetryScheduled, ApplicationDeliveryState, ApplicationDeliveryTerminalRecord, ApplicationDeliveryTerminalState, ApplicationDeliveryUnknownOutcomePolicy, ApplicationDeliveryWaitingRecord, OutboxRecord, } from './core/outbox-types';
|
|
75
94
|
export { DurableMutex, DurableSemaphore, initialLockRecord } from './core/concurrency';
|
|
76
95
|
export type { AcquireAttempt, AcquireWithSlot, CasSlot, DurableSemaphoreOptions, LockHolder, LockRecord, RenewWithSlot, } from './core/concurrency';
|
|
77
96
|
export { handleRequest } from './server/handler';
|
|
@@ -100,6 +119,8 @@ export { createActivityWorkerEntryUrl, initializeActivityWorkerMessageLoop, revo
|
|
|
100
119
|
export type { ActivityHandlerLookup } from './workers/activity-worker-entry';
|
|
101
120
|
export { WorkerPool } from './workers/pool';
|
|
102
121
|
export type { WorkerPoolOptions } from './workers/pool';
|
|
122
|
+
export { DEFAULT_WORKFLOW_COMPATIBILITY_POLICY, MAX_CONTRACT_IDENTIFIER_BYTES, MAX_CONTRACT_MESSAGE_COUNT, MAX_CONTRACT_SCHEMA_DEPTH, MAX_NORMALIZED_CONTRACT_BYTES, WORKFLOW_CONTRACT_DIGEST_ALGORITHM, WORKFLOW_CONTRACT_VERSION, WORKFLOW_REVISION_MANIFEST_VERSION, WorkflowContractConversionError, activityContractHash, buildWorkflowContract, buildWorkflowRevisionManifest, canonicalWorkflowContractJson, checkWorkflowCompatibility, contractHash, deriveWorkflowRevision, digestCanonicalWorkflowContract, normalizeWorkflowContract, parseWorkflowRevisionManifest, } from './core/contract/index.ts';
|
|
123
|
+
export type { BuildWorkflowRevisionManifestOptions, WorkflowActivityContract, WorkflowCompatibilityPolicy, WorkflowCompatibilityReason, WorkflowCompatibilityVerdict, WorkflowContract, WorkflowContractActivitySource, WorkflowContractMessageSource, WorkflowContractSource, WorkflowMessageContract, WorkflowRevisionManifest, WorkflowRevisionManifestParseResult, WorkflowRevisionManifestParseSuccess, WorkflowRevisionManifestRejectionReason, WorkflowRevisionManifestValidationFailure, } from './core/contract/index.ts';
|
|
103
124
|
export { HeartbeatManager } from './worker/heartbeat';
|
|
104
125
|
export { RemoteWorker } from './worker/index';
|
|
105
126
|
export { LongPollWorker } from './worker/long-poll';
|
package/dist/index.js
CHANGED
|
@@ -24,6 +24,7 @@ export {
|
|
|
24
24
|
AsyncActivityTokenNotFoundError,
|
|
25
25
|
BulkDeleteRequiresTerminalWorkflowsError,
|
|
26
26
|
BulkOperationConfirmationError,
|
|
27
|
+
DynamicWorkflowSourceUnavailableError,
|
|
27
28
|
ENGINE_LEASE_LOST_WARNING_NAME,
|
|
28
29
|
ENGINE_LEASE_SYNCHRONOUS_DISPOSE_WARNING_NAME,
|
|
29
30
|
Engine,
|
|
@@ -43,6 +44,8 @@ export {
|
|
|
43
44
|
WorkflowHandle,
|
|
44
45
|
WorkflowNotFoundError,
|
|
45
46
|
WorkflowNotRegisteredError,
|
|
47
|
+
WorkflowRevisionUnavailableError,
|
|
48
|
+
WorkflowSourceNotRegisteredError,
|
|
46
49
|
WorkflowSuspendNotSupportedError,
|
|
47
50
|
WorkflowTeardownPendingError,
|
|
48
51
|
WorkflowTypeNotRegisteredForRecoveryError
|
|
@@ -55,6 +58,12 @@ export {
|
|
|
55
58
|
WeftWorkflowWakeDiscardedWarning,
|
|
56
59
|
WorkflowClaimUnavailableError
|
|
57
60
|
} from "./core/engine.js";
|
|
61
|
+
export {
|
|
62
|
+
WorkflowCatalogConflictError,
|
|
63
|
+
WorkflowRevisionNotInstalledError
|
|
64
|
+
} from "./core/catalog/index.js";
|
|
65
|
+
export { WorkflowSourceValidationError, workflowSource } from "./core/source/index.js";
|
|
66
|
+
export { getWorkflowRevisionDiagnostics, removeWorkflowRevision } from "./core/engine.js";
|
|
58
67
|
export {
|
|
59
68
|
DEFAULT_CHECKPOINT_SIZE_WARNING_THRESHOLD,
|
|
60
69
|
DEFAULT_MAX_NESTING_DEPTH,
|
|
@@ -95,6 +104,15 @@ export {
|
|
|
95
104
|
WorkflowFailedEvent,
|
|
96
105
|
WorkflowRecoverySkippedEvent,
|
|
97
106
|
WorkflowResumedEvent,
|
|
107
|
+
WorkflowRevisionActivatedEvent,
|
|
108
|
+
WorkflowRevisionActivationRejectedEvent,
|
|
109
|
+
WorkflowRevisionDrainingEvent,
|
|
110
|
+
WorkflowRevisionInstalledEvent,
|
|
111
|
+
WorkflowRevisionRemovedEvent,
|
|
112
|
+
WorkflowSourceLoadCancelledEvent,
|
|
113
|
+
WorkflowSourceLoadFailedEvent,
|
|
114
|
+
WorkflowSourceLoadReadyEvent,
|
|
115
|
+
WorkflowSourceLoadStartedEvent,
|
|
98
116
|
WorkflowStartedEvent,
|
|
99
117
|
WorkflowSuspendedEvent,
|
|
100
118
|
WorkflowTeardownEvent,
|
|
@@ -189,6 +207,24 @@ export {
|
|
|
189
207
|
AtomicStateExhaustedEvent,
|
|
190
208
|
OBSERVABLE_SYMBOL
|
|
191
209
|
} from "./core/atomic-state.js";
|
|
210
|
+
export { WaitBudgetElapsedError } from "./core/application-primitive-abort.js";
|
|
211
|
+
export { Mailbox } from "./core/mailbox.js";
|
|
212
|
+
export { MailboxContentionError } from "./core/mailbox-internals.js";
|
|
213
|
+
export {
|
|
214
|
+
isApplicationCommandLeased,
|
|
215
|
+
isApplicationCommandTerminalState,
|
|
216
|
+
isApplicationCommandWaiting
|
|
217
|
+
} from "./core/mailbox-types.js";
|
|
218
|
+
export { ApplicationCommandValidationError } from "./core/mailbox-validation.js";
|
|
219
|
+
export { Outbox } from "./core/outbox.js";
|
|
220
|
+
export { ApplicationDeliveryValidationError } from "./core/outbox-guards.js";
|
|
221
|
+
export { OutboxContentionError } from "./core/outbox-internals.js";
|
|
222
|
+
export {
|
|
223
|
+
isApplicationDeliveryAttempting,
|
|
224
|
+
isApplicationDeliveryLeased,
|
|
225
|
+
isApplicationDeliveryTerminalState,
|
|
226
|
+
isApplicationDeliveryWaiting
|
|
227
|
+
} from "./core/outbox-types.js";
|
|
192
228
|
export { DurableMutex, DurableSemaphore, initialLockRecord } from "./core/concurrency.js";
|
|
193
229
|
export { handleRequest } from "./server/handler.js";
|
|
194
230
|
export { createAuthenticator, validateAuthConfig } from "./server/authentication.js";
|
|
@@ -221,6 +257,27 @@ export {
|
|
|
221
257
|
revokeActivityWorkerEntryUrl
|
|
222
258
|
} from "./workers/activity-worker-entry.js";
|
|
223
259
|
export { WorkerPool } from "./workers/pool.js";
|
|
260
|
+
export {
|
|
261
|
+
DEFAULT_WORKFLOW_COMPATIBILITY_POLICY,
|
|
262
|
+
MAX_CONTRACT_IDENTIFIER_BYTES,
|
|
263
|
+
MAX_CONTRACT_MESSAGE_COUNT,
|
|
264
|
+
MAX_CONTRACT_SCHEMA_DEPTH,
|
|
265
|
+
MAX_NORMALIZED_CONTRACT_BYTES,
|
|
266
|
+
WORKFLOW_CONTRACT_DIGEST_ALGORITHM,
|
|
267
|
+
WORKFLOW_CONTRACT_VERSION,
|
|
268
|
+
WORKFLOW_REVISION_MANIFEST_VERSION,
|
|
269
|
+
WorkflowContractConversionError,
|
|
270
|
+
activityContractHash,
|
|
271
|
+
buildWorkflowContract,
|
|
272
|
+
buildWorkflowRevisionManifest,
|
|
273
|
+
canonicalWorkflowContractJson,
|
|
274
|
+
checkWorkflowCompatibility,
|
|
275
|
+
contractHash,
|
|
276
|
+
deriveWorkflowRevision,
|
|
277
|
+
digestCanonicalWorkflowContract,
|
|
278
|
+
normalizeWorkflowContract,
|
|
279
|
+
parseWorkflowRevisionManifest
|
|
280
|
+
} from "./core/contract/index.js";
|
|
224
281
|
export { HeartbeatManager } from "./worker/heartbeat.js";
|
|
225
282
|
export { RemoteWorker } from "./worker/index.js";
|
|
226
283
|
export { LongPollWorker } from "./worker/long-poll.js";
|
package/dist/indexeddb.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
async function k(e,t){return await e.get(t)!==null}async function*C(e,t,n){for await(let[i]of e.scan(t,n))yield i}async function I(e,t){let n=0;for await(let i of C(e,t))n++;return n}async function A(e,t){let n=[];for await(let i of C(e,t))n.push({type:"delete",key:i});if(n.length===0)return 0;return await e.batch(n),n.length}async function E(e,t,n){let i=[];for await(let o of C(e,t,n))i.push({type:"delete",key:o});if(i.length===0)return 0;return await e.batch(i),i.length}function T(e,t,n){if(!e.capabilities()[t])throw Error(`Feature "${n}" requires storage capability "${t}", but this storage backend does not provide it.`)}var K="default";function r(e){return encodeURIComponent(e)}var z={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${r(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${r(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var O=1e4;class L extends Error{code="StorageBatchOperationLimitExceededError";cap=O;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${O}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function m(e,t){if(t>O)throw new L(e,t)}function w(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function U(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function V(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let n=0;n<e.byteLength;n++)if(e[n]!==t[n])return!1;return!0}async function N(e,t){if(e.has)return e.has(t);return k(e,t)}function M(e,t,n){if(e.keys)return e.keys(t,n);return C(e,t,n)}async function W(e,t){if(e.count)return e.count(t);return I(e,t)}async function j(e,t){if(e.deletePrefix)return e.deletePrefix(t);return A(e,t)}async function q(e,t,n){if(m("conditionalBatch conditions",t.length),m("conditionalBatch operations",n.length),T(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,n)}var f=(e)=>String(e).padStart(16,"0"),Q="0",J="1",_=(e,t,n,i)=>`sig:${r(e)}:${r(t)}:${i}:${r(n)}`,he={workflow:(e)=>`wf:${r(e)}`,checkpoint:(e)=>`wf:${r(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${r(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${r(e)}:timeline:`,timeline:(e,t)=>`wf:${r(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${r(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${r(t)}`,scheduleRun:(e)=>`schedule-run:${r(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${r(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${r(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${r(e)}:${r(t)}`,operation:(e,t,n)=>`op:${e}:${f(t)}:${n}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,n)=>`audit:bulk:${f(e)}:${r(t)}:${r(n)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${f(e)}:${r(t)}`,asyncActivity:(e,t)=>`async-act:v1:${r(e)}:${r(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${r(e)}:${r(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${r(e)}:`,activityReconciliation:(e,t,n)=>`actrec:v1:${r(e)}:${r(t)}:${n}`,eventPrefix:(e)=>`ev:${r(e)}:`,event:(e,t)=>`ev:${r(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${r(e)}:head`,eventWatermark:(e)=>`ev:${r(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventWatermark:()=>"fleet-event-watermark",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${r(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${r(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,n)=>_(e,t,n,J),startSignal:(e,t,n)=>_(e,t,n,Q),signalSequence:(e)=>`sigseq:v1:${r(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${r(e)}:`,signalAcceptedResponse:(e,t,n)=>`sigres:v1:${r(e)}:${r(t)}:${r(n)}`,deadline:(e,t)=>`wf-deadline:${f(e)}:${r(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${f(e)}:${r(t)}`,teardownTimer:(e,t)=>`wf-teardown:${f(e)}:${r(t)}`,delayedStart:(e,t)=>`wf-delayed:${f(e)}:${r(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${f(e)}:${r(t)}`,attribute:(e)=>`attr:${r(e)}`,attributeIndex:(e,t,n)=>`idx:${e}:${t}:${r(n)}`,tagIndex:(e,t)=>`tag:${r(e)}:${r(t)}`,updatePrefix:(e)=>`upd:${r(e)}:`,update:(e,t)=>`upd:${r(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${r(e)}:${t}`,startIdempotency:(e)=>`start-idem:${r(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${r(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...z,budget:(e,t,n)=>`budget:${e}:${t}:${n}`,review:(e,t)=>`review:${r(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${r(e)}`,childCancellationPrefix:(e)=>`child-cancel:${r(e)}:`,childCancellation:(e,t)=>`child-cancel:${r(e)}:${r(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}`,childWorkflowByParent:(e,t,n)=>`child-by-parent:${r(e)}:${t===void 0?"":`${r(t)}:`}${r(n)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${r(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${r(e)}:${r(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${r(e)}`,workflowHasServices:(e)=>`wf-has-services:${r(e)}`,finalizerState:(e)=>`wf-finalizer-state:${r(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${r(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${r(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${r(e)}`,offload:(e,t)=>`offload:${r(e)}:${t}`,archive:(e,t)=>`archive:${r(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${r(e)}:${r(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${K}:${r(e)}:${r(t)}`,streamChunkPrefix:(e,t)=>`blob:${r(e)}:${t}:chunk:`,streamChunk:(e,t,n)=>`blob:${r(e)}:${t}:chunk:${String(n).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${r(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${r(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,n)=>`tool-effect:${r(e)}:${t}:${n}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${r(e)}:${r(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${r(e)}:${r(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${f(e)}:${r(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${f(e)}:${r(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${f(e)}:${r(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${r(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function Z(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function R(e){let t={},n=!1;for(let o of["gt","gte","lt","lte"]){let s=e[o];if(s===void 0)continue;if(typeof s!=="string")throw Error("deleteRange bounds must be strings");t[o]=s,n=!0}if(!n)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=Z(e.limit);if(i!==void 0)t.limit=i;return t}async function H(e,t,n){let i=R(n);if(e.deleteRange)return e.deleteRange(t,i);return E(e,t,i)}function ee(e,t){let n={key:e,open:!1};if(t.gte!==void 0&&t.gte>n.key)n.key=t.gte,n.open=!1;if(t.gt!==void 0&&t.gt>=n.key)n.key=t.gt,n.open=!0;return n}function te(e,t){let n={key:w(e),open:!0};if(t.lt!==void 0&&t.lt<=n.key)n.key=t.lt,n.open=!0;if(t.lte!==void 0&&t.lte<n.key)n.key=t.lte,n.open=!1;return n}function F(e,t){let n=ee(e,t),i=te(e,t);if(n.key>i.key||n.key===i.key&&(n.open||i.open))return null;return{lower:n,upper:i}}function v(e){return e.replaceAll(/:+$/g,"")}function ne(e,t){let n=v(e),i=v(t);if(n.length===0)return i;if(i.length===0)return n;return`${n}:${i}`}class P{#t;#n;constructor(e,t){this.#t=e,this.#n=v(t)}#e(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#r(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#e(t.key),value:t.value};return{type:"delete",key:this.#e(t.key)}})}#i(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#o(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#e(e.gt);if(e.gte!==void 0)t.gte=this.#e(e.gte);if(e.lt!==void 0)t.lt=this.#e(e.lt);if(e.lte!==void 0)t.lte=this.#e(e.lte);return t}#s(e={}){let t=this.#o(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#a(e){return this.#o(e)}capabilities(){return this.#t.capabilities()}scoped(e){return new P(this.#t,ne(this.#n,e))}async get(e){return this.#t.get(this.#e(e))}async put(e,t){await this.#t.put(this.#e(e),t)}async delete(e){await this.#t.delete(this.#e(e))}async*scan(e,t){for await(let[n,i]of this.#t.scan(this.#e(e),this.#s(t)))yield[this.#i(n),i]}async batch(e){m("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return q(this.#t,e.map((n)=>({key:this.#e(n.key),expectedValue:n.expectedValue})),this.#r(t))}async has(e){return N(this.#t,this.#e(e))}async deletePrefix(e){return j(this.#t,this.#e(e))}async deleteRange(e,t){let n=this.#a(R(t));return H(this.#t,this.#e(e),n)}async*keys(e,t){for await(let n of M(this.#t,this.#e(e),this.#s(t)))yield this.#i(n)}async count(e){return W(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function G(e,t){return new P(e,t)}var l="kv";function re(e=globalThis){let{indexedDB:t,IDBKeyRange:n}=e;if(t===void 0||n===void 0)throw Error("IndexedDBStorage requires both indexedDB and IDBKeyRange runtime globals.");return{indexedDB:t,IDBKeyRange:n}}function S(e){return new Promise((t,n)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>n(e.error)})}function ie(e,t){let n=null,i=null,o=null,s=(a,c)=>{let d=a??Error(c);if(i){let g=i;n=null,i=null,g(d);return}o=d};return e.onsuccess=()=>{if(!n)return;let a=n;n=null,i=null,a(e.result)},e.onerror=()=>{s(e.error,"IndexedDB cursor request failed.")},t.onerror=()=>{s(t.error,"IndexedDB transaction failed.")},t.onabort=()=>{s(t.error,"IndexedDB transaction aborted.")},()=>new Promise((a,c)=>{if(o){let d=o;o=null,c(d);return}if(n=a,i=c,e.readyState==="done"){let d=n;n=null,i=null,d?.(e.result)}})}async function*X(e,t,n,i,o,s){let{limit:a,reverse:c}=i,d=w(n),g=t.bound(n,d,!1,!0),h=c?"prev":"next",p=e.transaction(l,"readonly"),u=p.objectStore(l),y=o(u,g,h),b=ie(y,p),x=0,D=!1;try{let B=await b();while(B){if(a!==void 0&&x>=a)break;let Y=B.key;if(U(Y,i))yield s(B),x++;B.continue(),B=await b()}D=!0}finally{if(!D)try{p.abort()}catch{}}}class oe{#t;#n=null;#e;#r;constructor(e="weft",t=re()){this.#t=e,this.#r=t,this.#e=this.#i()}capabilities(){return{persistence:"local",readAfterWrite:"linearizable",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#i(){let e=this.#r.indexedDB.open(this.#t,1);return e.onupgradeneeded=()=>{let t=e.result;if(!t.objectStoreNames.contains(l))t.createObjectStore(l)},S(e).then((t)=>(this.#n=t,t))}async get(e){let i=(await this.#e).transaction(l,"readonly").objectStore(l),o=await S(i.get(e));return o===void 0?null:new Uint8Array(o)}async put(e,t){let o=(await this.#e).transaction(l,"readwrite").objectStore(l);await S(o.put(t,e))}async delete(e){let i=(await this.#e).transaction(l,"readwrite").objectStore(l);await S(i.delete(e))}async has(e){let i=(await this.#e).transaction(l,"readonly").objectStore(l);return await S(i.count(e))>0}async deletePrefix(e){let t=await this.#e,n=w(e),i=this.#r.IDBKeyRange.bound(e,n,!1,!0);return new Promise((o,s)=>{let a=t.transaction(l,"readwrite"),c=a.objectStore(l),d=0,g=c.count(i);g.onsuccess=()=>{d=g.result,c.delete(i)},a.oncomplete=()=>o(d),a.onerror=()=>s(a.error)})}async deleteRange(e,t){let n=R(t),i=F(e,n);if(i===null)return 0;let o=this.#r.IDBKeyRange.bound(i.lower.key,i.upper.key,i.lower.open,i.upper.open),s=await this.#e,{limit:a}=n;return new Promise((c,d)=>{let g=s.transaction(l,"readwrite"),h=g.objectStore(l),p=0;if(a===void 0){let u=h.count(o);u.onsuccess=()=>{p=u.result,h.delete(o)}}else{let u=h.openCursor(o,"next");u.onsuccess=()=>{let y=u.result;if(y===null||p>=a)return;if(y.delete(),p++,p<a)y.continue()}}g.oncomplete=()=>c(p),g.onerror=()=>d(g.error)})}async*scan(e,t={}){let n=await this.#e;yield*X(n,this.#r.IDBKeyRange,e,t,(i,o,s)=>i.openCursor(o,s),(i)=>[i.key,new Uint8Array(i.value)])}async batch(e){if(m("batch operations",e.length),e.length===0)return;let t=await this.#e;return new Promise((n,i)=>{let o=t.transaction(l,"readwrite"),s=o.objectStore(l);for(let a of e)if(a.type==="put")s.put(a.value,a.key);else s.delete(a.key);o.oncomplete=()=>n(),o.onerror=()=>i(o.error)})}async conditionalBatch(e,t){m("conditionalBatch conditions",e.length),m("conditionalBatch operations",t.length);let n=await this.#e;return new Promise((i,o)=>{let s=n.transaction(l,"readwrite"),a=s.objectStore(l),c=!1,d=!1,g=(u,y)=>{if(c)return;c=!0,o(u??Error(y))};s.oncomplete=()=>{if(c)return;c=!0,i(!0)},s.onerror=()=>{g(s.error,"IndexedDB conditionalBatch transaction failed.")},s.onabort=()=>{if(c)return;if(c=!0,d){i(!1);return}o(s.error??Error("IndexedDB conditionalBatch transaction aborted."))};let h=()=>{for(let u of t)if(u.type==="put")a.put(u.value,u.key);else a.delete(u.key)},p=(u)=>{if(u>=e.length){h();return}let y=e[u],b=a.get(y.key);b.onsuccess=()=>{let x=b.result,D=x===void 0?null:new Uint8Array(x);if(!V(D,y.expectedValue)){d=!0,s.abort();return}p(u+1)},b.onerror=()=>{g(b.error,"IndexedDB conditionalBatch condition check failed.")}};p(0)})}async*keys(e,t={}){let n=await this.#e;yield*X(n,this.#r.IDBKeyRange,e,t,(i,o,s)=>i.openKeyCursor(o,s),(i)=>i.key)}async count(e){let t=await this.#e,n=w(e),o=t.transaction(l,"readonly").objectStore(l);return S(o.count(this.#r.IDBKeyRange.bound(e,n,!1,!0)))}scoped(e){return G(this,e)}[Symbol.dispose](){if(this.#n)this.#n.close(),this.#n=null}}export{oe as IndexedDBStorage};
|
|
1
|
+
async function I(e,t){return await e.get(t)!==null}async function*C(e,t,r){for await(let[i]of e.scan(t,r))yield i}async function A(e,t){let r=0;for await(let i of C(e,t))r++;return r}async function E(e,t){let r=[];for await(let i of C(e,t))r.push({type:"delete",key:i});if(r.length===0)return 0;return await e.batch(r),r.length}async function T(e,t,r){let i=[];for await(let o of C(e,t,r))i.push({type:"delete",key:o});if(i.length===0)return 0;return await e.batch(i),i.length}function K(e,t,r){if(!e.capabilities()[t])throw Error(`Feature "${r}" requires storage capability "${t}", but this storage backend does not provide it.`)}function n(e){return encodeURIComponent(e)}function y(e){return String(e).padStart(16,"0")}var _={catalogEntry:(e,t)=>`catalog-entry:${n(e)}:${n(t)}`,catalogEntryPrefix:(e)=>`catalog-entry:${n(e)}:`,catalogActive:(e)=>`catalog-active:${n(e)}`,catalogTombstone:(e,t)=>`catalog-tombstone:${n(e)}:${n(t)}`,catalogTombstonePrefix:()=>"catalog-tombstone:"};var L="default";var z={applicationMailbox:(e,t)=>`appmbx:v1:${n(e)}:${n(t)}`,applicationMailboxSinkProbe:(e,t,r)=>`appprobe:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandPrefix:(e,t)=>`appcmd:v1:${n(e)}:${n(t)}:`,applicationCommand:(e,t,r)=>`appcmd:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandReadyPrefix:(e,t)=>`appready:v1:${n(e)}:${n(t)}:`,applicationCommandReady:(e,t,r)=>`appready:v1:${n(e)}:${n(t)}:${y(r)}`,applicationCommandIdempotency:(e,t,r)=>`appidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationCommandBySequencePrefix:(e,t)=>`appseq:v1:${n(e)}:${n(t)}:`,applicationCommandBySequence:(e,t,r)=>`appseq:v1:${n(e)}:${n(t)}:${y(r)}`,applicationCommandTerminalPrefix:(e,t)=>`appterm:v1:${n(e)}:${n(t)}:`,applicationCommandTerminal:(e,t,r,i)=>`appterm:v1:${n(e)}:${n(t)}:${y(r)}:${n(i)}`};var U={applicationOutbox:(e,t)=>`appobx:v1:${n(e)}:${n(t)}`,applicationOutboxSinkProbe:(e,t,r)=>`appprobe:v1:outbox:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryPrefix:(e,t)=>`appdlv:v1:${n(e)}:${n(t)}:`,applicationDelivery:(e,t,r)=>`appdlv:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryDuePrefix:(e,t)=>`appdue:v1:${n(e)}:${n(t)}:`,applicationDeliveryDue:(e,t,r,i)=>`appdue:v1:${n(e)}:${n(t)}:${y(r)}:${n(i)}`,applicationDeliveryIdempotency:(e,t,r)=>`appdidem:v1:${n(e)}:${n(t)}:${n(r)}`,applicationDeliveryBySequencePrefix:(e,t)=>`appdseq:v1:${n(e)}:${n(t)}:`,applicationDeliveryBySequence:(e,t,r)=>`appdseq:v1:${n(e)}:${n(t)}:${y(r)}`,applicationDeliveryTerminalPrefix:(e,t)=>`appdterm:v1:${n(e)}:${n(t)}:`,applicationDeliveryTerminal:(e,t,r,i)=>`appdterm:v1:${n(e)}:${n(t)}:${y(r)}:${n(i)}`};var q={workflowOwnerEpoch:(e)=>`wf-owner-epoch:${n(e)}`,workflowOwnerHolder:(e)=>`wf-owner-holder:${n(e)}`,ownershipModeMarker:()=>"ownership-mode-marker"};var O=1e4;class M extends Error{code="StorageBatchOperationLimitExceededError";cap=O;count;target;constructor(e,t){super(`${e} count ${t} exceeds MAX_BATCH_OPERATIONS (${O}).`);this.name="StorageBatchOperationLimitExceededError",this.target=e,this.count=t}}function h(e,t){if(t>O)throw new M(e,t)}function w(e){return e.length>0?e.slice(0,-1)+String.fromCharCode(e.charCodeAt(e.length-1)+1):"ÿ"}function W(e,t={}){if(t.gt!==void 0&&e<=t.gt)return!1;if(t.gte!==void 0&&e<t.gte)return!1;if(t.lt!==void 0&&e>=t.lt)return!1;if(t.lte!==void 0&&e>t.lte)return!1;return!0}function N(e,t){if(e===null||t===null)return e===t;if(e.byteLength!==t.byteLength)return!1;for(let r=0;r<e.byteLength;r++)if(e[r]!==t[r])return!1;return!0}async function j(e,t){if(e.has)return e.has(t);return I(e,t)}function H(e,t,r){if(e.keys)return e.keys(t,r);return C(e,t,r)}async function F(e,t){if(e.count)return e.count(t);return A(e,t)}async function Y(e,t){if(e.deletePrefix)return e.deletePrefix(t);return E(e,t)}async function X(e,t,r){if(h("conditionalBatch conditions",t.length),h("conditionalBatch operations",r.length),K(e,"conditionalBatch","storageConditionalBatch"),!e.conditionalBatch)throw Error("This storage backend reports conditionalBatch capability but does not implement the conditionalBatch() method.");return e.conditionalBatch(t,r)}var f=y,te="0",ne="1",V=(e,t,r,i)=>`sig:${n(e)}:${n(t)}:${i}:${n(r)}`,ke={workflow:(e)=>`wf:${n(e)}`,checkpoint:(e)=>`wf:${n(e)}:ckpt`,checkpointHistory:(e,t)=>`wf:${n(e)}:ckpt:${String(t).padStart(10,"0")}`,timelinePrefix:(e)=>`wf:${n(e)}:timeline:`,timeline:(e,t)=>`wf:${n(e)}:timeline:${String(t).padStart(10,"0")}`,schedule:(e)=>`schedule:${n(e)}`,scheduleTick:(e,t)=>`schedule-due:${String(e).padStart(16,"0")}:${n(t)}`,scheduleRun:(e)=>`schedule-run:${n(e)}`,scheduleRunLink:(e)=>`schedule-run-link:${n(e)}`,scheduleRunBySchedulePrefix:(e)=>`schedule-run-by-schedule:${n(e)}:`,scheduleRunBySchedule:(e,t)=>`schedule-run-by-schedule:${n(e)}:${n(t)}`,operation:(e,t,r)=>`op:${e}:${f(t)}:${r}`,operationInflight:(e)=>`op:inflight:${e}`,operationQueued:(e)=>`op:queued:${e}`,operationResolved:(e)=>`op:resolved:${e}`,bulkOperationAuditPrefix:()=>"audit:bulk:",bulkOperationAudit:(e,t,r)=>`audit:bulk:${f(e)}:${n(t)}:${n(r)}`,operationResolvedByTimePrefix:()=>"op:resolved-by-time:",operationResolvedByTime:(e,t)=>`op:resolved-by-time:${f(e)}:${n(t)}`,asyncActivity:(e,t)=>`async-act:v1:${n(e)}:${n(t)}`,asyncActivityResolution:(e,t)=>`async-act:v1:${n(e)}:${n(t)}:resolution`,activityReconciliationPrefix:(e)=>`actrec:v1:${n(e)}:`,activityReconciliation:(e,t,r)=>`actrec:v1:${n(e)}:${n(t)}:${r}`,eventPrefix:(e)=>`ev:${n(e)}:`,event:(e,t)=>`ev:${n(e)}:${String(t).padStart(10,"0")}`,eventHead:(e)=>`ev:${n(e)}:head`,eventWatermark:(e)=>`ev:${n(e)}:watermark`,fleetEventPrefix:()=>"fleet-event:",fleetEvent:(e)=>`fleet-event:${String(e).padStart(10,"0")}`,fleetEventTail:()=>"fleet-event-tail",fleetEventWatermark:()=>"fleet-event-watermark",fleetEventByWorkflowPrefix:(e)=>`fleet-event-by-workflow:${n(e)}:`,fleetEventByWorkflow:(e,t)=>`fleet-event-by-workflow:${n(e)}:${String(t).padStart(10,"0")}`,signal:(e,t,r)=>V(e,t,r,ne),startSignal:(e,t,r)=>V(e,t,r,te),signalSequence:(e)=>`sigseq:v1:${n(e)}`,signalAcceptedResponsePrefix:(e)=>`sigres:v1:${n(e)}:`,signalAcceptedResponse:(e,t,r)=>`sigres:v1:${n(e)}:${n(t)}:${n(r)}`,deadline:(e,t)=>`wf-deadline:${f(e)}:${n(t)}`,terminalCleanup:(e,t)=>`wf-cleanup:${f(e)}:${n(t)}`,teardownTimer:(e,t)=>`wf-teardown:${f(e)}:${n(t)}`,delayedStart:(e,t)=>`wf-delayed:${f(e)}:${n(t)}`,terminalWorkflowPrefix:()=>"wf-terminal:",terminalWorkflow:(e,t)=>`wf-terminal:${f(e)}:${n(t)}`,attribute:(e)=>`attr:${n(e)}`,attributeIndex:(e,t,r)=>`idx:${e}:${t}:${n(r)}`,tagIndex:(e,t)=>`tag:${n(e)}:${n(t)}`,updatePrefix:(e)=>`upd:${n(e)}:`,update:(e,t)=>`upd:${n(e)}:${t}`,updateResponse:(e)=>`upr:${e}`,updateIdempotency:(e,t)=>`upk:${n(e)}:${t}`,startIdempotency:(e)=>`start-idem:${n(e)}`,startIdempotencySignalId:(e)=>`start-idem:${e}`,livenessPrefix:()=>"liveness:",liveness:(e)=>`liveness:${n(e)}`,leasePrefix:()=>"lease:",leaseEpoch:()=>"lease:epoch",leaseHolder:()=>"lease:holder",...z,...U,...q,..._,budget:(e,t,r)=>`budget:${e}:${t}:${r}`,review:(e,t)=>`review:${n(e)}:${t}`,workflowHeaders:(e)=>`wf-headers:${n(e)}`,childCancellationPrefix:(e)=>`child-cancel:${n(e)}:`,childCancellation:(e,t)=>`child-cancel:${n(e)}:${n(t)}`,childWorkflowByParentPrefix:(e,t)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}`,childWorkflowByParent:(e,t,r)=>`child-by-parent:${n(e)}:${t===void 0?"":`${n(t)}:`}${n(r)}`,terminalCleanupNeeded:(e)=>`wf-cleanup-needed:${n(e)}`,workflowConcurrency:(e,t)=>`wf-concurrency:${n(e)}:${n(t)}`,workflowConcurrencyHolder:(e)=>`wf-concurrency-holder:${n(e)}`,workflowHasServices:(e)=>`wf-has-services:${n(e)}`,finalizerState:(e)=>`wf-finalizer-state:${n(e)}`,teardownOwed:(e)=>`wf-teardown-needed:${n(e)}`,teardownSucceeded:(e)=>`wf-teardown-succeeded:${n(e)}`,teardownDeadLetter:(e)=>`wf-teardown-deadletter:${n(e)}`,offload:(e,t)=>`offload:${n(e)}:${t}`,archive:(e,t)=>`archive:${n(e)}:${t}`,stateExecution:(e,t)=>`state:execution:${n(e)}:${n(t)}`,stateWorkflow:(e,t)=>`state:workflow-scope:${L}:${n(e)}:${n(t)}`,streamChunkPrefix:(e,t)=>`blob:${n(e)}:${t}:chunk:`,streamChunk:(e,t,r)=>`blob:${n(e)}:${t}:chunk:${String(r).padStart(10,"0")}`,streamTail:(e,t)=>`blob:${n(e)}:${t}:tail`,streamMetadata:(e,t)=>`blob:${n(e)}:${t}:meta`,budgetCharged:(e)=>`budget-charged:${e}`,toolEffect:(e,t,r)=>`tool-effect:${n(e)}:${t}:${r}`,workflowVisibilityStatus:(e,t)=>`wf-idx-status:${n(e)}:${n(t)}`,workflowVisibilityType:(e,t)=>`wf-idx-type:${n(e)}:${n(t)}`,workflowVisibilityCreated:(e,t)=>`wf-idx-created:${f(e)}:${n(t)}`,workflowVisibilityUpdated:(e,t)=>`wf-idx-updated:${f(e)}:${n(t)}`,workflowVisibilityDeadline:(e,t)=>`wf-idx-deadline:${f(e)}:${n(t)}`,workflowVisibilityManifest:(e)=>`wf-idx-manifest:${n(e)}`,workflowVisibilityMetaVersion:()=>"wf-idx-meta:version",workflowVisibilityMetaBuiltAt:()=>"wf-idx-meta:built-at",workflowVisibilityMetaCursor:()=>"wf-idx-meta:cursor"};function re(e){if(e===void 0)return;if(typeof e!=="number"||!Number.isInteger(e)||e<0)throw Error("deleteRange limit must be a finite non-negative integer");return e===0?0:e}function D(e){let t={},r=!1;for(let o of["gt","gte","lt","lte"]){let a=e[o];if(a===void 0)continue;if(typeof a!=="string")throw Error("deleteRange bounds must be strings");t[o]=a,r=!0}if(!r)throw Error("deleteRange requires at least one of gt/gte/lt/lte; use deletePrefix to delete a whole prefix");let i=re(e.limit);if(i!==void 0)t.limit=i;return t}async function G(e,t,r){let i=D(r);if(e.deleteRange)return e.deleteRange(t,i);return T(e,t,i)}function ie(e,t){let r={key:e,open:!1};if(t.gte!==void 0&&t.gte>r.key)r.key=t.gte,r.open=!1;if(t.gt!==void 0&&t.gt>=r.key)r.key=t.gt,r.open=!0;return r}function oe(e,t){let r={key:w(e),open:!0};if(t.lt!==void 0&&t.lt<=r.key)r.key=t.lt,r.open=!0;if(t.lte!==void 0&&t.lte<r.key)r.key=t.lte,r.open=!1;return r}function Q(e,t){let r=ie(e,t),i=oe(e,t);if(r.key>i.key||r.key===i.key&&(r.open||i.open))return null;return{lower:r,upper:i}}function P(e){return e.replaceAll(/:+$/g,"")}function ae(e,t){let r=P(e),i=P(t);if(r.length===0)return i;if(i.length===0)return r;return`${r}:${i}`}class k{#t;#n;constructor(e,t){this.#t=e,this.#n=P(t)}#e(e){if(this.#n.length===0)return e;return e.length===0?`${this.#n}:`:`${this.#n}:${e}`}#r(e){return e.map((t)=>{if(t.type==="put")return{type:"put",key:this.#e(t.key),value:t.value};return{type:"delete",key:this.#e(t.key)}})}#i(e){if(this.#n.length===0)return e;return e.slice(this.#n.length+1)}#o(e){let t={};if(e.limit!==void 0)t.limit=e.limit;if(e.gt!==void 0)t.gt=this.#e(e.gt);if(e.gte!==void 0)t.gte=this.#e(e.gte);if(e.lt!==void 0)t.lt=this.#e(e.lt);if(e.lte!==void 0)t.lte=this.#e(e.lte);return t}#a(e={}){let t=this.#o(e);if(e.reverse!==void 0)t.reverse=e.reverse;return t}#s(e){return this.#o(e)}capabilities(){return this.#t.capabilities()}scoped(e){return new k(this.#t,ae(this.#n,e))}async get(e){return this.#t.get(this.#e(e))}async put(e,t){await this.#t.put(this.#e(e),t)}async delete(e){await this.#t.delete(this.#e(e))}async*scan(e,t){for await(let[r,i]of this.#t.scan(this.#e(e),this.#a(t)))yield[this.#i(r),i]}async batch(e){h("batch operations",e.length),await this.#t.batch(this.#r(e))}async conditionalBatch(e,t){return X(this.#t,e.map((r)=>({key:this.#e(r.key),expectedValue:r.expectedValue})),this.#r(t))}async has(e){return j(this.#t,this.#e(e))}async deletePrefix(e){return Y(this.#t,this.#e(e))}async deleteRange(e,t){let r=this.#s(D(t));return G(this.#t,this.#e(e),r)}async*keys(e,t){for await(let r of H(this.#t,this.#e(e),this.#a(t)))yield this.#i(r)}async count(e){return F(this.#t,this.#e(e))}[Symbol.dispose](){this.#t[Symbol.dispose]()}}function J(e,t){return new k(e,t)}var l="kv";function se(e=globalThis){let{indexedDB:t,IDBKeyRange:r}=e;if(t===void 0||r===void 0)throw Error("IndexedDBStorage requires both indexedDB and IDBKeyRange runtime globals.");return{indexedDB:t,IDBKeyRange:r}}function x(e){return new Promise((t,r)=>{e.onsuccess=()=>t(e.result),e.onerror=()=>r(e.error)})}function le(e,t){let r=null,i=null,o=null,a=(s,c)=>{let u=s??Error(c);if(i){let d=i;r=null,i=null,d(u);return}o=u};return e.onsuccess=()=>{if(!r)return;let s=r;r=null,i=null,s(e.result)},e.onerror=()=>{a(e.error,"IndexedDB cursor request failed.")},t.onerror=()=>{a(t.error,"IndexedDB transaction failed.")},t.onabort=()=>{a(t.error,"IndexedDB transaction aborted.")},()=>new Promise((s,c)=>{if(o){let u=o;o=null,c(u);return}if(r=s,i=c,e.readyState==="done"){let u=r;r=null,i=null,u?.(e.result)}})}async function*Z(e,t,r,i,o,a){let{limit:s,reverse:c}=i,u=w(r),d=t.bound(r,u,!1,!0),b=c?"prev":"next",p=e.transaction(l,"readonly"),g=p.objectStore(l),m=o(g,d,b),S=le(m,p),v=0,R=!1;try{let B=await S();while(B){if(s!==void 0&&v>=s)break;let ee=B.key;if(W(ee,i))yield a(B),v++;B.continue(),B=await S()}R=!0}finally{if(!R)try{p.abort()}catch{}}}class ce{#t;#n=null;#e;#r;constructor(e="weft",t=se()){this.#t=e,this.#r=t,this.#e=this.#i()}capabilities(){return{persistence:"local",readAfterWrite:"linearizable",scanConsistency:"best-effort",atomicBatch:!0,conditionalBatch:!0,boundedRangeDelete:!0}}#i(){let e=this.#r.indexedDB.open(this.#t,1);return e.onupgradeneeded=()=>{let t=e.result;if(!t.objectStoreNames.contains(l))t.createObjectStore(l)},x(e).then((t)=>(this.#n=t,t))}async get(e){let i=(await this.#e).transaction(l,"readonly").objectStore(l),o=await x(i.get(e));return o===void 0?null:new Uint8Array(o)}async put(e,t){let o=(await this.#e).transaction(l,"readwrite").objectStore(l);await x(o.put(t,e))}async delete(e){let i=(await this.#e).transaction(l,"readwrite").objectStore(l);await x(i.delete(e))}async has(e){let i=(await this.#e).transaction(l,"readonly").objectStore(l);return await x(i.count(e))>0}async deletePrefix(e){let t=await this.#e,r=w(e),i=this.#r.IDBKeyRange.bound(e,r,!1,!0);return new Promise((o,a)=>{let s=t.transaction(l,"readwrite"),c=s.objectStore(l),u=0,d=c.count(i);d.onsuccess=()=>{u=d.result,c.delete(i)},s.oncomplete=()=>o(u),s.onerror=()=>a(s.error)})}async deleteRange(e,t){let r=D(t),i=Q(e,r);if(i===null)return 0;let o=this.#r.IDBKeyRange.bound(i.lower.key,i.upper.key,i.lower.open,i.upper.open),a=await this.#e,{limit:s}=r;return new Promise((c,u)=>{let d=a.transaction(l,"readwrite"),b=d.objectStore(l),p=0;if(s===void 0){let g=b.count(o);g.onsuccess=()=>{p=g.result,b.delete(o)}}else{let g=b.openCursor(o,"next");g.onsuccess=()=>{let m=g.result;if(m===null||p>=s)return;if(m.delete(),p++,p<s)m.continue()}}d.oncomplete=()=>c(p),d.onerror=()=>u(d.error)})}async*scan(e,t={}){let r=await this.#e;yield*Z(r,this.#r.IDBKeyRange,e,t,(i,o,a)=>i.openCursor(o,a),(i)=>[i.key,new Uint8Array(i.value)])}async batch(e){if(h("batch operations",e.length),e.length===0)return;let t=await this.#e;return new Promise((r,i)=>{let o=t.transaction(l,"readwrite"),a=o.objectStore(l);for(let s of e)if(s.type==="put")a.put(s.value,s.key);else a.delete(s.key);o.oncomplete=()=>r(),o.onerror=()=>i(o.error)})}async conditionalBatch(e,t){h("conditionalBatch conditions",e.length),h("conditionalBatch operations",t.length);let r=await this.#e;return new Promise((i,o)=>{let a=r.transaction(l,"readwrite"),s=a.objectStore(l),c=!1,u=!1,d=(g,m)=>{if(c)return;c=!0,o(g??Error(m))};a.oncomplete=()=>{if(c)return;c=!0,i(!0)},a.onerror=()=>{d(a.error,"IndexedDB conditionalBatch transaction failed.")},a.onabort=()=>{if(c)return;if(c=!0,u){i(!1);return}o(a.error??Error("IndexedDB conditionalBatch transaction aborted."))};let b=()=>{for(let g of t)if(g.type==="put")s.put(g.value,g.key);else s.delete(g.key)},p=(g)=>{if(g>=e.length){b();return}let m=e[g],S=s.get(m.key);S.onsuccess=()=>{let v=S.result,R=v===void 0?null:new Uint8Array(v);if(!N(R,m.expectedValue)){u=!0,a.abort();return}p(g+1)},S.onerror=()=>{d(S.error,"IndexedDB conditionalBatch condition check failed.")}};p(0)})}async*keys(e,t={}){let r=await this.#e;yield*Z(r,this.#r.IDBKeyRange,e,t,(i,o,a)=>i.openKeyCursor(o,a),(i)=>i.key)}async count(e){let t=await this.#e,r=w(e),o=t.transaction(l,"readonly").objectStore(l);return x(o.count(this.#r.IDBKeyRange.bound(e,r,!1,!0)))}scoped(e){return J(this,e)}[Symbol.dispose](){if(this.#n)this.#n.close(),this.#n=null}}export{ce as IndexedDBStorage};
|
package/dist/json-schema.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
3
|
-
`)}function u(r){return typeof r.validate==="function"}function
|
|
4
|
-
${d(t)}`}var
|
|
2
|
+
var y=import.meta.require;class i extends Error{code;constructor(r,e,t){super(e,t);this.code=r,this.name=r}}var l={WorkflowAlreadyExistsError:!0,BulkDeleteRequiresTerminalWorkflowsError:!0,BulkOperationConfirmationError:!0,WorkflowTypeNotRegisteredForRecoveryError:!0,EngineCreateNameMismatchError:!0,EngineDisposedError:!0,EngineDisposalError:!0,WorkflowNotFoundError:!0,WorkflowNotRegisteredError:!0,WorkflowConcurrencyLimitExceededError:!0,WorkflowSuspendNotSupportedError:!0,ActivityResolutionError:!0,BranchTopologyChangedError:!0,PersistedDataIncompatibleError:!0,PersistedDataCorruptError:!0,WorkflowTimeoutError:!0,HttpClientError:!0,WorkerProtocolIncompatibleError:!0,UpdateTimeoutError:!0,UpdateValidationError:!0,WorkflowTerminalError:!0,WorkflowBuilderError:!0,VersionMismatchError:!0,EffectReplayConflictError:!0,ReviewTimeoutError:!0,AtomicStateConflictError:!0,StandardSchemaValidationError:!0,ActivityReconciliationCapabilityError:!0,ActivityReconciliationConflictError:!0,ActivityReconciliationIndeterminateError:!0,DurableActivityScopeError:!0,DurableActivityUnsupportedError:!0,AsyncActivityTokenNotFoundError:!0,ActivityScheduleToCloseTimeoutError:!0,ActivityPerAttemptTimeoutError:!0,PayloadSizeExceededError:!0,StartOrSignalConflictError:!0,WorkflowTeardownPendingError:!0,IdempotencyKeyPurgedError:!0,WorkerManifestBuildError:!0,OwnershipModeMismatchError:!0,ApplicationCommandValidationError:!0,MailboxContentionError:!0,ApplicationDeliveryValidationError:!0,OutboxContentionError:!0,WaitBudgetElapsedError:!0,WorkflowCatalogConflictError:!0,WorkflowRevisionNotInstalledError:!0,WorkflowSourceValidationError:!0,WorkflowSourceNotRegisteredError:!0,DynamicWorkflowSourceUnavailableError:!0,WorkflowRevisionUnavailableError:!0},g=new Set(Object.keys(l));class o extends i{fieldName;operation;issues;constructor(r){super("StandardSchemaValidationError",p(r.fieldName,r.operation,r.issues));this.fieldName=r.fieldName,this.operation=r.operation,this.issues=r.issues}}async function s(r,e,t){let a=r["~standard"];if(!u(a))throw TypeError(`Schema for ${t.fieldName} does not provide runtime validation. Attach a Standard Schema validator (Zod, Valibot, or another vendor) or supply a runtime-validating schema at this boundary.`);let n=await a.validate(e);if(n.issues===void 0)return n.value;throw new o({fieldName:t.fieldName,operation:t.operation,issues:n.issues.map(c)})}function d(r){return r.map((e)=>e.path===""?e.message:`${e.path}: ${e.message}`).join(`
|
|
3
|
+
`)}function u(r){return typeof r.validate==="function"}function c(r){return{message:r.message,path:E(r.path)}}function E(r){if(r===void 0||r.length===0)return"";let e="";for(let t of r)e+="/",e+=f(t);return e}function f(r){let e=m(r)?r.key:r;return S(String(e))}function m(r){return r!==null&&typeof r==="object"&&"key"in r}function S(r){return r.replace(/~/g,"~0").replace(/\//g,"~1")}function p(r,e,t){return`Validation failed for ${e===void 0?r:`${e} ${r}`}:
|
|
4
|
+
${d(t)}`}var C=d,v=o,R=s;export{v as StandardSchemaValidationError,C as formatStandardSchemaIssues,R as validateStandardSchema};
|
package/dist/mcp/resources.js
CHANGED
|
@@ -68,6 +68,8 @@ export async function readMcpResource(uri, context) {
|
|
|
68
68
|
return jsonResource(uri, {
|
|
69
69
|
checkpoints: await context.engine.listCheckpoints(parsed.workflowId)
|
|
70
70
|
});
|
|
71
|
+
default:
|
|
72
|
+
throw Error(`Unknown Weft resource URI kind: ${JSON.stringify(parsed)}`);
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
75
|
export async function subscribeMcpResource(uri, session, context) {
|
|
@@ -129,9 +129,17 @@ export declare function hashString(data: string): string;
|
|
|
129
129
|
* try to resolve or stub. Returns `undefined` in the browser or any runtime
|
|
130
130
|
* lacking `process.getBuiltinModule`, so callers on a browser-reachable path
|
|
131
131
|
* must treat the result as optional rather than throwing at import time.
|
|
132
|
+
*
|
|
133
|
+
* Overloaded per known specifier so callers get the correct module type from
|
|
134
|
+
* the literal `id` argument alone, without an explicit type argument. Add a
|
|
135
|
+
* new literal overload here when a new built-in specifier is loaded through
|
|
136
|
+
* this helper.
|
|
132
137
|
* @internal
|
|
133
138
|
*/
|
|
134
|
-
export declare function tryLoadNodeBuiltin
|
|
139
|
+
export declare function tryLoadNodeBuiltin(id: 'node:fs'): typeof import('node:fs') | undefined;
|
|
140
|
+
export declare function tryLoadNodeBuiltin(id: 'node:fs/promises'): typeof import('node:fs/promises') | undefined;
|
|
141
|
+
export declare function tryLoadNodeBuiltin(id: 'node:zlib'): typeof import('node:zlib') | undefined;
|
|
142
|
+
export declare function tryLoadNodeBuiltin(id: 'node:module'): typeof import('node:module') | undefined;
|
|
135
143
|
/**
|
|
136
144
|
* Return the byte size of a file at the given path.
|
|
137
145
|
*
|
|
@@ -34,7 +34,10 @@ function dataForConflict(data) {
|
|
|
34
34
|
reason: data.reason,
|
|
35
35
|
missingTypes: data.missingTypes === void 0 ? void 0 : [...data.missingTypes],
|
|
36
36
|
missingWorkflowCount: data.missingWorkflowCount,
|
|
37
|
-
samplesTruncated: data.samplesTruncated
|
|
37
|
+
samplesTruncated: data.samplesTruncated,
|
|
38
|
+
currentGeneration: data.currentGeneration,
|
|
39
|
+
compatibilityReasons: data.compatibilityReasons === void 0 ? void 0 : [...data.compatibilityReasons],
|
|
40
|
+
sourceValidationReasons: data.sourceValidationReasons === void 0 ? void 0 : [...data.sourceValidationReasons]
|
|
38
41
|
});
|
|
39
42
|
}
|
|
40
43
|
function dataForNotFound(data) {
|
|
@@ -21,5 +21,9 @@ export function authContextToPrincipal(authContext) {
|
|
|
21
21
|
return principalFromMutualTls({ subject: "mtls-caller", scopes: [] });
|
|
22
22
|
case "public":
|
|
23
23
|
return anonymousPrincipal();
|
|
24
|
+
default: {
|
|
25
|
+
const exhaustiveCheck = authContext.method;
|
|
26
|
+
throw Error(`Unknown auth context method: ${JSON.stringify(exhaustiveCheck)}`);
|
|
27
|
+
}
|
|
24
28
|
}
|
|
25
29
|
}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -327,6 +327,17 @@ export interface TaskDispatch {
|
|
|
327
327
|
workflowId?: string | undefined;
|
|
328
328
|
/** Durable token for the workflow run that launched this task, when known. */
|
|
329
329
|
workflowExecutionToken?: string | undefined;
|
|
330
|
+
/**
|
|
331
|
+
* The dispatching workflow run's persisted `WorkflowState.revision`
|
|
332
|
+
* (WFT-20), when known. When BOTH `workflowId` and `workflowRevision` are
|
|
333
|
+
* supplied, `dispatchTask` rejects the dispatch before reserving any
|
|
334
|
+
* worker capacity if the persisted run's revision disagrees — the run was
|
|
335
|
+
* displaced (e.g. by a `start-new` restart) since this revision was
|
|
336
|
+
* captured. The worker echoes this value back on `taskResult`; a
|
|
337
|
+
* completion whose echoed revision disagrees with the in-flight dispatch's
|
|
338
|
+
* is rejected as stale.
|
|
339
|
+
*/
|
|
340
|
+
workflowRevision?: string | undefined;
|
|
330
341
|
/** When true, prefer the worker that last handled a task for this workflow. Requires `workflowId`. */
|
|
331
342
|
sticky?: boolean;
|
|
332
343
|
/** Visibility timeout in milliseconds. Defaults to `DEFAULT_VISIBILITY_TIMEOUT` (30 000). */
|
|
@@ -66,6 +66,8 @@ function dispatchResultToResponse(result) {
|
|
|
66
66
|
return Response.json(result.response, { status: 200, headers: CACHE_CONTROL_HEADERS });
|
|
67
67
|
case "batch":
|
|
68
68
|
return Response.json(result.responses, { status: 200, headers: CACHE_CONTROL_HEADERS });
|
|
69
|
+
default:
|
|
70
|
+
throw Error(`Unknown JSON-RPC dispatch result kind: ${JSON.stringify(result)}`);
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
const CONTENT_LENGTH_PATTERN = /^(0|[1-9]\d*)$/;
|
|
@@ -12,8 +12,13 @@ import {
|
|
|
12
12
|
validateSessionPrimitiveFrame,
|
|
13
13
|
validateSubscribeParams
|
|
14
14
|
} from "./json-rpc-websocket-validation.js";
|
|
15
|
-
import {
|
|
15
|
+
import {
|
|
16
|
+
executeSubscription
|
|
17
|
+
} from "./operation-catalog.js";
|
|
16
18
|
const DEFAULT_MAX_SUBSCRIPTIONS = 100, DEFAULT_MAX_FRAME_BYTES = 1048576;
|
|
19
|
+
function isSessionPrimitive(method) {
|
|
20
|
+
return method === SESSION_METHODS.SUBSCRIBE || method === WORKFLOW_EVENTS_OPERATION_NAME || method === SESSION_METHODS.FLEET_SUBSCRIBE || method === SESSION_METHODS.UNSUBSCRIBE;
|
|
21
|
+
}
|
|
17
22
|
export function createJsonRpcWebSocketSession(options) {
|
|
18
23
|
const { registry, engine, principal, emitter, feed, fleetFeed } = options, maxSubscriptions = options.maxSubscriptions ?? DEFAULT_MAX_SUBSCRIPTIONS, maxFrameBytes = options.maxFrameBytes ?? DEFAULT_MAX_FRAME_BYTES, transport = options.transport ?? "jsonRpcWebSocket", subscriptions = new Map;
|
|
19
24
|
let emitterBroken = !1, disposed = !1;
|
|
@@ -186,9 +191,6 @@ export function createJsonRpcWebSocketSession(options) {
|
|
|
186
191
|
params: { subscriptionId, reason: "client-unsubscribed" }
|
|
187
192
|
});
|
|
188
193
|
}
|
|
189
|
-
function isSessionPrimitive(method) {
|
|
190
|
-
return method === SESSION_METHODS.SUBSCRIBE || method === WORKFLOW_EVENTS_OPERATION_NAME || method === SESSION_METHODS.FLEET_SUBSCRIBE || method === SESSION_METHODS.UNSUBSCRIBE;
|
|
191
|
-
}
|
|
192
194
|
async function handleSessionPrimitive(validation) {
|
|
193
195
|
const sessionPrimitiveError = validateSessionPrimitiveFrame(validation);
|
|
194
196
|
if (sessionPrimitiveError !== null) {
|
|
@@ -17,6 +17,6 @@ export { executeOperation } from './pipeline.ts';
|
|
|
17
17
|
export { UNIVERSAL_FAULT_DEFAULTS, raiseFault } from './raise-fault.ts';
|
|
18
18
|
export { createOperationRegistry } from './registry.ts';
|
|
19
19
|
export { SubscriptionElementValidationError, executeStream, executeSubscription, } from './stream-pipeline.ts';
|
|
20
|
-
export { OPERATION_NAME_PATTERN, isValidOperationName, validateOperationName, type AuthorizationDecision, type DispatchContext, type DispatchResult, type ErasedOperation, type McpToolMetadata, type OperationContext, type OperationDefinition, type OperationInvocationResult, type OperationKind, type OperationRegistry, type ParameterizedAccessHint, type PipelineTrace, type PipelineTraceMarker, type RegistrableOperation, type StreamOperationInvocation, type SubscriptionOperationInvocation, type TransportAvailability, type UnknownKeyDisposition, type UnknownKeyPolicy, } from './types.ts';
|
|
20
|
+
export { OPERATION_NAME_PATTERN, isValidOperationName, validateOperationName, type AuthorizationDecision, type DispatchContext, type DispatchResult, type ErasedOperation, type McpToolMetadata, type OperationContext, type OperationDefinition, type OperationInvocationResult, type OperationKind, type OperationRegistry, type ParameterizedAccessHint, type PipelineTrace, type PipelineTraceMarker, type RegistrableOperation, type StreamOperationInvocation, type SubscriptionOperationInvocation, type SubscriptionStartEnvelope, type TransportAvailability, type UnknownKeyDisposition, type UnknownKeyPolicy, } from './types.ts';
|
|
21
21
|
export { catalogWorkflow } from './workflow-adapter.ts';
|
|
22
22
|
export type { CatalogWorkflowOptions } from './workflow-adapter.ts';
|
|
@@ -28,6 +28,8 @@ export function transportToAvailabilityKey(transport) {
|
|
|
28
28
|
return "jsonRpcWebSocket";
|
|
29
29
|
case "jsonRpcStdio":
|
|
30
30
|
return "jsonRpcStdio";
|
|
31
|
+
default:
|
|
32
|
+
throw Error(`Unknown transport kind: ${JSON.stringify(transport)}`);
|
|
31
33
|
}
|
|
32
34
|
}
|
|
33
35
|
export function extractTopLevelObjectKeys(schema) {
|
|
@@ -45,6 +45,23 @@ export type SubscriptionOperationInvocation<Element, Envelope> = {
|
|
|
45
45
|
readonly iterable: AsyncIterable<Element>;
|
|
46
46
|
readonly close: () => Promise<void>;
|
|
47
47
|
};
|
|
48
|
+
/**
|
|
49
|
+
* Envelope acknowledging that a JSON-RPC subscription has started. This is
|
|
50
|
+
* the protocol-level shape the built-in JSON-RPC WebSocket subscriptions
|
|
51
|
+
* (`weft.workflows.events` and the fleet-events subscription in
|
|
52
|
+
* `json-rpc-websocket.ts`) use for their own `outputSchema`/envelope — it is
|
|
53
|
+
* NOT the general contract for every `kind: 'subscription'` operation.
|
|
54
|
+
* `executeSubscription` in `stream-pipeline.ts` stays generic over
|
|
55
|
+
* `Envelope` precisely because a catalog subscription can declare any
|
|
56
|
+
* envelope shape its own `outputSchema` validates; other subscription
|
|
57
|
+
* operations are free to use a different shape (see the
|
|
58
|
+
* `subscriptionId`-only regression case in
|
|
59
|
+
* `operation-catalog/dispatch-audit.test.ts`).
|
|
60
|
+
*/
|
|
61
|
+
export type SubscriptionStartEnvelope = {
|
|
62
|
+
readonly subscriptionId: string;
|
|
63
|
+
readonly cursor: string;
|
|
64
|
+
};
|
|
48
65
|
export type OperationInvocationResult<Output, Element = unknown> = Output | StreamOperationInvocation<Element> | SubscriptionOperationInvocation<Element, Output>;
|
|
49
66
|
/**
|
|
50
67
|
* Metadata that connects an operation-catalog entry to a live MCP tool.
|