@temelj/workflow 0.0.0-alpha.2 → 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 +127 -282
- 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,17 +28,27 @@ async function appendEventIfCurrentExecution(store, history, event, executionOwn
|
|
|
24
28
|
let appendedEvents;
|
|
25
29
|
await history.append(async () => {
|
|
26
30
|
beforeAppend?.();
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
enforceEventHistoryNextLimit(history.events, limits);
|
|
32
|
+
for (let attempt = 0; attempt < 16; attempt++) {
|
|
33
|
+
const current = await store.getRun(executionOwner.id);
|
|
34
|
+
if (current === void 0 || !isCurrentExecutionOwner(current, executionOwner)) StaleExecutionError.stale(executionOwner.id);
|
|
35
|
+
const events = await store.appendEventIfRunCurrent(current, event);
|
|
36
|
+
if (events !== void 0) {
|
|
37
|
+
appendedEvents = events;
|
|
38
|
+
return events;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
StaleExecutionError.stale(executionOwner.id);
|
|
32
42
|
});
|
|
33
43
|
if (appendedEvents !== void 0) afterAppend?.(event, appendedEvents);
|
|
34
44
|
}
|
|
35
|
-
async function requireCurrentExecutionOwner(store,
|
|
36
|
-
|
|
37
|
-
|
|
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;
|
|
38
52
|
}
|
|
39
53
|
async function patchRun(store, current, patch) {
|
|
40
54
|
const next = {
|
|
@@ -50,266 +64,155 @@ async function patchRunIfCurrent(store, current, patch) {
|
|
|
50
64
|
});
|
|
51
65
|
}
|
|
52
66
|
async function updateRunMetadataIfCurrent(store, runId, metadata, timestamp) {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
});
|
|
58
|
-
if (updated !== void 0) return updated;
|
|
59
|
-
}
|
|
60
|
-
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);
|
|
61
71
|
}
|
|
62
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) {
|
|
63
77
|
for (let attempt = 0; attempt < 16; attempt++) {
|
|
64
78
|
const current = await getRequiredRun(store, runId);
|
|
65
|
-
const updated = await patchRunIfCurrent(store, current,
|
|
66
|
-
attributes: applyWorkflowAttributePatch(current.attributes, attributes),
|
|
67
|
-
updatedAt: timestamp
|
|
68
|
-
});
|
|
79
|
+
const updated = await patchRunIfCurrent(store, current, patch(current));
|
|
69
80
|
if (updated !== void 0) return updated;
|
|
70
81
|
}
|
|
71
|
-
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
|
+
};
|
|
72
92
|
}
|
|
73
93
|
async function patchCurrentExecutionRun(store, executionOwner, patch) {
|
|
74
|
-
const current = await store
|
|
75
|
-
if (current === void 0
|
|
94
|
+
const current = await currentExecution(store, executionOwner);
|
|
95
|
+
if (current === void 0) return;
|
|
76
96
|
return await patchRunIfCurrent(store, current, patch);
|
|
77
97
|
}
|
|
78
98
|
async function patchCurrentExecutionRunAttributes(store, executionOwner, attributes, timestamp) {
|
|
79
|
-
const current = await store
|
|
80
|
-
if (current === void 0
|
|
81
|
-
return await patchRunIfCurrent(store, current,
|
|
82
|
-
attributes: applyWorkflowAttributePatch(current.attributes, attributes),
|
|
83
|
-
updatedAt: timestamp
|
|
84
|
-
});
|
|
99
|
+
const current = await currentExecution(store, executionOwner);
|
|
100
|
+
if (current === void 0) return;
|
|
101
|
+
return await patchRunIfCurrent(store, current, attributesPatch(current, attributes, timestamp));
|
|
85
102
|
}
|
|
86
|
-
|
|
103
|
+
/** The run with the transition stamped on it; every transition starts here. */
|
|
104
|
+
function moved(run, timestamp, reason) {
|
|
87
105
|
return {
|
|
88
106
|
...run,
|
|
89
|
-
status: "waiting",
|
|
90
|
-
error,
|
|
91
107
|
updatedAt: timestamp,
|
|
92
108
|
lastTransitionAt: timestamp,
|
|
93
|
-
lastTransitionReason:
|
|
94
|
-
availableAt,
|
|
95
|
-
retryAt: availableAt,
|
|
96
|
-
retryReason: "missing_implementation",
|
|
97
|
-
retryAttempt,
|
|
98
|
-
retryStepId: void 0,
|
|
99
|
-
retryStepName: void 0,
|
|
100
|
-
workerId: void 0,
|
|
101
|
-
leaseExpiresAt: void 0,
|
|
102
|
-
deadlineAt: run.deadlineAt,
|
|
103
|
-
output: void 0,
|
|
104
|
-
finishedAt: void 0
|
|
109
|
+
lastTransitionReason: reason
|
|
105
110
|
};
|
|
106
111
|
}
|
|
107
|
-
|
|
112
|
+
/** A terminal run: no lease, no retry, nothing left to schedule. */
|
|
113
|
+
function finished(run, timestamp, status, reason, result) {
|
|
108
114
|
return {
|
|
109
|
-
...run,
|
|
110
|
-
status
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
lastTransitionAt: timestamp,
|
|
114
|
-
lastTransitionReason,
|
|
115
|
+
...moved(run, timestamp, reason),
|
|
116
|
+
status,
|
|
117
|
+
output: result.output,
|
|
118
|
+
error: result.error,
|
|
115
119
|
finishedAt: timestamp,
|
|
116
|
-
output: void 0,
|
|
117
120
|
availableAt: void 0,
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
retryAttempt: void 0,
|
|
121
|
-
retryStepId: void 0,
|
|
122
|
-
retryStepName: void 0,
|
|
123
|
-
workerId: void 0,
|
|
124
|
-
leaseExpiresAt: void 0,
|
|
125
|
-
deadlineAt: deadlineAt ?? run.deadlineAt
|
|
121
|
+
...CLEARED_LEASE,
|
|
122
|
+
...CLEARED_RETRY
|
|
126
123
|
};
|
|
127
124
|
}
|
|
128
125
|
function transitionRunToRunning(run, timestamp, attempts) {
|
|
129
126
|
return {
|
|
130
|
-
...run,
|
|
127
|
+
...moved(run, timestamp, "started"),
|
|
128
|
+
...UNFINISHED,
|
|
129
|
+
...CLEARED_RETRY,
|
|
131
130
|
status: "running",
|
|
132
131
|
attempts,
|
|
133
|
-
updatedAt: timestamp,
|
|
134
|
-
lastTransitionAt: timestamp,
|
|
135
|
-
lastTransitionReason: "started",
|
|
136
132
|
startedAt: run.startedAt ?? timestamp,
|
|
137
|
-
availableAt: void 0
|
|
138
|
-
error: void 0,
|
|
139
|
-
output: void 0,
|
|
140
|
-
finishedAt: void 0,
|
|
141
|
-
retryAt: void 0,
|
|
142
|
-
retryReason: void 0,
|
|
143
|
-
retryAttempt: void 0,
|
|
144
|
-
retryStepId: void 0,
|
|
145
|
-
retryStepName: void 0
|
|
133
|
+
availableAt: void 0
|
|
146
134
|
};
|
|
147
135
|
}
|
|
148
136
|
function transitionRunToCompleted(run, output, timestamp) {
|
|
137
|
+
return finished(run, timestamp, "completed", "completed", { output });
|
|
138
|
+
}
|
|
139
|
+
function transitionRunToFailed(run, error, timestamp, reason, deadlineAt) {
|
|
149
140
|
return {
|
|
150
|
-
...run,
|
|
151
|
-
|
|
152
|
-
...output === void 0 ? { output: void 0 } : { output },
|
|
153
|
-
error: void 0,
|
|
154
|
-
updatedAt: timestamp,
|
|
155
|
-
lastTransitionAt: timestamp,
|
|
156
|
-
lastTransitionReason: "completed",
|
|
157
|
-
finishedAt: timestamp,
|
|
158
|
-
availableAt: void 0,
|
|
159
|
-
workerId: void 0,
|
|
160
|
-
leaseExpiresAt: void 0,
|
|
161
|
-
retryAt: void 0,
|
|
162
|
-
retryReason: void 0,
|
|
163
|
-
retryAttempt: void 0,
|
|
164
|
-
retryStepId: void 0,
|
|
165
|
-
retryStepName: void 0
|
|
141
|
+
...finished(run, timestamp, "failed", reason, { error }),
|
|
142
|
+
deadlineAt: deadlineAt ?? run.deadlineAt
|
|
166
143
|
};
|
|
167
144
|
}
|
|
168
|
-
function
|
|
145
|
+
function transitionRunToCanceled(run, error, timestamp) {
|
|
146
|
+
return finished(run, timestamp, "canceled", "canceled", { error });
|
|
147
|
+
}
|
|
148
|
+
function transitionRunToWaiting(run, timestamp, availableAt) {
|
|
169
149
|
return {
|
|
170
|
-
...run,
|
|
150
|
+
...moved(run, timestamp, "waiting"),
|
|
151
|
+
...UNFINISHED,
|
|
152
|
+
...CLEARED_LEASE,
|
|
171
153
|
status: "waiting",
|
|
172
|
-
availableAt
|
|
173
|
-
|
|
174
|
-
|
|
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),
|
|
175
161
|
lastTransitionReason: options.retryReason === void 0 ? "waiting" : "retry",
|
|
176
|
-
workerId: void 0,
|
|
177
|
-
leaseExpiresAt: void 0,
|
|
178
162
|
retryAt: options.retryAt,
|
|
179
163
|
retryReason: options.retryReason,
|
|
180
164
|
retryAttempt: options.retryAttempt,
|
|
181
165
|
retryStepId: options.retryStepId,
|
|
182
166
|
retryStepName: options.retryStepName,
|
|
183
|
-
error: options.error
|
|
184
|
-
output: void 0,
|
|
185
|
-
finishedAt: void 0
|
|
167
|
+
error: options.error
|
|
186
168
|
};
|
|
187
169
|
}
|
|
188
|
-
function
|
|
170
|
+
function transitionRunToMissingImplementationWait(run, error, timestamp, availableAt, retryAttempt) {
|
|
189
171
|
return {
|
|
190
|
-
...run,
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
workerId: void 0,
|
|
198
|
-
leaseExpiresAt: void 0,
|
|
199
|
-
error: void 0,
|
|
200
|
-
output: void 0,
|
|
201
|
-
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
|
|
202
179
|
};
|
|
203
180
|
}
|
|
204
|
-
function
|
|
181
|
+
function transitionRunAfterStaleLeaseRelease(run, timestamp, availableAt) {
|
|
205
182
|
return {
|
|
206
|
-
...run,
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
lastTransitionAt: timestamp,
|
|
210
|
-
lastTransitionReason: "rescheduled",
|
|
211
|
-
deadlineAt: run.deadlineAt,
|
|
212
|
-
leaseExpiresAt: void 0,
|
|
213
|
-
workerId: void 0,
|
|
214
|
-
retryAt: run.retryReason === void 0 ? void 0 : availableAt,
|
|
215
|
-
retryReason: run.retryReason,
|
|
216
|
-
retryAttempt: run.retryAttempt,
|
|
217
|
-
retryStepId: run.retryStepId,
|
|
218
|
-
retryStepName: run.retryStepName,
|
|
219
|
-
error: void 0,
|
|
220
|
-
output: void 0,
|
|
221
|
-
finishedAt: void 0
|
|
183
|
+
...transitionRunToWaiting(run, timestamp, availableAt),
|
|
184
|
+
...CLEARED_RETRY,
|
|
185
|
+
lastTransitionReason: "lease_released"
|
|
222
186
|
};
|
|
223
187
|
}
|
|
224
|
-
|
|
188
|
+
/** Moves the run's next attempt to `availableAt`, keeping its status and retry details. */
|
|
189
|
+
function transitionRunToRescheduled(run, timestamp, availableAt) {
|
|
225
190
|
return {
|
|
226
|
-
...
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
retryStepId: void 0,
|
|
232
|
-
retryStepName: void 0,
|
|
233
|
-
deadlineAt: run.deadlineAt,
|
|
234
|
-
updatedAt: timestamp,
|
|
235
|
-
lastTransitionAt: timestamp
|
|
191
|
+
...moved(run, timestamp, "rescheduled"),
|
|
192
|
+
...UNFINISHED,
|
|
193
|
+
...CLEARED_LEASE,
|
|
194
|
+
availableAt,
|
|
195
|
+
retryAt: run.retryReason === void 0 ? void 0 : availableAt
|
|
236
196
|
};
|
|
237
197
|
}
|
|
238
198
|
function transitionRunToManualRetry(run, timestamp, availableAt, retryAttempt) {
|
|
239
199
|
return {
|
|
240
|
-
...run,
|
|
200
|
+
...moved(run, timestamp, "manual_retry"),
|
|
201
|
+
...UNFINISHED,
|
|
202
|
+
...CLEARED_LEASE,
|
|
241
203
|
status: "pending",
|
|
242
204
|
availableAt,
|
|
243
|
-
updatedAt: timestamp,
|
|
244
|
-
lastTransitionAt: timestamp,
|
|
245
|
-
lastTransitionReason: "manual_retry",
|
|
246
|
-
deadlineAt: run.deadlineAt,
|
|
247
|
-
workerId: void 0,
|
|
248
|
-
leaseExpiresAt: void 0,
|
|
249
205
|
retryAt: availableAt,
|
|
250
206
|
retryReason: run.retryReason ?? "workflow",
|
|
251
|
-
retryAttempt
|
|
252
|
-
retryStepId: run.retryStepId,
|
|
253
|
-
retryStepName: run.retryStepName,
|
|
254
|
-
error: void 0,
|
|
255
|
-
output: void 0,
|
|
256
|
-
finishedAt: void 0
|
|
257
|
-
};
|
|
258
|
-
}
|
|
259
|
-
function transitionRunToPermanentFailure(run, error, timestamp) {
|
|
260
|
-
return {
|
|
261
|
-
...run,
|
|
262
|
-
status: "failed",
|
|
263
|
-
error,
|
|
264
|
-
output: void 0,
|
|
265
|
-
availableAt: void 0,
|
|
266
|
-
updatedAt: timestamp,
|
|
267
|
-
lastTransitionAt: timestamp,
|
|
268
|
-
lastTransitionReason: "permanent_failure",
|
|
269
|
-
deadlineAt: run.deadlineAt,
|
|
270
|
-
workerId: void 0,
|
|
271
|
-
leaseExpiresAt: void 0,
|
|
272
|
-
retryAt: void 0,
|
|
273
|
-
retryReason: void 0,
|
|
274
|
-
retryAttempt: void 0,
|
|
275
|
-
retryStepId: void 0,
|
|
276
|
-
retryStepName: void 0,
|
|
277
|
-
finishedAt: timestamp
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
function transitionRunToCanceled(run, error, timestamp) {
|
|
281
|
-
return {
|
|
282
|
-
...run,
|
|
283
|
-
status: "canceled",
|
|
284
|
-
error,
|
|
285
|
-
updatedAt: timestamp,
|
|
286
|
-
lastTransitionAt: timestamp,
|
|
287
|
-
lastTransitionReason: "canceled",
|
|
288
|
-
finishedAt: timestamp,
|
|
289
|
-
availableAt: void 0,
|
|
290
|
-
output: void 0,
|
|
291
|
-
workerId: void 0,
|
|
292
|
-
leaseExpiresAt: void 0,
|
|
293
|
-
retryAt: void 0,
|
|
294
|
-
retryReason: void 0,
|
|
295
|
-
retryAttempt: void 0,
|
|
296
|
-
retryStepId: void 0,
|
|
297
|
-
retryStepName: void 0
|
|
207
|
+
retryAttempt
|
|
298
208
|
};
|
|
299
209
|
}
|
|
300
210
|
function transitionRunAfterParentWake(run, timestamp) {
|
|
301
211
|
return {
|
|
302
|
-
...run,
|
|
212
|
+
...moved(run, timestamp, "waiting"),
|
|
213
|
+
...UNFINISHED,
|
|
303
214
|
availableAt: timestamp,
|
|
304
|
-
|
|
305
|
-
lastTransitionAt: timestamp,
|
|
306
|
-
lastTransitionReason: "waiting",
|
|
307
|
-
deadlineAt: run.deadlineAt,
|
|
308
|
-
retryAt: run.retryAt,
|
|
309
|
-
startedAt: run.startedAt ?? timestamp,
|
|
310
|
-
error: void 0,
|
|
311
|
-
output: void 0,
|
|
312
|
-
finishedAt: void 0
|
|
215
|
+
startedAt: run.startedAt ?? timestamp
|
|
313
216
|
};
|
|
314
217
|
}
|
|
315
218
|
function isCurrentExecutionOwner(current, execution) {
|
|
@@ -319,7 +222,7 @@ async function cancelRunWithChildren(store, runId, canceledAt) {
|
|
|
319
222
|
const run = await getRequiredRun(store, runId);
|
|
320
223
|
if (run.status === "completed" || run.status === "failed") WorkflowRunCancellationError.cannotCancel(runId, run.status);
|
|
321
224
|
if (run.status === "canceled") return run;
|
|
322
|
-
const canceledRun = await patchRunIfCurrent(store, run, transitionRunToCanceled(run, serializeError(WorkflowRunCanceledError
|
|
225
|
+
const canceledRun = await patchRunIfCurrent(store, run, transitionRunToCanceled(run, serializeError(new WorkflowRunCanceledError(runId)), canceledAt));
|
|
323
226
|
if (canceledRun === void 0) {
|
|
324
227
|
const latest = await getRequiredRun(store, runId);
|
|
325
228
|
if (latest.status === "completed" || latest.status === "failed") WorkflowRunCancellationError.cannotCancel(runId, latest.status);
|
|
@@ -328,7 +231,7 @@ async function cancelRunWithChildren(store, runId, canceledAt) {
|
|
|
328
231
|
}
|
|
329
232
|
await releaseLocksForRun(store, run.id, canceledAt);
|
|
330
233
|
await cancelActiveChildRuns(store, run.id, canceledAt);
|
|
331
|
-
await
|
|
234
|
+
await wakeParentRun(store, canceledRun, canceledAt);
|
|
332
235
|
return canceledRun;
|
|
333
236
|
}
|
|
334
237
|
async function cancelActiveChildRuns(store, parentRunId, canceledAt) {
|
|
@@ -346,23 +249,14 @@ async function cancelActiveChildRuns(store, parentRunId, canceledAt) {
|
|
|
346
249
|
await cancelRunWithChildren(store, child.id, canceledAt);
|
|
347
250
|
}
|
|
348
251
|
}
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
const parentRun = await store.getRun(childRun.parentRunId);
|
|
352
|
-
if (parentRun === void 0 || parentRun.status !== "waiting") return;
|
|
353
|
-
if (!await parentHasActiveChildWorkflowAttemptForRun(store, parentRun.id, childRun)) return;
|
|
354
|
-
const wakeAt = timestamp;
|
|
355
|
-
if (parentRun.availableAt !== void 0 && Temporal.Instant.compare(parentRun.availableAt, wakeAt) <= 0) return;
|
|
356
|
-
await patchRun(store, parentRun, transitionRunAfterParentWake(parentRun, timestamp));
|
|
357
|
-
}
|
|
358
|
-
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) {
|
|
359
254
|
if (childRun.parentRunId === void 0) return;
|
|
360
255
|
const parentRun = await store.getRun(childRun.parentRunId);
|
|
361
256
|
if (parentRun === void 0 || parentRun.status !== "waiting") return;
|
|
362
257
|
if (!await parentHasActiveChildWorkflowAttemptForRun(store, parentRun.id, childRun)) return;
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
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));
|
|
366
260
|
}
|
|
367
261
|
async function parentHasActiveChildWorkflowAttemptForRun(store, parentRunId, childRun) {
|
|
368
262
|
if (childRun.parentRunId !== parentRunId) return false;
|
|
@@ -377,26 +271,26 @@ async function parentHasActiveChildWorkflowAttemptForRun(store, parentRunId, chi
|
|
|
377
271
|
async function parentHasActiveChildWorkflowEventForAttempt(store, parentRunId, attempt) {
|
|
378
272
|
if (attempt.childRunId === void 0) return false;
|
|
379
273
|
const events = await store.getEvents(parentRunId);
|
|
380
|
-
const lifecycle = new
|
|
274
|
+
const lifecycle = new History(events).childWorkflowLifecycleForAttempt(attempt);
|
|
381
275
|
if (lifecycle.started === void 0) return false;
|
|
382
276
|
if (!isPositiveSafeInteger(lifecycle.started.attempt)) return false;
|
|
383
277
|
return !lifecycle.hasTerminalAfterStarted;
|
|
384
278
|
}
|
|
385
|
-
async function failRunForDeadline(store, run, deadlineAt, failedAt, executionOwner) {
|
|
386
|
-
const serialized = serializeError(WorkflowRunDeadlineExceededError
|
|
279
|
+
async function failRunForDeadline(store, definition, run, deadlineAt, failedAt, executionOwner) {
|
|
280
|
+
const serialized = serializeError(new WorkflowRunDeadlineExceededError(run.id, deadlineAt));
|
|
387
281
|
if (executionOwner !== void 0) {
|
|
388
282
|
const current = await store.getRun(run.id);
|
|
389
|
-
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);
|
|
390
284
|
}
|
|
391
285
|
await cancelActiveChildRuns(store, run.id, failedAt);
|
|
392
286
|
const failedRun = executionOwner === void 0 ? await patchRun(store, run, transitionRunToFailed(run, serialized, failedAt, "deadline")) : await patchCurrentExecutionRun(store, executionOwner, transitionRunToFailed(executionOwner, serialized, failedAt, "deadline"));
|
|
393
|
-
if (failedRun === void 0) return await readRunResult(store, run.id, failedAt);
|
|
287
|
+
if (failedRun === void 0) return await readRunResult(store, definition, run.id, failedAt);
|
|
394
288
|
if (await store.appendEventIfRunCurrent(failedRun, {
|
|
395
289
|
kind: "workflow_failed",
|
|
396
290
|
timestamp: failedAt
|
|
397
|
-
}) === void 0) return await readRunResult(store, run.id, failedAt);
|
|
291
|
+
}) === void 0) return await readRunResult(store, definition, run.id, failedAt);
|
|
398
292
|
await releaseLocksForRun(store, run.id, failedAt);
|
|
399
|
-
await
|
|
293
|
+
await wakeParentRun(store, failedRun, failedAt);
|
|
400
294
|
return {
|
|
401
295
|
kind: "failed",
|
|
402
296
|
run: failedRun,
|
|
@@ -404,62 +298,13 @@ async function failRunForDeadline(store, run, deadlineAt, failedAt, executionOwn
|
|
|
404
298
|
};
|
|
405
299
|
}
|
|
406
300
|
async function releaseLocksForRun(store, runId, releasedAt) {
|
|
407
|
-
const timestamp = releasedAt;
|
|
408
301
|
const locks = await store.listLocks();
|
|
409
302
|
await Promise.all(locks.filter((lock) => lock.releasedAt === void 0 && lock.holderRunId === runId).map(async (lock) => {
|
|
410
303
|
await store.updateLockIfCurrent(lock, {
|
|
411
304
|
...lock,
|
|
412
|
-
releasedAt
|
|
305
|
+
releasedAt
|
|
413
306
|
});
|
|
414
307
|
}));
|
|
415
308
|
}
|
|
416
|
-
var WorkflowSuspended = class WorkflowSuspended extends Error {
|
|
417
|
-
availableAt;
|
|
418
|
-
retryAt;
|
|
419
|
-
retryReason;
|
|
420
|
-
retryAttempt;
|
|
421
|
-
retryStep;
|
|
422
|
-
constructor(availableAt, context) {
|
|
423
|
-
super(`Workflow suspended until ${availableAt.toString()}`);
|
|
424
|
-
this.name = "WorkflowSuspended";
|
|
425
|
-
this.availableAt = availableAt;
|
|
426
|
-
if (Error.captureStackTrace !== void 0) Error.captureStackTrace(this, context ?? this.constructor);
|
|
427
|
-
}
|
|
428
|
-
static until(availableAt) {
|
|
429
|
-
throw new WorkflowSuspended(availableAt, WorkflowSuspended.until);
|
|
430
|
-
}
|
|
431
|
-
static forStepRetry(retryAt, retryStep, retryAttempt) {
|
|
432
|
-
const suspended = new WorkflowSuspended(retryAt, WorkflowSuspended.forStepRetry);
|
|
433
|
-
Object.defineProperties(suspended, {
|
|
434
|
-
retryAt: {
|
|
435
|
-
value: retryAt,
|
|
436
|
-
enumerable: true
|
|
437
|
-
},
|
|
438
|
-
retryReason: {
|
|
439
|
-
value: "step",
|
|
440
|
-
enumerable: true
|
|
441
|
-
},
|
|
442
|
-
retryAttempt: {
|
|
443
|
-
value: retryAttempt,
|
|
444
|
-
enumerable: true
|
|
445
|
-
},
|
|
446
|
-
retryStep: {
|
|
447
|
-
value: retryStep,
|
|
448
|
-
enumerable: true
|
|
449
|
-
}
|
|
450
|
-
});
|
|
451
|
-
throw suspended;
|
|
452
|
-
}
|
|
453
|
-
};
|
|
454
|
-
var WorkflowStaleExecutionError = class WorkflowStaleExecutionError extends Error {
|
|
455
|
-
constructor(runId, context) {
|
|
456
|
-
super(`Workflow execution no longer owns run: ${runId}`);
|
|
457
|
-
this.name = "WorkflowStaleExecutionError";
|
|
458
|
-
if (Error.captureStackTrace !== void 0) Error.captureStackTrace(this, context ?? this.constructor);
|
|
459
|
-
}
|
|
460
|
-
static stale(runId) {
|
|
461
|
-
throw new WorkflowStaleExecutionError(runId, WorkflowStaleExecutionError.stale);
|
|
462
|
-
}
|
|
463
|
-
};
|
|
464
309
|
//#endregion
|
|
465
|
-
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
|