@temelj/workflow 0.0.0-alpha.3 → 0.0.0-alpha.4
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 +394 -2
- package/dist/attributes.d.mts +11 -9
- package/dist/attributes.mjs +23 -5
- package/dist/bundle.d.mts +5 -23
- package/dist/bundle.mjs +2 -18
- package/dist/client/create.d.mts +26 -23
- package/dist/client/create.mjs +26 -32
- package/dist/client/facades.d.mts +12 -18
- package/dist/client/facades.mjs +102 -93
- package/dist/client/mod.mjs +1 -2
- package/dist/client/run-handle.d.mts +17 -54
- package/dist/client/run-handle.mjs +35 -105
- package/dist/client/worker-options.d.mts +8 -8
- package/dist/client/worker-options.mjs +11 -11
- package/dist/cloudflare/cloudflare.d.mts +4 -5
- package/dist/cloudflare/codec.d.mts +28 -13
- package/dist/cloudflare/codec.mjs +40 -17
- package/dist/cloudflare/entrypoint.d.mts +3 -4
- package/dist/cloudflare/entrypoint.mjs +4 -3
- package/dist/cloudflare/execution.d.mts +3 -4
- package/dist/cloudflare/execution.mjs +20 -13
- package/dist/cloudflare/host.d.mts +6 -7
- package/dist/cloudflare/host.mjs +7 -6
- package/dist/cloudflare/mod.d.mts +4 -4
- package/dist/cloudflare/mod.mjs +2 -2
- package/dist/cloudflare/name.d.mts +3 -4
- package/dist/cloudflare/name.mjs +3 -3
- package/dist/cloudflare/registry.d.mts +3 -23
- package/dist/cloudflare/registry.mjs +2 -20
- package/dist/cloudflare/runtime.d.mts +11 -18
- package/dist/cloudflare/runtime.mjs +52 -73
- package/dist/cloudflare/step.d.mts +6 -6
- package/dist/cloudflare/step.mjs +69 -57
- package/dist/cloudflare/types.d.mts +17 -36
- package/dist/collection.d.mts +8 -11
- package/dist/collection.mjs +10 -14
- package/dist/compiled-function.d.mts +14 -19
- package/dist/compiled-function.mjs +12 -24
- package/dist/compiled.d.mts +4 -0
- package/dist/compiled.mjs +4 -0
- package/dist/compiler/ast.d.mts +26 -0
- package/dist/{vite → compiler}/ast.mjs +24 -16
- package/dist/{vite → compiler}/error.d.mts +4 -6
- package/dist/{vite → compiler}/error.mjs +14 -16
- package/dist/compiler/manifest.d.mts +6 -0
- package/dist/{vite → compiler}/manifest.mjs +9 -7
- package/dist/compiler/plugin.d.mts +7 -0
- package/dist/{vite → compiler}/plugin.mjs +45 -46
- package/dist/compiler/safety.d.mts +12 -0
- package/dist/{vite → compiler}/safety.mjs +5 -11
- package/dist/{vite → compiler}/source-edit.d.mts +3 -4
- package/dist/{vite → compiler}/source-edit.mjs +1 -1
- package/dist/{vite → compiler}/source-map.d.mts +4 -3
- package/dist/{vite → compiler}/source-map.mjs +3 -3
- package/dist/compiler/source.d.mts +7 -0
- package/dist/{vite → compiler}/source.mjs +1 -1
- package/dist/compiler/transform.d.mts +12 -0
- package/dist/{vite → compiler}/transform.mjs +37 -38
- package/dist/definition.d.mts +17 -25
- package/dist/definition.mjs +19 -35
- package/dist/engine/child-workflow.d.mts +5 -9
- package/dist/engine/child-workflow.mjs +46 -67
- package/dist/engine/command-identity.d.mts +5 -6
- package/dist/engine/command-identity.mjs +9 -5
- package/dist/engine/context.d.mts +17 -0
- package/dist/engine/create.d.mts +36 -94
- package/dist/engine/create.mjs +55 -260
- package/dist/engine/deterministic.d.mts +6 -11
- package/dist/engine/deterministic.mjs +47 -68
- package/dist/engine/durable-command.d.mts +5 -5
- package/dist/engine/durable-command.mjs +2 -2
- package/dist/engine/execution-service.d.mts +20 -24
- package/dist/engine/execution-service.mjs +54 -52
- package/dist/engine/hooks.d.mts +17 -39
- package/dist/engine/hooks.mjs +73 -94
- package/dist/engine/inspection.d.mts +23 -15
- package/dist/engine/inspection.mjs +55 -29
- package/dist/engine/lifecycle.d.mts +6 -12
- package/dist/engine/lifecycle.mjs +5 -5
- package/dist/engine/lock-replay.d.mts +8 -15
- package/dist/engine/lock-replay.mjs +12 -25
- package/dist/engine/lock.d.mts +10 -15
- package/dist/engine/lock.mjs +65 -51
- package/dist/engine/message.d.mts +14 -34
- package/dist/engine/message.mjs +94 -127
- package/dist/engine/observation.d.mts +9 -11
- package/dist/engine/observation.mjs +18 -27
- package/dist/engine/replay.d.mts +18 -19
- package/dist/engine/replay.mjs +32 -56
- package/dist/engine/resume.d.mts +16 -0
- package/dist/engine/resume.mjs +24 -0
- package/dist/engine/retry.d.mts +15 -19
- package/dist/engine/retry.mjs +17 -17
- package/dist/engine/run-data.d.mts +4 -8
- package/dist/engine/run-data.mjs +24 -22
- package/dist/engine/run-service.d.mts +24 -33
- package/dist/engine/run-service.mjs +125 -93
- package/dist/engine/run-utils.d.mts +11 -13
- package/dist/engine/run-utils.mjs +23 -46
- package/dist/engine/schedule.d.mts +8 -22
- package/dist/engine/schedule.mjs +37 -34
- package/dist/engine/serialization.d.mts +9 -6
- package/dist/engine/serialization.mjs +30 -21
- package/dist/engine/signals.d.mts +23 -0
- package/dist/engine/signals.mjs +41 -0
- package/dist/engine/start.d.mts +18 -0
- package/dist/engine/start.mjs +88 -0
- package/dist/engine/state.d.mts +37 -67
- package/dist/engine/state.mjs +119 -280
- package/dist/engine/step-api.d.mts +5 -8
- package/dist/engine/step-api.mjs +16 -16
- package/dist/engine/stream-reader.d.mts +12 -0
- package/dist/engine/stream-reader.mjs +154 -0
- package/dist/engine/stream.d.mts +9 -54
- package/dist/engine/stream.mjs +54 -196
- package/dist/engine/summary/recovery.d.mts +35 -0
- package/dist/engine/summary/recovery.mjs +363 -0
- package/dist/engine/summary/runs.d.mts +43 -0
- package/dist/engine/summary/runs.mjs +294 -0
- package/dist/engine/summary/step-attempts.d.mts +5 -10
- package/dist/engine/summary/step-attempts.mjs +157 -36
- package/dist/engine/summary/tally.d.mts +44 -0
- package/dist/engine/summary/tally.mjs +142 -0
- package/dist/engine/task.d.mts +4 -5
- package/dist/engine/task.mjs +40 -48
- package/dist/errors/base.d.mts +17 -77
- package/dist/errors/base.mjs +26 -327
- package/dist/errors/capability.d.mts +3 -6
- package/dist/errors/capability.mjs +4 -8
- package/dist/errors/codes.d.mts +116 -0
- package/dist/{types/error-code.mjs → errors/codes.mjs} +2 -17
- package/dist/errors/definition.d.mts +3 -17
- package/dist/errors/definition.mjs +5 -42
- package/dist/errors/failures.d.mts +17 -51
- package/dist/errors/failures.mjs +35 -102
- package/dist/errors/hook.d.mts +5 -9
- package/dist/errors/hook.mjs +4 -16
- package/dist/errors/implementation.d.mts +3 -6
- package/dist/errors/implementation.mjs +7 -12
- package/dist/errors/lock.d.mts +7 -20
- package/dist/errors/lock.mjs +8 -44
- package/dist/errors/message.d.mts +14 -59
- package/dist/errors/message.mjs +13 -39
- package/dist/errors/mod.d.mts +4 -5
- package/dist/errors/mod.mjs +5 -7
- package/dist/errors/records.d.mts +10 -4
- package/dist/errors/records.mjs +256 -256
- package/dist/errors/run.d.mts +27 -68
- package/dist/errors/run.mjs +31 -85
- package/dist/errors/schedule.d.mts +7 -18
- package/dist/errors/schedule.mjs +7 -39
- package/dist/errors/step.d.mts +12 -45
- package/dist/errors/step.mjs +13 -34
- package/dist/errors/stream.d.mts +8 -16
- package/dist/errors/stream.mjs +7 -41
- package/dist/esbuild.d.mts +6 -4
- package/dist/esbuild.mjs +2 -1
- package/dist/events/descriptors.d.mts +12 -241
- package/dist/events/descriptors.mjs +12 -5
- package/dist/history/projection.d.mts +4 -6
- package/dist/history/projection.mjs +22 -26
- package/dist/history/replay-projection.d.mts +44 -48
- package/dist/history/replay-projection.mjs +41 -50
- package/dist/history/{mod.d.mts → replay.d.mts} +16 -21
- package/dist/history/{mod.mjs → replay.mjs} +21 -25
- package/dist/history/sequencer.d.mts +10 -11
- package/dist/history/sequencer.mjs +11 -7
- package/dist/history/step-attempts.d.mts +4 -7
- package/dist/history/step-attempts.mjs +8 -9
- package/dist/history/timeline.d.mts +4 -13
- package/dist/history/timeline.mjs +46 -265
- package/dist/history/validator.d.mts +5 -7
- package/dist/history/validator.mjs +9 -24
- package/dist/hook-token.d.mts +7 -0
- package/dist/hook-token.mjs +32 -0
- package/dist/ids.d.mts +8 -0
- package/dist/ids.mjs +21 -0
- package/dist/message-options.d.mts +11 -5
- package/dist/message-options.mjs +9 -7
- package/dist/mod.d.mts +32 -36
- package/dist/mod.mjs +9 -13
- package/dist/otel/metrics.d.mts +31 -0
- package/dist/otel/metrics.mjs +60 -0
- package/dist/otel/mod.d.mts +3 -0
- package/dist/otel/mod.mjs +3 -0
- package/dist/otel/spans.d.mts +24 -0
- package/dist/otel/spans.mjs +218 -0
- package/dist/otel/support.d.mts +15 -8
- package/dist/otel/support.mjs +18 -40
- package/dist/{otel.d.mts → otel/telemetry.d.mts} +5 -6
- package/dist/otel/telemetry.mjs +305 -0
- package/dist/pagination.d.mts +6 -12
- package/dist/pagination.mjs +10 -14
- package/dist/registry.d.mts +8 -5
- package/dist/registry.mjs +19 -10
- package/dist/rolldown.d.mts +6 -4
- package/dist/rolldown.mjs +2 -1
- package/dist/rollup.d.mts +6 -4
- package/dist/rollup.mjs +2 -1
- package/dist/rspack.d.mts +6 -4
- package/dist/rspack.mjs +2 -1
- package/dist/run-status.d.mts +29 -0
- package/dist/run-status.mjs +42 -0
- package/dist/schema/common.d.mts +22 -0
- package/dist/schema/common.mjs +54 -0
- package/dist/schema/error.d.mts +17 -0
- package/dist/schema/error.mjs +39 -0
- package/dist/schema/events.d.mts +446 -0
- package/dist/schema/events.mjs +235 -0
- package/dist/schema/pagination.d.mts +5 -0
- package/dist/schema/pagination.mjs +11 -0
- package/dist/schema/persisted-value.d.mts +8 -0
- package/dist/schema/persisted-value.mjs +94 -0
- package/dist/schema/run.d.mts +51 -0
- package/dist/schema/run.mjs +88 -0
- package/dist/schema/store.d.mts +94 -0
- package/dist/schema/store.mjs +116 -0
- package/dist/step-definition.d.mts +4 -9
- package/dist/step-definition.mjs +2 -2
- package/dist/store/capabilities.d.mts +8 -9
- package/dist/store/capabilities.mjs +7 -7
- package/dist/store/cleanup.d.mts +9 -14
- package/dist/store/cleanup.mjs +86 -85
- package/dist/store/create.d.mts +28 -29
- package/dist/store/create.mjs +10 -11
- package/dist/store/events.d.mts +48 -0
- package/dist/store/events.mjs +263 -0
- package/dist/store/indexes.d.mts +25 -0
- package/dist/store/indexes.mjs +282 -0
- package/dist/store/instrumentation.d.mts +2 -3
- package/dist/store/instrumentation.mjs +30 -30
- package/dist/store/lock.d.mts +4 -5
- package/dist/store/lock.mjs +5 -7
- package/dist/store/materialization.d.mts +10 -17
- package/dist/store/materialization.mjs +39 -33
- package/dist/store/mod.d.mts +3 -3
- package/dist/store/mod.mjs +2 -2
- package/dist/store/query.d.mts +13 -17
- package/dist/store/query.mjs +13 -13
- package/dist/store/run.d.mts +25 -34
- package/dist/store/run.mjs +67 -108
- package/dist/store/schedule.d.mts +6 -8
- package/dist/store/schedule.mjs +11 -11
- package/dist/store/step-attempt.d.mts +9 -12
- package/dist/store/step-attempt.mjs +9 -9
- package/dist/store/storage-value.d.mts +3 -3
- package/dist/store/storage-value.mjs +17 -1
- package/dist/store/validation.d.mts +17 -20
- package/dist/store/validation.mjs +30 -33
- package/dist/store-keys.d.mts +35 -47
- package/dist/store-keys.mjs +9 -17
- package/dist/telemetry.d.mts +16 -16
- package/dist/telemetry.mjs +3 -3
- package/dist/temporal.d.mts +11 -16
- package/dist/temporal.mjs +8 -9
- package/dist/timer.d.mts +12 -10
- package/dist/timer.mjs +11 -3
- package/dist/types/cleanup.d.mts +13 -50
- package/dist/types/cleanup.mjs +1 -22
- package/dist/types/client.d.mts +101 -162
- package/dist/types/{vite.d.mts → compiler.d.mts} +17 -24
- package/dist/types/compiler.mjs +1 -0
- package/dist/types/definition.d.mts +22 -34
- package/dist/types/engine-options.d.mts +10 -17
- package/dist/types/engine.d.mts +15 -274
- package/dist/types/error.d.mts +15 -217
- package/dist/types/error.mjs +1 -48
- package/dist/types/events.d.mts +59 -2730
- package/dist/types/events.mjs +1 -283
- package/dist/types/hook.d.mts +27 -85
- package/dist/types/hook.mjs +1 -66
- package/dist/types/ids.d.mts +9 -0
- package/dist/types/ids.mjs +1 -0
- package/dist/types/lock.d.mts +8 -26
- package/dist/types/lock.mjs +1 -18
- package/dist/types/message.d.mts +29 -43
- package/dist/types/observation.d.mts +43 -58
- package/dist/types/pagination.d.mts +6 -22
- package/dist/types/pagination.mjs +1 -13
- package/dist/types/result.d.mts +11 -43
- package/dist/types/retry.d.mts +7 -14
- package/dist/types/run-list.d.mts +9 -11
- package/dist/types/run-options.d.mts +25 -32
- package/dist/types/run.d.mts +35 -315
- package/dist/types/run.mjs +1 -207
- package/dist/types/runtime.d.mts +33 -145
- package/dist/types/runtime.mjs +1 -21
- package/dist/types/schedule.d.mts +13 -72
- package/dist/types/schedule.mjs +1 -48
- package/dist/types/step-attempts.d.mts +65 -261
- package/dist/types/step-attempts.mjs +1 -43
- package/dist/types/step.d.mts +66 -77
- package/dist/types/step.mjs +1 -5
- package/dist/types/store.d.mts +50 -182
- package/dist/types/stream.d.mts +19 -40
- package/dist/types/summary.d.mts +174 -278
- package/dist/types/telemetry.d.mts +23 -28
- package/dist/types/telemetry.mjs +1 -9
- package/dist/types/timeline.d.mts +46 -233
- package/dist/types/worker.d.mts +22 -29
- package/dist/values.d.mts +15 -0
- package/dist/values.mjs +57 -0
- package/dist/vite.d.mts +5 -6
- package/dist/vite.mjs +3 -4
- package/dist/webpack.d.mts +6 -4
- package/dist/webpack.mjs +2 -1
- package/dist/worker/error.d.mts +2 -9
- package/dist/worker/error.mjs +20 -32
- package/dist/worker/missing-implementation.d.mts +19 -0
- package/dist/worker/missing-implementation.mjs +62 -0
- package/dist/worker/worker.d.mts +18 -0
- package/dist/{worker.mjs → worker/worker.mjs} +64 -118
- package/package.json +28 -47
- package/dist/engine/execution-api.d.mts +0 -29
- package/dist/engine/execution-api.mjs +0 -33
- package/dist/engine/inspection-api.d.mts +0 -34
- package/dist/engine/inspection-api.mjs +0 -78
- package/dist/engine/mod.d.mts +0 -4
- package/dist/engine/mod.mjs +0 -2
- package/dist/engine/recovery.d.mts +0 -26
- package/dist/engine/recovery.mjs +0 -92
- package/dist/engine/retry-policy.d.mts +0 -4
- package/dist/engine/retry-policy.mjs +0 -4
- package/dist/engine/start-api.d.mts +0 -30
- package/dist/engine/start-api.mjs +0 -99
- package/dist/engine/summary/active-events.d.mts +0 -34
- package/dist/engine/summary/active-events.mjs +0 -69
- package/dist/engine/summary/child-workflow-runs.d.mts +0 -24
- package/dist/engine/summary/child-workflow-runs.mjs +0 -138
- package/dist/engine/summary/child-workflow-waits.d.mts +0 -21
- package/dist/engine/summary/child-workflow-waits.mjs +0 -67
- package/dist/engine/summary/recovery-child-workflow-waits.d.mts +0 -11
- package/dist/engine/summary/recovery-child-workflow-waits.mjs +0 -89
- package/dist/engine/summary/recovery-due-runs.d.mts +0 -16
- package/dist/engine/summary/recovery-due-runs.mjs +0 -52
- package/dist/engine/summary/recovery-failed-runs.d.mts +0 -14
- package/dist/engine/summary/recovery-failed-runs.mjs +0 -33
- package/dist/engine/summary/recovery-lease-runs.d.mts +0 -16
- package/dist/engine/summary/recovery-lease-runs.mjs +0 -69
- package/dist/engine/summary/recovery-locks.d.mts +0 -18
- package/dist/engine/summary/recovery-locks.mjs +0 -100
- package/dist/engine/summary/recovery-message-waits.d.mts +0 -11
- package/dist/engine/summary/recovery-message-waits.mjs +0 -74
- package/dist/engine/summary/recovery-retry-runs.d.mts +0 -17
- package/dist/engine/summary/recovery-retry-runs.mjs +0 -65
- package/dist/engine/summary/recovery-run-timestamps.d.mts +0 -13
- package/dist/engine/summary/recovery-run-timestamps.mjs +0 -18
- package/dist/engine/summary/recovery-runs.d.mts +0 -23
- package/dist/engine/summary/recovery-runs.mjs +0 -54
- package/dist/engine/summary/recovery-schedules.d.mts +0 -10
- package/dist/engine/summary/recovery-schedules.mjs +0 -46
- package/dist/engine/summary/recovery-sleep-waits.d.mts +0 -10
- package/dist/engine/summary/recovery-sleep-waits.mjs +0 -53
- package/dist/engine/summary/recovery-waits.d.mts +0 -21
- package/dist/engine/summary/recovery-waits.mjs +0 -29
- package/dist/engine/summary/run-availability.d.mts +0 -13
- package/dist/engine/summary/run-availability.mjs +0 -37
- package/dist/engine/summary/run-cleanup.d.mts +0 -14
- package/dist/engine/summary/run-cleanup.mjs +0 -44
- package/dist/engine/summary/run-failure.d.mts +0 -14
- package/dist/engine/summary/run-failure.mjs +0 -62
- package/dist/engine/summary/run-hooks.d.mts +0 -14
- package/dist/engine/summary/run-hooks.mjs +0 -63
- package/dist/engine/summary/run-lease.d.mts +0 -11
- package/dist/engine/summary/run-lease.mjs +0 -64
- package/dist/engine/summary/run-message-waits.d.mts +0 -15
- package/dist/engine/summary/run-message-waits.mjs +0 -62
- package/dist/engine/summary/run-metrics.d.mts +0 -31
- package/dist/engine/summary/run-metrics.mjs +0 -93
- package/dist/engine/summary/run-retry.d.mts +0 -9
- package/dist/engine/summary/run-retry.mjs +0 -69
- package/dist/engine/summary/run-sleeps.d.mts +0 -15
- package/dist/engine/summary/run-sleeps.mjs +0 -61
- package/dist/engine/summary/run-state.d.mts +0 -26
- package/dist/engine/summary/run-state.mjs +0 -48
- package/dist/engine/summary/run-status.d.mts +0 -16
- package/dist/engine/summary/run-status.mjs +0 -35
- package/dist/engine/summary/run-streams.d.mts +0 -14
- package/dist/engine/summary/run-streams.mjs +0 -46
- package/dist/engine/summary/run-transition.d.mts +0 -9
- package/dist/engine/summary/run-transition.mjs +0 -39
- package/dist/engine/summary/run-workflow.d.mts +0 -9
- package/dist/engine/summary/run-workflow.mjs +0 -47
- package/dist/engine/summary/step-attempt-active-child-workflows.d.mts +0 -13
- package/dist/engine/summary/step-attempt-active-child-workflows.mjs +0 -55
- package/dist/engine/summary/step-attempt-active-fields.d.mts +0 -23
- package/dist/engine/summary/step-attempt-active-fields.mjs +0 -14
- package/dist/engine/summary/step-attempt-active-message-waits.d.mts +0 -12
- package/dist/engine/summary/step-attempt-active-message-waits.mjs +0 -47
- package/dist/engine/summary/step-attempt-active-sleeps.d.mts +0 -19
- package/dist/engine/summary/step-attempt-active-sleeps.mjs +0 -44
- package/dist/engine/summary/step-attempt-buckets.d.mts +0 -22
- package/dist/engine/summary/step-attempt-buckets.mjs +0 -152
- package/dist/engine/summary/step-attempt-failure.d.mts +0 -12
- package/dist/engine/summary/step-attempt-failure.mjs +0 -61
- package/dist/engine/summary/step-attempt-lifecycle.d.mts +0 -13
- package/dist/engine/summary/step-attempt-lifecycle.mjs +0 -19
- package/dist/engine/summary.d.mts +0 -32
- package/dist/engine/summary.mjs +0 -37
- package/dist/errors/details.d.mts +0 -13
- package/dist/errors/details.mjs +0 -66
- package/dist/errors/record-view.d.mts +0 -11
- package/dist/errors/record-view.mjs +0 -24
- package/dist/errors/runtime.d.mts +0 -12
- package/dist/errors/runtime.mjs +0 -24
- package/dist/events/mod.d.mts +0 -3
- package/dist/events/mod.mjs +0 -2
- package/dist/history/attempt-key.d.mts +0 -6
- package/dist/history/attempt-key.mjs +0 -7
- package/dist/inspection/mod.d.mts +0 -5
- package/dist/inspection/mod.mjs +0 -3
- package/dist/otel.mjs +0 -590
- package/dist/runtime.d.mts +0 -35
- package/dist/runtime.mjs +0 -198
- package/dist/store/append-projection.d.mts +0 -15
- package/dist/store/append-projection.mjs +0 -26
- package/dist/store/compaction.d.mts +0 -5
- package/dist/store/compaction.mjs +0 -8
- package/dist/store/event-append-project.d.mts +0 -15
- package/dist/store/event-append-project.mjs +0 -77
- package/dist/store/event-append.d.mts +0 -37
- package/dist/store/event-append.mjs +0 -80
- package/dist/store/event-history.d.mts +0 -22
- package/dist/store/event-history.mjs +0 -75
- package/dist/store/event.d.mts +0 -10
- package/dist/store/event.mjs +0 -28
- package/dist/store/idempotency.d.mts +0 -10
- package/dist/store/idempotency.mjs +0 -167
- package/dist/store/message-index.d.mts +0 -21
- package/dist/store/message-index.mjs +0 -122
- package/dist/store/revision.d.mts +0 -4
- package/dist/store/revision.mjs +0 -7
- package/dist/store/schema.d.mts +0 -14
- package/dist/store/schema.mjs +0 -17
- package/dist/types/common.d.mts +0 -20
- package/dist/types/common.mjs +0 -16
- package/dist/types/error-code.d.mts +0 -256
- package/dist/types/message-id.d.mts +0 -7
- package/dist/types/message-id.mjs +0 -5
- package/dist/types/run-id.d.mts +0 -7
- package/dist/types/run-id.mjs +0 -5
- package/dist/types/step-id.d.mts +0 -7
- package/dist/types/step-id.mjs +0 -5
- package/dist/types/stream-id.d.mts +0 -7
- package/dist/types/stream-id.mjs +0 -5
- package/dist/types/worker-id.d.mts +0 -7
- package/dist/types/worker-id.mjs +0 -5
- package/dist/utility.d.mts +0 -49
- package/dist/utility.mjs +0 -122
- package/dist/vite/ast.d.mts +0 -23
- package/dist/vite/generated-name.d.mts +0 -7
- package/dist/vite/generated-name.mjs +0 -9
- package/dist/vite/manifest.d.mts +0 -7
- package/dist/vite/plugin.d.mts +0 -7
- package/dist/vite/safety.d.mts +0 -12
- package/dist/vite/source.d.mts +0 -7
- package/dist/vite/transform.d.mts +0 -7
- package/dist/webhook.d.mts +0 -16
- package/dist/webhook.mjs +0 -17
- package/dist/worker.d.mts +0 -19
- /package/dist/{types/vite.mjs → engine/context.mjs} +0 -0
package/dist/engine/state.mjs
CHANGED
|
@@ -1,13 +1,17 @@
|
|
|
1
|
+
import { applyAttributePatch } from "../attributes.mjs";
|
|
2
|
+
import { WorkflowErrorCode } from "../errors/codes.mjs";
|
|
1
3
|
import { WorkflowStateError } from "../errors/base.mjs";
|
|
2
4
|
import { WorkflowRunCanceledError, WorkflowRunCancellationError, WorkflowRunDeadlineExceededError, WorkflowRunMismatchError } from "../errors/run.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import "
|
|
5
|
+
import { History } from "../history/replay.mjs";
|
|
6
|
+
import { isPositiveSafeInteger } from "../values.mjs";
|
|
7
|
+
import { CLEARED_LEASE, CLEARED_RETRY, UNFINISHED } from "../run-status.mjs";
|
|
8
|
+
import { getRequiredRun } from "../store/query.mjs";
|
|
6
9
|
import { serializeError } from "./serialization.mjs";
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
10
|
+
import { enforceEventHistoryNextLimit } from "./retry.mjs";
|
|
11
|
+
import { StaleExecutionError } from "./signals.mjs";
|
|
9
12
|
import { readRunResult } from "./run-utils.mjs";
|
|
10
13
|
//#region src/engine/state.ts
|
|
14
|
+
const MAX_RUN_UPDATE_ATTEMPTS = 16;
|
|
11
15
|
function requireDefinitionMatchesRun(definition, run) {
|
|
12
16
|
if (definition.name !== run.workflowName) WorkflowRunMismatchError.mismatch({
|
|
13
17
|
runId: run.id,
|
|
@@ -24,23 +28,27 @@ async function appendEventIfCurrentExecution(store, history, event, executionOwn
|
|
|
24
28
|
let appendedEvents;
|
|
25
29
|
await history.append(async () => {
|
|
26
30
|
beforeAppend?.();
|
|
27
|
-
|
|
31
|
+
enforceEventHistoryNextLimit(history.events, limits);
|
|
28
32
|
for (let attempt = 0; attempt < 16; attempt++) {
|
|
29
33
|
const current = await store.getRun(executionOwner.id);
|
|
30
|
-
if (current === void 0 || !isCurrentExecutionOwner(current, executionOwner))
|
|
34
|
+
if (current === void 0 || !isCurrentExecutionOwner(current, executionOwner)) StaleExecutionError.stale(executionOwner.id);
|
|
31
35
|
const events = await store.appendEventIfRunCurrent(current, event);
|
|
32
36
|
if (events !== void 0) {
|
|
33
37
|
appendedEvents = events;
|
|
34
38
|
return events;
|
|
35
39
|
}
|
|
36
40
|
}
|
|
37
|
-
|
|
41
|
+
StaleExecutionError.stale(executionOwner.id);
|
|
38
42
|
});
|
|
39
43
|
if (appendedEvents !== void 0) afterAppend?.(event, appendedEvents);
|
|
40
44
|
}
|
|
41
|
-
async function requireCurrentExecutionOwner(store,
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
async function requireCurrentExecutionOwner(store, executionOwner) {
|
|
46
|
+
if (await currentExecution(store, executionOwner) === void 0) StaleExecutionError.stale(executionOwner.id);
|
|
47
|
+
}
|
|
48
|
+
/** The stored run, while `executionOwner` still holds its lease; otherwise `undefined`. */
|
|
49
|
+
async function currentExecution(store, executionOwner) {
|
|
50
|
+
const current = await store.getRun(executionOwner.id);
|
|
51
|
+
return current !== void 0 && isCurrentExecutionOwner(current, executionOwner) ? current : void 0;
|
|
44
52
|
}
|
|
45
53
|
async function patchRun(store, current, patch) {
|
|
46
54
|
const next = {
|
|
@@ -56,266 +64,155 @@ async function patchRunIfCurrent(store, current, patch) {
|
|
|
56
64
|
});
|
|
57
65
|
}
|
|
58
66
|
async function updateRunMetadataIfCurrent(store, runId, metadata, timestamp) {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
});
|
|
64
|
-
if (updated !== void 0) return updated;
|
|
65
|
-
}
|
|
66
|
-
WorkflowStateError.failedRunMetadataUpdate(runId);
|
|
67
|
+
return await patchRunWithRetry(store, runId, () => ({
|
|
68
|
+
metadata,
|
|
69
|
+
updatedAt: timestamp
|
|
70
|
+
}), `Failed to update workflow run metadata for run ${runId}`, WorkflowErrorCode.STATE_RUN_METADATA_UPDATE_FAILED);
|
|
67
71
|
}
|
|
68
72
|
async function setRunAttributesIfCurrent(store, runId, attributes, timestamp) {
|
|
73
|
+
return await patchRunWithRetry(store, runId, (current) => attributesPatch(current, attributes, timestamp), `Failed to update workflow run attributes for run ${runId}`, WorkflowErrorCode.STATE_RUN_ATTRIBUTES_UPDATE_FAILED);
|
|
74
|
+
}
|
|
75
|
+
/** Patches a run, retrying when another writer updates the run first. */
|
|
76
|
+
async function patchRunWithRetry(store, runId, patch, failureMessage, failureCode) {
|
|
69
77
|
for (let attempt = 0; attempt < 16; attempt++) {
|
|
70
78
|
const current = await getRequiredRun(store, runId);
|
|
71
|
-
const updated = await patchRunIfCurrent(store, current,
|
|
72
|
-
attributes: applyWorkflowAttributePatch(current.attributes, attributes),
|
|
73
|
-
updatedAt: timestamp
|
|
74
|
-
});
|
|
79
|
+
const updated = await patchRunIfCurrent(store, current, patch(current));
|
|
75
80
|
if (updated !== void 0) return updated;
|
|
76
81
|
}
|
|
77
|
-
WorkflowStateError
|
|
82
|
+
throw new WorkflowStateError(failureMessage, {
|
|
83
|
+
code: failureCode,
|
|
84
|
+
details: { runId }
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
function attributesPatch(current, attributes, timestamp) {
|
|
88
|
+
return {
|
|
89
|
+
attributes: applyAttributePatch(current.attributes, attributes),
|
|
90
|
+
updatedAt: timestamp
|
|
91
|
+
};
|
|
78
92
|
}
|
|
79
93
|
async function patchCurrentExecutionRun(store, executionOwner, patch) {
|
|
80
|
-
const current = await store
|
|
81
|
-
if (current === void 0
|
|
94
|
+
const current = await currentExecution(store, executionOwner);
|
|
95
|
+
if (current === void 0) return;
|
|
82
96
|
return await patchRunIfCurrent(store, current, patch);
|
|
83
97
|
}
|
|
84
98
|
async function patchCurrentExecutionRunAttributes(store, executionOwner, attributes, timestamp) {
|
|
85
|
-
const current = await store
|
|
86
|
-
if (current === void 0
|
|
87
|
-
return await patchRunIfCurrent(store, current,
|
|
88
|
-
attributes: applyWorkflowAttributePatch(current.attributes, attributes),
|
|
89
|
-
updatedAt: timestamp
|
|
90
|
-
});
|
|
99
|
+
const current = await currentExecution(store, executionOwner);
|
|
100
|
+
if (current === void 0) return;
|
|
101
|
+
return await patchRunIfCurrent(store, current, attributesPatch(current, attributes, timestamp));
|
|
91
102
|
}
|
|
92
|
-
|
|
103
|
+
/** The run with the transition stamped on it; every transition starts here. */
|
|
104
|
+
function moved(run, timestamp, reason) {
|
|
93
105
|
return {
|
|
94
106
|
...run,
|
|
95
|
-
status: "waiting",
|
|
96
|
-
error,
|
|
97
107
|
updatedAt: timestamp,
|
|
98
108
|
lastTransitionAt: timestamp,
|
|
99
|
-
lastTransitionReason:
|
|
100
|
-
availableAt,
|
|
101
|
-
retryAt: availableAt,
|
|
102
|
-
retryReason: "missing_implementation",
|
|
103
|
-
retryAttempt,
|
|
104
|
-
retryStepId: void 0,
|
|
105
|
-
retryStepName: void 0,
|
|
106
|
-
workerId: void 0,
|
|
107
|
-
leaseExpiresAt: void 0,
|
|
108
|
-
deadlineAt: run.deadlineAt,
|
|
109
|
-
output: void 0,
|
|
110
|
-
finishedAt: void 0
|
|
109
|
+
lastTransitionReason: reason
|
|
111
110
|
};
|
|
112
111
|
}
|
|
113
|
-
|
|
112
|
+
/** A terminal run: no lease, no retry, nothing left to schedule. */
|
|
113
|
+
function finished(run, timestamp, status, reason, result) {
|
|
114
114
|
return {
|
|
115
|
-
...run,
|
|
116
|
-
status
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
lastTransitionAt: timestamp,
|
|
120
|
-
lastTransitionReason,
|
|
115
|
+
...moved(run, timestamp, reason),
|
|
116
|
+
status,
|
|
117
|
+
output: result.output,
|
|
118
|
+
error: result.error,
|
|
121
119
|
finishedAt: timestamp,
|
|
122
|
-
output: void 0,
|
|
123
120
|
availableAt: void 0,
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
retryAttempt: void 0,
|
|
127
|
-
retryStepId: void 0,
|
|
128
|
-
retryStepName: void 0,
|
|
129
|
-
workerId: void 0,
|
|
130
|
-
leaseExpiresAt: void 0,
|
|
131
|
-
deadlineAt: deadlineAt ?? run.deadlineAt
|
|
121
|
+
...CLEARED_LEASE,
|
|
122
|
+
...CLEARED_RETRY
|
|
132
123
|
};
|
|
133
124
|
}
|
|
134
125
|
function transitionRunToRunning(run, timestamp, attempts) {
|
|
135
126
|
return {
|
|
136
|
-
...run,
|
|
127
|
+
...moved(run, timestamp, "started"),
|
|
128
|
+
...UNFINISHED,
|
|
129
|
+
...CLEARED_RETRY,
|
|
137
130
|
status: "running",
|
|
138
131
|
attempts,
|
|
139
|
-
updatedAt: timestamp,
|
|
140
|
-
lastTransitionAt: timestamp,
|
|
141
|
-
lastTransitionReason: "started",
|
|
142
132
|
startedAt: run.startedAt ?? timestamp,
|
|
143
|
-
availableAt: void 0
|
|
144
|
-
error: void 0,
|
|
145
|
-
output: void 0,
|
|
146
|
-
finishedAt: void 0,
|
|
147
|
-
retryAt: void 0,
|
|
148
|
-
retryReason: void 0,
|
|
149
|
-
retryAttempt: void 0,
|
|
150
|
-
retryStepId: void 0,
|
|
151
|
-
retryStepName: void 0
|
|
133
|
+
availableAt: void 0
|
|
152
134
|
};
|
|
153
135
|
}
|
|
154
136
|
function transitionRunToCompleted(run, output, timestamp) {
|
|
137
|
+
return finished(run, timestamp, "completed", "completed", { output });
|
|
138
|
+
}
|
|
139
|
+
function transitionRunToFailed(run, error, timestamp, reason, deadlineAt) {
|
|
155
140
|
return {
|
|
156
|
-
...run,
|
|
157
|
-
|
|
158
|
-
...output === void 0 ? { output: void 0 } : { output },
|
|
159
|
-
error: void 0,
|
|
160
|
-
updatedAt: timestamp,
|
|
161
|
-
lastTransitionAt: timestamp,
|
|
162
|
-
lastTransitionReason: "completed",
|
|
163
|
-
finishedAt: timestamp,
|
|
164
|
-
availableAt: void 0,
|
|
165
|
-
workerId: void 0,
|
|
166
|
-
leaseExpiresAt: void 0,
|
|
167
|
-
retryAt: void 0,
|
|
168
|
-
retryReason: void 0,
|
|
169
|
-
retryAttempt: void 0,
|
|
170
|
-
retryStepId: void 0,
|
|
171
|
-
retryStepName: void 0
|
|
141
|
+
...finished(run, timestamp, "failed", reason, { error }),
|
|
142
|
+
deadlineAt: deadlineAt ?? run.deadlineAt
|
|
172
143
|
};
|
|
173
144
|
}
|
|
174
|
-
function
|
|
145
|
+
function transitionRunToCanceled(run, error, timestamp) {
|
|
146
|
+
return finished(run, timestamp, "canceled", "canceled", { error });
|
|
147
|
+
}
|
|
148
|
+
function transitionRunToWaiting(run, timestamp, availableAt) {
|
|
175
149
|
return {
|
|
176
|
-
...run,
|
|
150
|
+
...moved(run, timestamp, "waiting"),
|
|
151
|
+
...UNFINISHED,
|
|
152
|
+
...CLEARED_LEASE,
|
|
177
153
|
status: "waiting",
|
|
178
|
-
availableAt
|
|
179
|
-
|
|
180
|
-
|
|
154
|
+
availableAt
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/** Waits after an execution suspended, optionally to retry a failed step or workflow. */
|
|
158
|
+
function transitionRunToExecutionWait(run, timestamp, availableAt, options = {}) {
|
|
159
|
+
return {
|
|
160
|
+
...transitionRunToWaiting(run, timestamp, availableAt),
|
|
181
161
|
lastTransitionReason: options.retryReason === void 0 ? "waiting" : "retry",
|
|
182
|
-
workerId: void 0,
|
|
183
|
-
leaseExpiresAt: void 0,
|
|
184
162
|
retryAt: options.retryAt,
|
|
185
163
|
retryReason: options.retryReason,
|
|
186
164
|
retryAttempt: options.retryAttempt,
|
|
187
165
|
retryStepId: options.retryStepId,
|
|
188
166
|
retryStepName: options.retryStepName,
|
|
189
|
-
error: options.error
|
|
190
|
-
output: void 0,
|
|
191
|
-
finishedAt: void 0
|
|
167
|
+
error: options.error
|
|
192
168
|
};
|
|
193
169
|
}
|
|
194
|
-
function
|
|
170
|
+
function transitionRunToMissingImplementationWait(run, error, timestamp, availableAt, retryAttempt) {
|
|
195
171
|
return {
|
|
196
|
-
...run,
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
workerId: void 0,
|
|
204
|
-
leaseExpiresAt: void 0,
|
|
205
|
-
error: void 0,
|
|
206
|
-
output: void 0,
|
|
207
|
-
finishedAt: void 0
|
|
172
|
+
...transitionRunToWaiting(run, timestamp, availableAt),
|
|
173
|
+
...CLEARED_RETRY,
|
|
174
|
+
lastTransitionReason: "missing_implementation",
|
|
175
|
+
retryAt: availableAt,
|
|
176
|
+
retryReason: "missing_implementation",
|
|
177
|
+
retryAttempt,
|
|
178
|
+
error
|
|
208
179
|
};
|
|
209
180
|
}
|
|
210
|
-
function
|
|
181
|
+
function transitionRunAfterStaleLeaseRelease(run, timestamp, availableAt) {
|
|
211
182
|
return {
|
|
212
|
-
...run,
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
lastTransitionAt: timestamp,
|
|
216
|
-
lastTransitionReason: "rescheduled",
|
|
217
|
-
deadlineAt: run.deadlineAt,
|
|
218
|
-
leaseExpiresAt: void 0,
|
|
219
|
-
workerId: void 0,
|
|
220
|
-
retryAt: run.retryReason === void 0 ? void 0 : availableAt,
|
|
221
|
-
retryReason: run.retryReason,
|
|
222
|
-
retryAttempt: run.retryAttempt,
|
|
223
|
-
retryStepId: run.retryStepId,
|
|
224
|
-
retryStepName: run.retryStepName,
|
|
225
|
-
error: void 0,
|
|
226
|
-
output: void 0,
|
|
227
|
-
finishedAt: void 0
|
|
183
|
+
...transitionRunToWaiting(run, timestamp, availableAt),
|
|
184
|
+
...CLEARED_RETRY,
|
|
185
|
+
lastTransitionReason: "lease_released"
|
|
228
186
|
};
|
|
229
187
|
}
|
|
230
|
-
|
|
188
|
+
/** Moves the run's next attempt to `availableAt`, keeping its status and retry details. */
|
|
189
|
+
function transitionRunToRescheduled(run, timestamp, availableAt) {
|
|
231
190
|
return {
|
|
232
|
-
...
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
retryStepId: void 0,
|
|
238
|
-
retryStepName: void 0,
|
|
239
|
-
deadlineAt: run.deadlineAt,
|
|
240
|
-
updatedAt: timestamp,
|
|
241
|
-
lastTransitionAt: timestamp
|
|
191
|
+
...moved(run, timestamp, "rescheduled"),
|
|
192
|
+
...UNFINISHED,
|
|
193
|
+
...CLEARED_LEASE,
|
|
194
|
+
availableAt,
|
|
195
|
+
retryAt: run.retryReason === void 0 ? void 0 : availableAt
|
|
242
196
|
};
|
|
243
197
|
}
|
|
244
198
|
function transitionRunToManualRetry(run, timestamp, availableAt, retryAttempt) {
|
|
245
199
|
return {
|
|
246
|
-
...run,
|
|
200
|
+
...moved(run, timestamp, "manual_retry"),
|
|
201
|
+
...UNFINISHED,
|
|
202
|
+
...CLEARED_LEASE,
|
|
247
203
|
status: "pending",
|
|
248
204
|
availableAt,
|
|
249
|
-
updatedAt: timestamp,
|
|
250
|
-
lastTransitionAt: timestamp,
|
|
251
|
-
lastTransitionReason: "manual_retry",
|
|
252
|
-
deadlineAt: run.deadlineAt,
|
|
253
|
-
workerId: void 0,
|
|
254
|
-
leaseExpiresAt: void 0,
|
|
255
205
|
retryAt: availableAt,
|
|
256
206
|
retryReason: run.retryReason ?? "workflow",
|
|
257
|
-
retryAttempt
|
|
258
|
-
retryStepId: run.retryStepId,
|
|
259
|
-
retryStepName: run.retryStepName,
|
|
260
|
-
error: void 0,
|
|
261
|
-
output: void 0,
|
|
262
|
-
finishedAt: void 0
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
function transitionRunToPermanentFailure(run, error, timestamp) {
|
|
266
|
-
return {
|
|
267
|
-
...run,
|
|
268
|
-
status: "failed",
|
|
269
|
-
error,
|
|
270
|
-
output: void 0,
|
|
271
|
-
availableAt: void 0,
|
|
272
|
-
updatedAt: timestamp,
|
|
273
|
-
lastTransitionAt: timestamp,
|
|
274
|
-
lastTransitionReason: "permanent_failure",
|
|
275
|
-
deadlineAt: run.deadlineAt,
|
|
276
|
-
workerId: void 0,
|
|
277
|
-
leaseExpiresAt: void 0,
|
|
278
|
-
retryAt: void 0,
|
|
279
|
-
retryReason: void 0,
|
|
280
|
-
retryAttempt: void 0,
|
|
281
|
-
retryStepId: void 0,
|
|
282
|
-
retryStepName: void 0,
|
|
283
|
-
finishedAt: timestamp
|
|
284
|
-
};
|
|
285
|
-
}
|
|
286
|
-
function transitionRunToCanceled(run, error, timestamp) {
|
|
287
|
-
return {
|
|
288
|
-
...run,
|
|
289
|
-
status: "canceled",
|
|
290
|
-
error,
|
|
291
|
-
updatedAt: timestamp,
|
|
292
|
-
lastTransitionAt: timestamp,
|
|
293
|
-
lastTransitionReason: "canceled",
|
|
294
|
-
finishedAt: timestamp,
|
|
295
|
-
availableAt: void 0,
|
|
296
|
-
output: void 0,
|
|
297
|
-
workerId: void 0,
|
|
298
|
-
leaseExpiresAt: void 0,
|
|
299
|
-
retryAt: void 0,
|
|
300
|
-
retryReason: void 0,
|
|
301
|
-
retryAttempt: void 0,
|
|
302
|
-
retryStepId: void 0,
|
|
303
|
-
retryStepName: void 0
|
|
207
|
+
retryAttempt
|
|
304
208
|
};
|
|
305
209
|
}
|
|
306
210
|
function transitionRunAfterParentWake(run, timestamp) {
|
|
307
211
|
return {
|
|
308
|
-
...run,
|
|
212
|
+
...moved(run, timestamp, "waiting"),
|
|
213
|
+
...UNFINISHED,
|
|
309
214
|
availableAt: timestamp,
|
|
310
|
-
|
|
311
|
-
lastTransitionAt: timestamp,
|
|
312
|
-
lastTransitionReason: "waiting",
|
|
313
|
-
deadlineAt: run.deadlineAt,
|
|
314
|
-
retryAt: run.retryAt,
|
|
315
|
-
startedAt: run.startedAt ?? timestamp,
|
|
316
|
-
error: void 0,
|
|
317
|
-
output: void 0,
|
|
318
|
-
finishedAt: void 0
|
|
215
|
+
startedAt: run.startedAt ?? timestamp
|
|
319
216
|
};
|
|
320
217
|
}
|
|
321
218
|
function isCurrentExecutionOwner(current, execution) {
|
|
@@ -325,7 +222,7 @@ async function cancelRunWithChildren(store, runId, canceledAt) {
|
|
|
325
222
|
const run = await getRequiredRun(store, runId);
|
|
326
223
|
if (run.status === "completed" || run.status === "failed") WorkflowRunCancellationError.cannotCancel(runId, run.status);
|
|
327
224
|
if (run.status === "canceled") return run;
|
|
328
|
-
const canceledRun = await patchRunIfCurrent(store, run, transitionRunToCanceled(run, serializeError(WorkflowRunCanceledError
|
|
225
|
+
const canceledRun = await patchRunIfCurrent(store, run, transitionRunToCanceled(run, serializeError(new WorkflowRunCanceledError(runId)), canceledAt));
|
|
329
226
|
if (canceledRun === void 0) {
|
|
330
227
|
const latest = await getRequiredRun(store, runId);
|
|
331
228
|
if (latest.status === "completed" || latest.status === "failed") WorkflowRunCancellationError.cannotCancel(runId, latest.status);
|
|
@@ -334,7 +231,7 @@ async function cancelRunWithChildren(store, runId, canceledAt) {
|
|
|
334
231
|
}
|
|
335
232
|
await releaseLocksForRun(store, run.id, canceledAt);
|
|
336
233
|
await cancelActiveChildRuns(store, run.id, canceledAt);
|
|
337
|
-
await
|
|
234
|
+
await wakeParentRun(store, canceledRun, canceledAt);
|
|
338
235
|
return canceledRun;
|
|
339
236
|
}
|
|
340
237
|
async function cancelActiveChildRuns(store, parentRunId, canceledAt) {
|
|
@@ -352,23 +249,14 @@ async function cancelActiveChildRuns(store, parentRunId, canceledAt) {
|
|
|
352
249
|
await cancelRunWithChildren(store, child.id, canceledAt);
|
|
353
250
|
}
|
|
354
251
|
}
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
const parentRun = await store.getRun(childRun.parentRunId);
|
|
358
|
-
if (parentRun === void 0 || parentRun.status !== "waiting") return;
|
|
359
|
-
if (!await parentHasActiveChildWorkflowAttemptForRun(store, parentRun.id, childRun)) return;
|
|
360
|
-
const wakeAt = timestamp;
|
|
361
|
-
if (parentRun.availableAt !== void 0 && Temporal.Instant.compare(parentRun.availableAt, wakeAt) <= 0) return;
|
|
362
|
-
await patchRun(store, parentRun, transitionRunAfterParentWake(parentRun, timestamp));
|
|
363
|
-
}
|
|
364
|
-
async function wakeParentRunForWaitingChild(store, childRun, availableAt) {
|
|
252
|
+
/** Makes a waiting parent run available by `at` when one of its child workflow steps changes. */
|
|
253
|
+
async function wakeParentRun(store, childRun, at) {
|
|
365
254
|
if (childRun.parentRunId === void 0) return;
|
|
366
255
|
const parentRun = await store.getRun(childRun.parentRunId);
|
|
367
256
|
if (parentRun === void 0 || parentRun.status !== "waiting") return;
|
|
368
257
|
if (!await parentHasActiveChildWorkflowAttemptForRun(store, parentRun.id, childRun)) return;
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
await patchRun(store, parentRun, transitionRunAfterParentWake(parentRun, availableAt));
|
|
258
|
+
if (parentRun.availableAt !== void 0 && Temporal.Instant.compare(parentRun.availableAt, at) <= 0) return;
|
|
259
|
+
await patchRun(store, parentRun, transitionRunAfterParentWake(parentRun, at));
|
|
372
260
|
}
|
|
373
261
|
async function parentHasActiveChildWorkflowAttemptForRun(store, parentRunId, childRun) {
|
|
374
262
|
if (childRun.parentRunId !== parentRunId) return false;
|
|
@@ -383,26 +271,26 @@ async function parentHasActiveChildWorkflowAttemptForRun(store, parentRunId, chi
|
|
|
383
271
|
async function parentHasActiveChildWorkflowEventForAttempt(store, parentRunId, attempt) {
|
|
384
272
|
if (attempt.childRunId === void 0) return false;
|
|
385
273
|
const events = await store.getEvents(parentRunId);
|
|
386
|
-
const lifecycle = new
|
|
274
|
+
const lifecycle = new History(events).childWorkflowLifecycleForAttempt(attempt);
|
|
387
275
|
if (lifecycle.started === void 0) return false;
|
|
388
276
|
if (!isPositiveSafeInteger(lifecycle.started.attempt)) return false;
|
|
389
277
|
return !lifecycle.hasTerminalAfterStarted;
|
|
390
278
|
}
|
|
391
|
-
async function failRunForDeadline(store, run, deadlineAt, failedAt, executionOwner) {
|
|
392
|
-
const serialized = serializeError(WorkflowRunDeadlineExceededError
|
|
279
|
+
async function failRunForDeadline(store, definition, run, deadlineAt, failedAt, executionOwner) {
|
|
280
|
+
const serialized = serializeError(new WorkflowRunDeadlineExceededError(run.id, deadlineAt));
|
|
393
281
|
if (executionOwner !== void 0) {
|
|
394
282
|
const current = await store.getRun(run.id);
|
|
395
|
-
if (current === void 0 || !isCurrentExecutionOwner(current, executionOwner)) return await readRunResult(store, run.id, failedAt);
|
|
283
|
+
if (current === void 0 || !isCurrentExecutionOwner(current, executionOwner)) return await readRunResult(store, definition, run.id, failedAt);
|
|
396
284
|
}
|
|
397
285
|
await cancelActiveChildRuns(store, run.id, failedAt);
|
|
398
286
|
const failedRun = executionOwner === void 0 ? await patchRun(store, run, transitionRunToFailed(run, serialized, failedAt, "deadline")) : await patchCurrentExecutionRun(store, executionOwner, transitionRunToFailed(executionOwner, serialized, failedAt, "deadline"));
|
|
399
|
-
if (failedRun === void 0) return await readRunResult(store, run.id, failedAt);
|
|
287
|
+
if (failedRun === void 0) return await readRunResult(store, definition, run.id, failedAt);
|
|
400
288
|
if (await store.appendEventIfRunCurrent(failedRun, {
|
|
401
289
|
kind: "workflow_failed",
|
|
402
290
|
timestamp: failedAt
|
|
403
|
-
}) === void 0) return await readRunResult(store, run.id, failedAt);
|
|
291
|
+
}) === void 0) return await readRunResult(store, definition, run.id, failedAt);
|
|
404
292
|
await releaseLocksForRun(store, run.id, failedAt);
|
|
405
|
-
await
|
|
293
|
+
await wakeParentRun(store, failedRun, failedAt);
|
|
406
294
|
return {
|
|
407
295
|
kind: "failed",
|
|
408
296
|
run: failedRun,
|
|
@@ -410,62 +298,13 @@ async function failRunForDeadline(store, run, deadlineAt, failedAt, executionOwn
|
|
|
410
298
|
};
|
|
411
299
|
}
|
|
412
300
|
async function releaseLocksForRun(store, runId, releasedAt) {
|
|
413
|
-
const timestamp = releasedAt;
|
|
414
301
|
const locks = await store.listLocks();
|
|
415
302
|
await Promise.all(locks.filter((lock) => lock.releasedAt === void 0 && lock.holderRunId === runId).map(async (lock) => {
|
|
416
303
|
await store.updateLockIfCurrent(lock, {
|
|
417
304
|
...lock,
|
|
418
|
-
releasedAt
|
|
305
|
+
releasedAt
|
|
419
306
|
});
|
|
420
307
|
}));
|
|
421
308
|
}
|
|
422
|
-
var WorkflowSuspended = class WorkflowSuspended extends Error {
|
|
423
|
-
availableAt;
|
|
424
|
-
retryAt;
|
|
425
|
-
retryReason;
|
|
426
|
-
retryAttempt;
|
|
427
|
-
retryStep;
|
|
428
|
-
constructor(availableAt, context) {
|
|
429
|
-
super(`Workflow suspended until ${availableAt.toString()}`);
|
|
430
|
-
this.name = "WorkflowSuspended";
|
|
431
|
-
this.availableAt = availableAt;
|
|
432
|
-
if (Error.captureStackTrace !== void 0) Error.captureStackTrace(this, context ?? this.constructor);
|
|
433
|
-
}
|
|
434
|
-
static until(availableAt) {
|
|
435
|
-
throw new WorkflowSuspended(availableAt, WorkflowSuspended.until);
|
|
436
|
-
}
|
|
437
|
-
static forStepRetry(retryAt, retryStep, retryAttempt) {
|
|
438
|
-
const suspended = new WorkflowSuspended(retryAt, WorkflowSuspended.forStepRetry);
|
|
439
|
-
Object.defineProperties(suspended, {
|
|
440
|
-
retryAt: {
|
|
441
|
-
value: retryAt,
|
|
442
|
-
enumerable: true
|
|
443
|
-
},
|
|
444
|
-
retryReason: {
|
|
445
|
-
value: "step",
|
|
446
|
-
enumerable: true
|
|
447
|
-
},
|
|
448
|
-
retryAttempt: {
|
|
449
|
-
value: retryAttempt,
|
|
450
|
-
enumerable: true
|
|
451
|
-
},
|
|
452
|
-
retryStep: {
|
|
453
|
-
value: retryStep,
|
|
454
|
-
enumerable: true
|
|
455
|
-
}
|
|
456
|
-
});
|
|
457
|
-
throw suspended;
|
|
458
|
-
}
|
|
459
|
-
};
|
|
460
|
-
var WorkflowStaleExecutionError = class WorkflowStaleExecutionError extends Error {
|
|
461
|
-
constructor(runId, context) {
|
|
462
|
-
super(`Workflow execution no longer owns run: ${runId}`);
|
|
463
|
-
this.name = "WorkflowStaleExecutionError";
|
|
464
|
-
if (Error.captureStackTrace !== void 0) Error.captureStackTrace(this, context ?? this.constructor);
|
|
465
|
-
}
|
|
466
|
-
static stale(runId) {
|
|
467
|
-
throw new WorkflowStaleExecutionError(runId, WorkflowStaleExecutionError.stale);
|
|
468
|
-
}
|
|
469
|
-
};
|
|
470
309
|
//#endregion
|
|
471
|
-
export {
|
|
310
|
+
export { MAX_RUN_UPDATE_ATTEMPTS, appendEventIfCurrentExecution, cancelRunWithChildren, failRunForDeadline, isCurrentExecutionOwner, patchCurrentExecutionRun, patchCurrentExecutionRunAttributes, patchRun, patchRunIfCurrent, releaseLocksForRun, requireCurrentExecutionOwner, requireDefinitionMatchesRun, setRunAttributesIfCurrent, transitionRunAfterStaleLeaseRelease, transitionRunToCanceled, transitionRunToCompleted, transitionRunToExecutionWait, transitionRunToFailed, transitionRunToManualRetry, transitionRunToMissingImplementationWait, transitionRunToRescheduled, transitionRunToRunning, transitionRunToWaiting, updateRunMetadataIfCurrent, wakeParentRun };
|
|
@@ -1,9 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { WorkflowStepLockEngine } from "./lock.mjs";
|
|
1
|
+
import { DeterministicApi, StepApi } from "../types/step.mjs";
|
|
2
|
+
import { WorkflowEngine } from "./create.mjs";
|
|
3
|
+
import { ExecutionEnvironment } from "../types/engine.mjs";
|
|
5
4
|
//#region src/engine/step-api.d.ts
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
//#endregion
|
|
9
|
-
export { createStepApi };
|
|
5
|
+
export declare function createStepApi(environment: ExecutionEnvironment, engine: WorkflowEngine, executionSignal: AbortSignal, deterministic: DeterministicApi): StepApi;
|
|
6
|
+
//#endregion
|
package/dist/engine/step-api.mjs
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { createStepStreamApi } from "./stream.mjs";
|
|
2
|
+
import { createStepMessageApi } from "./message.mjs";
|
|
3
|
+
import { createStepHookApi } from "./hooks.mjs";
|
|
4
|
+
import { createStepLockApi } from "./lock.mjs";
|
|
5
|
+
import { createStepWorkflowApi } from "./child-workflow.mjs";
|
|
6
|
+
import { createRunDataApi } from "./run-data.mjs";
|
|
7
|
+
import { createStepTaskApi } from "./task.mjs";
|
|
8
8
|
//#region src/engine/step-api.ts
|
|
9
9
|
function createStepApi(environment, engine, executionSignal, deterministic) {
|
|
10
|
-
const task =
|
|
11
|
-
const runTask =
|
|
10
|
+
const task = createStepTaskApi(environment, executionSignal);
|
|
11
|
+
const runTask = (config, callback) => task.run(config, callback);
|
|
12
12
|
return {
|
|
13
13
|
log: environment.logger,
|
|
14
|
-
task,
|
|
15
|
-
workflow:
|
|
16
|
-
message:
|
|
17
|
-
lock:
|
|
18
|
-
runData:
|
|
14
|
+
...task,
|
|
15
|
+
workflow: createStepWorkflowApi(environment, engine),
|
|
16
|
+
message: createStepMessageApi(environment),
|
|
17
|
+
lock: createStepLockApi(environment, engine, runTask),
|
|
18
|
+
runData: createRunDataApi(environment),
|
|
19
19
|
deterministic,
|
|
20
|
-
stream:
|
|
21
|
-
hook:
|
|
20
|
+
stream: createStepStreamApi(environment),
|
|
21
|
+
hook: createStepHookApi(environment)
|
|
22
22
|
};
|
|
23
23
|
}
|
|
24
24
|
//#endregion
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { RunId, StreamIdOrName } from "../types/ids.mjs";
|
|
2
|
+
import { FollowStreamOptions, ReadStreamOptions, StreamChunk, StreamInfo, StreamState, StreamUpdate, WaitStreamOptions } from "../types/stream.mjs";
|
|
3
|
+
import { EngineContext } from "./context.mjs";
|
|
4
|
+
import "temporal-polyfill/global";
|
|
5
|
+
//#region src/engine/stream-reader.d.ts
|
|
6
|
+
export declare function getStreamInfo(context: EngineContext, runId: RunId, streamIdOrName: StreamIdOrName): Promise<StreamInfo>;
|
|
7
|
+
export declare function readStream(context: EngineContext, runId: RunId, streamIdOrName: StreamIdOrName, readOptions?: ReadStreamOptions): Promise<StreamState>;
|
|
8
|
+
export declare function followStream(context: EngineContext, runId: RunId, streamIdOrName: StreamIdOrName, followOptions?: FollowStreamOptions): AsyncIterable<StreamUpdate>;
|
|
9
|
+
export declare function waitForStream(context: EngineContext, runId: RunId, streamIdOrName: StreamIdOrName, waitOptions?: WaitStreamOptions): Promise<StreamInfo | undefined>;
|
|
10
|
+
export declare function waitForStreamChunk(context: EngineContext, runId: RunId, streamIdOrName: StreamIdOrName, afterIndex: number, waitOptions?: WaitStreamOptions): Promise<StreamChunk | undefined>;
|
|
11
|
+
export declare function waitForStreamTerminal(context: EngineContext, runId: RunId, streamIdOrName: StreamIdOrName, waitOptions?: WaitStreamOptions): Promise<StreamInfo | undefined>;
|
|
12
|
+
//#endregion
|