@lostgradient/weft 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -24
- package/dist/cli/conformance.js +7 -1
- package/dist/cli/generated/operation-client.generated.d.ts +28 -13
- package/dist/cli/generated/operation-client.generated.js +1 -0
- package/dist/cli/help-text.d.ts +1 -1
- package/dist/cli/help-text.js +1 -0
- package/dist/cli/operation-catalog-snapshot.d.ts +8 -0
- package/dist/cli/operation-catalog-snapshot.js +11 -0
- package/dist/cli/parse-schedule-arguments.js +3 -1
- package/dist/cli/schedule.js +2 -1
- package/dist/cli/types.d.ts +1 -0
- package/dist/cli-main.js +79 -78
- package/dist/client/handle-delegation.d.ts +3 -2
- package/dist/client/handle-delegation.js +3 -1
- package/dist/client/http-client-requests.d.ts +2 -1
- package/dist/client/http-client-requests.js +7 -0
- package/dist/client/http-client.d.ts +9 -6
- package/dist/client/http-client.js +10 -1
- package/dist/client/http-request.d.ts +11 -1
- package/dist/client/http-request.js +17 -7
- package/dist/client/index.d.ts +1 -1
- package/dist/client/interface.d.ts +46 -5
- package/dist/client/local.d.ts +4 -1
- package/dist/client/local.js +12 -4
- package/dist/client/start-body.d.ts +4 -3
- package/dist/core/byte-arrays.d.ts +5 -0
- package/dist/core/byte-arrays.js +5 -0
- package/dist/core/checkpoint/lifecycle.d.ts +3 -0
- package/dist/core/checkpoint/lifecycle.js +9 -4
- package/dist/core/checkpoint/serialization.js +12 -5
- package/dist/core/codec/extension-codec.d.ts +16 -0
- package/dist/core/codec/extension-codec.js +100 -6
- package/dist/core/context/activity-retry-state.d.ts +38 -0
- package/dist/core/context/activity-retry-state.js +89 -0
- package/dist/core/context/activity-schedule-to-close.d.ts +159 -0
- package/dist/core/context/activity-schedule-to-close.js +69 -0
- package/dist/core/context/child-workflow-pipe.d.ts +5 -5
- package/dist/core/context/child-workflow-pipe.js +15 -2
- package/dist/core/context/context-presence.d.ts +19 -0
- package/dist/core/context/context-presence.js +13 -0
- package/dist/core/context/durable-operations.d.ts +25 -0
- package/dist/core/context/durable-operations.js +64 -0
- package/dist/core/context/index.d.ts +9 -5
- package/dist/core/context/index.js +17 -12
- package/dist/core/context/internals.d.ts +20 -0
- package/dist/core/context/internals.js +3 -1
- package/dist/core/context/operation-request.d.ts +35 -0
- package/dist/core/context/parallel-cache-entry.d.ts +14 -5
- package/dist/core/context/run-operation.d.ts +6 -1
- package/dist/core/context/run-operation.js +41 -87
- package/dist/core/context/session-state.js +7 -8
- package/dist/core/context/speculative-child.js +2 -0
- package/dist/core/context/types.d.ts +15 -0
- package/dist/core/context/version-patching.d.ts +8 -0
- package/dist/core/context/version-patching.js +40 -0
- package/dist/core/context/workflow-logger.d.ts +98 -0
- package/dist/core/context/workflow-logger.js +68 -0
- package/dist/core/engine/activity-heartbeat-tracking.d.ts +64 -0
- package/dist/core/engine/activity-heartbeat-tracking.js +42 -0
- package/dist/core/engine/activity-per-attempt-timeout.d.ts +41 -0
- package/dist/core/engine/activity-per-attempt-timeout.js +36 -0
- package/dist/core/engine/activity-reconciliation.d.ts +1 -0
- package/dist/core/engine/activity-reconciliation.js +12 -1
- package/dist/core/engine/activity-resolution.d.ts +23 -0
- package/dist/core/engine/activity-resolution.js +37 -0
- package/dist/core/engine/aggregate.js +66 -30
- package/dist/core/engine/async-activity-completion.d.ts +23 -6
- package/dist/core/engine/async-activity-completion.js +53 -12
- package/dist/core/engine/attributes-tags.js +9 -4
- package/dist/core/engine/bulk-operations-purge.d.ts +26 -0
- package/dist/core/engine/bulk-operations-purge.js +38 -3
- package/dist/core/engine/bulk-operations-shared.d.ts +2 -0
- package/dist/core/engine/bulk-operations-shared.js +8 -2
- package/dist/core/engine/bulk-operations.d.ts +4 -1
- package/dist/core/engine/bulk-operations.js +235 -24
- package/dist/core/engine/callback-creators-bundles.d.ts +9 -0
- package/dist/core/engine/callback-creators-bundles.js +30 -2
- package/dist/core/engine/callback-creators-core.js +6 -4
- package/dist/core/engine/callback-creators-router.js +10 -0
- package/dist/core/engine/callback-creators-schedule.d.ts +2 -2
- package/dist/core/engine/callback-creators-schedule.js +12 -8
- package/dist/core/engine/candidate-read-batching.d.ts +6 -0
- package/dist/core/engine/candidate-read-batching.js +1 -0
- package/dist/core/engine/checkpoint-io.js +61 -25
- package/dist/core/engine/checkpoint-reads.js +3 -2
- package/dist/core/engine/checkpoint-replay.d.ts +20 -0
- package/dist/core/engine/checkpoint-replay.js +242 -0
- package/dist/core/engine/checkpoint-side-effects.d.ts +23 -0
- package/dist/core/engine/checkpoint-side-effects.js +35 -0
- package/dist/core/engine/child-workflow-cancellation.d.ts +10 -0
- package/dist/core/engine/child-workflow-cancellation.js +40 -0
- package/dist/core/engine/child-workflow.js +27 -4
- package/dist/core/engine/condition-waiters.d.ts +14 -0
- package/dist/core/engine/condition-waiters.js +5 -0
- package/dist/core/engine/construction.d.ts +3 -0
- package/dist/core/engine/construction.js +21 -8
- package/dist/core/engine/coordination-branch-executors.d.ts +70 -0
- package/dist/core/engine/coordination-branch-executors.js +107 -0
- package/dist/core/engine/deferred-consume-envelope.d.ts +59 -0
- package/dist/core/engine/deferred-consume-envelope.js +14 -0
- package/dist/core/engine/disposal.js +13 -0
- package/dist/core/engine/engine-create-types.d.ts +14 -4
- package/dist/core/engine/engine-internal-types.d.ts +26 -3
- package/dist/core/engine/errors.d.ts +47 -0
- package/dist/core/engine/errors.js +20 -0
- package/dist/core/engine/event-log-compaction.d.ts +8 -0
- package/dist/core/engine/event-log-compaction.js +20 -2
- package/dist/core/engine/fenced-write.d.ts +65 -0
- package/dist/core/engine/fenced-write.js +71 -0
- package/dist/core/engine/finalizer-state.d.ts +28 -0
- package/dist/core/engine/finalizer-state.js +16 -0
- package/dist/core/engine/handles.d.ts +8 -0
- package/dist/core/engine/index.d.ts +34 -16
- package/dist/core/engine/index.js +133 -8
- package/dist/core/engine/inline-parking.js +3 -2
- package/dist/core/engine/internals.d.ts +107 -3
- package/dist/core/engine/lease-codec.d.ts +35 -0
- package/dist/core/engine/lease-codec.js +32 -0
- package/dist/core/engine/lease-deposition.d.ts +66 -0
- package/dist/core/engine/lease-deposition.js +10 -0
- package/dist/core/engine/lease-errors.d.ts +99 -0
- package/dist/core/engine/lease-errors.js +30 -0
- package/dist/core/engine/lease-manager.d.ts +114 -0
- package/dist/core/engine/lease-manager.js +135 -0
- package/dist/core/engine/lifecycle/persist.js +10 -32
- package/dist/core/engine/lifecycle/recovered-services.d.ts +8 -6
- package/dist/core/engine/lifecycle/recovered-services.js +18 -3
- package/dist/core/engine/lifecycle/resume.js +16 -9
- package/dist/core/engine/lifecycle/shared.d.ts +8 -1
- package/dist/core/engine/lifecycle/start-batch.d.ts +1 -1
- package/dist/core/engine/lifecycle/start-batch.js +2 -1
- package/dist/core/engine/lifecycle/start-commit.d.ts +9 -0
- package/dist/core/engine/lifecycle/start-commit.js +50 -8
- package/dist/core/engine/lifecycle/start-or-signal-create.d.ts +58 -0
- package/dist/core/engine/lifecycle/start-or-signal-create.js +95 -0
- package/dist/core/engine/lifecycle/start-or-signal.d.ts +3 -2
- package/dist/core/engine/lifecycle/start-or-signal.js +11 -81
- package/dist/core/engine/lifecycle/start-terminal-conflict-purge.d.ts +39 -0
- package/dist/core/engine/lifecycle/start-terminal-conflict-purge.js +28 -0
- package/dist/core/engine/lifecycle/start.d.ts +4 -4
- package/dist/core/engine/lifecycle/start.js +17 -9
- package/dist/core/engine/lifecycle/transition.js +17 -5
- package/dist/core/engine/lifecycle.d.ts +1 -1
- package/dist/core/engine/list-candidate-resolution.js +2 -2
- package/dist/core/engine/listing.js +9 -5
- package/dist/core/engine/operations-activity.d.ts +4 -11
- package/dist/core/engine/operations-activity.js +22 -49
- package/dist/core/engine/operations-coordination.d.ts +10 -0
- package/dist/core/engine/operations-coordination.js +43 -8
- package/dist/core/engine/operations-router.d.ts +6 -0
- package/dist/core/engine/operations-router.js +2 -0
- package/dist/core/engine/operations-speculate.js +6 -2
- package/dist/core/engine/operations-stream.js +12 -2
- package/dist/core/engine/operations-time.d.ts +4 -2
- package/dist/core/engine/operations-time.js +14 -2
- package/dist/core/engine/operations-wait-condition.d.ts +23 -0
- package/dist/core/engine/operations-wait-condition.js +62 -0
- package/dist/core/engine/ownership-options.d.ts +23 -0
- package/dist/core/engine/ownership-options.js +26 -0
- package/dist/core/engine/payload-size-policy.d.ts +3 -0
- package/dist/core/engine/payload-size-policy.js +4 -0
- package/dist/core/engine/pending-updates.d.ts +17 -0
- package/dist/core/engine/pending-updates.js +33 -11
- package/dist/core/engine/queries.js +1 -1
- package/dist/core/engine/registration.d.ts +1 -0
- package/dist/core/engine/registration.js +18 -3
- package/dist/core/engine/schedule-jitter.d.ts +5 -0
- package/dist/core/engine/schedule-jitter.js +10 -0
- package/dist/core/engine/schedule-run.d.ts +17 -0
- package/dist/core/engine/schedule-run.js +38 -0
- package/dist/core/engine/schedule-timer.js +81 -17
- package/dist/core/engine/schedules.d.ts +7 -4
- package/dist/core/engine/schedules.js +37 -16
- package/dist/core/engine/search-attribute-records.d.ts +4 -0
- package/dist/core/engine/search-attribute-records.js +17 -0
- package/dist/core/engine/signals.d.ts +18 -2
- package/dist/core/engine/signals.js +42 -21
- package/dist/core/engine/state-utilities.d.ts +49 -2
- package/dist/core/engine/state-utilities.js +114 -3
- package/dist/core/engine/storage-io.d.ts +16 -2
- package/dist/core/engine/storage-io.js +26 -5
- package/dist/core/engine/stream-chunk-loading.d.ts +2 -0
- package/dist/core/engine/stream-chunk-loading.js +24 -1
- package/dist/core/engine/sub-operation.js +22 -3
- package/dist/core/engine/termination/cleanup.d.ts +3 -1
- package/dist/core/engine/termination/cleanup.js +25 -1
- package/dist/core/engine/termination/complete.js +44 -6
- package/dist/core/engine/termination/finalizer-activity.d.ts +53 -0
- package/dist/core/engine/termination/finalizer-activity.js +30 -0
- package/dist/core/engine/termination/finalizer-claim.d.ts +110 -0
- package/dist/core/engine/termination/finalizer-claim.js +80 -0
- package/dist/core/engine/termination/finalizer.d.ts +48 -0
- package/dist/core/engine/termination/finalizer.js +159 -0
- package/dist/core/engine/termination/suspend.d.ts +3 -1
- package/dist/core/engine/termination.d.ts +1 -0
- package/dist/core/engine/termination.js +4 -0
- package/dist/core/engine/updates.js +5 -25
- package/dist/core/engine/validation/schedule.d.ts +2 -1
- package/dist/core/engine/validation/schedule.js +51 -2
- package/dist/core/engine/validation.js +32 -5
- package/dist/core/engine/waiting-update-response.d.ts +8 -0
- package/dist/core/engine/waiting-update-response.js +22 -0
- package/dist/core/engine/workflow-concurrency.d.ts +10 -0
- package/dist/core/engine/workflow-concurrency.js +136 -0
- package/dist/core/engine/workflow-feed.d.ts +4 -5
- package/dist/core/engine/workflow-feed.js +4 -1
- package/dist/core/engine/workflow-indexes.d.ts +9 -0
- package/dist/core/engine/workflow-indexes.js +10 -0
- package/dist/core/engine/workflow-state-stream.js +33 -13
- package/dist/core/engine/workflow-visibility-queries.d.ts +2 -2
- package/dist/core/engine-helpers.js +1 -0
- package/dist/core/events/activity-events.d.ts +43 -12
- package/dist/core/events/activity-events.js +28 -0
- package/dist/core/events/attribute-events.d.ts +2 -3
- package/dist/core/events/event-map.d.ts +18 -12
- package/dist/core/events/index.d.ts +1 -0
- package/dist/core/events/index.js +1 -0
- package/dist/core/events/schedule-events.d.ts +71 -0
- package/dist/core/events/schedule-events.js +29 -0
- package/dist/core/events/signal-events.d.ts +4 -6
- package/dist/core/events/system-events.d.ts +29 -19
- package/dist/core/events/system-events.js +26 -0
- package/dist/core/events/update-events.d.ts +6 -8
- package/dist/core/events/workflow-events.d.ts +88 -23
- package/dist/core/events/workflow-events.js +26 -0
- package/dist/core/failure-categories.js +5 -17
- package/dist/core/fault-code.d.ts +9 -3
- package/dist/core/fault-code.js +1 -0
- package/dist/core/inline-execution-strategy.context-options.d.ts +69 -0
- package/dist/core/inline-execution-strategy.context-options.js +56 -0
- package/dist/core/inline-execution-strategy.d.ts +31 -36
- package/dist/core/inline-execution-strategy.js +16 -27
- package/dist/core/list-filter-validation.d.ts +1 -1
- package/dist/core/payload-size.d.ts +1 -1
- package/dist/core/persisted-data-incompatible-error.d.ts +9 -7
- package/dist/core/review/events.d.ts +6 -8
- package/dist/core/scheduler/scheduler-class.d.ts +10 -1
- package/dist/core/scheduler/scheduler-class.js +38 -11
- package/dist/core/scheduler/timer-batch.js +9 -1
- package/dist/core/scheduler/timer-sources.d.ts +1 -0
- package/dist/core/scheduler/timer-sources.js +11 -5
- package/dist/core/session-state.d.ts +0 -1
- package/dist/core/session-state.js +2 -2
- package/dist/core/start-workflow-validation.d.ts +34 -0
- package/dist/core/start-workflow-validation.js +19 -0
- package/dist/core/types/activity-verification.d.ts +67 -0
- package/dist/core/types/activity-verification.js +0 -0
- package/dist/core/types/activity.d.ts +80 -61
- package/dist/core/types/bulk.d.ts +50 -9
- package/dist/core/types/checkpoint.d.ts +44 -8
- package/dist/core/types/list-options.d.ts +146 -0
- package/dist/core/types/list-options.js +0 -0
- package/dist/core/types/options.d.ts +121 -165
- package/dist/core/types/schedules.d.ts +39 -3
- package/dist/core/types/services-resolution.d.ts +2 -2
- package/dist/core/types/workflow-builder-runtime.d.ts +12 -3
- package/dist/core/types/workflow-builder-runtime.js +11 -2
- package/dist/core/types/workflow-builder.d.ts +42 -11
- package/dist/core/types/workflow-concurrency.d.ts +39 -0
- package/dist/core/types/workflow-concurrency.js +0 -0
- package/dist/core/types/workflow-context.d.ts +157 -14
- package/dist/core/types/workflow-definition.d.ts +53 -10
- package/dist/core/types/workflow-function.d.ts +84 -9
- package/dist/core/types/workflow-log.d.ts +98 -0
- package/dist/core/types/workflow-log.js +0 -0
- package/dist/core/types/workflow-registries.d.ts +14 -3
- package/dist/core/types/workflow-registry.d.ts +3 -0
- package/dist/core/types.d.ts +4 -0
- package/dist/core/types.js +4 -0
- package/dist/core/versioning.d.ts +9 -39
- package/dist/core/versioning.js +2 -12
- package/dist/core/weft-error.d.ts +44 -1
- package/dist/core/weft-error.js +16 -0
- package/dist/core/worker-execution-strategy-options.d.ts +26 -0
- package/dist/core/worker-execution-strategy.js +40 -36
- package/dist/core/worker-inbound-message.d.ts +38 -0
- package/dist/core/worker-inbound-message.js +37 -0
- package/dist/core/worker-log-abuse-counter.d.ts +175 -0
- package/dist/core/worker-log-abuse-counter.js +107 -0
- package/dist/core/worker-message-helpers.d.ts +47 -0
- package/dist/core/worker-message-helpers.js +26 -0
- package/dist/core/worker-protocol-guard.js +1 -1
- package/dist/core/worker-protocol-log.d.ts +56 -0
- package/dist/core/worker-protocol-log.js +18 -0
- package/dist/core/worker-protocol.d.ts +23 -0
- package/dist/core/worker-protocol.js +12 -2
- package/dist/core/workflow-version-tuple.d.ts +3 -9
- package/dist/core/workflow-version-tuple.js +2 -3
- package/dist/diagnostics/format.js +1 -6
- package/dist/diagnostics/types.d.ts +4 -5
- package/dist/diagnostics/validate.d.ts +0 -1
- package/dist/diagnostics/version-check.d.ts +1 -1
- package/dist/diagnostics/version-check.js +4 -9
- package/dist/index.d.ts +12 -10
- package/dist/index.js +29 -3
- package/dist/json-schema.js +3 -3
- package/dist/mcp/cli.js +27 -27
- package/dist/mcp/dispatcher.js +1 -1
- package/dist/mcp/http.js +16 -6
- package/dist/mcp/protocol.d.ts +2 -0
- package/dist/mcp/protocol.js +1 -1
- package/dist/mcp/session.d.ts +16 -0
- package/dist/mcp/session.js +59 -6
- package/dist/mcp/tools.js +73 -6
- package/dist/observability/index.js +2 -2
- package/dist/server/asyncapi-channels.js +5 -2
- package/dist/server/attribute-filters.d.ts +8 -3
- package/dist/server/attribute-filters.js +6 -1
- package/dist/server/authentication/api-key.d.ts +2 -1
- package/dist/server/authentication/api-key.js +5 -2
- package/dist/server/authentication/constant-time-api-key.d.ts +15 -0
- package/dist/server/authentication/constant-time-api-key.js +24 -0
- package/dist/server/authentication/index.d.ts +1 -1
- package/dist/server/authentication/index.js +7 -4
- package/dist/server/authentication/rotating-api-key-store.d.ts +5 -3
- package/dist/server/authentication/rotating-api-key-store.js +19 -11
- package/dist/server/engine-event-feed-backend.d.ts +4 -5
- package/dist/server/fault-to-http.js +8 -1
- package/dist/server/fault-to-json-rpc.js +1 -0
- package/dist/server/fleet-event-feed.d.ts +31 -0
- package/dist/server/fleet-event-feed.js +157 -0
- package/dist/server/handler/index.js +1 -1
- package/dist/server/handler/response-helpers.js +2 -1
- package/dist/server/handler/route-dispatch.d.ts +6 -3
- package/dist/server/handler/route-dispatch.js +2 -2
- package/dist/server/handler.js +23 -23
- package/dist/server/index.d.ts +32 -2
- package/dist/server/index.js +26 -26
- package/dist/server/json-rpc-transport-helpers.d.ts +1 -0
- package/dist/server/json-rpc-transport-helpers.js +2 -1
- package/dist/server/json-rpc-websocket-runtime.d.ts +11 -2
- package/dist/server/json-rpc-websocket-runtime.js +1 -0
- package/dist/server/json-rpc-websocket-subscriptions.d.ts +10 -0
- package/dist/server/json-rpc-websocket-subscriptions.js +29 -0
- package/dist/server/json-rpc-websocket-types.d.ts +22 -0
- package/dist/server/json-rpc-websocket-types.js +0 -0
- package/dist/server/json-rpc-websocket-validation.js +20 -4
- package/dist/server/json-rpc-websocket.d.ts +2 -43
- package/dist/server/json-rpc-websocket.js +57 -74
- package/dist/server/openapi.d.ts +2 -1
- package/dist/server/openapi.js +1 -3
- package/dist/server/openrpc-document-schema.d.ts +78 -0
- package/dist/server/openrpc-document-schema.js +27 -1
- package/dist/server/openrpc-errors.d.ts +3 -0
- package/dist/server/openrpc-errors.js +2 -1
- package/dist/server/openrpc.js +32 -0
- package/dist/server/operation-catalog/index.d.ts +1 -1
- package/dist/server/operation-catalog/pipeline-helpers.js +1 -0
- package/dist/server/operation-catalog/pipeline-stages.js +26 -12
- package/dist/server/operation-catalog/pipeline.js +8 -1
- package/dist/server/operation-catalog/registry.js +13 -0
- package/dist/server/operation-catalog/types.d.ts +20 -9
- package/dist/server/operation-fault.d.ts +10 -0
- package/dist/server/operation-fault.js +2 -0
- package/dist/server/operation-registry.d.ts +12 -11
- package/dist/server/operation-registry.js +12 -3
- package/dist/server/operations/aggregate-workflows.d.ts +15 -15
- package/dist/server/operations/async-activity.d.ts +2 -2
- package/dist/server/operations/async-activity.js +12 -7
- package/dist/server/operations/bulk-cancel-workflows.d.ts +1 -1
- package/dist/server/operations/bulk-cancel-workflows.js +2 -2
- package/dist/server/operations/bulk-delete-workflows.d.ts +1 -1
- package/dist/server/operations/bulk-delete-workflows.js +2 -2
- package/dist/server/operations/bulk-filter-helpers.d.ts +8 -6
- package/dist/server/operations/bulk-filter-helpers.js +54 -24
- package/dist/server/operations/bulk-mutate-workflow-tags.d.ts +11 -9
- package/dist/server/operations/bulk-mutate-workflow-tags.js +2 -2
- package/dist/server/operations/bulk-operation-helpers.d.ts +2 -2
- package/dist/server/operations/bulk-retry-failed-workflows.d.ts +7 -0
- package/dist/server/operations/bulk-retry-failed-workflows.js +64 -0
- package/dist/server/operations/bulk-signal-workflows.d.ts +11 -9
- package/dist/server/operations/bulk-signal-workflows.js +2 -2
- package/dist/server/operations/cancel-schedule.d.ts +1 -1
- package/dist/server/operations/create-schedule.d.ts +3 -1
- package/dist/server/operations/create-schedule.js +29 -11
- package/dist/server/operations/fleet-events-subscription.d.ts +54 -0
- package/dist/server/operations/fleet-events-subscription.js +99 -0
- package/dist/server/operations/fork-workflow.d.ts +1 -1
- package/dist/server/operations/fork-workflow.js +3 -2
- package/dist/server/operations/get-checkpoint-at.d.ts +1 -1
- package/dist/server/operations/get-registry.d.ts +1 -1
- package/dist/server/operations/get-retention-overview.d.ts +1 -1
- package/dist/server/operations/get-review.d.ts +1 -1
- package/dist/server/operations/get-schedule.d.ts +1 -1
- package/dist/server/operations/get-stream-chunks.d.ts +1 -1
- package/dist/server/operations/get-system-metrics.d.ts +2 -2
- package/dist/server/operations/get-task-diagnostics.d.ts +45 -6
- package/dist/server/operations/get-task-diagnostics.js +101 -7
- package/dist/server/operations/get-update-result.d.ts +1 -1
- package/dist/server/operations/get-workflow-attributes.d.ts +1 -1
- package/dist/server/operations/get-workflow-events.d.ts +1 -1
- package/dist/server/operations/get-workflow-result.d.ts +1 -1
- package/dist/server/operations/get-workflow-timeline.d.ts +1 -1
- package/dist/server/operations/get-workflow.d.ts +1 -1
- package/dist/server/operations/list-checkpoints.d.ts +1 -1
- package/dist/server/operations/list-reviews.d.ts +1 -1
- package/dist/server/operations/list-schedules.d.ts +1 -1
- package/dist/server/operations/list-task-queues.d.ts +2 -2
- package/dist/server/operations/list-workers.d.ts +2 -2
- package/dist/server/operations/list-workflows.d.ts +1 -1
- package/dist/server/operations/operation-helpers.d.ts +16 -1
- package/dist/server/operations/operation-helpers.js +15 -3
- package/dist/server/operations/pause-schedule.d.ts +1 -1
- package/dist/server/operations/purge-workflows.d.ts +5 -5
- package/dist/server/operations/purge-workflows.js +2 -2
- package/dist/server/operations/query-workflow.d.ts +1 -1
- package/dist/server/operations/query-workflow.js +3 -2
- package/dist/server/operations/recover-all.d.ts +1 -1
- package/dist/server/operations/replay-workflow.d.ts +1 -1
- package/dist/server/operations/resume-schedule.d.ts +1 -1
- package/dist/server/operations/set-workflow-attributes.d.ts +1 -1
- package/dist/server/operations/set-workflow-attributes.js +6 -3
- package/dist/server/operations/signal-workflow.js +8 -3
- package/dist/server/operations/single-workflow-tag-mutation.js +13 -3
- package/dist/server/operations/start-or-signal-workflow.d.ts +6 -1
- package/dist/server/operations/start-or-signal-workflow.js +14 -24
- package/dist/server/operations/start-workflow-options.d.ts +6 -0
- package/dist/server/operations/start-workflow-rest-input.d.ts +14 -0
- package/dist/server/operations/start-workflow-rest-input.js +31 -0
- package/dist/server/operations/start-workflow.d.ts +1 -1
- package/dist/server/operations/start-workflow.js +8 -23
- package/dist/server/operations/storage.d.ts +6 -6
- package/dist/server/operations/storage.js +24 -14
- package/dist/server/operations/stream-workflow-sse.d.ts +1 -1
- package/dist/server/operations/submit-review-decision.d.ts +1 -1
- package/dist/server/operations/submit-review-decision.js +6 -3
- package/dist/server/operations/update-schedule.d.ts +1 -1
- package/dist/server/operations/update-schedule.js +7 -4
- package/dist/server/operations/update-workflow.d.ts +1 -1
- package/dist/server/operations/update-workflow.js +7 -3
- package/dist/server/operations/worker-drain.d.ts +8 -8
- package/dist/server/operations/worker-drain.js +11 -8
- package/dist/server/operations/workflow-events-subscription.d.ts +7 -8
- package/dist/server/operations/workflow-events-subscription.js +43 -8
- package/dist/server/rest-binding.d.ts +3 -1
- package/dist/server/rest-bindings.js +12 -0
- package/dist/server/rest-body.d.ts +10 -0
- package/dist/server/rest-body.js +80 -0
- package/dist/server/runtime/authentication-bridge.d.ts +1 -0
- package/dist/server/runtime/authentication-bridge.js +33 -6
- package/dist/server/runtime/client-visible-events.d.ts +3 -0
- package/dist/server/runtime/client-visible-events.js +65 -0
- package/dist/server/runtime/context.d.ts +7 -0
- package/dist/server/runtime/event-broadcasting.d.ts +6 -0
- package/dist/server/runtime/event-broadcasting.js +72 -38
- package/dist/server/runtime/retry.d.ts +1 -0
- package/dist/server/runtime/retry.js +14 -0
- package/dist/server/runtime/shutdown.d.ts +7 -6
- package/dist/server/runtime/shutdown.js +6 -1
- package/dist/server/runtime/task-polling.js +61 -20
- package/dist/server/runtime/task-reconciliation.js +9 -1
- package/dist/server/runtime/task-result-resolution.d.ts +15 -0
- package/dist/server/runtime/task-result-resolution.js +81 -0
- package/dist/server/runtime/websocket-stream.d.ts +20 -1
- package/dist/server/runtime/websocket-stream.js +173 -7
- package/dist/server/runtime/websocket-upgrade.js +22 -3
- package/dist/server/runtime/websocket-worker.d.ts +1 -1
- package/dist/server/runtime/websocket-worker.js +38 -30
- package/dist/server/serve-internals.d.ts +3 -1
- package/dist/server/serve-internals.js +18 -2
- package/dist/server/task-state.d.ts +30 -0
- package/dist/server/task-state.js +28 -0
- package/dist/server/workflow-event-feed.d.ts +36 -115
- package/dist/server/workflow-event-feed.js +92 -27
- package/dist/service-worker/index.js +30 -30
- package/dist/storage/auto.js +1 -1
- package/dist/storage/bun-sql.js +24 -0
- package/dist/storage/compressed-storage.js +1 -1
- package/dist/storage/default-scope.d.ts +7 -4
- package/dist/storage/http.js +2 -2
- package/dist/storage/index.d.ts +76 -4
- package/dist/storage/indexeddb.js +1 -1
- package/dist/storage/interface.d.ts +163 -0
- package/dist/storage/interface.js +1 -1
- package/dist/storage/key-prefixes.d.ts +1 -1
- package/dist/storage/key-prefixes.js +10 -0
- package/dist/storage/lmdb.d.ts +4 -3
- package/dist/storage/lmdb.js +1 -1
- package/dist/storage/memory.js +1 -1
- package/dist/storage/neon-batch.d.ts +30 -0
- package/dist/storage/neon-batch.js +30 -0
- package/dist/storage/neon-value-mapping.d.ts +30 -3
- package/dist/storage/neon-value-mapping.js +12 -0
- package/dist/storage/neon.d.ts +16 -0
- package/dist/storage/neon.js +9 -4
- package/dist/storage/node-sqlite.js +23 -0
- package/dist/storage/postgres-key-value-queries.d.ts +69 -44
- package/dist/storage/postgres-key-value-queries.js +62 -24
- package/dist/storage/resolve.js +1 -1
- package/dist/storage/scoped-storage.js +1 -1
- package/dist/storage/testing.d.ts +168 -0
- package/dist/storage/testing.js +2 -0
- package/dist/storage/turso.d.ts +8 -0
- package/dist/storage/turso.js +2 -2
- package/dist/storage/typed-storage.js +1 -1
- package/dist/storage/web-extension.js +1 -1
- package/dist/testing/index.js +28 -28
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker/protocol.js +1 -1
- package/dist/workers/worker-replay-state.d.ts +32 -0
- package/dist/workers/worker-replay-state.js +35 -0
- package/dist/workers/worker-state-namespace.d.ts +21 -0
- package/dist/workers/worker-state-namespace.js +13 -0
- package/dist/workers/workflow-runner.d.ts +19 -15
- package/dist/workers/workflow-runner.js +72 -60
- package/dist/workers/workflow-worker-entry.js +5 -2
- package/package.json +5 -1
|
@@ -8,9 +8,8 @@
|
|
|
8
8
|
* import { Engine, UpdateReceivedEvent } from '@lostgradient/weft';
|
|
9
9
|
*
|
|
10
10
|
* const engine = new Engine();
|
|
11
|
-
* engine.addEventListener(
|
|
12
|
-
*
|
|
13
|
-
* console.log('update', ev.name, 'received for', ev.workflowId, '(id:', ev.updateId, ')');
|
|
11
|
+
* engine.addEventListener(UpdateReceivedEvent.type, (event) => {
|
|
12
|
+
* console.log('update', event.name, 'received for', event.workflowId, '(id:', event.updateId, ')');
|
|
14
13
|
* });
|
|
15
14
|
* ```
|
|
16
15
|
*/
|
|
@@ -32,12 +31,11 @@ export declare class UpdateReceivedEvent extends Event {
|
|
|
32
31
|
* import { Engine, UpdateCompletedEvent } from '@lostgradient/weft';
|
|
33
32
|
*
|
|
34
33
|
* const engine = new Engine();
|
|
35
|
-
* engine.addEventListener(
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
* console.error('update', ev.name, 'failed:', ev.error);
|
|
34
|
+
* engine.addEventListener(UpdateCompletedEvent.type, (event) => {
|
|
35
|
+
* if (event.error) {
|
|
36
|
+
* console.error('update', event.name, 'failed:', event.error);
|
|
39
37
|
* } else {
|
|
40
|
-
* console.log('update',
|
|
38
|
+
* console.log('update', event.name, 'result:', event.result);
|
|
41
39
|
* }
|
|
42
40
|
* });
|
|
43
41
|
* ```
|
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
import type { TerminationReason } from '../types/history-policy.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Fired on the {@link Engine} after a workflow definition is successfully
|
|
4
|
+
* registered. Same-reference idempotent registration does not emit this event.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```ts
|
|
8
|
+
* import { Engine, WorkflowDefinitionRegisteredEvent, workflow } from '@lostgradient/weft';
|
|
9
|
+
*
|
|
10
|
+
* const engine = new Engine();
|
|
11
|
+
* engine.addEventListener(WorkflowDefinitionRegisteredEvent.type, (event) => {
|
|
12
|
+
* console.log('registered workflow:', event.workflowType);
|
|
13
|
+
* });
|
|
14
|
+
* engine.register(workflow({ name: 'ping' }).execute(async function* () { return 'pong'; }));
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare class WorkflowDefinitionRegisteredEvent extends Event {
|
|
18
|
+
static readonly type: "workflow:definition-registered";
|
|
19
|
+
readonly workflowType: string;
|
|
20
|
+
constructor(workflowType: string);
|
|
21
|
+
}
|
|
2
22
|
/**
|
|
3
23
|
* Fired on the {@link Engine} when a new workflow execution begins. Listen via
|
|
4
24
|
* `engine.addEventListener('workflow:started', handler)` and read
|
|
@@ -9,9 +29,8 @@ import type { TerminationReason } from '../types/history-policy.ts';
|
|
|
9
29
|
* import { workflow, Engine, WorkflowStartedEvent } from '@lostgradient/weft';
|
|
10
30
|
*
|
|
11
31
|
* const engine = new Engine();
|
|
12
|
-
* engine.addEventListener(
|
|
13
|
-
*
|
|
14
|
-
* console.log('started', ev.workflowId, ev.workflowType);
|
|
32
|
+
* engine.addEventListener(WorkflowStartedEvent.type, (event) => {
|
|
33
|
+
* console.log('started', event.workflowId, event.workflowType);
|
|
15
34
|
* });
|
|
16
35
|
* engine.register(workflow({ name: 'ping' }).execute(async function* () { return 'pong'; }));
|
|
17
36
|
* await engine.start('ping', null);
|
|
@@ -34,9 +53,8 @@ export declare class WorkflowStartedEvent extends Event {
|
|
|
34
53
|
* import { workflow, Engine, WorkflowCompletedEvent } from '@lostgradient/weft';
|
|
35
54
|
*
|
|
36
55
|
* const engine = new Engine();
|
|
37
|
-
* engine.addEventListener(
|
|
38
|
-
*
|
|
39
|
-
* console.log('completed in', ev.duration, 'ms, result:', ev.result);
|
|
56
|
+
* engine.addEventListener(WorkflowCompletedEvent.type, (event) => {
|
|
57
|
+
* console.log('completed in', event.duration, 'ms, result:', event.result);
|
|
40
58
|
* });
|
|
41
59
|
* engine.register(workflow({ name: 'ping' }).execute(async function* () { return 'pong'; }));
|
|
42
60
|
* await (await engine.start('ping', null)).result();
|
|
@@ -59,9 +77,8 @@ export declare class WorkflowCompletedEvent extends Event {
|
|
|
59
77
|
* import { workflow, Engine, WorkflowFailedEvent } from '@lostgradient/weft';
|
|
60
78
|
*
|
|
61
79
|
* const engine = new Engine();
|
|
62
|
-
* engine.addEventListener(
|
|
63
|
-
*
|
|
64
|
-
* console.error('workflow', ev.workflowId, 'failed:', ev.error.message);
|
|
80
|
+
* engine.addEventListener(WorkflowFailedEvent.type, (event) => {
|
|
81
|
+
* console.error('workflow', event.workflowId, 'failed:', event.error.message);
|
|
65
82
|
* });
|
|
66
83
|
* engine.register(workflow({ name: 'boom' }).execute(async function* () { throw new Error('oops'); }));
|
|
67
84
|
* await engine.start('boom', null).then(h => h.result()).catch(() => undefined);
|
|
@@ -83,9 +100,8 @@ export declare class WorkflowFailedEvent extends Event {
|
|
|
83
100
|
* import { Engine, workflow, WorkflowCancelledEvent } from '@lostgradient/weft';
|
|
84
101
|
*
|
|
85
102
|
* const engine = new Engine();
|
|
86
|
-
* engine.addEventListener(
|
|
87
|
-
*
|
|
88
|
-
* console.log('cancelled', ev.workflowId);
|
|
103
|
+
* engine.addEventListener(WorkflowCancelledEvent.type, (event) => {
|
|
104
|
+
* console.log('cancelled', event.workflowId);
|
|
89
105
|
* });
|
|
90
106
|
* engine.register(
|
|
91
107
|
* workflow({ name: 'slow' }).execute(async function* (
|
|
@@ -117,9 +133,8 @@ export declare class WorkflowCancelledEvent extends Event {
|
|
|
117
133
|
* import { Engine, WorkflowTimedOutEvent } from '@lostgradient/weft';
|
|
118
134
|
*
|
|
119
135
|
* const engine = new Engine();
|
|
120
|
-
* engine.addEventListener(
|
|
121
|
-
*
|
|
122
|
-
* console.log(ev.workflowId, 'timed out after', ev.elapsed, 'ms (', ev.timeoutType, ')');
|
|
136
|
+
* engine.addEventListener(WorkflowTimedOutEvent.type, (event) => {
|
|
137
|
+
* console.log(event.workflowId, 'timed out after', event.elapsed, 'ms (', event.timeoutType, ')');
|
|
123
138
|
* });
|
|
124
139
|
* ```
|
|
125
140
|
*/
|
|
@@ -148,9 +163,8 @@ export declare const WORKFLOW_TERMINAL_EVENT_TYPES: ReadonlySet<string>;
|
|
|
148
163
|
* import { Engine, WorkflowResumedEvent } from '@lostgradient/weft';
|
|
149
164
|
*
|
|
150
165
|
* const engine = new Engine();
|
|
151
|
-
* engine.addEventListener(
|
|
152
|
-
*
|
|
153
|
-
* console.log('resumed', ev.workflowId, 'from step', ev.fromStep);
|
|
166
|
+
* engine.addEventListener(WorkflowResumedEvent.type, (event) => {
|
|
167
|
+
* console.log('resumed', event.workflowId, 'from step', event.fromStep);
|
|
154
168
|
* });
|
|
155
169
|
* ```
|
|
156
170
|
*/
|
|
@@ -172,9 +186,8 @@ export declare class WorkflowResumedEvent extends Event {
|
|
|
172
186
|
* import { Engine, WorkflowSuspendedEvent } from '@lostgradient/weft';
|
|
173
187
|
*
|
|
174
188
|
* const engine = new Engine();
|
|
175
|
-
* engine.addEventListener(
|
|
176
|
-
*
|
|
177
|
-
* console.log('suspended', ev.workflowId);
|
|
189
|
+
* engine.addEventListener(WorkflowSuspendedEvent.type, (event) => {
|
|
190
|
+
* console.log('suspended', event.workflowId);
|
|
178
191
|
* });
|
|
179
192
|
* ```
|
|
180
193
|
*/
|
|
@@ -207,8 +220,7 @@ export type WorkflowRecoverySkippedReason = 'type-not-registered';
|
|
|
207
220
|
*
|
|
208
221
|
* const engine = new Engine();
|
|
209
222
|
* engine.addEventListener(WorkflowRecoverySkippedEvent.type, (event) => {
|
|
210
|
-
*
|
|
211
|
-
* console.warn('skipped recovery for', skipped.workflowType);
|
|
223
|
+
* console.warn('skipped recovery for', event.workflowType);
|
|
212
224
|
* });
|
|
213
225
|
* ```
|
|
214
226
|
*/
|
|
@@ -219,3 +231,56 @@ export declare class WorkflowRecoverySkippedEvent extends Event {
|
|
|
219
231
|
readonly reason: WorkflowRecoverySkippedReason;
|
|
220
232
|
constructor(workflowId: string, workflowType: string, reason: WorkflowRecoverySkippedReason);
|
|
221
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* The lifecycle stage a {@link WorkflowTeardownEvent} reports for a workflow's
|
|
236
|
+
* definition-level `finalizer` (issue #446):
|
|
237
|
+
*
|
|
238
|
+
* - `'completed'`: the finalizer succeeded — the external resource recorded via
|
|
239
|
+
* `ctx.setFinalizerState` has been torn down.
|
|
240
|
+
* - `'failed'`: a single attempt failed; the engine backs off and re-fires unless the
|
|
241
|
+
* dead-letter horizon is reached. Per-attempt observability — fires on every retry.
|
|
242
|
+
* - `'dead-lettered'`: the retry horizon was reached without success; the external
|
|
243
|
+
* resource may be leaked. The durable record is `KEYS.teardownDeadLetter`, which
|
|
244
|
+
* survives purge so the leak is auditable after the workflow record is gone.
|
|
245
|
+
*
|
|
246
|
+
* @example
|
|
247
|
+
* ```ts
|
|
248
|
+
* import type { WorkflowTeardownStatus } from '@lostgradient/weft';
|
|
249
|
+
*
|
|
250
|
+
* const status: WorkflowTeardownStatus = 'dead-lettered';
|
|
251
|
+
* void status;
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
254
|
+
export type WorkflowTeardownStatus = 'completed' | 'failed' | 'dead-lettered';
|
|
255
|
+
/**
|
|
256
|
+
* Fired on the {@link Engine} as a workflow's definition-level `finalizer` progresses
|
|
257
|
+
* through teardown after a `cancelled`/`timed-out` terminal (issue #446). One event
|
|
258
|
+
* type carries the stage in `status`; `attempts` is the attempt count; `error` is the
|
|
259
|
+
* failure message on `'failed'`/`'dead-lettered'` (absent on `'completed'`). The schema is
|
|
260
|
+
* stable and compact, and `status` is low-cardinality; `workflowId`/`workflowType` are
|
|
261
|
+
* naturally high-cardinality identifiers. Keep `'failed'` listeners side-effect-light —
|
|
262
|
+
* they fire on every retry.
|
|
263
|
+
*
|
|
264
|
+
* @example
|
|
265
|
+
* ```ts
|
|
266
|
+
* import { Engine, WorkflowTeardownEvent } from '@lostgradient/weft';
|
|
267
|
+
*
|
|
268
|
+
* const engine = new Engine();
|
|
269
|
+
* engine.addEventListener(WorkflowTeardownEvent.type, (event) => {
|
|
270
|
+
* if (event.status === 'dead-lettered') {
|
|
271
|
+
* console.error('LEAKED resource: teardown for', event.workflowId, 'gave up after', event.attempts);
|
|
272
|
+
* } else {
|
|
273
|
+
* console.log('teardown', event.status, 'for', event.workflowId, 'attempt', event.attempts);
|
|
274
|
+
* }
|
|
275
|
+
* });
|
|
276
|
+
* ```
|
|
277
|
+
*/
|
|
278
|
+
export declare class WorkflowTeardownEvent extends Event {
|
|
279
|
+
static readonly type: "workflow:teardown";
|
|
280
|
+
readonly workflowId: string;
|
|
281
|
+
readonly workflowType: string;
|
|
282
|
+
readonly status: WorkflowTeardownStatus;
|
|
283
|
+
readonly attempts: number;
|
|
284
|
+
readonly error: string | undefined;
|
|
285
|
+
constructor(workflowId: string, workflowType: string, status: WorkflowTeardownStatus, attempts: number, error?: string);
|
|
286
|
+
}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
export class WorkflowDefinitionRegisteredEvent extends Event {
|
|
2
|
+
static type = "workflow:definition-registered";
|
|
3
|
+
workflowType;
|
|
4
|
+
constructor(workflowType) {
|
|
5
|
+
super(WorkflowDefinitionRegisteredEvent.type);
|
|
6
|
+
this.workflowType = workflowType;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
|
|
1
10
|
export class WorkflowStartedEvent extends Event {
|
|
2
11
|
static type = "workflow:started";
|
|
3
12
|
workflowId;
|
|
@@ -98,3 +107,20 @@ export class WorkflowRecoverySkippedEvent extends Event {
|
|
|
98
107
|
this.reason = reason;
|
|
99
108
|
}
|
|
100
109
|
}
|
|
110
|
+
|
|
111
|
+
export class WorkflowTeardownEvent extends Event {
|
|
112
|
+
static type = "workflow:teardown";
|
|
113
|
+
workflowId;
|
|
114
|
+
workflowType;
|
|
115
|
+
status;
|
|
116
|
+
attempts;
|
|
117
|
+
error;
|
|
118
|
+
constructor(workflowId, workflowType, status, attempts, error) {
|
|
119
|
+
super(WorkflowTeardownEvent.type);
|
|
120
|
+
this.workflowId = workflowId;
|
|
121
|
+
this.workflowType = workflowType;
|
|
122
|
+
this.status = status;
|
|
123
|
+
this.attempts = attempts;
|
|
124
|
+
this.error = error;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
@@ -6,6 +6,8 @@ export const FAILURE_CATEGORIES = [
|
|
|
6
6
|
"system"
|
|
7
7
|
];
|
|
8
8
|
const currentFailureCategories = new Set(FAILURE_CATEGORIES), timeoutErrorNames = new Set([
|
|
9
|
+
"ActivityScheduleToCloseTimeoutError",
|
|
10
|
+
"ActivityPerAttemptTimeoutError",
|
|
9
11
|
"MCPToolTimeoutError",
|
|
10
12
|
"ReviewTimeoutError",
|
|
11
13
|
"UpdateTimeoutError",
|
|
@@ -23,31 +25,17 @@ const cancellationErrorNames = new Set([
|
|
|
23
25
|
"ResourceExhaustedError",
|
|
24
26
|
"OutOfMemoryError",
|
|
25
27
|
"StorageQuotaExceededError"
|
|
26
|
-
])
|
|
27
|
-
action: "application",
|
|
28
|
-
memory: "resource",
|
|
29
|
-
planning: "application",
|
|
30
|
-
reflection: "application",
|
|
31
|
-
system: "system"
|
|
32
|
-
}, failureCategorySearchAliases = {
|
|
33
|
-
application: ["application", "action", "planning", "reflection"],
|
|
34
|
-
timeout: ["timeout"],
|
|
35
|
-
cancellation: ["cancellation"],
|
|
36
|
-
resource: ["resource", "memory"],
|
|
37
|
-
system: ["system"]
|
|
38
|
-
};
|
|
28
|
+
]);
|
|
39
29
|
export function isFailureCategory(value) {
|
|
40
30
|
return currentFailureCategories.has(value);
|
|
41
31
|
}
|
|
42
32
|
export function normalizeFailureCategory(value) {
|
|
43
33
|
if (isFailureCategory(value))
|
|
44
34
|
return value;
|
|
45
|
-
|
|
46
|
-
return;
|
|
47
|
-
return legacyFailureCategoryMapping[value];
|
|
35
|
+
return;
|
|
48
36
|
}
|
|
49
37
|
export function failureCategorySearchValues(category) {
|
|
50
|
-
return
|
|
38
|
+
return [category];
|
|
51
39
|
}
|
|
52
40
|
export function classifyErrorAsFailureCategory(error, options = {}) {
|
|
53
41
|
if (!(error instanceof Error))
|
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
* onto the wire so clients can branch on the failure programmatically rather
|
|
5
5
|
* than string-matching a human message:
|
|
6
6
|
*
|
|
7
|
-
* - REST: `{ error:
|
|
8
|
-
*
|
|
7
|
+
* - REST operation routes: HTTP status plus `{ error: string }` for declared
|
|
8
|
+
* faults, with `EngineFailure` masked to `"Internal server error"`.
|
|
9
|
+
* - JSON-RPC: `error.data.weftCode` plus `error.data.httpStatus` (see
|
|
10
|
+
* `fault-to-json-rpc.ts`).
|
|
9
11
|
*
|
|
10
12
|
* The type lives in `core` — not `server` — because both the server (which
|
|
11
13
|
* produces faults) and the client (which consumes them off the wire) need it,
|
|
@@ -23,6 +25,9 @@ import type { FailureCategory } from './types/identity.ts';
|
|
|
23
25
|
* be added additively, and the `satisfies` map below forces every new code to
|
|
24
26
|
* declare its failure category at compile time.
|
|
25
27
|
*
|
|
28
|
+
* See `documentation/reference/api-errors.md#faultcode` for the REST HTTP
|
|
29
|
+
* status and JSON-RPC error-data mappings for every public fault code.
|
|
30
|
+
*
|
|
26
31
|
* @example
|
|
27
32
|
* ```ts
|
|
28
33
|
* import { HttpClientError, type FaultCode } from '@lostgradient/weft';
|
|
@@ -34,7 +39,7 @@ import type { FailureCategory } from './types/identity.ts';
|
|
|
34
39
|
* void describe;
|
|
35
40
|
* ```
|
|
36
41
|
*/
|
|
37
|
-
export type FaultCode = 'Unauthorized' | 'Forbidden' | 'NotFound' | 'Conflict' | 'Unprocessable' | 'Timeout' | 'NotImplemented' | 'UnsupportedTransport' | 'SubscriptionOverflow' | 'InvalidParams' | 'MethodNotFound' | 'EngineFailure';
|
|
42
|
+
export type FaultCode = 'Unauthorized' | 'Forbidden' | 'NotFound' | 'Conflict' | 'Unprocessable' | 'Timeout' | 'PayloadTooLarge' | 'NotImplemented' | 'UnsupportedTransport' | 'SubscriptionOverflow' | 'InvalidParams' | 'MethodNotFound' | 'EngineFailure';
|
|
38
43
|
/**
|
|
39
44
|
* Maps each wire {@link FaultCode} onto a {@link FailureCategory}.
|
|
40
45
|
*
|
|
@@ -61,6 +66,7 @@ export declare const FAULT_CODE_TO_FAILURE_CATEGORY: Readonly<{
|
|
|
61
66
|
readonly InvalidParams: "application";
|
|
62
67
|
readonly MethodNotFound: "application";
|
|
63
68
|
readonly Timeout: "timeout";
|
|
69
|
+
readonly PayloadTooLarge: "resource";
|
|
64
70
|
readonly SubscriptionOverflow: "resource";
|
|
65
71
|
readonly NotImplemented: "system";
|
|
66
72
|
readonly UnsupportedTransport: "system";
|
package/dist/core/fault-code.js
CHANGED
|
@@ -7,6 +7,7 @@ export const FAULT_CODE_TO_FAILURE_CATEGORY = Object.freeze({
|
|
|
7
7
|
InvalidParams: "application",
|
|
8
8
|
MethodNotFound: "application",
|
|
9
9
|
Timeout: "timeout",
|
|
10
|
+
PayloadTooLarge: "resource",
|
|
10
11
|
SubscriptionOverflow: "resource",
|
|
11
12
|
NotImplemented: "system",
|
|
12
13
|
UnsupportedTransport: "system",
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dependency shapes and the context-options builder used by
|
|
3
|
+
* {@link InlineExecutionStrategy}. Kept beside the strategy so the strategy
|
|
4
|
+
* module stays focused on generator lifecycle and context bookkeeping.
|
|
5
|
+
*
|
|
6
|
+
* @module core/inline-execution-strategy.context-options
|
|
7
|
+
*/
|
|
8
|
+
import type { ContextOptions } from './context.ts';
|
|
9
|
+
import type { ComposedWorkflowInterceptor } from './interceptor.ts';
|
|
10
|
+
import type { SearchAttributeSchema, WorkflowFunction } from './types.ts';
|
|
11
|
+
import type { WorkflowLogRecord } from './types/workflow-log.ts';
|
|
12
|
+
/** Capabilities the engine injects into the inline strategy at construction. */
|
|
13
|
+
export interface InlineExecutionDependencies {
|
|
14
|
+
getRegistration: (workflowType: string) => {
|
|
15
|
+
handler: WorkflowFunction;
|
|
16
|
+
version: string;
|
|
17
|
+
searchAttributes?: SearchAttributeSchema;
|
|
18
|
+
} | undefined;
|
|
19
|
+
getNow: () => number;
|
|
20
|
+
resolveWorkflowType?: (target: string | Function) => string;
|
|
21
|
+
maxNestingDepth: number;
|
|
22
|
+
development?: boolean;
|
|
23
|
+
getComposedWorkflowInterceptor?: () => ComposedWorkflowInterceptor | null;
|
|
24
|
+
registerCancelHandler?: (workflowId: string, handler: () => Promise<void> | void) => () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Durably record a `ctx.setFinalizerState(value)` payload for a workflow (#446).
|
|
27
|
+
* The engine stages it as a pending atomic side-effect so it commits with the
|
|
28
|
+
* next checkpoint or the terminal batch. Absent in worker mode.
|
|
29
|
+
*/
|
|
30
|
+
recordFinalizerState?: (workflowId: string, value: unknown) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Look up the non-serialized per-run `services` value for a workflow, exposed
|
|
33
|
+
* to the body as `ctx.services`. Returns `undefined` when none was supplied.
|
|
34
|
+
*/
|
|
35
|
+
getWorkflowServices?: (workflowId: string) => unknown;
|
|
36
|
+
/**
|
|
37
|
+
* The host log sink (`EngineOptions.onLog`) for `ctx.log` records, or
|
|
38
|
+
* `undefined` for the default console behavior. Engine-scoped, so it takes no
|
|
39
|
+
* workflow id.
|
|
40
|
+
*/
|
|
41
|
+
getLogSink?: () => ((record: WorkflowLogRecord) => void) | undefined;
|
|
42
|
+
}
|
|
43
|
+
/** A registration resolved through {@link InlineExecutionDependencies.getRegistration}, narrowed to the present case. */
|
|
44
|
+
export type InlineWorkflowRegistration = NonNullable<ReturnType<InlineExecutionDependencies['getRegistration']>>;
|
|
45
|
+
/** Parameters for starting a workflow run on the inline strategy. */
|
|
46
|
+
export type InlineStartWorkflowParameters = {
|
|
47
|
+
workflowId: string;
|
|
48
|
+
workflowType: string;
|
|
49
|
+
input: unknown;
|
|
50
|
+
checkpoint: ArrayBuffer | Uint8Array;
|
|
51
|
+
nestingDepth?: number;
|
|
52
|
+
executionStateOwnerId?: string;
|
|
53
|
+
startedAt?: number;
|
|
54
|
+
sleepReferenceTime?: number;
|
|
55
|
+
deadline?: number;
|
|
56
|
+
headers?: [string, string][];
|
|
57
|
+
};
|
|
58
|
+
/** Build the {@link ContextOptions} for a single inline workflow run from the injected dependencies and start parameters. */
|
|
59
|
+
export declare function createInlineContextOptions(dependencies: InlineExecutionDependencies, registration: InlineWorkflowRegistration, parameters: InlineStartWorkflowParameters, workflowAbort: AbortController): ContextOptions;
|
|
60
|
+
/**
|
|
61
|
+
* Keep only the defined optional inline-strategy dependencies. Under
|
|
62
|
+
* `exactOptionalPropertyTypes` a key set to `undefined` is rejected while an
|
|
63
|
+
* absent key is fine, so each optional is included only when present. Lives here
|
|
64
|
+
* (rather than inline in `createExecutionStrategyBundle`) so its conditional
|
|
65
|
+
* spreads do not tip that function over the cyclomatic-complexity cap.
|
|
66
|
+
*/
|
|
67
|
+
export declare function optionalInlineDependencies(candidates: {
|
|
68
|
+
[Key in 'getComposedWorkflowInterceptor' | 'registerCancelHandler' | 'recordFinalizerState' | 'getWorkflowServices' | 'getLogSink']: InlineExecutionDependencies[Key] | undefined;
|
|
69
|
+
}): Partial<InlineExecutionDependencies>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export function createInlineContextOptions(dependencies, registration, parameters, workflowAbort) {
|
|
2
|
+
return {
|
|
3
|
+
workflowId: parameters.workflowId,
|
|
4
|
+
workflowType: parameters.workflowType,
|
|
5
|
+
startedAt: parameters.startedAt ?? dependencies.getNow(),
|
|
6
|
+
abortController: workflowAbort,
|
|
7
|
+
getNow: dependencies.getNow,
|
|
8
|
+
nestingDepth: parameters.nestingDepth ?? 0,
|
|
9
|
+
executionStateOwnerId: parameters.executionStateOwnerId ?? parameters.workflowId,
|
|
10
|
+
...parameters.sleepReferenceTime !== void 0 && {
|
|
11
|
+
sleepReferenceTime: parameters.sleepReferenceTime
|
|
12
|
+
},
|
|
13
|
+
...dependencies.resolveWorkflowType !== void 0 && {
|
|
14
|
+
resolveWorkflowType: dependencies.resolveWorkflowType
|
|
15
|
+
},
|
|
16
|
+
...registration.searchAttributes && {
|
|
17
|
+
searchAttributeSchema: registration.searchAttributes
|
|
18
|
+
},
|
|
19
|
+
...parameters.deadline !== void 0 && { deadline: parameters.deadline },
|
|
20
|
+
...resolveWorkflowScopedCallbackOptions(dependencies, parameters.workflowId),
|
|
21
|
+
services: dependencies.getWorkflowServices?.(parameters.workflowId),
|
|
22
|
+
...resolveLogSinkOption(dependencies)
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function resolveWorkflowScopedCallbackOptions(dependencies, workflowId) {
|
|
26
|
+
const { registerCancelHandler, recordFinalizerState } = dependencies;
|
|
27
|
+
return {
|
|
28
|
+
...registerCancelHandler !== void 0 && {
|
|
29
|
+
registerCancelHandler: (handler) => registerCancelHandler(workflowId, handler)
|
|
30
|
+
},
|
|
31
|
+
...recordFinalizerState !== void 0 && {
|
|
32
|
+
recordFinalizerState: (value) => recordFinalizerState(workflowId, value)
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function resolveLogSinkOption(dependencies) {
|
|
37
|
+
const logSink = dependencies.getLogSink?.();
|
|
38
|
+
return logSink === void 0 ? {} : { logSink };
|
|
39
|
+
}
|
|
40
|
+
export function optionalInlineDependencies(candidates) {
|
|
41
|
+
return {
|
|
42
|
+
...candidates.getComposedWorkflowInterceptor !== void 0 && {
|
|
43
|
+
getComposedWorkflowInterceptor: candidates.getComposedWorkflowInterceptor
|
|
44
|
+
},
|
|
45
|
+
...candidates.registerCancelHandler !== void 0 && {
|
|
46
|
+
registerCancelHandler: candidates.registerCancelHandler
|
|
47
|
+
},
|
|
48
|
+
...candidates.recordFinalizerState !== void 0 && {
|
|
49
|
+
recordFinalizerState: candidates.recordFinalizerState
|
|
50
|
+
},
|
|
51
|
+
...candidates.getWorkflowServices !== void 0 && {
|
|
52
|
+
getWorkflowServices: candidates.getWorkflowServices
|
|
53
|
+
},
|
|
54
|
+
...candidates.getLogSink !== void 0 && { getLogSink: candidates.getLogSink }
|
|
55
|
+
};
|
|
56
|
+
}
|
|
@@ -11,38 +11,8 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { Context } from './context.ts';
|
|
13
13
|
import type { ExecutionStrategy } from './execution-strategy.ts';
|
|
14
|
-
import type {
|
|
15
|
-
import type { FailureCategory, OperationOutcome,
|
|
16
|
-
export interface InlineExecutionDependencies {
|
|
17
|
-
getRegistration: (workflowType: string) => {
|
|
18
|
-
handler: WorkflowFunction;
|
|
19
|
-
version: string;
|
|
20
|
-
searchAttributes?: SearchAttributeSchema;
|
|
21
|
-
} | undefined;
|
|
22
|
-
getNow: () => number;
|
|
23
|
-
resolveWorkflowType?: (target: string | Function) => string;
|
|
24
|
-
maxNestingDepth: number;
|
|
25
|
-
development?: boolean;
|
|
26
|
-
getComposedWorkflowInterceptor?: () => ComposedWorkflowInterceptor | null;
|
|
27
|
-
registerCancelHandler?: (workflowId: string, handler: () => Promise<void> | void) => () => void;
|
|
28
|
-
/**
|
|
29
|
-
* Look up the non-serialized per-run `services` value for a workflow, exposed
|
|
30
|
-
* to the body as `ctx.services`. Returns `undefined` when none was supplied.
|
|
31
|
-
*/
|
|
32
|
-
getWorkflowServices?: (workflowId: string) => unknown;
|
|
33
|
-
}
|
|
34
|
-
type InlineStartWorkflowParameters = {
|
|
35
|
-
workflowId: string;
|
|
36
|
-
workflowType: string;
|
|
37
|
-
input: unknown;
|
|
38
|
-
checkpoint: ArrayBuffer | Uint8Array;
|
|
39
|
-
nestingDepth?: number;
|
|
40
|
-
executionStateOwnerId?: string;
|
|
41
|
-
startedAt?: number;
|
|
42
|
-
sleepReferenceTime?: number;
|
|
43
|
-
deadline?: number;
|
|
44
|
-
headers?: [string, string][];
|
|
45
|
-
};
|
|
14
|
+
import type { InlineExecutionDependencies, InlineStartWorkflowParameters } from './inline-execution-strategy.context-options.ts';
|
|
15
|
+
import type { FailureCategory, OperationOutcome, WorkerOutboundMessage } from './types.ts';
|
|
46
16
|
export declare class InlineExecutionStrategy implements ExecutionStrategy {
|
|
47
17
|
#private;
|
|
48
18
|
constructor(dependencies: InlineExecutionDependencies);
|
|
@@ -54,8 +24,33 @@ export declare class InlineExecutionStrategy implements ExecutionStrategy {
|
|
|
54
24
|
operationResult: OperationOutcome;
|
|
55
25
|
}): void;
|
|
56
26
|
cancelWorkflow(workflowId: string): void;
|
|
57
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Evict a workflow's in-memory execution state (generator, abort controller,
|
|
29
|
+
* live context, tracked turns/advances).
|
|
30
|
+
*
|
|
31
|
+
* By default this is a hard eviction: nothing about the run stays reachable —
|
|
32
|
+
* which is what the suspend/general teardown path requires. The inline
|
|
33
|
+
* `waitForSignal` parking optimization opts into `retainContext: true` so the
|
|
34
|
+
* run's Context survives in `#parkedContexts` and its `ctx.onQuery` handlers
|
|
35
|
+
* stay callable while the run is parked. Retention is therefore strictly
|
|
36
|
+
* opt-in at the one call site that wants it; every other caller gets eviction.
|
|
37
|
+
*/
|
|
38
|
+
parkWorkflow(workflowId: string, options?: {
|
|
39
|
+
retainContext?: boolean;
|
|
40
|
+
}): void;
|
|
41
|
+
/** Returns the live Context for a workflow, or `undefined` if not running. For parked workflows use {@link getParkedContext}. */
|
|
58
42
|
getContext(workflowId: string): Context | undefined;
|
|
43
|
+
/** Returns the retained Context for a parked workflow, or `undefined` if not parked or already cleaned up. */
|
|
44
|
+
getParkedContext(workflowId: string): Context | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Drop any retained parked Context for a workflow without touching the abort
|
|
47
|
+
* controller or other live state. Terminal cleanup calls this so a workflow
|
|
48
|
+
* that reached a terminal status while parked (e.g. a failed resume, or normal
|
|
49
|
+
* completion of a run that had parked) cannot keep resolving `ctx.onQuery`
|
|
50
|
+
* handlers from a stale parked Context — and so the Context is not retained
|
|
51
|
+
* for the engine's lifetime.
|
|
52
|
+
*/
|
|
53
|
+
clearParkedContext(workflowId: string): void;
|
|
59
54
|
getAbortController(workflowId: string): AbortController | undefined;
|
|
60
55
|
waitForWorkflowTurn(workflowId: string): Promise<void> | undefined;
|
|
61
56
|
waitForWorkflowAdvance(workflowId: string): Promise<void> | undefined;
|
|
@@ -71,11 +66,11 @@ export declare class InlineExecutionStrategy implements ExecutionStrategy {
|
|
|
71
66
|
*/
|
|
72
67
|
throwIntoWorkflow(workflowId: string, error: unknown, operationFailureCategory?: FailureCategory): void;
|
|
73
68
|
/**
|
|
74
|
-
* Store a context and generator
|
|
75
|
-
*
|
|
69
|
+
* Store a context and generator created externally (engine resume path).
|
|
70
|
+
* Clears any retained parked context so a concurrent query sees the new
|
|
71
|
+
* live context rather than the stale parked one.
|
|
76
72
|
*/
|
|
77
73
|
adoptWorkflow(workflowId: string, generator: AsyncGenerator, context: Context, abortController: AbortController): void;
|
|
78
74
|
[Symbol.dispose](): void;
|
|
79
75
|
[Symbol.asyncDispose](): Promise<void>;
|
|
80
76
|
}
|
|
81
|
-
export {};
|
|
@@ -3,38 +3,14 @@ import {
|
|
|
3
3
|
classifyErrorAsFailureCategory,
|
|
4
4
|
errorFromFailedOperationOutcome
|
|
5
5
|
} from "./failure-categories.js";
|
|
6
|
-
|
|
7
|
-
const { registerCancelHandler } = dependencies;
|
|
8
|
-
return {
|
|
9
|
-
workflowId: parameters.workflowId,
|
|
10
|
-
workflowType: parameters.workflowType,
|
|
11
|
-
startedAt: parameters.startedAt ?? dependencies.getNow(),
|
|
12
|
-
abortController: workflowAbort,
|
|
13
|
-
getNow: dependencies.getNow,
|
|
14
|
-
nestingDepth: parameters.nestingDepth ?? 0,
|
|
15
|
-
executionStateOwnerId: parameters.executionStateOwnerId ?? parameters.workflowId,
|
|
16
|
-
...parameters.sleepReferenceTime !== void 0 && {
|
|
17
|
-
sleepReferenceTime: parameters.sleepReferenceTime
|
|
18
|
-
},
|
|
19
|
-
...dependencies.resolveWorkflowType !== void 0 && {
|
|
20
|
-
resolveWorkflowType: dependencies.resolveWorkflowType
|
|
21
|
-
},
|
|
22
|
-
...registration.searchAttributes && {
|
|
23
|
-
searchAttributeSchema: registration.searchAttributes
|
|
24
|
-
},
|
|
25
|
-
...parameters.deadline !== void 0 && { deadline: parameters.deadline },
|
|
26
|
-
...registerCancelHandler !== void 0 && {
|
|
27
|
-
registerCancelHandler: (handler) => registerCancelHandler(parameters.workflowId, handler)
|
|
28
|
-
},
|
|
29
|
-
services: dependencies.getWorkflowServices?.(parameters.workflowId)
|
|
30
|
-
};
|
|
31
|
-
}
|
|
6
|
+
import { createInlineContextOptions } from "./inline-execution-strategy.context-options.js";
|
|
32
7
|
|
|
33
8
|
export class InlineExecutionStrategy {
|
|
34
9
|
#dependencies;
|
|
35
10
|
#generators;
|
|
36
11
|
#abortControllers;
|
|
37
12
|
#contexts;
|
|
13
|
+
#parkedContexts;
|
|
38
14
|
#workflowAdvances;
|
|
39
15
|
#workflowTurns;
|
|
40
16
|
#messageHandler;
|
|
@@ -43,6 +19,7 @@ export class InlineExecutionStrategy {
|
|
|
43
19
|
this.#generators = new Map;
|
|
44
20
|
this.#abortControllers = new Map;
|
|
45
21
|
this.#contexts = new Map;
|
|
22
|
+
this.#parkedContexts = new Map;
|
|
46
23
|
this.#workflowAdvances = new Map;
|
|
47
24
|
this.#workflowTurns = new Map;
|
|
48
25
|
this.#messageHandler = null;
|
|
@@ -93,12 +70,21 @@ export class InlineExecutionStrategy {
|
|
|
93
70
|
abortController.abort();
|
|
94
71
|
this.#cleanup(workflowId);
|
|
95
72
|
}
|
|
96
|
-
parkWorkflow(workflowId) {
|
|
73
|
+
parkWorkflow(workflowId, options) {
|
|
74
|
+
const context = options?.retainContext ? this.#contexts.get(workflowId) ?? this.#parkedContexts.get(workflowId) : void 0;
|
|
97
75
|
this.#cleanup(workflowId);
|
|
76
|
+
if (context !== void 0)
|
|
77
|
+
this.#parkedContexts.set(workflowId, context);
|
|
98
78
|
}
|
|
99
79
|
getContext(workflowId) {
|
|
100
80
|
return this.#contexts.get(workflowId);
|
|
101
81
|
}
|
|
82
|
+
getParkedContext(workflowId) {
|
|
83
|
+
return this.#parkedContexts.get(workflowId);
|
|
84
|
+
}
|
|
85
|
+
clearParkedContext(workflowId) {
|
|
86
|
+
this.#parkedContexts.delete(workflowId);
|
|
87
|
+
}
|
|
102
88
|
getAbortController(workflowId) {
|
|
103
89
|
return this.#abortControllers.get(workflowId);
|
|
104
90
|
}
|
|
@@ -124,6 +110,7 @@ export class InlineExecutionStrategy {
|
|
|
124
110
|
this.#throwIntoGenerator(workflowId, generator, error, operationFailureCategory);
|
|
125
111
|
}
|
|
126
112
|
adoptWorkflow(workflowId, generator, context, abortController) {
|
|
113
|
+
this.#parkedContexts.delete(workflowId);
|
|
127
114
|
this.#generators.set(workflowId, generator);
|
|
128
115
|
this.#contexts.set(workflowId, context);
|
|
129
116
|
this.#abortControllers.set(workflowId, abortController);
|
|
@@ -132,6 +119,7 @@ export class InlineExecutionStrategy {
|
|
|
132
119
|
this.#generators.clear();
|
|
133
120
|
this.#abortControllers.clear();
|
|
134
121
|
this.#contexts.clear();
|
|
122
|
+
this.#parkedContexts.clear();
|
|
135
123
|
this.#workflowAdvances.clear();
|
|
136
124
|
this.#workflowTurns.clear();
|
|
137
125
|
this.#messageHandler = null;
|
|
@@ -257,6 +245,7 @@ export class InlineExecutionStrategy {
|
|
|
257
245
|
this.#generators.delete(workflowId);
|
|
258
246
|
this.#abortControllers.delete(workflowId);
|
|
259
247
|
this.#contexts.delete(workflowId);
|
|
248
|
+
this.#parkedContexts.delete(workflowId);
|
|
260
249
|
if (!options?.preserveTrackedAdvance)
|
|
261
250
|
this.#workflowAdvances.delete(workflowId);
|
|
262
251
|
if (!options?.preserveTrackedTurn)
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
import { z } from 'zod';
|
|
12
12
|
import { isFailureCategory } from './failure-categories.ts';
|
|
13
13
|
import type { FailureCategory, WorkflowStatus } from './types/identity.ts';
|
|
14
|
-
import type { ListFilter } from './types/options.ts';
|
|
14
|
+
import type { ListFilter } from './types/list-options.ts';
|
|
15
15
|
import { WeftError } from './weft-error.ts';
|
|
16
16
|
/**
|
|
17
17
|
* Concrete object schema for {@link ListFilter}. Supports `.omit()` and
|
|
@@ -4,7 +4,7 @@ import { WeftError } from './weft-error.ts';
|
|
|
4
4
|
* {@link PayloadSizeExceededError} message so operators can tell which
|
|
5
5
|
* admission point rejected the value.
|
|
6
6
|
*/
|
|
7
|
-
export type PayloadKind = 'workflow input' | 'signal payload' | 'activity result';
|
|
7
|
+
export type PayloadKind = 'workflow input' | 'signal payload' | 'activity result' | 'finalizer state';
|
|
8
8
|
/**
|
|
9
9
|
* Thrown at admission when a payload's serialized (codec-encoded) size exceeds
|
|
10
10
|
* the operator-configured {@link PayloadSizePolicy.maxBytes}. The rejection
|