eve 0.24.3 → 0.24.5
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/CHANGELOG.md +35 -0
- package/dist/src/channel/adapter.d.ts +4 -2
- package/dist/src/channel/adapter.js +1 -1
- package/dist/src/channel/session.d.ts +5 -1
- package/dist/src/channel/types.d.ts +20 -6
- package/dist/src/chunks/{use-eve-agent-dEGV09g_.js → use-eve-agent-8rerxDHY.js} +74 -10
- package/dist/src/chunks/{use-eve-agent-CFBTHlPx.js → use-eve-agent-DhgdHzDG.js} +74 -10
- package/dist/src/cli/commands/build.d.ts +14 -0
- package/dist/src/cli/commands/build.js +1 -0
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/cli/commands/link.d.ts +6 -5
- package/dist/src/cli/commands/link.js +1 -1
- package/dist/src/cli/dev/tui/runner.d.ts +2 -2
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/run.d.ts +3 -2
- package/dist/src/cli/run.js +1 -1
- package/dist/src/client/index.d.ts +2 -2
- package/dist/src/client/message-reducer.js +1 -1
- package/dist/src/client/ndjson.js +1 -1
- package/dist/src/client/open-stream.d.ts +3 -2
- package/dist/src/client/open-stream.js +1 -1
- package/dist/src/client/session-utils.js +1 -1
- package/dist/src/client/session.d.ts +19 -5
- package/dist/src/client/session.js +1 -1
- package/dist/src/client/types.d.ts +11 -2
- package/dist/src/compiled/.vendor-stamp.json +5 -5
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +55 -0
- package/dist/src/compiled/@workflow/core/runtime/run-id-time.d.ts +9 -0
- package/dist/src/compiled/@workflow/core/runtime/step-executor.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/runtime/step-latency.d.ts +70 -4
- package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +10 -1
- package/dist/src/compiled/@workflow/core/runtime.js +3 -3
- package/dist/src/compiled/@workflow/core/step/context-storage.d.ts +6 -0
- package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +25 -0
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/errors/index.d.ts +16 -0
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/attributes.d.ts +7 -0
- package/dist/src/compiled/@workflow/world/events.d.ts +16 -0
- package/dist/src/compiled/@workflow/world/index.d.ts +1 -1
- package/dist/src/compiled/@workflow/world-local/index.js +3 -3
- package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
- package/dist/src/compiled/_chunks/workflow/attribute-changes-DXbmITuI.js +20 -0
- package/dist/src/compiled/_chunks/workflow/{dist-DpDDcpTl.js → dist-BYo8Gno2.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{dist-Blxnyb7-.js → dist-CSfKNxQW.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-DvvgYsRt.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-BdvQmV5a.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-id-BdE0MZz9.js +1 -0
- package/dist/src/compiled/_chunks/workflow/sleep-DzxrwWTs.js +1 -0
- package/dist/src/discover/filesystem.js +1 -1
- package/dist/src/evals/assertions/run.d.ts +3 -3
- package/dist/src/evals/context.js +1 -1
- package/dist/src/evals/index.d.ts +2 -1
- package/dist/src/evals/match.d.ts +4 -0
- package/dist/src/evals/match.js +1 -1
- package/dist/src/evals/runner/derive-run-facts.js +1 -1
- package/dist/src/evals/session.d.ts +10 -2
- package/dist/src/evals/session.js +1 -1
- package/dist/src/evals/target.js +1 -1
- package/dist/src/evals/types.d.ts +52 -2
- package/dist/src/execution/cancel-descendant-turns-step.d.ts +6 -0
- package/dist/src/execution/cancel-descendant-turns-step.js +1 -0
- package/dist/src/execution/create-session-step.js +1 -1
- package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
- package/dist/src/execution/dispatch-workflow-runtime-actions-step.js +1 -1
- package/dist/src/execution/durable-session-migrations/turn-workflow.d.ts +1 -0
- package/dist/src/execution/durable-session-migrations/turn-workflow.js +1 -1
- package/dist/src/execution/next-driver-action.d.ts +7 -0
- package/dist/src/execution/node-step.js +1 -1
- package/dist/src/execution/remote-agent-dispatch.d.ts +6 -0
- package/dist/src/execution/remote-agent-dispatch.js +1 -1
- package/dist/src/execution/settle-cancelled-turn-step.d.ts +16 -0
- package/dist/src/execution/settle-cancelled-turn-step.js +1 -0
- package/dist/src/execution/subagent-event-proxy-step.js +1 -1
- package/dist/src/execution/subagent-hitl-proxy.js +1 -1
- package/dist/src/execution/terminal-session-failure-step.d.ts +6 -0
- package/dist/src/execution/terminal-session-failure-step.js +1 -0
- package/dist/src/execution/turn-cancellation-control.d.ts +27 -0
- package/dist/src/execution/turn-cancellation-control.js +1 -0
- package/dist/src/execution/turn-cancellation-token.d.ts +9 -0
- package/dist/src/execution/turn-cancellation-token.js +1 -0
- package/dist/src/execution/turn-dispatch.d.ts +14 -1
- package/dist/src/execution/turn-dispatch.js +1 -1
- package/dist/src/execution/turn-execution-cursor.d.ts +2 -1
- package/dist/src/execution/turn-execution-cursor.js +1 -1
- package/dist/src/execution/turn-workflow.d.ts +9 -1
- package/dist/src/execution/turn-workflow.js +1 -1
- package/dist/src/execution/workflow-entry.js +1 -1
- package/dist/src/execution/workflow-runtime.d.ts +3 -1
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/execution/workflow-steps.d.ts +8 -6
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/harness/active-turn-id.d.ts +11 -0
- package/dist/src/harness/active-turn-id.js +1 -0
- package/dist/src/harness/advertised-tools.js +1 -1
- package/dist/src/harness/cancelled-turn-emission.d.ts +11 -0
- package/dist/src/harness/cancelled-turn-emission.js +1 -0
- package/dist/src/harness/emission.d.ts +4 -2
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/execute-tool.d.ts +0 -1
- package/dist/src/harness/proxy-input-requests.d.ts +5 -0
- package/dist/src/harness/proxy-input-requests.js +1 -1
- package/dist/src/harness/runtime-actions.d.ts +16 -12
- package/dist/src/harness/runtime-actions.js +1 -1
- package/dist/src/harness/session-limit-enforcement.js +1 -1
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/internal/application/build-profile.d.ts +64 -0
- package/dist/src/internal/application/build-profile.js +1 -0
- package/dist/src/internal/application/compiled-artifacts.js +3 -2
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-module-loader.d.ts +10 -0
- package/dist/src/internal/authored-module-loader.js +3 -3
- package/dist/src/internal/authored-module-map-loader.js +1 -1
- package/dist/src/internal/bundler/nitro-rolldown.d.ts +18 -2
- package/dist/src/internal/bundler/nitro-rolldown.js +1 -1
- package/dist/src/internal/materialized-authored-modules.d.ts +2 -4
- package/dist/src/internal/materialized-authored-modules.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
- package/dist/src/internal/nitro/dev-runtime-source-snapshot-copy.js +1 -1
- package/dist/src/internal/nitro/host/build-application.js +1 -1
- package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
- package/dist/src/internal/nitro/host/types.d.ts +2 -0
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.js +1 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +7 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
- package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
- package/dist/src/internal/nitro/routes/channel-route-context.d.ts +3 -0
- package/dist/src/internal/nitro/routes/channel-route-context.js +1 -1
- package/dist/src/internal/nitro/routes/runtime-stack.js +1 -1
- package/dist/src/internal/nitro/routes/schedule-task.js +1 -1
- package/dist/src/internal/workflow/development-world-client.js +1 -1
- package/dist/src/internal/workflow/development-world-server.js +1 -1
- package/dist/src/internal/workflow/local-world-data-directory.d.ts +2 -0
- package/dist/src/internal/workflow/local-world-data-directory.js +1 -0
- package/dist/src/internal/workflow-bundle/builder-support.js +3 -3
- package/dist/src/internal/workflow-bundle/builder.js +2 -2
- package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -1
- package/dist/src/protocol/cancel-turn.d.ts +11 -0
- package/dist/src/protocol/cancel-turn.js +1 -0
- package/dist/src/protocol/message.d.ts +23 -3
- package/dist/src/protocol/message.js +2 -2
- package/dist/src/protocol/routes.d.ts +10 -0
- package/dist/src/protocol/routes.js +1 -1
- package/dist/src/public/channels/discord/discordChannel.d.ts +1 -0
- package/dist/src/public/channels/eve.d.ts +2 -1
- package/dist/src/public/channels/eve.js +2 -2
- package/dist/src/public/channels/github/githubChannel.d.ts +1 -0
- package/dist/src/public/channels/linear/api.d.ts +0 -1
- package/dist/src/public/channels/linear/api.js +17 -22
- package/dist/src/public/channels/linear/linearChannel.d.ts +1 -0
- package/dist/src/public/channels/linear/linearChannel.js +1 -1
- package/dist/src/public/channels/slack/slackChannel.d.ts +1 -0
- package/dist/src/public/channels/teams/teamsChannel.d.ts +1 -0
- package/dist/src/public/channels/telegram/telegramChannel.d.ts +1 -0
- package/dist/src/public/channels/twilio/twilioChannel.d.ts +1 -0
- package/dist/src/public/definitions/channel.d.ts +25 -14
- package/dist/src/public/definitions/channel.js +1 -1
- package/dist/src/public/next/index.js +1 -1
- package/dist/src/public/next/resolve-eve-binary.d.ts +12 -0
- package/dist/src/public/next/resolve-eve-binary.js +1 -0
- package/dist/src/runtime/agent/mock-model-adapter.js +1 -1
- package/dist/src/runtime/framework-tools/agent.d.ts +13 -0
- package/dist/src/runtime/framework-tools/agent.js +1 -0
- package/dist/src/runtime/framework-tools/index.d.ts +7 -2
- package/dist/src/runtime/framework-tools/index.js +1 -1
- package/dist/src/runtime/resolve-agent-graph.js +1 -1
- package/dist/src/runtime/types.d.ts +2 -1
- package/dist/src/services/dev-client/runtime-artifacts.d.ts +2 -2
- package/dist/src/services/dev-client.d.ts +10 -18
- package/dist/src/services/dev-client.js +1 -1
- package/dist/src/setup/boxes/reconcile-host-framework-preset.d.ts +26 -0
- package/dist/src/setup/boxes/reconcile-host-framework-preset.js +1 -0
- package/dist/src/setup/boxes/resolve-provisioning.js +1 -1
- package/dist/src/setup/index.js +1 -1
- package/dist/src/setup/scaffold/create/add-to-project.js +1 -1
- package/dist/src/setup/scaffold/create/extension.js +0 -1
- package/dist/src/setup/scaffold/create/project.js +2 -4
- package/dist/src/setup/scaffold/index.d.ts +1 -1
- package/dist/src/setup/scaffold/index.js +1 -1
- package/dist/src/setup/scaffold/update/channels.d.ts +7 -1
- package/dist/src/setup/scaffold/update/channels.js +2 -2
- package/dist/src/setup/scaffold/update/connections.js +3 -3
- package/dist/src/setup/vercel-project-framework.d.ts +12 -0
- package/dist/src/setup/vercel-project-framework.js +1 -1
- package/dist/src/shared/continuation-token.d.ts +2 -0
- package/dist/src/shared/continuation-token.js +1 -0
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/channels/eve.mdx +11 -1
- package/docs/concepts/default-harness.md +2 -0
- package/docs/concepts/execution-model-and-durability.md +1 -1
- package/docs/concepts/sessions-runs-and-streaming.md +24 -4
- package/docs/evals/assertions.mdx +2 -2
- package/docs/evals/cases.mdx +31 -0
- package/docs/evals/overview.mdx +1 -1
- package/docs/evals/targets.mdx +2 -1
- package/docs/guides/client/continuations.mdx +16 -1
- package/docs/guides/client/streaming.mdx +31 -2
- package/docs/guides/deployment.md +1 -1
- package/docs/guides/frontend/overview.mdx +4 -2
- package/docs/guides/frontend/use-eve-agent-svelte.mdx +2 -2
- package/docs/guides/frontend/use-eve-agent-vue.mdx +2 -2
- package/docs/guides/remote-agents.md +2 -0
- package/docs/reference/cli.md +16 -3
- package/docs/subagents.mdx +10 -0
- package/package.json +6 -6
- package/dist/src/compiled/_chunks/workflow/attribute-changes-MGTOG_uX.js +0 -20
- package/dist/src/compiled/_chunks/workflow/resume-hook-DHP5ql3-.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-D8hv1ptT.js +0 -1
- package/dist/src/compiled/_chunks/workflow/sleep-uA9pS-PT.js +0 -1
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import type { Event } from '#compiled/@workflow/world/index.js';
|
|
2
2
|
/**
|
|
3
|
-
* Client-side latency measurement (TTFS / STSO) threaded from the
|
|
3
|
+
* Client-side latency measurement (TTFS / STSO / RSFS) threaded from the
|
|
4
4
|
* orchestrator's inline execution path into `executeStep`.
|
|
5
5
|
*
|
|
6
6
|
* TTFS (time-to-first-step) measures run creation → the first step's body
|
|
7
7
|
* beginning to execute. STSO (step-to-step overhead) measures the previous
|
|
8
|
-
* step's terminal event → the next step's body beginning to execute.
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* step's terminal event → the next step's body beginning to execute. RSFS
|
|
9
|
+
* (run-started-to-first-step) measures the `run_started` response landing →
|
|
10
|
+
* the first step's start POST being issued — a sub-window of TTFS that
|
|
11
|
+
* isolates replay overhead from the run-creation queue hop; `finalSchedulingReplay`
|
|
12
|
+
* is the synchronous workflow-function-execution duration of only the FINAL
|
|
13
|
+
* replay pass within that window (the pass that reached and scheduled the
|
|
14
|
+
* first step) — it is NOT accumulated across earlier pre-first-step passes
|
|
15
|
+
* (see {@link StepLatencyTracking.replayMs}), so it must not be read as "the
|
|
16
|
+
* replay portion of RSFS". All are attached to the step's terminal
|
|
17
|
+
* event so a backend can emit latency metrics from the event write alone,
|
|
18
|
+
* without extra event-log queries.
|
|
11
19
|
*
|
|
12
20
|
* Eligibility is decided by the orchestrator (which owns the event log) via
|
|
13
21
|
* {@link computeStepLatencyTracking}; the final values are computed by
|
|
@@ -49,6 +57,36 @@ export interface StepLatencyTracking {
|
|
|
49
57
|
stepCount?: number;
|
|
50
58
|
/** Number of events already in the event log. */
|
|
51
59
|
eventCount?: number;
|
|
60
|
+
/**
|
|
61
|
+
* Epoch ms the `run_started` response was received/parsed by the SDK.
|
|
62
|
+
* Present only when the step qualifies for RSFS — the same eligibility as
|
|
63
|
+
* TTFS (see {@link computeStepLatencyTracking}), plus a recoverable
|
|
64
|
+
* anchor. In turbo mode, `run_started` is backgrounded rather than
|
|
65
|
+
* awaited, so this is stamped at the point the runtime synthesizes the
|
|
66
|
+
* run locally and begins replay instead of at the real response; the
|
|
67
|
+
* first step's start POST is still chained on the real `run_started`
|
|
68
|
+
* promise (see step-executor.ts), so RSFS still ends up measuring the
|
|
69
|
+
* genuine run_started-to-first-step-POST stretch even though the two
|
|
70
|
+
* halves overlap under turbo.
|
|
71
|
+
*/
|
|
72
|
+
rsfsAnchorMs?: number;
|
|
73
|
+
/**
|
|
74
|
+
* Wall-clock ms this invocation's synchronous workflow-function replay
|
|
75
|
+
* took: from calling `runWorkflow` to it throwing the suspension that
|
|
76
|
+
* scheduled this batch. Excludes awaited network I/O (the suspension's
|
|
77
|
+
* event commits, the step's own start POST). Present only alongside
|
|
78
|
+
* `rsfsAnchorMs`.
|
|
79
|
+
*
|
|
80
|
+
* This is the FINAL replay pass only — the invocation that reached and
|
|
81
|
+
* scheduled the first step. Valid RSFS paths can replay more than once
|
|
82
|
+
* before the first step (e.g. a workflow-body `setAttributes()` detour
|
|
83
|
+
* replays twice), and a redelivery omits earlier invocations' replay work
|
|
84
|
+
* entirely; this value is not accumulated across those earlier passes.
|
|
85
|
+
* Do not read it as "the replay portion of RSFS" — RSFS
|
|
86
|
+
* ({@link rsfsAnchorMs}) covers the whole run_started-to-first-step
|
|
87
|
+
* window, this covers only the last pass.
|
|
88
|
+
*/
|
|
89
|
+
replayMs?: number;
|
|
52
90
|
/** Whether turbo mode is active for this invocation. */
|
|
53
91
|
turbo: boolean;
|
|
54
92
|
}
|
|
@@ -58,6 +96,15 @@ export interface StepLatencyEventData {
|
|
|
58
96
|
stso?: number;
|
|
59
97
|
stepCount?: number;
|
|
60
98
|
eventCount?: number;
|
|
99
|
+
/** Client-measured run_started → first step's start POST, ms. */
|
|
100
|
+
rsfs?: number;
|
|
101
|
+
/**
|
|
102
|
+
* Client-measured wall-clock ms of the FINAL replay pass that scheduled
|
|
103
|
+
* the first step (see {@link StepLatencyTracking.replayMs}) — not
|
|
104
|
+
* accumulated across earlier pre-first-step passes, so it must not be
|
|
105
|
+
* read as "the replay portion of `rsfs`".
|
|
106
|
+
*/
|
|
107
|
+
finalSchedulingReplay?: number;
|
|
61
108
|
optimizations?: string[];
|
|
62
109
|
}
|
|
63
110
|
/**
|
|
@@ -82,6 +129,19 @@ export declare function computeStepLatencyTracking(params: {
|
|
|
82
129
|
invocationStartedClean: boolean;
|
|
83
130
|
/** Epoch ms of run creation, if recoverable. Absent disqualifies TTFS. */
|
|
84
131
|
runCreatedAtMs: number | undefined;
|
|
132
|
+
/**
|
|
133
|
+
* Epoch ms the `run_started` response was received/parsed by the SDK (or,
|
|
134
|
+
* under turbo, the instant the run was synthesized locally — see
|
|
135
|
+
* {@link StepLatencyTracking.rsfsAnchorMs}). Absent disqualifies RSFS.
|
|
136
|
+
*/
|
|
137
|
+
runStartedReceivedAtMs: number | undefined;
|
|
138
|
+
/**
|
|
139
|
+
* Wall-clock ms this suspension's `runWorkflow` call spent executing
|
|
140
|
+
* synchronously before throwing — the FINAL replay pass only, not
|
|
141
|
+
* accumulated across earlier passes. See
|
|
142
|
+
* {@link StepLatencyTracking.replayMs}.
|
|
143
|
+
*/
|
|
144
|
+
replayMs: number;
|
|
85
145
|
/** See {@link StepLatencyTracking.preStepBlockingMs}. */
|
|
86
146
|
preStepBlockingMs: number;
|
|
87
147
|
/**
|
|
@@ -122,6 +182,12 @@ export declare function computeStepLatencyEventData(params: {
|
|
|
122
182
|
tracking: StepLatencyTracking | undefined;
|
|
123
183
|
/** `Date.now()` taken immediately before user step code began executing. */
|
|
124
184
|
stepCodeStartedAtMs: number;
|
|
185
|
+
/**
|
|
186
|
+
* `Date.now()` taken immediately before the first step's start POST
|
|
187
|
+
* (`step_started`) was issued. Present only for the lazy inline steps RSFS
|
|
188
|
+
* cares about; see the call sites in step-executor.ts.
|
|
189
|
+
*/
|
|
190
|
+
stepStartPostSentAtMs: number | undefined;
|
|
125
191
|
attempt: number;
|
|
126
192
|
/** Whether this step was started lazily (no separate step_created write). */
|
|
127
193
|
lazyStepStart: boolean;
|
|
@@ -1,12 +1,21 @@
|
|
|
1
1
|
import type { Span } from '#compiled/@opentelemetry/api/index.js';
|
|
2
2
|
import { type SerializedData, type WorkflowRun, type World } from '#compiled/@workflow/world/index.js';
|
|
3
3
|
import type { StepInvocationQueueItem, WorkflowSuspension } from '../global.js';
|
|
4
|
+
import { type MutableEventLog } from './helpers.js';
|
|
4
5
|
export interface SuspensionHandlerParams {
|
|
5
6
|
suspension: WorkflowSuspension;
|
|
6
7
|
world: World;
|
|
7
8
|
run: WorkflowRun;
|
|
8
9
|
span?: Span;
|
|
9
10
|
requestId?: string;
|
|
11
|
+
/**
|
|
12
|
+
* The runtime's loaded event log. Each event creation is sent with this
|
|
13
|
+
* snapshot's `stateUpdatedAt` and, if the backend rejects it as stale (412),
|
|
14
|
+
* the log is reloaded in place and the create is retried — see
|
|
15
|
+
* `withPreconditionRetry`. Guarding per-create (rather than the whole
|
|
16
|
+
* suspension) ensures a retry never re-issues an already-created event.
|
|
17
|
+
*/
|
|
18
|
+
eventLog?: MutableEventLog;
|
|
10
19
|
/**
|
|
11
20
|
* Turbo mode only: a promise that resolves once the backgrounded
|
|
12
21
|
* `run_started` has landed (the run exists). When present, every world write
|
|
@@ -94,5 +103,5 @@ export interface SuspensionHandlerResult {
|
|
|
94
103
|
* 1. Hooks are processed first to prevent race conditions with webhook receivers
|
|
95
104
|
* 2. Step events and wait events are created in parallel
|
|
96
105
|
*/
|
|
97
|
-
export declare function handleSuspension({ suspension, world, run, span, requestId, runReadyBarrier, }: SuspensionHandlerParams): Promise<SuspensionHandlerResult>;
|
|
106
|
+
export declare function handleSuspension({ suspension, world, run, span, requestId, eventLog, runReadyBarrier, }: SuspensionHandlerParams): Promise<SuspensionHandlerResult>;
|
|
98
107
|
//# sourceMappingURL=suspension-handler.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{a as e,i as t,r as n,t as r}from"../../_chunks/workflow/chunk-BHKSVoKr.js";import{a as i,c as a,h as o,l as s,m as c,n as l,o as u,p as d}from"../../_chunks/workflow/dist-CttsoN4D.js";import{E as f,T as p,a as m,c as h,f as g,h as _,i as v,l as y,m as b,n as x,o as S,r as C,s as w,t as T,w as E,y as D}from"../../_chunks/workflow/dist-DpDDcpTl.js";import{$t as O,A as k,At as A,B as j,Bt as M,Ct as N,D as P,Dt as F,Et as I,F as L,Ft as ee,G as R,Gt as te,H as z,Ht as B,I as ne,In as V,It as re,Jt as H,K as ie,Kt as ae,L as oe,Ln as se,Lt as ce,M as le,Mt as ue,N as de,Nt as fe,O as pe,On as me,Ot as he,P as U,Pn as ge,Pt as _e,Q as ve,Qt as ye,R as be,Rn as xe,Rt as Se,S as Ce,St as we,Tt as Te,U as Ee,Ut as De,V as W,Vt as Oe,W as ke,Wt as Ae,X as G,Xt as je,Yt as Me,Z as Ne,Zt as K,_ as Pe,_n as Fe,_t as Ie,a as q,an as J,b as Le,bn as Re,bt as ze,c as Y,ct as Be,d as X,dn as Ve,dt as He,en as Ue,et as We,f as Ge,ft as Ke,g as qe,gn as Je,gt as Ye,ht as Xe,i as Ze,in as Z,jt as Qe,k as $e,kn as et,kt as tt,l as nt,ln as rt,lt as it,mt as at,n as ot,nn as st,nt as ct,o as lt,ot as ut,pt as dt,q as ft,qt as pt,rn as mt,s as ht,sn as gt,st as _t,tn as vt,tt as yt,u as bt,un as xt,ut as St,v as Ct,vn as wt,vt as Tt,wn as Et,wt as Dt,xn as Ot,xt as kt,y as At,yn as jt,yt as Mt,z as Nt,zt as Pt}from"../../_chunks/workflow/attribute-changes-MGTOG_uX.js";import{G as Ft,a as It,b as Lt,g as Rt,h as zt,o as Bt,v as Vt}from"../../_chunks/workflow/dist-Blxnyb7-.js";import{awaitEarlierDeliveries as Ht,getStepFunction as Ut,registerDeliveryBarrier as Wt,scheduleWhenIdle as Gt}from"./private.js";import{n as Kt,r as qt,t as Jt}from"../../_chunks/workflow/resume-hook-DHP5ql3-.js";import{a as Yt,c as Xt,d as Zt,f as Qt,i as $t,l as en,n as tn,o as nn,r as rn,s as an,t as on,u as sn}from"../../_chunks/workflow/run-D8hv1ptT.js";import{createRequire as cn}from"node:module";import"node:crypto";import{types as ln}from"node:util";import{pathToFileURL as un}from"node:url";import{Script as dn,createContext as fn,runInContext as pn}from"node:vm";function mn(e){return e instanceof se||e instanceof V||e instanceof xe||e instanceof et}const hn=`The workflow event log contains orphaned or mismatched events and cannot be replayed. This is an internal workflow SDK error; please report it with the runId.`;function gn(e,t){let n=t??sn(e);return g.is(e)?{attribution:`user`,errorCode:n,hint:`A value passed across a workflow/step boundary could not be serialized. See the error message for the offending path and the Learn More link for details.`}:mn(e)?{attribution:`user`,errorCode:n,hint:`A workflow-only or step-only API was called from the wrong context. The error message includes the exact API and how to move the call.`}:T.is(e)?{attribution:`sdk`,errorCode:n,hint:hn}:e instanceof E?{attribution:`sdk`,errorCode:n,hint:`This is an internal workflow SDK error, not a bug in your code. If it keeps happening, please report it with the stack trace and the runId.`}:n===f.REPLAY_TIMEOUT?{attribution:`sdk`,errorCode:n,hint:'The workflow replay between step boundaries took too long. This bounds workflow-VM and event-log replay time only — step bodies (`"use step"` functions) are excluded. This usually means the event log is unusually large or the workflow function is doing heavy synchronous work in workflow code outside of step bodies. Override the default budget via the WORKFLOW_REPLAY_TIMEOUT_MS env var if needed.'}:n===f.MAX_DELIVERIES_EXCEEDED?{attribution:`sdk`,errorCode:n,hint:`The workflow queue exceeded its max-delivery budget. This usually indicates a persistent runtime failure — check the most recent stack traces for the underlying cause.`}:n===f.CORRUPTED_EVENT_LOG?{attribution:`sdk`,errorCode:n,hint:hn}:n===f.WORLD_CONTRACT_ERROR?{attribution:`sdk`,errorCode:n,hint:`The workflow backend returned data that violated the SDK contract. This is not retryable; please report it with the stack trace and runId.`}:{attribution:`user`,errorCode:n}}function _n(){return Lt(`WORKFLOW_MAX_QUEUE_DELIVERIES`,48,{integer:!0,min:1,max:48})}const vn=24e4,yn=3e4,bn=78e4,xn=new Set;function Sn(e,t,n){xn.has(e)||(xn.add(e),j.warn(t,n))}function Cn(){let e=process.env.WORKFLOW_REPLAY_TIMEOUT_MS;if(!e)return vn;let t=Number(e);return!Number.isFinite(t)||t<=0?(Sn(e,`Ignoring WORKFLOW_REPLAY_TIMEOUT_MS: not a positive finite number; using default`,{raw:e,defaultMs:vn}),vn):t<3e4?(Sn(e,`WORKFLOW_REPLAY_TIMEOUT_MS below minimum; clamped`,{raw:e,clampedMs:yn,minMs:yn}),yn):t>78e4?(Sn(e,`WORKFLOW_REPLAY_TIMEOUT_MS above maximum; clamped`,{raw:e,clampedMs:bn,maxMs:bn}),bn):t}function wn(){return Lt(`WORKFLOW_REPLAY_TIMEOUT_MAX_RETRIES`,3,{integer:!0})}const Tn=new Set;function En(){let e=process.env.WORKFLOW_MAX_INLINE_STEPS;if(!e)return 3;let t=Number(e);return!Number.isInteger(t)||t<=0?(Tn.has(e)||(Tn.add(e),j.warn(`Ignoring WORKFLOW_MAX_INLINE_STEPS: not a positive integer; using default`,{raw:e,defaultValue:3})),3):t<1?1:t>16?(Tn.has(e)||(Tn.add(e),j.warn(`WORKFLOW_MAX_INLINE_STEPS above maximum; clamped`,{raw:e,clampedValue:16,maxValue:16})),16):t}function Dn(){let e=process.env.WORKFLOW_OPTIMISTIC_INLINE_START;return e===void 0||e===``?!1:e===`1`||e.toLowerCase()===`true`}function On(){let e=process.env.WORKFLOW_OPTIMISTIC_INLINE_START;return e===void 0||e===``?!1:e===`0`||e.toLowerCase()===`false`}function kn(){let e=process.env.WORKFLOW_TURBO;return e===void 0||e===``?!0:!(e===`0`||e.toLowerCase()===`false`)}function An(){let e=process.env.WORKFLOW_INLINE_OWNERSHIP;return e===void 0||e===``?!0:!(e===`0`||e.toLowerCase()===`false`)}function jn(){return Lt(`WORKFLOW_INLINE_OWNERSHIP_LEASE_SECONDS`,860,{integer:!0,min:1,max:900})}function Mn(){return Lt(`WORKFLOW_REPLAY_DIVERGENCE_MAX_RETRIES`,3,{integer:!0})}var Nn=n({createWorld:()=>Fn});function Pn(){throw Error(`Workflow target world was not statically injected. Configure a Workflow builder/framework plugin so @workflow/core/runtime/world-target is aliased to the selected world package.`)}function Fn(){Pn()}const In=Symbol.for(`@workflow/world//cache`),Ln=Symbol.for(`@workflow/world//stubbedCache`),Rn=Symbol.for(`@workflow/world//cachePromise`),zn=Symbol.for(`@workflow/world//stubbedCachePromise`),Q=globalThis;function Bn(e){if(typeof e.createWorld==`function`)return e.createWorld();if(typeof e.createLocalWorld==`function`)return e.createLocalWorld();if(typeof e.createVercelWorld==`function`)return e.createVercelWorld();if(typeof e.default==`function`)return e.default();if(e.default&&typeof e.default==`object`)return e.default;throw Error(`Invalid target world module: must export createWorld(), a default factory, or a default World instance.`)}const Vn=async()=>{let e=await Bn(Nn),t=[`WORKFLOW_VERCEL_PROJECT`,`WORKFLOW_VERCEL_TEAM`,`WORKFLOW_VERCEL_AUTH_TOKEN`,`WORKFLOW_VERCEL_ENV`].filter(e=>process.env[e]);return t.length>0&&process.env.VERCEL===`1`&&console.warn(`[workflow] Warning: ${t.join(`, `)} env var(s) are set but have no effect at runtime. These are only used by the Workflow CLI. Remove them from your Vercel project environment variables.`),e},Hn=async()=>{if(Q[Ln])return Et(Q[Ln]),Q[Ln];Q[zn]||(Q[zn]=Vn().catch(e=>{throw Q[zn]=void 0,e}));let e=await Q[zn];return Et(e),Q[Ln]=e,{createQueueHandler:e.createQueueHandler,specVersion:e.specVersion}},Un=async()=>Q[In]?(Et(Q[In]),Q[In]):(Q[Rn]||(Q[Rn]=Vn().catch(e=>{throw Q[Rn]=void 0,e})),Q[In]=await Q[Rn],Et(Q[In]),Q[In]),Wn=e=>{Q[In]=e,Q[Ln]=e,Q[Rn]=void 0,Q[zn]=void 0},Gn=Symbol.for(`@workflow/world//getWorldFn`);globalThis[Gn]??=Un;var Kn=class{limitMs;elapsedMs=0;intervalStart;constructor(e=Cn()){this.limitMs=e,this.intervalStart=Date.now()}get configuredLimitMs(){return this.limitMs}elapsed(){let e=this.intervalStart===null?0:Date.now()-this.intervalStart;return this.elapsedMs+e}pause(){this.intervalStart!==null&&(this.elapsedMs+=Date.now()-this.intervalStart,this.intervalStart=null)}resume(){this.intervalStart=Date.now()}isExhausted(){return this.elapsed()>=this.limitMs}};async function qn(e){let{runId:t,workflowName:n,requestId:r,attempt:i,limitMs:a}=e,o=j.forRun(t,n),s=await Un();if(s.processExitTriggersQueueRedelivery!==!0){o.warn(`Workflow replay exceeded timeout; current World does not support process exit for redelivery — failing the run and returning`,{timeoutMs:a,attempt:i});try{let e=nt(s,t),n=new v(`Workflow replay exceeded maximum duration (${a/1e3}s)`);await s.events.create(t,{eventType:`run_failed`,specVersion:5,eventData:{error:await Pe(n,t,await e()),errorCode:f.REPLAY_TIMEOUT}},{requestId:r})}catch(e){o.warn(`Unable to mark run as failed`,{attempt:i,errorName:e instanceof Error?e.name:`UnknownError`,errorMessage:e instanceof Error?e.message:String(e)})}return}let c=wn();i<=c&&(o.warn(`Workflow replay exceeded timeout but will be re-attempted (attempt < maxRetries)`,{timeoutMs:a,attempt:i,maxRetries:c}),process.exit(1));let l=gn(void 0,f.REPLAY_TIMEOUT);o.error(`Workflow replay exceeded timeout and max retries exceeded. Failing the run`,{timeoutMs:a,attempt:i,maxRetries:c,errorCode:l.errorCode,errorAttribution:l.attribution});try{let e=nt(s,t),n=new v(`Workflow replay exceeded maximum duration (${a/1e3}s) after ${i} attempts`);await s.events.create(t,{eventType:`run_failed`,specVersion:5,eventData:{error:await Pe(n,t,await e()),errorCode:f.REPLAY_TIMEOUT}},{requestId:r})}catch(e){o.warn(`Unable to mark run as failed. The queue will continue to retry`,{attempt:i,errorName:e instanceof Error?e.name:`UnknownError`,errorMessage:e instanceof Error?e.message:String(e),errorStack:e instanceof Error?e.stack:void 0})}process.exit(1)}function Jn(e){let t=e.startsWith(`wrun_`)?e.slice(5):e;try{return It(t)}catch{return}}function Yn(e){return ln.isNativeError(e)?e.name:`Error`}function Xn(e){return ln.isNativeError(e)?e.stack??``:``}function Zn(e){return typeof e==`object`&&!!e&&`name`in e&&e.name===`AbortError`&&`message`in e&&typeof e.message==`string`&&(!(`stack`in e)||e.stack===void 0||typeof e.stack==`string`)}function Qn(e){if(!Zn(e)||v.is(e))return e;let t=new v(`Aborted: ${e.message}`);return e.stack&&(t.stack=e.stack),t}function $n(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function er(e){if(ln.isNativeError(e))return{name:e.name,message:e.message,stack:e.stack??``};if(typeof e==`string`)return{name:`Error`,message:e,stack:``};try{return{name:`Error`,message:JSON.stringify(e),stack:``}}catch{return{name:`Error`,message:String(e),stack:``}}}async function tr(e){if($n(e))try{let t=await tr(await e);return{...t,message:`Promise rejection: ${t.message}`}}catch(e){let t=await tr(e);return{...t,message:`Promise rejection: ${t.message}`}}return er(e)}let nr,rr,ir;async function ar(){if(rr!==void 0)return rr;if(ir)return ir;if(!nr)try{let e=[`@workflow/utils`,`get-port`].join(`/`);nr=cn(un(process.cwd()+`/package.json`).href)(e).getPort}catch{nr=async()=>void 0}return ir=(nr??(async()=>void 0))().then(e=>(typeof e==`number`&&(rr=e),e)).finally(()=>{ir=void 0}),ir}const or=new Set([`step_created`,`step_started`,`step_completed`,`step_failed`,`step_retrying`,`hook_received`,`wait_created`,`wait_completed`]);function sr(e){let{events:t}=e,n=e.invocationStartedClean&&e.runCreatedAtMs!==void 0&&!e.suspensionHasWaits,r;if(n)for(let e of t){if(or.has(e.eventType)){n=!1;break}if(e.eventType===`attr_set`){let t=+(e.occurredAt??e.createdAt);r=r===void 0?t:Math.min(r,t)}}let i,a,o,s=t[t.length-1];if(!e.suspensionHasWaits&&!e.suspensionCreatedHooks&&s&&(s.eventType===`step_completed`||s.eventType===`step_failed`)){i=+(s.occurredAt??s.createdAt);let e=new Set;for(let n of t)(n.eventType===`step_completed`||n.eventType===`step_failed`)&&n.correlationId!==void 0&&e.add(n.correlationId);a=e.size,o=t.length}if(!(!n&&i===void 0))return{...n?{ttfsAnchorMs:e.runCreatedAtMs,preStepBlockingMs:r===void 0?e.preStepBlockingMs:e.preStepBlockingBeforeAttrMs??0,...r===void 0?{}:{preStepAttrStartMs:r}}:{},...i===void 0?{}:{prevStepEndMs:i,stepCount:a,eventCount:o},turbo:e.turbo}}function cr(e){let{tracking:t}=e;if(!t||e.attempt!==1)return;let n=t.preStepAttrStartMs??e.stepCodeStartedAtMs,r=t.ttfsAnchorMs===void 0?void 0:Math.max(0,n-t.ttfsAnchorMs-(t.preStepBlockingMs??0)),i=t.prevStepEndMs===void 0?void 0:Math.max(0,e.stepCodeStartedAtMs-t.prevStepEndMs);if(r===void 0&&i===void 0)return;let a=[];return t.turbo&&a.push(`turbo`),e.lazyStepStart&&a.push(`lazyStepStart`),e.optimisticStart&&a.push(`optimisticStart`),{...r===void 0?{}:{ttfs:r},...i===void 0?{}:{stso:i},...i!==void 0&&t.stepCount!==void 0?{stepCount:t.stepCount}:{},...i!==void 0&&t.eventCount!==void 0?{eventCount:t.eventCount}:{},optimizations:a}}function lr(e,t){if(t&&!(!e.events||e.cursor===void 0))return{events:e.events,cursor:e.cursor,hasMore:e.hasMore??!1}}async function ur(e){let{world:t,workflowRunId:n,workflowName:r,workflowStartedAt:i,stepId:a,stepName:o}=e,u=process.env.VERCEL_URL!==void 0,d=(e.runSpecVersion??0)>=5;return G(`step.execute ${c(o)}`,{},async c=>{c?.setAttributes({...Dt(o),...Oe(r),...je(n),...kt(a)});let f=nt(t,n),p=Ut(o);if(!p||typeof p!=`function`){let i=`Step "${o}" is not registered in the current deployment. This usually indicates a build or bundling issue that caused the step to not be included in the deployment.`;if(j.error(`Step function not registered, failing step`,{workflowRunId:n,stepName:o,stepId:a}),e.lazyStepInput!==void 0)try{e.runReadyBarrier&&await e.runReadyBarrier.catch(()=>{}),await t.events.create(n,{eventType:`step_started`,specVersion:5,correlationId:a,eventData:{stepName:o,workflowName:r,input:e.lazyStepInput,...e.ownerMessageId===void 0?{}:{ownerMessageId:e.ownerMessageId}}})}catch(e){if(C.is(e))return{type:`skipped`};if(y.is(e))return{type:`gone`};throw e}try{await t.events.create(n,{eventType:`step_failed`,specVersion:5,correlationId:a,eventData:{stepName:o,error:await At(new v(i),n,await f(),[],globalThis,d)}})}catch(e){if(C.is(e))return{type:`skipped`};throw e}return c?.setAttributes({...Qe(`failed`),...ze(!0)}),{type:`failed`}}let m=p.maxRetries??3;c?.setAttributes({...N(m)});let g=e=>{if(b.is(e)){let t=Math.max(1,typeof e.retryAfter==`number`?e.retryAfter:1);return j.info(`Throttled on step_started, deferring`,{retryAfterSeconds:t}),{type:`throttled`,timeoutSeconds:t}}if(y.is(e))return j.info(`Workflow run "${n}" has already completed, skipping step "${a}": ${e.message}`),{type:`gone`};if(C.is(e))return j.debug(`Step in terminal state, skipping`,{stepName:o,stepId:a,workflowRunId:n,error:e instanceof Error?e.message:String(e)}),c?.setAttributes({...A(!0),...tt(`completed`)}),{type:`skipped`};if(_.is(e)){let t=Math.max(1,e.retryAfter??1);return j.debug(`Step retryAfter timestamp not yet reached`,{stepName:o,stepId:a,timeoutSeconds:t}),{type:`retry`,timeoutSeconds:t}}},x=e.lazyStepInput!==void 0&&(Dn()||e.forceOptimisticStart===!0&&!On()),S,w,T=async()=>{if(!w)return;let e=await w;if(e.ok)return;let t=g(e.err);if(!t)throw e.err;return t};if(x){w=(e.runReadyBarrier??Promise.resolve()).then(()=>t.events.create(n,{eventType:`step_started`,specVersion:5,correlationId:a,eventData:{stepName:o,workflowName:r,input:e.lazyStepInput,...e.ownerMessageId===void 0?{}:{ownerMessageId:e.ownerMessageId}}})).then(()=>({ok:!0}),e=>({ok:!1,err:e}));let i=new Date;S={runId:n,stepId:a,stepName:o,status:`running`,input:e.lazyStepInput,attempt:1,startedAt:i,createdAt:i,updatedAt:i}}else try{let i=e.ownerMessageId===void 0?{}:{ownerMessageId:e.ownerMessageId},s=await t.events.create(n,{eventType:`step_started`,specVersion:5,correlationId:a,eventData:e.lazyStepInput===void 0?{stepName:o,...i}:{stepName:o,workflowName:r,input:e.lazyStepInput,...i}});if(!s.step)throw new E(`step_started event for "${a}" did not return step entity`);S=s.step}catch(e){let t=g(e);if(t)return t;throw e}j.debug(`Step execution details`,{stepName:o,stepId:S.stepId,status:S.status,attempt:S.attempt}),c?.setAttributes({...Qe(S.status)});let D;if(S.attempt>m+1&&S.error){let e=S.attempt-1,r=`Step "${o}" exceeded max retries (${e} ${s(`retry`,`retries`,e)})`;W.error(`Step exceeded max retries`,{workflowRunId:n,stepName:o,retryCount:e});let i=new v(r);if(S.error!=null)try{i.cause=await pe(S.error,n,await f())}catch{}try{await t.events.create(n,{eventType:`step_failed`,specVersion:5,correlationId:a,eventData:{stepName:o,error:await At(i,n,await f(),[],globalThis,d)}})}catch(e){if(C.is(e))return j.info(`Tried failing step, but step has already finished.`,{workflowRunId:n,stepId:a,stepName:o,message:e.message}),{type:`skipped`};throw e}return c?.setAttributes({...Qe(`failed`),...I(!0)}),{type:`failed`}}let O=[],k=[],M=!0,L;try{let t=S.attempt;if(!S.startedAt)throw new E(`Step "${a}" has no "startedAt" timestamp`);let s=S.startedAt,m=e.encryptionKey??await f(),h=await G(`step.hydrate`,{},async t=>{let r=Date.now(),i=await P(S.input,n,m,k,globalThis,{},e.workflowDeploymentId),a=Date.now()-r;return t?.setAttributes({...Ye(i.args.length),...dt(a)}),i}),g=h.args,_=h.thisVal??null,v=l(u?`https://${process.env.VERCEL_URL}`:`http://localhost:${await ar()??3e3}`),y,b=!1,C=Date.now();L=cr({tracking:e.latencyTracking,stepCodeStartedAtMs:C,attempt:t,lazyStepStart:e.lazyStepInput!==void 0,optimisticStart:x}),L&&c?.setAttributes({...L.ttfs===void 0?{}:fe(L.ttfs),...L.stso===void 0?{}:ue(L.stso),...we(L.optimizations??[])});try{D=await G(`step.execute`,{},async()=>await Nt.run({stepMetadata:{stepName:o,stepId:a,stepStartedAt:new Date(+s),attempt:t},workflowMetadata:{workflowName:r,workflowRunId:n,workflowStartedAt:new Date(+i),url:v,features:{encryption:!!m}},workflowDeploymentId:e.workflowDeploymentId,ops:k,preCompletionOps:O,closureVars:h.closureVars,encryptionKey:m,runReadyBarrier:x?e.runReadyBarrier:void 0},()=>p.apply(_,g)))}catch(e){y=e,b=!0}let w=Date.now()-C;if(qe(...g,_,h.closureVars),b)throw y;if(c?.setAttributes({...at(w)}),D=await G(`step.dehydrate`,{},async t=>{let r=Date.now(),i=await Le(D,n,m,k,globalThis,!1,!1,d,x?e.runReadyBarrier:void 0),a=Date.now()-r;return t?.setAttributes({...Xe(a),...Te(typeof i)}),i}),k.length>0){let e=Promise.all(k);ot(e,e=>{j.warn(`Background flush of step stream ops failed`,{workflowRunId:n,stepId:a,error:e instanceof Error?e.message:String(e)})}),M=await Promise.race([e.then(()=>!0,e=>{if(e?.name===`AbortError`||e?.name===`ResponseAborted`)return!0;throw e}),new Promise(e=>setTimeout(()=>e(!1),500))])}if(x){let e=await T();if(e)return e}O.length>0&&await Promise.all(O).catch(()=>{})}catch(e){if(x){let e=await T();if(e)return e}O.length>0&&await Promise.all(O).catch(()=>{});let r=Qn(e),i=await tr(r),l=i.stack||Xn(r)||``;r instanceof Error&&c?.recordException?.(r);let u=v.is(r);if(c?.setAttributes({...Mt(Yn(r)),...Tt(i.message),...ct(Yn(r)),...We(u?`fatal`:h.is(r)?`retryable`:`transient`),...yt(!u)}),y.is(e))return W.info(`Workflow run already completed, skipping step`,{workflowRunId:n,stepId:a,message:e.message}),{type:`gone`};if(u){W.error(`Encountered FatalError while executing step, bubbling up to parent workflow`,{workflowRunId:n,stepName:o,errorStack:l}),ln.isNativeError(r)&&l&&(r.stack=l);try{await t.events.create(n,{eventType:`step_failed`,specVersion:5,correlationId:a,eventData:{stepName:o,error:await At(r,n,await f(),[],globalThis,d),...L}})}catch(e){if(C.is(e))return j.info(`Tried failing step, but step has already finished.`,{workflowRunId:n,stepId:a,stepName:o,message:e.message}),{type:`skipped`};throw e}return c?.setAttributes({...Qe(`failed`),...ze(!0)}),{type:`failed`}}let p=S.attempt;if(c?.setAttributes({...Ie(p),...N(m)}),p>=m+1){let r=S.attempt-1;W.error(`Max retries reached, bubbling error to parent workflow`,{workflowRunId:n,stepName:o,attempt:S.attempt,retryCount:r,errorStack:l});let u=new v(`Step "${o}" failed after ${m} ${s(`retry`,`retries`,m)}: ${i.message}`);u.cause=e,l&&(u.stack=l);try{await t.events.create(n,{eventType:`step_failed`,specVersion:5,correlationId:a,eventData:{stepName:o,error:await At(u,n,await f(),[],globalThis,d),...L}})}catch(e){if(C.is(e))return j.info(`Tried failing step, but step has already finished.`,{workflowRunId:n,stepId:a,stepName:o,message:e.message}),{type:`skipped`};throw e}return c?.setAttributes({...Qe(`failed`),...I(!0)}),{type:`failed`}}h.is(e)?W.info(`Encountered RetryableError, step will be retried`,{workflowRunId:n,stepName:o,attempt:p,message:e.message}):W.info(`Encountered Error, step will be retried`,{workflowRunId:n,stepName:o,attempt:p,errorStack:l}),ln.isNativeError(e)&&l&&(e.stack=l);try{await t.events.create(n,{eventType:`step_retrying`,specVersion:5,correlationId:a,eventData:{stepName:o,error:await At(e,n,await f(),[],globalThis,d),...h.is(e)&&{retryAfter:e.retryAfter}}})}catch(e){if(C.is(e))return j.info(`Tried retrying step, but step has already finished.`,{workflowRunId:n,stepId:a,stepName:o,message:e.message}),{type:`skipped`};throw e}let g=Math.max(1,h.is(e)?Math.ceil((+e.retryAfter.getTime()-Date.now())/1e3):1);return c?.setAttributes({...F(g),...he(!0)}),{type:`retry`,timeoutSeconds:g}}let ee;try{ee=await t.events.create(n,{eventType:`step_completed`,specVersion:5,correlationId:a,eventData:{stepName:o,workflowName:r,result:D,...L}},e.inlineDeltaSinceCursor===void 0?void 0:{sinceCursor:e.inlineDeltaSinceCursor})}catch(e){if(C.is(e))return j.info(`Tried completing step, but step has already finished.`,{workflowRunId:n,stepId:a,stepName:o,message:e.message}),{type:`skipped`};if(y.is(e))return W.info(`Workflow run already completed, skipping step`,{workflowRunId:n,stepId:a,message:e.message}),{type:`gone`};throw e}let R=lr(ee,e.inlineDeltaSinceCursor!==void 0);return c?.setAttributes({...Qe(`completed`),...Te(typeof D)}),k.length>0&&W.debug(`Step has pending ops`,{workflowRunId:n,stepName:o,opsCount:k.length}),{type:`completed`,hasPendingOps:!M,inlineDelta:R}})}function dr(e){return e.hasCreatedEvent===!0&&e.ownerMessageId!==void 0&&e.sawRetrying!==!0}function fr(e,t){if(e.lastStartedAt===void 0)return 0;let n=jn(),r=e.lastStartedAt+n*1e3-t;return Math.min(n,Math.max(0,Math.ceil(r/1e3)))}function pr(e){return`${e.correlationId}:backstop:${e.lastStartedAt}`}function mr(e,t,n){let r=new Map,i=new Set;for(let t of e)if(t.correlationId!==void 0)if(t.eventType===`step_started`){let e=`eventData`in t&&t.eventData&&`ownerMessageId`in t.eventData&&typeof t.eventData.ownerMessageId==`string`?t.eventData.ownerMessageId:void 0;r.set(t.correlationId,e)}else t.eventType===`step_retrying`&&i.add(t.correlationId);for(let e of t)if(e!==void 0&&!i.has(e)&&r.get(e)===n)return!0;return!1}const hr=new Map;async function gr(e,t,n){let r=`${e}:${t}`,i=hr.get(r);if(i){j.warn(`Step execution already in flight in this process; awaiting its settlement instead of executing again`,{workflowRunId:e,stepId:t});try{await i}catch{}return{type:`skipped`}}let a=n();hr.set(r,a);try{return await a}finally{hr.delete(r)}}async function _r({world:e,runId:t,hookEvent:n,queueItem:r,requestId:i}){try{return(await e.events.create(t,n,{requestId:i})).event?.eventType===`hook_conflict`?{hasHookConflict:!0,hasAwaitedHookCreation:!1}:{hasHookConflict:!1,hasAwaitedHookCreation:r.hasConflictAwaiter===!0}}catch(e){if(C.is(e))return j.info(`Hook already exists, continuing`,{workflowRunId:t,message:e.message}),{hasHookConflict:!1,hasAwaitedHookCreation:r.hasConflictAwaiter===!0};if(y.is(e))return j.info(`Workflow run already completed, skipping hook`,{workflowRunId:t,message:e.message}),{hasHookConflict:!1,hasAwaitedHookCreation:!1};throw e}}async function vr({suspension:e,world:t,run:n,span:r,requestId:i,runReadyBarrier:a}){let o=n.runId,s=async()=>{if(a)try{await a}catch{}},c=e.steps.filter(e=>e.type===`step`),l=e.steps.filter(e=>e.type===`hook`),u=e.steps.filter(e=>e.type===`wait`),d=e.steps.filter(e=>e.type===`attribute`),f=l.filter(e=>!e.hasCreatedEvent),p=new Map;for(let e of l){if(e.hasCreatedEvent&&!e.disposed)continue;let t=p.get(e.token);t?t.push(e):p.set(e.token,[e])}let m=await t.getEncryptionKeyForRun?.(n),h=m?await me(m):void 0,g=(n.specVersion??0)>=5;async function _(e){let n={eventType:`hook_disposed`,specVersion:5,correlationId:e.correlationId,eventData:{token:e.token}};try{await t.events.create(o,n,{requestId:i})}catch(t){if(C.is(t))j.info(`Hook already disposed, skipping duplicate disposal`,{workflowRunId:o,correlationId:e.correlationId,message:t.message});else if(y.is(t))j.info(`Workflow run already completed, skipping hook disposal`,{workflowRunId:o,correlationId:e.correlationId,message:t.message});else if(S.is(t))j.info(`Hook not found for disposal, continuing`,{workflowRunId:o,correlationId:e.correlationId,message:t.message});else throw t}}let b=!1,x=!1,w=0;if(p.size>0){let n=Date.now();await s(),await Promise.all([...p.values()].map(async n=>{for(let r of n){let n=!1;if(!r.hasCreatedEvent){let a=r.metadata===void 0?void 0:await Ct(r.metadata,o,h,e.globalThis,!1,g),s=await _r({world:t,runId:o,hookEvent:{eventType:`hook_created`,specVersion:5,correlationId:r.correlationId,eventData:{token:r.token,metadata:a,isWebhook:r.isWebhook??!1,...r.isSystem&&{isSystem:!0}}},queueItem:r,requestId:i});b||=s.hasHookConflict,x||=s.hasAwaitedHookCreation,n=s.hasHookConflict}r.disposed&&!n&&await _(r)}})),w=Date.now()-n}let T=l.filter(e=>e.abortRequested&&!e.disposed);T.length>0&&(await s(),await Promise.all(T.map(async n=>{try{let r=await Ct({aborted:!0,reason:n.abortReason},o,h,e.globalThis,!1,g);await t.events.create(o,{eventType:`hook_received`,specVersion:5,correlationId:n.correlationId,eventData:{token:n.token,payload:r}});try{let e=oe(n.token);await t.streams.write(o,e,r),await t.streams.close(o,e)}catch{j.debug(`Failed to write abort stream packet, hook event will provide fallback`,{workflowRunId:o,correlationId:n.correlationId})}}catch(e){if(C.is(e)||y.is(e))j.info(`Workflow run already completed, skipping abort`,{workflowRunId:o,correlationId:n.correlationId,message:e.message});else throw e}})));let E=new Set(c.filter(e=>!e.hasCreatedEvent).map(e=>e.correlationId)),D=new Set,k=new Set(x===!1?c.filter(e=>E.has(e.correlationId)).slice(0,En()).map(e=>e.correlationId):[]),A=new Map,N=[];for(let r of c)E.has(r.correlationId)&&N.push((async()=>{let a=await Ct({args:r.args,closureVars:r.closureVars,thisVal:r.thisVal},o,h,e.globalThis,!1,g);if(k.has(r.correlationId)){A.set(r.correlationId,{correlationId:r.correlationId,stepName:r.stepName,dehydratedInput:a});return}let c={eventType:`step_created`,specVersion:5,correlationId:r.correlationId,eventData:{stepName:r.stepName,workflowName:n.workflowName,input:a}};try{await s(),await t.events.create(o,c,{requestId:i}),D.add(r.correlationId)}catch(e){if(C.is(e))j.info(`Step already exists, continuing`,{workflowRunId:o,correlationId:r.correlationId,message:e.message});else throw e}})());for(let e of u)e.hasCreatedEvent||N.push((async()=>{let n={eventType:`wait_created`,specVersion:5,correlationId:e.correlationId,eventData:{resumeAt:e.resumeAt}};try{await s(),await t.events.create(o,n,{requestId:i})}catch(t){if(C.is(t))j.info(`Wait already exists, continuing`,{workflowRunId:o,correlationId:e.correlationId,message:t.message});else throw t}})());for(let e of d)N.push((async()=>{try{await s(),await t.events.create(o,{eventType:`attr_set`,specVersion:5,correlationId:e.correlationId,eventData:{changes:e.changes,writer:{type:`workflow`},...e.allowReservedAttributes?{allowReservedAttributes:!0}:{}}},{requestId:i})}catch(t){if(C.is(t))j.info(`Workflow attribute event already exists, continuing`,{workflowRunId:o,correlationId:e.correlationId,message:t.message});else if(yr(t)){let e=new v(`setAttributes failed World validation: ${t instanceof Error?t.message:String(t)}`);throw e.cause=t,e}else throw t}})());await Promise.all(N);let P=[];for(let e of k){let t=A.get(e);t&&P.push(t)}let F=Date.now(),I;for(let e of u){let t=e.resumeAt.getTime(),n=Math.max(1e3,t-F),r=Math.ceil(n/1e3);(!I||r<I.seconds)&&(I={seconds:r,correlationId:e.correlationId})}return r?.setAttributes({...K(`workflow_suspended`),...O(c.length),...M(f.length),...mt(u.length)}),{pendingSteps:c,createdStepCorrelationIds:D,lazyInlineSteps:P,waitTimeout:b?void 0:I,hasHookConflict:b,hasAwaitedHookCreation:x,hasAttributeEvents:d.length>0,hasHookEvents:f.length>0,hookCreationMs:w}}function yr(e){return e instanceof Ft||e instanceof Error&&e.name===`AttributeValidationError`?!0:p.is(e)&&e.status===400}const br=()=>Lt(`WORKFLOW_WAIT_CONTINUATION_MAX_DELAY_SECONDS`,82800,{integer:!0,min:1}),xr=()=>Lt(`WORKFLOW_NEAR_ELAPSED_WAIT_THRESHOLD_SECONDS`,2);function Sr(e,t,n=Date.now()){let r=br();if(e<=Math.min(xr(),r))return{delaySeconds:e,idempotencyKey:`${t}:${Math.floor(n/1e3)}`};let i=Math.ceil(e/r);return{delaySeconds:Math.min(e,r),idempotencyKey:i===1?t:`${t}:hop-${i}`}}var Cr=44,wr=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,Tr=new Uint8Array(64),Er=new Uint8Array(128);for(let e=0;e<wr.length;e++){let t=wr.charCodeAt(e);Tr[e]=t,Er[t]=e}function Dr(e,t){let n=0,r=0,i=0;do i=Er[e.next()],n|=(i&31)<<r,r+=5;while(i&32);let a=n&1;return n>>>=1,a&&(n=-2147483648|-n),t+n}function Or(e,t){return e.pos>=t?!1:e.peek()!==Cr}var kr=class{constructor(e){this.pos=0,this.buffer=e}next(){return this.buffer.charCodeAt(this.pos++)}peek(){return this.buffer.charCodeAt(this.pos)}indexOf(e){let{buffer:t,pos:n}=this,r=t.indexOf(e,n);return r===-1?t.length:r}};function Ar(e){let{length:t}=e,n=new kr(e),r=[],i=0,a=0,o=0,s=0,c=0;do{let e=n.indexOf(`;`),t=[],l=!0,u=0;for(i=0;n.pos<e;){let r;i=Dr(n,i),i<u&&(l=!1),u=i,Or(n,e)?(a=Dr(n,a),o=Dr(n,o),s=Dr(n,s),Or(n,e)?(c=Dr(n,c),r=[i,a,o,s,c]):r=[i,a,o,s]):r=[i],t.push(r),n.pos++}l||jr(t),r.push(t),n.pos=e+1}while(n.pos<=t);return r}function jr(e){e.sort(Mr)}function Mr(e,t){return e[0]-t[0]}const Nr=/^[\w+.-]+:\/\//,Pr=/^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/,Fr=/^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;function Ir(e){return Nr.test(e)}function Lr(e){return e.startsWith(`//`)}function Rr(e){return e.startsWith(`/`)}function zr(e){return e.startsWith(`file:`)}function Br(e){return/^[.?#]/.test(e)}function Vr(e){let t=Pr.exec(e);return Ur(t[1],t[2]||``,t[3],t[4]||``,t[5]||`/`,t[6]||``,t[7]||``)}function Hr(e){let t=Fr.exec(e),n=t[2];return Ur(`file:`,``,t[1]||``,``,Rr(n)?n:`/`+n,t[3]||``,t[4]||``)}function Ur(e,t,n,r,i,a,o){return{scheme:e,user:t,host:n,port:r,path:i,query:a,hash:o,type:7}}function Wr(e){if(Lr(e)){let t=Vr(`http:`+e);return t.scheme=``,t.type=6,t}if(Rr(e)){let t=Vr(`http://foo.com`+e);return t.scheme=``,t.host=``,t.type=5,t}if(zr(e))return Hr(e);if(Ir(e))return Vr(e);let t=Vr(`http://foo.com/`+e);return t.scheme=``,t.host=``,t.type=e?e.startsWith(`?`)?3:e.startsWith(`#`)?2:4:1,t}function Gr(e){if(e.endsWith(`/..`))return e;let t=e.lastIndexOf(`/`);return e.slice(0,t+1)}function Kr(e,t){qr(t,t.type),e.path===`/`?e.path=t.path:e.path=Gr(t.path)+e.path}function qr(e,t){let n=t<=4,r=e.path.split(`/`),i=1,a=0,o=!1;for(let e=1;e<r.length;e++){let t=r[e];if(!t){o=!0;continue}if(o=!1,t!==`.`){if(t===`..`){a?(o=!0,a--,i--):n&&(r[i++]=t);continue}r[i++]=t,a++}}let s=``;for(let e=1;e<i;e++)s+=`/`+r[e];(!s||o&&!s.endsWith(`/..`))&&(s+=`/`),e.path=s}function Jr(e,t){if(!e&&!t)return``;let n=Wr(e),r=n.type;if(t&&r!==7){let e=Wr(t),i=e.type;switch(r){case 1:n.hash=e.hash;case 2:n.query=e.query;case 3:case 4:Kr(n,e);case 5:n.user=e.user,n.host=e.host,n.port=e.port;case 6:n.scheme=e.scheme}i>r&&(r=i)}qr(n,r);let i=n.query+n.hash;switch(r){case 2:case 3:return i;case 4:{let r=n.path.slice(1);return r?Br(t||e)&&!Br(r)?`./`+r+i:r+i:i||`.`}case 5:return n.path+i;default:return n.scheme+`//`+n.user+n.host+n.port+n.path+i}}function Yr(e){if(!e)return``;let t=e.lastIndexOf(`/`);return e.slice(0,t+1)}function Xr(e,t){let n=Yr(e),r=t?t+`/`:``;return e=>Jr(r+(e||``),n)}var $=0,Zr=1,Qr=2,$r=3,ei=4;function ti(e,t){let n=ni(e,0);if(n===e.length)return e;t||(e=e.slice());for(let r=n;r<e.length;r=ni(e,r+1))e[r]=ii(e[r],t);return e}function ni(e,t){for(let n=t;n<e.length;n++)if(!ri(e[n]))return n;return e.length}function ri(e){for(let t=1;t<e.length;t++)if(e[t][$]<e[t-1][$])return!1;return!0}function ii(e,t){return t||(e=e.slice()),e.sort(ai)}function ai(e,t){return e[$]-t[$]}var oi=!1;function si(e,t,n,r){for(;n<=r;){let i=n+(r-n>>1),a=e[i][$]-t;if(a===0)return oi=!0,i;a<0?n=i+1:r=i-1}return oi=!1,n-1}function ci(e,t,n){for(let r=n+1;r<e.length&&e[r][$]===t;n=r++);return n}function li(e,t,n){for(let r=n-1;r>=0&&e[r][$]===t;n=r--);return n}function ui(){return{lastKey:-1,lastNeedle:-1,lastIndex:-1}}function di(e,t,n,r){let{lastKey:i,lastNeedle:a,lastIndex:o}=n,s=0,c=e.length-1;if(r===i){if(t===a)return oi=o!==-1&&e[o][$]===t,o;t>=a?s=o===-1?0:o:c=o}return n.lastKey=r,n.lastNeedle=t,n.lastIndex=si(e,t,s,c)}function fi(e){return typeof e==`string`?JSON.parse(e):e}var pi="`line` must be greater than 0 (lines start at line 1)",mi="`column` must be greater than or equal to 0 (columns start at column 0)",hi=class{constructor(e,t){let n=typeof e==`string`;if(!n&&e._decodedMemo)return e;let r=fi(e),{version:i,file:a,names:o,sourceRoot:s,sources:c,sourcesContent:l}=r;this.version=i,this.file=a,this.names=o||[],this.sourceRoot=s,this.sources=c,this.sourcesContent=l,this.ignoreList=r.ignoreList||r.x_google_ignoreList||void 0;let u=Xr(t,s);this.resolvedSources=c.map(u);let{mappings:d}=r;if(typeof d==`string`)this._encoded=d,this._decoded=void 0;else if(Array.isArray(d))this._encoded=void 0,this._decoded=ti(d,n);else if(r.sections)throw Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`);else throw Error(`invalid source map: ${JSON.stringify(r)}`);this._decodedMemo=ui(),this._bySources=void 0,this._bySourceMemos=void 0}};function gi(e){return e}function _i(e){var t;return(t=gi(e))._decoded||(t._decoded=Ar(gi(e)._encoded))}function vi(e,t){let{line:n,column:r,bias:i}=t;if(n--,n<0)throw Error(pi);if(r<0)throw Error(mi);let a=_i(e);if(n>=a.length)return yi(null,null,null,null);let o=a[n],s=bi(o,gi(e)._decodedMemo,n,r,i||1);if(s===-1)return yi(null,null,null,null);let c=o[s];if(c.length===1)return yi(null,null,null,null);let{names:l,resolvedSources:u}=e;return yi(u[c[Zr]],c[Qr]+1,c[$r],c.length===5?l[c[ei]]:null)}function yi(e,t,n,r){return{source:e,line:t,column:n,name:r}}function bi(e,t,n,r,i){let a=di(e,r,t,n);return oi?a=(i===-1?ci:li)(e,r,a):i===-1&&a++,a===-1||a===e.length?-1:a}function xi(e){return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===43||e===47||e===61}function Si(e){let t=0;for(;t<e.length;){let n=e.indexOf(`//# sourceMappingURL=data:application/json`,t);if(n===-1)return;let r=e.indexOf(`;base64,`,n+42);if(r===-1){t=n+42;continue}let i=e.indexOf(`,`,n);if(i!==-1&&i<r){t=r+8;continue}let a=r+8,o=a;for(;o<e.length&&xi(e.charCodeAt(o));)o++;if(o>a)return e.slice(a,o);t=o}}const Ci=new Map;function wi(e){let t=Ci.get(e);if(t!==void 0)return Ci.delete(e),Ci.set(e,t),t;let n=null,r=Si(e);if(r)try{let e=Buffer.from(r,`base64`).toString(`utf-8`);n=new hi(JSON.parse(e))}catch{n=null}for(Ci.set(e,n);Ci.size>8;){let e=Ci.keys().next().value;if(e===void 0)break;Ci.delete(e)}return n}function Ti(e,t,n){if(!e.includes(t))return e;let r=wi(n);if(!r)return e;try{return e.split(`
|
|
2
|
-
`).map(e=>{let n=e.match(/^\s*at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);if(!n)return e;let[,i,a,o,s]=n;if(!a.includes(t))return e;let c=parseInt(o,10),l=parseInt(s,10),u=
|
|
3
|
-
`)}catch{return e}}const Ei=4096;function Di(e){if(e===null)return!0;let t=typeof e;return t===`object`||t===`function`?!1:t===`string`?e.length<=Ei:t===`bigint`?e.toString().length<=Ei:!0}function Oi(){return new Map}async function ki(e,t,n){if(!e||t===void 0)return n();if(e.has(t))return e.get(t);let r=await n();return Di(r)&&e.set(t,r),r}function Ai(e,t,n){let r=(2<<31-Math.clz32(e.length-1|1))-1,i=Math.ceil(1.6*r*t/e.length);return(a=t)=>{if(!a)return``;let o=``;for(;;){let t=n(i),s=i;for(;s--;)if(o+=e[t[s]&r]||``,o.length>=a)return o}}}function ji(e){return function(t,n){let r=function(...r){let{promise:i,resolve:o,reject:s}=a(),c=`step_${e.generateUlid()}`,l={type:`step`,correlationId:c,stepName:t,args:r};this!==void 0&&this!==null&&this!==globalThis&&(l.thisVal=this);let u=n?.();return u&&(l.closureVars=u),e.invocationsQueue.set(c,l),W.debug(`Step consumer setup`,{correlationId:c,stepName:t,args:r}),e.eventsConsumer.subscribe(n=>{if(!n)return Gt(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),U.NotConsumed;if(W.debug(`Step consumer event processing`,{correlationId:c,stepName:t,args:r.join(`, `),incomingCorrelationId:n.correlationId,isMatch:c===n.correlationId,eventType:n.eventType}),n.correlationId!==c)return U.NotConsumed;let i=`eventData`in n&&n.eventData&&`stepName`in n.eventData?n.eventData.stepName:void 0;if(typeof i==`string`&&i!==t)return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new w(`Replay divergence: step event ${n.eventType} for ${c} belongs to "${i}", but the current step consumer is "${t}"`,{eventId:n.eventId}))}),U.Finished;if(n.eventType===`step_created`){let r=e.invocationsQueue.get(c);return!r||r.type!==`step`?(e.promiseQueue=e.promiseQueue.then(()=>{s(new w(`Replay divergence: step ${c} (${t}) created but not found in invocation queue`,{eventId:n.eventId}))}),U.Finished):(r.hasCreatedEvent=!0,U.Consumed)}if(n.eventType===`step_started`){let t=e.invocationsQueue.get(c);return t&&t.type===`step`&&(t.ownerMessageId=`eventData`in n&&n.eventData&&`ownerMessageId`in n.eventData&&typeof n.eventData.ownerMessageId==`string`?n.eventData.ownerMessageId:void 0,t.lastStartedAt=+n.createdAt),U.Consumed}if(n.eventType===`step_retrying`){let t=e.invocationsQueue.get(c);return t&&t.type===`step`&&(t.sawRetrying=!0,t.ownerMessageId=void 0),U.Consumed}if(n.eventType===`step_failed`)return e.invocationsQueue.delete(n.correlationId),e.promiseQueue=e.promiseQueue.then(async()=>{try{s(await pe(n.eventData.error,e.runId,e.encryptionKey,e.globalThis))}catch(e){W.error(`Failed to hydrate step_failed error`,{correlationId:n.correlationId,error:e instanceof Error?e.message:String(e)}),s(new v(`Failed to hydrate step error: ${e instanceof Error?e.message:String(e)}`))}}),U.Finished;if(n.eventType===`step_completed`){e.invocationsQueue.delete(n.correlationId);let t=n.eventId,r=n.eventData.result;return e.pendingDeliveries++,e.promiseQueue=e.promiseQueue.then(async()=>{try{o(await ki(e.stepHydrationCache,t,()=>$e(r,e.runId,e.encryptionKey,e.globalThis)))}catch(e){s(e)}finally{e.pendingDeliveries--}}),U.Finished}return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new w(`Replay divergence: Unexpected event type for step ${c} (name: ${t}) "${n.eventType}"`,{eventId:n.eventId}))}),U.Finished}),i},i=t.split(`//`).pop();return Object.defineProperty(r,"name",{value:i}),Object.defineProperty(r,"stepId",{value:t,writable:!1,enumerable:!1,configurable:!1}),n&&Object.defineProperty(r,"__closureVarsFn",{value:n,writable:!1,enumerable:!1,configurable:!1}),Object.defineProperty(r,"bind",{value:function(e,...r){let i=Function.prototype.bind.call(this,e,...r);return Object.defineProperty(i,"stepId",{value:t,writable:!1,enumerable:!1,configurable:!1}),n&&Object.defineProperty(i,"__closureVarsFn",{value:n,writable:!1,enumerable:!1,configurable:!1}),Object.defineProperty(i,"__boundThis",{value:e,writable:!1,enumerable:!1,configurable:!1}),r.length>0&&Object.defineProperty(i,"__boundArgs",{value:r,writable:!1,enumerable:!1,configurable:!1}),i},writable:!1,enumerable:!1,configurable:!1}),r}}var Mi=r(((e,t)=>{(function(e,t,n){function r(e){var t=this,n=o();t.next=function(){var e=2091639*t.s0+t.c*23283064365386963e-26;return t.s0=t.s1,t.s1=t.s2,t.s2=e-(t.c=e|0)},t.c=1,t.s0=n(` `),t.s1=n(` `),t.s2=n(` `),t.s0-=n(e),t.s0<0&&(t.s0+=1),t.s1-=n(e),t.s1<0&&(t.s1+=1),t.s2-=n(e),t.s2<0&&(t.s2+=1),n=null}function i(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function a(e,t){var n=new r(e),a=t&&t.state,o=n.next;return o.int32=function(){return n.next()*4294967296|0},o.double=function(){return o()+(o()*2097152|0)*11102230246251565e-32},o.quick=o,a&&(typeof a==`object`&&i(a,n),o.state=function(){return i(n,{})}),o}function o(){var e=4022871197;return function(t){t=String(t);for(var n=0;n<t.length;n++){e+=t.charCodeAt(n);var r=.02519603282416938*e;e=r>>>0,r-=e,r*=e,e=r>>>0,r-=e,e+=r*4294967296}return(e>>>0)*23283064365386963e-26}}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.alea=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Ni=r(((e,t)=>{(function(e,t,n){function r(e){var t=this,n=``;t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(e|0)?t.x=e:n+=e;for(var r=0;r<n.length+64;r++)t.x^=n.charCodeAt(r)|0,t.next()}function i(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}function a(e,t){var n=new r(e),a=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},o.int32=n.next,o.quick=o,a&&(typeof a==`object`&&i(a,n),o.state=function(){return i(n,{})}),o}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.xor128=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Pi=r(((e,t)=>{(function(e,t,n){function r(e){var t=this,n=``;t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^(e^e<<1))|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(e|0)?t.x=e:n+=e;for(var r=0;r<n.length+64;r++)t.x^=n.charCodeAt(r)|0,r==n.length&&(t.d=t.x<<10^t.x>>>4),t.next()}function i(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function a(e,t){var n=new r(e),a=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},o.int32=n.next,o.quick=o,a&&(typeof a==`object`&&i(a,n),o.state=function(){return i(n,{})}),o}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.xorwow=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Fi=r(((e,t)=>{(function(e,t,n){function r(e){var t=this;t.next=function(){var e=t.x,n=t.i,r=e[n],i;return r^=r>>>7,i=r^r<<24,r=e[n+1&7],i^=r^r>>>10,r=e[n+3&7],i^=r^r>>>3,r=e[n+4&7],i^=r^r<<7,r=e[n+7&7],r^=r<<13,i^=r^r<<9,e[n]=i,t.i=n+1&7,i};function n(e,t){var n,r=[];if(t===(t|0))r[0]=t;else for(t=``+t,n=0;n<t.length;++n)r[n&7]=r[n&7]<<15^t.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&r[n]===0;++n);for(n==8?r[7]=-1:r[n],e.x=r,e.i=0,n=256;n>0;--n)e.next()}n(t,e)}function i(e,t){return t.x=e.x.slice(),t.i=e.i,t}function a(e,t){e??=+new Date;var n=new r(e),a=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},o.int32=n.next,o.quick=o,a&&(a.x&&i(a,n),o.state=function(){return i(n,{})}),o}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.xorshift7=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Ii=r(((e,t)=>{(function(e,t,n){function r(e){var t=this;t.next=function(){var e=t.w,n=t.X,r=t.i,i,a;return t.w=e=e+1640531527|0,a=n[r+34&127],i=n[r=r+1&127],a^=a<<13,i^=i<<17,a^=a>>>15,i^=i>>>12,a=n[r]=a^i,t.i=r,a+(e^e>>>16)|0};function n(e,t){var n,r,i,a,o,s=[],c=128;for(t===(t|0)?(r=t,t=null):(t+=`\0`,r=0,c=Math.max(c,t.length)),i=0,a=-32;a<c;++a)t&&(r^=t.charCodeAt((a+32)%t.length)),a===0&&(o=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,a>=0&&(o=o+1640531527|0,n=s[a&127]^=r+o,i=n==0?i+1:0);for(i>=128&&(s[(t&&t.length||0)&127]=-1),i=127,a=512;a>0;--a)r=s[i+34&127],n=s[i=i+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[i]=r^n;e.w=o,e.X=s,e.i=i}n(t,e)}function i(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function a(e,t){e??=+new Date;var n=new r(e),a=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},o.int32=n.next,o.quick=o,a&&(a.X&&i(a,n),o.state=function(){return i(n,{})}),o}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.xor4096=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Li=r(((e,t)=>{(function(e,t,n){function r(e){var t=this,n=``;t.next=function(){var e=t.b,n=t.c,r=t.d,i=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^i,i=i-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^i,t.a=i-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=e|0):n+=e;for(var r=0;r<n.length+20;r++)t.b^=n.charCodeAt(r)|0,t.next()}function i(e,t){return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t}function a(e,t){var n=new r(e),a=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},o.int32=n.next,o.quick=o,a&&(typeof a==`object`&&i(a,n),o.state=function(){return i(n,{})}),o}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.tychei=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Ri=r(((e,n)=>{(function(e,r,i){var a=256,o=6,s=52,c=`random`,l=i.pow(a,o),u=i.pow(2,s),d=u*2,f=a-1,p;function m(e,t,n){var s=[];t=t==1?{entropy:!0}:t||{};var f=v(_(t.entropy?[e,b(r)]:e??y(),3),s),p=new h(s),m=function(){for(var e=p.g(o),t=l,n=0;e<u;)e=(e+n)*a,t*=a,n=p.g(1);for(;e>=d;)e/=2,t/=2,n>>>=1;return(e+n)/t};return m.int32=function(){return p.g(4)|0},m.quick=function(){return p.g(4)/4294967296},m.double=m,v(b(p.S),r),(t.pass||n||function(e,t,n,r){return r&&(r.S&&g(r,p),e.state=function(){return g(p,{})}),n?(i[c]=e,t):e})(m,f,`global`in t?t.global:this==i,t.state)}function h(e){var t,n=e.length,r=this,i=0,o=r.i=r.j=0,s=r.S=[];for(n||(e=[n++]);i<a;)s[i]=i++;for(i=0;i<a;i++)s[i]=s[o=f&o+e[i%n]+(t=s[i])],s[o]=t;(r.g=function(e){for(var t,n=0,i=r.i,o=r.j,s=r.S;e--;)t=s[i=f&i+1],n=n*a+s[f&(s[i]=s[o=f&o+t])+(s[o]=t)];return r.i=i,r.j=o,n})(a)}function g(e,t){return t.i=e.i,t.j=e.j,t.S=e.S.slice(),t}function _(e,t){var n=[],r=typeof e,i;if(t&&r==`object`)for(i in e)try{n.push(_(e[i],t-1))}catch{}return n.length?n:r==`string`?e:e+`\0`}function v(e,t){for(var n=e+``,r,i=0;i<n.length;)t[f&i]=f&(r^=t[f&i]*19)+n.charCodeAt(i++);return b(t)}function y(){try{var t;return p&&(t=p.randomBytes)?t=t(a):(t=new Uint8Array(a),(e.crypto||e.msCrypto).getRandomValues(t)),b(t)}catch{var n=e.navigator,i=n&&n.plugins;return[+new Date,e,i,e.screen,b(r)]}}function b(e){return String.fromCharCode.apply(0,e)}if(v(i.random(),r),typeof n==`object`&&n.exports){n.exports=m;try{p=t(`crypto`)}catch{}}else typeof define==`function`&&define.amd?define(function(){return m}):i[`seed`+c]=m})(typeof self<`u`?self:e,[],Math)})),zi=e(r(((e,t)=>{var n=Mi(),r=Ni(),i=Pi(),a=Fi(),o=Ii(),s=Li(),c=Ri();c.alea=n,c.xor128=r,c.xorwow=i,c.xorshift7=a,c.xor4096=o,c.tychei=s,t.exports=c}))(),1);const Bi=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,Vi=new Uint8Array(128).fill(255);for(let e=0;e<64;e++)Vi[Bi.charCodeAt(e)]=e;function Hi(e){return e===9||e===10||e===12||e===13||e===32}function Ui(e,t){for(;t<e.length&&Hi(e.charCodeAt(t));)t++;return t}function Wi(e,t){let n=e.length,r=e;n===2?r=e+`AA`:n===3&&(r=e+`A`);let i=Vi[r.charCodeAt(0)],a=Vi[r.charCodeAt(1)],o=Vi[r.charCodeAt(2)],s=Vi[r.charCodeAt(3)],c=i<<2|a>>4,l=(a&15)<<4|o>>2,u=(o&3)<<6|s;if(n===2){if(t&&l!==0)throw SyntaxError(`Extra bits in base64 chunk`);return[c]}if(n===3){if(t&&u!==0)throw SyntaxError(`Extra bits in base64 chunk`);return[c,l]}return[c,l,u]}function Gi(e,t,n,r){if(r===void 0&&(r=2**53-1),r===0)return{read:0,bytes:[],error:null};let i=0,a=[],o=``,s=0,c=0,l=e.length;for(;;){if(c=Ui(e,c),c===l){if(s>0){if(n===`stop-before-partial`)return{read:i,bytes:a,error:null};if(n===`loose`){if(s===1)return{read:i,bytes:a,error:SyntaxError(`Invalid base64: lone character in final chunk`)};a.push(...Wi(o,!1))}else return{read:i,bytes:a,error:SyntaxError(`Invalid base64: incomplete chunk in strict mode`)}}return{read:l,bytes:a,error:null}}let u=e[c];if(c++,u===`=`){if(s<2)return{read:i,bytes:a,error:SyntaxError(`Invalid base64: padding in unexpected place`)};if(c=Ui(e,c),s===2){if(c===l)return n===`stop-before-partial`?{read:i,bytes:a,error:null}:{read:i,bytes:a,error:SyntaxError(`Invalid base64: missing second padding character`)};u=e[c],u===`=`&&(c=Ui(e,c+1))}if(c<l)return{read:i,bytes:a,error:SyntaxError(`Invalid base64: unexpected characters after padding`)};let t=n===`strict`;try{a.push(...Wi(o,t))}catch(e){return{read:i,bytes:a,error:e}}return{read:l,bytes:a,error:null}}if(t===`base64url`){if(u===`+`||u===`/`)return{read:i,bytes:a,error:SyntaxError(`Invalid base64url: unexpected character '${u}'`)};u===`-`?u=`+`:u===`_`&&(u=`/`)}let d=u.charCodeAt(0);if(d>=128||Vi[d]===255)return{read:i,bytes:a,error:SyntaxError(`Invalid base64: unexpected character '${e[c-1]}'`)};let f=r-a.length;if(f===1&&s===2||f===2&&s===3||(o+=u,s=o.length,s===4&&(a.push(...Wi(o)),o=``,s=0,i=c,a.length===r)))return{read:i,bytes:a,error:null}}}function Ki(e,t){t===void 0&&(t=2**53-1);let n=e.length,r=[],i=0;if(n%2!=0)return{read:0,bytes:[],error:SyntaxError(`Invalid hex: string length must be even`)};for(;i<n&&r.length<t;){let t=e.substring(i,i+2);if(!/^[0-9a-fA-F]{2}$/.test(t))return{read:i,bytes:r,error:SyntaxError(`Invalid hex: unexpected character at position ${i}`)};i+=2,r.push(Number.parseInt(t,16))}return{read:i,bytes:r,error:null}}function qi(e,t){let n=t?.alphabet??`base64`;if(n!==`base64`&&n!==`base64url`)throw TypeError(`Invalid alphabet: expected "base64" or "base64url", got "${n}"`);let r=!!t?.omitPadding,i=``,a=e.length;for(let t=0;t<a;t+=3){let n=e[t],o=t+1<a?e[t+1]:0,s=t+2<a?e[t+2]:0;i+=Bi[n>>2&63],i+=Bi[(n&3)<<4|o>>4&15],t+1<a?i+=Bi[(o&15)<<2|s>>6&3]:r||(i+=`=`),t+2<a?i+=Bi[s&63]:r||(i+=`=`)}return n===`base64url`&&(i=i.replace(/\+/g,`-`).replace(/\//g,`_`)),i}function Ji(e){let t=``;for(let n=0;n<e.length;n++)t+=e[n].toString(16).padStart(2,`0`);return t}function Yi(e){let t=e.prototype,n=e;t.toBase64||Object.defineProperty(t,"toBase64",{value:function(t){if(!(this instanceof e))throw TypeError(`this is not a Uint8Array`);return qi(this,t)},writable:!0,enumerable:!1,configurable:!0}),t.toHex||Object.defineProperty(t,"toHex",{value:function(){if(!(this instanceof e))throw TypeError(`this is not a Uint8Array`);return Ji(this)},writable:!0,enumerable:!1,configurable:!0}),t.setFromBase64||Object.defineProperty(t,"setFromBase64",{value:function(t,n){if(!(this instanceof e))throw TypeError(`this is not a Uint8Array`);if(typeof t!=`string`)throw TypeError(`expected a string`);let r=n?.alphabet??`base64`;if(r!==`base64`&&r!==`base64url`)throw TypeError(`Invalid alphabet: expected "base64" or "base64url", got "${r}"`);let i=n?.lastChunkHandling??`loose`;if(i!==`loose`&&i!==`strict`&&i!==`stop-before-partial`)throw TypeError(`Invalid lastChunkHandling: expected "loose", "strict", or "stop-before-partial", got "${i}"`);let a=Gi(t,r,i,this.length),o=a.bytes,s=o.length;for(let e=0;e<s;e++)this[e]=o[e];if(a.error)throw a.error;return{read:a.read,written:s}},writable:!0,enumerable:!1,configurable:!0}),t.setFromHex||Object.defineProperty(t,"setFromHex",{value:function(t){if(!(this instanceof e))throw TypeError(`this is not a Uint8Array`);if(typeof t!=`string`)throw TypeError(`expected a string`);let n=Ki(t,this.length),r=n.bytes,i=r.length;for(let e=0;e<i;e++)this[e]=r[e];if(n.error)throw n.error;return{read:n.read,written:i}},writable:!0,enumerable:!1,configurable:!0}),n.fromBase64||Object.defineProperty(e,"fromBase64",{value:function(t,n){if(typeof t!=`string`)throw TypeError(`expected a string`);let r=n?.alphabet??`base64`;if(r!==`base64`&&r!==`base64url`)throw TypeError(`Invalid alphabet: expected "base64" or "base64url", got "${r}"`);let i=n?.lastChunkHandling??`loose`;if(i!==`loose`&&i!==`strict`&&i!==`stop-before-partial`)throw TypeError(`Invalid lastChunkHandling: expected "loose", "strict", or "stop-before-partial", got "${i}"`);let a=Gi(t,r,i);if(a.error)throw a.error;return new e(a.bytes)},writable:!0,enumerable:!1,configurable:!0}),n.fromHex||Object.defineProperty(e,"fromHex",{value:function(t){if(typeof t!=`string`)throw TypeError(`expected a string`);let n=Ki(t);if(n.error)throw n.error;return new e(n.bytes)},writable:!0,enumerable:!1,configurable:!0})}function Xi(e){return function(){let t=`0123456789abcdef`,n=``;for(let r=0;r<36;r++)r===8||r===13||r===18||r===23?n+=`-`:r===14?n+=`4`:r===19?n+=t[Math.floor(e()*4)+8]:n+=t[Math.floor(e()*16)];return n}}function Zi(e){let{fixedTimestamp:t}=e,{seed:n}=e,r=(0,zi.default)(n),i=fn(),a=pn(`globalThis`,i);a.Math.random=r;let o=a.Date;a.Date=function(...e){return e.length===0?new o(t):new o(...e)},a.Date.prototype=o.prototype,Object.setPrototypeOf(a.Date,o),a.Date.now=()=>t;let s=globalThis.crypto,c=s.subtle;function l(e){for(let t=0;t<e.length;t++)e[t]=Math.floor(r()*256);return e}let u=Xi(r),d=c.digest.bind(c);return a.crypto=new Proxy(s,{get(e,t){return t===`getRandomValues`?l:t===`randomUUID`?u:t===`subtle`?new Proxy(c,{get(e,t){return t===`generateKey`?()=>{throw new E("`crypto.subtle.generateKey()` is not available inside a workflow function. Move key generation to a step function where full Node.js crypto is available.")}:t===`digest`?d:e[t]}}):e[t]}}),a.process={env:Object.freeze({...process.env})},a.DOMException=globalThis.DOMException,a.Headers=globalThis.Headers,a.TextEncoder=globalThis.TextEncoder,a.TextDecoder=globalThis.TextDecoder,a.console=globalThis.console,a.URL=globalThis.URL,a.URLSearchParams=globalThis.URLSearchParams,a.structuredClone=globalThis.structuredClone,a.atob=globalThis.atob,a.btoa=globalThis.btoa,Yi(a.Uint8Array),a.Symbol.dispose??=Symbol.for(`Symbol.dispose`),a.Symbol.asyncDispose??=Symbol.for(`Symbol.asyncDispose`),a.exports={},a.module={exports:a.exports},{context:i,globalThis:a,updateTimestamp:e=>{t=e}}}const Qi=new Map;function $i(e){let t=Qi.get(e);if(t!==void 0)return Qi.delete(e),Qi.set(e,t),t}function ea(e,t){let n=$i(e);if(n===void 0)for(n=new Map,Qi.set(e,n);Qi.size>8;){let e=Qi.keys().next().value;if(e===void 0)break;Qi.delete(e)}let r=n.get(t);return r===void 0&&(r=new dn(e,{filename:t}),n.set(t,r)),r}function ta(e,t,n){return ea(e,t).runInContext(n)}function na(e){return async function(t,n={}){let{promise:r,resolve:i}=a(),o=`attr_${e.generateUlid()}`,s={type:`attribute`,correlationId:o,changes:t,...n.allowReservedAttributes===!0?{allowReservedAttributes:!0}:{}};return e.invocationsQueue.set(o,s),e.eventsConsumer.subscribe(r=>r?r.correlationId===o?r.eventType!==`attr_set`||r.eventData.writer.type!==`workflow`||JSON.stringify(r.eventData.changes)!==JSON.stringify(t)||r.eventData.allowReservedAttributes===!0!=(n.allowReservedAttributes===!0)?(e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new w(`Replay divergence: Unexpected attribute event for ${o}`,{eventId:r.eventId}))}),U.Finished):(e.invocationsQueue.delete(o),e.promiseQueue=e.promiseQueue.then(()=>{i()}),U.Finished):U.NotConsumed:(Gt(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),U.NotConsumed)),r}}function ra(e,t){if(typeof t!=`string`)return null;let n=rt(gt,e.globalThis),r=n?.[Ot];return typeof r==`function`?r.call(n,{runId:t}):null}function ia(e){return function(t={}){if(t.token===``)throw Error("`createHook()` was called with an empty string token. Pass a non-empty token, or omit the `token` option to use a randomly generated one.");let n=`hook_${e.generateUlid()}`,r=t.token??e.generateNanoid(),i=t.isWebhook??!1;e.invocationsQueue.set(n,{type:`hook`,correlationId:n,token:r,metadata:t.metadata,isWebhook:i});let o=[],s=[],c=[],l=!1,u=!1,d=!1,f=!1,p=null,h=null;z.debug(`Hook consumer setup`,{correlationId:n,token:r}),e.eventsConsumer.subscribe(t=>{if(!t)return l=!0,(s.length>0&&o.length===0||c.length>0&&!u&&!f)&&Gt(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),U.NotConsumed;if(t.correlationId!==n)return U.NotConsumed;let i=`eventData`in t&&t.eventData&&`token`in t.eventData?t.eventData.token:void 0;if(typeof i==`string`&&i!==r)return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new w(`Replay divergence: hook event ${t.eventType} for ${n} belongs to token "${i}", but the current hook consumer expects "${r}"`,{eventId:t.eventId}))}),U.Finished;if(t.eventType===`hook_created`){let t=e.invocationsQueue.get(n);t&&t.type===`hook`&&(t.hasCreatedEvent=!0),u=!0;let r=c.slice();return c.length=0,e.promiseQueue=e.promiseQueue.then(()=>{for(let e of r)e.resolve(null)}),U.Consumed}if(t.eventType===`hook_conflict`){e.invocationsQueue.delete(n);let r=t,i=new m(r.eventData.token,r.eventData.conflictingRunId);f=!0,p=i,h=ra(e,r.eventData.conflictingRunId);let a=s.slice();s.length=0;let o=c.slice();return c.length=0,e.promiseQueue=e.promiseQueue.then(()=>{for(let e of a)e.reject(i);for(let e of o)h?e.resolve(h):e.reject(i)}),U.Consumed}if(t.eventType===`hook_received`){let n=e.eventsConsumer.eventIndex,r=Wt(e,n,`hook`);if(s.length>0){let i=s.shift();if(i){e.pendingDeliveries++;let a;e.promiseQueue=e.promiseQueue.then(async()=>{try{a={ok:!0,value:await $e(t.eventData.payload,e.runId,e.encryptionKey,e.globalThis)}}catch(e){a={ok:!1,error:e}}finally{e.pendingDeliveries--}Ht(e,n,[`wait`]).then(()=>{r.markDelivered(),a.ok?i.resolve(a.value):i.reject(a.error)})})}}else{let i,s=a();e.pendingDeliveries++,e.promiseQueue=e.promiseQueue.then(async()=>{try{i={ok:!0,value:await $e(t.eventData.payload,e.runId,e.encryptionKey,e.globalThis)}}catch(e){i={ok:!1,error:e}}finally{e.pendingDeliveries--,s.resolve()}}),o.push({claim:()=>s.promise.then(()=>Ht(e,n,[`wait`])).then(()=>{if(r.markDelivered(),i&&!i.ok)throw i.error;return i.value})})}return U.Consumed}return t.eventType===`hook_disposed`?(e.invocationsQueue.delete(n),d=!0,U.Finished):(e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new w(`Replay divergence: Unexpected event type for hook ${n} (token: ${r}) "${t.eventType}"`,{eventId:t.eventId}))}),U.Finished)});let g=!1;function _(){let t=a();if(f&&p)return e.promiseQueue=e.promiseQueue.then(()=>{t.reject(p)}),t.promise;if(o.length>0){let e=o.shift();if(e)return e.claim()}return l&&Gt(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),s.push(t),t.promise}function v(){let t=a();if(u)return e.promiseQueue=e.promiseQueue.then(()=>{t.resolve(null)}),t.promise;if(f)return e.promiseQueue=e.promiseQueue.then(()=>{h?t.resolve(h):t.reject(p)}),t.promise;let r=e.invocationsQueue.get(n);return r&&r.type===`hook`&&(r.hasConflictAwaiter=!0),l&&Gt(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),c.push(t),t.promise}function y(){if(g||(g=!0,d))return;let t=e.invocationsQueue.get(n);t&&t.type===`hook`&&(t.disposed=!0),s.length>0&&(s.length=0,Gt(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))})),z.debug(`Hook disposed`,{correlationId:n,token:r})}let b={token:r,getConflict(){return v()},then(e,t){return _().then(e,t)},async*[Symbol.asyncIterator](){for(;!g;)yield await this},dispose:y,[Symbol.dispose]:y},x=e.globalThis.Symbol.dispose;return x&&x!==Symbol.dispose&&(b[x]=y),b}}function aa(e){return async function(t){let{promise:n,resolve:r}=a(),i=`wait_${e.generateUlid()}`,o=u(t),s={type:`wait`,correlationId:i,resumeAt:o};return e.invocationsQueue.set(i,s),e.eventsConsumer.subscribe(t=>{if(!t)return Gt(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),U.NotConsumed;if(t.correlationId!==i)return U.NotConsumed;if(t.eventType===`wait_created`){let n=e.invocationsQueue.get(i);return n&&n.type===`wait`&&(n.hasCreatedEvent=!0,n.resumeAt=t.eventData.resumeAt),U.Consumed}if(t.eventType===`wait_completed`){let n=t.eventData?.resumeAt;if(n!==void 0){let r=e.invocationsQueue.get(i),a=r&&r.type===`wait`?r.resumeAt:o,s=new Date(n),c=s.getTime(),l=a.getTime(),u=Number.isFinite(c)?s.toISOString():String(n);if(c!==l)return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new w(`Replay divergence: wait_completed event for ${i} has resumeAt "${u}", but the current wait consumer expects "${a.toISOString()}"`,{eventId:t.eventId}))}),U.Finished}e.invocationsQueue.delete(i);let a=e.eventsConsumer.eventIndex,s=Wt(e,a,`wait`);return e.promiseQueue.then(()=>Ht(e,a,[`hook`])).then(()=>{s.markDelivered(),r()}),U.Finished}return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new w(`Replay divergence: Unexpected event type for wait ${i} "${t.eventType}"`,{eventId:t.eventId}))}),U.Finished}),n}}async function oa(e,t,n,r,i,a){if(t.size!==0){for(let e of t.values())e.type===`hook`&&e.isSystem&&!e.disposed&&!e.abortRequested&&(e.disposed=!0);try{let e=await Un();await vr({suspension:new J(t,n),world:e,run:r,runReadyBarrier:a})}catch(t){j.warn(`Failed to drain pending queue items for ${i} workflow run`,{workflowRunId:e,message:t instanceof Error?t.message:String(t)})}}}async function sa(e,t,n,r,i,o){return G(`workflow.run ${t.workflowName}`,async s=>{s?.setAttributes({...Oe(t.workflowName),...je(t.runId),...K(t.status),...Pt(n.length)});let c=t.startedAt;if(!c)throw new E(`Workflow run "${t.runId}" has no "startedAt" timestamp (should not happen)`);let u=Jn(t.runId)??+t.createdAt,f=l(process.env.VERCEL_URL===void 0?`http://localhost:${await ar()??3e3}`:`https://${process.env.VERCEL_URL}`),{context:p,globalThis:m,updateTimestamp:h}=Zi({seed:`${t.runId}:${t.workflowName}:${t.deploymentId}`,fixedTimestamp:u}),g=a(),_=Bt(()=>m.Math.random()),v=Ai(`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,21,e=>new Uint8Array(e).map(()=>256*m.Math.random())),y={current:Promise.resolve()},b=new L(n,{onConsumedEvent:e=>{h(+e.createdAt)},onUnconsumedEvent:e=>{g.reject(new w(`Replay could not consume event: eventType=${e.eventType}, correlationId=${e.correlationId}, eventId=${e.eventId}.`,{eventId:e.eventId}))},getPromiseQueue:()=>y.current}),S={runId:t.runId,encryptionKey:r,globalThis:m,onWorkflowError:g.reject,eventsConsumer:b,generateUlid:()=>_(u),generateNanoid:v,invocationsQueue:new Map,get promiseQueue(){return y.current},set promiseQueue(e){y.current=e},pendingDeliveries:0,pendingDeliveryBarriers:new Map,stepHydrationCache:i};S.eventsConsumer.subscribe(e=>e&&(e.eventType===`run_created`||e.eventType===`run_started`||e.eventType===`attr_set`&&e.eventData.writer.type===`step`)?U.Consumed:U.NotConsumed);let C=ji(S),T=ia(S),O=aa(S),A=na(S);m[Re]=C,m[wt]=A,m[Je]=T,m[jt]=O,m[Fe]=e=>be(t.runId,e),m[ge]={workflowName:t.workflowName,workflowRunId:t.runId,workflowStartedAt:new m.Date(+c),url:f,features:{encryption:!!r}},m[Ve]=_,m.fetch=()=>{throw new m.Error(`Global "fetch" is unavailable in workflow functions. Use the "fetch" step function from "workflow" to make HTTP requests.\n\nLearn more: https://workflow-sdk.dev/err/${x.FETCH_IN_WORKFLOW_FUNCTION}`)};let j=`Timeout functions like "setTimeout" and "setInterval" are not supported in workflow functions. Use the "sleep" function from "workflow" for time-based delays.`;m.setTimeout=()=>{throw new E(j,{slug:x.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},m.setInterval=()=>{throw new E(j,{slug:x.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},m.clearTimeout=()=>{throw new E(j,{slug:x.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},m.clearInterval=()=>{throw new E(j,{slug:x.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},m.setImmediate=()=>{throw new E(j,{slug:x.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},m.clearImmediate=()=>{throw new E(j,{slug:x.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},m.AbortController=de(S);let M=le();m.AbortSignal={abort:M.abort,any:M.any,timeout:M.timeout};class N{cache;credentials;destination;headers;integrity;method;mode;redirect;referrer;referrerPolicy;url;keepalive;signal;duplex;body;constructor(e,t){if(typeof e==`string`||e instanceof m.URL){let t=String(e);try{new m.URL(t),this.url=t}catch(e){throw TypeError(`Failed to parse URL from ${t}`,{cause:e})}}else{if(this.url=e.url,!t){this.method=e.method,this.headers=new m.Headers(e.headers),this.body=e.body,this.mode=e.mode,this.credentials=e.credentials,this.cache=e.cache,this.redirect=e.redirect,this.referrer=e.referrer,this.referrerPolicy=e.referrerPolicy,this.integrity=e.integrity,this.keepalive=e.keepalive,this.signal=e.signal,this.duplex=e.duplex,this.destination=e.destination;return}this.method=e.method,this.headers=new m.Headers(e.headers),this.body=e.body,this.mode=e.mode,this.credentials=e.credentials,this.cache=e.cache,this.redirect=e.redirect,this.referrer=e.referrer,this.referrerPolicy=e.referrerPolicy,this.integrity=e.integrity,this.keepalive=e.keepalive,this.signal=e.signal,this.duplex=e.duplex,this.destination=e.destination}t?.method?this.method=t.method.toUpperCase():typeof this.method!=`string`&&(this.method=`GET`),t?.headers?this.headers=new m.Headers(t.headers):(typeof e==`string`||e instanceof m.URL)&&(this.headers=new m.Headers),t?.mode===void 0?typeof this.mode!=`string`&&(this.mode=`cors`):this.mode=t.mode,t?.credentials===void 0?typeof this.credentials!=`string`&&(this.credentials=`same-origin`):this.credentials=t.credentials,t?.cache===void 0?typeof this.cache!=`string`&&(this.cache=`default`):this.cache=t.cache,t?.redirect===void 0?typeof this.redirect!=`string`&&(this.redirect=`follow`):this.redirect=t.redirect,t?.referrer===void 0?typeof this.referrer!=`string`&&(this.referrer=`about:client`):this.referrer=t.referrer,t?.referrerPolicy===void 0?typeof this.referrerPolicy!=`string`&&(this.referrerPolicy=``):this.referrerPolicy=t.referrerPolicy,t?.integrity===void 0?typeof this.integrity!=`string`&&(this.integrity=``):this.integrity=t.integrity,t?.keepalive===void 0?typeof this.keepalive!=`boolean`&&(this.keepalive=!1):this.keepalive=t.keepalive,t?.signal===void 0?this.signal||={aborted:!1}:this.signal=t.signal,this.duplex||=`half`,this.destination||=`document`;let n=t?.body;if(n!=null&&(this.method===`GET`||this.method===`HEAD`))throw TypeError(`Request with GET/HEAD method cannot have body.`);n==null?this.body=null:this.body=Object.create(m.ReadableStream.prototype,{[xt]:{value:n,writable:!1}})}clone(){Z()}get bodyUsed(){return!1}blob;formData;arrayBuffer;json;text;async bytes(){return new Uint8Array(await this.arrayBuffer())}}m.Request=N,Object.defineProperties(N.prototype,{arrayBuffer:{value:C(`__builtin_response_array_buffer`),writable:!0,configurable:!0},json:{value:C(`__builtin_response_json`),writable:!0,configurable:!0},text:{value:C(`__builtin_response_text`),writable:!0,configurable:!0}});class P{type;url;status;statusText;body;headers;redirected;constructor(e,t){if(this.status=t?.status??200,this.statusText=t?.statusText??``,this.headers=new m.Headers(t?.headers),this.type=`default`,this.url=``,this.redirected=!1,e!=null&&(this.status===204||this.status===205||this.status===304))throw TypeError(`Response constructor: Invalid response status code ${this.status}`);e==null?this.body=null:this.body=Object.create(m.ReadableStream.prototype,{[xt]:{value:e,writable:!1}})}clone;blob;formData;get ok(){return this.status>=200&&this.status<300}get bodyUsed(){return!1}arrayBuffer;json;text;async bytes(){return new Uint8Array(await this.arrayBuffer())}static json(e,t){let n=JSON.stringify(e),r=new m.Headers(t?.headers);return r.has(`content-type`)||r.set(`content-type`,`application/json`),new P(n,{...t,headers:r})}static error(){Z()}static redirect(e,t=302){if(![301,302,303,307,308].includes(t))throw RangeError(`Invalid redirect status code: ${t}. Must be one of: 301, 302, 303, 307, 308`);let n=new m.Headers;n.set(`Location`,String(e));let r=Object.create(P.prototype);return r.status=t,r.statusText=``,r.headers=n,r.body=null,r.type=`default`,r.url=``,r.redirected=!1,r}}m.Response=P,Object.defineProperties(P.prototype,{arrayBuffer:{value:C(`__builtin_response_array_buffer`),writable:!0,configurable:!0},json:{value:C(`__builtin_response_json`),writable:!0,configurable:!0},text:{value:C(`__builtin_response_text`),writable:!0,configurable:!0}});class F{constructor(){Z()}get locked(){return!1}cancel(){Z()}getReader(){Z()}pipeThrough(){Z()}pipeTo(){Z()}tee(){Z()}values(){Z()}static from(){Z()}[Symbol.asyncIterator](){Z()}}m.ReadableStream=F;class I{constructor(){Z()}get locked(){return!1}abort(){Z()}close(){Z()}getWriter(){Z()}}m.WritableStream=I;class ee{readable;writable;constructor(){Z()}}m.TransformStream=ee,m.console=globalThis.console;let R=Symbol.for(`@vercel/request-context`);m[R]=globalThis[R];let te=d(t.workflowName)?.moduleSpecifier||t.workflowName;ta(e,te,p);let z=ta(`globalThis.__private_workflows?.get(${JSON.stringify(t.workflowName)})`,te,p);if(typeof z!=`function`)throw new D(t.workflowName);let B=[];S.promiseQueue=S.promiseQueue.then(async()=>{B=await k(t.input,t.runId,r,m)}),await S.promiseQueue,s?.setAttributes({..._e(B.length)});try{let e=await Promise.race([z(...B),g.promise]),n=await Ce(e,t.runId,r,m,!1,(t.specVersion??0)>=5);return s?.setAttributes({...Ae(typeof e)}),await oa(t.runId,S.invocationsQueue,m,t,`completed`,o),n}catch(e){throw J.is(e)||w.is(e)||await oa(t.runId,S.invocationsQueue,m,t,`failed`,o),e}})}function ca(e){return E.is(e)?f.RUNTIME_ERROR:Qt(e)?f.WORLD_CONTRACT_ERROR:null}async function la({world:e,workflowRun:t,runId:n,requestId:r,err:i,errorCode:a,logMessage:o}){j.error(o,{workflowRunId:n,errorCode:a,error:i instanceof Error?i.message:String(i)});try{let o=nt(e,t??n);await e.events.create(n,{eventType:`run_failed`,specVersion:5,eventData:{error:await Pe(i,n,await o(),globalThis,(t?.specVersion??0)>=5),errorCode:a}},{requestId:r})}catch(e){if(C.is(e)||y.is(e))return;if(Qt(e)){j.error(`Fatal world contract error while recording workflow failure`,{workflowRunId:n,errorCode:f.WORLD_CONTRACT_ERROR,error:e instanceof Error?e.message:String(e)});return}throw e}}function ua(e,t){let n=e.find(e=>e.runId===t&&(e.eventType===`run_completed`||e.eventType===`run_failed`||e.eventType===`run_cancelled`));return n?(j.debug(`Run reached terminal event, exiting`,{workflowRunId:t,eventType:n.eventType,eventId:n.eventId}),!0):!1}function da(e){let t=new Set,n=new Set;for(let r of e)r.eventType===`hook_disposed`?t.add(r.correlationId):r.eventType===`wait_completed`&&n.add(r.correlationId);for(let r of e)if(r.eventType===`hook_created`&&!t.has(r.correlationId)||r.eventType===`wait_created`&&!n.has(r.correlationId))return!0;return!1}function fa(e,t){i(t?.basePath);let n=Number(process.env.WORKFLOW_V2_TIMEOUT_MS)||12e4,r=Vt(t?.namespace),a=Rt(`workflow`,r),s=t=>t.createQueueHandler(a,async(i,s)=>{let c=bt(i);if(c){await lt(c,`workflow`,t.specVersion);return}let{runId:l,traceCarrier:u,requestedAt:p,stepId:m,stepName:h,replayDivergence:g,runInput:_}=zt.parse(i),b=ft(u)?u:void 0,{requestId:x}=s,S=s.queueName.slice(a.length),D=j.forRun(l,S),O=_n();if(s.attempt>O){let e=gn(void 0,f.MAX_DELIVERIES_EXCEEDED);D.error(`Workflow handler exceeded max deliveries (${s.attempt}/${O})`,{attempt:s.attempt,errorCode:e.errorCode,errorAttribution:e.attribution});try{let e=await Un(),t=nt(e,l),n=new v(`Workflow exceeded maximum queue deliveries (${s.attempt}/${O})`);await e.events.create(l,{eventType:`run_failed`,specVersion:5,eventData:{error:await Pe(n,l,await t()),errorCode:f.MAX_DELIVERIES_EXCEEDED}},{requestId:x})}catch(e){if(C.is(e)||y.is(e))return;D.error(`Failed to mark run as failed after ${s.attempt} delivery attempts. A persistent error is preventing the run from being terminated. The run will remain in its current state until manually resolved. This is most likely due to a persistent outage of the workflow backend or a bug in the workflow runtime and should be reported to the Workflow team.`,{attempt:s.attempt,errorName:e instanceof Error?e.name:`UnknownError`,errorMessage:e instanceof Error?e.message:String(e),errorStack:e instanceof Error?e.stack:void 0})}return}let k=ie(),A=()=>ke(k,b),M=await Ee(k,b),N=new Kn,P=k===`continuous`?b:void 0,F=await R(`CONSUMER`);return await Ne(P,async()=>await ve({workflowRunId:l,workflowName:S},async()=>{let t=await G(`workflow.route.get_world`,async()=>Un());return G(`workflow.execute ${o(S)}`,{kind:F,links:M},async i=>{i?.setAttributes({...Oe(S),...B(`execute_v2`),...Ke(`vercel-queue`),...it(s.queueName),...St(s.messageId),...He(`process`),...Ze({requestedAt:p}),...je(l),...vt(!!b),...Ue(k)});let a=Date.now(),o=0,c=null,u=null,O=Oi(),M=null,P,F=-1,I,L,R,te=0,z,V=kn()&&_!==void 0&&s.attempt===1&&m===void 0&&!g;i?.setAttributes(st(V));let H,ie=async()=>{if(H)try{await H}catch{}},ae=new Set,oe=e=>{ae.size>0&&j.error(`Invariant violation: acking the workflow message while owned inline steps are still executing — crash recovery for these steps is broken`,{workflowRunId:l,ackPath:e,stepIds:[...ae]})},se=async e=>{if(oe(`reinvoke`),!V)return{timeoutSeconds:e};await X(t,q(S,r),{runId:l,traceCarrier:await A(),requestedAt:new Date},e>0?{delaySeconds:e}:void 0)};if(m&&h)try{let e=await t.runs.get(l);if(e.status!==`running`){j.debug(`Run already finished, skipping background step`,{workflowRunId:l,status:e.status});return}let n=e.startedAt?+e.startedAt:Date.now();N.pause();let i;try{i=await gr(l,m,()=>ur({world:t,workflowRunId:l,workflowDeploymentId:e.deploymentId,workflowName:S,workflowStartedAt:n,stepId:m,stepName:h,runSpecVersion:e.specVersion}))}finally{N.resume()}if(i.type===`retry`||i.type===`throttled`)return{timeoutSeconds:i.timeoutSeconds};if(i.type===`completed`&&i.hasPendingOps){await X(t,q(S,r),{runId:l,traceCarrier:await A(),requestedAt:new Date});return}if(i.type===`completed`||i.type===`failed`||i.type===`skipped`){let t=await Y(l);c=t.events,u=t.cursor;let r=new Set,i=new Set;for(let e of c)e.eventType===`step_created`?r.add(e.correlationId):(e.eventType===`step_completed`||e.eventType===`step_failed`)&&i.add(e.correlationId);let a=new Set;for(let e of r)i.has(e)||a.add(e);if(a.size>0)if(An()&&mr(c,a,s.messageId))j.debug(`Background step done; falling through to recover an inline step owned by this message`,{workflowRunId:l});else{j.debug(`Background step done but other steps pending, returning`,{workflowRunId:l});return}j.debug(`All parallel steps done, replaying inline after background step`,{workflowRunId:l}),P=e,F=n}else return}catch(e){let n=ca(e);if(!n)throw e;await la({world:t,workflowRun:P,runId:l,requestId:x,err:e,errorCode:n,logMessage:`Fatal error while preparing background workflow step`});return}if(!P){let e={eventType:`run_started`,specVersion:_?.specVersion??5,..._?{eventData:{input:_.input,deploymentId:_.deploymentId,workflowName:_.workflowName,executionContext:_.executionContext,attributes:_.attributes,allowReservedAttributes:_.allowReservedAttributes}}:{}},n=e=>{i?.addEvent(`workflow.run_started.create.start`,{"workflow.run_started.skip_preload":e})};if(V&&_){n(!0);let r=t.events.create(l,e,{requestId:x,skipPreload:!0});H=r,r.catch(()=>{}),I=[];let a=new Date;P={runId:l,status:`running`,deploymentId:_.deploymentId,workflowName:_.workflowName,specVersion:_.specVersion,executionContext:_.executionContext,input:_.input,attributes:_.attributes??{},startedAt:a,createdAt:a,updatedAt:a},F=+a,i?.setAttributes({...K(`running`),...ye(F)})}else{try{n(!1);let r=await t.events.create(l,e,{requestId:x});if(!r.run)throw new E(`Event creation for 'run_started' did not return the run entity for run "${l}"`);if(P=r.run,r.events&&r.events.length>0&&r.hasMore!==!0&&(I=r.events,L=r.cursor),!P.startedAt)throw new E(`Workflow run "${l}" has no "startedAt" timestamp`)}catch(e){if(C.is(e)||y.is(e)){j.info(`Run already finished during setup, skipping`,{workflowRunId:l,message:e.message});return}else{let n=ca(e);if(!n)throw e;await la({world:t,workflowRun:P,runId:l,requestId:x,err:e,errorCode:n,logMessage:`Fatal runtime error during workflow setup`});return}}if(F=+P.startedAt,i?.setAttributes({...K(P.status),...ye(F)}),P.status!==`running`){j.info(`Workflow already completed or failed, skipping`,{workflowRunId:l,status:P.status});return}}}let le=await nt(t,P)();for(;;){if(o++,N.isExhausted()){await qn({runId:l,workflowName:S,requestId:x,attempt:s.attempt,limitMs:N.configuredLimitMs});return}if(Date.now()-a>=n){j.info(`V2 timeout reached, re-scheduling workflow`,{workflowRunId:l,loopIteration:o,elapsedMs:Date.now()-a}),await X(t,q(S,r),{runId:l,traceCarrier:await A(),requestedAt:new Date});return}let p=0,m=null;try{let n;if(M&&c){let e=M;if(M=null,e.events.length>0){let t=new Set(c.map(e=>e.eventId));for(let n of e.events)t.has(n.eventId)||(t.add(n.eventId),c.push(n))}u=e.cursor??u,n=c}else if(c===null)if(I)n=I,u=L??null;else{let e=await Y(l);n=e.events,u=e.cursor}else if(u){let e=await Y(l,u);if(e.events.length>0){let t=new Set(c.map(e=>e.eventId));for(let n of e.events)t.has(n.eventId)||(t.add(n.eventId),c.push(n))}u=e.cursor??u,n=c}else if(I){j.debug(`No cursor after preloaded-events first iteration; doing full reload to pick up cursor.`,{workflowRunId:l});let e=await Y(l);c=e.events,u=e.cursor,n=c}else{j.warn(`Event cursor missing after initial load — falling back to full reload. This indicates a bug in the World implementation.`,{workflowRunId:l});let e=await Y(l);c=e.events,u=e.cursor,n=c}if(ua(n,l))return;let r=Date.now(),a=new Set(n.filter(e=>e.eventType===`wait_completed`).map(e=>e.correlationId)),s=n.filter(e=>e.eventType===`wait_created`&&e.correlationId!==void 0&&!a.has(e.correlationId)&&r>=e.eventData.resumeAt.getTime()).map(e=>({eventType:`wait_completed`,specVersion:5,correlationId:e.correlationId,eventData:{resumeAt:e.eventData.resumeAt}}));for(let e of s)try{await t.events.create(l,e,{requestId:x})}catch(t){if(C.is(t)){j.info(`Wait already completed, skipping`,{workflowRunId:l,correlationId:e.correlationId});continue}throw t}if(s.length>0)if(u){let e=await Y(l,u),t=new Set(e.events.filter(e=>e.eventType===`wait_completed`).map(e=>e.correlationId));if(s.every(e=>t.has(e.correlationId))){let t=new Set(n.map(e=>e.eventId));for(let r of e.events)t.has(r.eventId)||(t.add(r.eventId),n.push(r));u=e.cursor??u}else{let e=await Y(l);n=e.events,u=e.cursor}}else{let e=await Y(l);n=e.events,u=e.cursor}if(ua(n,l))return;c=n,R??=n.every(e=>e.eventType===`run_created`||e.eventType===`run_started`||e.eventType===`attr_set`),m=u,j.debug(`Starting workflow replay`,{workflowRunId:l,loopIteration:o,eventCount:n.length}),p=Date.now();let d=await sa(e,P,n,le,O,H);j.debug(`Workflow replay completed`,{workflowRunId:l,loopIteration:o,replayMs:Date.now()-p});try{await ie(),await t.events.create(l,{eventType:`run_completed`,specVersion:5,eventData:{output:d}},{requestId:x})}catch(e){if(C.is(e)||y.is(e)){j.info(`Tried completing workflow run, but run has already finished.`,{workflowRunId:l,message:e.message});return}throw e}i?.setAttributes({...K(`completed`)});return}catch(n){if(J.is(n)){j.debug(`Workflow suspended`,{workflowRunId:l,loopIteration:o,replayMs:Date.now()-p,steps:n.stepCount,hooks:n.hookCount,waits:n.waitCount});let e=ne(n.stepCount,n.hookCount,n.waitCount);e&&j.debug(e);let a=Date.now(),u;try{u=await vr({suspension:n,world:t,run:P,span:i,requestId:x,runReadyBarrier:H})}catch(e){if(!v.is(e))throw e;let n=sn(e);j.error(`Non-retryable error while committing workflow suspension; failing run`,{workflowRunId:l,errorCode:n,errorName:e.name,errorMessage:e.message});try{await ie(),await t.events.create(l,{eventType:`run_failed`,specVersion:5,eventData:{error:await Pe(e,l,le,globalThis,(P?.specVersion??0)>=5),errorCode:n}},{requestId:x})}catch(e){if(C.is(e)||y.is(e)){j.info(`Tried failing workflow run, but run has already finished.`,{workflowRunId:l,message:e.message});return}throw e}i?.setAttributes({...K(`failed`),...re(n),...Se(e.name),...ce(e.message),...ct(e.name)});return}if(te+=u.hookCreationMs,u.hasAttributeEvents&&z===void 0&&(z=te),j.debug(`Suspension handled`,{workflowRunId:l,suspensionMs:Date.now()-a,pendingSteps:u.pendingSteps.length,timeoutSeconds:u.waitTimeout?.seconds,hasHookConflict:u.hasHookConflict,hasAwaitedHookCreation:u.hasAwaitedHookCreation,hasAttributeEvents:u.hasAttributeEvents}),u.hasHookConflict)return await se(0);if(u.hasAttributeEvents)continue;let d=u.pendingSteps,f=u.lazyInlineSteps,h=new Set(f.map(e=>e.correlationId)),g=await A(),_=[],b=An(),w=Date.now(),T=[],E=0;for(let e of d){if(h.has(e.correlationId))continue;let n=b&&dr(e);if(n&&e.ownerMessageId===s.messageId){T.push(e);continue}let i=n?fr(e,w):0;if(i>0){E++,j.debug(`Pending step is inline-owned by a live invocation; ensuring delayed backstop wake instead of immediate requeue`,{workflowRunId:l,stepId:e.correlationId,ownerMessageId:e.ownerMessageId,backstopDelaySeconds:i}),_.push(X(t,q(S,r),{runId:l,traceCarrier:g,requestedAt:new Date},{delaySeconds:i,idempotencyKey:pr(e)}));continue}_.push(X(t,q(S,r),{runId:l,stepId:e.correlationId,stepName:e.stepName,traceCarrier:g,requestedAt:new Date},{idempotencyKey:e.correlationId}))}u.waitTimeout&&_.push(X(t,q(S,r),{runId:l,traceCarrier:g,requestedAt:new Date},Sr(u.waitTimeout.seconds,u.waitTimeout.correlationId))),await Promise.all(_);let D=[...f.map(e=>({correlationId:e.correlationId,stepName:e.stepName,lazyStepInput:e.dehydratedInput})),...T.map(e=>({correlationId:e.correlationId,stepName:e.stepName}))];if((E>0||T.length>0)&&i?.setAttributes({...T.length>0?De(T.length):{},...E>0?ee(E):{}}),T.length>0&&j.warn(`Re-executing inline steps owned by this queue message — a previous delivery crashed mid-body and this redelivery is recovering them`,{workflowRunId:l,stepIds:T.map(e=>e.correlationId)}),D.length===0)return u.hasAwaitedHookCreation?await se(0):void 0;let O=typeof m==`string`&&n.stepCount===1&&n.hookCount===0&&n.waitCount===0&&d.length===1&&f.length===1&&T.length===0&&!u.waitTimeout&&!da(c??[]),k=V&&!u.waitTimeout&&!u.hasHookEvents&&!u.hasAttributeEvents&&!u.hasAwaitedHookCreation&&!da(c??[]),I=sr({events:c??[],invocationStartedClean:R===!0,runCreatedAtMs:Jn(l)??(V?void 0:+P.createdAt),preStepBlockingMs:te,preStepBlockingBeforeAttrMs:z,suspensionHasWaits:n.waitCount>0||u.waitTimeout!==void 0,suspensionCreatedHooks:n.hookCount>0||u.hasHookEvents,turbo:V});N.pause();let L;try{L=await Promise.all(D.map((e,n)=>{let r=()=>ur({world:t,workflowRunId:l,workflowDeploymentId:P.deploymentId,workflowName:S,workflowStartedAt:F,stepId:e.correlationId,stepName:e.stepName,runSpecVersion:P.specVersion,lazyStepInput:e.lazyStepInput,ownerMessageId:s.messageId,forceOptimisticStart:k,runReadyBarrier:H,...n===0&&e.lazyStepInput!==void 0&&I?{latencyTracking:I}:{},...O&&m?{inlineDeltaSinceCursor:m}:{}});return ae.add(e.correlationId),(e.lazyStepInput===void 0?gr(l,e.correlationId,r):r()).finally(()=>ae.delete(e.correlationId))}))}finally{N.resume()}let B=[],oe=!1,ue;for(let e=0;e<D.length;e++){let t=L[e],n=D[e];t.type===`retry`?B.push({step:n,delaySeconds:t.timeoutSeconds}):t.type===`throttled`?ue=Math.max(ue??0,t.timeoutSeconds):t.type===`completed`&&t.hasPendingOps&&(oe=!0)}if(ue!==void 0)return await se(ue);if(B.length>0){let e=await A();await Promise.all(B.map(({step:n,delaySeconds:i})=>X(t,q(S,r),{runId:l,stepId:n.correlationId,stepName:n.stepName,traceCarrier:e,requestedAt:new Date},{delaySeconds:i,idempotencyKey:n.correlationId})))}if(oe){j.debug(`Breaking loop: inline step has pending ops`,{workflowRunId:l,loopIteration:o}),await X(t,q(S,r),{runId:l,traceCarrier:await A(),requestedAt:new Date});return}if(B.length>0)return;if(D.length===1){let e=L[0];e.type===`completed`&&e.inlineDelta&&!e.inlineDelta.hasMore&&(M={events:e.inlineDelta.events,cursor:e.inlineDelta.cursor})}}else{if(Zt(n))throw D.warn(`Transient world error during replay; redelivering via queue instead of failing the run`,{errorName:n instanceof Error?n.name:`UnknownError`,errorMessage:n instanceof Error?n.message:String(n),deliveryAttempt:s.attempt}),n;let a=n;if(w.is(n)){let e=(g?.count??0)+1,i=Mn();if(e<=i){D.warn(`Workflow replay diverged; queueing a recovery replay before declaring the event log corrupted`,{errorCode:f.REPLAY_DIVERGENCE,divergenceEventId:n.eventId,priorDivergenceEventId:g?.eventId,divergenceCount:e,deliveryAttempt:s.attempt,maxRecoveryReplays:i,errorMessage:n.message}),await X(t,q(S,r),{runId:l,traceCarrier:await A(),requestedAt:new Date,replayDivergence:{eventId:n.eventId,count:e}});return}a=new T(`Workflow replay diverged ${e} times after ${i} recovery replays; latest divergent event was ${n.eventId}. Last divergence: ${n.message}`,{cause:n})}a instanceof Error&&i?.recordException?.(a);let o=await tr(a),c=o.name||Yn(a),u=o.message,p=o.stack||Xn(a);if(p){let t=d(S)?.moduleSpecifier||S;p=Ti(p,t,e)}let m=sn(a);j.error(`Error while running workflow`,{workflowRunId:l,errorCode:m,errorName:c,errorStack:p}),ln.isNativeError(a)&&p&&(a.stack=p);try{await ie(),await t.events.create(l,{eventType:`run_failed`,specVersion:5,eventData:{error:await Pe(a,l,le,globalThis,(P?.specVersion??0)>=5),errorCode:m}},{requestId:x})}catch(e){if(C.is(e)||y.is(e)){j.info(`Tried failing workflow run, but run has already finished.`,{workflowRunId:l,message:e.message});return}if(Qt(e)){j.error(`Fatal world contract error while recording workflow failure`,{workflowRunId:l,errorCode:f.WORLD_CONTRACT_ERROR,error:e instanceof Error?e.message:String(e)});return}throw e}i?.setAttributes({...K(`failed`),...re(m),...Se(c),...ce(u),...ct(c)});return}}}})}))}),c,l=0,u=Date.now(),p=typeof t?.routeModuleBodyStartedAt==`number`?u-t.routeModuleBodyStartedAt:void 0;return Ge(async e=>{l+=1;let t=c!==void 0;return G(`workflow.route.flow`,{kind:await R(`SERVER`),attributes:{...Me(`flow`),...ae(t),...pt(l),...te(Date.now()-u),...p===void 0?{}:H(p),...ut(e.method),...Be(`/.well-known/workflow/v1/flow`)}},async t=>{c||=await G(`workflow.route.init`,async()=>s(await G(`workflow.route.get_world_handlers`,async()=>Hn())));let n=await c(e);return n instanceof Response&&t?.setAttributes(_t(n.status)),n})})}export{on as Run,J as WorkflowSuspension,rn as cancelRun,Vn as createWorld,Bn as createWorldFromModule,Jt as getHookByToken,tn as getRun,Un as getWorld,Hn as getWorldHandlers,ht as healthCheck,$t as listStreams,Yt as readStream,nn as recreateRunFromExisting,an as reenqueueRun,Kt as resumeHook,qt as resumeWebhook,Wn as setWorld,en as start,Xt as wakeUpRun,fa as workflowEntrypoint};
|
|
1
|
+
import{a as e,i as t,r as n,t as r}from"../../_chunks/workflow/chunk-BHKSVoKr.js";import{a as i,c as a,h as o,l as s,m as c,n as l,o as u,p as d}from"../../_chunks/workflow/dist-CttsoN4D.js";import{D as f,E as p,T as m,a as h,b as g,c as _,g as v,h as y,i as b,l as x,n as S,o as C,p as w,r as T,s as E,t as D,u as O}from"../../_chunks/workflow/dist-BYo8Gno2.js";import{$ as k,$t as A,A as j,At as M,B as N,Bn as P,Bt as F,Cn as I,Ct as L,Dt as ee,Et as te,F as ne,Ft as R,G as re,Gt as ie,H as z,Hn as B,Ht as ae,I as V,It as oe,J as se,Jt as ce,K as le,Kt as ue,L as de,Lt as fe,M as pe,Mn as me,Mt as he,Nn as ge,Nt as _e,On as ve,Ot as ye,P as be,Pt as xe,Q as H,Qt as Se,R as Ce,Rn as we,Rt as Te,S as Ee,Sn as De,St as Oe,Tn as ke,Tt as Ae,U,Ut as je,V as Me,Vn as Ne,Vt as Pe,W as Fe,Wt as Ie,Xt as Le,Y as Re,Yt as ze,Zt as Be,_t as Ve,a as W,an as He,b as Ue,bn as We,bt as Ge,c as G,cn as K,ct as Ke,d as q,dn as qe,dt as Je,en as Ye,et as Xe,f as Ze,ft as Qe,gt as $e,hn as et,ht as tt,i as nt,in as rt,it,j as at,jt as ot,k as st,kt as ct,l as lt,ln as J,lt as ut,m as dt,mn as ft,mt as pt,n as mt,nn as ht,nt as gt,o as _t,on as vt,p as yt,pn as bt,pt as xt,q as St,qt as Ct,rn as wt,rt as Tt,s as Et,sn as Dt,tn as Y,u as Ot,ut as kt,v as At,vt as jt,w as Mt,wn as Nt,wt as Pt,x as Ft,xn as It,xt as Lt,y as Rt,yt as zt,z as Bt,zt as Vt}from"../../_chunks/workflow/attribute-changes-DXbmITuI.js";import{G as Ht,a as Ut,b as Wt,g as Gt,h as Kt,o as qt,q as Jt,v as Yt}from"../../_chunks/workflow/dist-CSfKNxQW.js";import{awaitEarlierDeliveries as Xt,getStepFunction as Zt,registerDeliveryBarrier as Qt,scheduleWhenIdle as X}from"./private.js";import{n as $t,r as en,t as tn}from"../../_chunks/workflow/resume-hook-DvvgYsRt.js";import{a as nn,c as rn,d as an,f as on,i as sn,l as cn,n as ln,o as un,r as dn,s as fn,t as pn,u as mn}from"../../_chunks/workflow/run-BdvQmV5a.js";import{t as hn}from"../../_chunks/workflow/run-id-BdE0MZz9.js";import{createRequire as gn}from"node:module";import"node:crypto";import{types as _n}from"node:util";import{pathToFileURL as vn}from"node:url";import{Script as yn,createContext as bn,runInContext as xn}from"node:vm";function Sn(e){return e instanceof Ne||e instanceof P||e instanceof B||e instanceof ge}const Cn=`The workflow event log contains orphaned or mismatched events and cannot be replayed. This is an internal workflow SDK error; please report it with the runId.`;function wn(e,t){let n=t??mn(e);return w.is(e)?{attribution:`user`,errorCode:n,hint:`A value passed across a workflow/step boundary could not be serialized. See the error message for the offending path and the Learn More link for details.`}:Sn(e)?{attribution:`user`,errorCode:n,hint:`A workflow-only or step-only API was called from the wrong context. The error message includes the exact API and how to move the call.`}:D.is(e)?{attribution:`sdk`,errorCode:n,hint:Cn}:e instanceof m?{attribution:`sdk`,errorCode:n,hint:`This is an internal workflow SDK error, not a bug in your code. If it keeps happening, please report it with the stack trace and the runId.`}:n===f.REPLAY_TIMEOUT?{attribution:`sdk`,errorCode:n,hint:'The workflow replay between step boundaries took too long. This bounds workflow-VM and event-log replay time only — step bodies (`"use step"` functions) are excluded. This usually means the event log is unusually large or the workflow function is doing heavy synchronous work in workflow code outside of step bodies. Override the default budget via the WORKFLOW_REPLAY_TIMEOUT_MS env var if needed.'}:n===f.MAX_DELIVERIES_EXCEEDED?{attribution:`sdk`,errorCode:n,hint:`The workflow queue exceeded its max-delivery budget. This usually indicates a persistent runtime failure — check the most recent stack traces for the underlying cause.`}:n===f.CORRUPTED_EVENT_LOG?{attribution:`sdk`,errorCode:n,hint:Cn}:n===f.WORLD_CONTRACT_ERROR?{attribution:`sdk`,errorCode:n,hint:`The workflow backend returned data that violated the SDK contract. This is not retryable; please report it with the stack trace and runId.`}:{attribution:`user`,errorCode:n}}function Tn(){return Wt(`WORKFLOW_MAX_QUEUE_DELIVERIES`,48,{integer:!0,min:1,max:48})}const En=24e4,Dn=3e4,On=78e4,kn=new Set;function An(e,t,n){kn.has(e)||(kn.add(e),z.warn(t,n))}function jn(){let e=process.env.WORKFLOW_REPLAY_TIMEOUT_MS;if(!e)return En;let t=Number(e);return!Number.isFinite(t)||t<=0?(An(e,`Ignoring WORKFLOW_REPLAY_TIMEOUT_MS: not a positive finite number; using default`,{raw:e,defaultMs:En}),En):t<3e4?(An(e,`WORKFLOW_REPLAY_TIMEOUT_MS below minimum; clamped`,{raw:e,clampedMs:Dn,minMs:Dn}),Dn):t>78e4?(An(e,`WORKFLOW_REPLAY_TIMEOUT_MS above maximum; clamped`,{raw:e,clampedMs:On,maxMs:On}),On):t}function Mn(){return Wt(`WORKFLOW_REPLAY_TIMEOUT_MAX_RETRIES`,3,{integer:!0})}const Nn=new Set;function Pn(){let e=process.env.WORKFLOW_MAX_INLINE_STEPS;if(!e)return 3;let t=Number(e);return!Number.isInteger(t)||t<=0?(Nn.has(e)||(Nn.add(e),z.warn(`Ignoring WORKFLOW_MAX_INLINE_STEPS: not a positive integer; using default`,{raw:e,defaultValue:3})),3):t<1?1:t>16?(Nn.has(e)||(Nn.add(e),z.warn(`WORKFLOW_MAX_INLINE_STEPS above maximum; clamped`,{raw:e,clampedValue:16,maxValue:16})),16):t}function Fn(){let e=process.env.WORKFLOW_OPTIMISTIC_INLINE_START;return e===void 0||e===``?!1:e===`1`||e.toLowerCase()===`true`}function In(){let e=process.env.WORKFLOW_OPTIMISTIC_INLINE_START;return e===void 0||e===``?!1:e===`0`||e.toLowerCase()===`false`}function Ln(){let e=process.env.WORKFLOW_TURBO;return e===void 0||e===``?!0:!(e===`0`||e.toLowerCase()===`false`)}function Rn(){let e=process.env.WORKFLOW_INLINE_OWNERSHIP;return e===void 0||e===``?!0:!(e===`0`||e.toLowerCase()===`false`)}function zn(){return Wt(`WORKFLOW_INLINE_OWNERSHIP_LEASE_SECONDS`,860,{integer:!0,min:1,max:900})}function Bn(){return Wt(`WORKFLOW_REPLAY_DIVERGENCE_MAX_RETRIES`,3,{integer:!0})}var Vn=n({createWorld:()=>Un});function Hn(){throw Error(`Workflow target world was not statically injected. Configure a Workflow builder/framework plugin so @workflow/core/runtime/world-target is aliased to the selected world package.`)}function Un(){Hn()}const Z=Symbol.for(`@workflow/world//cache`),Wn=Symbol.for(`@workflow/world//stubbedCache`),Gn=Symbol.for(`@workflow/world//cachePromise`),Kn=Symbol.for(`@workflow/world//stubbedCachePromise`),Q=globalThis;function qn(e){if(typeof e.createWorld==`function`)return e.createWorld();if(typeof e.createLocalWorld==`function`)return e.createLocalWorld();if(typeof e.createVercelWorld==`function`)return e.createVercelWorld();if(typeof e.default==`function`)return e.default();if(e.default&&typeof e.default==`object`)return e.default;throw Error(`Invalid target world module: must export createWorld(), a default factory, or a default World instance.`)}const Jn=async()=>{let e=await qn(Vn),t=[`WORKFLOW_VERCEL_PROJECT`,`WORKFLOW_VERCEL_TEAM`,`WORKFLOW_VERCEL_AUTH_TOKEN`,`WORKFLOW_VERCEL_ENV`].filter(e=>process.env[e]);return t.length>0&&process.env.VERCEL===`1`&&console.warn(`[workflow] Warning: ${t.join(`, `)} env var(s) are set but have no effect at runtime. These are only used by the Workflow CLI. Remove them from your Vercel project environment variables.`),e},Yn=async()=>{if(Q[Wn])return ve(Q[Wn]),Q[Wn];Q[Kn]||(Q[Kn]=Jn().catch(e=>{throw Q[Kn]=void 0,e}));let e=await Q[Kn];return ve(e),Q[Wn]=e,{createQueueHandler:e.createQueueHandler,specVersion:e.specVersion}},Xn=async()=>Q[Z]?(ve(Q[Z]),Q[Z]):(Q[Gn]||(Q[Gn]=Jn().catch(e=>{throw Q[Gn]=void 0,e})),Q[Z]=await Q[Gn],ve(Q[Z]),Q[Z]),Zn=e=>{Q[Z]=e,Q[Wn]=e,Q[Gn]=void 0,Q[Kn]=void 0},Qn=Symbol.for(`@workflow/world//getWorldFn`);globalThis[Qn]??=Xn;var $n=class{limitMs;elapsedMs=0;intervalStart;constructor(e=jn()){this.limitMs=e,this.intervalStart=Date.now()}get configuredLimitMs(){return this.limitMs}elapsed(){let e=this.intervalStart===null?0:Date.now()-this.intervalStart;return this.elapsedMs+e}pause(){this.intervalStart!==null&&(this.elapsedMs+=Date.now()-this.intervalStart,this.intervalStart=null)}resume(){this.intervalStart=Date.now()}isExhausted(){return this.elapsed()>=this.limitMs}};async function er(e){let{runId:t,workflowName:n,requestId:r,attempt:i,limitMs:a}=e,o=z.forRun(t,n),s=await Xn();if(s.processExitTriggersQueueRedelivery!==!0){o.warn(`Workflow replay exceeded timeout; current World does not support process exit for redelivery — failing the run and returning`,{timeoutMs:a,attempt:i});try{let e=lt(s,t),n=new b(`Workflow replay exceeded maximum duration (${a/1e3}s)`);await s.events.create(t,{eventType:`run_failed`,specVersion:5,eventData:{error:await Rt(n,t,await e()),errorCode:f.REPLAY_TIMEOUT}},{requestId:r})}catch(e){o.warn(`Unable to mark run as failed`,{attempt:i,errorName:e instanceof Error?e.name:`UnknownError`,errorMessage:e instanceof Error?e.message:String(e)})}return}let c=Mn();i<=c&&(o.warn(`Workflow replay exceeded timeout but will be re-attempted (attempt < maxRetries)`,{timeoutMs:a,attempt:i,maxRetries:c}),process.exit(1));let l=wn(void 0,f.REPLAY_TIMEOUT);o.error(`Workflow replay exceeded timeout and max retries exceeded. Failing the run`,{timeoutMs:a,attempt:i,maxRetries:c,errorCode:l.errorCode,errorAttribution:l.attribution});try{let e=lt(s,t),n=new b(`Workflow replay exceeded maximum duration (${a/1e3}s) after ${i} attempts`);await s.events.create(t,{eventType:`run_failed`,specVersion:5,eventData:{error:await Rt(n,t,await e()),errorCode:f.REPLAY_TIMEOUT}},{requestId:r})}catch(e){o.warn(`Unable to mark run as failed. The queue will continue to retry`,{attempt:i,errorName:e instanceof Error?e.name:`UnknownError`,errorMessage:e instanceof Error?e.message:String(e),errorStack:e instanceof Error?e.stack:void 0})}process.exit(1)}function tr(e){let t=e.startsWith(`wrun_`)?e.slice(5):e;try{return Ut(hn(t).ulid)}catch{return}}function nr(e){return _n.isNativeError(e)?e.name:`Error`}function rr(e){return _n.isNativeError(e)?e.stack??``:``}function ir(e){return typeof e==`object`&&!!e&&`name`in e&&e.name===`AbortError`&&`message`in e&&typeof e.message==`string`&&(!(`stack`in e)||e.stack===void 0||typeof e.stack==`string`)}function ar(e){if(!ir(e)||b.is(e))return e;let t=new b(`Aborted: ${e.message}`);return e.stack&&(t.stack=e.stack),t}function or(e){return typeof e==`object`&&!!e&&`then`in e&&typeof e.then==`function`}function sr(e){if(_n.isNativeError(e))return{name:e.name,message:e.message,stack:e.stack??``};if(typeof e==`string`)return{name:`Error`,message:e,stack:``};try{return{name:`Error`,message:JSON.stringify(e),stack:``}}catch{return{name:`Error`,message:String(e),stack:``}}}async function cr(e){if(or(e))try{let t=await cr(await e);return{...t,message:`Promise rejection: ${t.message}`}}catch(e){let t=await cr(e);return{...t,message:`Promise rejection: ${t.message}`}}return sr(e)}let lr,ur,dr;async function fr(){if(ur!==void 0)return ur;if(dr)return dr;if(!lr)try{let e=[`@workflow/utils`,`get-port`].join(`/`);lr=gn(vn(process.cwd()+`/package.json`).href)(e).getPort}catch{lr=async()=>void 0}return dr=(lr??(async()=>void 0))().then(e=>(typeof e==`number`&&(ur=e),e)).finally(()=>{dr=void 0}),dr}const pr=new Set([`step_created`,`step_started`,`step_completed`,`step_failed`,`step_retrying`,`hook_received`,`wait_created`,`wait_completed`]);function mr(e){let{events:t}=e,n=e.invocationStartedClean&&e.runCreatedAtMs!==void 0&&!e.suspensionHasWaits,r;if(n)for(let e of t){if(pr.has(e.eventType)){n=!1;break}if(e.eventType===`attr_set`){let t=+(e.occurredAt??e.createdAt);r=r===void 0?t:Math.min(r,t)}}let i,a,o,s=t[t.length-1];if(!e.suspensionHasWaits&&!e.suspensionCreatedHooks&&s&&(s.eventType===`step_completed`||s.eventType===`step_failed`)){i=+(s.occurredAt??s.createdAt);let e=new Set;for(let n of t)(n.eventType===`step_completed`||n.eventType===`step_failed`)&&n.correlationId!==void 0&&e.add(n.correlationId);a=e.size,o=t.length}let c=n&&e.runStartedReceivedAtMs!==void 0;if(!(!n&&i===void 0))return{...n?{ttfsAnchorMs:e.runCreatedAtMs,preStepBlockingMs:r===void 0?e.preStepBlockingMs:e.preStepBlockingBeforeAttrMs??0,...r===void 0?{}:{preStepAttrStartMs:r}}:{},...c?{rsfsAnchorMs:e.runStartedReceivedAtMs,replayMs:e.replayMs}:{},...i===void 0?{}:{prevStepEndMs:i,stepCount:a,eventCount:o},turbo:e.turbo}}function hr(e){let{tracking:t}=e;if(!t||e.attempt!==1)return;let n=t.preStepAttrStartMs??e.stepCodeStartedAtMs,r=t.ttfsAnchorMs===void 0?void 0:n-t.ttfsAnchorMs-(t.preStepBlockingMs??0),i=r!==void 0&&r>=-6e4?Math.max(0,r):void 0,a=t.prevStepEndMs===void 0?void 0:e.stepCodeStartedAtMs-t.prevStepEndMs,o=a!==void 0&&a>=-6e4?Math.max(0,a):void 0,s=t.rsfsAnchorMs!==void 0&&e.stepStartPostSentAtMs!==void 0?Math.max(0,e.stepStartPostSentAtMs-t.rsfsAnchorMs):void 0,c=t.replayMs===void 0?void 0:Math.max(0,t.replayMs);if(i===void 0&&o===void 0)return;let l=[];return t.turbo&&l.push(`turbo`),e.lazyStepStart&&l.push(`lazyStepStart`),e.optimisticStart&&l.push(`optimisticStart`),{...i===void 0?{}:{ttfs:i},...o===void 0?{}:{stso:o},...o!==void 0&&t.stepCount!==void 0?{stepCount:t.stepCount}:{},...o!==void 0&&t.eventCount!==void 0?{eventCount:t.eventCount}:{},...s===void 0?{}:{rsfs:s},...c===void 0?{}:{finalSchedulingReplay:c},optimizations:l}}function gr(e,t){if(t&&!(!e.events||e.cursor===void 0))return{events:e.events,cursor:e.cursor,hasMore:e.hasMore??!1}}async function _r(e){let{world:t,workflowRunId:n,workflowName:r,workflowStartedAt:i,stepId:a,stepName:o}=e,u=process.env.VERCEL_URL!==void 0,d=(e.runSpecVersion??0)>=5;return H(`step.execute ${c(o)}`,{},async c=>{c?.setAttributes({...ee(o),...ie(r),...Ye(n),...Pt(a)});let f=lt(t,n),p=Zt(o);if(!p||typeof p!=`function`){let i=`Step "${o}" is not registered in the current deployment. This usually indicates a build or bundling issue that caused the step to not be included in the deployment.`;if(z.error(`Step function not registered, failing step`,{workflowRunId:n,stepName:o,stepId:a}),e.lazyStepInput!==void 0)try{e.runReadyBarrier&&await e.runReadyBarrier.catch(()=>{}),await t.events.create(n,{eventType:`step_started`,specVersion:5,correlationId:a,eventData:{stepName:o,workflowName:r,input:e.lazyStepInput,...e.ownerMessageId===void 0?{}:{ownerMessageId:e.ownerMessageId}}})}catch(e){if(T.is(e))return{type:`skipped`};if(O.is(e))return{type:`gone`};throw e}try{await t.events.create(n,{eventType:`step_failed`,specVersion:5,correlationId:a,eventData:{stepName:o,error:await Ft(new b(i),n,await f(),[],globalThis,d)}})}catch(e){if(T.is(e))return{type:`skipped`};throw e}return c?.setAttributes({...R(`failed`),...Oe(!0)}),{type:`failed`}}let h=p.maxRetries??3;c?.setAttributes({...te(h)});let g=e=>{if(y.is(e)){let t=Math.max(1,typeof e.retryAfter==`number`?e.retryAfter:1);return z.info(`Throttled on step_started, deferring`,{retryAfterSeconds:t}),{type:`throttled`,timeoutSeconds:t}}if(O.is(e))return z.info(`Workflow run "${n}" has already completed, skipping step "${a}": ${e.message}`),{type:`gone`};if(T.is(e))return z.debug(`Step in terminal state, skipping`,{stepName:o,stepId:a,workflowRunId:n,error:e instanceof Error?e.message:String(e)}),c?.setAttributes({...xe(!0),..._e(`completed`)}),{type:`skipped`};if(v.is(e)){let t=Math.max(1,e.retryAfter??1);return z.debug(`Step retryAfter timestamp not yet reached`,{stepName:o,stepId:a,timeoutSeconds:t}),{type:`retry`,timeoutSeconds:t}}},_=e.lazyStepInput!==void 0&&(Fn()||e.forceOptimisticStart===!0&&!In()),S,C,w,E=async()=>{if(!w)return;let e=await w;if(e.ok)return;let t=g(e.err);if(!t)throw e.err;return t};if(_){w=(e.runReadyBarrier??Promise.resolve()).then(()=>(C=Date.now(),t.events.create(n,{eventType:`step_started`,specVersion:5,correlationId:a,eventData:{stepName:o,workflowName:r,input:e.lazyStepInput,...e.ownerMessageId===void 0?{}:{ownerMessageId:e.ownerMessageId}}}))).then(()=>({ok:!0}),e=>({ok:!1,err:e}));let i=new Date;S={runId:n,stepId:a,stepName:o,status:`running`,input:e.lazyStepInput,attempt:1,startedAt:i,createdAt:i,updatedAt:i}}else try{let i=e.ownerMessageId===void 0?{}:{ownerMessageId:e.ownerMessageId};C=Date.now();let s=await t.events.create(n,{eventType:`step_started`,specVersion:5,correlationId:a,eventData:e.lazyStepInput===void 0?{stepName:o,...i}:{stepName:o,workflowName:r,input:e.lazyStepInput,...i}});if(!s.step)throw new m(`step_started event for "${a}" did not return step entity`);S=s.step}catch(e){let t=g(e);if(t)return t;throw e}z.debug(`Step execution details`,{stepName:o,stepId:S.stepId,status:S.status,attempt:S.attempt}),c?.setAttributes({...R(S.status)});let D;if(S.attempt>h+1&&S.error){let e=S.attempt-1,r=`Step "${o}" exceeded max retries (${e} ${s(`retry`,`retries`,e)})`;U.error(`Step exceeded max retries`,{workflowRunId:n,stepName:o,retryCount:e});let i=new b(r);if(S.error!=null)try{i.cause=await j(S.error,n,await f())}catch{}try{await t.events.create(n,{eventType:`step_failed`,specVersion:5,correlationId:a,eventData:{stepName:o,error:await Ft(i,n,await f(),[],globalThis,d)}})}catch(e){if(T.is(e))return z.info(`Tried failing step, but step has already finished.`,{workflowRunId:n,stepId:a,stepName:o,message:e.message}),{type:`skipped`};throw e}return c?.setAttributes({...R(`failed`),...ct(!0)}),{type:`failed`}}let k=[],A=[],N=!0,P,F=()=>{if(!P||P.rsfs!==void 0)return;let t=e.latencyTracking?.rsfsAnchorMs;t===void 0||C===void 0||(P.rsfs=Math.max(0,C-t),c&&c.setAttributes({...he(P.rsfs)}))};try{let t=S.attempt;if(!S.startedAt)throw new m(`Step "${a}" has no "startedAt" timestamp`);let s=S.startedAt,h=e.encryptionKey??await f(),g=await H(`step.hydrate`,{},async t=>{let r=Date.now(),i=await st(S.input,n,h,A,globalThis,{},e.workflowDeploymentId),a=Date.now()-r;return t?.setAttributes({...jt(i.args.length),...tt(a)}),i}),v=g.args,y=g.thisVal??null,b=l(u?`https://${process.env.VERCEL_URL}`:`http://localhost:${await fr()??3e3}`),x,w=!1,T=Date.now();P=hr({tracking:e.latencyTracking,stepCodeStartedAtMs:T,attempt:t,lazyStepStart:e.lazyStepInput!==void 0,optimisticStart:_,stepStartPostSentAtMs:C}),P&&c?.setAttributes({...P.ttfs===void 0?{}:fe(P.ttfs),...P.stso===void 0?{}:oe(P.stso),...P.rsfs===void 0?{}:he(P.rsfs),...P.finalSchedulingReplay===void 0?{}:L(P.finalSchedulingReplay),...Ae(P.optimizations??[])});try{D=await H(`step.execute`,{},async()=>await Me.run({stepMetadata:{stepName:o,stepId:a,stepStartedAt:new Date(+s),attempt:t},workflowMetadata:{workflowName:r,workflowRunId:n,workflowStartedAt:new Date(+i),url:b,features:{encryption:!!h}},workflowDeploymentId:e.workflowDeploymentId,rootRunId:e.rootRunId,ops:A,preCompletionOps:k,closureVars:g.closureVars,encryptionKey:h,runReadyBarrier:_?e.runReadyBarrier:void 0},()=>p.apply(y,v)))}catch(e){x=e,w=!0}let O=Date.now()-T;if(At(...v,y,g.closureVars),w)throw x;if(c?.setAttributes({...$e(O)}),D=await H(`step.dehydrate`,{},async t=>{let r=Date.now(),i=await Ee(D,n,h,A,globalThis,!1,!1,d,_?e.runReadyBarrier:void 0),a=Date.now()-r;return t?.setAttributes({...Ve(a),...ye(typeof i)}),i}),A.length>0){let e=Promise.all(A);mt(e,e=>{z.warn(`Background flush of step stream ops failed`,{workflowRunId:n,stepId:a,error:e instanceof Error?e.message:String(e)})}),N=await Promise.race([e.then(()=>!0,e=>{if(e?.name===`AbortError`||e?.name===`ResponseAborted`)return!0;throw e}),new Promise(e=>setTimeout(()=>e(!1),500))])}if(_){let e=await E();if(e)return e;F()}k.length>0&&await Promise.all(k).catch(()=>{})}catch(e){if(_){let e=await E();if(e)return e;F()}k.length>0&&await Promise.all(k).catch(()=>{});let r=ar(e),i=await cr(r),l=i.stack||rr(r)||``;r instanceof Error&&c?.recordException?.(r);let u=b.is(r);if(c?.setAttributes({...Lt(nr(r)),...Ge(i.message),...it(nr(r)),...gt(u?`fatal`:x.is(r)?`retryable`:`transient`),...Tt(!u)}),O.is(e))return U.info(`Workflow run already completed, skipping step`,{workflowRunId:n,stepId:a,message:e.message}),{type:`gone`};if(u){U.error(`Encountered FatalError while executing step, bubbling up to parent workflow`,{workflowRunId:n,stepName:o,errorStack:l}),_n.isNativeError(r)&&l&&(r.stack=l);try{await t.events.create(n,{eventType:`step_failed`,specVersion:5,correlationId:a,eventData:{stepName:o,error:await Ft(r,n,await f(),[],globalThis,d),...P}})}catch(e){if(T.is(e))return z.info(`Tried failing step, but step has already finished.`,{workflowRunId:n,stepId:a,stepName:o,message:e.message}),{type:`skipped`};throw e}return c?.setAttributes({...R(`failed`),...Oe(!0)}),{type:`failed`}}let p=S.attempt;if(c?.setAttributes({...zt(p),...te(h)}),p>=h+1){let r=S.attempt-1;U.error(`Max retries reached, bubbling error to parent workflow`,{workflowRunId:n,stepName:o,attempt:S.attempt,retryCount:r,errorStack:l});let u=new b(`Step "${o}" failed after ${h} ${s(`retry`,`retries`,h)}: ${i.message}`);u.cause=e,l&&(u.stack=l);try{await t.events.create(n,{eventType:`step_failed`,specVersion:5,correlationId:a,eventData:{stepName:o,error:await Ft(u,n,await f(),[],globalThis,d),...P}})}catch(e){if(T.is(e))return z.info(`Tried failing step, but step has already finished.`,{workflowRunId:n,stepId:a,stepName:o,message:e.message}),{type:`skipped`};throw e}return c?.setAttributes({...R(`failed`),...ct(!0)}),{type:`failed`}}x.is(e)?U.info(`Encountered RetryableError, step will be retried`,{workflowRunId:n,stepName:o,attempt:p,message:e.message}):U.info(`Encountered Error, step will be retried`,{workflowRunId:n,stepName:o,attempt:p,errorStack:l}),_n.isNativeError(e)&&l&&(e.stack=l);try{await t.events.create(n,{eventType:`step_retrying`,specVersion:5,correlationId:a,eventData:{stepName:o,error:await Ft(e,n,await f(),[],globalThis,d),...x.is(e)&&{retryAfter:e.retryAfter}}})}catch(e){if(T.is(e))return z.info(`Tried retrying step, but step has already finished.`,{workflowRunId:n,stepId:a,stepName:o,message:e.message}),{type:`skipped`};throw e}let m=Math.max(1,x.is(e)?Math.ceil((+e.retryAfter.getTime()-Date.now())/1e3):1);return c?.setAttributes({...M(m),...ot(!0)}),{type:`retry`,timeoutSeconds:m}}let I;try{I=await t.events.create(n,{eventType:`step_completed`,specVersion:5,correlationId:a,eventData:{stepName:o,workflowName:r,result:D,...P}},e.inlineDeltaSinceCursor===void 0?void 0:{sinceCursor:e.inlineDeltaSinceCursor})}catch(e){if(T.is(e))return z.info(`Tried completing step, but step has already finished.`,{workflowRunId:n,stepId:a,stepName:o,message:e.message}),{type:`skipped`};if(O.is(e))return U.info(`Workflow run already completed, skipping step`,{workflowRunId:n,stepId:a,message:e.message}),{type:`gone`};throw e}let ne=gr(I,e.inlineDeltaSinceCursor!==void 0);return c?.setAttributes({...R(`completed`),...ye(typeof D)}),A.length>0&&U.debug(`Step has pending ops`,{workflowRunId:n,stepName:o,opsCount:A.length}),{type:`completed`,hasPendingOps:!N,inlineDelta:ne}})}function vr(e){return e.hasCreatedEvent===!0&&e.ownerMessageId!==void 0&&e.sawRetrying!==!0}function yr(e,t){if(e.lastStartedAt===void 0)return 0;let n=zn(),r=e.lastStartedAt+n*1e3-t;return Math.min(n,Math.max(0,Math.ceil(r/1e3)))}function br(e){return`${e.correlationId}:backstop:${e.lastStartedAt}`}function xr(e,t,n){let r=new Map,i=new Set;for(let t of e)if(t.correlationId!==void 0)if(t.eventType===`step_started`){let e=`eventData`in t&&t.eventData&&`ownerMessageId`in t.eventData&&typeof t.eventData.ownerMessageId==`string`?t.eventData.ownerMessageId:void 0;r.set(t.correlationId,e)}else t.eventType===`step_retrying`&&i.add(t.correlationId);for(let e of t)if(e!==void 0&&!i.has(e)&&r.get(e)===n)return!0;return!1}const Sr=new Map;async function Cr(e,t,n){let r=`${e}:${t}`,i=Sr.get(r);if(i){z.warn(`Step execution already in flight in this process; awaiting its settlement instead of executing again`,{workflowRunId:e,stepId:t});try{await i}catch{}return{type:`skipped`}}let a=n();Sr.set(r,a);try{return await a}finally{Sr.delete(r)}}async function wr({runId:e,hookEvent:t,queueItem:n,requestId:r,createEvent:i}){try{return(await i(t,{requestId:r})).event?.eventType===`hook_conflict`?{hasHookConflict:!0,hasAwaitedHookCreation:!1}:{hasHookConflict:!1,hasAwaitedHookCreation:n.hasConflictAwaiter===!0}}catch(t){if(T.is(t))return z.info(`Hook already exists, continuing`,{workflowRunId:e,message:t.message}),{hasHookConflict:!1,hasAwaitedHookCreation:n.hasConflictAwaiter===!0};if(O.is(t))return z.info(`Workflow run already completed, skipping hook`,{workflowRunId:e,message:t.message}),{hasHookConflict:!1,hasAwaitedHookCreation:!1};throw t}}async function Tr({suspension:e,world:t,run:n,span:r,requestId:i,eventLog:a,runReadyBarrier:o}){let s=n.runId,c=async()=>{if(o)try{await o}catch{}},l=(e,n)=>a?dt(s,a,r=>t.events.create(s,e,{...n,stateUpdatedAt:r})):t.events.create(s,e,n),u=e.steps.filter(e=>e.type===`step`),d=e.steps.filter(e=>e.type===`hook`),f=e.steps.filter(e=>e.type===`wait`),p=e.steps.filter(e=>e.type===`attribute`),m=d.filter(e=>!e.hasCreatedEvent),h=new Map;for(let e of d){if(e.hasCreatedEvent&&!e.disposed)continue;let t=h.get(e.token);t?t.push(e):h.set(e.token,[e])}let g=await t.getEncryptionKeyForRun?.(n),_=g?await me(g):void 0,v=(n.specVersion??0)>=5;async function y(e){let t={eventType:`hook_disposed`,specVersion:5,correlationId:e.correlationId,eventData:{token:e.token}};try{await l(t,{requestId:i})}catch(t){if(T.is(t))z.info(`Hook already disposed, skipping duplicate disposal`,{workflowRunId:s,correlationId:e.correlationId,message:t.message});else if(O.is(t))z.info(`Workflow run already completed, skipping hook disposal`,{workflowRunId:s,correlationId:e.correlationId,message:t.message});else if(C.is(t))z.info(`Hook not found for disposal, continuing`,{workflowRunId:s,correlationId:e.correlationId,message:t.message});else throw t}}let x=!1,S=!1,w=0;if(h.size>0){let t=Date.now();await c(),await Promise.all([...h.values()].map(async t=>{for(let n of t){let t=!1;if(!n.hasCreatedEvent){let r=n.metadata===void 0?void 0:await Ue(n.metadata,s,_,e.globalThis,!1,v),a=await wr({runId:s,hookEvent:{eventType:`hook_created`,specVersion:5,correlationId:n.correlationId,eventData:{token:n.token,metadata:r,isWebhook:n.isWebhook??!1,...n.isSystem&&{isSystem:!0}}},queueItem:n,requestId:i,createEvent:l});x||=a.hasHookConflict,S||=a.hasAwaitedHookCreation,t=a.hasHookConflict}n.disposed&&!t&&await y(n)}})),w=Date.now()-t}let E=d.filter(e=>e.abortRequested&&!e.disposed);E.length>0&&(await c(),await Promise.all(E.map(async n=>{try{let r=await Ue({aborted:!0,reason:n.abortReason},s,_,e.globalThis,!1,v);await l({eventType:`hook_received`,specVersion:5,correlationId:n.correlationId,eventData:{token:n.token,payload:r}});try{let e=Bt(n.token);await t.streams.write(s,e,r),await t.streams.close(s,e)}catch{z.debug(`Failed to write abort stream packet, hook event will provide fallback`,{workflowRunId:s,correlationId:n.correlationId})}}catch(e){if(T.is(e)||O.is(e))z.info(`Workflow run already completed, skipping abort`,{workflowRunId:s,correlationId:n.correlationId,message:e.message});else throw e}})));let D=new Set(u.filter(e=>!e.hasCreatedEvent).map(e=>e.correlationId)),k=new Set,A=new Set(S===!1?u.filter(e=>D.has(e.correlationId)).slice(0,Pn()).map(e=>e.correlationId):[]),j=new Map,M=[];for(let t of u)D.has(t.correlationId)&&M.push((async()=>{let r=await Ue({args:t.args,closureVars:t.closureVars,thisVal:t.thisVal},s,_,e.globalThis,!1,v);if(A.has(t.correlationId)){j.set(t.correlationId,{correlationId:t.correlationId,stepName:t.stepName,dehydratedInput:r});return}let a={eventType:`step_created`,specVersion:5,correlationId:t.correlationId,eventData:{stepName:t.stepName,workflowName:n.workflowName,input:r}};try{await c(),await l(a,{requestId:i}),k.add(t.correlationId)}catch(e){if(T.is(e))z.info(`Step already exists, continuing`,{workflowRunId:s,correlationId:t.correlationId,message:e.message});else throw e}})());for(let e of f)e.hasCreatedEvent||M.push((async()=>{let t={eventType:`wait_created`,specVersion:5,correlationId:e.correlationId,eventData:{resumeAt:e.resumeAt}};try{await c(),await l(t,{requestId:i})}catch(t){if(T.is(t))z.info(`Wait already exists, continuing`,{workflowRunId:s,correlationId:e.correlationId,message:t.message});else throw t}})());for(let e of p)M.push((async()=>{try{await c(),await t.events.create(s,{eventType:`attr_set`,specVersion:5,correlationId:e.correlationId,eventData:{changes:e.changes,writer:{type:`workflow`},...e.allowReservedAttributes?{allowReservedAttributes:!0}:{}}},{requestId:i})}catch(t){if(T.is(t))z.info(`Workflow attribute event already exists, continuing`,{workflowRunId:s,correlationId:e.correlationId,message:t.message});else if(Er(t)){let e=new b(`setAttributes failed World validation: ${t instanceof Error?t.message:String(t)}`);throw e.cause=t,e}else throw t}})());await Promise.all(M);let N=[];for(let e of A){let t=j.get(e);t&&N.push(t)}let P=Date.now(),F;for(let e of f){let t=e.resumeAt.getTime(),n=Math.max(1e3,t-P),r=Math.ceil(n/1e3);(!F||r<F.seconds)&&(F={seconds:r,correlationId:e.correlationId})}return r?.setAttributes({...Y(`workflow_suspended`),...wt(u.length),...Ie(m.length),...Dt(f.length)}),{pendingSteps:u,createdStepCorrelationIds:k,lazyInlineSteps:N,waitTimeout:x?void 0:F,hasHookConflict:x,hasAwaitedHookCreation:S,hasAttributeEvents:p.length>0,hasHookEvents:m.length>0,hookCreationMs:w}}function Er(e){return e instanceof Ht||e instanceof Error&&e.name===`AttributeValidationError`?!0:p.is(e)&&e.status===400}const Dr=()=>Wt(`WORKFLOW_WAIT_CONTINUATION_MAX_DELAY_SECONDS`,82800,{integer:!0,min:1}),Or=()=>Wt(`WORKFLOW_NEAR_ELAPSED_WAIT_THRESHOLD_SECONDS`,2);function kr(e,t,n=Date.now()){let r=Dr();if(e<=Math.min(Or(),r))return{delaySeconds:e,idempotencyKey:`${t}:${Math.floor(n/1e3)}`};let i=Math.ceil(e/r);return{delaySeconds:Math.min(e,r),idempotencyKey:i===1?t:`${t}:hop-${i}`}}var Ar=44,jr=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,Mr=new Uint8Array(64),Nr=new Uint8Array(128);for(let e=0;e<jr.length;e++){let t=jr.charCodeAt(e);Mr[e]=t,Nr[t]=e}function Pr(e,t){let n=0,r=0,i=0;do i=Nr[e.next()],n|=(i&31)<<r,r+=5;while(i&32);let a=n&1;return n>>>=1,a&&(n=-2147483648|-n),t+n}function Fr(e,t){return e.pos>=t?!1:e.peek()!==Ar}var Ir=class{constructor(e){this.pos=0,this.buffer=e}next(){return this.buffer.charCodeAt(this.pos++)}peek(){return this.buffer.charCodeAt(this.pos)}indexOf(e){let{buffer:t,pos:n}=this,r=t.indexOf(e,n);return r===-1?t.length:r}};function Lr(e){let{length:t}=e,n=new Ir(e),r=[],i=0,a=0,o=0,s=0,c=0;do{let e=n.indexOf(`;`),t=[],l=!0,u=0;for(i=0;n.pos<e;){let r;i=Pr(n,i),i<u&&(l=!1),u=i,Fr(n,e)?(a=Pr(n,a),o=Pr(n,o),s=Pr(n,s),Fr(n,e)?(c=Pr(n,c),r=[i,a,o,s,c]):r=[i,a,o,s]):r=[i],t.push(r),n.pos++}l||Rr(t),r.push(t),n.pos=e+1}while(n.pos<=t);return r}function Rr(e){e.sort(zr)}function zr(e,t){return e[0]-t[0]}const Br=/^[\w+.-]+:\/\//,Vr=/^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/,Hr=/^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;function Ur(e){return Br.test(e)}function Wr(e){return e.startsWith(`//`)}function Gr(e){return e.startsWith(`/`)}function Kr(e){return e.startsWith(`file:`)}function qr(e){return/^[.?#]/.test(e)}function Jr(e){let t=Vr.exec(e);return Xr(t[1],t[2]||``,t[3],t[4]||``,t[5]||`/`,t[6]||``,t[7]||``)}function Yr(e){let t=Hr.exec(e),n=t[2];return Xr(`file:`,``,t[1]||``,``,Gr(n)?n:`/`+n,t[3]||``,t[4]||``)}function Xr(e,t,n,r,i,a,o){return{scheme:e,user:t,host:n,port:r,path:i,query:a,hash:o,type:7}}function Zr(e){if(Wr(e)){let t=Jr(`http:`+e);return t.scheme=``,t.type=6,t}if(Gr(e)){let t=Jr(`http://foo.com`+e);return t.scheme=``,t.host=``,t.type=5,t}if(Kr(e))return Yr(e);if(Ur(e))return Jr(e);let t=Jr(`http://foo.com/`+e);return t.scheme=``,t.host=``,t.type=e?e.startsWith(`?`)?3:e.startsWith(`#`)?2:4:1,t}function Qr(e){if(e.endsWith(`/..`))return e;let t=e.lastIndexOf(`/`);return e.slice(0,t+1)}function $r(e,t){ei(t,t.type),e.path===`/`?e.path=t.path:e.path=Qr(t.path)+e.path}function ei(e,t){let n=t<=4,r=e.path.split(`/`),i=1,a=0,o=!1;for(let e=1;e<r.length;e++){let t=r[e];if(!t){o=!0;continue}if(o=!1,t!==`.`){if(t===`..`){a?(o=!0,a--,i--):n&&(r[i++]=t);continue}r[i++]=t,a++}}let s=``;for(let e=1;e<i;e++)s+=`/`+r[e];(!s||o&&!s.endsWith(`/..`))&&(s+=`/`),e.path=s}function ti(e,t){if(!e&&!t)return``;let n=Zr(e),r=n.type;if(t&&r!==7){let e=Zr(t),i=e.type;switch(r){case 1:n.hash=e.hash;case 2:n.query=e.query;case 3:case 4:$r(n,e);case 5:n.user=e.user,n.host=e.host,n.port=e.port;case 6:n.scheme=e.scheme}i>r&&(r=i)}ei(n,r);let i=n.query+n.hash;switch(r){case 2:case 3:return i;case 4:{let r=n.path.slice(1);return r?qr(t||e)&&!qr(r)?`./`+r+i:r+i:i||`.`}case 5:return n.path+i;default:return n.scheme+`//`+n.user+n.host+n.port+n.path+i}}function ni(e){if(!e)return``;let t=e.lastIndexOf(`/`);return e.slice(0,t+1)}function ri(e,t){let n=ni(e),r=t?t+`/`:``;return e=>ti(r+(e||``),n)}var $=0,ii=1,ai=2,oi=3,si=4;function ci(e,t){let n=li(e,0);if(n===e.length)return e;t||(e=e.slice());for(let r=n;r<e.length;r=li(e,r+1))e[r]=di(e[r],t);return e}function li(e,t){for(let n=t;n<e.length;n++)if(!ui(e[n]))return n;return e.length}function ui(e){for(let t=1;t<e.length;t++)if(e[t][$]<e[t-1][$])return!1;return!0}function di(e,t){return t||(e=e.slice()),e.sort(fi)}function fi(e,t){return e[$]-t[$]}var pi=!1;function mi(e,t,n,r){for(;n<=r;){let i=n+(r-n>>1),a=e[i][$]-t;if(a===0)return pi=!0,i;a<0?n=i+1:r=i-1}return pi=!1,n-1}function hi(e,t,n){for(let r=n+1;r<e.length&&e[r][$]===t;n=r++);return n}function gi(e,t,n){for(let r=n-1;r>=0&&e[r][$]===t;n=r--);return n}function _i(){return{lastKey:-1,lastNeedle:-1,lastIndex:-1}}function vi(e,t,n,r){let{lastKey:i,lastNeedle:a,lastIndex:o}=n,s=0,c=e.length-1;if(r===i){if(t===a)return pi=o!==-1&&e[o][$]===t,o;t>=a?s=o===-1?0:o:c=o}return n.lastKey=r,n.lastNeedle=t,n.lastIndex=mi(e,t,s,c)}function yi(e){return typeof e==`string`?JSON.parse(e):e}var bi="`line` must be greater than 0 (lines start at line 1)",xi="`column` must be greater than or equal to 0 (columns start at column 0)",Si=class{constructor(e,t){let n=typeof e==`string`;if(!n&&e._decodedMemo)return e;let r=yi(e),{version:i,file:a,names:o,sourceRoot:s,sources:c,sourcesContent:l}=r;this.version=i,this.file=a,this.names=o||[],this.sourceRoot=s,this.sources=c,this.sourcesContent=l,this.ignoreList=r.ignoreList||r.x_google_ignoreList||void 0;let u=ri(t,s);this.resolvedSources=c.map(u);let{mappings:d}=r;if(typeof d==`string`)this._encoded=d,this._decoded=void 0;else if(Array.isArray(d))this._encoded=void 0,this._decoded=ci(d,n);else if(r.sections)throw Error(`TraceMap passed sectioned source map, please use FlattenMap export instead`);else throw Error(`invalid source map: ${JSON.stringify(r)}`);this._decodedMemo=_i(),this._bySources=void 0,this._bySourceMemos=void 0}};function Ci(e){return e}function wi(e){var t;return(t=Ci(e))._decoded||(t._decoded=Lr(Ci(e)._encoded))}function Ti(e,t){let{line:n,column:r,bias:i}=t;if(n--,n<0)throw Error(bi);if(r<0)throw Error(xi);let a=wi(e);if(n>=a.length)return Ei(null,null,null,null);let o=a[n],s=Di(o,Ci(e)._decodedMemo,n,r,i||1);if(s===-1)return Ei(null,null,null,null);let c=o[s];if(c.length===1)return Ei(null,null,null,null);let{names:l,resolvedSources:u}=e;return Ei(u[c[ii]],c[ai]+1,c[oi],c.length===5?l[c[si]]:null)}function Ei(e,t,n,r){return{source:e,line:t,column:n,name:r}}function Di(e,t,n,r,i){let a=vi(e,r,t,n);return pi?a=(i===-1?hi:gi)(e,r,a):i===-1&&a++,a===-1||a===e.length?-1:a}function Oi(e){return e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||e===43||e===47||e===61}function ki(e){let t=0;for(;t<e.length;){let n=e.indexOf(`//# sourceMappingURL=data:application/json`,t);if(n===-1)return;let r=e.indexOf(`;base64,`,n+42);if(r===-1){t=n+42;continue}let i=e.indexOf(`,`,n);if(i!==-1&&i<r){t=r+8;continue}let a=r+8,o=a;for(;o<e.length&&Oi(e.charCodeAt(o));)o++;if(o>a)return e.slice(a,o);t=o}}const Ai=new Map;function ji(e){let t=Ai.get(e);if(t!==void 0)return Ai.delete(e),Ai.set(e,t),t;let n=null,r=ki(e);if(r)try{let e=Buffer.from(r,`base64`).toString(`utf-8`);n=new Si(JSON.parse(e))}catch{n=null}for(Ai.set(e,n);Ai.size>8;){let e=Ai.keys().next().value;if(e===void 0)break;Ai.delete(e)}return n}function Mi(e,t,n){if(!e.includes(t))return e;let r=ji(n);if(!r)return e;try{return e.split(`
|
|
2
|
+
`).map(e=>{let n=e.match(/^\s*at\s+(?:(.+?)\s+\()?(.+?):(\d+):(\d+)\)?$/);if(!n)return e;let[,i,a,o,s]=n;if(!a.includes(t))return e;let c=parseInt(o,10),l=parseInt(s,10),u=Ti(r,{line:c,column:l});if(u.source&&u.line!==null){let e=i||u.name||`anonymous`,t=u.column===null?l:u.column;return` at ${e} (${u.source}:${u.line}:${t})`}return e}).join(`
|
|
3
|
+
`)}catch{return e}}const Ni=4096;function Pi(e){if(e===null)return!0;let t=typeof e;return t===`object`||t===`function`?!1:t===`string`?e.length<=Ni:t===`bigint`?e.toString().length<=Ni:!0}function Fi(){return new Map}async function Ii(e,t,n){if(!e||t===void 0)return n();if(e.has(t))return e.get(t);let r=await n();return Pi(r)&&e.set(t,r),r}function Li(e,t,n){let r=(2<<31-Math.clz32(e.length-1|1))-1,i=Math.ceil(1.6*r*t/e.length);return(a=t)=>{if(!a)return``;let o=``;for(;;){let t=n(i),s=i;for(;s--;)if(o+=e[t[s]&r]||``,o.length>=a)return o}}}function Ri(e){return function(t,n){let r=function(...r){let{promise:i,resolve:o,reject:s}=a(),c=`step_${e.generateUlid()}`,l={type:`step`,correlationId:c,stepName:t,args:r};this!==void 0&&this!==null&&this!==globalThis&&(l.thisVal=this);let u=n?.();return u&&(l.closureVars=u),e.invocationsQueue.set(c,l),U.debug(`Step consumer setup`,{correlationId:c,stepName:t,args:r}),e.eventsConsumer.subscribe(n=>{if(!n)return X(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),V.NotConsumed;if(U.debug(`Step consumer event processing`,{correlationId:c,stepName:t,args:r.join(`, `),incomingCorrelationId:n.correlationId,isMatch:c===n.correlationId,eventType:n.eventType}),n.correlationId!==c)return V.NotConsumed;let i=`eventData`in n&&n.eventData&&`stepName`in n.eventData?n.eventData.stepName:void 0;if(typeof i==`string`&&i!==t)return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new _(`Replay divergence: step event ${n.eventType} for ${c} belongs to "${i}", but the current step consumer is "${t}"`,{eventId:n.eventId}))}),V.Finished;if(n.eventType===`step_created`){let r=e.invocationsQueue.get(c);return!r||r.type!==`step`?(e.promiseQueue=e.promiseQueue.then(()=>{s(new _(`Replay divergence: step ${c} (${t}) created but not found in invocation queue`,{eventId:n.eventId}))}),V.Finished):(r.hasCreatedEvent=!0,V.Consumed)}if(n.eventType===`step_started`){let t=e.invocationsQueue.get(c);return t&&t.type===`step`&&(t.ownerMessageId=`eventData`in n&&n.eventData&&`ownerMessageId`in n.eventData&&typeof n.eventData.ownerMessageId==`string`?n.eventData.ownerMessageId:void 0,t.lastStartedAt=+n.createdAt),V.Consumed}if(n.eventType===`step_retrying`){let t=e.invocationsQueue.get(c);return t&&t.type===`step`&&(t.sawRetrying=!0,t.ownerMessageId=void 0),V.Consumed}if(n.eventType===`step_failed`)return e.invocationsQueue.delete(n.correlationId),e.promiseQueue=e.promiseQueue.then(async()=>{try{s(await j(n.eventData.error,e.runId,e.encryptionKey,e.globalThis))}catch(e){U.error(`Failed to hydrate step_failed error`,{correlationId:n.correlationId,error:e instanceof Error?e.message:String(e)}),s(new b(`Failed to hydrate step error: ${e instanceof Error?e.message:String(e)}`))}}),V.Finished;if(n.eventType===`step_completed`){e.invocationsQueue.delete(n.correlationId);let t=n.eventId,r=n.eventData.result;return e.pendingDeliveries++,e.promiseQueue=e.promiseQueue.then(async()=>{try{o(await Ii(e.stepHydrationCache,t,()=>at(r,e.runId,e.encryptionKey,e.globalThis)))}catch(e){s(e)}finally{e.pendingDeliveries--}}),V.Finished}return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new _(`Replay divergence: Unexpected event type for step ${c} (name: ${t}) "${n.eventType}"`,{eventId:n.eventId}))}),V.Finished}),i},i=t.split(`//`).pop();return Object.defineProperty(r,"name",{value:i}),Object.defineProperty(r,"stepId",{value:t,writable:!1,enumerable:!1,configurable:!1}),n&&Object.defineProperty(r,"__closureVarsFn",{value:n,writable:!1,enumerable:!1,configurable:!1}),Object.defineProperty(r,"bind",{value:function(e,...r){let i=Function.prototype.bind.call(this,e,...r);return Object.defineProperty(i,"stepId",{value:t,writable:!1,enumerable:!1,configurable:!1}),n&&Object.defineProperty(i,"__closureVarsFn",{value:n,writable:!1,enumerable:!1,configurable:!1}),Object.defineProperty(i,"__boundThis",{value:e,writable:!1,enumerable:!1,configurable:!1}),r.length>0&&Object.defineProperty(i,"__boundArgs",{value:r,writable:!1,enumerable:!1,configurable:!1}),i},writable:!1,enumerable:!1,configurable:!1}),r}}var zi=r(((e,t)=>{(function(e,t,n){function r(e){var t=this,n=o();t.next=function(){var e=2091639*t.s0+t.c*23283064365386963e-26;return t.s0=t.s1,t.s1=t.s2,t.s2=e-(t.c=e|0)},t.c=1,t.s0=n(` `),t.s1=n(` `),t.s2=n(` `),t.s0-=n(e),t.s0<0&&(t.s0+=1),t.s1-=n(e),t.s1<0&&(t.s1+=1),t.s2-=n(e),t.s2<0&&(t.s2+=1),n=null}function i(e,t){return t.c=e.c,t.s0=e.s0,t.s1=e.s1,t.s2=e.s2,t}function a(e,t){var n=new r(e),a=t&&t.state,o=n.next;return o.int32=function(){return n.next()*4294967296|0},o.double=function(){return o()+(o()*2097152|0)*11102230246251565e-32},o.quick=o,a&&(typeof a==`object`&&i(a,n),o.state=function(){return i(n,{})}),o}function o(){var e=4022871197;return function(t){t=String(t);for(var n=0;n<t.length;n++){e+=t.charCodeAt(n);var r=.02519603282416938*e;e=r>>>0,r-=e,r*=e,e=r>>>0,r-=e,e+=r*4294967296}return(e>>>0)*23283064365386963e-26}}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.alea=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Bi=r(((e,t)=>{(function(e,t,n){function r(e){var t=this,n=``;t.x=0,t.y=0,t.z=0,t.w=0,t.next=function(){var e=t.x^t.x<<11;return t.x=t.y,t.y=t.z,t.z=t.w,t.w^=t.w>>>19^e^e>>>8},e===(e|0)?t.x=e:n+=e;for(var r=0;r<n.length+64;r++)t.x^=n.charCodeAt(r)|0,t.next()}function i(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t}function a(e,t){var n=new r(e),a=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},o.int32=n.next,o.quick=o,a&&(typeof a==`object`&&i(a,n),o.state=function(){return i(n,{})}),o}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.xor128=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Vi=r(((e,t)=>{(function(e,t,n){function r(e){var t=this,n=``;t.next=function(){var e=t.x^t.x>>>2;return t.x=t.y,t.y=t.z,t.z=t.w,t.w=t.v,(t.d=t.d+362437|0)+(t.v=t.v^t.v<<4^(e^e<<1))|0},t.x=0,t.y=0,t.z=0,t.w=0,t.v=0,e===(e|0)?t.x=e:n+=e;for(var r=0;r<n.length+64;r++)t.x^=n.charCodeAt(r)|0,r==n.length&&(t.d=t.x<<10^t.x>>>4),t.next()}function i(e,t){return t.x=e.x,t.y=e.y,t.z=e.z,t.w=e.w,t.v=e.v,t.d=e.d,t}function a(e,t){var n=new r(e),a=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},o.int32=n.next,o.quick=o,a&&(typeof a==`object`&&i(a,n),o.state=function(){return i(n,{})}),o}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.xorwow=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Hi=r(((e,t)=>{(function(e,t,n){function r(e){var t=this;t.next=function(){var e=t.x,n=t.i,r=e[n],i;return r^=r>>>7,i=r^r<<24,r=e[n+1&7],i^=r^r>>>10,r=e[n+3&7],i^=r^r>>>3,r=e[n+4&7],i^=r^r<<7,r=e[n+7&7],r^=r<<13,i^=r^r<<9,e[n]=i,t.i=n+1&7,i};function n(e,t){var n,r=[];if(t===(t|0))r[0]=t;else for(t=``+t,n=0;n<t.length;++n)r[n&7]=r[n&7]<<15^t.charCodeAt(n)+r[n+1&7]<<13;for(;r.length<8;)r.push(0);for(n=0;n<8&&r[n]===0;++n);for(n==8?r[7]=-1:r[n],e.x=r,e.i=0,n=256;n>0;--n)e.next()}n(t,e)}function i(e,t){return t.x=e.x.slice(),t.i=e.i,t}function a(e,t){e??=+new Date;var n=new r(e),a=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},o.int32=n.next,o.quick=o,a&&(a.x&&i(a,n),o.state=function(){return i(n,{})}),o}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.xorshift7=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Ui=r(((e,t)=>{(function(e,t,n){function r(e){var t=this;t.next=function(){var e=t.w,n=t.X,r=t.i,i,a;return t.w=e=e+1640531527|0,a=n[r+34&127],i=n[r=r+1&127],a^=a<<13,i^=i<<17,a^=a>>>15,i^=i>>>12,a=n[r]=a^i,t.i=r,a+(e^e>>>16)|0};function n(e,t){var n,r,i,a,o,s=[],c=128;for(t===(t|0)?(r=t,t=null):(t+=`\0`,r=0,c=Math.max(c,t.length)),i=0,a=-32;a<c;++a)t&&(r^=t.charCodeAt((a+32)%t.length)),a===0&&(o=r),r^=r<<10,r^=r>>>15,r^=r<<4,r^=r>>>13,a>=0&&(o=o+1640531527|0,n=s[a&127]^=r+o,i=n==0?i+1:0);for(i>=128&&(s[(t&&t.length||0)&127]=-1),i=127,a=512;a>0;--a)r=s[i+34&127],n=s[i=i+1&127],r^=r<<13,n^=n<<17,r^=r>>>15,n^=n>>>12,s[i]=r^n;e.w=o,e.X=s,e.i=i}n(t,e)}function i(e,t){return t.i=e.i,t.w=e.w,t.X=e.X.slice(),t}function a(e,t){e??=+new Date;var n=new r(e),a=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},o.int32=n.next,o.quick=o,a&&(a.X&&i(a,n),o.state=function(){return i(n,{})}),o}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.xor4096=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Wi=r(((e,t)=>{(function(e,t,n){function r(e){var t=this,n=``;t.next=function(){var e=t.b,n=t.c,r=t.d,i=t.a;return e=e<<25^e>>>7^n,n=n-r|0,r=r<<24^r>>>8^i,i=i-e|0,t.b=e=e<<20^e>>>12^n,t.c=n=n-r|0,t.d=r<<16^n>>>16^i,t.a=i-e|0},t.a=0,t.b=0,t.c=-1640531527,t.d=1367130551,e===Math.floor(e)?(t.a=e/4294967296|0,t.b=e|0):n+=e;for(var r=0;r<n.length+20;r++)t.b^=n.charCodeAt(r)|0,t.next()}function i(e,t){return t.a=e.a,t.b=e.b,t.c=e.c,t.d=e.d,t}function a(e,t){var n=new r(e),a=t&&t.state,o=function(){return(n.next()>>>0)/4294967296};return o.double=function(){do var e=((n.next()>>>11)+(n.next()>>>0)/4294967296)/(1<<21);while(e===0);return e},o.int32=n.next,o.quick=o,a&&(typeof a==`object`&&i(a,n),o.state=function(){return i(n,{})}),o}t&&t.exports?t.exports=a:n&&n.amd?n(function(){return a}):this.tychei=a})(e,typeof t==`object`&&t,typeof define==`function`&&define)})),Gi=r(((e,n)=>{(function(e,r,i){var a=256,o=6,s=52,c=`random`,l=i.pow(a,o),u=i.pow(2,s),d=u*2,f=a-1,p;function m(e,t,n){var s=[];t=t==1?{entropy:!0}:t||{};var f=v(_(t.entropy?[e,b(r)]:e??y(),3),s),p=new h(s),m=function(){for(var e=p.g(o),t=l,n=0;e<u;)e=(e+n)*a,t*=a,n=p.g(1);for(;e>=d;)e/=2,t/=2,n>>>=1;return(e+n)/t};return m.int32=function(){return p.g(4)|0},m.quick=function(){return p.g(4)/4294967296},m.double=m,v(b(p.S),r),(t.pass||n||function(e,t,n,r){return r&&(r.S&&g(r,p),e.state=function(){return g(p,{})}),n?(i[c]=e,t):e})(m,f,`global`in t?t.global:this==i,t.state)}function h(e){var t,n=e.length,r=this,i=0,o=r.i=r.j=0,s=r.S=[];for(n||(e=[n++]);i<a;)s[i]=i++;for(i=0;i<a;i++)s[i]=s[o=f&o+e[i%n]+(t=s[i])],s[o]=t;(r.g=function(e){for(var t,n=0,i=r.i,o=r.j,s=r.S;e--;)t=s[i=f&i+1],n=n*a+s[f&(s[i]=s[o=f&o+t])+(s[o]=t)];return r.i=i,r.j=o,n})(a)}function g(e,t){return t.i=e.i,t.j=e.j,t.S=e.S.slice(),t}function _(e,t){var n=[],r=typeof e,i;if(t&&r==`object`)for(i in e)try{n.push(_(e[i],t-1))}catch{}return n.length?n:r==`string`?e:e+`\0`}function v(e,t){for(var n=e+``,r,i=0;i<n.length;)t[f&i]=f&(r^=t[f&i]*19)+n.charCodeAt(i++);return b(t)}function y(){try{var t;return p&&(t=p.randomBytes)?t=t(a):(t=new Uint8Array(a),(e.crypto||e.msCrypto).getRandomValues(t)),b(t)}catch{var n=e.navigator,i=n&&n.plugins;return[+new Date,e,i,e.screen,b(r)]}}function b(e){return String.fromCharCode.apply(0,e)}if(v(i.random(),r),typeof n==`object`&&n.exports){n.exports=m;try{p=t(`crypto`)}catch{}}else typeof define==`function`&&define.amd?define(function(){return m}):i[`seed`+c]=m})(typeof self<`u`?self:e,[],Math)})),Ki=e(r(((e,t)=>{var n=zi(),r=Bi(),i=Vi(),a=Hi(),o=Ui(),s=Wi(),c=Gi();c.alea=n,c.xor128=r,c.xorwow=i,c.xorshift7=a,c.xor4096=o,c.tychei=s,t.exports=c}))(),1);const qi=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/`,Ji=new Uint8Array(128).fill(255);for(let e=0;e<64;e++)Ji[qi.charCodeAt(e)]=e;function Yi(e){return e===9||e===10||e===12||e===13||e===32}function Xi(e,t){for(;t<e.length&&Yi(e.charCodeAt(t));)t++;return t}function Zi(e,t){let n=e.length,r=e;n===2?r=e+`AA`:n===3&&(r=e+`A`);let i=Ji[r.charCodeAt(0)],a=Ji[r.charCodeAt(1)],o=Ji[r.charCodeAt(2)],s=Ji[r.charCodeAt(3)],c=i<<2|a>>4,l=(a&15)<<4|o>>2,u=(o&3)<<6|s;if(n===2){if(t&&l!==0)throw SyntaxError(`Extra bits in base64 chunk`);return[c]}if(n===3){if(t&&u!==0)throw SyntaxError(`Extra bits in base64 chunk`);return[c,l]}return[c,l,u]}function Qi(e,t,n,r){if(r===void 0&&(r=2**53-1),r===0)return{read:0,bytes:[],error:null};let i=0,a=[],o=``,s=0,c=0,l=e.length;for(;;){if(c=Xi(e,c),c===l){if(s>0){if(n===`stop-before-partial`)return{read:i,bytes:a,error:null};if(n===`loose`){if(s===1)return{read:i,bytes:a,error:SyntaxError(`Invalid base64: lone character in final chunk`)};a.push(...Zi(o,!1))}else return{read:i,bytes:a,error:SyntaxError(`Invalid base64: incomplete chunk in strict mode`)}}return{read:l,bytes:a,error:null}}let u=e[c];if(c++,u===`=`){if(s<2)return{read:i,bytes:a,error:SyntaxError(`Invalid base64: padding in unexpected place`)};if(c=Xi(e,c),s===2){if(c===l)return n===`stop-before-partial`?{read:i,bytes:a,error:null}:{read:i,bytes:a,error:SyntaxError(`Invalid base64: missing second padding character`)};u=e[c],u===`=`&&(c=Xi(e,c+1))}if(c<l)return{read:i,bytes:a,error:SyntaxError(`Invalid base64: unexpected characters after padding`)};let t=n===`strict`;try{a.push(...Zi(o,t))}catch(e){return{read:i,bytes:a,error:e}}return{read:l,bytes:a,error:null}}if(t===`base64url`){if(u===`+`||u===`/`)return{read:i,bytes:a,error:SyntaxError(`Invalid base64url: unexpected character '${u}'`)};u===`-`?u=`+`:u===`_`&&(u=`/`)}let d=u.charCodeAt(0);if(d>=128||Ji[d]===255)return{read:i,bytes:a,error:SyntaxError(`Invalid base64: unexpected character '${e[c-1]}'`)};let f=r-a.length;if(f===1&&s===2||f===2&&s===3||(o+=u,s=o.length,s===4&&(a.push(...Zi(o)),o=``,s=0,i=c,a.length===r)))return{read:i,bytes:a,error:null}}}function $i(e,t){t===void 0&&(t=2**53-1);let n=e.length,r=[],i=0;if(n%2!=0)return{read:0,bytes:[],error:SyntaxError(`Invalid hex: string length must be even`)};for(;i<n&&r.length<t;){let t=e.substring(i,i+2);if(!/^[0-9a-fA-F]{2}$/.test(t))return{read:i,bytes:r,error:SyntaxError(`Invalid hex: unexpected character at position ${i}`)};i+=2,r.push(Number.parseInt(t,16))}return{read:i,bytes:r,error:null}}function ea(e,t){let n=t?.alphabet??`base64`;if(n!==`base64`&&n!==`base64url`)throw TypeError(`Invalid alphabet: expected "base64" or "base64url", got "${n}"`);let r=!!t?.omitPadding,i=``,a=e.length;for(let t=0;t<a;t+=3){let n=e[t],o=t+1<a?e[t+1]:0,s=t+2<a?e[t+2]:0;i+=qi[n>>2&63],i+=qi[(n&3)<<4|o>>4&15],t+1<a?i+=qi[(o&15)<<2|s>>6&3]:r||(i+=`=`),t+2<a?i+=qi[s&63]:r||(i+=`=`)}return n===`base64url`&&(i=i.replace(/\+/g,`-`).replace(/\//g,`_`)),i}function ta(e){let t=``;for(let n=0;n<e.length;n++)t+=e[n].toString(16).padStart(2,`0`);return t}function na(e){let t=e.prototype,n=e;t.toBase64||Object.defineProperty(t,"toBase64",{value:function(t){if(!(this instanceof e))throw TypeError(`this is not a Uint8Array`);return ea(this,t)},writable:!0,enumerable:!1,configurable:!0}),t.toHex||Object.defineProperty(t,"toHex",{value:function(){if(!(this instanceof e))throw TypeError(`this is not a Uint8Array`);return ta(this)},writable:!0,enumerable:!1,configurable:!0}),t.setFromBase64||Object.defineProperty(t,"setFromBase64",{value:function(t,n){if(!(this instanceof e))throw TypeError(`this is not a Uint8Array`);if(typeof t!=`string`)throw TypeError(`expected a string`);let r=n?.alphabet??`base64`;if(r!==`base64`&&r!==`base64url`)throw TypeError(`Invalid alphabet: expected "base64" or "base64url", got "${r}"`);let i=n?.lastChunkHandling??`loose`;if(i!==`loose`&&i!==`strict`&&i!==`stop-before-partial`)throw TypeError(`Invalid lastChunkHandling: expected "loose", "strict", or "stop-before-partial", got "${i}"`);let a=Qi(t,r,i,this.length),o=a.bytes,s=o.length;for(let e=0;e<s;e++)this[e]=o[e];if(a.error)throw a.error;return{read:a.read,written:s}},writable:!0,enumerable:!1,configurable:!0}),t.setFromHex||Object.defineProperty(t,"setFromHex",{value:function(t){if(!(this instanceof e))throw TypeError(`this is not a Uint8Array`);if(typeof t!=`string`)throw TypeError(`expected a string`);let n=$i(t,this.length),r=n.bytes,i=r.length;for(let e=0;e<i;e++)this[e]=r[e];if(n.error)throw n.error;return{read:n.read,written:i}},writable:!0,enumerable:!1,configurable:!0}),n.fromBase64||Object.defineProperty(e,"fromBase64",{value:function(t,n){if(typeof t!=`string`)throw TypeError(`expected a string`);let r=n?.alphabet??`base64`;if(r!==`base64`&&r!==`base64url`)throw TypeError(`Invalid alphabet: expected "base64" or "base64url", got "${r}"`);let i=n?.lastChunkHandling??`loose`;if(i!==`loose`&&i!==`strict`&&i!==`stop-before-partial`)throw TypeError(`Invalid lastChunkHandling: expected "loose", "strict", or "stop-before-partial", got "${i}"`);let a=Qi(t,r,i);if(a.error)throw a.error;return new e(a.bytes)},writable:!0,enumerable:!1,configurable:!0}),n.fromHex||Object.defineProperty(e,"fromHex",{value:function(t){if(typeof t!=`string`)throw TypeError(`expected a string`);let n=$i(t);if(n.error)throw n.error;return new e(n.bytes)},writable:!0,enumerable:!1,configurable:!0})}function ra(e){return function(){let t=`0123456789abcdef`,n=``;for(let r=0;r<36;r++)r===8||r===13||r===18||r===23?n+=`-`:r===14?n+=`4`:r===19?n+=t[Math.floor(e()*4)+8]:n+=t[Math.floor(e()*16)];return n}}function ia(e){let{fixedTimestamp:t}=e,{seed:n}=e,r=(0,Ki.default)(n),i=bn(),a=xn(`globalThis`,i);a.Math.random=r;let o=a.Date;a.Date=function(...e){return e.length===0?new o(t):new o(...e)},a.Date.prototype=o.prototype,Object.setPrototypeOf(a.Date,o),a.Date.now=()=>t;let s=globalThis.crypto,c=s.subtle;function l(e){for(let t=0;t<e.length;t++)e[t]=Math.floor(r()*256);return e}let u=ra(r),d=c.digest.bind(c);return a.crypto=new Proxy(s,{get(e,t){return t===`getRandomValues`?l:t===`randomUUID`?u:t===`subtle`?new Proxy(c,{get(e,t){return t===`generateKey`?()=>{throw new m("`crypto.subtle.generateKey()` is not available inside a workflow function. Move key generation to a step function where full Node.js crypto is available.")}:t===`digest`?d:e[t]}}):e[t]}}),a.process={env:Object.freeze({...process.env})},a.DOMException=globalThis.DOMException,a.Headers=globalThis.Headers,a.TextEncoder=globalThis.TextEncoder,a.TextDecoder=globalThis.TextDecoder,a.console=globalThis.console,a.URL=globalThis.URL,a.URLSearchParams=globalThis.URLSearchParams,a.structuredClone=globalThis.structuredClone,a.atob=globalThis.atob,a.btoa=globalThis.btoa,na(a.Uint8Array),a.Symbol.dispose??=Symbol.for(`Symbol.dispose`),a.Symbol.asyncDispose??=Symbol.for(`Symbol.asyncDispose`),a.exports={},a.module={exports:a.exports},{context:i,globalThis:a,updateTimestamp:e=>{t=e}}}const aa=new Map;function oa(e){let t=aa.get(e);if(t!==void 0)return aa.delete(e),aa.set(e,t),t}function sa(e,t){let n=oa(e);if(n===void 0)for(n=new Map,aa.set(e,n);aa.size>8;){let e=aa.keys().next().value;if(e===void 0)break;aa.delete(e)}let r=n.get(t);return r===void 0&&(r=new yn(e,{filename:t}),n.set(t,r)),r}function ca(e,t,n){return sa(e,t).runInContext(n)}function la(e){return async function(t,n={}){let{promise:r,resolve:i}=a(),o=`attr_${e.generateUlid()}`,s={type:`attribute`,correlationId:o,changes:t,...n.allowReservedAttributes===!0?{allowReservedAttributes:!0}:{}};return e.invocationsQueue.set(o,s),e.eventsConsumer.subscribe(r=>r?r.correlationId===o?r.eventType!==`attr_set`||r.eventData.writer.type!==`workflow`||JSON.stringify(r.eventData.changes)!==JSON.stringify(t)||r.eventData.allowReservedAttributes===!0!=(n.allowReservedAttributes===!0)?(e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new _(`Replay divergence: Unexpected attribute event for ${o}`,{eventId:r.eventId}))}),V.Finished):(e.invocationsQueue.delete(o),e.promiseQueue=e.promiseQueue.then(()=>{i()}),V.Finished):V.NotConsumed:(X(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),V.NotConsumed)),r}}function ua(e,t){if(typeof t!=`string`)return null;let n=bt(qe,e.globalThis),r=n?.[ke];return typeof r==`function`?r.call(n,{runId:t}):null}function da(e){return function(t={}){if(t.token===``)throw Error("`createHook()` was called with an empty string token. Pass a non-empty token, or omit the `token` option to use a randomly generated one.");let n=`hook_${e.generateUlid()}`,r=t.token??e.generateNanoid(),i=t.isWebhook??!1;e.invocationsQueue.set(n,{type:`hook`,correlationId:n,token:r,metadata:t.metadata,isWebhook:i});let o=[],s=[],c=[],l=!1,u=!1,d=!1,f=!1,p=null,m=null;Fe.debug(`Hook consumer setup`,{correlationId:n,token:r}),e.eventsConsumer.subscribe(t=>{if(!t)return l=!0,(s.length>0&&o.length===0||c.length>0&&!u&&!f)&&X(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),V.NotConsumed;if(t.correlationId!==n)return V.NotConsumed;let i=`eventData`in t&&t.eventData&&`token`in t.eventData?t.eventData.token:void 0;if(typeof i==`string`&&i!==r)return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new _(`Replay divergence: hook event ${t.eventType} for ${n} belongs to token "${i}", but the current hook consumer expects "${r}"`,{eventId:t.eventId}))}),V.Finished;if(t.eventType===`hook_created`){let t=e.invocationsQueue.get(n);t&&t.type===`hook`&&(t.hasCreatedEvent=!0),u=!0;let r=c.slice();return c.length=0,e.promiseQueue=e.promiseQueue.then(()=>{for(let e of r)e.resolve(null)}),V.Consumed}if(t.eventType===`hook_conflict`){e.invocationsQueue.delete(n);let r=t,i=new h(r.eventData.token,r.eventData.conflictingRunId);f=!0,p=i,m=ua(e,r.eventData.conflictingRunId);let a=s.slice();s.length=0;let o=c.slice();return c.length=0,e.promiseQueue=e.promiseQueue.then(()=>{for(let e of a)e.reject(i);for(let e of o)m?e.resolve(m):e.reject(i)}),V.Consumed}if(t.eventType===`hook_received`){let n=e.eventsConsumer.eventIndex,r=Qt(e,n,`hook`);if(s.length>0){let i=s.shift();if(i){e.pendingDeliveries++;let a;e.promiseQueue=e.promiseQueue.then(async()=>{try{a={ok:!0,value:await at(t.eventData.payload,e.runId,e.encryptionKey,e.globalThis)}}catch(e){a={ok:!1,error:e}}finally{e.pendingDeliveries--}Xt(e,n,[`wait`]).then(()=>{r.markDelivered(),a.ok?i.resolve(a.value):i.reject(a.error)})})}}else{let i,s=a();e.pendingDeliveries++,e.promiseQueue=e.promiseQueue.then(async()=>{try{i={ok:!0,value:await at(t.eventData.payload,e.runId,e.encryptionKey,e.globalThis)}}catch(e){i={ok:!1,error:e}}finally{e.pendingDeliveries--,s.resolve()}}),o.push({claim:()=>s.promise.then(()=>Xt(e,n,[`wait`])).then(()=>{if(r.markDelivered(),i&&!i.ok)throw i.error;return i.value})})}return V.Consumed}return t.eventType===`hook_disposed`?(e.invocationsQueue.delete(n),d=!0,V.Finished):(e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new _(`Replay divergence: Unexpected event type for hook ${n} (token: ${r}) "${t.eventType}"`,{eventId:t.eventId}))}),V.Finished)});let g=!1;function v(){let t=a();if(f&&p)return e.promiseQueue=e.promiseQueue.then(()=>{t.reject(p)}),t.promise;if(o.length>0){let e=o.shift();if(e)return e.claim()}return l&&X(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),s.push(t),t.promise}function y(){let t=a();if(u)return e.promiseQueue=e.promiseQueue.then(()=>{t.resolve(null)}),t.promise;if(f)return e.promiseQueue=e.promiseQueue.then(()=>{m?t.resolve(m):t.reject(p)}),t.promise;let r=e.invocationsQueue.get(n);return r&&r.type===`hook`&&(r.hasConflictAwaiter=!0),l&&X(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),c.push(t),t.promise}function b(){if(g||(g=!0,d))return;let t=e.invocationsQueue.get(n);t&&t.type===`hook`&&(t.disposed=!0),s.length>0&&(s.length=0,X(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))})),Fe.debug(`Hook disposed`,{correlationId:n,token:r})}let x={token:r,getConflict(){return y()},then(e,t){return v().then(e,t)},async*[Symbol.asyncIterator](){for(;!g;)yield await this},dispose:b,[Symbol.dispose]:b},S=e.globalThis.Symbol.dispose;return S&&S!==Symbol.dispose&&(x[S]=b),x}}function fa(e){return async function(t){let{promise:n,resolve:r}=a(),i=`wait_${e.generateUlid()}`,o=u(t),s={type:`wait`,correlationId:i,resumeAt:o};return e.invocationsQueue.set(i,s),e.eventsConsumer.subscribe(t=>{if(!t)return X(e,()=>{e.onWorkflowError(new J(e.invocationsQueue,e.globalThis))}),V.NotConsumed;if(t.correlationId!==i)return V.NotConsumed;if(t.eventType===`wait_created`){let n=e.invocationsQueue.get(i);return n&&n.type===`wait`&&(n.hasCreatedEvent=!0,n.resumeAt=t.eventData.resumeAt),V.Consumed}if(t.eventType===`wait_completed`){let n=t.eventData?.resumeAt;if(n!==void 0){let r=e.invocationsQueue.get(i),a=r&&r.type===`wait`?r.resumeAt:o,s=new Date(n),c=s.getTime(),l=a.getTime(),u=Number.isFinite(c)?s.toISOString():String(n);if(c!==l)return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new _(`Replay divergence: wait_completed event for ${i} has resumeAt "${u}", but the current wait consumer expects "${a.toISOString()}"`,{eventId:t.eventId}))}),V.Finished}e.invocationsQueue.delete(i);let a=e.eventsConsumer.eventIndex,s=Qt(e,a,`wait`);return e.promiseQueue.then(()=>Xt(e,a,[`hook`])).then(()=>{s.markDelivered(),r()}),V.Finished}return e.promiseQueue=e.promiseQueue.then(()=>{e.onWorkflowError(new _(`Replay divergence: Unexpected event type for wait ${i} "${t.eventType}"`,{eventId:t.eventId}))}),V.Finished}),n}}async function pa(e,t,n,r,i,a){if(t.size!==0){for(let e of t.values())e.type===`hook`&&e.isSystem&&!e.disposed&&!e.abortRequested&&(e.disposed=!0);try{let e=await Xn();await Tr({suspension:new J(t,n),world:e,run:r,runReadyBarrier:a})}catch(t){z.warn(`Failed to drain pending queue items for ${i} workflow run`,{workflowRunId:e,message:t instanceof Error?t.message:String(t)})}}}async function ma(e,t,n,r,i,o){return H(`workflow.run ${t.workflowName}`,async s=>{s?.setAttributes({...ie(t.workflowName),...Ye(t.runId),...Y(t.status),...je(n.length)});let c=t.startedAt;if(!c)throw new m(`Workflow run "${t.runId}" has no "startedAt" timestamp (should not happen)`);let u=tr(t.runId)??+t.createdAt,f=l(process.env.VERCEL_URL===void 0?`http://localhost:${await fr()??3e3}`:`https://${process.env.VERCEL_URL}`),{context:p,globalThis:h,updateTimestamp:v}=ia({seed:`${t.runId}:${t.workflowName}:${t.deploymentId}`,fixedTimestamp:u}),y=a(),b=qt(()=>h.Math.random()),x=Li(`useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict`,21,e=>new Uint8Array(e).map(()=>256*h.Math.random())),C={current:Promise.resolve()},w=new de(n,{onConsumedEvent:e=>{v(+e.createdAt)},onUnconsumedEvent:e=>{y.reject(new _(`Replay could not consume event: eventType=${e.eventType}, correlationId=${e.correlationId}, eventId=${e.eventId}.`,{eventId:e.eventId}))},getPromiseQueue:()=>C.current}),T={runId:t.runId,encryptionKey:r,globalThis:h,onWorkflowError:y.reject,eventsConsumer:w,generateUlid:()=>b(u),generateNanoid:x,invocationsQueue:new Map,get promiseQueue(){return C.current},set promiseQueue(e){C.current=e},pendingDeliveries:0,pendingDeliveryBarriers:new Map,stepHydrationCache:i};T.eventsConsumer.subscribe(e=>e&&(e.eventType===`run_created`||e.eventType===`run_started`||e.eventType===`attr_set`&&e.eventData.writer.type===`step`)?V.Consumed:V.NotConsumed);let E=Ri(T),D=da(T),O=fa(T),k=la(T);h[Nt]=E,h[De]=k,h[We]=D,h[I]=O,h[It]=e=>N(t.runId,e),h[we]={workflowName:t.workflowName,workflowRunId:t.runId,workflowStartedAt:new h.Date(+c),url:f,features:{encryption:!!r}},h[et]=b,h.fetch=()=>{throw new h.Error(`Global "fetch" is unavailable in workflow functions. Use the "fetch" step function from "workflow" to make HTTP requests.\n\nLearn more: https://workflow-sdk.dev/err/${S.FETCH_IN_WORKFLOW_FUNCTION}`)};let A=`Timeout functions like "setTimeout" and "setInterval" are not supported in workflow functions. Use the "sleep" function from "workflow" for time-based delays.`;h.setTimeout=()=>{throw new m(A,{slug:S.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},h.setInterval=()=>{throw new m(A,{slug:S.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},h.clearTimeout=()=>{throw new m(A,{slug:S.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},h.clearInterval=()=>{throw new m(A,{slug:S.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},h.setImmediate=()=>{throw new m(A,{slug:S.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},h.clearImmediate=()=>{throw new m(A,{slug:S.TIMEOUT_FUNCTIONS_IN_WORKFLOW})},h.AbortController=ne(T);let j=be();h.AbortSignal={abort:j.abort,any:j.any,timeout:j.timeout};class M{cache;credentials;destination;headers;integrity;method;mode;redirect;referrer;referrerPolicy;url;keepalive;signal;duplex;body;constructor(e,t){if(typeof e==`string`||e instanceof h.URL){let t=String(e);try{new h.URL(t),this.url=t}catch(e){throw TypeError(`Failed to parse URL from ${t}`,{cause:e})}}else{if(this.url=e.url,!t){this.method=e.method,this.headers=new h.Headers(e.headers),this.body=e.body,this.mode=e.mode,this.credentials=e.credentials,this.cache=e.cache,this.redirect=e.redirect,this.referrer=e.referrer,this.referrerPolicy=e.referrerPolicy,this.integrity=e.integrity,this.keepalive=e.keepalive,this.signal=e.signal,this.duplex=e.duplex,this.destination=e.destination;return}this.method=e.method,this.headers=new h.Headers(e.headers),this.body=e.body,this.mode=e.mode,this.credentials=e.credentials,this.cache=e.cache,this.redirect=e.redirect,this.referrer=e.referrer,this.referrerPolicy=e.referrerPolicy,this.integrity=e.integrity,this.keepalive=e.keepalive,this.signal=e.signal,this.duplex=e.duplex,this.destination=e.destination}t?.method?this.method=t.method.toUpperCase():typeof this.method!=`string`&&(this.method=`GET`),t?.headers?this.headers=new h.Headers(t.headers):(typeof e==`string`||e instanceof h.URL)&&(this.headers=new h.Headers),t?.mode===void 0?typeof this.mode!=`string`&&(this.mode=`cors`):this.mode=t.mode,t?.credentials===void 0?typeof this.credentials!=`string`&&(this.credentials=`same-origin`):this.credentials=t.credentials,t?.cache===void 0?typeof this.cache!=`string`&&(this.cache=`default`):this.cache=t.cache,t?.redirect===void 0?typeof this.redirect!=`string`&&(this.redirect=`follow`):this.redirect=t.redirect,t?.referrer===void 0?typeof this.referrer!=`string`&&(this.referrer=`about:client`):this.referrer=t.referrer,t?.referrerPolicy===void 0?typeof this.referrerPolicy!=`string`&&(this.referrerPolicy=``):this.referrerPolicy=t.referrerPolicy,t?.integrity===void 0?typeof this.integrity!=`string`&&(this.integrity=``):this.integrity=t.integrity,t?.keepalive===void 0?typeof this.keepalive!=`boolean`&&(this.keepalive=!1):this.keepalive=t.keepalive,t?.signal===void 0?this.signal||={aborted:!1}:this.signal=t.signal,this.duplex||=`half`,this.destination||=`document`;let n=t?.body;if(n!=null&&(this.method===`GET`||this.method===`HEAD`))throw TypeError(`Request with GET/HEAD method cannot have body.`);n==null?this.body=null:this.body=Object.create(h.ReadableStream.prototype,{[ft]:{value:n,writable:!1}})}clone(){K()}get bodyUsed(){return!1}blob;formData;arrayBuffer;json;text;async bytes(){return new Uint8Array(await this.arrayBuffer())}}h.Request=M,Object.defineProperties(M.prototype,{arrayBuffer:{value:E(`__builtin_response_array_buffer`),writable:!0,configurable:!0},json:{value:E(`__builtin_response_json`),writable:!0,configurable:!0},text:{value:E(`__builtin_response_text`),writable:!0,configurable:!0}});class P{type;url;status;statusText;body;headers;redirected;constructor(e,t){if(this.status=t?.status??200,this.statusText=t?.statusText??``,this.headers=new h.Headers(t?.headers),this.type=`default`,this.url=``,this.redirected=!1,e!=null&&(this.status===204||this.status===205||this.status===304))throw TypeError(`Response constructor: Invalid response status code ${this.status}`);e==null?this.body=null:this.body=Object.create(h.ReadableStream.prototype,{[ft]:{value:e,writable:!1}})}clone;blob;formData;get ok(){return this.status>=200&&this.status<300}get bodyUsed(){return!1}arrayBuffer;json;text;async bytes(){return new Uint8Array(await this.arrayBuffer())}static json(e,t){let n=JSON.stringify(e),r=new h.Headers(t?.headers);return r.has(`content-type`)||r.set(`content-type`,`application/json`),new P(n,{...t,headers:r})}static error(){K()}static redirect(e,t=302){if(![301,302,303,307,308].includes(t))throw RangeError(`Invalid redirect status code: ${t}. Must be one of: 301, 302, 303, 307, 308`);let n=new h.Headers;n.set(`Location`,String(e));let r=Object.create(P.prototype);return r.status=t,r.statusText=``,r.headers=n,r.body=null,r.type=`default`,r.url=``,r.redirected=!1,r}}h.Response=P,Object.defineProperties(P.prototype,{arrayBuffer:{value:E(`__builtin_response_array_buffer`),writable:!0,configurable:!0},json:{value:E(`__builtin_response_json`),writable:!0,configurable:!0},text:{value:E(`__builtin_response_text`),writable:!0,configurable:!0}});class F{constructor(){K()}get locked(){return!1}cancel(){K()}getReader(){K()}pipeThrough(){K()}pipeTo(){K()}tee(){K()}values(){K()}static from(){K()}[Symbol.asyncIterator](){K()}}h.ReadableStream=F;class L{constructor(){K()}get locked(){return!1}abort(){K()}close(){K()}getWriter(){K()}}h.WritableStream=L;class ee{readable;writable;constructor(){K()}}h.TransformStream=ee,h.console=globalThis.console;let te=Symbol.for(`@vercel/request-context`);h[te]=globalThis[te];let R=d(t.workflowName)?.moduleSpecifier||t.workflowName;ca(e,R,p);let re=ca(`globalThis.__private_workflows?.get(${JSON.stringify(t.workflowName)})`,R,p);if(typeof re!=`function`)throw new g(t.workflowName);let z=[];T.promiseQueue=T.promiseQueue.then(async()=>{z=await pe(t.input,t.runId,r,h)}),await T.promiseQueue,s?.setAttributes({...Te(z.length)});try{let e=await Promise.race([re(...z),y.promise]),n=await Mt(e,t.runId,r,h,!1,(t.specVersion??0)>=5);return s?.setAttributes({...ce(typeof e)}),await pa(t.runId,T.invocationsQueue,h,t,`completed`,o),n}catch(e){throw J.is(e)||_.is(e)||await pa(t.runId,T.invocationsQueue,h,t,`failed`,o),e}})}function ha(e){return m.is(e)?f.RUNTIME_ERROR:on(e)?f.WORLD_CONTRACT_ERROR:null}async function ga({world:e,workflowRun:t,runId:n,requestId:r,err:i,errorCode:a,logMessage:o}){z.error(o,{workflowRunId:n,errorCode:a,error:i instanceof Error?i.message:String(i)});try{let o=lt(e,t??n);await e.events.create(n,{eventType:`run_failed`,specVersion:5,eventData:{error:await Rt(i,n,await o(),globalThis,(t?.specVersion??0)>=5),errorCode:a}},{requestId:r})}catch(e){if(T.is(e)||O.is(e))return;if(on(e)){z.error(`Fatal world contract error while recording workflow failure`,{workflowRunId:n,errorCode:f.WORLD_CONTRACT_ERROR,error:e instanceof Error?e.message:String(e)});return}throw e}}function _a(e,t){let n=e.find(e=>e.runId===t&&(e.eventType===`run_completed`||e.eventType===`run_failed`||e.eventType===`run_cancelled`));return n?(z.debug(`Run reached terminal event, exiting`,{workflowRunId:t,eventType:n.eventType,eventId:n.eventId}),!0):!1}function va(e,t){return e?.[Jt]??t}function ya(e){let t=new Set,n=new Set;for(let r of e)r.eventType===`hook_disposed`?t.add(r.correlationId):r.eventType===`wait_completed`&&n.add(r.correlationId);for(let r of e)if(r.eventType===`hook_created`&&!t.has(r.correlationId)||r.eventType===`wait_created`&&!n.has(r.correlationId))return!0;return!1}function ba(e,t){i(t?.basePath);let n=Number(process.env.WORKFLOW_V2_TIMEOUT_MS)||12e4,r=Yt(t?.namespace),a=Gt(`workflow`,r),s=t=>t.createQueueHandler(a,async(i,s)=>{let c=Ot(i);if(c){await _t(c,`workflow`,t.specVersion);return}let{runId:l,traceCarrier:u,requestedAt:p,stepId:h,stepName:g,replayDivergence:v,runInput:y}=Kt.parse(i),x=Re(u)?u:void 0,{requestId:S}=s,C=s.queueName.slice(a.length),w=z.forRun(l,C),A=Tn();if(s.attempt>A){let e=wn(void 0,f.MAX_DELIVERIES_EXCEEDED);w.error(`Workflow handler exceeded max deliveries (${s.attempt}/${A})`,{attempt:s.attempt,errorCode:e.errorCode,errorAttribution:e.attribution});try{let e=await Xn(),t=lt(e,l),n=new b(`Workflow exceeded maximum queue deliveries (${s.attempt}/${A})`);await e.events.create(l,{eventType:`run_failed`,specVersion:5,eventData:{error:await Rt(n,l,await t()),errorCode:f.MAX_DELIVERIES_EXCEEDED}},{requestId:S})}catch(e){if(T.is(e)||O.is(e))return;w.error(`Failed to mark run as failed after ${s.attempt} delivery attempts. A persistent error is preventing the run from being terminated. The run will remain in its current state until manually resolved. This is most likely due to a persistent outage of the workflow backend or a bug in the workflow runtime and should be reported to the Workflow team.`,{attempt:s.attempt,errorName:e instanceof Error?e.name:`UnknownError`,errorMessage:e instanceof Error?e.message:String(e),errorStack:e instanceof Error?e.stack:void 0})}return}let j=se(),M=()=>le(j,x),N=await re(j,x),P=new $n,I=j===`continuous`?x:void 0,L=await St(`CONSUMER`);return await k(I,async()=>await Xe({workflowRunId:l,workflowName:C},async()=>{let t=await H(`workflow.route.get_world`,async()=>Xn());return H(`workflow.execute ${o(C)}`,{kind:L,links:N},async i=>{i?.setAttributes({...ie(C),...ue(`execute_v2`),...pt(`vercel-queue`),...Je(s.queueName),...Qe(s.messageId),...xt(`process`),...nt({requestedAt:p}),...Ye(l),...He(!!x),...rt(j)});let a=Date.now(),o=0,c=null,u=null,k=Fi(),A=null,N,I=-1,L,ee,te,ne,R=0,re,B=Ln()&&y!==void 0&&s.attempt===1&&h===void 0&&!v;i?.setAttributes(vt(B));let V,oe=async()=>{if(V)try{await V}catch{}},se=new Set,ce=e=>{se.size>0&&z.error(`Invariant violation: acking the workflow message while owned inline steps are still executing — crash recovery for these steps is broken`,{workflowRunId:l,ackPath:e,stepIds:[...se]})},le=async e=>{if(ce(`reinvoke`),!B)return{timeoutSeconds:e};await q(t,W(C,r),{runId:l,traceCarrier:await M(),requestedAt:new Date},e>0?{delaySeconds:e}:void 0)};if(h&&g)try{let e=await t.runs.get(l);if(e.status!==`running`){z.debug(`Run already finished, skipping background step`,{workflowRunId:l,status:e.status});return}let n=e.startedAt?+e.startedAt:Date.now();P.pause();let i;try{i=await Cr(l,h,()=>_r({world:t,workflowRunId:l,workflowDeploymentId:e.deploymentId,workflowName:C,workflowStartedAt:n,rootRunId:va(e.attributes,l),stepId:h,stepName:g,runSpecVersion:e.specVersion}))}finally{P.resume()}if(i.type===`retry`||i.type===`throttled`)return{timeoutSeconds:i.timeoutSeconds};if(i.type===`completed`&&i.hasPendingOps){await q(t,W(C,r),{runId:l,traceCarrier:await M(),requestedAt:new Date});return}if(i.type===`completed`||i.type===`failed`||i.type===`skipped`){let t=await G(l);c=t.events,u=t.cursor;let r=new Set,i=new Set;for(let e of c)e.eventType===`step_created`?r.add(e.correlationId):(e.eventType===`step_completed`||e.eventType===`step_failed`)&&i.add(e.correlationId);let a=new Set;for(let e of r)i.has(e)||a.add(e);if(a.size>0)if(Rn()&&xr(c,a,s.messageId))z.debug(`Background step done; falling through to recover an inline step owned by this message`,{workflowRunId:l});else{z.debug(`Background step done but other steps pending, returning`,{workflowRunId:l});return}z.debug(`All parallel steps done, replaying inline after background step`,{workflowRunId:l}),N=e,I=n}else return}catch(e){let n=ha(e);if(!n)throw e;await ga({world:t,workflowRun:N,runId:l,requestId:S,err:e,errorCode:n,logMessage:`Fatal error while preparing background workflow step`});return}if(!N){let e={eventType:`run_started`,specVersion:y?.specVersion??5,...y?{eventData:{input:y.input,deploymentId:y.deploymentId,workflowName:y.workflowName,executionContext:y.executionContext,attributes:y.attributes,allowReservedAttributes:y.allowReservedAttributes}}:{}},n=e=>{i?.addEvent(`workflow.run_started.create.start`,{"workflow.run_started.skip_preload":e})};if(B&&y){n(!0);let r=t.events.create(l,e,{requestId:S,skipPreload:!0});V=r,r.catch(()=>{}),L=[];let a=new Date;N={runId:l,status:`running`,deploymentId:y.deploymentId,workflowName:y.workflowName,specVersion:y.specVersion,executionContext:y.executionContext,input:y.input,attributes:y.attributes??{},startedAt:a,createdAt:a,updatedAt:a},I=+a,ne=+a,i?.setAttributes({...Y(`running`),...ht(I)})}else{try{n(!1);let r=await t.events.create(l,e,{requestId:S});if(!r.run)throw new m(`Event creation for 'run_started' did not return the run entity for run "${l}"`);if(N=r.run,ne=Date.now(),r.events&&r.events.length>0&&r.hasMore!==!0&&(L=r.events,ee=r.cursor),!N.startedAt)throw new m(`Workflow run "${l}" has no "startedAt" timestamp`)}catch(e){if(T.is(e)||O.is(e)){z.info(`Run already finished during setup, skipping`,{workflowRunId:l,message:e.message});return}else{let n=ha(e);if(!n)throw e;await ga({world:t,workflowRun:N,runId:l,requestId:S,err:e,errorCode:n,logMessage:`Fatal runtime error during workflow setup`});return}}if(I=+N.startedAt,i?.setAttributes({...Y(N.status),...ht(I)}),N.status!==`running`){z.info(`Workflow already completed or failed, skipping`,{workflowRunId:l,status:N.status});return}}}let de=await lt(t,N)();for(;;){if(o++,P.isExhausted()){await er({runId:l,workflowName:C,requestId:S,attempt:s.attempt,limitMs:P.configuredLimitMs});return}if(Date.now()-a>=n){z.info(`V2 timeout reached, re-scheduling workflow`,{workflowRunId:l,loopIteration:o,elapsedMs:Date.now()-a}),await q(t,W(C,r),{runId:l,traceCarrier:await M(),requestedAt:new Date});return}let p=0,m=null;try{let n;if(A&&c){let e=A;if(A=null,e.events.length>0){let t=new Set(c.map(e=>e.eventId));for(let n of e.events)t.has(n.eventId)||(t.add(n.eventId),c.push(n))}u=e.cursor??u,n=c}else if(c===null)if(L)n=L,u=ee??null;else{let e=await G(l);n=e.events,u=e.cursor}else if(u){let e=await G(l,u);if(e.events.length>0){let t=new Set(c.map(e=>e.eventId));for(let n of e.events)t.has(n.eventId)||(t.add(n.eventId),c.push(n))}u=e.cursor??u,n=c}else if(L){z.debug(`No cursor after preloaded-events first iteration; doing full reload to pick up cursor.`,{workflowRunId:l});let e=await G(l);c=e.events,u=e.cursor,n=c}else{z.warn(`Event cursor missing after initial load — falling back to full reload. This indicates a bug in the World implementation.`,{workflowRunId:l});let e=await G(l);c=e.events,u=e.cursor,n=c}if(_a(n,l))return;let r=Date.now(),a=new Set(n.filter(e=>e.eventType===`wait_completed`).map(e=>e.correlationId)),s=n.filter(e=>e.eventType===`wait_created`&&e.correlationId!==void 0&&!a.has(e.correlationId)&&r>=e.eventData.resumeAt.getTime()).map(e=>({eventType:`wait_completed`,specVersion:5,correlationId:e.correlationId,eventData:{resumeAt:e.eventData.resumeAt}}));for(let e of s){let r={events:n,cursor:u};try{await dt(l,r,n=>t.events.create(l,e,{requestId:S,stateUpdatedAt:n}))}catch(t){if(T.is(t)){z.info(`Wait already completed, skipping`,{workflowRunId:l,correlationId:e.correlationId});continue}throw t}finally{u=r.cursor}}if(s.length>0)if(u){let e=await G(l,u),t=new Set(e.events.filter(e=>e.eventType===`wait_completed`).map(e=>e.correlationId));if(s.every(e=>t.has(e.correlationId))){let t=new Set(n.map(e=>e.eventId));for(let r of e.events)t.has(r.eventId)||(t.add(r.eventId),n.push(r));u=e.cursor??u}else{let e=await G(l);n=e.events,u=e.cursor}}else{let e=await G(l);n=e.events,u=e.cursor}if(_a(n,l))return;c=n,te??=n.every(e=>e.eventType===`run_created`||e.eventType===`run_started`||e.eventType===`attr_set`),m=u,z.debug(`Starting workflow replay`,{workflowRunId:l,loopIteration:o,eventCount:n.length}),p=Date.now();let d=await ma(e,N,n,de,k,V);z.debug(`Workflow replay completed`,{workflowRunId:l,loopIteration:o,replayMs:Date.now()-p});try{await oe(),await t.events.create(l,{eventType:`run_completed`,specVersion:5,eventData:{output:d}},{requestId:S,stateUpdatedAt:Ze(n)})}catch(e){if(T.is(e)||O.is(e)){z.info(`Tried completing workflow run, but run has already finished.`,{workflowRunId:l,message:e.message});return}throw e}i?.setAttributes({...Y(`completed`)});return}catch(n){if(J.is(n)){let e=Date.now()-p;z.debug(`Workflow suspended`,{workflowRunId:l,loopIteration:o,replayMs:e,steps:n.stepCount,hooks:n.hookCount,waits:n.waitCount});let a=Ce(n.stepCount,n.hookCount,n.waitCount);a&&z.debug(a);let d=Date.now();if(!c)throw Error(`Invariant violation: workflow suspended before its event log was loaded`);let f={events:c,cursor:u},h;try{h=await Tr({suspension:n,world:t,run:N,span:i,requestId:S,eventLog:f,runReadyBarrier:V})}catch(e){if(E.is(e))return z.warn(`Suspension event creation rejected as stale after reload retries; re-invoking run for a fresh replay`,{workflowRunId:l,loopIteration:o}),await le(0);if(!b.is(e))throw e;let n=mn(e);z.error(`Non-retryable error while committing workflow suspension; failing run`,{workflowRunId:l,errorCode:n,errorName:e.name,errorMessage:e.message});try{await oe(),await t.events.create(l,{eventType:`run_failed`,specVersion:5,eventData:{error:await Rt(e,l,de,globalThis,(N?.specVersion??0)>=5),errorCode:n}},{requestId:S})}catch(e){if(T.is(e)||O.is(e)){z.info(`Tried failing workflow run, but run has already finished.`,{workflowRunId:l,message:e.message});return}throw e}i?.setAttributes({...Y(`failed`),...F(n),...ae(e.name),...Pe(e.message),...it(e.name)});return}if(u=f.cursor,R+=h.hookCreationMs,h.hasAttributeEvents&&re===void 0&&(re=R),z.debug(`Suspension handled`,{workflowRunId:l,suspensionMs:Date.now()-d,pendingSteps:h.pendingSteps.length,timeoutSeconds:h.waitTimeout?.seconds,hasHookConflict:h.hasHookConflict,hasAwaitedHookCreation:h.hasAwaitedHookCreation,hasAttributeEvents:h.hasAttributeEvents}),h.hasHookConflict)return await le(0);if(h.hasAttributeEvents)continue;let g=h.pendingSteps,_=h.lazyInlineSteps,v=new Set(_.map(e=>e.correlationId)),y=await M(),x=[],w=Rn(),D=Date.now(),k=[],j=0;for(let e of g){if(v.has(e.correlationId))continue;let n=w&&vr(e);if(n&&e.ownerMessageId===s.messageId){k.push(e);continue}let i=n?yr(e,D):0;if(i>0){j++,z.debug(`Pending step is inline-owned by a live invocation; ensuring delayed backstop wake instead of immediate requeue`,{workflowRunId:l,stepId:e.correlationId,ownerMessageId:e.ownerMessageId,backstopDelaySeconds:i}),x.push(q(t,W(C,r),{runId:l,traceCarrier:y,requestedAt:new Date},{delaySeconds:i,idempotencyKey:br(e)}));continue}x.push(q(t,W(C,r),{runId:l,stepId:e.correlationId,stepName:e.stepName,traceCarrier:y,requestedAt:new Date},{idempotencyKey:e.correlationId}))}h.waitTimeout&&x.push(q(t,W(C,r),{runId:l,traceCarrier:y,requestedAt:new Date},kr(h.waitTimeout.seconds,h.waitTimeout.correlationId))),await Promise.all(x);let L=[..._.map(e=>({correlationId:e.correlationId,stepName:e.stepName,lazyStepInput:e.dehydratedInput})),...k.map(e=>({correlationId:e.correlationId,stepName:e.stepName}))];if((j>0||k.length>0)&&i?.setAttributes({...k.length>0?Ct(k.length):{},...j>0?Vt(j):{}}),k.length>0&&z.warn(`Re-executing inline steps owned by this queue message — a previous delivery crashed mid-body and this redelivery is recovering them`,{workflowRunId:l,stepIds:k.map(e=>e.correlationId)}),L.length===0)return h.hasAwaitedHookCreation?await le(0):void 0;let ee=typeof m==`string`&&n.stepCount===1&&n.hookCount===0&&n.waitCount===0&&g.length===1&&_.length===1&&k.length===0&&!h.waitTimeout&&!ya(c??[]),ie=B&&!h.waitTimeout&&!h.hasHookEvents&&!h.hasAttributeEvents&&!h.hasAwaitedHookCreation&&!ya(c??[]),ce=mr({events:c??[],invocationStartedClean:te===!0,runCreatedAtMs:tr(l)??(B?void 0:+N.createdAt),runStartedReceivedAtMs:ne,replayMs:e,preStepBlockingMs:R,preStepBlockingBeforeAttrMs:re,suspensionHasWaits:n.waitCount>0||h.waitTimeout!==void 0,suspensionCreatedHooks:n.hookCount>0||h.hasHookEvents,turbo:B});P.pause();let ue;try{ue=await Promise.all(L.map((e,n)=>{let r=()=>_r({world:t,workflowRunId:l,workflowDeploymentId:N.deploymentId,workflowName:C,workflowStartedAt:I,rootRunId:va(N.attributes,l),stepId:e.correlationId,stepName:e.stepName,runSpecVersion:N.specVersion,lazyStepInput:e.lazyStepInput,ownerMessageId:s.messageId,forceOptimisticStart:ie,runReadyBarrier:V,...n===0&&e.lazyStepInput!==void 0&&ce?{latencyTracking:ce}:{},...ee&&m?{inlineDeltaSinceCursor:m}:{}});return se.add(e.correlationId),(e.lazyStepInput===void 0?Cr(l,e.correlationId,r):r()).finally(()=>se.delete(e.correlationId))}))}finally{P.resume()}let fe=[],pe=!1,me;for(let e=0;e<L.length;e++){let t=ue[e],n=L[e];t.type===`retry`?fe.push({step:n,delaySeconds:t.timeoutSeconds}):t.type===`throttled`?me=Math.max(me??0,t.timeoutSeconds):t.type===`completed`&&t.hasPendingOps&&(pe=!0)}if(me!==void 0)return await le(me);if(fe.length>0){let e=await M();await Promise.all(fe.map(({step:n,delaySeconds:i})=>q(t,W(C,r),{runId:l,stepId:n.correlationId,stepName:n.stepName,traceCarrier:e,requestedAt:new Date},{delaySeconds:i,idempotencyKey:n.correlationId})))}if(pe){z.debug(`Breaking loop: inline step has pending ops`,{workflowRunId:l,loopIteration:o}),await q(t,W(C,r),{runId:l,traceCarrier:await M(),requestedAt:new Date});return}if(fe.length>0)return;if(L.length===1){let e=ue[0];e.type===`completed`&&e.inlineDelta&&!e.inlineDelta.hasMore&&(A={events:e.inlineDelta.events,cursor:e.inlineDelta.cursor})}}else{if(E.is(n))return z.warn(`Event creation rejected as stale; re-invoking run for a fresh replay`,{workflowRunId:l,loopIteration:o}),await le(0);if(an(n))throw w.warn(`Transient world error during replay; redelivering via queue instead of failing the run`,{errorName:n instanceof Error?n.name:`UnknownError`,errorMessage:n instanceof Error?n.message:String(n),deliveryAttempt:s.attempt}),n;let a=n;if(_.is(n)){let e=(v?.count??0)+1,i=Bn();if(e<=i){w.warn(`Workflow replay diverged; queueing a recovery replay before declaring the event log corrupted`,{errorCode:f.REPLAY_DIVERGENCE,divergenceEventId:n.eventId,priorDivergenceEventId:v?.eventId,divergenceCount:e,deliveryAttempt:s.attempt,maxRecoveryReplays:i,errorMessage:n.message}),await q(t,W(C,r),{runId:l,traceCarrier:await M(),requestedAt:new Date,replayDivergence:{eventId:n.eventId,count:e}});return}a=new D(`Workflow replay diverged ${e} times after ${i} recovery replays; latest divergent event was ${n.eventId}. Last divergence: ${n.message}`,{cause:n})}a instanceof Error&&i?.recordException?.(a);let c=await cr(a),u=c.name||nr(a),p=c.message,m=c.stack||rr(a);if(m){let t=d(C)?.moduleSpecifier||C;m=Mi(m,t,e)}let h=mn(a);z.error(`Error while running workflow`,{workflowRunId:l,errorCode:h,errorName:u,errorStack:m}),_n.isNativeError(a)&&m&&(a.stack=m);try{await oe(),await t.events.create(l,{eventType:`run_failed`,specVersion:5,eventData:{error:await Rt(a,l,de,globalThis,(N?.specVersion??0)>=5),errorCode:h}},{requestId:S})}catch(e){if(T.is(e)||O.is(e)){z.info(`Tried failing workflow run, but run has already finished.`,{workflowRunId:l,message:e.message});return}if(on(e)){z.error(`Fatal world contract error while recording workflow failure`,{workflowRunId:l,errorCode:f.WORLD_CONTRACT_ERROR,error:e instanceof Error?e.message:String(e)});return}throw e}i?.setAttributes({...Y(`failed`),...F(h),...ae(u),...Pe(p),...it(u)});return}}}})}))}),c,l=0,u=Date.now(),p=typeof t?.routeModuleBodyStartedAt==`number`?u-t.routeModuleBodyStartedAt:void 0;return yt(async e=>{l+=1;let t=c!==void 0;return H(`workflow.route.flow`,{kind:await St(`SERVER`),attributes:{...A(`flow`),...Le(t),...Be(l),...ze(Date.now()-u),...p===void 0?{}:Se(p),...Ke(e.method),...kt(`/.well-known/workflow/v1/flow`)}},async t=>{c||=await H(`workflow.route.init`,async()=>s(await H(`workflow.route.get_world_handlers`,async()=>Yn())));let n=await c(e);return n instanceof Response&&t?.setAttributes(ut(n.status)),n})})}export{pn as Run,J as WorkflowSuspension,dn as cancelRun,Jn as createWorld,qn as createWorldFromModule,tn as getHookByToken,ln as getRun,Xn as getWorld,Yn as getWorldHandlers,Et as healthCheck,sn as listStreams,nn as readStream,un as recreateRunFromExisting,fn as reenqueueRun,$t as resumeHook,en as resumeWebhook,Zn as setWorld,cn as start,rn as wakeUpRun,ba as workflowEntrypoint};
|
|
@@ -20,6 +20,12 @@ export type StepContext = {
|
|
|
20
20
|
workflowMetadata: WorkflowMetadata;
|
|
21
21
|
/** Deployment that owns the current workflow run, used for forwarded streams. */
|
|
22
22
|
workflowDeploymentId?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Root run id of the current run's lineage (`$rootRunId`), so a nested
|
|
25
|
+
* `start()` inherits it without reloading the parent. Set by the runtime from
|
|
26
|
+
* the run it already has loaded.
|
|
27
|
+
*/
|
|
28
|
+
rootRunId?: string;
|
|
23
29
|
ops: Promise<void>[];
|
|
24
30
|
/**
|
|
25
31
|
* Operations that MUST be durably committed before the step's
|
|
@@ -181,6 +181,31 @@ export declare const StepTtfsMs: (value: number) => {
|
|
|
181
181
|
export declare const StepStsoMs: (value: number) => {
|
|
182
182
|
[k: string]: number;
|
|
183
183
|
};
|
|
184
|
+
/**
|
|
185
|
+
* Client-measured run_started-to-first-step latency in milliseconds: the
|
|
186
|
+
* `run_started` response landing (or, under turbo, the local run synthesis
|
|
187
|
+
* instant) → this step's start POST being issued. A sub-window of ttfs that
|
|
188
|
+
* isolates replay overhead from the run-creation queue hop. Only present on
|
|
189
|
+
* the run's first step execution when it qualified for measurement (see
|
|
190
|
+
* runtime/step-latency.ts).
|
|
191
|
+
*/
|
|
192
|
+
export declare const StepRsfsMs: (value: number) => {
|
|
193
|
+
[k: string]: number;
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Client-measured synchronous workflow-function replay duration in
|
|
197
|
+
* milliseconds, excluding awaited network I/O, of only the FINAL replay pass
|
|
198
|
+
* within the rsfs window — the pass that reached and scheduled the first
|
|
199
|
+
* step. Not accumulated across earlier pre-first-step passes (e.g. a
|
|
200
|
+
* workflow-body `setAttributes()` detour replays more than once, and a
|
|
201
|
+
* redelivery omits earlier invocations' work entirely), so this must not be
|
|
202
|
+
* read as "the replay portion of rsfs" — step.rsfs_ms covers the whole
|
|
203
|
+
* window. Only present alongside step.rsfs_ms and only for the run's first
|
|
204
|
+
* step (see runtime/step-latency.ts).
|
|
205
|
+
*/
|
|
206
|
+
export declare const StepFinalSchedulingReplayMs: (value: number) => {
|
|
207
|
+
[k: string]: number;
|
|
208
|
+
};
|
|
184
209
|
/**
|
|
185
210
|
* Runtime startup-latency optimizations active for the ttfs/stso measurement
|
|
186
211
|
* (e.g. 'turbo', 'lazyStepStart', 'optimisticStart').
|