@temelj/workflow 0.0.0-alpha.1
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/LICENSE +21 -0
- package/README.md +38 -0
- package/dist/attributes.d.mts +15 -0
- package/dist/attributes.mjs +30 -0
- package/dist/client/create.d.mts +31 -0
- package/dist/client/create.mjs +67 -0
- package/dist/client/facades.d.mts +21 -0
- package/dist/client/facades.mjs +142 -0
- package/dist/client/mod.d.mts +2 -0
- package/dist/client/mod.mjs +2 -0
- package/dist/client/run-handle.d.mts +66 -0
- package/dist/client/run-handle.mjs +156 -0
- package/dist/client/worker-options.d.mts +17 -0
- package/dist/client/worker-options.mjs +25 -0
- package/dist/collection.d.mts +15 -0
- package/dist/collection.mjs +33 -0
- package/dist/compiled-function.d.mts +27 -0
- package/dist/compiled-function.mjs +54 -0
- package/dist/definition.d.mts +37 -0
- package/dist/definition.mjs +83 -0
- package/dist/engine/child-workflow.d.mts +10 -0
- package/dist/engine/child-workflow.mjs +333 -0
- package/dist/engine/command-identity.d.mts +9 -0
- package/dist/engine/command-identity.mjs +14 -0
- package/dist/engine/create.d.mts +106 -0
- package/dist/engine/create.mjs +402 -0
- package/dist/engine/deterministic.d.mts +12 -0
- package/dist/engine/deterministic.mjs +102 -0
- package/dist/engine/durable-command.d.mts +10 -0
- package/dist/engine/durable-command.mjs +17 -0
- package/dist/engine/execution-api.d.mts +29 -0
- package/dist/engine/execution-api.mjs +33 -0
- package/dist/engine/execution-service.d.mts +41 -0
- package/dist/engine/execution-service.mjs +288 -0
- package/dist/engine/hooks.d.mts +56 -0
- package/dist/engine/hooks.mjs +237 -0
- package/dist/engine/inspection-api.d.mts +34 -0
- package/dist/engine/inspection-api.mjs +77 -0
- package/dist/engine/inspection.d.mts +18 -0
- package/dist/engine/inspection.mjs +149 -0
- package/dist/engine/lifecycle.d.mts +18 -0
- package/dist/engine/lifecycle.mjs +38 -0
- package/dist/engine/lock-replay.d.mts +30 -0
- package/dist/engine/lock-replay.mjs +38 -0
- package/dist/engine/lock.d.mts +21 -0
- package/dist/engine/lock.mjs +197 -0
- package/dist/engine/message.d.mts +47 -0
- package/dist/engine/message.mjs +357 -0
- package/dist/engine/mod.d.mts +4 -0
- package/dist/engine/mod.mjs +2 -0
- package/dist/engine/observation.d.mts +35 -0
- package/dist/engine/observation.mjs +201 -0
- package/dist/engine/recovery.d.mts +26 -0
- package/dist/engine/recovery.mjs +92 -0
- package/dist/engine/replay.d.mts +41 -0
- package/dist/engine/replay.mjs +122 -0
- package/dist/engine/retry-policy.d.mts +4 -0
- package/dist/engine/retry-policy.mjs +4 -0
- package/dist/engine/retry.d.mts +23 -0
- package/dist/engine/retry.mjs +75 -0
- package/dist/engine/run-data.d.mts +9 -0
- package/dist/engine/run-data.mjs +74 -0
- package/dist/engine/run-service.d.mts +38 -0
- package/dist/engine/run-service.mjs +133 -0
- package/dist/engine/run-utils.d.mts +16 -0
- package/dist/engine/run-utils.mjs +83 -0
- package/dist/engine/schedule.d.mts +25 -0
- package/dist/engine/schedule.mjs +207 -0
- package/dist/engine/serialization.d.mts +9 -0
- package/dist/engine/serialization.mjs +85 -0
- package/dist/engine/start-api.d.mts +30 -0
- package/dist/engine/start-api.mjs +98 -0
- package/dist/engine/state.d.mts +77 -0
- package/dist/engine/state.mjs +464 -0
- package/dist/engine/step-api.d.mts +9 -0
- package/dist/engine/step-api.mjs +25 -0
- package/dist/engine/stream.d.mts +55 -0
- package/dist/engine/stream.mjs +333 -0
- package/dist/engine/summary/active-events.d.mts +34 -0
- package/dist/engine/summary/active-events.mjs +69 -0
- package/dist/engine/summary/child-workflow-runs.d.mts +24 -0
- package/dist/engine/summary/child-workflow-runs.mjs +138 -0
- package/dist/engine/summary/child-workflow-waits.d.mts +21 -0
- package/dist/engine/summary/child-workflow-waits.mjs +67 -0
- package/dist/engine/summary/recovery-child-workflow-waits.d.mts +11 -0
- package/dist/engine/summary/recovery-child-workflow-waits.mjs +89 -0
- package/dist/engine/summary/recovery-due-runs.d.mts +16 -0
- package/dist/engine/summary/recovery-due-runs.mjs +52 -0
- package/dist/engine/summary/recovery-failed-runs.d.mts +14 -0
- package/dist/engine/summary/recovery-failed-runs.mjs +33 -0
- package/dist/engine/summary/recovery-lease-runs.d.mts +16 -0
- package/dist/engine/summary/recovery-lease-runs.mjs +69 -0
- package/dist/engine/summary/recovery-locks.d.mts +18 -0
- package/dist/engine/summary/recovery-locks.mjs +100 -0
- package/dist/engine/summary/recovery-message-waits.d.mts +11 -0
- package/dist/engine/summary/recovery-message-waits.mjs +74 -0
- package/dist/engine/summary/recovery-retry-runs.d.mts +17 -0
- package/dist/engine/summary/recovery-retry-runs.mjs +65 -0
- package/dist/engine/summary/recovery-run-timestamps.d.mts +13 -0
- package/dist/engine/summary/recovery-run-timestamps.mjs +18 -0
- package/dist/engine/summary/recovery-runs.d.mts +23 -0
- package/dist/engine/summary/recovery-runs.mjs +54 -0
- package/dist/engine/summary/recovery-schedules.d.mts +10 -0
- package/dist/engine/summary/recovery-schedules.mjs +46 -0
- package/dist/engine/summary/recovery-sleep-waits.d.mts +10 -0
- package/dist/engine/summary/recovery-sleep-waits.mjs +53 -0
- package/dist/engine/summary/recovery-waits.d.mts +21 -0
- package/dist/engine/summary/recovery-waits.mjs +29 -0
- package/dist/engine/summary/run-availability.d.mts +13 -0
- package/dist/engine/summary/run-availability.mjs +37 -0
- package/dist/engine/summary/run-cleanup.d.mts +14 -0
- package/dist/engine/summary/run-cleanup.mjs +44 -0
- package/dist/engine/summary/run-failure.d.mts +14 -0
- package/dist/engine/summary/run-failure.mjs +62 -0
- package/dist/engine/summary/run-hooks.d.mts +14 -0
- package/dist/engine/summary/run-hooks.mjs +63 -0
- package/dist/engine/summary/run-lease.d.mts +11 -0
- package/dist/engine/summary/run-lease.mjs +64 -0
- package/dist/engine/summary/run-message-waits.d.mts +15 -0
- package/dist/engine/summary/run-message-waits.mjs +62 -0
- package/dist/engine/summary/run-metrics.d.mts +31 -0
- package/dist/engine/summary/run-metrics.mjs +93 -0
- package/dist/engine/summary/run-retry.d.mts +9 -0
- package/dist/engine/summary/run-retry.mjs +69 -0
- package/dist/engine/summary/run-sleeps.d.mts +15 -0
- package/dist/engine/summary/run-sleeps.mjs +61 -0
- package/dist/engine/summary/run-state.d.mts +26 -0
- package/dist/engine/summary/run-state.mjs +48 -0
- package/dist/engine/summary/run-status.d.mts +16 -0
- package/dist/engine/summary/run-status.mjs +35 -0
- package/dist/engine/summary/run-streams.d.mts +14 -0
- package/dist/engine/summary/run-streams.mjs +46 -0
- package/dist/engine/summary/run-transition.d.mts +9 -0
- package/dist/engine/summary/run-transition.mjs +39 -0
- package/dist/engine/summary/run-workflow.d.mts +9 -0
- package/dist/engine/summary/run-workflow.mjs +47 -0
- package/dist/engine/summary/step-attempt-active-child-workflows.d.mts +13 -0
- package/dist/engine/summary/step-attempt-active-child-workflows.mjs +55 -0
- package/dist/engine/summary/step-attempt-active-fields.d.mts +23 -0
- package/dist/engine/summary/step-attempt-active-fields.mjs +14 -0
- package/dist/engine/summary/step-attempt-active-message-waits.d.mts +12 -0
- package/dist/engine/summary/step-attempt-active-message-waits.mjs +47 -0
- package/dist/engine/summary/step-attempt-active-sleeps.d.mts +19 -0
- package/dist/engine/summary/step-attempt-active-sleeps.mjs +44 -0
- package/dist/engine/summary/step-attempt-buckets.d.mts +22 -0
- package/dist/engine/summary/step-attempt-buckets.mjs +152 -0
- package/dist/engine/summary/step-attempt-failure.d.mts +12 -0
- package/dist/engine/summary/step-attempt-failure.mjs +61 -0
- package/dist/engine/summary/step-attempt-lifecycle.d.mts +13 -0
- package/dist/engine/summary/step-attempt-lifecycle.mjs +19 -0
- package/dist/engine/summary/step-attempts.d.mts +11 -0
- package/dist/engine/summary/step-attempts.mjs +43 -0
- package/dist/engine/summary.d.mts +32 -0
- package/dist/engine/summary.mjs +37 -0
- package/dist/engine/task.d.mts +6 -0
- package/dist/engine/task.mjs +207 -0
- package/dist/errors/base.d.mts +99 -0
- package/dist/errors/base.mjs +426 -0
- package/dist/errors/capability.d.mts +11 -0
- package/dist/errors/capability.mjs +23 -0
- package/dist/errors/definition.d.mts +21 -0
- package/dist/errors/definition.mjs +51 -0
- package/dist/errors/details.d.mts +13 -0
- package/dist/errors/details.mjs +65 -0
- package/dist/errors/failures.d.mts +81 -0
- package/dist/errors/failures.mjs +168 -0
- package/dist/errors/hook.d.mts +14 -0
- package/dist/errors/hook.mjs +30 -0
- package/dist/errors/implementation.d.mts +11 -0
- package/dist/errors/implementation.mjs +25 -0
- package/dist/errors/lock.d.mts +28 -0
- package/dist/errors/lock.mjs +70 -0
- package/dist/errors/message.d.mts +106 -0
- package/dist/errors/message.mjs +122 -0
- package/dist/errors/mod.d.mts +17 -0
- package/dist/errors/mod.mjs +17 -0
- package/dist/errors/record-view.d.mts +11 -0
- package/dist/errors/record-view.mjs +24 -0
- package/dist/errors/records.d.mts +7 -0
- package/dist/errors/records.mjs +280 -0
- package/dist/errors/run.d.mts +116 -0
- package/dist/errors/run.mjs +232 -0
- package/dist/errors/runtime.d.mts +12 -0
- package/dist/errors/runtime.mjs +24 -0
- package/dist/errors/schedule.d.mts +27 -0
- package/dist/errors/schedule.mjs +65 -0
- package/dist/errors/step.d.mts +76 -0
- package/dist/errors/step.mjs +113 -0
- package/dist/errors/stream.d.mts +24 -0
- package/dist/errors/stream.mjs +64 -0
- package/dist/esbuild.d.mts +7 -0
- package/dist/esbuild.mjs +6 -0
- package/dist/events/descriptors.d.mts +245 -0
- package/dist/events/descriptors.mjs +405 -0
- package/dist/events/mod.d.mts +3 -0
- package/dist/events/mod.mjs +2 -0
- package/dist/history/attempt-key.d.mts +6 -0
- package/dist/history/attempt-key.mjs +7 -0
- package/dist/history/mod.d.mts +71 -0
- package/dist/history/mod.mjs +195 -0
- package/dist/history/projection.d.mts +8 -0
- package/dist/history/projection.mjs +259 -0
- package/dist/history/replay-projection.d.mts +88 -0
- package/dist/history/replay-projection.mjs +369 -0
- package/dist/history/sequencer.d.mts +16 -0
- package/dist/history/sequencer.mjs +78 -0
- package/dist/history/step-attempts.d.mts +9 -0
- package/dist/history/step-attempts.mjs +50 -0
- package/dist/history/timeline.d.mts +16 -0
- package/dist/history/timeline.mjs +272 -0
- package/dist/history/validator.d.mts +9 -0
- package/dist/history/validator.mjs +110 -0
- package/dist/inspection/mod.d.mts +5 -0
- package/dist/inspection/mod.mjs +3 -0
- package/dist/message-options.d.mts +8 -0
- package/dist/message-options.mjs +25 -0
- package/dist/mod.d.mts +52 -0
- package/dist/mod.mjs +26 -0
- package/dist/otel/support.d.mts +18 -0
- package/dist/otel/support.mjs +102 -0
- package/dist/otel.d.mts +30 -0
- package/dist/otel.mjs +588 -0
- package/dist/pagination.d.mts +25 -0
- package/dist/pagination.mjs +73 -0
- package/dist/registry.d.mts +20 -0
- package/dist/registry.mjs +48 -0
- package/dist/rolldown.d.mts +7 -0
- package/dist/rolldown.mjs +6 -0
- package/dist/rollup.d.mts +7 -0
- package/dist/rollup.mjs +6 -0
- package/dist/rspack.d.mts +7 -0
- package/dist/rspack.mjs +6 -0
- package/dist/runtime.d.mts +34 -0
- package/dist/runtime.mjs +194 -0
- package/dist/step-definition.d.mts +10 -0
- package/dist/step-definition.mjs +15 -0
- package/dist/store/append-projection.d.mts +15 -0
- package/dist/store/append-projection.mjs +26 -0
- package/dist/store/capabilities.d.mts +14 -0
- package/dist/store/capabilities.mjs +42 -0
- package/dist/store/cleanup.d.mts +18 -0
- package/dist/store/cleanup.mjs +338 -0
- package/dist/store/compaction.d.mts +5 -0
- package/dist/store/compaction.mjs +8 -0
- package/dist/store/create.d.mts +52 -0
- package/dist/store/create.mjs +159 -0
- package/dist/store/event-append-project.d.mts +15 -0
- package/dist/store/event-append-project.mjs +77 -0
- package/dist/store/event-append.d.mts +37 -0
- package/dist/store/event-append.mjs +80 -0
- package/dist/store/event-history.d.mts +22 -0
- package/dist/store/event-history.mjs +75 -0
- package/dist/store/event.d.mts +10 -0
- package/dist/store/event.mjs +28 -0
- package/dist/store/idempotency.d.mts +10 -0
- package/dist/store/idempotency.mjs +167 -0
- package/dist/store/instrumentation.d.mts +7 -0
- package/dist/store/instrumentation.mjs +123 -0
- package/dist/store/lock.d.mts +8 -0
- package/dist/store/lock.mjs +28 -0
- package/dist/store/materialization.d.mts +30 -0
- package/dist/store/materialization.mjs +127 -0
- package/dist/store/message-index.d.mts +21 -0
- package/dist/store/message-index.mjs +121 -0
- package/dist/store/mod.d.mts +5 -0
- package/dist/store/mod.mjs +4 -0
- package/dist/store/query.d.mts +24 -0
- package/dist/store/query.mjs +82 -0
- package/dist/store/revision.d.mts +4 -0
- package/dist/store/revision.mjs +7 -0
- package/dist/store/run.d.mts +49 -0
- package/dist/store/run.mjs +236 -0
- package/dist/store/schedule.d.mts +12 -0
- package/dist/store/schedule.mjs +41 -0
- package/dist/store/schema.d.mts +14 -0
- package/dist/store/schema.mjs +17 -0
- package/dist/store/step-attempt.d.mts +14 -0
- package/dist/store/step-attempt.mjs +23 -0
- package/dist/store/storage-value.d.mts +5 -0
- package/dist/store/storage-value.mjs +6 -0
- package/dist/store/validation.d.mts +35 -0
- package/dist/store/validation.mjs +77 -0
- package/dist/store-keys.d.mts +49 -0
- package/dist/store-keys.mjs +63 -0
- package/dist/telemetry.d.mts +132 -0
- package/dist/telemetry.mjs +172 -0
- package/dist/temporal.d.mts +23 -0
- package/dist/temporal.mjs +59 -0
- package/dist/timer.d.mts +12 -0
- package/dist/timer.mjs +28 -0
- package/dist/types/cleanup.d.mts +112 -0
- package/dist/types/cleanup.mjs +22 -0
- package/dist/types/client.d.mts +270 -0
- package/dist/types/client.mjs +1 -0
- package/dist/types/common.d.mts +19 -0
- package/dist/types/common.mjs +15 -0
- package/dist/types/definition.d.mts +92 -0
- package/dist/types/definition.mjs +1 -0
- package/dist/types/engine-options.d.mts +76 -0
- package/dist/types/engine-options.mjs +1 -0
- package/dist/types/engine.d.mts +309 -0
- package/dist/types/engine.mjs +1 -0
- package/dist/types/error-code.d.mts +256 -0
- package/dist/types/error-code.mjs +131 -0
- package/dist/types/error.d.mts +236 -0
- package/dist/types/error.mjs +48 -0
- package/dist/types/events.d.mts +2869 -0
- package/dist/types/events.mjs +283 -0
- package/dist/types/hook.d.mts +149 -0
- package/dist/types/hook.mjs +66 -0
- package/dist/types/lock.d.mts +63 -0
- package/dist/types/lock.mjs +18 -0
- package/dist/types/message-id.d.mts +7 -0
- package/dist/types/message-id.mjs +5 -0
- package/dist/types/message.d.mts +87 -0
- package/dist/types/message.mjs +1 -0
- package/dist/types/observation.d.mts +146 -0
- package/dist/types/observation.mjs +1 -0
- package/dist/types/pagination.d.mts +32 -0
- package/dist/types/pagination.mjs +13 -0
- package/dist/types/result.d.mts +62 -0
- package/dist/types/result.mjs +1 -0
- package/dist/types/retry.d.mts +48 -0
- package/dist/types/retry.mjs +1 -0
- package/dist/types/run-id.d.mts +7 -0
- package/dist/types/run-id.mjs +5 -0
- package/dist/types/run-list.d.mts +43 -0
- package/dist/types/run-list.mjs +1 -0
- package/dist/types/run-options.d.mts +86 -0
- package/dist/types/run-options.mjs +1 -0
- package/dist/types/run.d.mts +355 -0
- package/dist/types/run.mjs +207 -0
- package/dist/types/runtime.d.mts +143 -0
- package/dist/types/runtime.mjs +21 -0
- package/dist/types/schedule.d.mts +127 -0
- package/dist/types/schedule.mjs +48 -0
- package/dist/types/step-attempts.d.mts +326 -0
- package/dist/types/step-attempts.mjs +43 -0
- package/dist/types/step-id.d.mts +7 -0
- package/dist/types/step-id.mjs +5 -0
- package/dist/types/step.d.mts +183 -0
- package/dist/types/step.mjs +5 -0
- package/dist/types/store.d.mts +254 -0
- package/dist/types/store.mjs +1 -0
- package/dist/types/stream-id.d.mts +7 -0
- package/dist/types/stream-id.mjs +5 -0
- package/dist/types/stream.d.mts +126 -0
- package/dist/types/stream.mjs +1 -0
- package/dist/types/summary.d.mts +318 -0
- package/dist/types/summary.mjs +1 -0
- package/dist/types/telemetry.d.mts +74 -0
- package/dist/types/telemetry.mjs +9 -0
- package/dist/types/timeline.d.mts +237 -0
- package/dist/types/timeline.mjs +1 -0
- package/dist/types/vite.d.mts +65 -0
- package/dist/types/vite.mjs +1 -0
- package/dist/types/worker-id.d.mts +7 -0
- package/dist/types/worker-id.mjs +5 -0
- package/dist/types/worker.d.mts +94 -0
- package/dist/types/worker.mjs +1 -0
- package/dist/utility.d.mts +49 -0
- package/dist/utility.mjs +122 -0
- package/dist/vite/ast.d.mts +23 -0
- package/dist/vite/ast.mjs +73 -0
- package/dist/vite/error.d.mts +19 -0
- package/dist/vite/error.mjs +47 -0
- package/dist/vite/generated-name.d.mts +7 -0
- package/dist/vite/generated-name.mjs +9 -0
- package/dist/vite/manifest.d.mts +7 -0
- package/dist/vite/manifest.mjs +106 -0
- package/dist/vite/plugin.d.mts +7 -0
- package/dist/vite/plugin.mjs +190 -0
- package/dist/vite/safety.d.mts +12 -0
- package/dist/vite/safety.mjs +96 -0
- package/dist/vite/source-edit.d.mts +12 -0
- package/dist/vite/source-edit.mjs +44 -0
- package/dist/vite/source-map.d.mts +11 -0
- package/dist/vite/source-map.mjs +53 -0
- package/dist/vite/source.d.mts +7 -0
- package/dist/vite/source.mjs +14 -0
- package/dist/vite/transform.d.mts +7 -0
- package/dist/vite/transform.mjs +405 -0
- package/dist/vite.d.mts +6 -0
- package/dist/vite.mjs +5 -0
- package/dist/webhook.d.mts +16 -0
- package/dist/webhook.mjs +17 -0
- package/dist/webpack.d.mts +7 -0
- package/dist/webpack.mjs +6 -0
- package/dist/worker/error.d.mts +11 -0
- package/dist/worker/error.mjs +40 -0
- package/dist/worker.d.mts +18 -0
- package/dist/worker.mjs +427 -0
- package/package.json +144 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { sortedStringSet } from "../../collection.mjs";
|
|
2
|
+
import { earliestOptionalTimestamp, shouldReplaceWorkflowEarliestDefinedInstant } from "../../temporal.mjs";
|
|
3
|
+
import { summarizeChildWorkflowRuns } from "./child-workflow-runs.mjs";
|
|
4
|
+
import { finishWorkflowStepAttemptActiveStartedSummary, finishWorkflowStepAttemptActiveTimeoutSummary } from "./step-attempt-active-fields.mjs";
|
|
5
|
+
//#region src/engine/summary/step-attempt-active-child-workflows.ts
|
|
6
|
+
function createWorkflowStepAttemptActiveChildWorkflowSummaryReducer() {
|
|
7
|
+
const childWorkflow = createWorkflowStepAttemptActiveChildWorkflowAccumulator();
|
|
8
|
+
return {
|
|
9
|
+
addAttempt(attempt, attemptKey) {
|
|
10
|
+
if (attempt.kind === "workflow" && attempt.status === "running") addWorkflowStepAttemptActiveChildWorkflow(childWorkflow, attempt, attemptKey);
|
|
11
|
+
},
|
|
12
|
+
finish(childRuns = []) {
|
|
13
|
+
return finishWorkflowStepAttemptActiveChildWorkflowSummary(childWorkflow, childRuns);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function createWorkflowStepAttemptActiveChildWorkflowAccumulator() {
|
|
18
|
+
return {
|
|
19
|
+
total: 0,
|
|
20
|
+
attemptKeys: /* @__PURE__ */ new Set(),
|
|
21
|
+
childRunIds: /* @__PURE__ */ new Set(),
|
|
22
|
+
stepIds: /* @__PURE__ */ new Set(),
|
|
23
|
+
workflows: /* @__PURE__ */ new Set()
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function addWorkflowStepAttemptActiveChildWorkflow(childWorkflow, attempt, attemptKey) {
|
|
27
|
+
childWorkflow.total++;
|
|
28
|
+
childWorkflow.stepIds.add(attempt.stepId);
|
|
29
|
+
childWorkflow.attemptKeys.add(attemptKey);
|
|
30
|
+
childWorkflow.oldestStartedAt = earliestOptionalTimestamp(childWorkflow.oldestStartedAt, attempt.startedAt);
|
|
31
|
+
if (shouldReplaceWorkflowEarliestDefinedInstant(childWorkflow.nextTimeoutAt, attempt.timeoutAt)) {
|
|
32
|
+
childWorkflow.nextTimeoutAt = attempt.timeoutAt;
|
|
33
|
+
childWorkflow.nextTimeoutStepId = attempt.stepId;
|
|
34
|
+
childWorkflow.nextTimeoutAttemptKey = attemptKey;
|
|
35
|
+
}
|
|
36
|
+
if (attempt.childRunId !== void 0) childWorkflow.childRunIds.add(attempt.childRunId);
|
|
37
|
+
if (attempt.workflowName !== void 0) childWorkflow.workflows.add(attempt.workflowVersion === void 0 ? attempt.workflowName : `${attempt.workflowName}@${attempt.workflowVersion}`);
|
|
38
|
+
}
|
|
39
|
+
function finishWorkflowStepAttemptActiveChildWorkflowSummary(childWorkflow, childRuns) {
|
|
40
|
+
return childWorkflow.total === 0 ? {} : { activeChildWorkflows: {
|
|
41
|
+
total: childWorkflow.total,
|
|
42
|
+
stepIds: sortedStringSet(childWorkflow.stepIds),
|
|
43
|
+
attemptKeys: sortedStringSet(childWorkflow.attemptKeys),
|
|
44
|
+
childRunIds: sortedStringSet(childWorkflow.childRunIds),
|
|
45
|
+
workflows: sortedStringSet(childWorkflow.workflows),
|
|
46
|
+
...summarizeChildWorkflowRuns(activeChildWorkflowRuns(childRuns, childWorkflow.childRunIds)),
|
|
47
|
+
...finishWorkflowStepAttemptActiveStartedSummary(childWorkflow),
|
|
48
|
+
...finishWorkflowStepAttemptActiveTimeoutSummary(childWorkflow)
|
|
49
|
+
} };
|
|
50
|
+
}
|
|
51
|
+
function activeChildWorkflowRuns(childRuns, childRunIds) {
|
|
52
|
+
return childRuns.filter((childRun) => childRunIds.has(childRun.id));
|
|
53
|
+
}
|
|
54
|
+
//#endregion
|
|
55
|
+
export { createWorkflowStepAttemptActiveChildWorkflowSummaryReducer };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { StepId } from "../../types/step-id.mjs";
|
|
2
|
+
import "../../types/step.mjs";
|
|
3
|
+
//#region src/engine/summary/step-attempt-active-fields.d.ts
|
|
4
|
+
interface WorkflowStepAttemptActiveStartedSummaryFields {
|
|
5
|
+
readonly oldestStartedAt?: Temporal.Instant;
|
|
6
|
+
}
|
|
7
|
+
interface WorkflowStepAttemptActiveTimeoutSummaryFields {
|
|
8
|
+
readonly nextTimeoutAt?: Temporal.Instant;
|
|
9
|
+
readonly nextTimeoutStepId?: StepId;
|
|
10
|
+
readonly nextTimeoutAttemptKey?: string;
|
|
11
|
+
}
|
|
12
|
+
interface WorkflowStepAttemptActiveStartedAccumulator {
|
|
13
|
+
readonly oldestStartedAt?: Temporal.Instant;
|
|
14
|
+
}
|
|
15
|
+
interface WorkflowStepAttemptActiveTimeoutAccumulator {
|
|
16
|
+
readonly nextTimeoutAt?: Temporal.Instant;
|
|
17
|
+
readonly nextTimeoutStepId?: StepId;
|
|
18
|
+
readonly nextTimeoutAttemptKey?: string;
|
|
19
|
+
}
|
|
20
|
+
declare function finishWorkflowStepAttemptActiveStartedSummary(activeAttempt: WorkflowStepAttemptActiveStartedAccumulator): WorkflowStepAttemptActiveStartedSummaryFields;
|
|
21
|
+
declare function finishWorkflowStepAttemptActiveTimeoutSummary(activeAttempt: WorkflowStepAttemptActiveTimeoutAccumulator): WorkflowStepAttemptActiveTimeoutSummaryFields;
|
|
22
|
+
//#endregion
|
|
23
|
+
export { WorkflowStepAttemptActiveStartedAccumulator, WorkflowStepAttemptActiveStartedSummaryFields, WorkflowStepAttemptActiveTimeoutAccumulator, WorkflowStepAttemptActiveTimeoutSummaryFields, finishWorkflowStepAttemptActiveStartedSummary, finishWorkflowStepAttemptActiveTimeoutSummary };
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { optionalProperty } from "../../collection.mjs";
|
|
2
|
+
//#region src/engine/summary/step-attempt-active-fields.ts
|
|
3
|
+
function finishWorkflowStepAttemptActiveStartedSummary(activeAttempt) {
|
|
4
|
+
return optionalProperty("oldestStartedAt", activeAttempt.oldestStartedAt);
|
|
5
|
+
}
|
|
6
|
+
function finishWorkflowStepAttemptActiveTimeoutSummary(activeAttempt) {
|
|
7
|
+
return activeAttempt.nextTimeoutAt === void 0 ? {} : {
|
|
8
|
+
nextTimeoutAt: activeAttempt.nextTimeoutAt,
|
|
9
|
+
...optionalProperty("nextTimeoutStepId", activeAttempt.nextTimeoutStepId),
|
|
10
|
+
...optionalProperty("nextTimeoutAttemptKey", activeAttempt.nextTimeoutAttemptKey)
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//#endregion
|
|
14
|
+
export { finishWorkflowStepAttemptActiveStartedSummary, finishWorkflowStepAttemptActiveTimeoutSummary };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { WorkflowActiveMessageWaitSummary, WorkflowStepAttemptRecord } from "../../types/step-attempts.mjs";
|
|
2
|
+
//#region src/engine/summary/step-attempt-active-message-waits.d.ts
|
|
3
|
+
interface WorkflowStepAttemptActiveMessageWaitSummaryFields {
|
|
4
|
+
readonly activeMessageWaits?: WorkflowActiveMessageWaitSummary;
|
|
5
|
+
}
|
|
6
|
+
interface WorkflowStepAttemptActiveMessageWaitSummaryReducer {
|
|
7
|
+
addAttempt(attempt: WorkflowStepAttemptRecord, attemptKey: string): void;
|
|
8
|
+
finish(): WorkflowStepAttemptActiveMessageWaitSummaryFields;
|
|
9
|
+
}
|
|
10
|
+
declare function createWorkflowStepAttemptActiveMessageWaitSummaryReducer(): WorkflowStepAttemptActiveMessageWaitSummaryReducer;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { WorkflowStepAttemptActiveMessageWaitSummaryFields, WorkflowStepAttemptActiveMessageWaitSummaryReducer, createWorkflowStepAttemptActiveMessageWaitSummaryReducer };
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { sortedStringSet } from "../../collection.mjs";
|
|
2
|
+
import { earliestOptionalTimestamp, shouldReplaceWorkflowEarliestDefinedInstant } from "../../temporal.mjs";
|
|
3
|
+
import { finishWorkflowStepAttemptActiveStartedSummary, finishWorkflowStepAttemptActiveTimeoutSummary } from "./step-attempt-active-fields.mjs";
|
|
4
|
+
//#region src/engine/summary/step-attempt-active-message-waits.ts
|
|
5
|
+
function createWorkflowStepAttemptActiveMessageWaitSummaryReducer() {
|
|
6
|
+
const messageWait = createWorkflowStepAttemptActiveMessageWaitAccumulator();
|
|
7
|
+
return {
|
|
8
|
+
addAttempt(attempt, attemptKey) {
|
|
9
|
+
if (attempt.kind === "message-wait" && attempt.status === "running") addWorkflowStepAttemptActiveMessageWait(messageWait, attempt, attemptKey);
|
|
10
|
+
},
|
|
11
|
+
finish() {
|
|
12
|
+
return finishWorkflowStepAttemptActiveMessageWaitSummary(messageWait);
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
function createWorkflowStepAttemptActiveMessageWaitAccumulator() {
|
|
17
|
+
return {
|
|
18
|
+
total: 0,
|
|
19
|
+
attemptKeys: /* @__PURE__ */ new Set(),
|
|
20
|
+
messages: /* @__PURE__ */ new Set(),
|
|
21
|
+
stepIds: /* @__PURE__ */ new Set()
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function addWorkflowStepAttemptActiveMessageWait(messageWait, attempt, attemptKey) {
|
|
25
|
+
messageWait.total++;
|
|
26
|
+
messageWait.stepIds.add(attempt.stepId);
|
|
27
|
+
messageWait.attemptKeys.add(attemptKey);
|
|
28
|
+
messageWait.oldestStartedAt = earliestOptionalTimestamp(messageWait.oldestStartedAt, attempt.startedAt);
|
|
29
|
+
if (shouldReplaceWorkflowEarliestDefinedInstant(messageWait.nextTimeoutAt, attempt.timeoutAt)) {
|
|
30
|
+
messageWait.nextTimeoutAt = attempt.timeoutAt;
|
|
31
|
+
messageWait.nextTimeoutStepId = attempt.stepId;
|
|
32
|
+
messageWait.nextTimeoutAttemptKey = attemptKey;
|
|
33
|
+
}
|
|
34
|
+
if (attempt.messageId !== void 0) messageWait.messages.add(attempt.messageId);
|
|
35
|
+
}
|
|
36
|
+
function finishWorkflowStepAttemptActiveMessageWaitSummary(messageWait) {
|
|
37
|
+
return messageWait.total === 0 ? {} : { activeMessageWaits: {
|
|
38
|
+
total: messageWait.total,
|
|
39
|
+
stepIds: sortedStringSet(messageWait.stepIds),
|
|
40
|
+
attemptKeys: sortedStringSet(messageWait.attemptKeys),
|
|
41
|
+
messages: sortedStringSet(messageWait.messages),
|
|
42
|
+
...finishWorkflowStepAttemptActiveStartedSummary(messageWait),
|
|
43
|
+
...finishWorkflowStepAttemptActiveTimeoutSummary(messageWait)
|
|
44
|
+
} };
|
|
45
|
+
}
|
|
46
|
+
//#endregion
|
|
47
|
+
export { createWorkflowStepAttemptActiveMessageWaitSummaryReducer };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { StepId } from "../../types/step-id.mjs";
|
|
2
|
+
import "../../types/step.mjs";
|
|
3
|
+
import { WorkflowStepAttemptRecord } from "../../types/step-attempts.mjs";
|
|
4
|
+
//#region src/engine/summary/step-attempt-active-sleeps.d.ts
|
|
5
|
+
interface WorkflowStepAttemptActiveSleepSummaryFields {
|
|
6
|
+
readonly activeSleepStepIds?: readonly string[];
|
|
7
|
+
readonly activeSleepAttemptKeys?: readonly string[];
|
|
8
|
+
readonly nextSleepUntil?: Temporal.Instant;
|
|
9
|
+
readonly nextSleepStepId?: StepId;
|
|
10
|
+
readonly nextSleepAttemptKey?: string;
|
|
11
|
+
readonly nextSleepDuration?: Temporal.Duration;
|
|
12
|
+
}
|
|
13
|
+
interface WorkflowStepAttemptActiveSleepSummaryReducer {
|
|
14
|
+
addAttempt(attempt: WorkflowStepAttemptRecord, attemptKey: string): void;
|
|
15
|
+
finish(): WorkflowStepAttemptActiveSleepSummaryFields;
|
|
16
|
+
}
|
|
17
|
+
declare function createWorkflowStepAttemptActiveSleepSummaryReducer(): WorkflowStepAttemptActiveSleepSummaryReducer;
|
|
18
|
+
//#endregion
|
|
19
|
+
export { WorkflowStepAttemptActiveSleepSummaryFields, WorkflowStepAttemptActiveSleepSummaryReducer, createWorkflowStepAttemptActiveSleepSummaryReducer };
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { optionalProperty, optionalSortedStringSetProperty } from "../../collection.mjs";
|
|
2
|
+
import { shouldReplaceWorkflowEarliestDefinedInstant } from "../../temporal.mjs";
|
|
3
|
+
//#region src/engine/summary/step-attempt-active-sleeps.ts
|
|
4
|
+
function createWorkflowStepAttemptActiveSleepSummaryReducer() {
|
|
5
|
+
const sleep = createWorkflowStepAttemptActiveSleepAccumulator();
|
|
6
|
+
return {
|
|
7
|
+
addAttempt(attempt, attemptKey) {
|
|
8
|
+
if (attempt.kind === "sleep" && attempt.status === "running") addWorkflowStepAttemptActiveSleep(sleep, attempt, attemptKey);
|
|
9
|
+
},
|
|
10
|
+
finish() {
|
|
11
|
+
return finishWorkflowStepAttemptActiveSleepSummary(sleep);
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function createWorkflowStepAttemptActiveSleepAccumulator() {
|
|
16
|
+
return {
|
|
17
|
+
attemptKeys: /* @__PURE__ */ new Set(),
|
|
18
|
+
stepIds: /* @__PURE__ */ new Set()
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function addWorkflowStepAttemptActiveSleep(sleep, attempt, attemptKey) {
|
|
22
|
+
sleep.stepIds.add(attempt.stepId);
|
|
23
|
+
sleep.attemptKeys.add(attemptKey);
|
|
24
|
+
if (shouldReplaceWorkflowEarliestDefinedInstant(sleep.nextUntil, attempt.until)) {
|
|
25
|
+
sleep.nextUntil = attempt.until;
|
|
26
|
+
sleep.nextStepId = attempt.stepId;
|
|
27
|
+
sleep.nextAttemptKey = attemptKey;
|
|
28
|
+
sleep.nextDuration = attempt.duration instanceof Temporal.Duration ? attempt.duration : void 0;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function finishWorkflowStepAttemptActiveSleepSummary(sleep) {
|
|
32
|
+
return {
|
|
33
|
+
...optionalSortedStringSetProperty("activeSleepStepIds", sleep.stepIds),
|
|
34
|
+
...optionalSortedStringSetProperty("activeSleepAttemptKeys", sleep.attemptKeys),
|
|
35
|
+
...sleep.nextUntil === void 0 ? {} : {
|
|
36
|
+
nextSleepUntil: sleep.nextUntil,
|
|
37
|
+
...optionalProperty("nextSleepStepId", sleep.nextStepId),
|
|
38
|
+
...optionalProperty("nextSleepAttemptKey", sleep.nextAttemptKey),
|
|
39
|
+
...optionalProperty("nextSleepDuration", sleep.nextDuration)
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//#endregion
|
|
44
|
+
export { createWorkflowStepAttemptActiveSleepSummaryReducer };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { WorkflowStepAttemptRecord, WorkflowStepAttemptStatus } from "../../types/step-attempts.mjs";
|
|
2
|
+
import { WorkflowMaterializedStepType } from "../../types/run.mjs";
|
|
3
|
+
//#region src/engine/summary/step-attempt-buckets.d.ts
|
|
4
|
+
type WorkflowStepAttemptStatusCounts = Record<WorkflowStepAttemptStatus, number>;
|
|
5
|
+
type WorkflowStepAttemptKindCounts = Record<WorkflowMaterializedStepType, number>;
|
|
6
|
+
interface WorkflowStepAttemptStatusSummaryFields {
|
|
7
|
+
readonly status: WorkflowStepAttemptStatusCounts;
|
|
8
|
+
readonly statusStepIds: Record<WorkflowStepAttemptStatus, readonly string[]>;
|
|
9
|
+
readonly statusAttemptKeys: Record<WorkflowStepAttemptStatus, readonly string[]>;
|
|
10
|
+
}
|
|
11
|
+
interface WorkflowStepAttemptKindSummaryFields {
|
|
12
|
+
readonly kind: WorkflowStepAttemptKindCounts;
|
|
13
|
+
readonly kindStepIds: Record<WorkflowMaterializedStepType, readonly string[]>;
|
|
14
|
+
readonly kindAttemptKeys: Record<WorkflowMaterializedStepType, readonly string[]>;
|
|
15
|
+
}
|
|
16
|
+
interface WorkflowStepAttemptBucketSummaryReducer {
|
|
17
|
+
addAttempt(attempt: WorkflowStepAttemptRecord, attemptKey: string): void;
|
|
18
|
+
finish(): WorkflowStepAttemptStatusSummaryFields & WorkflowStepAttemptKindSummaryFields;
|
|
19
|
+
}
|
|
20
|
+
declare function createWorkflowStepAttemptBucketSummaryReducer(): WorkflowStepAttemptBucketSummaryReducer;
|
|
21
|
+
//#endregion
|
|
22
|
+
export { WorkflowStepAttemptBucketSummaryReducer, WorkflowStepAttemptKindSummaryFields, WorkflowStepAttemptStatusSummaryFields, createWorkflowStepAttemptBucketSummaryReducer };
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
//#region src/engine/summary/step-attempt-buckets.ts
|
|
2
|
+
function createWorkflowStepAttemptBucketSummaryReducer() {
|
|
3
|
+
const status = createWorkflowStepAttemptStatusAccumulator();
|
|
4
|
+
const kind = createWorkflowStepAttemptKindAccumulator();
|
|
5
|
+
return {
|
|
6
|
+
addAttempt(attempt, attemptKey) {
|
|
7
|
+
addWorkflowStepAttemptStatus(status, attempt, attemptKey);
|
|
8
|
+
addWorkflowStepAttemptKind(kind, attempt, attemptKey);
|
|
9
|
+
},
|
|
10
|
+
finish() {
|
|
11
|
+
return {
|
|
12
|
+
...finishWorkflowStepAttemptStatusSummary(status),
|
|
13
|
+
...finishWorkflowStepAttemptKindSummary(kind)
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function createWorkflowStepAttemptStatusAccumulator() {
|
|
19
|
+
return {
|
|
20
|
+
attemptKeys: createWorkflowStepAttemptStatusAttemptKeys(),
|
|
21
|
+
status: createWorkflowStepAttemptStatusCounts(),
|
|
22
|
+
stepIds: createWorkflowStepAttemptStatusStepIds()
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function createWorkflowStepAttemptKindAccumulator() {
|
|
26
|
+
return {
|
|
27
|
+
attemptKeys: createWorkflowStepAttemptKindAttemptKeys(),
|
|
28
|
+
kind: createWorkflowStepAttemptKindCounts(),
|
|
29
|
+
stepIds: createWorkflowStepAttemptKindStepIds()
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function addWorkflowStepAttemptStatus(status, attempt, attemptKey) {
|
|
33
|
+
status.status[attempt.status]++;
|
|
34
|
+
status.stepIds[attempt.status].push(attempt.stepId);
|
|
35
|
+
status.attemptKeys[attempt.status].push(attemptKey);
|
|
36
|
+
}
|
|
37
|
+
function addWorkflowStepAttemptKind(kind, attempt, attemptKey) {
|
|
38
|
+
kind.kind[attempt.kind]++;
|
|
39
|
+
kind.stepIds[attempt.kind].push(attempt.stepId);
|
|
40
|
+
kind.attemptKeys[attempt.kind].push(attemptKey);
|
|
41
|
+
}
|
|
42
|
+
function finishWorkflowStepAttemptStatusSummary(status) {
|
|
43
|
+
return {
|
|
44
|
+
status: status.status,
|
|
45
|
+
statusStepIds: sortedWorkflowStepAttemptStatusStepIds(status.stepIds),
|
|
46
|
+
statusAttemptKeys: sortedWorkflowStepAttemptStatusAttemptKeys(status.attemptKeys)
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
function finishWorkflowStepAttemptKindSummary(kind) {
|
|
50
|
+
return {
|
|
51
|
+
kind: kind.kind,
|
|
52
|
+
kindStepIds: sortedWorkflowStepAttemptKindStepIds(kind.stepIds),
|
|
53
|
+
kindAttemptKeys: sortedWorkflowStepAttemptKindAttemptKeys(kind.attemptKeys)
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function createWorkflowStepAttemptStatusCounts() {
|
|
57
|
+
return {
|
|
58
|
+
running: 0,
|
|
59
|
+
completed: 0,
|
|
60
|
+
failed: 0,
|
|
61
|
+
abandoned: 0
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function createWorkflowStepAttemptStatusStepIds() {
|
|
65
|
+
return {
|
|
66
|
+
running: [],
|
|
67
|
+
completed: [],
|
|
68
|
+
failed: [],
|
|
69
|
+
abandoned: []
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function sortedWorkflowStepAttemptStatusStepIds(stepIds) {
|
|
73
|
+
return {
|
|
74
|
+
running: [...stepIds.running].sort(),
|
|
75
|
+
completed: [...stepIds.completed].sort(),
|
|
76
|
+
failed: [...stepIds.failed].sort(),
|
|
77
|
+
abandoned: [...stepIds.abandoned].sort()
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function createWorkflowStepAttemptStatusAttemptKeys() {
|
|
81
|
+
return {
|
|
82
|
+
running: [],
|
|
83
|
+
completed: [],
|
|
84
|
+
failed: [],
|
|
85
|
+
abandoned: []
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function sortedWorkflowStepAttemptStatusAttemptKeys(attemptKeys) {
|
|
89
|
+
return {
|
|
90
|
+
running: [...attemptKeys.running].sort(),
|
|
91
|
+
completed: [...attemptKeys.completed].sort(),
|
|
92
|
+
failed: [...attemptKeys.failed].sort(),
|
|
93
|
+
abandoned: [...attemptKeys.abandoned].sort()
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function createWorkflowStepAttemptKindCounts() {
|
|
97
|
+
return {
|
|
98
|
+
run: 0,
|
|
99
|
+
sleep: 0,
|
|
100
|
+
workflow: 0,
|
|
101
|
+
"message-send": 0,
|
|
102
|
+
"message-wait": 0,
|
|
103
|
+
stream: 0,
|
|
104
|
+
deterministic: 0
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
function createWorkflowStepAttemptKindStepIds() {
|
|
108
|
+
return {
|
|
109
|
+
run: [],
|
|
110
|
+
sleep: [],
|
|
111
|
+
workflow: [],
|
|
112
|
+
"message-send": [],
|
|
113
|
+
"message-wait": [],
|
|
114
|
+
stream: [],
|
|
115
|
+
deterministic: []
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function createWorkflowStepAttemptKindAttemptKeys() {
|
|
119
|
+
return {
|
|
120
|
+
run: [],
|
|
121
|
+
sleep: [],
|
|
122
|
+
workflow: [],
|
|
123
|
+
"message-send": [],
|
|
124
|
+
"message-wait": [],
|
|
125
|
+
stream: [],
|
|
126
|
+
deterministic: []
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
function sortedWorkflowStepAttemptKindAttemptKeys(attemptKeys) {
|
|
130
|
+
return {
|
|
131
|
+
run: [...attemptKeys.run].sort(),
|
|
132
|
+
sleep: [...attemptKeys.sleep].sort(),
|
|
133
|
+
workflow: [...attemptKeys.workflow].sort(),
|
|
134
|
+
"message-send": [...attemptKeys["message-send"]].sort(),
|
|
135
|
+
"message-wait": [...attemptKeys["message-wait"]].sort(),
|
|
136
|
+
stream: [...attemptKeys.stream].sort(),
|
|
137
|
+
deterministic: [...attemptKeys.deterministic].sort()
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
function sortedWorkflowStepAttemptKindStepIds(stepIds) {
|
|
141
|
+
return {
|
|
142
|
+
run: [...stepIds.run].sort(),
|
|
143
|
+
sleep: [...stepIds.sleep].sort(),
|
|
144
|
+
workflow: [...stepIds.workflow].sort(),
|
|
145
|
+
"message-send": [...stepIds["message-send"]].sort(),
|
|
146
|
+
"message-wait": [...stepIds["message-wait"]].sort(),
|
|
147
|
+
stream: [...stepIds.stream].sort(),
|
|
148
|
+
deterministic: [...stepIds.deterministic].sort()
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
//#endregion
|
|
152
|
+
export { createWorkflowStepAttemptBucketSummaryReducer };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { WorkflowStepAttemptFailureSummary, WorkflowStepAttemptRecord } from "../../types/step-attempts.mjs";
|
|
2
|
+
//#region src/engine/summary/step-attempt-failure.d.ts
|
|
3
|
+
interface WorkflowStepAttemptFailureSummaryFields {
|
|
4
|
+
readonly failure?: WorkflowStepAttemptFailureSummary;
|
|
5
|
+
}
|
|
6
|
+
interface WorkflowStepAttemptFailureSummaryReducer {
|
|
7
|
+
addAttempt(attempt: WorkflowStepAttemptRecord, attemptKey: string): void;
|
|
8
|
+
finish(): WorkflowStepAttemptFailureSummaryFields;
|
|
9
|
+
}
|
|
10
|
+
declare function createWorkflowStepAttemptFailureSummaryReducer(): WorkflowStepAttemptFailureSummaryReducer;
|
|
11
|
+
//#endregion
|
|
12
|
+
export { WorkflowStepAttemptFailureSummaryFields, WorkflowStepAttemptFailureSummaryReducer, createWorkflowStepAttemptFailureSummaryReducer };
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { latestOptionalTimestamp } from "../../temporal.mjs";
|
|
2
|
+
//#region src/engine/summary/step-attempt-failure.ts
|
|
3
|
+
function createWorkflowStepAttemptFailureSummaryReducer() {
|
|
4
|
+
const failure = createWorkflowStepAttemptFailureAccumulator();
|
|
5
|
+
return {
|
|
6
|
+
addAttempt(attempt, attemptKey) {
|
|
7
|
+
if (attempt.status === "failed") addWorkflowStepAttemptFailure(failure, attempt, attemptKey);
|
|
8
|
+
},
|
|
9
|
+
finish() {
|
|
10
|
+
return finishWorkflowStepAttemptFailureSummary(failure);
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function createWorkflowStepAttemptFailureAccumulator() {
|
|
15
|
+
return {
|
|
16
|
+
total: 0,
|
|
17
|
+
errors: /* @__PURE__ */ new Map(),
|
|
18
|
+
failedAttemptKeys: /* @__PURE__ */ new Set(),
|
|
19
|
+
failedStepIds: /* @__PURE__ */ new Set()
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
function addWorkflowStepAttemptFailure(failure, attempt, attemptKey) {
|
|
23
|
+
failure.total++;
|
|
24
|
+
failure.failedStepIds.add(attempt.stepId);
|
|
25
|
+
failure.failedAttemptKeys.add(attemptKey);
|
|
26
|
+
failure.latestFailedAt = latestOptionalTimestamp(failure.latestFailedAt, attempt.finishedAt);
|
|
27
|
+
addWorkflowStepAttemptFailureError(failure, attempt, attemptKey);
|
|
28
|
+
}
|
|
29
|
+
function addWorkflowStepAttemptFailureError(failure, attempt, attemptKey) {
|
|
30
|
+
const errorName = attempt.error?.name ?? "Error";
|
|
31
|
+
const current = failure.errors.get(errorName) ?? {
|
|
32
|
+
count: 0,
|
|
33
|
+
failedAttemptKeys: /* @__PURE__ */ new Set(),
|
|
34
|
+
failedStepIds: /* @__PURE__ */ new Set()
|
|
35
|
+
};
|
|
36
|
+
current.count++;
|
|
37
|
+
current.failedStepIds.add(attempt.stepId);
|
|
38
|
+
current.failedAttemptKeys.add(attemptKey);
|
|
39
|
+
current.latestFailedAt = latestOptionalTimestamp(current.latestFailedAt, attempt.finishedAt);
|
|
40
|
+
failure.errors.set(errorName, current);
|
|
41
|
+
}
|
|
42
|
+
function finishWorkflowStepAttemptFailureSummary(failure) {
|
|
43
|
+
return failure.total === 0 ? {} : { failure: {
|
|
44
|
+
total: failure.total,
|
|
45
|
+
failedStepIds: [...failure.failedStepIds].sort(),
|
|
46
|
+
failedAttemptKeys: [...failure.failedAttemptKeys].sort(),
|
|
47
|
+
errors: finishWorkflowStepAttemptFailureErrors(failure.errors),
|
|
48
|
+
...failure.latestFailedAt === void 0 ? {} : { latestFailedAt: failure.latestFailedAt }
|
|
49
|
+
} };
|
|
50
|
+
}
|
|
51
|
+
function finishWorkflowStepAttemptFailureErrors(errors) {
|
|
52
|
+
return [...errors.entries()].sort(([left], [right]) => left.localeCompare(right)).map(([name, summary]) => ({
|
|
53
|
+
name,
|
|
54
|
+
count: summary.count,
|
|
55
|
+
failedStepIds: [...summary.failedStepIds].sort(),
|
|
56
|
+
failedAttemptKeys: [...summary.failedAttemptKeys].sort(),
|
|
57
|
+
...summary.latestFailedAt === void 0 ? {} : { latestFailedAt: summary.latestFailedAt }
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
//#endregion
|
|
61
|
+
export { createWorkflowStepAttemptFailureSummaryReducer };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { WorkflowStepAttemptRecord } from "../../types/step-attempts.mjs";
|
|
2
|
+
//#region src/engine/summary/step-attempt-lifecycle.d.ts
|
|
3
|
+
interface WorkflowStepAttemptLifecycleSummaryFields {
|
|
4
|
+
readonly oldestRunningAt?: Temporal.Instant;
|
|
5
|
+
readonly latestFinishedAt?: Temporal.Instant;
|
|
6
|
+
}
|
|
7
|
+
interface WorkflowStepAttemptLifecycleSummaryReducer {
|
|
8
|
+
addAttempt(attempt: WorkflowStepAttemptRecord): void;
|
|
9
|
+
finish(): WorkflowStepAttemptLifecycleSummaryFields;
|
|
10
|
+
}
|
|
11
|
+
declare function createWorkflowStepAttemptLifecycleSummaryReducer(): WorkflowStepAttemptLifecycleSummaryReducer;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { WorkflowStepAttemptLifecycleSummaryFields, WorkflowStepAttemptLifecycleSummaryReducer, createWorkflowStepAttemptLifecycleSummaryReducer };
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { earliestOptionalTimestamp, latestOptionalTimestamp } from "../../temporal.mjs";
|
|
2
|
+
//#region src/engine/summary/step-attempt-lifecycle.ts
|
|
3
|
+
function createWorkflowStepAttemptLifecycleSummaryReducer() {
|
|
4
|
+
const lifecycle = {};
|
|
5
|
+
return {
|
|
6
|
+
addAttempt(attempt) {
|
|
7
|
+
if (attempt.status === "running") lifecycle.oldestRunningAt = earliestOptionalTimestamp(lifecycle.oldestRunningAt, attempt.startedAt);
|
|
8
|
+
lifecycle.latestFinishedAt = latestOptionalTimestamp(lifecycle.latestFinishedAt, attempt.finishedAt);
|
|
9
|
+
},
|
|
10
|
+
finish() {
|
|
11
|
+
return {
|
|
12
|
+
...lifecycle.oldestRunningAt === void 0 ? {} : { oldestRunningAt: lifecycle.oldestRunningAt },
|
|
13
|
+
...lifecycle.latestFinishedAt === void 0 ? {} : { latestFinishedAt: lifecycle.latestFinishedAt }
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { createWorkflowStepAttemptLifecycleSummaryReducer };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { WorkflowStepAttemptRecord, WorkflowStepAttemptSummary } from "../../types/step-attempts.mjs";
|
|
2
|
+
import { WorkflowRunRecord } from "../../types/run.mjs";
|
|
3
|
+
//#region src/engine/summary/step-attempts.d.ts
|
|
4
|
+
interface WorkflowStepAttemptSummaryReducer {
|
|
5
|
+
addAttempt(attempt: WorkflowStepAttemptRecord): void;
|
|
6
|
+
finish(): WorkflowStepAttemptSummary;
|
|
7
|
+
}
|
|
8
|
+
/** Creates a reducer for materialized step attempts and active child workflow records. */
|
|
9
|
+
declare function createWorkflowStepAttemptSummaryReducer(childRuns?: readonly WorkflowRunRecord[]): WorkflowStepAttemptSummaryReducer;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { WorkflowStepAttemptSummaryReducer, createWorkflowStepAttemptSummaryReducer };
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { makeWorkflowStepAttemptKey } from "../../history/attempt-key.mjs";
|
|
2
|
+
import { createWorkflowStepAttemptActiveChildWorkflowSummaryReducer } from "./step-attempt-active-child-workflows.mjs";
|
|
3
|
+
import { createWorkflowStepAttemptActiveMessageWaitSummaryReducer } from "./step-attempt-active-message-waits.mjs";
|
|
4
|
+
import { createWorkflowStepAttemptActiveSleepSummaryReducer } from "./step-attempt-active-sleeps.mjs";
|
|
5
|
+
import { createWorkflowStepAttemptBucketSummaryReducer } from "./step-attempt-buckets.mjs";
|
|
6
|
+
import { createWorkflowStepAttemptFailureSummaryReducer } from "./step-attempt-failure.mjs";
|
|
7
|
+
import { createWorkflowStepAttemptLifecycleSummaryReducer } from "./step-attempt-lifecycle.mjs";
|
|
8
|
+
//#region src/engine/summary/step-attempts.ts
|
|
9
|
+
/** Creates a reducer for materialized step attempts and active child workflow records. */
|
|
10
|
+
function createWorkflowStepAttemptSummaryReducer(childRuns = []) {
|
|
11
|
+
const buckets = createWorkflowStepAttemptBucketSummaryReducer();
|
|
12
|
+
const lifecycle = createWorkflowStepAttemptLifecycleSummaryReducer();
|
|
13
|
+
const failure = createWorkflowStepAttemptFailureSummaryReducer();
|
|
14
|
+
const sleep = createWorkflowStepAttemptActiveSleepSummaryReducer();
|
|
15
|
+
const childWorkflow = createWorkflowStepAttemptActiveChildWorkflowSummaryReducer();
|
|
16
|
+
const messageWait = createWorkflowStepAttemptActiveMessageWaitSummaryReducer();
|
|
17
|
+
let total = 0;
|
|
18
|
+
return {
|
|
19
|
+
addAttempt(attempt) {
|
|
20
|
+
total++;
|
|
21
|
+
const attemptKey = makeWorkflowStepAttemptKey(attempt.stepId, attempt.attempt);
|
|
22
|
+
buckets.addAttempt(attempt, attemptKey);
|
|
23
|
+
lifecycle.addAttempt(attempt);
|
|
24
|
+
failure.addAttempt(attempt, attemptKey);
|
|
25
|
+
sleep.addAttempt(attempt, attemptKey);
|
|
26
|
+
childWorkflow.addAttempt(attempt, attemptKey);
|
|
27
|
+
messageWait.addAttempt(attempt, attemptKey);
|
|
28
|
+
},
|
|
29
|
+
finish() {
|
|
30
|
+
return {
|
|
31
|
+
total,
|
|
32
|
+
...buckets.finish(),
|
|
33
|
+
...lifecycle.finish(),
|
|
34
|
+
...failure.finish(),
|
|
35
|
+
...sleep.finish(),
|
|
36
|
+
...childWorkflow.finish(childRuns),
|
|
37
|
+
...messageWait.finish()
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//#endregion
|
|
43
|
+
export { createWorkflowStepAttemptSummaryReducer };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { RunId } from "../types/run-id.mjs";
|
|
2
|
+
import { WorkflowRunSummary } from "../types/summary.mjs";
|
|
3
|
+
import { WorkflowStepAttemptRecord } from "../types/step-attempts.mjs";
|
|
4
|
+
import { WorkflowRunRecord } from "../types/run.mjs";
|
|
5
|
+
import { EventRecord } from "../types/events.mjs";
|
|
6
|
+
import { WorkflowRunChildWorkflowWaitInput } from "./summary/child-workflow-waits.mjs";
|
|
7
|
+
//#region src/engine/summary.d.ts
|
|
8
|
+
interface WorkflowRunEventActivityInput {
|
|
9
|
+
readonly runId: RunId;
|
|
10
|
+
readonly events: readonly EventRecord[];
|
|
11
|
+
}
|
|
12
|
+
interface WorkflowRunSleepWaitInput {
|
|
13
|
+
readonly runId: RunId;
|
|
14
|
+
readonly attempts: readonly WorkflowStepAttemptRecord[];
|
|
15
|
+
}
|
|
16
|
+
interface WorkflowRunMessageWaitInput {
|
|
17
|
+
readonly runId: RunId;
|
|
18
|
+
readonly attempts: readonly WorkflowStepAttemptRecord[];
|
|
19
|
+
}
|
|
20
|
+
interface WorkflowRunSummaryInputs {
|
|
21
|
+
readonly runs: readonly WorkflowRunRecord[];
|
|
22
|
+
readonly now: Temporal.Instant;
|
|
23
|
+
readonly cleanupCutoff?: Temporal.Instant;
|
|
24
|
+
readonly runningChildWorkflows?: readonly WorkflowRunChildWorkflowWaitInput[];
|
|
25
|
+
readonly runningSleeps?: readonly WorkflowRunSleepWaitInput[];
|
|
26
|
+
readonly runningMessageWaits?: readonly WorkflowRunMessageWaitInput[];
|
|
27
|
+
readonly runningEvents?: readonly WorkflowRunEventActivityInput[];
|
|
28
|
+
}
|
|
29
|
+
/** Summarizes workflow run records and active wait events for inspection dashboards. */
|
|
30
|
+
declare function summarizeWorkflowRuns(inputs: WorkflowRunSummaryInputs): WorkflowRunSummary;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { WorkflowRunEventActivityInput, WorkflowRunMessageWaitInput, WorkflowRunSleepWaitInput, WorkflowRunSummaryInputs, summarizeWorkflowRuns };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { activeWorkflowEvents } from "./summary/active-events.mjs";
|
|
2
|
+
import { createWorkflowRunChildWorkflowWaitSummaryReducer } from "./summary/child-workflow-waits.mjs";
|
|
3
|
+
import { createWorkflowRunHookActivitySummaryReducer } from "./summary/run-hooks.mjs";
|
|
4
|
+
import { createWorkflowRunMessageWaitSummaryReducer } from "./summary/run-message-waits.mjs";
|
|
5
|
+
import { createWorkflowRunSleepWaitSummaryReducer } from "./summary/run-sleeps.mjs";
|
|
6
|
+
import { createWorkflowRunStateSummaryReducer } from "./summary/run-state.mjs";
|
|
7
|
+
import { createWorkflowRunStreamActivitySummaryReducer } from "./summary/run-streams.mjs";
|
|
8
|
+
//#region src/engine/summary.ts
|
|
9
|
+
/** Summarizes workflow run records and active wait events for inspection dashboards. */
|
|
10
|
+
function summarizeWorkflowRuns(inputs) {
|
|
11
|
+
const { runs, now, cleanupCutoff, runningChildWorkflows = [], runningSleeps = [], runningMessageWaits = [], runningEvents = [] } = inputs;
|
|
12
|
+
const runState = createWorkflowRunStateSummaryReducer(now, cleanupCutoff);
|
|
13
|
+
for (const run of runs) runState.addRun(run);
|
|
14
|
+
const streams = createWorkflowRunStreamActivitySummaryReducer();
|
|
15
|
+
const hooks = createWorkflowRunHookActivitySummaryReducer();
|
|
16
|
+
for (const runEvents of runningEvents) {
|
|
17
|
+
const activeEvents = activeWorkflowEvents(runEvents.events);
|
|
18
|
+
for (const stream of activeEvents.streams) streams.addStream(runEvents.runId, stream);
|
|
19
|
+
for (const hook of activeEvents.hooks) hooks.addHook(runEvents.runId, hook);
|
|
20
|
+
}
|
|
21
|
+
const sleeps = createWorkflowRunSleepWaitSummaryReducer();
|
|
22
|
+
for (const runSleeps of runningSleeps) sleeps.addAttempts(runSleeps.runId, runSleeps.attempts);
|
|
23
|
+
const messageWaits = createWorkflowRunMessageWaitSummaryReducer();
|
|
24
|
+
for (const runWaits of runningMessageWaits) messageWaits.addAttempts(runWaits.runId, runWaits.attempts);
|
|
25
|
+
const childWorkflowWaits = createWorkflowRunChildWorkflowWaitSummaryReducer();
|
|
26
|
+
for (const childWorkflowWait of runningChildWorkflows) childWorkflowWaits.addChildWorkflowAttempts(childWorkflowWait.runId, childWorkflowWait.attempts, childWorkflowWait.childRuns);
|
|
27
|
+
return {
|
|
28
|
+
...runState.finish(),
|
|
29
|
+
...streams.finish(),
|
|
30
|
+
...hooks.finish(),
|
|
31
|
+
...sleeps.finish(),
|
|
32
|
+
...messageWaits.finish(),
|
|
33
|
+
...childWorkflowWaits.finish()
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//#endregion
|
|
37
|
+
export { summarizeWorkflowRuns };
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { WorkflowStepTaskApi } from "../types/step.mjs";
|
|
2
|
+
import { WorkflowExecutionEnvironment } from "../types/engine.mjs";
|
|
3
|
+
//#region src/engine/task.d.ts
|
|
4
|
+
declare function createWorkflowStepTaskApi(environment: WorkflowExecutionEnvironment, executionSignal: AbortSignal): WorkflowStepTaskApi;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { createWorkflowStepTaskApi };
|