@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/replay.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { WorkflowReplayDivergenceError } from "../errors/failures.mjs";
|
|
2
1
|
import { workflowAttributePatchFromEvent } from "../attributes.mjs";
|
|
2
|
+
import { WorkflowReplayDivergenceError } from "../errors/failures.mjs";
|
|
3
3
|
import "../errors/mod.mjs";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { Suspended } from "./signals.mjs";
|
|
5
|
+
import { resolveCommandIdentity } from "./command-identity.mjs";
|
|
6
|
+
import { appendDurableEvent, appendDurableStepStartedEvent } from "./durable-command.mjs";
|
|
7
7
|
import { deepEquals } from "@temelj/value";
|
|
8
8
|
//#region src/engine/replay.ts
|
|
9
9
|
function isRunStepTerminalForStartedAttempt(terminal, started) {
|
|
@@ -11,10 +11,7 @@ function isRunStepTerminalForStartedAttempt(terminal, started) {
|
|
|
11
11
|
}
|
|
12
12
|
function requireRecordedDurableStepStarted(identity, started) {
|
|
13
13
|
if (started) return;
|
|
14
|
-
WorkflowReplayDivergenceError.
|
|
15
|
-
expectedStepId: identity.id,
|
|
16
|
-
actualStepId: identity.id
|
|
17
|
-
});
|
|
14
|
+
WorkflowReplayDivergenceError.atStep(identity.id, `recorded ${identity.kind} step ${identity.id} has a terminal event without a started event`);
|
|
18
15
|
}
|
|
19
16
|
function requireRecordedDurableTerminalStarted(identity, hasStartedEventBeforeTerminal) {
|
|
20
17
|
requireRecordedDurableStepStarted(identity, hasStartedEventBeforeTerminal);
|
|
@@ -23,10 +20,7 @@ function requireRunStepReplayTimeoutMatches(identity, started, config) {
|
|
|
23
20
|
if (started === void 0 || started.timeoutAt === void 0 === (config.timeout === void 0)) return;
|
|
24
21
|
const recordedTimeout = started.timeoutAt === void 0 ? "no timeout" : started.timeoutAt.toString();
|
|
25
22
|
const replayTimeout = config.timeout === void 0 ? "no timeout" : "a timeout";
|
|
26
|
-
WorkflowReplayDivergenceError.
|
|
27
|
-
expectedStepId: identity.id,
|
|
28
|
-
actualStepId: identity.id
|
|
29
|
-
});
|
|
23
|
+
WorkflowReplayDivergenceError.atStep(identity.id, `recorded run step ${identity.id} had ${recordedTimeout}, but replay used ${replayTimeout}`);
|
|
30
24
|
}
|
|
31
25
|
function requireMetadataReplayMatches(identity, recorded, metadata) {
|
|
32
26
|
if (deepEquals(recorded.metadata, metadata)) return;
|
|
@@ -49,74 +43,56 @@ function requireMessageSendReplayMatches(identity, started, terminal, next) {
|
|
|
49
43
|
const recordedIdempotencyKey = started?.idempotencyKey;
|
|
50
44
|
if (recordedTargetRunId === next.targetRunId && recordedMessage === next.messageId && deepEquals(recordedPayload, next.payload) && recordedIdempotencyKey === next.idempotencyKey) return;
|
|
51
45
|
const message = recordedTargetRunId === next.targetRunId && recordedMessage === next.messageId ? `recorded message-send step ${identity.id} targeted ${recordedTargetRunId} messageId ${recordedMessage} with different payload or idempotency key` : `recorded message-send step ${identity.id} targeted ${recordedTargetRunId} messageId ${recordedMessage}, but replay targeted ${next.targetRunId} messageId ${next.messageId}`;
|
|
52
|
-
WorkflowReplayDivergenceError.
|
|
53
|
-
expectedStepId: identity.id,
|
|
54
|
-
actualStepId: identity.id
|
|
55
|
-
});
|
|
46
|
+
WorkflowReplayDivergenceError.atStep(identity.id, message);
|
|
56
47
|
}
|
|
57
48
|
async function sleepUntil(environment, name, initialUntil, options) {
|
|
58
49
|
const { history, now } = environment;
|
|
59
|
-
const identity =
|
|
50
|
+
const identity = resolveCommandIdentity(history, "sleep", name);
|
|
60
51
|
const started = history.startedSleep(identity.id);
|
|
61
52
|
const completed = history.completedSleep(identity.id);
|
|
62
53
|
if (completed !== void 0) {
|
|
63
54
|
requireRecordedDurableStepStarted(identity, history.hasStartedEventBeforeTerminalEvent(completed));
|
|
64
55
|
requireSleepReplayMatches(identity, started, initialUntil, options);
|
|
65
|
-
|
|
66
|
-
expectedStepId: identity.id,
|
|
67
|
-
actualStepId: identity.id
|
|
68
|
-
});
|
|
56
|
+
recordedInstant("sleep", identity, "completion", completed.timestamp);
|
|
69
57
|
return;
|
|
70
58
|
}
|
|
71
|
-
const until = started === void 0 ? initialUntil :
|
|
59
|
+
const until = started === void 0 ? initialUntil : recordedInstant("sleep", identity, "wake", started.until);
|
|
72
60
|
requireSleepReplayMatches(identity, started, initialUntil, options);
|
|
73
|
-
if (started === void 0)
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
61
|
+
if (started === void 0) {
|
|
62
|
+
const event = {
|
|
63
|
+
kind: "sleep_started",
|
|
64
|
+
timestamp: now(),
|
|
65
|
+
stepId: identity.id,
|
|
66
|
+
stepName: identity.name,
|
|
67
|
+
count: identity.count,
|
|
68
|
+
until,
|
|
69
|
+
duration: options.duration
|
|
70
|
+
};
|
|
71
|
+
await appendDurableStepStartedEvent(environment, event);
|
|
72
|
+
}
|
|
73
|
+
if (Temporal.Instant.compare(until, now()) > 0) Suspended.until(until);
|
|
74
|
+
await appendDurableEvent(environment, {
|
|
84
75
|
kind: "sleep_completed",
|
|
85
76
|
timestamp: now(),
|
|
86
77
|
stepId: identity.id,
|
|
87
78
|
stepName: identity.name
|
|
88
79
|
});
|
|
89
80
|
}
|
|
90
|
-
function recordedStepCompletionTimestamp(identity, value) {
|
|
91
|
-
if (value instanceof Temporal.Instant) return value;
|
|
92
|
-
WorkflowReplayDivergenceError.diverged(`recorded run step ${identity.id} has invalid completion timestamp: ${String(value)}`, {
|
|
93
|
-
expectedStepId: identity.id,
|
|
94
|
-
actualStepId: identity.id
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
function recordedSleepUntil(identity, value) {
|
|
98
|
-
if (value instanceof Temporal.Instant) return value;
|
|
99
|
-
WorkflowReplayDivergenceError.diverged(`recorded sleep step ${identity.id} has invalid wake timestamp: ${String(value)}`, {
|
|
100
|
-
expectedStepId: identity.id,
|
|
101
|
-
actualStepId: identity.id
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
81
|
function requireSleepReplayMatches(identity, started, until, options) {
|
|
105
82
|
if (started === void 0) return;
|
|
106
83
|
if (started.duration !== void 0 || options.duration !== void 0) {
|
|
107
84
|
if (started.duration === void 0 || options.duration === void 0) {
|
|
108
85
|
if (started.duration === options.duration) return;
|
|
109
86
|
} else if (started.duration.toString() === options.duration.toString()) return;
|
|
110
|
-
WorkflowReplayDivergenceError.
|
|
111
|
-
expectedStepId: identity.id,
|
|
112
|
-
actualStepId: identity.id
|
|
113
|
-
});
|
|
87
|
+
WorkflowReplayDivergenceError.atStep(identity.id, `recorded sleep step ${identity.id} waited for ${String(started.duration)}ms, but replay waited for ${String(options.duration)}ms`);
|
|
114
88
|
}
|
|
115
89
|
if (Temporal.Instant.compare(started.until, until) === 0) return;
|
|
116
|
-
WorkflowReplayDivergenceError.
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
90
|
+
WorkflowReplayDivergenceError.atStep(identity.id, `recorded sleep step ${identity.id} waited until ${started.until.toString()}, but replay waited until ${until.toString()}`);
|
|
91
|
+
}
|
|
92
|
+
/** A timestamp read from history; anything else in its place is a replay divergence. */
|
|
93
|
+
function recordedInstant(kind, identity, label, value) {
|
|
94
|
+
if (value instanceof Temporal.Instant) return value;
|
|
95
|
+
WorkflowReplayDivergenceError.atStep(identity.id, `recorded ${kind} step ${identity.id} has invalid ${label} timestamp: ${String(value)}`);
|
|
120
96
|
}
|
|
121
97
|
//#endregion
|
|
122
|
-
export { isRunStepTerminalForStartedAttempt,
|
|
98
|
+
export { isRunStepTerminalForStartedAttempt, recordedInstant, requireAttributesReplayMatches, requireMessageSendReplayMatches, requireMetadataReplayMatches, requireRecordedDurableStepStarted, requireRecordedDurableTerminalStarted, requireRunStepReplayTimeoutMatches, sleepUntil };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { RunId } from "../types/ids.mjs";
|
|
2
|
+
import { WorkflowImplementation } from "../types/definition.mjs";
|
|
3
|
+
import { ExecutionResult } from "../types/result.mjs";
|
|
4
|
+
import { RunRecord } from "../types/run.mjs";
|
|
5
|
+
import { ResumeOptions } from "../types/run-options.mjs";
|
|
6
|
+
import { EngineContext } from "./context.mjs";
|
|
7
|
+
import { ExecutionServiceOptions } from "./execution-service.mjs";
|
|
8
|
+
//#region src/engine/resume.d.ts
|
|
9
|
+
export interface ResumeRunServices {
|
|
10
|
+
readonly context: EngineContext;
|
|
11
|
+
readonly executionService: ExecutionServiceOptions;
|
|
12
|
+
readonly emitResultLifecycleEvent: <TOutput>(result: ExecutionResult<TOutput>, previous?: RunRecord) => Promise<ExecutionResult<TOutput>>;
|
|
13
|
+
}
|
|
14
|
+
/** Runs a stored run until it finishes or waits, unless it is done, past its deadline, or not due. */
|
|
15
|
+
export declare function resumeRun<TInput, TOutput, TRawInput = TInput>(services: ResumeRunServices, implementation: WorkflowImplementation<TInput, TOutput, TRawInput>, runId: RunId, resumeOptions?: ResumeOptions): Promise<ExecutionResult<TOutput>>;
|
|
16
|
+
//#endregion
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { getRequiredRun } from "../store/query.mjs";
|
|
2
|
+
import { failRunForDeadline, requireDefinitionMatchesRun } from "./state.mjs";
|
|
3
|
+
import { makeCanceledRunResult, makeCompletedRunResult } from "./run-utils.mjs";
|
|
4
|
+
import { executeRun } from "./execution-service.mjs";
|
|
5
|
+
//#region src/engine/resume.ts
|
|
6
|
+
/** Runs a stored run until it finishes or waits, unless it is done, past its deadline, or not due. */
|
|
7
|
+
async function resumeRun(services, implementation, runId, resumeOptions) {
|
|
8
|
+
const { context } = services;
|
|
9
|
+
const run = await getRequiredRun(context.store, runId);
|
|
10
|
+
requireDefinitionMatchesRun(implementation.definition, run);
|
|
11
|
+
if (run.status === "completed") return makeCompletedRunResult(implementation.definition, run);
|
|
12
|
+
if (run.status === "canceled") return makeCanceledRunResult(run);
|
|
13
|
+
const timestamp = context.now();
|
|
14
|
+
if (run.deadlineAt !== void 0 && Temporal.Instant.compare(run.deadlineAt, timestamp) <= 0) return await services.emitResultLifecycleEvent(await failRunForDeadline(context.store, implementation.definition, run, run.deadlineAt, timestamp), run);
|
|
15
|
+
const availableAt = run.availableAt;
|
|
16
|
+
if (availableAt !== void 0 && Temporal.Instant.compare(availableAt, timestamp) > 0) return {
|
|
17
|
+
kind: "waiting",
|
|
18
|
+
run,
|
|
19
|
+
availableAt
|
|
20
|
+
};
|
|
21
|
+
return await executeRun(services.executionService, implementation, run, resumeOptions);
|
|
22
|
+
}
|
|
23
|
+
//#endregion
|
|
24
|
+
export { resumeRun };
|
package/dist/engine/retry.d.mts
CHANGED
|
@@ -1,23 +1,19 @@
|
|
|
1
|
-
import { RunId } from "../types/
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import "../types/run.mjs";
|
|
1
|
+
import { RunId } from "../types/ids.mjs";
|
|
2
|
+
import { MissingImplementationRetryConfig, MissingImplementationRetryDefaults, ResolvedMissingImplementationRetryConfig, ResolvedRetryConfig, ResolvedRetryDefaults, RetryConfig } from "../types/retry.mjs";
|
|
3
|
+
import { StepRunWorkflowOptions } from "../types/step.mjs";
|
|
5
4
|
import { EventRecord } from "../types/events.mjs";
|
|
6
|
-
import {
|
|
5
|
+
import { ExecutionLimits } from "../types/engine-options.mjs";
|
|
6
|
+
import { History } from "../history/replay.mjs";
|
|
7
7
|
//#region src/engine/retry.d.ts
|
|
8
|
-
interface WorkflowEngineRetryLimits {
|
|
9
|
-
readonly maximumEventHistoryEvents?: number;
|
|
10
|
-
}
|
|
11
8
|
/** Resolves retry options and merges them with defaults used by workflow or step execution. */
|
|
12
|
-
declare function
|
|
9
|
+
export declare function resolveRetryConfig(config: RetryConfig | undefined, defaults: ResolvedRetryDefaults, label: string): ResolvedRetryConfig;
|
|
13
10
|
/** Resolves missing-implementation retry options and merges them with worker defaults. */
|
|
14
|
-
declare function resolveMissingImplementationRetryConfig(config:
|
|
15
|
-
declare function resolveChildWorkflowRetryConfig(options:
|
|
16
|
-
declare function
|
|
17
|
-
declare function
|
|
18
|
-
declare function enforceStepAttemptBudget(runId: RunId, history:
|
|
19
|
-
declare function
|
|
20
|
-
declare function nextRetryAt(failedAt: Temporal.Instant, retry:
|
|
21
|
-
declare function retryClassificationRetryAt(failedAt: Temporal.Instant,
|
|
22
|
-
//#endregion
|
|
23
|
-
export { enforceStepAttemptBudget, enforceWorkflowEventHistoryNextLimit, nextRetryAt, nextWorkflowRetryAttempt, resolveChildWorkflowRetryConfig, resolveMissingImplementationRetryConfig, resolveWorkflowRetryConfig, retryClassificationRetryAt, shouldRetryWorkflowAttempt };
|
|
11
|
+
export declare function resolveMissingImplementationRetryConfig(config: MissingImplementationRetryConfig | undefined, defaults: MissingImplementationRetryDefaults, label: string): ResolvedMissingImplementationRetryConfig;
|
|
12
|
+
export declare function resolveChildWorkflowRetryConfig(options: StepRunWorkflowOptions | undefined): ResolvedRetryConfig;
|
|
13
|
+
export declare function shouldRetryAttempt(retry: ResolvedRetryConfig, failedAttempt: number): boolean;
|
|
14
|
+
export declare function nextRetryAttempt(failedAttempt: number): number;
|
|
15
|
+
export declare function enforceStepAttemptBudget(runId: RunId, history: History, maximumStepAttemptsPerRun: number): void;
|
|
16
|
+
export declare function enforceEventHistoryNextLimit(events: readonly EventRecord[], limits: ExecutionLimits): void;
|
|
17
|
+
export declare function nextRetryAt(failedAt: Temporal.Instant, retry: ResolvedRetryConfig, failedAttempt: number, label: string): Temporal.Instant | undefined;
|
|
18
|
+
export declare function retryClassificationRetryAt(failedAt: Temporal.Instant, cause: unknown, label: string): Temporal.Instant | undefined;
|
|
19
|
+
//#endregion
|
package/dist/engine/retry.mjs
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import { WorkflowOptionsError } from "../errors/base.mjs";
|
|
2
2
|
import { WorkflowDurationError, WorkflowRetryableError, WorkflowSerializationError } from "../errors/failures.mjs";
|
|
3
|
-
import { durationAmount, isPositiveSafeInteger, nextPositiveSafeInteger, resolveSafeRetryDelay } from "../utility.mjs";
|
|
4
3
|
import { WorkflowStepAttemptLimitError } from "../errors/step.mjs";
|
|
5
4
|
import "../errors/mod.mjs";
|
|
5
|
+
import { durationAmount, isPositiveSafeInteger, nextPositiveSafeInteger, resolveSafeRetryDelay } from "../values.mjs";
|
|
6
6
|
//#region src/engine/retry.ts
|
|
7
7
|
const DEFAULT_STEP_RETRY_CONFIG = {
|
|
8
8
|
maximumAttempts: 10,
|
|
9
9
|
backoffCoefficient: 2
|
|
10
10
|
};
|
|
11
11
|
/** Resolves retry options and merges them with defaults used by workflow or step execution. */
|
|
12
|
-
function
|
|
12
|
+
function resolveRetryConfig(config, defaults, label) {
|
|
13
13
|
const input = config ?? {};
|
|
14
14
|
if (input.initialInterval !== void 0 && input.maximumInterval !== void 0 && Temporal.Duration.compare(input.maximumInterval, input.initialInterval) < 0) WorkflowOptionsError.retryMaximumIntervalTooSmall(label);
|
|
15
15
|
return {
|
|
16
16
|
maximumAttempts: input.maximumAttempts ?? defaults.maximumAttempts,
|
|
17
|
-
|
|
17
|
+
initialInterval: input.initialInterval,
|
|
18
18
|
backoffCoefficient: input.backoffCoefficient ?? defaults.backoffCoefficient,
|
|
19
|
-
|
|
19
|
+
maximumInterval: input.maximumInterval
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
/** Resolves missing-implementation retry options and merges them with worker defaults. */
|
|
@@ -29,7 +29,7 @@ function resolveMissingImplementationRetryConfig(config, defaults, label) {
|
|
|
29
29
|
initialInterval,
|
|
30
30
|
backoffCoefficient: input.backoffCoefficient ?? defaults.backoffCoefficient,
|
|
31
31
|
maximumAttempts: input.maximumAttempts ?? defaults.maximumAttempts,
|
|
32
|
-
|
|
32
|
+
maximumInterval
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
function resolveChildWorkflowRetryConfig(options) {
|
|
@@ -37,12 +37,12 @@ function resolveChildWorkflowRetryConfig(options) {
|
|
|
37
37
|
maximumAttempts: 1,
|
|
38
38
|
backoffCoefficient: DEFAULT_STEP_RETRY_CONFIG.backoffCoefficient
|
|
39
39
|
};
|
|
40
|
-
return
|
|
40
|
+
return resolveRetryConfig(options.retry, DEFAULT_STEP_RETRY_CONFIG, "Workflow step retry");
|
|
41
41
|
}
|
|
42
|
-
function
|
|
42
|
+
function shouldRetryAttempt(retry, failedAttempt) {
|
|
43
43
|
return retry.maximumAttempts === 0 || failedAttempt < retry.maximumAttempts;
|
|
44
44
|
}
|
|
45
|
-
function
|
|
45
|
+
function nextRetryAttempt(failedAttempt) {
|
|
46
46
|
const nextAttempt = nextPositiveSafeInteger(failedAttempt);
|
|
47
47
|
if (nextAttempt === void 0) WorkflowOptionsError.positiveSafeInteger("Workflow retry next attempt");
|
|
48
48
|
return nextAttempt;
|
|
@@ -50,7 +50,7 @@ function nextWorkflowRetryAttempt(failedAttempt) {
|
|
|
50
50
|
function enforceStepAttemptBudget(runId, history, maximumStepAttemptsPerRun) {
|
|
51
51
|
if (history.totalStartedStepCount() >= maximumStepAttemptsPerRun) WorkflowStepAttemptLimitError.exceeded(runId, maximumStepAttemptsPerRun);
|
|
52
52
|
}
|
|
53
|
-
function
|
|
53
|
+
function enforceEventHistoryNextLimit(events, limits) {
|
|
54
54
|
if (limits.maximumEventHistoryEvents !== void 0 && events.length >= limits.maximumEventHistoryEvents) WorkflowSerializationError.notSerializable("workflow event history", `event count would exceed maximumEventHistoryEvents ${limits.maximumEventHistoryEvents}`);
|
|
55
55
|
}
|
|
56
56
|
function nextRetryAt(failedAt, retry, failedAttempt, label) {
|
|
@@ -60,16 +60,16 @@ function nextRetryAt(failedAt, retry, failedAttempt, label) {
|
|
|
60
60
|
const cappedDelay = retry.maximumInterval === void 0 ? exponentialDelay : Math.min(exponentialDelay, durationAmount(retry.maximumInterval, label));
|
|
61
61
|
return failedAt.add(Temporal.Duration.from({ milliseconds: resolveSafeRetryDelay(cappedDelay, label) }));
|
|
62
62
|
}
|
|
63
|
-
function retryClassificationRetryAt(failedAt,
|
|
64
|
-
if (!(
|
|
65
|
-
if (
|
|
66
|
-
if (!(
|
|
67
|
-
return
|
|
63
|
+
function retryClassificationRetryAt(failedAt, cause, label) {
|
|
64
|
+
if (!(cause instanceof WorkflowRetryableError)) return;
|
|
65
|
+
if (cause.retryAt !== void 0) {
|
|
66
|
+
if (!(cause.retryAt instanceof Temporal.Instant)) throw new WorkflowDurationError(`${label} retryAt must be a Temporal.Instant`);
|
|
67
|
+
return cause.retryAt;
|
|
68
68
|
}
|
|
69
|
-
if (
|
|
70
|
-
const retryDelay = durationAmount(
|
|
69
|
+
if (cause.retryDelay !== void 0) {
|
|
70
|
+
const retryDelay = durationAmount(cause.retryDelay, label);
|
|
71
71
|
return failedAt.add(Temporal.Duration.from({ milliseconds: resolveSafeRetryDelay(retryDelay, label) }));
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
//#endregion
|
|
75
|
-
export {
|
|
75
|
+
export { enforceEventHistoryNextLimit, enforceStepAttemptBudget, nextRetryAt, nextRetryAttempt, resolveChildWorkflowRetryConfig, resolveMissingImplementationRetryConfig, resolveRetryConfig, retryClassificationRetryAt, shouldRetryAttempt };
|
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { WorkflowExecutionEnvironment } from "../types/engine.mjs";
|
|
1
|
+
import { StepRunDataApi } from "../types/step.mjs";
|
|
2
|
+
import { ExecutionEnvironment } from "../types/engine.mjs";
|
|
4
3
|
//#region src/engine/run-data.d.ts
|
|
5
|
-
declare function
|
|
6
|
-
|
|
7
|
-
declare function setWorkflowRunAttributes(environment: WorkflowExecutionEnvironment, commandId: string, attributes: WorkflowAttributePatch): Promise<void>;
|
|
8
|
-
//#endregion
|
|
9
|
-
export { createWorkflowRunDataApi, setWorkflowRunAttributes, setWorkflowRunMetadata };
|
|
4
|
+
export declare function createRunDataApi(environment: ExecutionEnvironment): StepRunDataApi;
|
|
5
|
+
//#endregion
|
package/dist/engine/run-data.mjs
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { normalizeAttributePatch, workflowAttributeEventPatch, workflowAttributePatchFromEvent } from "../attributes.mjs";
|
|
2
2
|
import { toPersistedValue } from "./serialization.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { StaleExecutionError } from "./signals.mjs";
|
|
4
|
+
import { patchCurrentExecutionRun, patchCurrentExecutionRunAttributes } from "./state.mjs";
|
|
5
|
+
import { resolveCommandIdentity } from "./command-identity.mjs";
|
|
6
|
+
import { appendDurableEvent } from "./durable-command.mjs";
|
|
5
7
|
import { requireAttributesReplayMatches, requireMetadataReplayMatches } from "./replay.mjs";
|
|
6
8
|
//#region src/engine/run-data.ts
|
|
7
|
-
function
|
|
9
|
+
function createRunDataApi(environment) {
|
|
8
10
|
return {
|
|
9
11
|
async setMetadata(commandId, metadata) {
|
|
10
|
-
await
|
|
12
|
+
await setRunMetadata(environment, commandId, metadata);
|
|
11
13
|
},
|
|
12
14
|
async setAttributes(commandId, attributes) {
|
|
13
|
-
await
|
|
15
|
+
await recordRunAttributes(environment, commandId, attributes);
|
|
14
16
|
}
|
|
15
17
|
};
|
|
16
18
|
}
|
|
17
|
-
async function
|
|
18
|
-
const { store,
|
|
19
|
-
const identity =
|
|
19
|
+
async function setRunMetadata(environment, commandId, metadata) {
|
|
20
|
+
const { store, history, now, limits, executionOwner } = environment;
|
|
21
|
+
const identity = resolveCommandIdentity(history, "metadata", commandId);
|
|
20
22
|
const persistedMetadata = toPersistedValue(metadata, "workflow run metadata", limits);
|
|
21
23
|
const recorded = history.metadataSet(identity.id);
|
|
22
24
|
if (recorded !== void 0) {
|
|
@@ -25,51 +27,51 @@ async function setWorkflowRunMetadata(environment, commandId, metadata) {
|
|
|
25
27
|
metadata: recorded.metadata,
|
|
26
28
|
updatedAt: recorded.timestamp
|
|
27
29
|
});
|
|
28
|
-
if (updated === void 0)
|
|
30
|
+
if (updated === void 0) StaleExecutionError.stale(executionOwner.id);
|
|
29
31
|
Object.assign(executionOwner, updated);
|
|
30
32
|
return;
|
|
31
33
|
}
|
|
32
34
|
const timestamp = now();
|
|
33
|
-
await
|
|
35
|
+
await appendDurableEvent(environment, {
|
|
34
36
|
kind: "metadata_set",
|
|
35
37
|
timestamp,
|
|
36
38
|
stepId: identity.id,
|
|
37
39
|
stepName: identity.name,
|
|
38
40
|
count: identity.count,
|
|
39
41
|
metadata: persistedMetadata
|
|
40
|
-
}
|
|
42
|
+
});
|
|
41
43
|
const updated = await patchCurrentExecutionRun(store, executionOwner, {
|
|
42
44
|
metadata: persistedMetadata,
|
|
43
45
|
updatedAt: timestamp
|
|
44
46
|
});
|
|
45
|
-
if (updated === void 0)
|
|
47
|
+
if (updated === void 0) StaleExecutionError.stale(executionOwner.id);
|
|
46
48
|
Object.assign(executionOwner, updated);
|
|
47
49
|
}
|
|
48
|
-
async function
|
|
49
|
-
const { store,
|
|
50
|
-
const identity =
|
|
51
|
-
const normalized =
|
|
50
|
+
async function recordRunAttributes(environment, commandId, attributes) {
|
|
51
|
+
const { store, history, now, executionOwner } = environment;
|
|
52
|
+
const identity = resolveCommandIdentity(history, "attributes", commandId);
|
|
53
|
+
const normalized = normalizeAttributePatch(attributes);
|
|
52
54
|
const recorded = history.attributesSet(identity.id);
|
|
53
55
|
if (recorded !== void 0) {
|
|
54
56
|
requireAttributesReplayMatches(identity, recorded, normalized);
|
|
55
57
|
const recordedPatch = workflowAttributePatchFromEvent(recorded);
|
|
56
58
|
const updated = await patchCurrentExecutionRunAttributes(store, executionOwner, recordedPatch, recorded.timestamp);
|
|
57
|
-
if (updated === void 0)
|
|
59
|
+
if (updated === void 0) StaleExecutionError.stale(executionOwner.id);
|
|
58
60
|
Object.assign(executionOwner, updated);
|
|
59
61
|
return;
|
|
60
62
|
}
|
|
61
63
|
const timestamp = now();
|
|
62
|
-
await
|
|
64
|
+
await appendDurableEvent(environment, {
|
|
63
65
|
kind: "attributes_set",
|
|
64
66
|
timestamp,
|
|
65
67
|
stepId: identity.id,
|
|
66
68
|
stepName: identity.name,
|
|
67
69
|
count: identity.count,
|
|
68
70
|
...workflowAttributeEventPatch(normalized)
|
|
69
|
-
}
|
|
71
|
+
});
|
|
70
72
|
const updated = await patchCurrentExecutionRunAttributes(store, executionOwner, normalized, timestamp);
|
|
71
|
-
if (updated === void 0)
|
|
73
|
+
if (updated === void 0) StaleExecutionError.stale(executionOwner.id);
|
|
72
74
|
Object.assign(executionOwner, updated);
|
|
73
75
|
}
|
|
74
76
|
//#endregion
|
|
75
|
-
export {
|
|
77
|
+
export { createRunDataApi };
|
|
@@ -1,38 +1,29 @@
|
|
|
1
|
-
import { RunId } from "../types/
|
|
1
|
+
import { RunId } from "../types/ids.mjs";
|
|
2
|
+
import { CleanupRunsOptions, CleanupRunsResult, RetentionPolicyOptions } from "../types/cleanup.mjs";
|
|
2
3
|
import { WorkflowDefinition } from "../types/definition.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { AttributePatch, RunRecord } from "../types/run.mjs";
|
|
5
|
+
import { MarkRunPermanentlyFailedOptions, ReleaseStaleLeaseOptions, RerunOptions, RescheduleRunOptions, RetryFailedRunOptions, StartOptions } from "../types/run-options.mjs";
|
|
6
|
+
import { EngineContext } from "./context.mjs";
|
|
7
|
+
import { RunRef } from "./start.mjs";
|
|
8
|
+
import { WorkflowEngine } from "./create.mjs";
|
|
9
|
+
import { StorageValue } from "@temelj/storage";
|
|
7
10
|
//#region src/engine/run-service.d.ts
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
readonly store: WorkflowRunServiceStore;
|
|
11
|
-
readonly now: () => Temporal.Instant;
|
|
12
|
-
readonly limits: {
|
|
13
|
-
readonly maximumPersistedValueBytes?: number;
|
|
14
|
-
};
|
|
11
|
+
interface RunLifecycleEmitter {
|
|
12
|
+
readonly emitLifecycleEvent: (next: RunRecord, previous: RunRecord) => void | Promise<void>;
|
|
15
13
|
}
|
|
16
|
-
interface
|
|
17
|
-
readonly
|
|
14
|
+
interface RunMetadataUpdateEmitter {
|
|
15
|
+
readonly emitRunMetadataUpdated: (next: RunRecord, previous: RunRecord) => void;
|
|
18
16
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
declare function
|
|
23
|
-
declare function
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
declare function
|
|
29
|
-
declare function
|
|
30
|
-
declare function retryFailedWorkflowRun(service: WorkflowRunServiceOptions, lifecycle: WorkflowRunLifecycleEmitter, runId: RunId, retryOptions: WorkflowRetryFailedRunOptions | undefined): Promise<WorkflowRunRecord>;
|
|
31
|
-
declare function markWorkflowRunPermanentlyFailed(service: WorkflowRunServiceOptions, lifecycle: WorkflowRunLifecycleEmitter, runId: RunId, permanentFailureOptions: WorkflowMarkRunPermanentlyFailedOptions): Promise<WorkflowRunRecord>;
|
|
32
|
-
declare function updateWorkflowRunMetadata(service: WorkflowRunServiceOptions, lifecycle: WorkflowRunMetadataUpdateEmitter, runId: RunId, metadata: unknown): Promise<WorkflowRunRecord>;
|
|
33
|
-
declare function setWorkflowRunAttributes(service: WorkflowRunServiceOptions, runId: RunId, attributes: WorkflowAttributePatch): Promise<WorkflowRunRecord>;
|
|
34
|
-
declare function cancelWorkflowRun(service: WorkflowRunServiceOptions, lifecycle: WorkflowRunLifecycleEmitter, runId: RunId): Promise<WorkflowRunRecord>;
|
|
35
|
-
declare function resolveWorkflowVersion(workflowName: string, fallbackVersion: string | undefined, resolver: ((workflowName: string, definition: WorkflowDefinition<unknown, unknown, unknown>) => string | undefined | Promise<string | undefined>) | undefined): Promise<string | undefined>;
|
|
36
|
-
declare function resolveWorkflowStartSpec<TInput, TOutput, TRawInput>(definition: WorkflowDefinition<TInput, TOutput, TRawInput>, options: WorkflowStartOptions | undefined): Promise<WorkflowDefinition<TInput, TOutput, TRawInput>>;
|
|
17
|
+
export declare function rerunRun(context: EngineContext, startWorkflow: WorkflowEngine["startWorkflow"], runId: RunId, rerunOptions: RerunOptions | undefined): Promise<RunRef<unknown>>;
|
|
18
|
+
export declare function rescheduleWorkflowRun(context: EngineContext, lifecycle: RunLifecycleEmitter, runId: RunId, rescheduleOptions: RescheduleRunOptions | undefined): Promise<RunRecord>;
|
|
19
|
+
export declare function releaseStaleWorkflowRunLease(context: EngineContext, lifecycle: RunLifecycleEmitter, runId: RunId, releaseOptions: ReleaseStaleLeaseOptions | undefined): Promise<RunRecord>;
|
|
20
|
+
export declare function retryFailedWorkflowRun(context: EngineContext, lifecycle: RunLifecycleEmitter, runId: RunId, retryOptions: RetryFailedRunOptions | undefined): Promise<RunRecord>;
|
|
21
|
+
export declare function markWorkflowRunPermanentlyFailed(context: EngineContext, lifecycle: RunLifecycleEmitter, runId: RunId, permanentFailureOptions: MarkRunPermanentlyFailedOptions): Promise<RunRecord>;
|
|
22
|
+
export declare function updateWorkflowRunMetadata(context: EngineContext, lifecycle: RunMetadataUpdateEmitter, runId: RunId, metadata: StorageValue): Promise<RunRecord>;
|
|
23
|
+
export declare function setRunAttributes(context: EngineContext, runId: RunId, attributes: AttributePatch): Promise<RunRecord>;
|
|
24
|
+
export declare function cancelWorkflowRun(context: EngineContext, lifecycle: RunLifecycleEmitter, runId: RunId): Promise<RunRecord>;
|
|
25
|
+
export declare function resolveStartSpec<TInput, TOutput, TRawInput>(definition: WorkflowDefinition<TInput, TOutput, TRawInput>, options: StartOptions | undefined): Promise<WorkflowDefinition<TInput, TOutput, TRawInput>>;
|
|
26
|
+
export declare function cleanupRuns(context: EngineContext, options: CleanupRunsOptions): Promise<CleanupRunsResult>;
|
|
27
|
+
export declare function applyRetentionPolicy(context: EngineContext, options: RetentionPolicyOptions): Promise<CleanupRunsResult>;
|
|
37
28
|
//#endregion
|
|
38
|
-
export {
|
|
29
|
+
export {};
|