@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
|
@@ -2,6 +2,5 @@ import { Telemetry } from "../types/telemetry.mjs";
|
|
|
2
2
|
import { WorkflowStorage } from "../types/store.mjs";
|
|
3
3
|
//#region src/store/instrumentation.d.ts
|
|
4
4
|
/** Wraps workflow storage operations with telemetry. */
|
|
5
|
-
declare function
|
|
6
|
-
//#endregion
|
|
7
|
-
export { instrumentWorkflowStorage };
|
|
5
|
+
export declare function instrumentStorage(storage: WorkflowStorage, telemetry: Telemetry | undefined): WorkflowStorage;
|
|
6
|
+
//#endregion
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { withStorageTelemetry } from "../telemetry.mjs";
|
|
2
2
|
//#region src/store/instrumentation.ts
|
|
3
3
|
/** Wraps workflow storage operations with telemetry. */
|
|
4
|
-
function
|
|
4
|
+
function instrumentStorage(storage, telemetry) {
|
|
5
5
|
if (telemetry?.withStorageOperation === void 0) return storage;
|
|
6
6
|
const backend = storage.engine.name;
|
|
7
7
|
const run = async (operation, callback) => await withStorageTelemetry(telemetry, {
|
|
@@ -30,94 +30,94 @@ function instrumentWorkflowStorage(storage, telemetry) {
|
|
|
30
30
|
return storage.listenerCount(pattern);
|
|
31
31
|
},
|
|
32
32
|
async watch(callback) {
|
|
33
|
-
return await run("watch",
|
|
33
|
+
return await run("watch", () => storage.watch(callback));
|
|
34
34
|
},
|
|
35
35
|
async unwatch() {
|
|
36
|
-
await run("unwatch",
|
|
36
|
+
await run("unwatch", () => storage.unwatch());
|
|
37
37
|
},
|
|
38
38
|
async get(key) {
|
|
39
|
-
return await run("get",
|
|
39
|
+
return await run("get", () => storage.get(key));
|
|
40
40
|
},
|
|
41
41
|
async tryGet(key) {
|
|
42
|
-
return await run("tryGet",
|
|
42
|
+
return await run("tryGet", () => storage.tryGet(key));
|
|
43
43
|
},
|
|
44
44
|
async set(key, value, options) {
|
|
45
|
-
await run("set",
|
|
45
|
+
await run("set", () => storage.set(key, value, options));
|
|
46
46
|
},
|
|
47
47
|
async trySet(key, value, options) {
|
|
48
|
-
return await run("trySet",
|
|
48
|
+
return await run("trySet", () => storage.trySet(key, value, options));
|
|
49
49
|
},
|
|
50
50
|
async compareAndSet(key, expected, value, options) {
|
|
51
|
-
return await run("compareAndSet",
|
|
51
|
+
return await run("compareAndSet", () => storage.compareAndSet(key, expected, value, options));
|
|
52
52
|
},
|
|
53
53
|
async tryCompareAndSet(key, expected, value, options) {
|
|
54
|
-
return await run("tryCompareAndSet",
|
|
54
|
+
return await run("tryCompareAndSet", () => storage.tryCompareAndSet(key, expected, value, options));
|
|
55
55
|
},
|
|
56
56
|
async compareAndSetMany(items) {
|
|
57
|
-
return await run("compareAndSetMany",
|
|
57
|
+
return await run("compareAndSetMany", () => storage.compareAndSetMany(items));
|
|
58
58
|
},
|
|
59
59
|
async tryCompareAndSetMany(items) {
|
|
60
|
-
return await run("tryCompareAndSetMany",
|
|
60
|
+
return await run("tryCompareAndSetMany", () => storage.tryCompareAndSetMany(items));
|
|
61
61
|
},
|
|
62
62
|
async has(key) {
|
|
63
|
-
return await run("has",
|
|
63
|
+
return await run("has", () => storage.has(key));
|
|
64
64
|
},
|
|
65
65
|
async tryHas(key) {
|
|
66
|
-
return await run("tryHas",
|
|
66
|
+
return await run("tryHas", () => storage.tryHas(key));
|
|
67
67
|
},
|
|
68
68
|
async delete(key) {
|
|
69
|
-
return await run("delete",
|
|
69
|
+
return await run("delete", () => storage.delete(key));
|
|
70
70
|
},
|
|
71
71
|
async tryDelete(key) {
|
|
72
|
-
return await run("tryDelete",
|
|
72
|
+
return await run("tryDelete", () => storage.tryDelete(key));
|
|
73
73
|
},
|
|
74
74
|
async getMany(keys) {
|
|
75
|
-
return await run("getMany",
|
|
75
|
+
return await run("getMany", () => storage.getMany(keys));
|
|
76
76
|
},
|
|
77
77
|
async tryGetMany(keys) {
|
|
78
|
-
return await run("tryGetMany",
|
|
78
|
+
return await run("tryGetMany", () => storage.tryGetMany(keys));
|
|
79
79
|
},
|
|
80
80
|
async setMany(items) {
|
|
81
|
-
await run("setMany",
|
|
81
|
+
await run("setMany", () => storage.setMany(items));
|
|
82
82
|
},
|
|
83
83
|
async trySetMany(items) {
|
|
84
|
-
return await run("trySetMany",
|
|
84
|
+
return await run("trySetMany", () => storage.trySetMany(items));
|
|
85
85
|
},
|
|
86
86
|
async deleteMany(keys) {
|
|
87
|
-
return await run("deleteMany",
|
|
87
|
+
return await run("deleteMany", () => storage.deleteMany(keys));
|
|
88
88
|
},
|
|
89
89
|
async tryDeleteMany(keys) {
|
|
90
|
-
return await run("tryDeleteMany",
|
|
90
|
+
return await run("tryDeleteMany", () => storage.tryDeleteMany(keys));
|
|
91
91
|
},
|
|
92
92
|
async keys(options) {
|
|
93
|
-
return await run("keys",
|
|
93
|
+
return await run("keys", () => storage.keys(options));
|
|
94
94
|
},
|
|
95
95
|
async tryKeys(options) {
|
|
96
|
-
return await run("tryKeys",
|
|
96
|
+
return await run("tryKeys", () => storage.tryKeys(options));
|
|
97
97
|
},
|
|
98
98
|
async entries(options) {
|
|
99
|
-
return await run("entries",
|
|
99
|
+
return await run("entries", () => storage.entries(options));
|
|
100
100
|
},
|
|
101
101
|
async tryEntries(options) {
|
|
102
|
-
return await run("tryEntries",
|
|
102
|
+
return await run("tryEntries", () => storage.tryEntries(options));
|
|
103
103
|
},
|
|
104
104
|
async clear(options) {
|
|
105
|
-
await run("clear",
|
|
105
|
+
await run("clear", () => storage.clear(options));
|
|
106
106
|
},
|
|
107
107
|
async tryClear(options) {
|
|
108
|
-
return await run("tryClear",
|
|
108
|
+
return await run("tryClear", () => storage.tryClear(options));
|
|
109
109
|
},
|
|
110
110
|
async dispose() {
|
|
111
|
-
await run("dispose",
|
|
111
|
+
await run("dispose", () => storage.dispose());
|
|
112
112
|
},
|
|
113
113
|
async [Symbol.asyncDispose]() {
|
|
114
114
|
await instrumented.dispose();
|
|
115
115
|
},
|
|
116
116
|
async tryDispose() {
|
|
117
|
-
return await run("tryDispose",
|
|
117
|
+
return await run("tryDispose", () => storage.tryDispose());
|
|
118
118
|
}
|
|
119
119
|
};
|
|
120
120
|
return instrumented;
|
|
121
121
|
}
|
|
122
122
|
//#endregion
|
|
123
|
-
export {
|
|
123
|
+
export { instrumentStorage };
|
package/dist/store/lock.d.mts
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { LockRecord } from "../types/lock.mjs";
|
|
2
2
|
import { WorkflowStorage } from "../types/store.mjs";
|
|
3
3
|
//#region src/store/lock.d.ts
|
|
4
|
-
declare function getReadableLock(storage: WorkflowStorage, namespace: string, key: string): Promise<LockRecord | undefined>;
|
|
5
|
-
declare function listReadableLocks(storage: WorkflowStorage, namespace: string): Promise<readonly LockRecord[]>;
|
|
6
|
-
declare function updateLockIfCurrent(storage: WorkflowStorage, namespace: string, current: LockRecord | undefined, next: LockRecord): Promise<LockRecord | undefined>;
|
|
7
|
-
//#endregion
|
|
8
|
-
export { getReadableLock, listReadableLocks, updateLockIfCurrent };
|
|
4
|
+
export declare function getReadableLock(storage: WorkflowStorage, namespace: string, key: string): Promise<LockRecord | undefined>;
|
|
5
|
+
export declare function listReadableLocks(storage: WorkflowStorage, namespace: string): Promise<readonly LockRecord[]>;
|
|
6
|
+
export declare function updateLockIfCurrent(storage: WorkflowStorage, namespace: string, current: LockRecord | undefined, next: LockRecord): Promise<LockRecord | undefined>;
|
|
7
|
+
//#endregion
|
package/dist/store/lock.mjs
CHANGED
|
@@ -1,28 +1,26 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../errors/codes.mjs";
|
|
1
2
|
import { WorkflowLockStateError } from "../errors/lock.mjs";
|
|
2
3
|
import "../errors/mod.mjs";
|
|
4
|
+
import { omitUndefined, uniqueBy } from "../collection.mjs";
|
|
3
5
|
import { makeLockKey, makeLockKeyPrefix } from "../store-keys.mjs";
|
|
4
6
|
import { toStorageValue } from "./storage-value.mjs";
|
|
5
7
|
import { isReadableLockRecord } from "./validation.mjs";
|
|
6
|
-
import { compactWorkflowStoreRecord } from "./compaction.mjs";
|
|
7
8
|
//#region src/store/lock.ts
|
|
8
9
|
async function getReadableLock(storage, namespace, key) {
|
|
9
10
|
const lock = await storage.get(makeLockKey(namespace, key));
|
|
10
11
|
return isReadableLockRecord(lock, namespace) ? lock : void 0;
|
|
11
12
|
}
|
|
12
13
|
async function listReadableLocks(storage, namespace) {
|
|
13
|
-
return (await storage.entries({ prefix: makeLockKeyPrefix(namespace) })).map((entry) => entry.value).filter((lock) => isReadableLockRecord(lock, namespace)).sort((a, b) => a.key.localeCompare(b.key))
|
|
14
|
+
return uniqueBy((await storage.entries({ prefix: makeLockKeyPrefix(namespace) })).map((entry) => entry.value).filter((lock) => isReadableLockRecord(lock, namespace)).sort((a, b) => a.key.localeCompare(b.key)), (lock) => lock.key);
|
|
14
15
|
}
|
|
15
16
|
async function updateLockIfCurrent(storage, namespace, current, next) {
|
|
16
17
|
if (next.namespace !== namespace) WorkflowLockStateError.namespaceMismatch(String(next.namespace), namespace);
|
|
17
18
|
if (current !== void 0) {
|
|
18
19
|
if (current.namespace !== namespace) WorkflowLockStateError.namespaceMismatch(String(current.namespace), namespace);
|
|
19
|
-
if (current.key !== next.key) WorkflowLockStateError.
|
|
20
|
+
if (current.key !== next.key) throw new WorkflowLockStateError("Workflow lock key cannot change", WorkflowErrorCode.LOCK_KEY_CHANGE_REJECTED, void 0);
|
|
20
21
|
}
|
|
21
|
-
const compact =
|
|
22
|
+
const compact = omitUndefined(next);
|
|
22
23
|
return await storage.compareAndSet(makeLockKey(namespace, next.key), current === void 0 ? void 0 : toStorageValue(current), toStorageValue(compact)) ? compact : void 0;
|
|
23
24
|
}
|
|
24
|
-
function isFirstLockRecordForKey(lock, index, locks) {
|
|
25
|
-
return locks.findIndex((entry) => entry.key === lock.key) === index;
|
|
26
|
-
}
|
|
27
25
|
//#endregion
|
|
28
26
|
export { getReadableLock, listReadableLocks, updateLockIfCurrent };
|
|
@@ -1,30 +1,23 @@
|
|
|
1
|
-
import { RunId } from "../types/
|
|
2
|
-
import {
|
|
3
|
-
import "../types/run.mjs";
|
|
1
|
+
import { RunId } from "../types/ids.mjs";
|
|
2
|
+
import { StepAttemptRecord } from "../types/step-attempts.mjs";
|
|
4
3
|
import { EventRecord } from "../types/events.mjs";
|
|
5
4
|
import { WorkflowStorage } from "../types/store.mjs";
|
|
6
5
|
import { StorageCompareAndSetManyItem, StorageValue } from "@temelj/storage";
|
|
7
6
|
//#region src/store/materialization.d.ts
|
|
8
|
-
interface
|
|
7
|
+
export interface StepAttemptMaterializationStoragePlan {
|
|
9
8
|
readonly materializes: boolean;
|
|
10
9
|
readonly storageKey?: string;
|
|
11
|
-
readonly current?:
|
|
10
|
+
readonly current?: StepAttemptRecord;
|
|
12
11
|
readonly item?: StorageCompareAndSetManyItem<StorageValue>;
|
|
13
12
|
}
|
|
14
|
-
interface
|
|
13
|
+
interface StepAttemptAppendMaterializationOutcome {
|
|
15
14
|
readonly status: "appended" | "duplicate";
|
|
16
15
|
readonly events: readonly EventRecord[];
|
|
17
16
|
readonly previousEventHistory?: StorageValue;
|
|
18
17
|
}
|
|
19
|
-
declare function materializeStepAttemptForAppendOutcome(storage: WorkflowStorage, namespace: string, runId: RunId, event: EventRecord, outcome:
|
|
20
|
-
declare function
|
|
21
|
-
declare function reconcileStepAttempts(storage: WorkflowStorage, namespace: string, runId: RunId, events: readonly EventRecord[]): Promise<readonly
|
|
22
|
-
declare function
|
|
23
|
-
readonly repairStatusMismatch?: boolean;
|
|
24
|
-
}): Promise<void>;
|
|
25
|
-
declare function shouldStoreStepAttempt(current: WorkflowStepAttemptRecord | undefined, next: WorkflowStepAttemptRecord, options?: {
|
|
26
|
-
readonly repairStatusMismatch?: boolean;
|
|
27
|
-
}): boolean;
|
|
28
|
-
declare function isSameStepAttemptIdentity(current: WorkflowStepAttemptRecord, next: WorkflowStepAttemptRecord): boolean;
|
|
18
|
+
export declare function materializeStepAttemptForAppendOutcome(storage: WorkflowStorage, namespace: string, runId: RunId, event: EventRecord, outcome: StepAttemptAppendMaterializationOutcome): Promise<void>;
|
|
19
|
+
export declare function createStepAttemptMaterializationStoragePlan(storage: WorkflowStorage, namespace: string, runId: RunId, event: EventRecord): Promise<StepAttemptMaterializationStoragePlan>;
|
|
20
|
+
export declare function reconcileStepAttempts(storage: WorkflowStorage, namespace: string, runId: RunId, events: readonly EventRecord[]): Promise<readonly StepAttemptRecord[]>;
|
|
21
|
+
export declare function isSameStepAttemptIdentity(current: StepAttemptRecord, next: StepAttemptRecord): boolean;
|
|
29
22
|
//#endregion
|
|
30
|
-
export {
|
|
23
|
+
export {};
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../errors/codes.mjs";
|
|
1
2
|
import { WorkflowStateError } from "../errors/base.mjs";
|
|
2
|
-
import { makeWorkflowStepAttemptKey } from "../history/attempt-key.mjs";
|
|
3
3
|
import { omitUndefined } from "../collection.mjs";
|
|
4
|
+
import { makeStepAttemptKey, stepAttemptKey } from "../store-keys.mjs";
|
|
4
5
|
import { getWorkflowEventStepAttemptKey } from "../events/descriptors.mjs";
|
|
5
|
-
import {
|
|
6
|
-
import "../history/
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
6
|
+
import { applyStepAttemptEvent } from "../history/projection.mjs";
|
|
7
|
+
import "../history/replay.mjs";
|
|
8
|
+
import { createStepAttempts } from "../history/step-attempts.mjs";
|
|
9
|
+
import { supportsConditionalWrite } from "./capabilities.mjs";
|
|
9
10
|
import { toStorageValue } from "./storage-value.mjs";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { requireReadableStoredWorkflowRun } from "./run.mjs";
|
|
11
|
+
import { parseStoredStepAttemptRecord } from "./validation.mjs";
|
|
12
|
+
import { requireReadableStoredRun } from "./run.mjs";
|
|
13
|
+
import { rollbackAppendedEventIfCurrent } from "./events.mjs";
|
|
14
14
|
//#region src/store/materialization.ts
|
|
15
15
|
const MAX_MATERIALIZE_STEP_ATTEMPT_ATTEMPTS = 16;
|
|
16
16
|
const WORKFLOW_MATERIALIZED_STEP_DESCRIPTORS = {
|
|
@@ -28,9 +28,9 @@ const WORKFLOW_MATERIALIZED_STEP_DESCRIPTORS = {
|
|
|
28
28
|
deterministic: { identityFields: [] }
|
|
29
29
|
};
|
|
30
30
|
async function materializeStepAttempt(storage, namespace, runId, event) {
|
|
31
|
-
const storageKey =
|
|
31
|
+
const storageKey = getStepAttemptMaterializationStorageKey(namespace, runId, event);
|
|
32
32
|
if (storageKey === void 0) return;
|
|
33
|
-
await materializeStepAttemptIfCurrent(storage, runId, storageKey, (current) =>
|
|
33
|
+
await materializeStepAttemptIfCurrent(storage, runId, storageKey, (current) => applyStepAttemptEvent(runId, event, current));
|
|
34
34
|
}
|
|
35
35
|
async function materializeStepAttemptForAppendOutcome(storage, namespace, runId, event, outcome) {
|
|
36
36
|
try {
|
|
@@ -40,7 +40,7 @@ async function materializeStepAttemptForAppendOutcome(storage, namespace, runId,
|
|
|
40
40
|
throw error;
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
function
|
|
43
|
+
function getStepAttemptMaterializationStorageKey(namespace, runId, event) {
|
|
44
44
|
let attemptKey;
|
|
45
45
|
try {
|
|
46
46
|
attemptKey = getWorkflowEventStepAttemptKey(event);
|
|
@@ -49,58 +49,64 @@ function getWorkflowStepAttemptMaterializationStorageKey(namespace, runId, event
|
|
|
49
49
|
}
|
|
50
50
|
return attemptKey === void 0 ? void 0 : makeStepAttemptKey(namespace, runId, attemptKey);
|
|
51
51
|
}
|
|
52
|
-
function
|
|
53
|
-
const storageKey =
|
|
52
|
+
function createStepAttemptMaterializationUpdate(namespace, runId, event, current) {
|
|
53
|
+
const storageKey = getStepAttemptMaterializationStorageKey(namespace, runId, event);
|
|
54
54
|
if (storageKey === void 0) return;
|
|
55
|
-
const next =
|
|
55
|
+
const next = applyStepAttemptEvent(runId, event, current);
|
|
56
56
|
return {
|
|
57
57
|
storageKey,
|
|
58
|
-
|
|
58
|
+
next,
|
|
59
59
|
shouldStore: next !== void 0 && shouldStoreStepAttempt(current, next)
|
|
60
60
|
};
|
|
61
61
|
}
|
|
62
|
-
async function
|
|
63
|
-
const storageKey =
|
|
62
|
+
async function createStepAttemptMaterializationStoragePlan(storage, namespace, runId, event) {
|
|
63
|
+
const storageKey = getStepAttemptMaterializationStorageKey(namespace, runId, event);
|
|
64
64
|
if (storageKey === void 0) return { materializes: false };
|
|
65
|
-
const { raw, current } = await
|
|
66
|
-
const materialization =
|
|
65
|
+
const { raw, current } = await readStoredStepAttempt(storage, storageKey);
|
|
66
|
+
const materialization = createStepAttemptMaterializationUpdate(namespace, runId, event, current);
|
|
67
67
|
return {
|
|
68
68
|
materializes: true,
|
|
69
69
|
storageKey,
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
current,
|
|
71
|
+
item: materialization?.shouldStore === true && materialization.next !== void 0 ? {
|
|
72
72
|
key: materialization.storageKey,
|
|
73
73
|
expected: raw,
|
|
74
74
|
value: toStorageValue(omitUndefined(materialization.next))
|
|
75
|
-
}
|
|
75
|
+
} : void 0
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
78
|
async function reconcileStepAttempts(storage, namespace, runId, events) {
|
|
79
|
-
const attempts =
|
|
80
|
-
await
|
|
81
|
-
await Promise.all(attempts.map((attempt) => materializeStepAttemptIfCurrent(storage, runId, makeStepAttemptKey(namespace, runId,
|
|
79
|
+
const attempts = createStepAttempts(runId, events);
|
|
80
|
+
await requireReadableStoredRun(storage, namespace, runId);
|
|
81
|
+
await Promise.all(attempts.map((attempt) => materializeStepAttemptIfCurrent(storage, runId, makeStepAttemptKey(namespace, runId, stepAttemptKey(attempt.stepId, attempt.attempt)), () => attempt, { repairStatusMismatch: true })));
|
|
82
82
|
return attempts;
|
|
83
83
|
}
|
|
84
84
|
async function materializeStepAttemptIfCurrent(storage, runId, storageKey, createNext, options = {}) {
|
|
85
|
-
if (!
|
|
86
|
-
const { current } = await
|
|
85
|
+
if (!supportsConditionalWrite(storage)) {
|
|
86
|
+
const { current } = await readStoredStepAttempt(storage, storageKey);
|
|
87
87
|
const next = createNext(current);
|
|
88
88
|
if (next !== void 0 && shouldStoreStepAttempt(current, next, options)) await storage.set(storageKey, toStorageValue(omitUndefined(next)));
|
|
89
89
|
return;
|
|
90
90
|
}
|
|
91
91
|
for (let attempt = 0; attempt < MAX_MATERIALIZE_STEP_ATTEMPT_ATTEMPTS; attempt++) {
|
|
92
|
-
const { raw, current } = await
|
|
92
|
+
const { raw, current } = await readStoredStepAttempt(storage, storageKey);
|
|
93
93
|
const next = createNext(current);
|
|
94
94
|
if (next === void 0 || !shouldStoreStepAttempt(current, next, options)) return;
|
|
95
95
|
if (await storage.compareAndSet(storageKey, raw, toStorageValue(omitUndefined(next)))) return;
|
|
96
96
|
}
|
|
97
|
-
WorkflowStateError
|
|
97
|
+
throw new WorkflowStateError(`Failed to materialize workflow step attempt for run ${runId} after ${MAX_MATERIALIZE_STEP_ATTEMPT_ATTEMPTS} attempts`, {
|
|
98
|
+
code: WorkflowErrorCode.STATE_STEP_ATTEMPT_MATERIALIZATION_FAILED,
|
|
99
|
+
details: {
|
|
100
|
+
runId,
|
|
101
|
+
attempts: MAX_MATERIALIZE_STEP_ATTEMPT_ATTEMPTS
|
|
102
|
+
}
|
|
103
|
+
});
|
|
98
104
|
}
|
|
99
|
-
async function
|
|
105
|
+
async function readStoredStepAttempt(storage, storageKey) {
|
|
100
106
|
const raw = await storage.get(storageKey);
|
|
101
107
|
return {
|
|
102
108
|
raw,
|
|
103
|
-
current:
|
|
109
|
+
current: parseStoredStepAttemptRecord(raw)
|
|
104
110
|
};
|
|
105
111
|
}
|
|
106
112
|
function shouldStoreStepAttempt(current, next, options = {}) {
|
|
@@ -124,4 +130,4 @@ function isSameMaterializedStepAttemptFields(current, next, fields) {
|
|
|
124
130
|
return fields.every((field) => current[field] === next[field]);
|
|
125
131
|
}
|
|
126
132
|
//#endregion
|
|
127
|
-
export {
|
|
133
|
+
export { createStepAttemptMaterializationStoragePlan, isSameStepAttemptIdentity, materializeStepAttemptForAppendOutcome, reconcileStepAttempts };
|
package/dist/store/mod.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ClaimRunOptions, CleanupIndexKey, CreateWorkflowStoreOptions, ExtendRunLeaseOptions, IdempotencyKeyOptions, MessageIdempotencyIndex, ReleaseRunLeaseOptions, StoreCapabilities, WorkflowEventHistoryChangeWaitOptions, WorkflowStorage } from "../types/store.mjs";
|
|
2
|
+
import { cleanupIndexKeySchema, cleanupMarkerRecordSchema, cleanupModeSchema, messageIdempotencyIndexSchema, stepAttemptRecordSchema, stepAttemptStatusSchema } from "../schema/store.mjs";
|
|
2
3
|
import { getWorkflowStoreCapabilities } from "./capabilities.mjs";
|
|
3
4
|
import { WorkflowStore, createWorkflowStore } from "./create.mjs";
|
|
4
|
-
|
|
5
|
-
export { type CreateWorkflowStoreOptions, type WorkflowClaimRunOptions, type WorkflowCleanupIndexKey, type WorkflowCleanupIndexValue, type WorkflowCleanupRepository, type WorkflowConditionalEventAppender, type WorkflowEventAppender, type WorkflowEventHistoryChangeWaitOptions, type WorkflowEventHistoryWatcher, type WorkflowEventLog, type WorkflowEventReader, type WorkflowExtendRunLeaseOptions, type WorkflowIdempotencyIndex, type WorkflowIdempotencyKeyOptions, type WorkflowLockConditionalWriterRepository, type WorkflowLockListerRepository, type WorkflowLockReaderRepository, type WorkflowLockRepository, type WorkflowMessageIdempotencyIndex, type WorkflowMessageIdempotencyIndexLookup, type WorkflowMessageIdempotencyRepairModel, type WorkflowReleaseRunLeaseOptions, type WorkflowRunConditionalWriterRepository, type WorkflowRunCreationRepository, type WorkflowRunLeaseRepository, type WorkflowRunListerRepository, type WorkflowRunQueryRepository, type WorkflowRunReaderRepository, type WorkflowRunRepository, type WorkflowRunUnconditionalWriterRepository, type WorkflowRunWriterRepository, type WorkflowScheduleConditionalWriterRepository, type WorkflowScheduleCreationRepository, type WorkflowScheduleListerRepository, type WorkflowScheduleQueryRepository, type WorkflowScheduleReaderRepository, type WorkflowScheduleRepository, type WorkflowStepAttemptLookup, type WorkflowStepAttemptReadModel, type WorkflowStorage, WorkflowStore, type WorkflowStoreCapabilities, type WorkflowStoreCapabilitiesSource, type WorkflowStoreMetadata, type WorkflowStoreNamespace, type WorkflowStoreStorageContext, createWorkflowStore, getWorkflowStoreCapabilities, workflowCleanupIndexKeySchema, workflowMessageIdempotencyIndexSchema };
|
|
5
|
+
export { type ClaimRunOptions, type CleanupIndexKey, type CreateWorkflowStoreOptions, type ExtendRunLeaseOptions, type IdempotencyKeyOptions, type MessageIdempotencyIndex, type ReleaseRunLeaseOptions, type StoreCapabilities, type WorkflowEventHistoryChangeWaitOptions, type WorkflowStorage, WorkflowStore, cleanupIndexKeySchema, cleanupMarkerRecordSchema, cleanupModeSchema, createWorkflowStore, getWorkflowStoreCapabilities, messageIdempotencyIndexSchema, stepAttemptRecordSchema, stepAttemptStatusSchema };
|
package/dist/store/mod.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { getWorkflowStoreCapabilities } from "./capabilities.mjs";
|
|
2
|
-
import {
|
|
2
|
+
import { cleanupIndexKeySchema, cleanupMarkerRecordSchema, cleanupModeSchema, messageIdempotencyIndexSchema, stepAttemptRecordSchema, stepAttemptStatusSchema } from "../schema/store.mjs";
|
|
3
3
|
import { WorkflowStore, createWorkflowStore } from "./create.mjs";
|
|
4
|
-
export { WorkflowStore, createWorkflowStore, getWorkflowStoreCapabilities,
|
|
4
|
+
export { WorkflowStore, cleanupIndexKeySchema, cleanupMarkerRecordSchema, cleanupModeSchema, createWorkflowStore, getWorkflowStoreCapabilities, messageIdempotencyIndexSchema, stepAttemptRecordSchema, stepAttemptStatusSchema };
|
package/dist/store/query.d.mts
CHANGED
|
@@ -1,24 +1,20 @@
|
|
|
1
|
-
import { RunId } from "../types/
|
|
1
|
+
import { RunId } from "../types/ids.mjs";
|
|
2
2
|
import { ListSchedulesOptions, ScheduleRecord } from "../types/schedule.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { ListRunsOptions } from "../types/run-list.mjs";
|
|
4
|
+
import { ListStepAttemptsOptions, StepAttemptRecord } from "../types/step-attempts.mjs";
|
|
5
|
+
import { RunRecord } from "../types/run.mjs";
|
|
6
|
+
import { WorkflowStorage, WorkflowStore } from "../types/store.mjs";
|
|
7
7
|
//#region src/store/query.d.ts
|
|
8
|
-
|
|
9
|
-
declare function queryWorkflowRuns(storage: WorkflowStorage, namespace: string, options: WorkflowListRunsOptions | undefined, query: {
|
|
8
|
+
export declare function queryRuns(storage: WorkflowStorage, namespace: string, options: ListRunsOptions | undefined, query: {
|
|
10
9
|
readonly label: string;
|
|
11
10
|
readonly sort: boolean;
|
|
12
|
-
}): Promise<readonly
|
|
13
|
-
declare function
|
|
11
|
+
}): Promise<readonly RunRecord[]>;
|
|
12
|
+
export declare function queryStepAttempts(storage: WorkflowStorage, namespace: string, store: WorkflowStore, runId: RunId, options: ListStepAttemptsOptions | undefined, _query: {
|
|
14
13
|
readonly label: string;
|
|
15
|
-
}): Promise<readonly
|
|
16
|
-
declare function querySchedules(storage: WorkflowStorage, namespace: string, options: ListSchedulesOptions | undefined, _query: {
|
|
14
|
+
}): Promise<readonly StepAttemptRecord[]>;
|
|
15
|
+
export declare function querySchedules(storage: WorkflowStorage, namespace: string, options: ListSchedulesOptions | undefined, _query: {
|
|
17
16
|
readonly label: string;
|
|
18
17
|
}): Promise<readonly ScheduleRecord[]>;
|
|
19
|
-
declare function
|
|
20
|
-
declare function
|
|
21
|
-
|
|
22
|
-
declare function matchesScheduleListOptions(schedule: ScheduleRecord, options: ListSchedulesOptions | undefined): boolean;
|
|
23
|
-
//#endregion
|
|
24
|
-
export { getRequiredStoreRun, matchesScheduleListOptions, matchesWorkflowRunListOptions, matchesWorkflowStepAttemptListOptions, querySchedules, queryWorkflowRuns, queryWorkflowStepAttempts };
|
|
18
|
+
export declare function getRequiredRun(store: WorkflowStore, runId: RunId): Promise<RunRecord>;
|
|
19
|
+
export declare function matchesRunListOptions(run: RunRecord, options: ListRunsOptions | undefined): boolean;
|
|
20
|
+
//#endregion
|
package/dist/store/query.mjs
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
|
+
import { compareOptionalTimestamps, matchesOptionalDurationRange, matchesOptionalTimestampRange, matchesTimestampRange } from "../temporal.mjs";
|
|
1
2
|
import { WorkflowRunNotFoundError } from "../errors/run.mjs";
|
|
2
3
|
import "../errors/mod.mjs";
|
|
3
4
|
import { matchesOptionalValue, uniqueBy } from "../collection.mjs";
|
|
4
|
-
import { compareOptionalTimestamps, matchesOptionalDurationRange, matchesOptionalTimestampRange, matchesTimestampRange } from "../temporal.mjs";
|
|
5
5
|
import { makeRunKeyPrefix, makeScheduleKeyPrefix } from "../store-keys.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { isListableRunRecord, isReadableScheduleRecord } from "./validation.mjs";
|
|
7
7
|
import { reconcileStepAttempts } from "./materialization.mjs";
|
|
8
8
|
//#region src/store/query.ts
|
|
9
|
-
async function
|
|
10
|
-
const runs = (await storage.entries({ prefix: makeRunKeyPrefix(namespace) })).map((entry) => entry.value).filter((run) =>
|
|
9
|
+
async function queryRuns(storage, namespace, options, query) {
|
|
10
|
+
const runs = (await storage.entries({ prefix: makeRunKeyPrefix(namespace) })).map((entry) => entry.value).filter((run) => isListableRunRecord(run, namespace)).filter((run) => matchesRunListOptions(run, options));
|
|
11
11
|
const uniqueRuns = uniqueBy(runs, (run) => run.id);
|
|
12
12
|
if (!query.sort) return uniqueRuns;
|
|
13
|
-
return [...uniqueRuns].sort(
|
|
13
|
+
return [...uniqueRuns].sort(compareRunsForQuery);
|
|
14
14
|
}
|
|
15
|
-
async function
|
|
16
|
-
await
|
|
17
|
-
return (await reconcileStepAttempts(storage, namespace, runId, await store.getEvents(runId))).filter((attempt) =>
|
|
15
|
+
async function queryStepAttempts(storage, namespace, store, runId, options, _query) {
|
|
16
|
+
await getRequiredRun(store, runId);
|
|
17
|
+
return (await reconcileStepAttempts(storage, namespace, runId, await store.getEvents(runId))).filter((attempt) => matchesStepAttemptListOptions(attempt, options));
|
|
18
18
|
}
|
|
19
19
|
async function querySchedules(storage, namespace, options, _query) {
|
|
20
20
|
const schedules = (await storage.entries({ prefix: makeScheduleKeyPrefix(namespace) })).map((entry) => entry.value).filter((schedule) => isReadableScheduleRecord(schedule, namespace)).filter((schedule) => matchesScheduleListOptions(schedule, options)).sort(compareSchedulesForQuery);
|
|
21
21
|
return uniqueBy(schedules, (schedule) => schedule.id);
|
|
22
22
|
}
|
|
23
|
-
function
|
|
23
|
+
function compareRunsForQuery(left, right) {
|
|
24
24
|
const createdOrder = compareOptionalTimestamps(left.createdAt, right.createdAt);
|
|
25
25
|
if (createdOrder !== 0) return createdOrder;
|
|
26
26
|
return left.id.localeCompare(right.id);
|
|
@@ -28,12 +28,12 @@ function compareWorkflowRunsForQuery(left, right) {
|
|
|
28
28
|
function compareSchedulesForQuery(left, right) {
|
|
29
29
|
return Temporal.Instant.compare(left.nextFireAt, right.nextFireAt) || Temporal.Instant.compare(left.createdAt, right.createdAt) || left.id.localeCompare(right.id);
|
|
30
30
|
}
|
|
31
|
-
async function
|
|
31
|
+
async function getRequiredRun(store, runId) {
|
|
32
32
|
const run = await store.getRun(runId);
|
|
33
33
|
if (run === void 0) WorkflowRunNotFoundError.notFound(runId);
|
|
34
34
|
return run;
|
|
35
35
|
}
|
|
36
|
-
function
|
|
36
|
+
function matchesRunListOptions(run, options) {
|
|
37
37
|
if (options?.status !== void 0 && !matchesOptionalValue(run.status, options.status)) return false;
|
|
38
38
|
if (options?.workflowName !== void 0 && run.workflowName !== options.workflowName) return false;
|
|
39
39
|
if (options?.workflowVersion !== void 0 && run.workflowVersion !== options.workflowVersion) return false;
|
|
@@ -48,7 +48,7 @@ function matchesWorkflowRunListOptions(run, options) {
|
|
|
48
48
|
if (!matchesRunAttributeFilters(run, options)) return false;
|
|
49
49
|
return matchesTimestampRange(run.createdAt, options?.createdAtFrom, options?.createdAtTo) && matchesTimestampRange(run.updatedAt, options?.updatedAtFrom, options?.updatedAtTo) && matchesOptionalTimestampRange(run.finishedAt, options?.finishedAtFrom, options?.finishedAtTo) && matchesOptionalTimestampRange(run.startedAt, options?.startedAtFrom, options?.startedAtTo) && matchesOptionalTimestampRange(run.availableAt, options?.availableAtFrom, options?.availableAtTo) && matchesOptionalTimestampRange(run.leaseExpiresAt, options?.leaseExpiresAtFrom, options?.leaseExpiresAtTo) && matchesOptionalTimestampRange(run.retryAt, options?.retryAtFrom, options?.retryAtTo);
|
|
50
50
|
}
|
|
51
|
-
function
|
|
51
|
+
function matchesStepAttemptListOptions(attempt, options) {
|
|
52
52
|
if (options?.status !== void 0 && !matchesOptionalValue(attempt.status, options.status)) return false;
|
|
53
53
|
if (options?.kind !== void 0 && !matchesOptionalValue(attempt.kind, options.kind)) return false;
|
|
54
54
|
if (options?.stepId !== void 0 && attempt.stepId !== options.stepId) return false;
|
|
@@ -81,4 +81,4 @@ function matchesRunAttributeFilters(run, options) {
|
|
|
81
81
|
return true;
|
|
82
82
|
}
|
|
83
83
|
//#endregion
|
|
84
|
-
export {
|
|
84
|
+
export { getRequiredRun, matchesRunListOptions, queryRuns, querySchedules, queryStepAttempts };
|
package/dist/store/run.d.mts
CHANGED
|
@@ -1,49 +1,40 @@
|
|
|
1
|
-
import { RunId } from "../types/
|
|
1
|
+
import { RunId } from "../types/ids.mjs";
|
|
2
2
|
import { WorkflowPage } from "../types/pagination.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { WorkflowRunRecord } from "../types/run.mjs";
|
|
3
|
+
import { ListRunsOptions, ListRunsPageOptions } from "../types/run-list.mjs";
|
|
4
|
+
import { RunRecord } from "../types/run.mjs";
|
|
6
5
|
import { EventRecord } from "../types/events.mjs";
|
|
7
|
-
import {
|
|
6
|
+
import { ClaimRunOptions, WorkflowStorage } from "../types/store.mjs";
|
|
8
7
|
//#region src/store/run.d.ts
|
|
9
|
-
interface
|
|
10
|
-
getRun(runId: RunId): Promise<
|
|
8
|
+
interface RunReader {
|
|
9
|
+
getRun(runId: RunId): Promise<RunRecord | undefined>;
|
|
11
10
|
}
|
|
12
|
-
interface
|
|
13
|
-
listRuns(options?:
|
|
11
|
+
interface RunClaimReader extends RunReader {
|
|
12
|
+
listRuns(options?: ListRunsOptions): Promise<readonly RunRecord[]>;
|
|
14
13
|
}
|
|
15
|
-
declare function updateRunIfCurrent(storage: WorkflowStorage, namespace: string, store:
|
|
16
|
-
declare function getWorkflowRun(storage: WorkflowStorage, namespace: string, runId: RunId): Promise<
|
|
17
|
-
declare function listWorkflowRuns(storage: WorkflowStorage, namespace: string, options?:
|
|
18
|
-
declare function listWorkflowRunsPage(storage: WorkflowStorage, namespace: string, options?:
|
|
19
|
-
declare function countWorkflowRuns(storage: WorkflowStorage, namespace: string, options?:
|
|
20
|
-
declare function updateWorkflowRun(storage: WorkflowStorage, namespace: string, store:
|
|
21
|
-
declare function claimWorkflowRun(storage: WorkflowStorage, namespace: string, store:
|
|
22
|
-
declare function extendWorkflowRunLease(storage: WorkflowStorage, namespace: string, store:
|
|
14
|
+
export declare function updateRunIfCurrent(storage: WorkflowStorage, namespace: string, store: RunReader, current: RunRecord, next: RunRecord): Promise<RunRecord | undefined>;
|
|
15
|
+
export declare function getWorkflowRun(storage: WorkflowStorage, namespace: string, runId: RunId): Promise<RunRecord | undefined>;
|
|
16
|
+
export declare function listWorkflowRuns(storage: WorkflowStorage, namespace: string, options?: ListRunsOptions): Promise<readonly RunRecord[]>;
|
|
17
|
+
export declare function listWorkflowRunsPage(storage: WorkflowStorage, namespace: string, options?: ListRunsPageOptions): Promise<WorkflowPage<RunRecord>>;
|
|
18
|
+
export declare function countWorkflowRuns(storage: WorkflowStorage, namespace: string, options?: ListRunsOptions): Promise<number>;
|
|
19
|
+
export declare function updateWorkflowRun(storage: WorkflowStorage, namespace: string, store: RunReader, run: RunRecord): Promise<RunRecord>;
|
|
20
|
+
export declare function claimWorkflowRun(storage: WorkflowStorage, namespace: string, store: RunClaimReader, options: ClaimRunOptions): Promise<RunRecord | undefined>;
|
|
21
|
+
export declare function extendWorkflowRunLease(storage: WorkflowStorage, namespace: string, store: RunReader, options: {
|
|
23
22
|
readonly runId: RunId;
|
|
24
23
|
readonly workerId: string;
|
|
25
24
|
readonly attempts?: number;
|
|
26
25
|
readonly now: Temporal.Instant;
|
|
27
26
|
readonly leaseDuration: Temporal.Duration;
|
|
28
|
-
}): Promise<
|
|
29
|
-
declare function releaseWorkflowRunLease(storage: WorkflowStorage, namespace: string, store:
|
|
27
|
+
}): Promise<RunRecord | undefined>;
|
|
28
|
+
export declare function releaseWorkflowRunLease(storage: WorkflowStorage, namespace: string, store: RunReader, options: {
|
|
30
29
|
readonly runId: RunId;
|
|
31
30
|
readonly workerId: string;
|
|
32
31
|
readonly attempts?: number;
|
|
33
32
|
readonly now: Temporal.Instant;
|
|
34
|
-
}): Promise<
|
|
35
|
-
declare function
|
|
36
|
-
declare function
|
|
37
|
-
declare function
|
|
38
|
-
declare function
|
|
39
|
-
declare function
|
|
40
|
-
declare function isWorkflowRunStaleForAppend(currentRun: WorkflowRunRecord, event: EventRecord): boolean;
|
|
41
|
-
declare function rollbackAppendedEventIfRunStale(storage: WorkflowStorage, namespace: string, runId: RunId, event: EventRecord, events: readonly EventRecord[]): Promise<boolean>;
|
|
42
|
-
declare function claimedRunPatch(run: WorkflowRunRecord, workerId: WorkerId, now: Temporal.Instant, leaseDuration: Temporal.Duration): WorkflowRunRecord;
|
|
43
|
-
declare function extendedRunLeasePatch(run: WorkflowRunRecord, now: Temporal.Instant, leaseDuration: Temporal.Duration): WorkflowRunRecord;
|
|
44
|
-
declare function releaseRunLeasePatch(run: WorkflowRunRecord, now: Temporal.Instant): WorkflowRunRecord;
|
|
45
|
-
declare function firstClaimableRun(store: WorkflowRunClaimReader, options: WorkflowClaimRunOptions, listOptions: WorkflowListRunsOptions): Promise<WorkflowRunRecord | undefined>;
|
|
46
|
-
declare function canClaimRun(run: WorkflowRunRecord, options: WorkflowClaimRunOptions, listOptions: WorkflowListRunsOptions): boolean;
|
|
47
|
-
declare function isStaleLeaseClaim(run: WorkflowRunRecord, now: Temporal.Instant): boolean;
|
|
33
|
+
}): Promise<RunRecord | undefined>;
|
|
34
|
+
export declare function isStoredRunRevisionCurrent(storage: WorkflowStorage, namespace: string, currentRun: RunRecord): Promise<boolean>;
|
|
35
|
+
export declare function getReadableStoredRun(storage: WorkflowStorage, namespace: string, runId: RunId): Promise<RunRecord | undefined>;
|
|
36
|
+
export declare function requireReadableStoredRun(storage: WorkflowStorage, namespace: string, runId: RunId): Promise<RunRecord>;
|
|
37
|
+
export declare function isRunStaleForAppend(currentRun: RunRecord, event: EventRecord): boolean;
|
|
38
|
+
export declare function rollbackAppendedEventIfRunStale(storage: WorkflowStorage, namespace: string, runId: RunId, event: EventRecord, events: readonly EventRecord[]): Promise<boolean>;
|
|
48
39
|
//#endregion
|
|
49
|
-
export {
|
|
40
|
+
export {};
|