@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
|
@@ -1,31 +1,35 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../errors/codes.mjs";
|
|
1
2
|
import { WorkflowOptionsError } from "../errors/base.mjs";
|
|
2
3
|
import { WorkflowDurationError, WorkflowReplayDivergenceError } from "../errors/failures.mjs";
|
|
3
4
|
import { WorkflowChildWorkflowTimeoutError, WorkflowRunCanceledError, WorkflowRunInvalidError } from "../errors/run.mjs";
|
|
4
|
-
import { getRequiredRun, isPositiveSafeInteger, nextPositiveSafeInteger, safeDuration } from "../utility.mjs";
|
|
5
5
|
import { WorkflowStepAttemptLimitError, WorkflowStepExecutionError } from "../errors/step.mjs";
|
|
6
|
-
import { defineWorkflowFromTarget } from "../definition.mjs";
|
|
7
6
|
import { workflowErrorFromRecord } from "../errors/records.mjs";
|
|
7
|
+
import { defineFromTarget } from "../definition.mjs";
|
|
8
|
+
import { isPositiveSafeInteger, nextPositiveSafeInteger, safeDuration } from "../values.mjs";
|
|
9
|
+
import { getRequiredRun } from "../store/query.mjs";
|
|
8
10
|
import { serializeError, toOptionalPersistedValue } from "./serialization.mjs";
|
|
9
11
|
import { enforceStepAttemptBudget, nextRetryAt, resolveChildWorkflowRetryConfig } from "./retry.mjs";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
12
|
+
import { Suspended } from "./signals.mjs";
|
|
13
|
+
import { requireCurrentExecutionOwner, requireDefinitionMatchesRun } from "./state.mjs";
|
|
14
|
+
import { cancelWorkflowRun } from "./run-service.mjs";
|
|
15
|
+
import { resolveCommandIdentityFromCandidates } from "./command-identity.mjs";
|
|
16
|
+
import { appendDurableEvent, appendDurableStepStartedEvent } from "./durable-command.mjs";
|
|
17
|
+
import { recordedInstant, requireRecordedDurableTerminalStarted } from "./replay.mjs";
|
|
14
18
|
import { deepEquals } from "@temelj/value";
|
|
15
19
|
//#region src/engine/child-workflow.ts
|
|
16
|
-
function
|
|
20
|
+
function createStepWorkflowApi(environment, engine) {
|
|
17
21
|
return {
|
|
18
22
|
async run(workflow, input, options) {
|
|
19
|
-
return await runChildWorkflow(environment, engine,
|
|
23
|
+
return await runChildWorkflow(environment, engine, defineFromTarget(workflow), input, options);
|
|
20
24
|
},
|
|
21
25
|
async start(workflow, input, options) {
|
|
22
|
-
return await startBackgroundChildWorkflow(environment, engine,
|
|
26
|
+
return await startBackgroundChildWorkflow(environment, engine, defineFromTarget(workflow), input, options);
|
|
23
27
|
}
|
|
24
28
|
};
|
|
25
29
|
}
|
|
26
30
|
async function runChildWorkflow(environment, engine, definition, input, options) {
|
|
27
31
|
const { store, runId, history, now, maximumStepAttemptsPerRun, limits, executionOwner } = environment;
|
|
28
|
-
const identity =
|
|
32
|
+
const identity = resolveCommandIdentityFromCandidates(history, "workflow", [
|
|
29
33
|
options?.commandId,
|
|
30
34
|
options?.name,
|
|
31
35
|
definition.name
|
|
@@ -36,7 +40,7 @@ async function runChildWorkflow(environment, engine, definition, input, options)
|
|
|
36
40
|
requireRecordedDurableTerminalStarted(identity, history.hasStartedEventBeforeTerminalEvent(completed));
|
|
37
41
|
if (started === void 0 || isChildWorkflowTerminalForStartedAttempt(completed, started)) {
|
|
38
42
|
requireChildWorkflowReplayMatches(runId, identity, started, definition, input, options, limits);
|
|
39
|
-
|
|
43
|
+
recordedInstant("workflow", identity, "completion", completed.timestamp);
|
|
40
44
|
return completed.result;
|
|
41
45
|
}
|
|
42
46
|
}
|
|
@@ -50,7 +54,7 @@ async function runChildWorkflow(environment, engine, definition, input, options)
|
|
|
50
54
|
const pollInterval = resolveChildWorkflowPollInterval(options);
|
|
51
55
|
const latestFailedAttempt = failed !== void 0 && (started === void 0 || isChildWorkflowTerminalForStartedAttempt(failed, started)) ? failed : void 0;
|
|
52
56
|
if (latestFailedAttempt !== void 0) {
|
|
53
|
-
const failedAt =
|
|
57
|
+
const failedAt = recordedInstant("workflow", identity, "failure", latestFailedAttempt.timestamp);
|
|
54
58
|
const nextAttempt = nextChildWorkflowRetryAttempt(runId, latestFailedAttempt.attempt, maximumStepAttemptsPerRun);
|
|
55
59
|
if (retry.maximumAttempts !== 0 && nextAttempt > retry.maximumAttempts) WorkflowStepExecutionError.failed({
|
|
56
60
|
stepId: identity.id,
|
|
@@ -59,14 +63,15 @@ async function runChildWorkflow(environment, engine, definition, input, options)
|
|
|
59
63
|
cause: workflowErrorFromRecord(latestFailedAttempt.error)
|
|
60
64
|
});
|
|
61
65
|
const retryAt = nextRetryAt(failedAt, retry, latestFailedAttempt.attempt, "Workflow step retry delay");
|
|
62
|
-
if (retryAt !== void 0 && Temporal.Instant.compare(retryAt, now()) > 0)
|
|
66
|
+
if (retryAt !== void 0 && Temporal.Instant.compare(retryAt, now()) > 0) Suspended.forStepRetry(retryAt, identity, nextAttempt);
|
|
63
67
|
}
|
|
64
68
|
const attempt = latestFailedAttempt === void 0 ? started?.attempt ?? 1 : latestFailedAttempt.attempt + 1;
|
|
65
69
|
const childRunId = started === void 0 || latestFailedAttempt !== void 0 ? await startChildWorkflow(store, engine, runId, history, now, maximumStepAttemptsPerRun, identity, definition, input, options, attempt, limits, executionOwner, environment.createRecordedId, environment.createDeterministicRandom, environment.createDeterministicUuid, environment.createDeterministicBytes, environment.telemetry, environment.logger, environment.replaying, environment.observeChildWorkflowStarted) : started.childRunId;
|
|
66
70
|
const childRun = await getRequiredRun(store, childRunId);
|
|
67
71
|
const activeStarted = history.startedChildWorkflow(identity.id);
|
|
68
|
-
const timeoutAt = activeStarted?.timeoutAt === void 0 ? void 0 :
|
|
69
|
-
if (!childRunMatchesParentStepAttempt(childRun, runId, identity, attempt))
|
|
72
|
+
const timeoutAt = activeStarted?.timeoutAt === void 0 ? void 0 : recordedInstant("workflow", identity, "timeout", activeStarted.timeoutAt);
|
|
73
|
+
if (!childRunMatchesParentStepAttempt(childRun, runId, identity, attempt)) Suspended.until(childWorkflowPollAt(now(), childRun, pollInterval));
|
|
74
|
+
requireDefinitionMatchesRun(definition, childRun);
|
|
70
75
|
if (timeoutAt !== void 0 && Temporal.Instant.compare(timeoutAt, now()) <= 0 && childRun.status !== "completed" && childRun.status !== "failed" && childRun.status !== "canceled") {
|
|
71
76
|
const error = childWorkflowTimeoutErrorRecord({
|
|
72
77
|
runId,
|
|
@@ -74,7 +79,7 @@ async function runChildWorkflow(environment, engine, definition, input, options)
|
|
|
74
79
|
stepId: identity.id,
|
|
75
80
|
timeoutAt
|
|
76
81
|
});
|
|
77
|
-
await
|
|
82
|
+
await appendDurableEvent(environment, {
|
|
78
83
|
kind: "child_workflow_failed",
|
|
79
84
|
timestamp: now(),
|
|
80
85
|
stepId: identity.id,
|
|
@@ -83,8 +88,8 @@ async function runChildWorkflow(environment, engine, definition, input, options)
|
|
|
83
88
|
childRunId,
|
|
84
89
|
error
|
|
85
90
|
});
|
|
86
|
-
await requireCurrentExecutionOwner(store,
|
|
87
|
-
await engine.
|
|
91
|
+
await requireCurrentExecutionOwner(store, executionOwner);
|
|
92
|
+
await cancelWorkflowRun(engine.context, engine.lifecycle, childRunId);
|
|
88
93
|
if (retry.maximumAttempts === 0 || attempt < retry.maximumAttempts) suspendChildWorkflowRetry(runId, timeoutAt, retry, identity, attempt, maximumStepAttemptsPerRun);
|
|
89
94
|
WorkflowStepExecutionError.failed({
|
|
90
95
|
stepId: identity.id,
|
|
@@ -94,7 +99,7 @@ async function runChildWorkflow(environment, engine, definition, input, options)
|
|
|
94
99
|
});
|
|
95
100
|
}
|
|
96
101
|
if (childRun.status === "completed") {
|
|
97
|
-
await
|
|
102
|
+
await appendDurableEvent(environment, {
|
|
98
103
|
kind: "child_workflow_completed",
|
|
99
104
|
timestamp: now(),
|
|
100
105
|
stepId: identity.id,
|
|
@@ -106,14 +111,14 @@ async function runChildWorkflow(environment, engine, definition, input, options)
|
|
|
106
111
|
return childRun.output;
|
|
107
112
|
}
|
|
108
113
|
if (childRun.status === "failed" || childRun.status === "canceled") {
|
|
109
|
-
const error = childRun.error ?? (childRun.status === "canceled" ? serializeError(WorkflowRunCanceledError
|
|
114
|
+
const error = childRun.error ?? (childRun.status === "canceled" ? serializeError(new WorkflowRunCanceledError(childRun.id)) : {
|
|
110
115
|
name: "WorkflowError",
|
|
111
116
|
message: `Child workflow failed: ${childRun.id}`
|
|
112
117
|
});
|
|
113
118
|
const failedAt = childRun.finishedAt === void 0 ? now() : childRun.finishedAt instanceof Temporal.Instant ? childRun.finishedAt : (() => {
|
|
114
|
-
WorkflowRunInvalidError
|
|
119
|
+
throw new WorkflowRunInvalidError(childRun.id, "Workflow child failure timestamp must be valid");
|
|
115
120
|
})();
|
|
116
|
-
await
|
|
121
|
+
await appendDurableEvent(environment, {
|
|
117
122
|
kind: "child_workflow_failed",
|
|
118
123
|
timestamp: failedAt,
|
|
119
124
|
stepId: identity.id,
|
|
@@ -130,7 +135,7 @@ async function runChildWorkflow(environment, engine, definition, input, options)
|
|
|
130
135
|
});
|
|
131
136
|
if (retry.maximumAttempts === 0 || attempt < retry.maximumAttempts) {
|
|
132
137
|
const nextAttempt = nextChildWorkflowRetryAttempt(runId, attempt, maximumStepAttemptsPerRun);
|
|
133
|
-
|
|
138
|
+
Suspended.forStepRetry(nextRetryAt(failedAt, retry, attempt, "Workflow step retry delay") ?? failedAt, identity, nextAttempt);
|
|
134
139
|
}
|
|
135
140
|
WorkflowStepExecutionError.failed({
|
|
136
141
|
stepId: identity.id,
|
|
@@ -139,11 +144,11 @@ async function runChildWorkflow(environment, engine, definition, input, options)
|
|
|
139
144
|
cause: workflowErrorFromRecord(error)
|
|
140
145
|
});
|
|
141
146
|
}
|
|
142
|
-
|
|
147
|
+
Suspended.until(childWorkflowPollAt(now(), childRun, pollInterval));
|
|
143
148
|
}
|
|
144
149
|
async function startBackgroundChildWorkflow(environment, engine, definition, input, options) {
|
|
145
150
|
const { store, runId, history, now, maximumStepAttemptsPerRun, limits, executionOwner } = environment;
|
|
146
|
-
const identity =
|
|
151
|
+
const identity = resolveCommandIdentityFromCandidates(history, "workflow", [
|
|
147
152
|
options?.commandId,
|
|
148
153
|
options?.name,
|
|
149
154
|
definition.name
|
|
@@ -162,27 +167,6 @@ function childRunMatchesParentStepAttempt(childRun, parentRunId, identity, attem
|
|
|
162
167
|
function isChildWorkflowTerminalForStartedAttempt(terminal, started) {
|
|
163
168
|
return terminal.attempt === started.attempt && terminal.childRunId === started.childRunId;
|
|
164
169
|
}
|
|
165
|
-
function recordedChildWorkflowTimeoutAt(identity, value) {
|
|
166
|
-
if (value instanceof Temporal.Instant) return value;
|
|
167
|
-
WorkflowReplayDivergenceError.diverged(`recorded workflow step ${identity.id} has invalid timeout timestamp: ` + String(value), {
|
|
168
|
-
expectedStepId: identity.id,
|
|
169
|
-
actualStepId: identity.id
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
function recordedChildWorkflowCompletionTimestamp(identity, value) {
|
|
173
|
-
if (value instanceof Temporal.Instant) return value;
|
|
174
|
-
WorkflowReplayDivergenceError.diverged(`recorded workflow step ${identity.id} has invalid completion timestamp: ` + String(value), {
|
|
175
|
-
expectedStepId: identity.id,
|
|
176
|
-
actualStepId: identity.id
|
|
177
|
-
});
|
|
178
|
-
}
|
|
179
|
-
function recordedChildWorkflowFailureTimestamp(identity, value) {
|
|
180
|
-
if (value instanceof Temporal.Instant) return value;
|
|
181
|
-
WorkflowReplayDivergenceError.diverged(`recorded workflow step ${identity.id} has invalid failure timestamp: ` + String(value), {
|
|
182
|
-
expectedStepId: identity.id,
|
|
183
|
-
actualStepId: identity.id
|
|
184
|
-
});
|
|
185
|
-
}
|
|
186
170
|
function requireChildWorkflowReplayMatches(runId, identity, started, definition, input, options, limits) {
|
|
187
171
|
if (started === void 0) return;
|
|
188
172
|
const replayChildRunId = options?.id === void 0 ? void 0 : started.attempt === 1 ? options.id : `${options.id}:attempt:${started.attempt}`;
|
|
@@ -204,20 +188,14 @@ function requireChildWorkflowReplayMatches(runId, identity, started, definition,
|
|
|
204
188
|
const replayTimeout = options?.timeout === void 0 ? "no timeout" : "a timeout";
|
|
205
189
|
message = `recorded workflow step ${identity.id} had ${String(recordedTimeout)}, but replay used ${replayTimeout}`;
|
|
206
190
|
}
|
|
207
|
-
WorkflowReplayDivergenceError.
|
|
208
|
-
expectedStepId: identity.id,
|
|
209
|
-
actualStepId: identity.id
|
|
210
|
-
});
|
|
191
|
+
WorkflowReplayDivergenceError.atStep(identity.id, message);
|
|
211
192
|
}
|
|
212
193
|
function requireRecordedChildWorkflowStartedAttempt(identity, started) {
|
|
213
194
|
if (isPositiveSafeInteger(started.attempt)) return;
|
|
214
|
-
WorkflowReplayDivergenceError.
|
|
215
|
-
expectedStepId: identity.id,
|
|
216
|
-
actualStepId: identity.id
|
|
217
|
-
});
|
|
195
|
+
WorkflowReplayDivergenceError.atStep(identity.id, `recorded workflow step ${identity.id} has an invalid attempt number`);
|
|
218
196
|
}
|
|
219
197
|
function suspendChildWorkflowRetry(runId, failedAt, retry, identity, attempt, maximumStepAttemptsPerRun) {
|
|
220
|
-
|
|
198
|
+
Suspended.forStepRetry(nextRetryAt(failedAt, retry, attempt, "Workflow step retry delay") ?? failedAt, identity, nextChildWorkflowRetryAttempt(runId, attempt, maximumStepAttemptsPerRun));
|
|
221
199
|
}
|
|
222
200
|
function nextChildWorkflowRetryAttempt(runId, failedAttempt, maximumStepAttemptsPerRun) {
|
|
223
201
|
const nextAttempt = nextPositiveSafeInteger(failedAttempt);
|
|
@@ -225,24 +203,25 @@ function nextChildWorkflowRetryAttempt(runId, failedAttempt, maximumStepAttempts
|
|
|
225
203
|
return nextAttempt;
|
|
226
204
|
}
|
|
227
205
|
async function startChildWorkflow(store, engine, runId, history, now, maximumStepAttemptsPerRun, identity, definition, input, options, attempt, limits, executionOwner, createRecordedId, createDeterministicRandom, createDeterministicUuid, createDeterministicBytes, telemetry, logger, replaying, observeChildWorkflowStarted) {
|
|
228
|
-
await requireCurrentExecutionOwner(store,
|
|
206
|
+
await requireCurrentExecutionOwner(store, executionOwner);
|
|
229
207
|
enforceStepAttemptBudget(runId, history, maximumStepAttemptsPerRun);
|
|
230
208
|
const timeoutAt = childWorkflowTimeoutAt(now(), options);
|
|
231
209
|
const deadlineAt = childWorkflowDeadlineAt(timeoutAt, executionOwner.deadlineAt);
|
|
232
210
|
const idempotencyKey = childWorkflowIdempotencyKey(runId, identity, options, attempt);
|
|
233
211
|
const cancellation = resolveChildWorkflowCancellationPolicy(options);
|
|
234
212
|
const persistedInput = toOptionalPersistedValue(input, "child workflow input", limits);
|
|
235
|
-
const
|
|
236
|
-
|
|
213
|
+
const startOptions = {
|
|
214
|
+
id: options?.id !== void 0 ? attempt === 1 ? options.id : `${options.id}:attempt:${attempt}` : void 0,
|
|
237
215
|
idempotencyKey,
|
|
238
|
-
|
|
216
|
+
deadlineAt,
|
|
239
217
|
parent: {
|
|
240
218
|
runId,
|
|
241
219
|
stepId: identity.id,
|
|
242
220
|
stepName: identity.name,
|
|
243
221
|
stepAttempt: attempt
|
|
244
222
|
}
|
|
245
|
-
}
|
|
223
|
+
};
|
|
224
|
+
const handle = await engine.startWorkflow(definition, input, startOptions);
|
|
246
225
|
const startedEvent = {
|
|
247
226
|
kind: "child_workflow_started",
|
|
248
227
|
timestamp: now(),
|
|
@@ -252,11 +231,11 @@ async function startChildWorkflow(store, engine, runId, history, now, maximumSte
|
|
|
252
231
|
attempt,
|
|
253
232
|
childRunId: handle.runId,
|
|
254
233
|
workflowName: definition.name,
|
|
255
|
-
|
|
234
|
+
workflowVersion: definition.version,
|
|
256
235
|
cancellation,
|
|
257
236
|
input: persistedInput,
|
|
258
237
|
idempotencyKey,
|
|
259
|
-
|
|
238
|
+
timeoutAt
|
|
260
239
|
};
|
|
261
240
|
await appendDurableStepStartedEvent({
|
|
262
241
|
store,
|
|
@@ -289,7 +268,7 @@ function childWorkflowPollAt(now, childRun, pollInterval) {
|
|
|
289
268
|
}
|
|
290
269
|
function resolveChildWorkflowPollInterval(options) {
|
|
291
270
|
const pollInterval = options?.pollInterval === void 0 ? 100 : options.pollInterval.total({ unit: "millisecond" });
|
|
292
|
-
if (!isPositiveSafeInteger(pollInterval)) WorkflowDurationError
|
|
271
|
+
if (!isPositiveSafeInteger(pollInterval)) throw new WorkflowDurationError("Workflow child pollInterval must be a timer-safe duration");
|
|
293
272
|
return pollInterval;
|
|
294
273
|
}
|
|
295
274
|
function hasDueChildSchedule(now, childRun) {
|
|
@@ -297,19 +276,19 @@ function hasDueChildSchedule(now, childRun) {
|
|
|
297
276
|
}
|
|
298
277
|
function childWorkflowTimeoutAt(now, options) {
|
|
299
278
|
if (options?.timeout === void 0) return;
|
|
300
|
-
if (safeDuration(options.timeout.total({ unit: "millisecond" }), "Workflow child timeout") <= 0) WorkflowDurationError
|
|
279
|
+
if (safeDuration(options.timeout.total({ unit: "millisecond" }), "Workflow child timeout") <= 0) throw new WorkflowDurationError("Workflow child timeout must be greater than zero");
|
|
301
280
|
return now.add(options.timeout);
|
|
302
281
|
}
|
|
303
282
|
function resolveChildWorkflowCancellationPolicy(options) {
|
|
304
283
|
const policy = options?.cancellation ?? "cascade";
|
|
305
|
-
if (policy !== "cascade" && policy !== "detach") WorkflowOptionsError.
|
|
284
|
+
if (policy !== "cascade" && policy !== "detach") throw new WorkflowOptionsError("Workflow child cancellation policy must be cascade or detach", { code: WorkflowErrorCode.OPTIONS_CHILD_CANCELLATION_POLICY_INVALID });
|
|
306
285
|
return policy;
|
|
307
286
|
}
|
|
308
287
|
function childWorkflowDeadlineAt(timeoutAt, parentDeadlineAt) {
|
|
309
288
|
return [timeoutAt, parentDeadlineAt].filter((value) => value !== void 0).sort((left, right) => Temporal.Instant.compare(left, right))[0];
|
|
310
289
|
}
|
|
311
290
|
function childWorkflowTimeoutErrorRecord(options) {
|
|
312
|
-
const error = WorkflowChildWorkflowTimeoutError
|
|
291
|
+
const error = new WorkflowChildWorkflowTimeoutError({
|
|
313
292
|
runId: options.runId,
|
|
314
293
|
childRunId: options.childRunId,
|
|
315
294
|
stepId: options.stepId,
|
|
@@ -330,4 +309,4 @@ function childWorkflowIdempotencyKey(runId, identity, options, attempt) {
|
|
|
330
309
|
return `${options?.idempotencyKey === void 0 ? `parent:${runId}:step:${identity.id}` : options.idempotencyKey}:attempt:${attempt}`;
|
|
331
310
|
}
|
|
332
311
|
//#endregion
|
|
333
|
-
export {
|
|
312
|
+
export { createStepWorkflowApi };
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { StepIdentity, StepType } from "../types/run.mjs";
|
|
2
|
+
import { History } from "../history/replay.mjs";
|
|
3
3
|
//#region src/engine/command-identity.d.ts
|
|
4
4
|
/** Resolves the durable identity for a workflow command occurrence. */
|
|
5
|
-
declare function
|
|
5
|
+
export declare function resolveCommandIdentity<TType extends StepType>(history: History, kind: TType, commandId: string): StepIdentity<TType>;
|
|
6
6
|
/** Resolves a durable command identity from ordered command-name candidates. */
|
|
7
|
-
declare function
|
|
8
|
-
//#endregion
|
|
9
|
-
export { resolveWorkflowCommandIdentity, resolveWorkflowCommandIdentityFromCandidates };
|
|
7
|
+
export declare function resolveCommandIdentityFromCandidates<TType extends StepType>(history: History, kind: TType, candidates: readonly (string | undefined)[], label: string): StepIdentity<TType>;
|
|
8
|
+
//#endregion
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../errors/codes.mjs";
|
|
1
2
|
import { WorkflowOptionsError } from "../errors/base.mjs";
|
|
2
3
|
import "../errors/mod.mjs";
|
|
3
4
|
//#region src/engine/command-identity.ts
|
|
4
5
|
/** Resolves the durable identity for a workflow command occurrence. */
|
|
5
|
-
function
|
|
6
|
+
function resolveCommandIdentity(history, kind, commandId) {
|
|
6
7
|
return history.nextStep(kind, commandId);
|
|
7
8
|
}
|
|
8
9
|
/** Resolves a durable command identity from ordered command-name candidates. */
|
|
9
|
-
function
|
|
10
|
-
for (const candidate of candidates) if (candidate !== void 0) return
|
|
11
|
-
throw WorkflowOptionsError
|
|
10
|
+
function resolveCommandIdentityFromCandidates(history, kind, candidates, label) {
|
|
11
|
+
for (const candidate of candidates) if (candidate !== void 0) return resolveCommandIdentity(history, kind, candidate);
|
|
12
|
+
throw new WorkflowOptionsError(`${label} is required`, {
|
|
13
|
+
code: WorkflowErrorCode.OPTIONS_REQUIRED,
|
|
14
|
+
details: { label }
|
|
15
|
+
});
|
|
12
16
|
}
|
|
13
17
|
//#endregion
|
|
14
|
-
export {
|
|
18
|
+
export { resolveCommandIdentity, resolveCommandIdentityFromCandidates };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ObservationEmitter } from "../types/observation.mjs";
|
|
2
|
+
import { Telemetry } from "../types/telemetry.mjs";
|
|
3
|
+
import { WorkflowStore } from "../types/store.mjs";
|
|
4
|
+
import { ExecutionLimits } from "../types/engine-options.mjs";
|
|
5
|
+
import { Logger } from "@temelj/log";
|
|
6
|
+
//#region src/engine/context.d.ts
|
|
7
|
+
/** What engine operations share: the store, the clock, limits, IDs, logging, and observation. */
|
|
8
|
+
export interface EngineContext {
|
|
9
|
+
readonly store: WorkflowStore;
|
|
10
|
+
readonly now: () => Temporal.Instant;
|
|
11
|
+
readonly limits: ExecutionLimits;
|
|
12
|
+
readonly observation: ObservationEmitter;
|
|
13
|
+
readonly telemetry?: Telemetry;
|
|
14
|
+
readonly logger: Logger;
|
|
15
|
+
readonly createRunId: () => string;
|
|
16
|
+
}
|
|
17
|
+
//#endregion
|
package/dist/engine/create.d.mts
CHANGED
|
@@ -1,106 +1,48 @@
|
|
|
1
|
-
import { RunId } from "../types/
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { FollowStreamOptions, ReadStreamOptions, ReadStreamPageOptions, StreamChunk, StreamInfo, StreamPage, StreamState, StreamUpdate, WaitStreamOptions } from "../types/stream.mjs";
|
|
12
|
-
import { WorkflowRecoverySummary, WorkflowRecoverySummaryOptions, WorkflowRunSummary, WorkflowRunSummaryOptions } from "../types/summary.mjs";
|
|
13
|
-
import { WorkflowListStepAttemptsOptions, WorkflowStepAttemptRecord, WorkflowStepAttemptSummary } from "../types/step-attempts.mjs";
|
|
14
|
-
import { ObservationEventHandler, ObservationEventPattern, ObservationUnsubscribe, ScheduleRunCreatedObservationEvent, WorkerOperationObservationEvent } from "../types/observation.mjs";
|
|
15
|
-
import { Timeline } from "../types/timeline.mjs";
|
|
16
|
-
import { ExecutionResult, WorkflowHandle } from "../types/result.mjs";
|
|
17
|
-
import { WorkflowAttributePatch, WorkflowRunRecord } from "../types/run.mjs";
|
|
18
|
-
import { EventRecord } from "../types/events.mjs";
|
|
19
|
-
import { ScheduleNextOptions, WorkflowBatchStartItem, WorkflowExecutionOptions, WorkflowMarkRunPermanentlyFailedOptions, WorkflowReleaseStaleLeaseOptions, WorkflowRerunOptions, WorkflowRescheduleRunOptions, WorkflowResumeOptions, WorkflowRetryFailedRunOptions, WorkflowStartOptions } from "../types/run-options.mjs";
|
|
20
|
-
import { WorkflowMessageIdempotencyIndex, WorkflowStorage, WorkflowStore } from "../types/store.mjs";
|
|
1
|
+
import { RunId } from "../types/ids.mjs";
|
|
2
|
+
import { ScheduleConfig, ScheduleRecord, TickSchedulesOptions, TickSchedulesResult } from "../types/schedule.mjs";
|
|
3
|
+
import { StartTarget, WorkflowImplementation } from "../types/definition.mjs";
|
|
4
|
+
import { AcquireLockOptions, LockRecord, ReleaseLockOptions } from "../types/lock.mjs";
|
|
5
|
+
import { ListRunsOptions } from "../types/run-list.mjs";
|
|
6
|
+
import { RunSummary } from "../types/summary.mjs";
|
|
7
|
+
import { ObservationEmitter } from "../types/observation.mjs";
|
|
8
|
+
import { ExecutionResult } from "../types/result.mjs";
|
|
9
|
+
import { RunRecord } from "../types/run.mjs";
|
|
10
|
+
import { WorkflowStorage, WorkflowStore } from "../types/store.mjs";
|
|
21
11
|
import { CreateWorkflowEngineOptions } from "../types/engine-options.mjs";
|
|
22
|
-
import {
|
|
23
|
-
import "
|
|
12
|
+
import { BatchStartItem, ExecutionOptions, RerunOptions, ResumeOptions, ScheduleNextOptions, StartOptions } from "../types/run-options.mjs";
|
|
13
|
+
import { EngineContext } from "./context.mjs";
|
|
14
|
+
import { RunRef } from "./start.mjs";
|
|
15
|
+
import { StorageValue } from "@temelj/storage";
|
|
24
16
|
//#region src/engine/create.d.ts
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
17
|
+
interface EngineRunLifecycle {
|
|
18
|
+
readonly emitLifecycleEvent: (next: RunRecord, previous: RunRecord) => void | Promise<void>;
|
|
19
|
+
readonly emitRunMetadataUpdated: (next: RunRecord, previous: RunRecord) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare function createWorkflowEngine(options?: CreateWorkflowEngineOptions): WorkflowEngine;
|
|
22
|
+
/** Executes workflows against a store; the client and workers build on it. */
|
|
23
|
+
export declare class WorkflowEngine {
|
|
29
24
|
#private;
|
|
30
25
|
readonly storage: WorkflowStorage;
|
|
31
26
|
readonly store: WorkflowStore;
|
|
27
|
+
readonly observation: ObservationEmitter;
|
|
28
|
+
/** Shared by the engine's services and the client facades. */
|
|
29
|
+
readonly context: EngineContext;
|
|
30
|
+
readonly lifecycle: EngineRunLifecycle;
|
|
32
31
|
constructor(options?: CreateWorkflowEngineOptions);
|
|
33
|
-
on<Pattern extends ObservationEventPattern>(pattern: Pattern, handler: ObservationEventHandler<Pattern>): ObservationUnsubscribe;
|
|
34
|
-
once<Pattern extends ObservationEventPattern>(pattern: Pattern, handler: ObservationEventHandler<Pattern>): ObservationUnsubscribe;
|
|
35
|
-
off<Pattern extends ObservationEventPattern>(pattern: Pattern, handler: ObservationEventHandler<Pattern>): void;
|
|
36
|
-
listeners(): readonly ObservationEventHandler[];
|
|
37
|
-
listeners<Pattern extends ObservationEventPattern>(pattern: Pattern): readonly ObservationEventHandler<Pattern>[];
|
|
38
|
-
clearListeners(pattern?: ObservationEventPattern): void;
|
|
39
|
-
listenerCount(pattern?: ObservationEventPattern): number;
|
|
40
32
|
close(): Promise<void>;
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
createSchedule<TInput, TOutput, TRawInput = TInput>(workflow: WorkflowStartTarget<TInput, TOutput, TRawInput>, scheduleOptions: ScheduleConfig<TInput, TRawInput>): Promise<ScheduleRecord<TInput>>;
|
|
47
|
-
upsertSchedule<TInput, TOutput, TRawInput = TInput>(workflow: WorkflowStartTarget<TInput, TOutput, TRawInput>, scheduleOptions: ScheduleConfig<TInput, TRawInput>): Promise<ScheduleRecord<TInput>>;
|
|
48
|
-
getSchedule(scheduleId: ScheduleId): Promise<ScheduleRecord | undefined>;
|
|
49
|
-
listSchedules(options?: ListSchedulesOptions): Promise<readonly ScheduleRecord[]>;
|
|
50
|
-
listSchedulesPage(options?: ListSchedulesPageOptions): Promise<WorkflowPage<ScheduleRecord>>;
|
|
51
|
-
pauseSchedule(scheduleId: ScheduleId): Promise<ScheduleRecord>;
|
|
52
|
-
resumeSchedule(scheduleId: ScheduleId): Promise<ScheduleRecord>;
|
|
53
|
-
archiveSchedule(scheduleId: ScheduleId): Promise<ScheduleRecord>;
|
|
54
|
-
deleteSchedule(scheduleId: ScheduleId): Promise<ScheduleRecord>;
|
|
33
|
+
startWorkflow<TInput, TOutput, TRawInput = TInput>(workflow: StartTarget<TInput, TOutput, TRawInput>, input: TRawInput, options?: StartOptions): Promise<RunRef<TOutput>>;
|
|
34
|
+
startWorkflows<TInput, TOutput, TRawInput = TInput>(workflow: StartTarget<TInput, TOutput, TRawInput>, items: readonly BatchStartItem<TRawInput>[]): Promise<readonly RunRef<TOutput>[]>;
|
|
35
|
+
getRunRef(runId: RunId): Promise<RunRef<StorageValue | undefined>>;
|
|
36
|
+
scheduleNextWorkflow<TInput, TOutput, TRawInput = TInput>(workflow: StartTarget<TInput, TOutput, TRawInput>, input: TRawInput, options: ScheduleNextOptions): Promise<RunRef<TOutput>>;
|
|
37
|
+
createSchedule<TInput, TOutput, TRawInput = TInput>(workflow: StartTarget<TInput, TOutput, TRawInput>, scheduleOptions: ScheduleConfig<TInput, TRawInput>): Promise<ScheduleRecord>;
|
|
55
38
|
tickSchedules(options?: TickSchedulesOptions): Promise<TickSchedulesResult>;
|
|
56
39
|
acquireLock(key: string, options: AcquireLockOptions): Promise<LockRecord>;
|
|
57
|
-
getLock(key: string): Promise<LockRecord | undefined>;
|
|
58
|
-
listLocks(): Promise<readonly LockRecord[]>;
|
|
59
40
|
releaseLock(key: string, options: ReleaseLockOptions): Promise<LockRecord>;
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
getEvents(runId: RunId): Promise<readonly EventRecord[]>;
|
|
66
|
-
listEventsPage(runId: RunId, options?: PageOptions): Promise<WorkflowPage<EventRecord>>;
|
|
67
|
-
listRuns(options?: WorkflowListRunsOptions): Promise<readonly WorkflowRunRecord[]>;
|
|
68
|
-
listRunsPage(options?: WorkflowListRunsPageOptions): Promise<WorkflowPage<WorkflowRunRecord>>;
|
|
69
|
-
countRuns(options?: WorkflowListRunsOptions): Promise<number>;
|
|
70
|
-
getRunSummary(options?: WorkflowRunSummaryOptions): Promise<WorkflowRunSummary>;
|
|
71
|
-
getRecoverySummary(options?: WorkflowRecoverySummaryOptions): Promise<WorkflowRecoverySummary>;
|
|
72
|
-
getTimeline(runId: RunId): Promise<Timeline>;
|
|
73
|
-
listStepAttempts(runId: RunId, options?: WorkflowListStepAttemptsOptions): Promise<readonly WorkflowStepAttemptRecord[]>;
|
|
74
|
-
listStepAttemptsPage(runId: RunId, options?: WorkflowListStepAttemptsPageOptions): Promise<WorkflowPage<WorkflowStepAttemptRecord>>;
|
|
75
|
-
countStepAttempts(runId: RunId, options?: WorkflowListStepAttemptsOptions): Promise<number>;
|
|
76
|
-
repairStepAttempts(runId: RunId): Promise<readonly WorkflowStepAttemptRecord[]>;
|
|
77
|
-
repairMessageIdempotencyIndexes(runId: RunId): Promise<readonly WorkflowMessageIdempotencyIndex[]>;
|
|
78
|
-
getStepAttemptSummary(runId: RunId, options?: WorkflowListStepAttemptsOptions): Promise<WorkflowStepAttemptSummary>;
|
|
79
|
-
cleanupRuns(options: CleanupRunsOptions): Promise<CleanupRunsResult>;
|
|
80
|
-
listCleanupMarkers(): Promise<readonly CleanupMarkerRecord[]>;
|
|
81
|
-
applyRetentionPolicy(retentionOptions: RetentionPolicyOptions): Promise<CleanupRunsResult>;
|
|
82
|
-
rerunWorkflow(runId: RunId, options?: WorkflowRerunOptions): Promise<WorkflowHandle<unknown>>;
|
|
83
|
-
rescheduleRun(runId: RunId, options?: WorkflowRescheduleRunOptions): Promise<WorkflowRunRecord>;
|
|
84
|
-
releaseStaleRunLease(runId: RunId, options?: WorkflowReleaseStaleLeaseOptions): Promise<WorkflowRunRecord>;
|
|
85
|
-
retryFailedRun(runId: RunId, options?: WorkflowRetryFailedRunOptions): Promise<WorkflowRunRecord>;
|
|
86
|
-
markRunPermanentlyFailed(runId: RunId, options: WorkflowMarkRunPermanentlyFailedOptions): Promise<WorkflowRunRecord>;
|
|
87
|
-
updateRunMetadata(runId: RunId, metadata: unknown): Promise<WorkflowRunRecord>;
|
|
88
|
-
setRunAttributes(runId: RunId, attributes: WorkflowAttributePatch): Promise<WorkflowRunRecord>;
|
|
89
|
-
cancelRun(runId: RunId): Promise<WorkflowRunRecord>;
|
|
90
|
-
resumeHook(token: string, options?: ResumeHookOptions): Promise<void>;
|
|
91
|
-
resumeWebhook(token: string, options?: ResumeWebhookOptions): Promise<void>;
|
|
92
|
-
disposeHook(token: string): Promise<HookInspection>;
|
|
93
|
-
disposeWebhook(token: string): Promise<HookInspection>;
|
|
94
|
-
getHookByToken(token: string): Promise<HookInspection>;
|
|
95
|
-
getStreamInfo(runId: RunId, streamIdOrName: StreamIdOrName): Promise<StreamInfo>;
|
|
96
|
-
followStream<TChunk = unknown>(runId: RunId, streamIdOrName: StreamIdOrName, followOptions?: FollowStreamOptions): AsyncIterable<StreamUpdate<TChunk>>;
|
|
97
|
-
waitForStream(runId: RunId, streamIdOrName: StreamIdOrName, waitOptions?: WaitStreamOptions): Promise<StreamInfo | undefined>;
|
|
98
|
-
waitForStreamChunk<TChunk = unknown>(runId: RunId, streamIdOrName: StreamIdOrName, afterIndex: number, waitOptions?: WaitStreamOptions): Promise<StreamChunk<TChunk> | undefined>;
|
|
99
|
-
waitForStreamTerminal(runId: RunId, streamIdOrName: StreamIdOrName, waitOptions?: WaitStreamOptions): Promise<StreamInfo | undefined>;
|
|
100
|
-
readStream<TChunk = unknown>(runId: RunId, streamIdOrName: StreamIdOrName, readOptions?: ReadStreamOptions): Promise<StreamState<TChunk>>;
|
|
101
|
-
readStreamPage<TChunk = unknown>(runId: RunId, streamIdOrName: StreamIdOrName, readOptions?: ReadStreamPageOptions): Promise<StreamPage<TChunk>>;
|
|
102
|
-
sendMessage<TPayload, TKey = void>(runId: RunId, messageInput: SendMessageInput | MessageChannel<TPayload, TKey>, channelOptions?: SendMessageChannelOptions<TPayload, TKey>): Promise<void>;
|
|
103
|
-
broadcastMessage<TPayload, TKey = void>(messageInput: BroadcastMessageInput | MessageChannel<TPayload, TKey>, channelOptions?: BroadcastMessageChannelOptions<TPayload, TKey>): Promise<BroadcastMessageResult>;
|
|
41
|
+
runWorkflow<TInput, TOutput, TRawInput = TInput>(implementation: WorkflowImplementation<TInput, TOutput, TRawInput>, input: TRawInput, options?: ExecutionOptions): Promise<RunRef<TOutput>>;
|
|
42
|
+
runWorkflowNow<TInput, TOutput, TRawInput = TInput>(implementation: WorkflowImplementation<TInput, TOutput, TRawInput>, input: TRawInput, options?: ExecutionOptions): Promise<ExecutionResult<TOutput>>;
|
|
43
|
+
resumeWorkflow<TInput, TOutput, TRawInput = TInput>(implementation: WorkflowImplementation<TInput, TOutput, TRawInput>, runId: RunId, options?: ResumeOptions): Promise<ExecutionResult<TOutput>>;
|
|
44
|
+
getRunSummary(options?: ListRunsOptions): Promise<RunSummary>;
|
|
45
|
+
rerunWorkflow(runId: RunId, options?: RerunOptions): Promise<RunRef<unknown>>;
|
|
104
46
|
}
|
|
105
47
|
//#endregion
|
|
106
|
-
export {
|
|
48
|
+
export {};
|