@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,8 +1,9 @@
|
|
|
1
|
+
import { WorkflowErrorCode } from "../errors/codes.mjs";
|
|
1
2
|
import { WorkflowStateError } from "../errors/base.mjs";
|
|
2
3
|
import "../errors/mod.mjs";
|
|
3
|
-
import { getEventDescriptor } from "../events/descriptors.mjs";
|
|
4
|
+
import { getEventDescriptor, getEventField } from "../events/descriptors.mjs";
|
|
4
5
|
//#region src/history/projection.ts
|
|
5
|
-
function
|
|
6
|
+
function applyStepAttemptEvent(runId, event, current) {
|
|
6
7
|
switch (event.kind) {
|
|
7
8
|
case "step_started": return {
|
|
8
9
|
runId,
|
|
@@ -12,7 +13,7 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
12
13
|
status: "running",
|
|
13
14
|
attempt: event.attempt,
|
|
14
15
|
count: event.count,
|
|
15
|
-
|
|
16
|
+
timeoutAt: event.timeoutAt,
|
|
16
17
|
createdAt: event.timestamp,
|
|
17
18
|
startedAt: event.timestamp
|
|
18
19
|
};
|
|
@@ -23,7 +24,6 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
23
24
|
...current,
|
|
24
25
|
status: "completed",
|
|
25
26
|
output: event.result,
|
|
26
|
-
timeoutAt: current?.timeoutAt,
|
|
27
27
|
finishedAt: event.timestamp
|
|
28
28
|
};
|
|
29
29
|
case "step_failed":
|
|
@@ -33,7 +33,6 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
33
33
|
...current,
|
|
34
34
|
status: "failed",
|
|
35
35
|
error: event.error,
|
|
36
|
-
timeoutAt: current?.timeoutAt,
|
|
37
36
|
finishedAt: event.timestamp
|
|
38
37
|
};
|
|
39
38
|
case "sleep_started": return {
|
|
@@ -45,7 +44,7 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
45
44
|
attempt: 1,
|
|
46
45
|
count: event.count,
|
|
47
46
|
until: event.until,
|
|
48
|
-
|
|
47
|
+
duration: event.duration,
|
|
49
48
|
createdAt: event.timestamp,
|
|
50
49
|
startedAt: event.timestamp
|
|
51
50
|
};
|
|
@@ -55,8 +54,6 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
55
54
|
...makeBaseProjectedStepAttempt(runId, event.stepId, event.stepName, "sleep", 1, event.timestamp),
|
|
56
55
|
...current,
|
|
57
56
|
status: "completed",
|
|
58
|
-
until: current?.until,
|
|
59
|
-
duration: current?.duration,
|
|
60
57
|
finishedAt: event.timestamp
|
|
61
58
|
};
|
|
62
59
|
case "child_workflow_started": return {
|
|
@@ -69,10 +66,10 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
69
66
|
count: event.count,
|
|
70
67
|
childRunId: event.childRunId,
|
|
71
68
|
workflowName: event.workflowName,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
69
|
+
workflowVersion: event.workflowVersion,
|
|
70
|
+
cancellation: event.cancellation,
|
|
71
|
+
input: event.input,
|
|
72
|
+
timeoutAt: event.timeoutAt,
|
|
76
73
|
createdAt: event.timestamp,
|
|
77
74
|
startedAt: event.timestamp
|
|
78
75
|
};
|
|
@@ -84,9 +81,6 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
84
81
|
status: "completed",
|
|
85
82
|
output: event.result,
|
|
86
83
|
childRunId: event.childRunId,
|
|
87
|
-
input: current?.input,
|
|
88
|
-
cancellation: current?.cancellation,
|
|
89
|
-
timeoutAt: current?.timeoutAt,
|
|
90
84
|
finishedAt: event.timestamp
|
|
91
85
|
};
|
|
92
86
|
case "child_workflow_failed":
|
|
@@ -97,9 +91,6 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
97
91
|
status: "failed",
|
|
98
92
|
error: event.error,
|
|
99
93
|
childRunId: event.childRunId,
|
|
100
|
-
input: current?.input,
|
|
101
|
-
cancellation: current?.cancellation,
|
|
102
|
-
timeoutAt: current?.timeoutAt,
|
|
103
94
|
finishedAt: event.timestamp
|
|
104
95
|
};
|
|
105
96
|
case "message_send_started": return {
|
|
@@ -112,7 +103,7 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
112
103
|
count: event.count,
|
|
113
104
|
targetRunId: event.targetRunId,
|
|
114
105
|
messageId: event.messageId,
|
|
115
|
-
|
|
106
|
+
payload: event.payload,
|
|
116
107
|
createdAt: event.timestamp,
|
|
117
108
|
startedAt: event.timestamp
|
|
118
109
|
};
|
|
@@ -124,7 +115,6 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
124
115
|
status: "completed",
|
|
125
116
|
targetRunId: event.targetRunId,
|
|
126
117
|
messageId: event.messageId,
|
|
127
|
-
payload: current?.payload,
|
|
128
118
|
finishedAt: event.timestamp
|
|
129
119
|
};
|
|
130
120
|
case "message_send_failed":
|
|
@@ -135,7 +125,6 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
135
125
|
status: "failed",
|
|
136
126
|
targetRunId: event.targetRunId,
|
|
137
127
|
messageId: event.messageId,
|
|
138
|
-
payload: current?.payload,
|
|
139
128
|
error: event.error,
|
|
140
129
|
finishedAt: event.timestamp
|
|
141
130
|
};
|
|
@@ -148,7 +137,7 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
148
137
|
attempt: 1,
|
|
149
138
|
count: event.count,
|
|
150
139
|
messageId: event.messageId,
|
|
151
|
-
|
|
140
|
+
timeoutAt: event.timeoutAt,
|
|
152
141
|
createdAt: event.timestamp,
|
|
153
142
|
startedAt: event.timestamp
|
|
154
143
|
};
|
|
@@ -236,11 +225,18 @@ function applyWorkflowStepAttemptEvent(runId, event, current) {
|
|
|
236
225
|
function requireCurrentStepAttemptFieldsMatch(event, current) {
|
|
237
226
|
if (current === void 0) return;
|
|
238
227
|
const descriptor = getEventDescriptor(event.kind);
|
|
228
|
+
const currentFields = current;
|
|
239
229
|
for (const field of descriptor.startedEventMatchFields ?? []) {
|
|
240
230
|
if (field === "stepId") continue;
|
|
241
|
-
const value =
|
|
242
|
-
if (
|
|
243
|
-
WorkflowStateError
|
|
231
|
+
const value = getEventField(event, field);
|
|
232
|
+
if (currentFields[field] === void 0 || currentFields[field] === value) continue;
|
|
233
|
+
throw new WorkflowStateError(`Workflow step attempt ${event.stepId} ${field} must match started attempt`, {
|
|
234
|
+
code: WorkflowErrorCode.STATE_STEP_ATTEMPT_FIELD_MISMATCH,
|
|
235
|
+
details: {
|
|
236
|
+
stepId: event.stepId,
|
|
237
|
+
field
|
|
238
|
+
}
|
|
239
|
+
});
|
|
244
240
|
}
|
|
245
241
|
}
|
|
246
242
|
function makeBaseProjectedStepAttempt(runId, stepId, stepName, kind, attempt, timestamp) {
|
|
@@ -256,4 +252,4 @@ function makeBaseProjectedStepAttempt(runId, stepId, stepName, kind, attempt, ti
|
|
|
256
252
|
};
|
|
257
253
|
}
|
|
258
254
|
//#endregion
|
|
259
|
-
export {
|
|
255
|
+
export { applyStepAttemptEvent };
|
|
@@ -1,44 +1,40 @@
|
|
|
1
|
-
import { MessageId } from "../types/
|
|
2
|
-
import {
|
|
3
|
-
import "../types/
|
|
4
|
-
import { StreamId, StreamIdOrName } from "../types/stream-id.mjs";
|
|
5
|
-
import "../types/step.mjs";
|
|
6
|
-
import { WorkflowStepAttemptRecord } from "../types/step-attempts.mjs";
|
|
7
|
-
import { ChildWorkflowCompletedEvent, ChildWorkflowFailedEvent, ChildWorkflowStartedEvent, DeterministicValueRecordedEvent, EventRecord, MessageSendCompletedEvent, MessageSendFailedEvent, MessageSendStartedEvent, MessageSentEvent, MessageWaitCompletedEvent, MessageWaitFailedEvent, MessageWaitStartedEvent, MetadataSetEvent, SleepCompletedEvent, SleepStartedEvent, StreamChunkEvent, StreamClosedEvent, StreamFailedEvent, StreamStartedEvent, WorkflowStepCompletedEvent, WorkflowStepFailedEvent, WorkflowStepStartedEvent } from "../types/events.mjs";
|
|
1
|
+
import { MessageId, StepId, StreamId, StreamIdOrName } from "../types/ids.mjs";
|
|
2
|
+
import { StepAttemptRecord } from "../types/step-attempts.mjs";
|
|
3
|
+
import { ChildWorkflowCompletedEvent, ChildWorkflowFailedEvent, ChildWorkflowStartedEvent, DeterministicValueRecordedEvent, EventRecord, MessageSendCompletedEvent, MessageSendFailedEvent, MessageSendStartedEvent, MessageSentEvent, MessageWaitCompletedEvent, MessageWaitFailedEvent, MessageWaitStartedEvent, MetadataSetEvent, SleepCompletedEvent, SleepStartedEvent, StepCompletedEvent, StepFailedEvent, StepStartedEvent, StreamChunkEvent, StreamClosedEvent, StreamFailedEvent, StreamStartedEvent } from "../types/events.mjs";
|
|
8
4
|
//#region src/history/replay-projection.d.ts
|
|
9
|
-
interface
|
|
5
|
+
interface IndexedEvent<TEvent extends EventRecord> {
|
|
10
6
|
index: number;
|
|
11
7
|
event: TEvent;
|
|
12
8
|
}
|
|
13
|
-
interface
|
|
9
|
+
export interface ReplayProjection {
|
|
14
10
|
startedEventsByStepId: Map<StepId, EventRecord[]>;
|
|
15
|
-
startedStep: Map<StepId,
|
|
16
|
-
completedStep: Map<StepId,
|
|
17
|
-
failedSteps: Map<StepId,
|
|
18
|
-
unstartedFailedStep: Map<StepId,
|
|
11
|
+
startedStep: Map<StepId, StepStartedEvent>;
|
|
12
|
+
completedStep: Map<StepId, StepCompletedEvent>;
|
|
13
|
+
failedSteps: Map<StepId, StepFailedEvent[]>;
|
|
14
|
+
unstartedFailedStep: Map<StepId, StepFailedEvent>;
|
|
19
15
|
metadataSet: Map<StepId, MetadataSetEvent>;
|
|
20
16
|
attributesSet: Map<StepId, Extract<EventRecord, {
|
|
21
17
|
kind: "attributes_set";
|
|
22
18
|
}>>;
|
|
23
|
-
startedStepAttempts: Map<StepId,
|
|
19
|
+
startedStepAttempts: Map<StepId, StepStartedEvent[]>;
|
|
24
20
|
nextStepAttemptByStepId: Map<StepId, number>;
|
|
25
|
-
invalidStartedStepAttempt: Map<StepId,
|
|
21
|
+
invalidStartedStepAttempt: Map<StepId, StepStartedEvent>;
|
|
26
22
|
startedSleep: Map<StepId, SleepStartedEvent>;
|
|
27
23
|
completedSleep: Map<StepId, SleepCompletedEvent>;
|
|
28
24
|
startedChildWorkflow: Map<StepId, ChildWorkflowStartedEvent>;
|
|
29
25
|
completedChildWorkflow: Map<StepId, ChildWorkflowCompletedEvent>;
|
|
30
26
|
failedChildWorkflow: Map<StepId, ChildWorkflowFailedEvent>;
|
|
31
|
-
childWorkflowStartedByAttemptKey: Map<string,
|
|
32
|
-
childWorkflowStartedByStepId: Map<StepId,
|
|
33
|
-
childWorkflowCompletedByStepId: Map<StepId,
|
|
34
|
-
childWorkflowFailedByStepId: Map<StepId,
|
|
27
|
+
childWorkflowStartedByAttemptKey: Map<string, IndexedEvent<ChildWorkflowStartedEvent>>;
|
|
28
|
+
childWorkflowStartedByStepId: Map<StepId, IndexedEvent<ChildWorkflowStartedEvent>[]>;
|
|
29
|
+
childWorkflowCompletedByStepId: Map<StepId, IndexedEvent<ChildWorkflowCompletedEvent>[]>;
|
|
30
|
+
childWorkflowFailedByStepId: Map<StepId, IndexedEvent<ChildWorkflowFailedEvent>[]>;
|
|
35
31
|
startedMessageWait: Map<StepId, MessageWaitStartedEvent>;
|
|
36
|
-
messageWaitStartedByNameAndMessageId: Map<string,
|
|
32
|
+
messageWaitStartedByNameAndMessageId: Map<string, IndexedEvent<MessageWaitStartedEvent>[]>;
|
|
37
33
|
messageWaitStartedIndex: Map<MessageWaitStartedEvent, number>;
|
|
38
34
|
latestMessageWaitStartedIndex: Map<StepId, number>;
|
|
39
|
-
completedMessageWait: Map<StepId,
|
|
40
|
-
failedMessageWait: Map<StepId,
|
|
41
|
-
messageSentById: Map<MessageId,
|
|
35
|
+
completedMessageWait: Map<StepId, IndexedEvent<MessageWaitCompletedEvent>[]>;
|
|
36
|
+
failedMessageWait: Map<StepId, IndexedEvent<MessageWaitFailedEvent>[]>;
|
|
37
|
+
messageSentById: Map<MessageId, IndexedEvent<MessageSentEvent>[]>;
|
|
42
38
|
activeMessageWaitsByMessageId: Map<MessageId, Map<StepId, string>>;
|
|
43
39
|
messageSentByIdempotencyKey: Map<string, MessageSentEvent>;
|
|
44
40
|
latestMessageSentByIdempotencyKey: Map<string, MessageSentEvent>;
|
|
@@ -48,10 +44,10 @@ interface WorkflowReplayProjection {
|
|
|
48
44
|
startedStream: Map<StepId, StreamStartedEvent>;
|
|
49
45
|
streamChunks: Map<StepId, StreamChunkEvent[]>;
|
|
50
46
|
streamChunkByIndex: Map<StepId, Map<number, StreamChunkEvent>>;
|
|
51
|
-
streamStartedByIdOrName: Map<string,
|
|
52
|
-
streamChunksByStreamId: Map<StreamId,
|
|
53
|
-
streamClosedByStreamId: Map<StreamId,
|
|
54
|
-
streamFailedByStreamId: Map<StreamId,
|
|
47
|
+
streamStartedByIdOrName: Map<string, IndexedEvent<StreamStartedEvent>>;
|
|
48
|
+
streamChunksByStreamId: Map<StreamId, IndexedEvent<StreamChunkEvent>[]>;
|
|
49
|
+
streamClosedByStreamId: Map<StreamId, IndexedEvent<StreamClosedEvent>>;
|
|
50
|
+
streamFailedByStreamId: Map<StreamId, IndexedEvent<StreamFailedEvent>>;
|
|
55
51
|
closedStream: Map<StepId, StreamClosedEvent>;
|
|
56
52
|
failedStream: Map<StepId, StreamFailedEvent>;
|
|
57
53
|
deterministicValue: Map<StepId, DeterministicValueRecordedEvent>;
|
|
@@ -59,30 +55,30 @@ interface WorkflowReplayProjection {
|
|
|
59
55
|
workflowStartedCount: number;
|
|
60
56
|
totalStartedStepCount: number;
|
|
61
57
|
}
|
|
62
|
-
declare function
|
|
63
|
-
declare function
|
|
64
|
-
declare function
|
|
65
|
-
declare function
|
|
66
|
-
declare function
|
|
67
|
-
interface StreamEventProjection {
|
|
58
|
+
export declare function createReplayProjection(events: EventRecord[]): ReplayProjection;
|
|
59
|
+
export declare function appendReplayProjectionEvents(projection: ReplayProjection, events: EventRecord[], startIndex: number): ReplayProjection;
|
|
60
|
+
export declare function findLastIndexedEventAfter<TEvent extends EventRecord, TMatch extends TEvent>(entries: IndexedEvent<TEvent>[], afterIndex: number, predicate: (event: TEvent) => event is TMatch): TMatch | undefined;
|
|
61
|
+
export declare function findMessageSentForWait(projection: ReplayProjection, messageId: MessageId, stepId: StepId, timeoutAt: Temporal.Instant | undefined): MessageSentEvent | undefined;
|
|
62
|
+
export declare function findMessageSentByTimestamp(projection: ReplayProjection, messageId: MessageId, timestamp: Temporal.Instant): MessageSentEvent | undefined;
|
|
63
|
+
export interface StreamEventProjection {
|
|
68
64
|
started: StreamStartedEvent;
|
|
69
|
-
chunks:
|
|
70
|
-
closed?:
|
|
71
|
-
failed?:
|
|
65
|
+
chunks: IndexedEvent<StreamChunkEvent>[];
|
|
66
|
+
closed?: IndexedEvent<StreamClosedEvent>;
|
|
67
|
+
failed?: IndexedEvent<StreamFailedEvent>;
|
|
72
68
|
}
|
|
73
|
-
declare function findStreamEventProjection(projection:
|
|
74
|
-
declare function
|
|
75
|
-
declare function findLastMessageWaitStartedForCompleted(projection:
|
|
76
|
-
declare function
|
|
77
|
-
interface
|
|
69
|
+
export declare function findStreamEventProjection(projection: ReplayProjection, streamIdOrName: StreamIdOrName): StreamEventProjection | undefined;
|
|
70
|
+
export declare function findLastSleepStartedForCompleted(projection: ReplayProjection, completed: SleepCompletedEvent): SleepStartedEvent | undefined;
|
|
71
|
+
export declare function findLastMessageWaitStartedForCompleted(projection: ReplayProjection, completed: MessageWaitCompletedEvent): MessageWaitStartedEvent | undefined;
|
|
72
|
+
export declare function findLastChildWorkflowStartedForTerminal(projection: ReplayProjection, terminal: ChildWorkflowCompletedEvent | ChildWorkflowFailedEvent): ChildWorkflowStartedEvent | undefined;
|
|
73
|
+
export interface ChildWorkflowLifecycle {
|
|
78
74
|
started?: ChildWorkflowStartedEvent;
|
|
79
75
|
hasTerminalAfterStarted: boolean;
|
|
80
76
|
}
|
|
81
|
-
declare function
|
|
82
|
-
declare function activeMessageWaitStepIds(projection:
|
|
83
|
-
declare function findLastMessageWaitStartedByNameAndMessageId(projection:
|
|
84
|
-
declare function findLastMessageWaitTerminalAfterStarted(projection:
|
|
85
|
-
declare function
|
|
86
|
-
declare function
|
|
77
|
+
export declare function findChildWorkflowLifecycleForAttempt(projection: ReplayProjection, attempt: StepAttemptRecord): ChildWorkflowLifecycle;
|
|
78
|
+
export declare function activeMessageWaitStepIds(projection: ReplayProjection, messageId: MessageId): StepId[];
|
|
79
|
+
export declare function findLastMessageWaitStartedByNameAndMessageId(projection: ReplayProjection, stepName: string, messageId: MessageId): MessageWaitStartedEvent | undefined;
|
|
80
|
+
export declare function findLastMessageWaitTerminalAfterStarted(projection: ReplayProjection, started: MessageWaitStartedEvent): MessageWaitCompletedEvent | MessageWaitFailedEvent | undefined;
|
|
81
|
+
export declare function findMessageSentByIdempotencyKey(projection: ReplayProjection, idempotencyKey: string | undefined): MessageSentEvent | undefined;
|
|
82
|
+
export declare function findLastMessageSentById(projection: ReplayProjection, messageId: MessageId): MessageSentEvent | undefined;
|
|
87
83
|
//#endregion
|
|
88
|
-
export {
|
|
84
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { isWorkflowRecordedStepEventKind, isWorkflowTerminalStepAttemptEvent } from "../events/descriptors.mjs";
|
|
2
2
|
import { workflowStartedEventMatchesTerminalEvent } from "./validator.mjs";
|
|
3
3
|
//#region src/history/replay-projection.ts
|
|
4
|
-
function
|
|
4
|
+
function createReplayProjection(events) {
|
|
5
5
|
const projection = {
|
|
6
6
|
startedEventsByStepId: /* @__PURE__ */ new Map(),
|
|
7
7
|
startedStep: /* @__PURE__ */ new Map(),
|
|
@@ -49,25 +49,23 @@ function createWorkflowReplayProjection(events) {
|
|
|
49
49
|
workflowStartedCount: 0,
|
|
50
50
|
totalStartedStepCount: 0
|
|
51
51
|
};
|
|
52
|
-
for (const [index, event] of events.entries())
|
|
52
|
+
for (const [index, event] of events.entries()) appendReplayProjectionEvent(projection, event, index);
|
|
53
53
|
return projection;
|
|
54
54
|
}
|
|
55
|
-
function
|
|
56
|
-
for (const [offset, event] of events.entries())
|
|
55
|
+
function appendReplayProjectionEvents(projection, events, startIndex) {
|
|
56
|
+
for (const [offset, event] of events.entries()) appendReplayProjectionEvent(projection, event, startIndex + offset);
|
|
57
57
|
return projection;
|
|
58
58
|
}
|
|
59
|
-
function
|
|
59
|
+
function appendReplayProjectionEvent(projection, event, index) {
|
|
60
60
|
if (isWorkflowTerminalStepAttemptEvent(event) && (projection.startedEventsByStepId.get(event.stepId) ?? []).some((started) => workflowStartedEventMatchesTerminalEvent(started, event))) projection.terminalStartedBefore.add(event);
|
|
61
61
|
switch (event.kind) {
|
|
62
62
|
case "workflow_started":
|
|
63
|
-
|
|
63
|
+
projection.workflowStartedCount++;
|
|
64
64
|
break;
|
|
65
65
|
case "step_started":
|
|
66
66
|
projection.startedStep.set(event.stepId, event);
|
|
67
67
|
appendProjectedEvent(projection.startedStepAttempts, event.stepId, event);
|
|
68
68
|
recordProjectedStepAttempt(projection, event);
|
|
69
|
-
appendStartedEvent(projection.startedEventsByStepId, event);
|
|
70
|
-
incrementTotalStartedStepCount(projection);
|
|
71
69
|
break;
|
|
72
70
|
case "step_completed":
|
|
73
71
|
projection.completedStep.set(event.stepId, event);
|
|
@@ -87,8 +85,6 @@ function appendWorkflowReplayProjectionEvent(projection, event, index) {
|
|
|
87
85
|
break;
|
|
88
86
|
case "sleep_started":
|
|
89
87
|
projection.startedSleep.set(event.stepId, event);
|
|
90
|
-
appendStartedEvent(projection.startedEventsByStepId, event);
|
|
91
|
-
incrementTotalStartedStepCount(projection);
|
|
92
88
|
break;
|
|
93
89
|
case "sleep_completed":
|
|
94
90
|
projection.completedSleep.set(event.stepId, event);
|
|
@@ -96,7 +92,7 @@ function appendWorkflowReplayProjectionEvent(projection, event, index) {
|
|
|
96
92
|
case "child_workflow_started": {
|
|
97
93
|
projection.startedChildWorkflow.set(event.stepId, event);
|
|
98
94
|
const startedWorkflows = projection.childWorkflowStartedByAttemptKey;
|
|
99
|
-
const childWorkflowKey =
|
|
95
|
+
const childWorkflowKey = childWorkflowAttemptKey(event);
|
|
100
96
|
if (!startedWorkflows.has(childWorkflowKey)) startedWorkflows.set(childWorkflowKey, {
|
|
101
97
|
index,
|
|
102
98
|
event
|
|
@@ -105,8 +101,6 @@ function appendWorkflowReplayProjectionEvent(projection, event, index) {
|
|
|
105
101
|
index,
|
|
106
102
|
event
|
|
107
103
|
});
|
|
108
|
-
appendStartedEvent(projection.startedEventsByStepId, event);
|
|
109
|
-
incrementTotalStartedStepCount(projection);
|
|
110
104
|
break;
|
|
111
105
|
}
|
|
112
106
|
case "child_workflow_completed":
|
|
@@ -132,8 +126,6 @@ function appendWorkflowReplayProjectionEvent(projection, event, index) {
|
|
|
132
126
|
});
|
|
133
127
|
projection.messageWaitStartedIndex.set(event, index);
|
|
134
128
|
projection.latestMessageWaitStartedIndex.set(event.stepId, index);
|
|
135
|
-
appendStartedEvent(projection.startedEventsByStepId, event);
|
|
136
|
-
incrementTotalStartedStepCount(projection);
|
|
137
129
|
break;
|
|
138
130
|
case "message_wait_completed":
|
|
139
131
|
deleteActiveMessageWait(projection, event);
|
|
@@ -162,8 +154,6 @@ function appendWorkflowReplayProjectionEvent(projection, event, index) {
|
|
|
162
154
|
break;
|
|
163
155
|
case "message_send_started":
|
|
164
156
|
projection.startedMessageSend.set(event.stepId, event);
|
|
165
|
-
appendStartedEvent(projection.startedEventsByStepId, event);
|
|
166
|
-
incrementTotalStartedStepCount(projection);
|
|
167
157
|
break;
|
|
168
158
|
case "message_send_completed":
|
|
169
159
|
projection.completedMessageSend.set(event.stepId, event);
|
|
@@ -174,8 +164,6 @@ function appendWorkflowReplayProjectionEvent(projection, event, index) {
|
|
|
174
164
|
case "stream_started":
|
|
175
165
|
projection.startedStream.set(event.stepId, event);
|
|
176
166
|
setProjectedStreamStartedByIdOrName(projection, event, index);
|
|
177
|
-
appendStartedEvent(projection.startedEventsByStepId, event);
|
|
178
|
-
incrementTotalStartedStepCount(projection);
|
|
179
167
|
break;
|
|
180
168
|
case "stream_chunk":
|
|
181
169
|
appendProjectedEvent(projection.streamChunks, event.stepId, event);
|
|
@@ -205,7 +193,19 @@ function appendWorkflowReplayProjectionEvent(projection, event, index) {
|
|
|
205
193
|
}
|
|
206
194
|
case "deterministic_value_recorded": projection.deterministicValue.set(event.stepId, event);
|
|
207
195
|
}
|
|
196
|
+
if (STEP_STARTED_KINDS.has(event.kind)) {
|
|
197
|
+
appendStartedEvent(projection.startedEventsByStepId, event);
|
|
198
|
+
projection.totalStartedStepCount++;
|
|
199
|
+
}
|
|
208
200
|
}
|
|
201
|
+
const STEP_STARTED_KINDS = /* @__PURE__ */ new Set([
|
|
202
|
+
"step_started",
|
|
203
|
+
"sleep_started",
|
|
204
|
+
"child_workflow_started",
|
|
205
|
+
"message_wait_started",
|
|
206
|
+
"message_send_started",
|
|
207
|
+
"stream_started"
|
|
208
|
+
]);
|
|
209
209
|
function appendStartedEvent(startedEventsByStepId, event) {
|
|
210
210
|
if (!isWorkflowRecordedStepEventKind(event.kind) || !("stepId" in event)) return;
|
|
211
211
|
appendProjectedEvent(startedEventsByStepId, event.stepId, event);
|
|
@@ -218,15 +218,6 @@ function recordProjectedStepAttempt(projection, event) {
|
|
|
218
218
|
const nextAttempt = event.attempt + 1;
|
|
219
219
|
projection.nextStepAttemptByStepId.set(event.stepId, Math.max(projection.nextStepAttemptByStepId.get(event.stepId) ?? 1, nextAttempt));
|
|
220
220
|
}
|
|
221
|
-
function incrementTotalStartedStepCount(projection) {
|
|
222
|
-
asMutableProjection(projection).totalStartedStepCount++;
|
|
223
|
-
}
|
|
224
|
-
function incrementWorkflowStartedCount(projection) {
|
|
225
|
-
asMutableProjection(projection).workflowStartedCount++;
|
|
226
|
-
}
|
|
227
|
-
function asMutableProjection(projection) {
|
|
228
|
-
return projection;
|
|
229
|
-
}
|
|
230
221
|
function setProjectedStreamChunkByIndex(projection, event) {
|
|
231
222
|
const chunks = projection.streamChunkByIndex.get(event.stepId);
|
|
232
223
|
if (chunks === void 0) {
|
|
@@ -256,13 +247,13 @@ function deleteActiveMessageWait(projection, event) {
|
|
|
256
247
|
const activeWaits = activeMessageWaits(projection, event.messageId);
|
|
257
248
|
if (activeWaits.get(event.stepId) === event.stepName) activeWaits.delete(event.stepId);
|
|
258
249
|
}
|
|
259
|
-
function
|
|
250
|
+
function findLastIndexedEventAfter(entries, afterIndex, predicate) {
|
|
260
251
|
for (let index = entries.length - 1; index >= 0; index--) {
|
|
261
252
|
const entry = entries[index];
|
|
262
253
|
if (entry.index > afterIndex && predicate(entry.event)) return entry.event;
|
|
263
254
|
}
|
|
264
255
|
}
|
|
265
|
-
function
|
|
256
|
+
function findLastIndexedEventEntryAfter(entries, afterIndex, predicate) {
|
|
266
257
|
for (let index = entries.length - 1; index >= 0; index--) {
|
|
267
258
|
const entry = entries[index];
|
|
268
259
|
const event = entry.event;
|
|
@@ -272,14 +263,14 @@ function findLastIndexedWorkflowEventEntryAfter(entries, afterIndex, predicate)
|
|
|
272
263
|
};
|
|
273
264
|
}
|
|
274
265
|
}
|
|
275
|
-
function
|
|
266
|
+
function findMessageSentForWait(projection, messageId, stepId, timeoutAt) {
|
|
276
267
|
const waitStartedIndex = projection.latestMessageWaitStartedIndex.get(stepId) ?? -1;
|
|
277
268
|
return (projection.messageSentById.get(messageId) ?? []).find(({ index, event }) => {
|
|
278
269
|
return index > waitStartedIndex && (event.waiterStepIds === void 0 || event.waiterStepIds.includes(stepId)) && (timeoutAt === void 0 || Temporal.Instant.compare(event.timestamp, timeoutAt) < 0);
|
|
279
270
|
})?.event;
|
|
280
271
|
}
|
|
281
|
-
function
|
|
282
|
-
return
|
|
272
|
+
function findMessageSentByTimestamp(projection, messageId, timestamp) {
|
|
273
|
+
return findLastIndexedEventAfter(projection.messageSentById.get(messageId) ?? [], -1, (event) => Temporal.Instant.compare(event.timestamp, timestamp) === 0);
|
|
283
274
|
}
|
|
284
275
|
function findStreamEventProjection(projection, streamIdOrName) {
|
|
285
276
|
const started = projection.streamStartedByIdOrName.get(streamIdOrName);
|
|
@@ -287,11 +278,11 @@ function findStreamEventProjection(projection, streamIdOrName) {
|
|
|
287
278
|
return {
|
|
288
279
|
started: started.event,
|
|
289
280
|
chunks: [...projection.streamChunksByStreamId.get(started.event.streamId) ?? []].sort((left, right) => left.event.index - right.event.index),
|
|
290
|
-
|
|
291
|
-
|
|
281
|
+
closed: projection.streamClosedByStreamId.get(started.event.streamId),
|
|
282
|
+
failed: projection.streamFailedByStreamId.get(started.event.streamId)
|
|
292
283
|
};
|
|
293
284
|
}
|
|
294
|
-
function
|
|
285
|
+
function findLastSleepStartedForCompleted(projection, completed) {
|
|
295
286
|
const started = projection.startedSleep.get(completed.stepId);
|
|
296
287
|
return started?.stepName === completed.stepName ? started : void 0;
|
|
297
288
|
}
|
|
@@ -299,19 +290,19 @@ function findLastMessageWaitStartedForCompleted(projection, completed) {
|
|
|
299
290
|
const started = projection.startedMessageWait.get(completed.stepId);
|
|
300
291
|
return started?.stepName === completed.stepName && started.messageId === completed.messageId ? started : void 0;
|
|
301
292
|
}
|
|
302
|
-
function
|
|
303
|
-
return
|
|
293
|
+
function findLastChildWorkflowStartedForTerminal(projection, terminal) {
|
|
294
|
+
return findLastIndexedEventAfter(projection.childWorkflowStartedByStepId.get(terminal.stepId) ?? [], -1, (event) => childWorkflowTerminalMatchesStarted(terminal, event));
|
|
304
295
|
}
|
|
305
|
-
function
|
|
306
|
-
const started = projection.childWorkflowStartedByAttemptKey.get(
|
|
296
|
+
function findChildWorkflowLifecycleForAttempt(projection, attempt) {
|
|
297
|
+
const started = projection.childWorkflowStartedByAttemptKey.get(childWorkflowAttemptKey(attempt));
|
|
307
298
|
if (started === void 0) return { hasTerminalAfterStarted: false };
|
|
308
299
|
return {
|
|
309
300
|
started: started.event,
|
|
310
|
-
hasTerminalAfterStarted:
|
|
301
|
+
hasTerminalAfterStarted: hasChildWorkflowTerminalAfterStarted(projection, started)
|
|
311
302
|
};
|
|
312
303
|
}
|
|
313
|
-
function
|
|
314
|
-
return
|
|
304
|
+
function hasChildWorkflowTerminalAfterStarted(projection, started) {
|
|
305
|
+
return findLastIndexedEventEntryAfter(projection.childWorkflowCompletedByStepId.get(started.event.stepId) ?? [], started.index, (event) => childWorkflowTerminalMatchesStarted(event, started.event)) !== void 0 || findLastIndexedEventEntryAfter(projection.childWorkflowFailedByStepId.get(started.event.stepId) ?? [], started.index, (event) => childWorkflowTerminalMatchesStarted(event, started.event)) !== void 0;
|
|
315
306
|
}
|
|
316
307
|
function activeMessageWaitStepIds(projection, messageId) {
|
|
317
308
|
return [...projection.activeMessageWaitsByMessageId.get(messageId)?.keys() ?? []];
|
|
@@ -322,16 +313,16 @@ function findLastMessageWaitStartedByNameAndMessageId(projection, stepName, mess
|
|
|
322
313
|
function findLastMessageWaitTerminalAfterStarted(projection, started) {
|
|
323
314
|
const startedIndex = projection.messageWaitStartedIndex.get(started);
|
|
324
315
|
if (startedIndex === void 0) return;
|
|
325
|
-
const completed =
|
|
326
|
-
const failed =
|
|
316
|
+
const completed = findLastIndexedEventEntryAfter(projection.completedMessageWait.get(started.stepId) ?? [], startedIndex, (event) => event.stepName === started.stepName && event.messageId === started.messageId);
|
|
317
|
+
const failed = findLastIndexedEventEntryAfter(projection.failedMessageWait.get(started.stepId) ?? [], startedIndex, (event) => event.stepName === started.stepName && event.messageId === started.messageId);
|
|
327
318
|
if (completed === void 0) return failed?.event;
|
|
328
319
|
if (failed === void 0) return completed.event;
|
|
329
320
|
return completed.index > failed.index ? completed.event : failed.event;
|
|
330
321
|
}
|
|
331
|
-
function
|
|
322
|
+
function findMessageSentByIdempotencyKey(projection, idempotencyKey) {
|
|
332
323
|
return idempotencyKey === void 0 ? void 0 : projection.messageSentByIdempotencyKey.get(idempotencyKey);
|
|
333
324
|
}
|
|
334
|
-
function
|
|
325
|
+
function findLastMessageSentById(projection, messageId) {
|
|
335
326
|
return (projection.messageSentById.get(messageId) ?? []).at(-1)?.event;
|
|
336
327
|
}
|
|
337
328
|
function appendProjectedEvent(map, stepId, event) {
|
|
@@ -345,7 +336,7 @@ function appendProjectedEvent(map, stepId, event) {
|
|
|
345
336
|
function workflowMessageWaitNameMessageKey(stepName, messageId) {
|
|
346
337
|
return `${stepName}\u0000${messageId}`;
|
|
347
338
|
}
|
|
348
|
-
function
|
|
339
|
+
function childWorkflowAttemptKey(event) {
|
|
349
340
|
return [
|
|
350
341
|
workflowProjectionKeyPart(event.childRunId),
|
|
351
342
|
workflowProjectionKeyPart(event.stepId),
|
|
@@ -360,8 +351,8 @@ function workflowChildWorkflowAttemptKey(event) {
|
|
|
360
351
|
function workflowProjectionKeyPart(value) {
|
|
361
352
|
return value === void 0 ? "" : String(value);
|
|
362
353
|
}
|
|
363
|
-
function
|
|
354
|
+
function childWorkflowTerminalMatchesStarted(event, started) {
|
|
364
355
|
return event.stepId === started.stepId && event.stepName === started.stepName && event.childRunId === started.childRunId && event.attempt === started.attempt;
|
|
365
356
|
}
|
|
366
357
|
//#endregion
|
|
367
|
-
export { activeMessageWaitStepIds,
|
|
358
|
+
export { activeMessageWaitStepIds, appendReplayProjectionEvents, createReplayProjection, findChildWorkflowLifecycleForAttempt, findLastChildWorkflowStartedForTerminal, findLastIndexedEventAfter, findLastMessageSentById, findLastMessageWaitStartedByNameAndMessageId, findLastMessageWaitStartedForCompleted, findLastMessageWaitTerminalAfterStarted, findLastSleepStartedForCompleted, findMessageSentByIdempotencyKey, findMessageSentByTimestamp, findMessageSentForWait, findStreamEventProjection };
|
|
@@ -1,27 +1,22 @@
|
|
|
1
|
-
import { MessageId } from "../types/
|
|
2
|
-
import {
|
|
3
|
-
import "../types/
|
|
4
|
-
import {
|
|
5
|
-
import "
|
|
6
|
-
import {
|
|
7
|
-
import { WorkflowStepIdentity, WorkflowStepType } from "../types/run.mjs";
|
|
8
|
-
import { ChildWorkflowCompletedEvent, ChildWorkflowFailedEvent, ChildWorkflowStartedEvent, DeterministicValueRecordedEvent, EventRecord, MessageSendCompletedEvent, MessageSendFailedEvent, MessageSendStartedEvent, MessageSentEvent, MessageWaitCompletedEvent, MessageWaitFailedEvent, MessageWaitStartedEvent, MetadataSetEvent, SleepCompletedEvent, SleepStartedEvent, StreamChunkEvent, StreamClosedEvent, StreamFailedEvent, StreamStartedEvent, WorkflowStepCompletedEvent, WorkflowStepFailedEvent, WorkflowStepStartedEvent } from "../types/events.mjs";
|
|
9
|
-
import { StreamEventProjection, WorkflowChildWorkflowLifecycle } from "./replay-projection.mjs";
|
|
10
|
-
import { applyWorkflowStepAttemptEvent } from "./projection.mjs";
|
|
1
|
+
import { MessageId, StepId, StreamIdOrName } from "../types/ids.mjs";
|
|
2
|
+
import { StepAttemptRecord } from "../types/step-attempts.mjs";
|
|
3
|
+
import { StepIdentity, StepType } from "../types/run.mjs";
|
|
4
|
+
import { ChildWorkflowCompletedEvent, ChildWorkflowFailedEvent, ChildWorkflowStartedEvent, DeterministicValueRecordedEvent, EventRecord, MessageSendCompletedEvent, MessageSendFailedEvent, MessageSendStartedEvent, MessageSentEvent, MessageWaitCompletedEvent, MessageWaitFailedEvent, MessageWaitStartedEvent, MetadataSetEvent, SleepCompletedEvent, SleepStartedEvent, StepCompletedEvent, StepFailedEvent, StepStartedEvent, StreamChunkEvent, StreamClosedEvent, StreamFailedEvent, StreamStartedEvent } from "../types/events.mjs";
|
|
5
|
+
import { ChildWorkflowLifecycle, StreamEventProjection } from "./replay-projection.mjs";
|
|
6
|
+
import { applyStepAttemptEvent } from "./projection.mjs";
|
|
11
7
|
import { createTimeline } from "./timeline.mjs";
|
|
12
|
-
import {
|
|
13
|
-
//#region src/history/
|
|
14
|
-
|
|
15
|
-
declare class WorkflowHistory {
|
|
8
|
+
import { stepAttemptKey } from "../store-keys.mjs";
|
|
9
|
+
//#region src/history/replay.d.ts
|
|
10
|
+
export declare class History {
|
|
16
11
|
#private;
|
|
17
12
|
constructor(events: readonly EventRecord[]);
|
|
18
13
|
get events(): readonly EventRecord[];
|
|
19
|
-
nextStep<TType extends
|
|
14
|
+
nextStep<TType extends StepType>(type: TType, name: string): StepIdentity<TType>;
|
|
20
15
|
append(appendEvents: () => Promise<readonly EventRecord[]>): Promise<readonly EventRecord[]>;
|
|
21
|
-
completedStep(stepId: StepId):
|
|
22
|
-
startedStep(stepId: StepId):
|
|
23
|
-
failedSteps(stepId: StepId): readonly
|
|
24
|
-
unstartedFailedStep(stepId: StepId):
|
|
16
|
+
completedStep(stepId: StepId): StepCompletedEvent | undefined;
|
|
17
|
+
startedStep(stepId: StepId): StepStartedEvent | undefined;
|
|
18
|
+
failedSteps(stepId: StepId): readonly StepFailedEvent[];
|
|
19
|
+
unstartedFailedStep(stepId: StepId): StepFailedEvent | undefined;
|
|
25
20
|
metadataSet(stepId: StepId): MetadataSetEvent | undefined;
|
|
26
21
|
attributesSet(stepId: StepId): Extract<EventRecord, {
|
|
27
22
|
readonly kind: "attributes_set";
|
|
@@ -37,7 +32,7 @@ declare class WorkflowHistory {
|
|
|
37
32
|
completedChildWorkflow(stepId: StepId): ChildWorkflowCompletedEvent | undefined;
|
|
38
33
|
failedChildWorkflow(stepId: StepId): ChildWorkflowFailedEvent | undefined;
|
|
39
34
|
startedChildWorkflowForTerminal(terminal: ChildWorkflowCompletedEvent | ChildWorkflowFailedEvent): ChildWorkflowStartedEvent | undefined;
|
|
40
|
-
childWorkflowLifecycleForAttempt(attempt:
|
|
35
|
+
childWorkflowLifecycleForAttempt(attempt: StepAttemptRecord): ChildWorkflowLifecycle;
|
|
41
36
|
startedMessageWait(stepId: StepId): MessageWaitStartedEvent | undefined;
|
|
42
37
|
startedMessageWaitForCompleted(completed: MessageWaitCompletedEvent): MessageWaitStartedEvent | undefined;
|
|
43
38
|
completedMessageWait(stepId: StepId): MessageWaitCompletedEvent | undefined;
|
|
@@ -68,4 +63,4 @@ declare class WorkflowHistory {
|
|
|
68
63
|
isReplayConsumed(): boolean;
|
|
69
64
|
}
|
|
70
65
|
//#endregion
|
|
71
|
-
export { type
|
|
66
|
+
export { type StepIdentity, type StreamEventProjection, applyStepAttemptEvent, createTimeline, stepAttemptKey };
|