@lostgradient/weft 0.3.0 → 0.5.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 +61 -5
- package/dist/client/local-handles.d.ts +22 -0
- package/dist/client/local-handles.js +23 -0
- package/dist/client/local.d.ts +6 -3
- package/dist/client/local.js +12 -26
- 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 +46 -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 +136 -9
- 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 +6 -13
- package/dist/core/engine/operations-activity.js +26 -53
- package/dist/core/engine/operations-coordination.d.ts +10 -0
- package/dist/core/engine/operations-coordination.js +44 -9
- 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 +25 -6
- 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 +19 -19
- 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 +32 -32
- 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 +20 -20
- 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
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { WorkflowId, WorkflowStatus } from './identity.ts';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AttributeFilterScalarValue } from './list-options.ts';
|
|
3
3
|
export declare const MAX_BULK_OPERATION_REQUEST_ID_LENGTH = 200;
|
|
4
4
|
export declare const MAX_BULK_CONFIRMATION_TOKEN_LENGTH = 256;
|
|
5
5
|
/**
|
|
@@ -14,7 +14,7 @@ export declare const MAX_BULK_CONFIRMATION_TOKEN_LENGTH = 256;
|
|
|
14
14
|
* void action;
|
|
15
15
|
* ```
|
|
16
16
|
*/
|
|
17
|
-
export type BulkOperationAction = 'cancel' | 'signal' | 'delete' | 'tag:add' | 'tag:remove' | '
|
|
17
|
+
export type BulkOperationAction = 'cancel' | 'signal' | 'delete' | 'tag:add' | 'tag:remove' | 'retry-failed';
|
|
18
18
|
/**
|
|
19
19
|
* Credential-safe caller summary recorded on bulk audit events. Claims,
|
|
20
20
|
* bearer tokens, API keys, and other credentials are intentionally absent.
|
|
@@ -55,11 +55,11 @@ export type BulkOperationFilterSummary = {
|
|
|
55
55
|
tags?: string[];
|
|
56
56
|
attributes?: Array<{
|
|
57
57
|
key: string;
|
|
58
|
-
value?:
|
|
59
|
-
gt?:
|
|
60
|
-
lt?:
|
|
61
|
-
gte?:
|
|
62
|
-
lte?:
|
|
58
|
+
value?: AttributeFilterScalarValue | AttributeFilterScalarValue[];
|
|
59
|
+
gt?: AttributeFilterScalarValue;
|
|
60
|
+
lt?: AttributeFilterScalarValue;
|
|
61
|
+
gte?: AttributeFilterScalarValue;
|
|
62
|
+
lte?: AttributeFilterScalarValue;
|
|
63
63
|
}>;
|
|
64
64
|
limit?: number;
|
|
65
65
|
offset?: number;
|
|
@@ -126,6 +126,16 @@ export type BulkOperationDryRunResult = {
|
|
|
126
126
|
sampleWorkflowIds: WorkflowId[];
|
|
127
127
|
confirmationToken: string;
|
|
128
128
|
confirmationTokenVersion: 1;
|
|
129
|
+
/**
|
|
130
|
+
* Delete-only, point-in-time advisory: ids in the matched scope that currently owe an
|
|
131
|
+
* engine-driven finalizer (#446) and so would be SKIPPED by the commit (mirrors
|
|
132
|
+
* {@link BulkDeleteResult.skippedTeardownPending}). Present only on a `delete` preview
|
|
133
|
+
* and only when non-empty. `matched`, `scope`, and `confirmationToken` still describe
|
|
134
|
+
* the full filter scope — they are stable and derive the commit token — so this field
|
|
135
|
+
* surfaces the skip without recomputing them (teardown-owed is transient and is
|
|
136
|
+
* re-evaluated at commit time, where the authoritative skip list is reported).
|
|
137
|
+
*/
|
|
138
|
+
skippedTeardownPending?: WorkflowId[];
|
|
129
139
|
};
|
|
130
140
|
/**
|
|
131
141
|
* Options for a dry-run bulk operation preview.
|
|
@@ -145,6 +155,7 @@ export type BulkOperationDryRunOptions = {
|
|
|
145
155
|
dryRun: true;
|
|
146
156
|
requestId?: string;
|
|
147
157
|
principal?: BulkOperationPrincipal;
|
|
158
|
+
bulkConcurrency?: number;
|
|
148
159
|
};
|
|
149
160
|
/**
|
|
150
161
|
* Options for a committed bulk operation.
|
|
@@ -165,6 +176,7 @@ export type BulkOperationCommitOptions = {
|
|
|
165
176
|
confirmationToken?: string;
|
|
166
177
|
requestId?: string;
|
|
167
178
|
principal?: BulkOperationPrincipal;
|
|
179
|
+
bulkConcurrency?: number;
|
|
168
180
|
};
|
|
169
181
|
/**
|
|
170
182
|
* Options accepted by bulk workflow operations.
|
|
@@ -173,7 +185,7 @@ export type BulkOperationCommitOptions = {
|
|
|
173
185
|
* ```ts
|
|
174
186
|
* import type { BulkOperationOptions } from '@lostgradient/weft';
|
|
175
187
|
*
|
|
176
|
-
* const options: BulkOperationOptions = { dryRun: true };
|
|
188
|
+
* const options: BulkOperationOptions = { dryRun: true, bulkConcurrency: 4 };
|
|
177
189
|
* void options;
|
|
178
190
|
* ```
|
|
179
191
|
*/
|
|
@@ -278,6 +290,29 @@ export type BulkCancelResult = {
|
|
|
278
290
|
errors: BulkOperationError[];
|
|
279
291
|
auditEvent?: BulkOperationAuditEvent;
|
|
280
292
|
};
|
|
293
|
+
/**
|
|
294
|
+
* Result of a bulk failed-workflow retry operation (`engine.retryFailedAll`).
|
|
295
|
+
* Reports the number of workflows accepted for retry, the number that failed
|
|
296
|
+
* to restart or resume, and per-workflow error details in `errors`.
|
|
297
|
+
*
|
|
298
|
+
* @example
|
|
299
|
+
* ```ts
|
|
300
|
+
* import type { BulkRetryFailedResult } from '@lostgradient/weft';
|
|
301
|
+
*
|
|
302
|
+
* const result: BulkRetryFailedResult = {
|
|
303
|
+
* retried: 2,
|
|
304
|
+
* failed: 1,
|
|
305
|
+
* errors: [{ id: 'wf-3', error: 'Checkpoint no longer exists' }],
|
|
306
|
+
* };
|
|
307
|
+
* void result;
|
|
308
|
+
* ```
|
|
309
|
+
*/
|
|
310
|
+
export type BulkRetryFailedResult = {
|
|
311
|
+
retried: number;
|
|
312
|
+
failed: number;
|
|
313
|
+
errors: BulkOperationError[];
|
|
314
|
+
auditEvent?: BulkOperationAuditEvent;
|
|
315
|
+
};
|
|
281
316
|
/**
|
|
282
317
|
* Result of a bulk signal operation (`engine.signalAll`). Reports the number
|
|
283
318
|
* of workflows that received the signal and the number for which delivery failed.
|
|
@@ -289,10 +324,16 @@ export type BulkSignalResult = {
|
|
|
289
324
|
};
|
|
290
325
|
/**
|
|
291
326
|
* Result of a bulk delete operation (`engine.deleteAll`). Reports how many
|
|
292
|
-
* terminal workflows were deleted from storage.
|
|
327
|
+
* terminal workflows were deleted from storage. Workflows that still owe an
|
|
328
|
+
* engine-driven finalizer (#446) are NOT deleted — deleting them would drop the
|
|
329
|
+
* finalizer payload before the resource is torn down — and are reported, by id, in
|
|
330
|
+
* `skippedTeardownPending` so the skip is visible rather than silent. The skip is
|
|
331
|
+
* transient: once the finalizer settles, a later `deleteAll` removes the record.
|
|
293
332
|
*/
|
|
294
333
|
export type BulkDeleteResult = {
|
|
295
334
|
deleted: number;
|
|
335
|
+
/** Ids of terminal workflows skipped because they still owe a finalizer run. */
|
|
336
|
+
skippedTeardownPending?: WorkflowId[];
|
|
296
337
|
auditEvent?: BulkOperationAuditEvent;
|
|
297
338
|
};
|
|
298
339
|
/**
|
|
@@ -3,6 +3,7 @@ import { WeftError } from '../weft-error.ts';
|
|
|
3
3
|
import type { FailureCategory, OperationId, WorkflowId } from './identity.ts';
|
|
4
4
|
import type { Duration, RetryPolicy } from './retry-retention.ts';
|
|
5
5
|
import type { SearchAttributeValue } from './search-attributes.ts';
|
|
6
|
+
import type { WorkflowLogRecord } from './workflow-log.ts';
|
|
6
7
|
/** Version tag for Worker-mode operation replay signatures stored in checkpoints. */
|
|
7
8
|
export declare const WORKER_REPLAY_SIGNATURE_FORMAT = "weft-worker-operation-signature-v1";
|
|
8
9
|
/**
|
|
@@ -69,7 +70,7 @@ export interface WorkerReplayOperationFailure {
|
|
|
69
70
|
/**
|
|
70
71
|
* Durable snapshot of a workflow's execution state persisted at each
|
|
71
72
|
* `yield` boundary. Contains the accumulated operation results, local
|
|
72
|
-
* variables,
|
|
73
|
+
* variables, search attributes, and the step counter.
|
|
73
74
|
* Users don't construct checkpoints directly; the engine manages them.
|
|
74
75
|
* Available via time-travel APIs and {@link WorkflowReplay}.
|
|
75
76
|
*
|
|
@@ -91,6 +92,12 @@ export interface Checkpoint {
|
|
|
91
92
|
step: number;
|
|
92
93
|
locals: Record<string, unknown>;
|
|
93
94
|
accumulatedResults: Array<[number, unknown]>;
|
|
95
|
+
/**
|
|
96
|
+
* Highest accumulated-result step whose replay data has been emitted to the
|
|
97
|
+
* workflow event log. Missing means no consumed results have been emitted yet,
|
|
98
|
+
* which is how old unpruned checkpoints are read.
|
|
99
|
+
*/
|
|
100
|
+
accumulatedResultReplayWatermark?: number;
|
|
94
101
|
/**
|
|
95
102
|
* Worker-mode replay guards for cached operation results. Inline execution
|
|
96
103
|
* ignores this optional field; Worker recovery uses it to prove a cached
|
|
@@ -103,15 +110,13 @@ export interface Checkpoint {
|
|
|
103
110
|
* can throw them back into the generator without trusting user result shape.
|
|
104
111
|
*/
|
|
105
112
|
workerReplayFailures?: Array<[number, WorkerReplayOperationFailure]>;
|
|
106
|
-
pendingSignals: string[];
|
|
107
113
|
searchAttributes: Record<string, SearchAttributeValue>;
|
|
108
|
-
/** User-defined workflow code version.
|
|
114
|
+
/** User-defined workflow code version. Checked during recovery. */
|
|
109
115
|
version: string;
|
|
110
116
|
/**
|
|
111
117
|
* Checkpoint schema version. Distinct from `version` (which is the
|
|
112
118
|
* user's workflow code version). Bumped whenever the engine changes
|
|
113
|
-
* the on-disk checkpoint format. Pre-1.0: refuse to load older
|
|
114
|
-
* versions; post-1.0: every bump must ship a migration.
|
|
119
|
+
* the on-disk checkpoint format. Pre-1.0: refuse to load older versions.
|
|
115
120
|
*/
|
|
116
121
|
schemaVersion: number;
|
|
117
122
|
createdAt: number;
|
|
@@ -126,8 +131,9 @@ export interface Checkpoint {
|
|
|
126
131
|
export declare const CURRENT_CHECKPOINT_SCHEMA_VERSION = 2;
|
|
127
132
|
/**
|
|
128
133
|
* Thrown by `validateCheckpointShape` when a checkpoint's
|
|
129
|
-
* `schemaVersion` does not match the engine's current version.
|
|
130
|
-
*
|
|
134
|
+
* `schemaVersion` does not match the engine's current version. A mismatched
|
|
135
|
+
* checkpoint is rejected, never upgraded in place: the engine loads only
|
|
136
|
+
* checkpoints stamped with the exact current schema version.
|
|
131
137
|
*/
|
|
132
138
|
export declare class CheckpointSchemaVersionError extends WeftError<'CheckpointSchemaVersionError'> {
|
|
133
139
|
readonly found: number | 'pre-versioned';
|
|
@@ -183,7 +189,7 @@ export interface TimerEntry {
|
|
|
183
189
|
id: string;
|
|
184
190
|
workflowId: WorkflowId;
|
|
185
191
|
fireAt: number;
|
|
186
|
-
kind: 'sleep' | 'visibility-timeout' | 'execution-deadline' | 'delayed-start' | 'schedule' | 'terminal-cleanup';
|
|
192
|
+
kind: 'sleep' | 'visibility-timeout' | 'execution-deadline' | 'delayed-start' | 'schedule' | 'terminal-cleanup' | 'teardown' | 'wait-condition';
|
|
187
193
|
executionTimeoutMs?: number;
|
|
188
194
|
}
|
|
189
195
|
export type WorkerInboundMessage = {
|
|
@@ -198,6 +204,14 @@ export type WorkerInboundMessage = {
|
|
|
198
204
|
executionStateOwnerId?: string;
|
|
199
205
|
deadline?: number;
|
|
200
206
|
headers?: [string, string][];
|
|
207
|
+
/**
|
|
208
|
+
* Whether the engine host has an `EngineOptions.onLog` sink installed. The
|
|
209
|
+
* worker routes `ctx.log` records back to the host (as a `log` outbound
|
|
210
|
+
* message) only when this is `true`; otherwise it logs to the worker's own
|
|
211
|
+
* console, preserving the default. Omitted (treated as `false`) when no host
|
|
212
|
+
* sink exists, so a worker can never lose logs to a no-op host callback.
|
|
213
|
+
*/
|
|
214
|
+
hostHasLogSink?: boolean;
|
|
201
215
|
} | {
|
|
202
216
|
type: 'resume';
|
|
203
217
|
protocolVersion?: number;
|
|
@@ -206,6 +220,8 @@ export type WorkerInboundMessage = {
|
|
|
206
220
|
workflowId: WorkflowId;
|
|
207
221
|
checkpoint: ArrayBuffer;
|
|
208
222
|
operationResult: OperationOutcome;
|
|
223
|
+
/** See {@link WorkerInboundMessage} `run.hostHasLogSink`; carried on every turn so a rebuilt or resumed worker keeps the capability. */
|
|
224
|
+
hostHasLogSink?: boolean;
|
|
209
225
|
} | {
|
|
210
226
|
type: 'cancel';
|
|
211
227
|
protocolVersion?: number;
|
|
@@ -234,4 +250,24 @@ export type WorkerOutboundMessage = {
|
|
|
234
250
|
errorStack?: string;
|
|
235
251
|
/** Populated when the execution strategy can classify the failure cause. */
|
|
236
252
|
failureCategory?: FailureCategory;
|
|
253
|
+
} | {
|
|
254
|
+
/**
|
|
255
|
+
* A `ctx.log` record forwarded from a worker to the engine host's
|
|
256
|
+
* `EngineOptions.onLog` sink (#529). Unlike the other variants, `log` is a
|
|
257
|
+
* NON-TERMINAL, best-effort observability message: it carries no turn-protocol
|
|
258
|
+
* state, never settles or clears the worker turn, and never reaches the strict
|
|
259
|
+
* accept-or-discard gate. The host delivers a record to the sink IFF the sending
|
|
260
|
+
* worker owns `workflowId` (active or parked) AND `record.workflowId` matches the
|
|
261
|
+
* envelope AND the record is a structurally valid `WorkflowLogRecord` within the
|
|
262
|
+
* size cap; otherwise the record is dropped — a wrong-owner, malformed, oversize,
|
|
263
|
+
* or out-of-turn `log` is never a protocol violation and never discards the
|
|
264
|
+
* worker. A between-turns self-log (a fire-and-forget log resolving while the
|
|
265
|
+
* worker is parked) IS delivered, because the worker still owns its parked
|
|
266
|
+
* workflow. The worker emits these only when the inbound message reported
|
|
267
|
+
* `hostHasLogSink: true`.
|
|
268
|
+
*/
|
|
269
|
+
type: 'log';
|
|
270
|
+
protocolVersion?: number;
|
|
271
|
+
workflowId: WorkflowId;
|
|
272
|
+
record: WorkflowLogRecord;
|
|
237
273
|
};
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import type { FailureCategory, WorkflowStatus } from './identity.ts';
|
|
2
|
+
import type { SearchAttributeHandle, SearchAttributeValue } from './search-attributes.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Numeric half-open range bound, used by visibility filters that match a
|
|
5
|
+
* stored numeric field (timestamps, deadlines). Provide at least one of the
|
|
6
|
+
* four bounds. `gt`/`gte` are mutually exclusive on the lower side; `lt`/`lte`
|
|
7
|
+
* are mutually exclusive on the upper side.
|
|
8
|
+
*/
|
|
9
|
+
export interface TimeRange {
|
|
10
|
+
gte?: number;
|
|
11
|
+
lte?: number;
|
|
12
|
+
gt?: number;
|
|
13
|
+
lt?: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Filter passed to {@link Engine.list} (and equivalent visibility transports)
|
|
17
|
+
* to narrow which {@link WorkflowSummary} entries are returned. Every field
|
|
18
|
+
* is optional; combining fields applies them as AND.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```ts
|
|
22
|
+
* import { Engine, type ListFilter } from '@lostgradient/weft';
|
|
23
|
+
*
|
|
24
|
+
* const engine = new Engine();
|
|
25
|
+
* const filter: ListFilter = {
|
|
26
|
+
* status: ['running', 'failed'],
|
|
27
|
+
* createdAt: { gte: Date.now() - 60_000 },
|
|
28
|
+
* };
|
|
29
|
+
*
|
|
30
|
+
* const page = await engine.list(filter);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export interface ListFilter {
|
|
34
|
+
/** Match workflows whose {@link WorkflowState.status} is one of the listed values. */
|
|
35
|
+
status?: WorkflowStatus | WorkflowStatus[];
|
|
36
|
+
/**
|
|
37
|
+
* Match workflows by registered workflow type (e.g. `'order-fulfillment'`).
|
|
38
|
+
*
|
|
39
|
+
* @example
|
|
40
|
+
* ```ts
|
|
41
|
+
* import type { ListFilter } from '@lostgradient/weft';
|
|
42
|
+
* const filter: ListFilter = { type: 'order-fulfillment' };
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
type?: string;
|
|
46
|
+
/** Match workflows that carry every listed tag. */
|
|
47
|
+
tags?: string[];
|
|
48
|
+
/** Filter on indexed search attributes (equality, string any-of, or range). */
|
|
49
|
+
attributes?: readonly AttributeFilter[];
|
|
50
|
+
/** Maximum number of summaries to return. Server enforces an upper bound. */
|
|
51
|
+
limit?: number;
|
|
52
|
+
/** Number of summaries to skip before returning results. */
|
|
53
|
+
offset?: number;
|
|
54
|
+
/**
|
|
55
|
+
* Workflow id prefix. Restricted to `[A-Za-z0-9_-]+`; values containing
|
|
56
|
+
* other characters are rejected during validation. Matches by raw
|
|
57
|
+
* `state.id.startsWith(idPrefix)` after candidate enumeration.
|
|
58
|
+
*/
|
|
59
|
+
idPrefix?: string;
|
|
60
|
+
/** Range filter on `WorkflowState.createdAt` (ms epoch). */
|
|
61
|
+
createdAt?: TimeRange;
|
|
62
|
+
/** Range filter on `WorkflowState.updatedAt` (ms epoch). */
|
|
63
|
+
updatedAt?: TimeRange;
|
|
64
|
+
/** Range filter on `WorkflowState.executionDeadline` (ms epoch). */
|
|
65
|
+
executionDeadline?: TimeRange;
|
|
66
|
+
/**
|
|
67
|
+
* Match by the workflow's `failureCategory`. The engine uses the
|
|
68
|
+
* `failureCategory` search-attribute index to narrow candidate workflow IDs,
|
|
69
|
+
* then still verifies the loaded `WorkflowState.failureCategory` so state
|
|
70
|
+
* remains authoritative when index entries are stale.
|
|
71
|
+
*/
|
|
72
|
+
failureCategory?: FailureCategory | FailureCategory[];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Projection options for {@link Engine.list}. These options do not change
|
|
76
|
+
* which workflows match the list filter; they only control optional summary
|
|
77
|
+
* fields that may require additional storage reads.
|
|
78
|
+
*
|
|
79
|
+
* @example Include failure categories projected from search attributes
|
|
80
|
+
* ```ts
|
|
81
|
+
* import { Engine, type ListOptions } from '@lostgradient/weft';
|
|
82
|
+
*
|
|
83
|
+
* const engine = new Engine();
|
|
84
|
+
* const options: ListOptions = { includeFailureCategory: true };
|
|
85
|
+
* const page = await engine.list({ status: 'failed' }, options);
|
|
86
|
+
* void page;
|
|
87
|
+
* ```
|
|
88
|
+
*/
|
|
89
|
+
export interface ListOptions {
|
|
90
|
+
/**
|
|
91
|
+
* Populate `WorkflowSummary.failureCategory` for failed workflows from the
|
|
92
|
+
* stored `failureCategory` search attribute when the workflow state itself
|
|
93
|
+
* does not carry a category. Defaults to `false`.
|
|
94
|
+
*/
|
|
95
|
+
includeFailureCategory?: boolean;
|
|
96
|
+
}
|
|
97
|
+
export type AttributeFilterKey = string | SearchAttributeHandle;
|
|
98
|
+
export type AttributeFilterScalarValue = Exclude<SearchAttributeValue, string[]>;
|
|
99
|
+
export type AttributeFilterValue<TKey extends AttributeFilterKey> = TKey extends SearchAttributeHandle<infer TValue> ? TValue extends string[] ? string : TValue : AttributeFilterScalarValue;
|
|
100
|
+
export type AttributeFilterAnyOfValue<TKey extends AttributeFilterKey> = TKey extends SearchAttributeHandle<infer TValue> ? TValue extends string[] ? string[] : TValue extends AttributeFilterScalarValue ? TValue[] : never : AttributeFilterScalarValue[];
|
|
101
|
+
export type AttributeRangeValue<TKey extends AttributeFilterKey> = TKey extends SearchAttributeHandle<infer TValue> ? Extract<TValue, Date | number> : AttributeFilterScalarValue;
|
|
102
|
+
export type AttributeFilter<TKey extends AttributeFilterKey = AttributeFilterKey> = TKey extends SearchAttributeHandle ? {
|
|
103
|
+
key: TKey;
|
|
104
|
+
value?: AttributeFilterValue<TKey> | AttributeFilterAnyOfValue<TKey>;
|
|
105
|
+
gt?: never;
|
|
106
|
+
lt?: never;
|
|
107
|
+
gte?: never;
|
|
108
|
+
lte?: never;
|
|
109
|
+
} | {
|
|
110
|
+
key: TKey;
|
|
111
|
+
value?: never;
|
|
112
|
+
gt?: AttributeRangeValue<TKey>;
|
|
113
|
+
lt?: AttributeRangeValue<TKey>;
|
|
114
|
+
gte?: AttributeRangeValue<TKey>;
|
|
115
|
+
lte?: AttributeRangeValue<TKey>;
|
|
116
|
+
} : {
|
|
117
|
+
key: TKey;
|
|
118
|
+
/**
|
|
119
|
+
* Match a single indexed scalar value, or provide a scalar array to match
|
|
120
|
+
* any listed value for the same attribute.
|
|
121
|
+
*/
|
|
122
|
+
value?: AttributeFilterScalarValue | AttributeFilterScalarValue[];
|
|
123
|
+
gt?: AttributeRangeValue<TKey>;
|
|
124
|
+
lt?: AttributeRangeValue<TKey>;
|
|
125
|
+
gte?: AttributeRangeValue<TKey>;
|
|
126
|
+
lte?: AttributeRangeValue<TKey>;
|
|
127
|
+
};
|
|
128
|
+
export type AttributeFilterList<TAttributeKeys extends readonly AttributeFilterKey[]> = {
|
|
129
|
+
readonly [TIndex in keyof TAttributeKeys]: AttributeFilter<TAttributeKeys[TIndex]>;
|
|
130
|
+
};
|
|
131
|
+
export type TypedListFilter<TAttributeKeys extends readonly AttributeFilterKey[]> = Omit<ListFilter, 'attributes'> & {
|
|
132
|
+
attributes?: AttributeFilterList<TAttributeKeys>;
|
|
133
|
+
};
|
|
134
|
+
/**
|
|
135
|
+
* Generic paginated response envelope returned by list operations such as
|
|
136
|
+
* {@link Engine.list} and `engine.listSchedules`. `total` is the full count
|
|
137
|
+
* matching the filter; `items` is the current page slice. `items.length` is
|
|
138
|
+
* bounded by `limit`; the consumer reaches the end of the result set when
|
|
139
|
+
* `offset + items.length >= total`.
|
|
140
|
+
*/
|
|
141
|
+
export interface PaginatedResult<T> {
|
|
142
|
+
items: T[];
|
|
143
|
+
total: number;
|
|
144
|
+
offset: number;
|
|
145
|
+
limit: number;
|
|
146
|
+
}
|
|
File without changes
|