eve 0.27.13 → 0.29.0
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 +38 -0
- package/dist/src/channel/adapter.d.ts +5 -5
- package/dist/src/channel/session.d.ts +2 -2
- package/dist/src/channel/types.d.ts +16 -6
- package/dist/src/chunks/{use-eve-agent-CWYe-vqE.js → use-eve-agent-CyDt3Lny.js} +92 -1
- package/dist/src/chunks/{use-eve-agent-CsSQOKnp.js → use-eve-agent-DaH3cf8K.js} +92 -1
- package/dist/src/cli/commands/agent-prompt/collect-intent.md +1 -1
- package/dist/src/cli/commands/channels.d.ts +0 -17
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/cli/commands/deploy.js +1 -1
- package/dist/src/cli/commands/extension-init.js +1 -1
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/integration-connect.d.ts +29 -0
- package/dist/src/cli/commands/integration-connect.js +1 -0
- package/dist/src/cli/commands/integration-setup.d.ts +2 -3
- package/dist/src/cli/commands/integration-setup.js +1 -1
- package/dist/src/cli/commands/register-integration-commands.js +1 -1
- package/dist/src/cli/commands/registry-setup-command.d.ts +13 -3
- package/dist/src/cli/commands/registry-setup-command.js +2 -1
- package/dist/src/cli/commands/registry.d.ts +35 -1
- package/dist/src/cli/commands/registry.js +1 -1
- package/dist/src/cli/commands/trace.js +1 -1
- package/dist/src/cli/dev/tui/agent-header.js +1 -1
- package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -1
- package/dist/src/cli/dev/tui/prompt-commands.d.ts +1 -1
- package/dist/src/cli/dev/tui/prompt-commands.js +1 -1
- package/dist/src/cli/dev/tui/remote-auth-command.js +1 -1
- package/dist/src/cli/dev/tui/runner.d.ts +8 -7
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/dev/tui/setup-commands.d.ts +8 -13
- package/dist/src/cli/dev/tui/setup-commands.js +3 -2
- package/dist/src/cli/dev/tui/setup-flow.d.ts +14 -5
- package/dist/src/cli/dev/tui/setup-panel.d.ts +5 -1
- package/dist/src/cli/dev/tui/setup-panel.js +2 -2
- package/dist/src/cli/dev/tui/status-line.d.ts +1 -1
- package/dist/src/cli/dev/tui/status-line.js +1 -1
- package/dist/src/cli/dev/tui/subagent-pump.d.ts +8 -2
- package/dist/src/cli/dev/tui/subagent-pump.js +1 -1
- package/dist/src/cli/dev/tui/terminal-renderer.d.ts +2 -5
- package/dist/src/cli/dev/tui/terminal-renderer.js +12 -12
- package/dist/src/cli/dev/tui/test/fake-setup-flow-renderer.js +1 -1
- package/dist/src/cli/dev/tui/tui-prompter.js +1 -1
- package/dist/src/cli/dev/tui/tui.d.ts +2 -0
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/dev/tui/vercel-status.d.ts +1 -6
- package/dist/src/cli/dev/tui/vercel-status.js +1 -1
- package/dist/src/cli/invoke/result.d.ts +15 -0
- package/dist/src/cli/invoke/result.js +1 -1
- package/dist/src/cli/option-parsers.d.ts +11 -0
- package/dist/src/cli/option-parsers.js +1 -0
- package/dist/src/cli/run.d.ts +1 -12
- package/dist/src/cli/run.js +3 -3
- package/dist/src/cli/shutdown.d.ts +2 -0
- package/dist/src/cli/shutdown.js +1 -1
- package/dist/src/client/eve-agent-store.d.ts +7 -4
- package/dist/src/client/eve-agent-store.js +1 -1
- package/dist/src/client/index.d.ts +3 -3
- package/dist/src/client/index.js +1 -1
- package/dist/src/client/message-action-parts.js +1 -1
- package/dist/src/client/message-reducer-types.d.ts +5 -3
- package/dist/src/client/message-response.d.ts +4 -4
- package/dist/src/client/ndjson.d.ts +3 -3
- package/dist/src/client/open-stream.d.ts +2 -2
- package/dist/src/client/output-schema.d.ts +2 -2
- package/dist/src/client/reducer.d.ts +2 -2
- package/dist/src/client/session-utils.d.ts +5 -5
- package/dist/src/client/session.d.ts +2 -2
- package/dist/src/client/types.d.ts +2 -2
- package/dist/src/compiled/.vendor-stamp.json +5 -5
- package/dist/src/compiled/@workflow/core/index.js +1 -1
- package/dist/src/compiled/@workflow/core/private.d.ts +21 -5
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/world.d.ts +10 -5
- package/dist/src/compiled/@workflow/core/runtime.js +3 -3
- package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +2 -2
- 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/world-local/index.js +3 -3
- package/dist/src/compiled/@workflow/world-vercel/index.js +13 -13
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-DeZc2RZz.js → attribute-changes-1LmTKuTT.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{private-Cre8uYkA.js → private-BcwCGTV5.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{resume-hook-ip1hbn1b.js → resume-hook-D1_5NCZ6.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{run-CWytxfIp.js → run-C240Ctf4.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/sleep-De802yfX.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{wait-until-De9yESQN.js → wait-until-z48sPUjU.js} +2 -2
- package/dist/src/compiled/shadcn-registry/index.d.ts +1 -0
- package/dist/src/compiler/compile-from-memory.d.ts +1 -0
- package/dist/src/compiler/extension-compatibility.d.ts +8 -8
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/manifest.d.ts +2 -2
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/context/dynamic-instruction-lifecycle.d.ts +2 -2
- package/dist/src/context/dynamic-model-lifecycle.d.ts +2 -2
- package/dist/src/context/dynamic-skill-lifecycle.d.ts +2 -2
- package/dist/src/context/dynamic-tool-lifecycle.d.ts +2 -2
- package/dist/src/context/hook-lifecycle.d.ts +2 -2
- package/dist/src/evals/assertions/collector.d.ts +2 -10
- package/dist/src/evals/assertions/collector.js +1 -1
- package/dist/src/evals/assertions/run.d.ts +3 -3
- package/dist/src/evals/cli/eval.d.ts +6 -2
- package/dist/src/evals/cli/eval.js +2 -2
- package/dist/src/evals/cli/filter.d.ts +14 -0
- package/dist/src/evals/cli/filter.js +1 -0
- package/dist/src/evals/context.js +1 -1
- package/dist/src/evals/diagnostics.d.ts +8 -0
- package/dist/src/evals/diagnostics.js +1 -0
- package/dist/src/evals/expect/index.d.ts +1 -1
- package/dist/src/evals/expect/index.js +1 -1
- package/dist/src/evals/index.d.ts +1 -1
- package/dist/src/evals/judge.js +2 -1
- package/dist/src/evals/match.d.ts +4 -4
- package/dist/src/evals/runner/artifacts.js +1 -1
- package/dist/src/evals/runner/derive-run-facts.d.ts +2 -2
- package/dist/src/evals/runner/reporters/assertion-diagnostics.d.ts +3 -0
- package/dist/src/evals/runner/reporters/assertion-diagnostics.js +3 -0
- package/dist/src/evals/runner/reporters/braintrust.js +1 -1
- package/dist/src/evals/runner/reporters/console.js +1 -1
- package/dist/src/evals/runner/reporters/junit.js +2 -2
- package/dist/src/evals/session.d.ts +3 -3
- package/dist/src/evals/types.d.ts +33 -17
- package/dist/src/execution/cancel-descendant-turns-step.js +1 -1
- package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
- package/dist/src/execution/route-child-delivery.d.ts +4 -3
- package/dist/src/execution/route-child-delivery.js +1 -1
- package/dist/src/execution/session-delivery-hook.d.ts +1 -0
- package/dist/src/execution/session-delivery-hook.js +1 -1
- package/dist/src/execution/session-timeout-control.d.ts +9 -0
- package/dist/src/execution/session-timeout-control.js +1 -0
- package/dist/src/execution/session-timeout-steps.d.ts +13 -0
- package/dist/src/execution/session-timeout-steps.js +1 -0
- package/dist/src/execution/session-timeout-workflow.d.ts +6 -0
- package/dist/src/execution/session-timeout-workflow.js +1 -0
- package/dist/src/execution/session-timeout.d.ts +2 -0
- package/dist/src/execution/session-timeout.js +1 -0
- package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
- package/dist/src/execution/subagent-event-proxy-step.js +1 -1
- package/dist/src/execution/subagent-hitl-proxy.d.ts +5 -1
- package/dist/src/execution/subagent-hitl-proxy.js +1 -1
- package/dist/src/execution/terminal-session-completion-step.d.ts +5 -0
- package/dist/src/execution/terminal-session-completion-step.js +1 -0
- package/dist/src/execution/terminal-session-failure-step.js +1 -1
- package/dist/src/execution/turn-cancellation-control.js +1 -1
- package/dist/src/execution/turn-workflow.js +1 -1
- package/dist/src/execution/workflow-entry.d.ts +1 -0
- package/dist/src/execution/workflow-entry.js +1 -1
- package/dist/src/execution/workflow-runtime.d.ts +4 -0
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/execution/workflow-steps.d.ts +12 -2
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/harness/agent-otel-provider.js +1 -1
- package/dist/src/harness/ai-sdk-hook-bridge.js +1 -1
- package/dist/src/harness/input-extraction.js +1 -1
- package/dist/src/harness/input-request-class.d.ts +23 -0
- package/dist/src/harness/input-request-class.js +1 -0
- package/dist/src/harness/input-requests.d.ts +20 -9
- package/dist/src/harness/input-requests.js +1 -1
- package/dist/src/harness/instrumentation-lifecycle.d.ts +12 -1
- package/dist/src/harness/proxy-input-requests.d.ts +10 -4
- package/dist/src/harness/proxy-input-requests.js +1 -1
- package/dist/src/harness/session-limit-continuation.d.ts +0 -11
- package/dist/src/harness/session-limit-continuation.js +1 -1
- package/dist/src/harness/session-limit-enforcement.d.ts +3 -2
- package/dist/src/harness/session-limit-enforcement.js +1 -1
- package/dist/src/harness/session-token-limits.d.ts +41 -0
- package/dist/src/harness/session-token-limits.js +1 -0
- package/dist/src/harness/stale-input-responses.js +1 -1
- package/dist/src/harness/subagent-token-budget.d.ts +6 -4
- package/dist/src/harness/subagent-token-budget.js +1 -1
- package/dist/src/harness/tool-loop.js +1 -1
- package/dist/src/harness/turn-sleep.d.ts +12 -0
- package/dist/src/harness/turn-sleep.js +1 -0
- package/dist/src/harness/turn-tag-state.d.ts +26 -17
- package/dist/src/harness/turn-tag-state.js +1 -1
- package/dist/src/harness/types.d.ts +4 -4
- package/dist/src/harness/workflow-lifecycle.d.ts +2 -2
- package/dist/src/internal/application/compiled-artifacts.js +7 -7
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/core.js +1 -1
- package/dist/src/internal/nitro/host/dev-authored-source-watcher.d.ts +4 -0
- package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
- package/dist/src/internal/nitro/host/start-development-server.js +2 -2
- package/dist/src/internal/workflow/development-world-protocol.js +1 -1
- package/dist/src/internal/workflow/world-target.d.ts +7 -0
- package/dist/src/internal/workflow/world-target.js +1 -0
- package/dist/src/internal/workflow-bundle/workflow-core-shim.d.ts +1 -1
- package/dist/src/internal/workflow-bundle/workflow-core-shim.js +1 -1
- package/dist/src/protocol/event-dedupe.d.ts +25 -0
- package/dist/src/protocol/event-dedupe.js +1 -0
- package/dist/src/protocol/event-id.d.ts +16 -0
- package/dist/src/protocol/event-id.js +1 -0
- package/dist/src/protocol/message.d.ts +39 -23
- package/dist/src/protocol/message.js +2 -2
- package/dist/src/protocol/routes.d.ts +4 -0
- package/dist/src/protocol/routes.js +1 -1
- package/dist/src/public/channels/discord/discordChannel.d.ts +3 -3
- package/dist/src/public/channels/github/githubChannel.d.ts +3 -3
- package/dist/src/public/channels/linear/linearChannel.d.ts +3 -3
- package/dist/src/public/channels/slack/hitl.js +1 -1
- package/dist/src/public/channels/slack/slackChannel.d.ts +3 -3
- package/dist/src/public/channels/teams/hitl.js +1 -1
- package/dist/src/public/channels/teams/teamsChannel.d.ts +3 -3
- package/dist/src/public/channels/telegram/telegramChannel.d.ts +3 -3
- package/dist/src/public/channels/twilio/twilioChannel.d.ts +3 -3
- package/dist/src/public/definitions/channel.d.ts +4 -4
- package/dist/src/public/definitions/hook.d.ts +2 -2
- package/dist/src/public/tools/sleep/index.d.ts +18 -0
- package/dist/src/public/tools/sleep/index.js +1 -0
- package/dist/src/react/use-eve-agent.d.ts +3 -2
- package/dist/src/runtime/framework-tools/ask-question.js +1 -1
- package/dist/src/runtime/framework-tools/sleep.d.ts +15 -0
- package/dist/src/runtime/framework-tools/sleep.js +1 -0
- package/dist/src/runtime/hooks/registry.d.ts +2 -2
- package/dist/src/runtime/input/types.d.ts +19 -4
- package/dist/src/runtime/input/types.js +1 -1
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/types.d.ts +2 -2
- package/dist/src/services/dev-client/runtime-artifacts.d.ts +7 -0
- package/dist/src/services/dev-client/runtime-artifacts.js +1 -1
- package/dist/src/setup/boxes/apply-ai-gateway-credential.js +1 -1
- package/dist/src/setup/boxes/deploy-project.d.ts +3 -3
- package/dist/src/setup/flows/deploy.js +1 -1
- package/dist/src/setup/flows/ensure-vercel-project.d.ts +17 -0
- package/dist/src/setup/flows/ensure-vercel-project.js +1 -0
- package/dist/src/setup/flows/in-project.d.ts +1 -1
- package/dist/src/setup/flows/link.js +1 -1
- package/dist/src/setup/flows/model.js +1 -1
- package/dist/src/setup/flows/provider.js +1 -1
- package/dist/src/setup/flows/registry.d.ts +20 -0
- package/dist/src/setup/flows/registry.js +1 -0
- package/dist/src/setup/index.d.ts +0 -1
- package/dist/src/setup/index.js +1 -1
- package/dist/src/setup/{channel-setup-environment.d.ts → integrations/channels/environment.d.ts} +2 -2
- package/dist/src/setup/integrations/channels/environment.js +1 -0
- package/dist/src/setup/{channel-setup-integrations.d.ts → integrations/channels/index.d.ts} +3 -3
- package/dist/src/setup/integrations/channels/index.js +1 -0
- package/dist/src/setup/{channel-setup-runner.d.ts → integrations/channels/runner.d.ts} +1 -1
- package/dist/src/setup/integrations/channels/runner.js +1 -0
- package/dist/src/setup/{boxes/add-channels.d.ts → integrations/channels/setup.d.ts} +32 -22
- package/dist/src/setup/integrations/channels/setup.js +2 -0
- package/dist/src/setup/{channel-setup-slack.d.ts → integrations/channels/slack.d.ts} +1 -1
- package/dist/src/setup/integrations/channels/slack.js +1 -0
- package/dist/src/setup/{channel-setup-integration.d.ts → integrations/channels/types.d.ts} +23 -7
- package/dist/src/setup/{channel-setup-ui.d.ts → integrations/channels/ui.d.ts} +2 -2
- package/dist/src/setup/integrations/channels/ui.js +2 -0
- package/dist/src/setup/{channel-setup-web.d.ts → integrations/channels/web.d.ts} +1 -1
- package/dist/src/setup/integrations/channels/web.js +1 -0
- package/dist/src/setup/primitives/run-vercel.d.ts +1 -0
- package/dist/src/setup/primitives/run-vercel.js +1 -1
- package/dist/src/setup/prompter.d.ts +16 -3
- package/dist/src/setup/prompter.js +1 -1
- package/dist/src/setup/registry-setup-client.d.ts +18 -0
- package/dist/src/setup/registry-setup-client.js +2 -0
- package/dist/src/setup/registry-setup-protocol.d.ts +93 -0
- package/dist/src/setup/registry-setup-protocol.js +1 -0
- package/dist/src/setup/scaffold/channels-catalog.d.ts +1 -1
- package/dist/src/setup/scaffold/create/extension.js +2 -2
- package/dist/src/setup/scaffold/create/project.js +2 -2
- package/dist/src/setup/scaffold/create/web-template.d.ts +1 -1
- package/dist/src/setup/scaffold/create/web-template.js +2 -2
- package/dist/src/setup/scaffold/create-in-place.d.ts +1 -0
- package/dist/src/setup/scaffold/create-in-place.js +1 -0
- package/dist/src/setup/scaffold/index.js +1 -1
- package/dist/src/setup/scaffold/update/connections.js +3 -3
- package/dist/src/setup/scaffold/update/update-connection-connector.js +1 -1
- package/dist/src/setup/vercel-project-framework.d.ts +1 -1
- package/dist/src/setup/vercel-project-framework.js +1 -1
- package/dist/src/setup/vercel-project.d.ts +17 -2
- package/dist/src/setup/vercel-project.js +0 -0
- package/dist/src/shared/agent-definition.d.ts +12 -0
- package/dist/src/shared/dynamic-tool-definition.d.ts +2 -2
- package/dist/src/shared/ulid.d.ts +39 -0
- package/dist/src/shared/ulid.js +1 -0
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.d.ts +4 -4
- 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.d.ts +4 -4
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +28 -16
- package/docs/channels/overview.mdx +1 -1
- package/docs/channels/slack.mdx +2 -2
- package/docs/concepts/default-harness.md +12 -0
- package/docs/concepts/execution-model-and-durability.mdx +1 -1
- package/docs/concepts/sessions-runs-and-streaming.md +61 -0
- package/docs/evals/assertions.mdx +8 -1
- package/docs/evals/judge.mdx +11 -1
- package/docs/evals/reporters.mdx +1 -1
- package/docs/evals/running.mdx +3 -0
- package/docs/guides/client/streaming.mdx +9 -3
- package/docs/guides/dev-tui.md +9 -14
- package/docs/guides/frontend/overview.mdx +4 -2
- package/docs/guides/frontend/use-eve-agent-svelte.mdx +1 -1
- package/docs/guides/frontend/use-eve-agent-vue.mdx +10 -10
- package/docs/guides/hooks.md +40 -2
- package/docs/guides/instrumentation.md +5 -1
- package/docs/reference/cli.md +25 -38
- package/docs/reference/typescript-api.md +2 -1
- package/docs/tools/human-in-the-loop.md +5 -0
- package/docs/tutorial/ship-it.mdx +2 -2
- package/package.json +11 -6
- package/dist/src/compiled/@workflow/core/runtime/world-target.d.ts +0 -11
- package/dist/src/compiled/_chunks/workflow/sleep-BjrUxUcs.js +0 -1
- package/dist/src/node_modules/.pnpm/@workflow_utils@5.0.0-beta.7/node_modules/@workflow/utils/dist/index.js +0 -1
- package/dist/src/node_modules/.pnpm/@workflow_utils@5.0.0-beta.7/node_modules/@workflow/utils/dist/parse-name.js +0 -1
- package/dist/src/node_modules/.pnpm/@workflow_utils@5.0.0-beta.7/node_modules/@workflow/utils/dist/promise.js +0 -1
- package/dist/src/node_modules/.pnpm/@workflow_utils@5.0.0-beta.7/node_modules/@workflow/utils/dist/time.js +0 -1
- package/dist/src/node_modules/.pnpm/@workflow_utils@5.0.0-beta.7/node_modules/@workflow/utils/dist/workflow-routes.js +0 -1
- package/dist/src/node_modules/.pnpm/@workflow_utils@5.0.0-beta.7/node_modules/@workflow/utils/dist/world-target.js +0 -1
- package/dist/src/node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js +0 -1
- package/dist/src/setup/boxes/add-channels.js +0 -2
- package/dist/src/setup/boxes/add-connections.d.ts +0 -26
- package/dist/src/setup/boxes/add-connections.js +0 -1
- package/dist/src/setup/boxes/install-channel-registry-items.d.ts +0 -8
- package/dist/src/setup/boxes/install-channel-registry-items.js +0 -1
- package/dist/src/setup/boxes/one-shot-next-steps.d.ts +0 -18
- package/dist/src/setup/boxes/one-shot-next-steps.js +0 -2
- package/dist/src/setup/boxes/preflight.d.ts +0 -37
- package/dist/src/setup/boxes/preflight.js +0 -1
- package/dist/src/setup/boxes/resolve-target.d.ts +0 -58
- package/dist/src/setup/boxes/resolve-target.js +0 -1
- package/dist/src/setup/boxes/scaffold.d.ts +0 -40
- package/dist/src/setup/boxes/scaffold.js +0 -1
- package/dist/src/setup/boxes/select-channels.d.ts +0 -49
- package/dist/src/setup/boxes/select-channels.js +0 -1
- package/dist/src/setup/boxes/select-chat.d.ts +0 -38
- package/dist/src/setup/boxes/select-chat.js +0 -1
- package/dist/src/setup/boxes/select-connections.d.ts +0 -30
- package/dist/src/setup/boxes/select-connections.js +0 -1
- package/dist/src/setup/boxes/select-setup-mode.d.ts +0 -32
- package/dist/src/setup/boxes/select-setup-mode.js +0 -1
- package/dist/src/setup/channel-setup-deployment.d.ts +0 -11
- package/dist/src/setup/channel-setup-deployment.js +0 -1
- package/dist/src/setup/channel-setup-environment.js +0 -1
- package/dist/src/setup/channel-setup-integration.js +0 -1
- package/dist/src/setup/channel-setup-integrations.js +0 -1
- package/dist/src/setup/channel-setup-runner.js +0 -1
- package/dist/src/setup/channel-setup-slack.js +0 -1
- package/dist/src/setup/channel-setup-ui.js +0 -2
- package/dist/src/setup/channel-setup-web.js +0 -1
- package/dist/src/setup/flows/channels.d.ts +0 -57
- package/dist/src/setup/flows/channels.js +0 -1
- package/dist/src/setup/flows/connections.d.ts +0 -37
- package/dist/src/setup/flows/connections.js +0 -3
- package/dist/src/setup/onboarding.d.ts +0 -60
- package/dist/src/setup/onboarding.js +0 -1
- /package/dist/src/{node_modules/.pnpm/@workflow_utils@5.0.0-beta.7/node_modules/@workflow/utils/dist/pluralize.js → setup/integrations/channels/types.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i as e,o as t,t as n}from"../../_chunks/workflow/rolldown-runtime-DaDcL9Zw.js";import"../../_chunks/workflow/dist-B-vbuNqP.js";import{i as r,n as i,r as a,t as o}from"../../_chunks/workflow/workflow-routes-CwqB063q.js";import{D as s,T as c,_ as l,d as u,f as d,o as f,r as p}from"../../_chunks/workflow/dist-BeQ_csYA.js";import{A as m,B as h,D as g,E as _,F as v,I as ee,K as y,L as b,R as te,T as ne,U as x,V as S,Y as C,_ as w,a as re,bn as ie,f as ae,j as T,jr as E,k as D,l as O,m as k,n as oe,o as A,q as se,r as ce,u as j,ui as M,vr as N,z as le}from"../../_chunks/workflow/dist-WjtNsOyf.js";import{n as ue,t as de}from"../../_chunks/workflow/spec-version-C0hBsfu-.js";import{t as P}from"../../_chunks/workflow/undici-DWL_MYmT.js";import{createHash as fe}from"node:crypto";import{promisify as pe}from"node:util";import{fileURLToPath as me}from"node:url";import{promises as F}from"node:fs";import I,{access as he,constants as ge,mkdir as _e,readFile as
|
|
2
|
-
`);for(let e of r){let r=e.trim().split(/\s+/);if(r.length<5||r[0]?.toUpperCase()!==`TCP`)continue;let[,i,,a,o]=r;if(a?.toUpperCase()!==`LISTENING`||o!==t.toString())continue;let s=i.lastIndexOf(`:`);if(s===-1)continue;let c=Ne(i.slice(s+1));c!==void 0&&n.push(c)}return n}const Fe=pe(
|
|
1
|
+
import{i as e,o as t,t as n}from"../../_chunks/workflow/rolldown-runtime-DaDcL9Zw.js";import"../../_chunks/workflow/dist-B-vbuNqP.js";import{i as r,n as i,r as a,t as o}from"../../_chunks/workflow/workflow-routes-CwqB063q.js";import{D as s,T as c,_ as l,d as u,f as d,o as f,r as p}from"../../_chunks/workflow/dist-BeQ_csYA.js";import{A as m,B as h,D as g,E as _,F as v,I as ee,K as y,L as b,R as te,T as ne,U as x,V as S,Y as C,_ as w,a as re,bn as ie,f as ae,j as T,jr as E,k as D,l as O,m as k,n as oe,o as A,q as se,r as ce,u as j,ui as M,vr as N,z as le}from"../../_chunks/workflow/dist-WjtNsOyf.js";import{n as ue,t as de}from"../../_chunks/workflow/spec-version-C0hBsfu-.js";import{t as P}from"../../_chunks/workflow/undici-DWL_MYmT.js";import{createHash as fe}from"node:crypto";import{promisify as pe}from"node:util";import{fileURLToPath as me}from"node:url";import{promises as F}from"node:fs";import I,{access as he,constants as ge,mkdir as _e,readFile as ve,readdir as ye,readlink as be,rm as xe,unlink as Se,writeFile as Ce}from"node:fs/promises";import L from"node:path";import{tmpdir as we}from"node:os";import{execFile as Te}from"node:child_process";import{setTimeout as Ee}from"node:timers/promises";import{EventEmitter as De}from"node:events";var Oe=class extends s{dataDir;constructor(e,t){super(`[workflow] The local (filesystem) world cannot create its data directory "${e}" (${t}). Workflow runs cannot be stored, so every run will fail before its first step. If this is a Vercel deployment, its filesystem is read-only and the local world cannot work there. The world is selected from the environment when the process starts: the Vercel world is used when VERCEL_DEPLOYMENT_ID is set, unless WORKFLOW_TARGET_WORLD says otherwise. Unset WORKFLOW_TARGET_WORLD in this deployment, or set WORKFLOW_TARGET_WORLD=vercel, to use the Vercel world. Otherwise point WORKFLOW_LOCAL_DATA_DIR at a writable directory.`,{code:t}),this.name=`UnwritableDataDirError`,this.dataDir=e}static is(e){return e instanceof Error&&e.name===`UnwritableDataDirError`}};const ke=new Set([`EROFS`,`EACCES`,`EPERM`]);function Ae(e){return e!==void 0&&ke.has(e)}let je=!1;function Me(e){if(je||!process.env.VERCEL_DEPLOYMENT_ID)return;let t=L.resolve(e),n=we();t===n||t.startsWith(`${n}${L.sep}`)||(je=!0,console.warn(`[workflow] Warning: the local (filesystem) world is running inside a Vercel deployment, writing to ${t}. That filesystem is read-only, so workflow runs will fail before their first step. The world is selected from the environment when the process starts: the Vercel world is used when VERCEL_DEPLOYMENT_ID is set, unless WORKFLOW_TARGET_WORLD says otherwise. Unset WORKFLOW_TARGET_WORLD in this deployment, or set WORKFLOW_TARGET_WORLD=vercel, to use the Vercel world.`))}function Ne(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function Pe(e,t){let n=[],r=e.trim().split(`
|
|
2
|
+
`);for(let e of r){let r=e.trim().split(/\s+/);if(r.length<5||r[0]?.toUpperCase()!==`TCP`)continue;let[,i,,a,o]=r;if(a?.toUpperCase()!==`LISTENING`||o!==t.toString())continue;let s=i.lastIndexOf(`:`);if(s===-1)continue;let c=Ne(i.slice(s+1));c!==void 0&&n.push(c)}return n}const Fe=pe(Te);function Ie(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const Le=((e,t)=>e.join(t))([``,`proc`],`/`);async function Re(e){let t=[`${Le}/net/tcp`,`${Le}/net/tcp6`],n=[],r=new Set,i=`${Le}/${e}/fd`;try{let e=(await ye(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await be(`${i}/${e}`)).match(/^socket:\[(\d+)\]$/)?.[1]??null));for(let e of t)e.status===`fulfilled`&&e.value&&(n.push(e.value),r.add(e.value))}catch{return[]}if(n.length===0)return[];let a=new Map;for(let e of t)try{let t=(await ve(e,`utf8`)).split(`
|
|
3
3
|
`).slice(1);for(let e of t){if(!e.trim())continue;let t=e.trim().split(/\s+/);if(t.length<10)continue;let n=t[1],i=t[3],o=t[9];if(!n||i!==`0A`||!o||!r.has(o))continue;let s=n.indexOf(`:`);if(s===-1)continue;let c=n.slice(s+1);if(!c)continue;let l=Ie(c,16);l!==void 0&&a.set(o,l)}}catch{}let o=[];for(let e of n){let t=a.get(e);t!==void 0&&o.push(t)}return o}async function ze(e){try{let{stdout:t}=await Fe(`lsof`,[`-a`,`-i`,`-P`,`-n`,`-p`,e.toString()]),n=[],r=t.split(`
|
|
4
|
-
`);for(let e of r)if(e.includes(`LISTEN`)){let t=e.trim().split(/\s+/)[8];if(t){let e=t.lastIndexOf(`:`);if(e!==-1){let r=Ie(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Be(e){try{let{stdout:t}=await Fe(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Pe(t,e)}catch{return[]}}async function Ve(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Re(e);case`darwin`:return await ze(e);case`win32`:return await Be(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const He=`${o}/flow?__health`;async function Ue(e,t={}){let{endpoint:n=He,timeout:r=500}=t,i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return(await fetch(`http://localhost:${e}${n}`,{method:`HEAD`,signal:i.signal})).status===200}catch{return!1}finally{clearTimeout(a)}}async function We(e){let t=await Ve();if(t.length===0)return;if(t.length===1)return t[0];let n=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await Ue(t,e)})))).find(e=>e.isWorkflow);return n?n.port:(process.env.NODE_ENV===`development`&&console.debug(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function Ge(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Ke=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,qe=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Je=Ge(()=>({dataDir:Ke(),baseUrl:qe()}));function Ye(e){if(e.recoverActiveRuns!==void 0)return e.recoverActiveRuns;let t=process.env.WORKFLOW_LOCAL_RECOVER_ACTIVE_RUNS?.toLowerCase();return!(t===`0`||t===`false`)}function Xe(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??i(`http://localhost`)}async function Ze(e){if(e.baseUrl)return e.baseUrl;if(process.env.WORKFLOW_LOCAL_BASE_URL)return process.env.WORKFLOW_LOCAL_BASE_URL;if(typeof e.port==`number`)return i(`http://localhost:${e.port}`);if(process.env.PORT)return i(`http://localhost:${process.env.PORT}`);let t=await We({endpoint:a()});if(t)return i(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const Qe=A(()=>Math.random());function $e(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var et=class extends s{constructor(e,t){super(`Unsafe ${e} "${$e(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function z(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new et(e,t)}function B(e,...t){let n=R.resolve(e),r=R.resolve(e,...t);if(r!==n&&!r.startsWith(n+R.sep))throw new et(`path`,t.join(`/`));return r}const tt=process.platform===`win32`;async function V(e,t=5){if(!tt)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}const nt=new Set,rt=new Set;function it(){nt.clear(),rt.clear()}const at=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function ot(e){return e.replace(at,``)}function st(e,t){return e.endsWith(`.${t}`)}function ct(e){return!at.test(e)}function H(e,t,n,r){return z(`fileId`,n),r!==void 0&&z(`tag`,r),B(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function U(e,t,n,r,i){if(z(`fileId`,n),i!==void 0&&z(`tag`,i),i){let a=await K(B(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return K(B(e,t,`${n}.json`),r)}async function lt(e,t){let n=`.${t}.json`;try{return(await F.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function ut(e,t,n){let r=`.${t}${n}`;try{return(await F.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function dt(e){let t=R.resolve(e);if(!rt.has(t))try{await F.mkdir(t,{recursive:!0}),rt.add(t)}catch(e){let n=e.code;if(Ae(n)&&!await ft(t))throw new Oe(t,n)}}async function ft(e){try{return(await F.stat(e)).isDirectory()}catch{return!1}}async function pt(e,t){await dt(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return rt.delete(R.resolve(e)),await dt(e),t()}}function W(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function mt(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function G(e,t,n){return ht(e,JSON.stringify(t,W,2),n)}async function ht(e,t,n){if(!n?.overwrite){if(nt.has(e))throw new p(`File ${e} already exists and 'overwrite' is false`);try{throw await F.access(e),nt.add(e),new p(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${Qe()}`,i=!1;try{await pt(R.dirname(e),async()=>{await F.writeFile(r,t),i=!0,await V(()=>F.rename(r,e))}),nt.add(e)}catch(e){throw i&&await V(()=>F.unlink(r),3).catch(()=>{}),e}}async function K(e,t){try{let n=await F.readFile(e,`utf-8`);return t.parse(JSON.parse(n,mt))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function gt(e){return await F.readFile(e)}async function _t(e){let t=await F.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function q(e){try{await F.unlink(e)}catch(e){if(e.code!==`ENOENT`)throw e}}async function J(e,t){let n=`${e}.tmp.${Qe()}`,r=!1;try{return await pt(R.dirname(e),async()=>{await F.writeFile(n,t,{flag:`wx`}),r=!0;try{return await V(()=>F.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await V(()=>F.unlink(n),3).catch(()=>{})}}async function vt(e,t){try{return await pt(R.dirname(t),()=>V(()=>F.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function Y(e){return yt(e,`.json`)}async function yt(e,t){try{return(await F.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}function bt(e){if(!e)return null;let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null}}function xt(e,t){return t?`${e.toISOString()}|${t}`:e.toISOString()}async function X(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d}=e;i!==void 0&&z(`filePrefix`,i);let f=R.resolve(t),p=await Y(f),m=i?p.filter(e=>e.startsWith(i)):p,h=a?m.filter(a):m,g=bt(l),_=h;g&&(_=h.filter(e=>{let t=u(`${e}.json`);if(t){let e=g.timestamp.getTime(),n=t.getTime();return g.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let v=[];for(let e=0;e<_.length;e+=32){let t=_.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=R.join(f,`${e}.json`);try{let e=r?.get(t);return e===void 0?await K(t,n):structuredClone(e)}catch(t){if(t instanceof M)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}}));for(let e of i)if(e&&!(o&&!o(e))){if(g){let t=e.createdAt.getTime(),n=g.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&g.id&&d&&d(e)>=g.id)continue}else if(t<n||t===n&&g.id&&d&&d(e)<=g.id)continue}v.push(e)}}v.sort((e,t)=>{let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let ee=v.length>c,y=ee?v.slice(0,c):v;return{data:y,cursor:y.length>0?xt(y[y.length-1].createdAt,d?.(y[y.length-1])):null,hasMore:ee}}let Z=null;function St(){return typeof import.meta.url==`string`&&import.meta.url?R.dirname(me(import.meta.url)):null}async function Ct(){if(Z)return Z;let e=St();if(e)try{let t=await L(R.join(e,`../package.json`),`utf-8`);return Z=JSON.parse(t),Z}catch{}return Z={name:`@workflow/world-local`,version:`5.0.0-beta.31`},Z}const wt=`version.txt`;var Tt=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},Et=class extends Error{oldVersion;newVersion;suggestedVersion;constructor(e,t,n,r){super(e),this.name=`DataDirVersionError`,this.oldVersion=t,this.newVersion=n,this.suggestedVersion=r}};function Dt(e){let t=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);if(!t)throw Error(`Invalid version string: "${e}"`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4],raw:e}}function Q(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function Ot(e){let t=e.trim(),n=t.lastIndexOf(`@`);if(n<=0)throw Error(`Invalid version file content: "${e}"`);return{packageName:t.substring(0,n),version:Dt(t.substring(n+1))}}function kt(e,t){return`${e}@${Q(t)}`}function At(e,t){console.log(`[world-local] Upgrading from version ${Q(e)} to ${Q(t)}`)}async function jt(e){let t=R.resolve(e);try{await _e(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new Tt(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await he(t,ge.R_OK)}catch(e){let n=e;throw new Tt(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=R.join(t,`.workflow-write-test-${Date.now()}`);try{await Se(n,``),await xe(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new Tt(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Mt(e){let t=R.join(R.resolve(e),wt);try{return Ot(await L(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Nt(e,t){await Se(R.join(R.resolve(e),wt),kt((await Ct()).name,t))}function Pt(e,t){return t||Q(e)}async function Ft(e){await jt(e);let t=await Ct(),n=Dt(t.version),r=await Mt(e);if(r===null){await Nt(e,n);return}let{version:i}=r;if(Q(i)!==Q(n))try{At(i,n),await Nt(e,n)}catch(e){let r=Pt(i,e instanceof Et?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Q(i)} to ${Q(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let It=null;async function Lt(){return It||=import(`../../_chunks/workflow/src-Cj3P1ChQ.js`).then(e=>t(e.t(),1)).catch(()=>null),It}let Rt=null;async function zt(){return Rt||=Lt().then(e=>e?e.trace.getTracer(`workflow`):null),Rt}async function Bt(e,...t){let[n,r]=await Promise.all([zt(),Lt()]),{fn:i,opts:a}=typeof t[0]==`function`?{fn:t[0],opts:{}}:{fn:t[1],opts:t[0]};if(!i)throw Error(`Function to trace must be provided`);return!n||!r?await i():n.startActiveSpan(e,a,async e=>{try{let t=await i(e);return e.setStatus({code:r.SpanStatusCode.OK}),t}catch(t){throw e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),t}finally{e.end()}})}async function Vt(e){let t=await Lt();if(t)return t.SpanKind[e]}function Ht(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Ut=Ht(`peer.service`),Wt=Ht(`rpc.system`),Gt=Ht(`rpc.service`),Kt=Ht(`rpc.method`),qt=Ht(`workflow.run.id`),Jt=Ht(`step.id`),Yt={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},Xt={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},Zt=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function Qt(e){if(e.length>=2&&typeof e[1]==`object`&&e[1]!==null){let t=e[1];if(typeof t.eventType==`string`)return t.eventType}}function $t(e,t){return typeof e[t]==`string`?e[t]:void 0}function en(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function tn(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.runId==`string`)return t.runId;for(let e of[`run`,`step`,`hook`,`wait`]){let n=t[e];if(typeof n==`object`&&n){let e=n.runId;if(typeof e==`string`)return e}}}function nn(e,t,n){let r=`${e}.${t}`,i={},a=Xt[r],o=a===void 0?Zt.has(r)?en(n[0]):void 0:$t(n,a);if(o&&Object.assign(i,qt(o)),r===`world.steps.get`){let e=$t(n,1);e&&Object.assign(i,Jt(e))}return i}function rn(e,t){let n={};for(let r of Object.keys(t))if(typeof t[r]!=`function`)n[r]=t[r];else{let i=t[r],a=String(r);n[r]=async(...t)=>{let n=`${e}.${a}`;if(e===`world.events`&&a===`create`){let r=Qt(t);r&&(n=`${e}.${a} ${r}`)}return Bt(n,{kind:await Vt(`INTERNAL`)},async r=>{r?.setAttributes({...Ut(Yt.peerService),...Wt(Yt.rpcSystem),...Gt(Yt.rpcService),...Kt(n),...nn(e,a,t)});let o=await i(...t),s=tn(o);return s&&r?.setAttributes(qt(s)),o})}}return n}var an=n((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimit=t.Sema=void 0;let r=n(e(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};t.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}t.RateLimit=f}))(),on=P(),sn=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,W))}async deserialize(e){let t=[],n=e.getReader();for(;;){let{done:e,value:r}=await n.read();if(e)break;r&&t.push(r)}let r=Buffer.concat(t).toString();return JSON.parse(r,mt)}};const cn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,ln=2147483647,un=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3,dn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function fn(e){let t=e,n=new Set;for(;t&&typeof t==`object`&&!n.has(t);){if(n.add(t),`message`in t&&typeof t.message==`string`&&t.message.includes(dn))return!0;t=`cause`in t?t.cause:void 0}return!1}function pn(e){let t=new on.Agent({headersTimeout:0,connections:1e3,keepAliveTimeout:3e4}),n=new sn,i=A(),a=new an.Sema(un),o=new AbortController,s=o.signal,c=new Map,l=new Map,u=async(o,u,d)=>{let f=[];if(d?.idempotencyKey){let e=c.get(d.idempotencyKey);if(e)return{messageId:e}}let p=n.serialize(u),{prefix:m}=w(o),h=ae.parse(`msg_${i()}`),g=u,_=g.runId??void 0,v=g.stepId??void 0;if(d?.idempotencyKey){let e=d.idempotencyKey;c.set(e,h),f.push(()=>{c.delete(e)})}return(async()=>{d?.delaySeconds&&d.delaySeconds>0&&await Te(Math.min(d.delaySeconds*1e3,ln),void 0,{signal:s}),a.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${un}) reached, waiting for queue to free up`),await a.acquire());let n=0;try{for(let i=0;i<256;i++){let a={...d?.headers,"content-type":`application/json`,"x-vqs-queue-name":o,"x-vqs-message-id":h,"x-vqs-message-attempt":String(n+1)},c=l.get(m),u;try{if(c)u=await c(new Request(r(Xe(e),{type:`flow`}),{method:`POST`,headers:a,body:p}));else{let n=await Ze(e);u=await fetch(r(n,{type:`flow`}),{method:`POST`,duplex:`half`,dispatcher:t,headers:a,body:p})}}catch(e){let t=e?.name;if(s.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(fn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${i+1}), retrying`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v},error:String(e)}),await Te(5e3,void 0,{signal:s});continue}n++;let f=await u.text();if(u.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await Te(Math.min(e*1e3,ln),void 0,{signal:s});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${n}, HTTP ${u.status})`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v},handlerError:f}),await Te(5e3,void 0,{signal:s})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v}})}finally{a.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(fn(e)?console.error(`[local world] Queue operation failed: detected "${dn}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of f)e()}),{messageId:h}},d=N({"x-vqs-queue-name":k,"x-vqs-message-id":ae,"x-vqs-message-attempt":C()});return{queue:u,createQueueHandler:(e,t)=>async n=>{let r=d.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new sn().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a}),n=null;return typeof e?.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,cn)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await Ct()).version}`,registerHandler(e,t){l.set(e,t)},async close(){s.aborted||(o.abort(),await t.close())}}}function mn(e){return fe(`sha256`).update(e).digest(`hex`)}function hn(e,t,n){return B(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function gn(e,t,n){let r=[hn(e,t)];n&&r.push(hn(e,t,n));for(let e of r)try{return await I.access(e),!0}catch{}return!1}function _n(e,t,n){return B(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function vn(e,t,n){let r=[_n(e,t)];n&&r.push(_n(e,t,n));for(let e of r)try{return await I.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function yn(e,t,n){return B(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function bn(e,t,n,r){return R.join(yn(e,t,r),`${n}.json`)}async function xn(e,t,n){let r=[yn(e,t)];n&&r.push(yn(e,t,n));for(let e of r){let t;try{t=await I.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await V(()=>I.unlink(R.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await I.rmdir(e).catch(()=>{})}}async function Sn(e,t,n){let r=[];try{r=await I.readdir(R.join(e,`events`))}catch(e){if(e.code!==`ENOENT`)throw e}let i=`${t}-`,a=null;for(let e of r){if(!e.startsWith(i)||!e.endsWith(`.json`))continue;let t=e.slice(0,-5);if(!ct(t)&&!(n&&st(t,n)))continue;let r=ot(t).slice(i.length);(!a||r>a)&&(a=r)}let o=Date.now();if(a)try{let e=re(a.replace(/^evnt_/,``));o<=e&&(o=e+1)}catch{}return{eventId:`evnt_${En(o)}`,createdAt:new Date(o)}}function Cn(e,t){return R.join(e,`hooks`,`tokens`,`${mn(t)}.json`)}async function wn(e,t,n,r){let i=Cn(e,t),a;try{a=JSON.parse(await I.readFile(i,`utf8`))}catch{return}a.runId!==n||a.hookId!==r||await I.unlink(i).catch(()=>{})}function Tn(e,t,n,r){let i=fe(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return R.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const En=A(()=>Math.random()),$=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=ot(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?oe(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:oe(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},Dn=N({runId:E()}),On=N({hookId:E(),tag:E().optional()});function kn(e,t){return B(e,`hooks`,`token-index`,mn(t))}function An(e,t){return z(`hookId`,t),B(e,`hooks`,`id-index`,t)}function jn(e){return B(e,`hooks`,`by-run`)}function Mn(e){let t=ot(e);return t===e?void 0:e.slice(t.length+1)}function Nn(e,t){return t?ct(e)||st(e,t):ct(e)}async function Pn(e){try{return await K(e,T)}catch(e){if(e instanceof SyntaxError||e instanceof M)return null;throw e}}async function Fn(e,t,n,r,i,a){z(`runId`,n),z(`eventId`,i),a!==void 0&&z(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([J(R.join(kn(e,t),o),s),J(R.join(An(e,r),o),s)])}function In(e,t,n,r){return H(e,`hooks/by-run`,`${t}-${n}`,r)}async function Ln(e,t,n,r){await J(In(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function Rn(e,t,n,r){await q(In(e,t,n,r)),r&&await q(In(e,t,n))}async function zn(e,t){z(`runId`,t);let n=jn(e),r=`${t}-`,i=[];for(let e of await Y(n)){if(!e.startsWith(r))continue;let t=null;try{t=await K(R.join(n,`${e}.json`),On)}catch(e){if(!(e instanceof SyntaxError||e instanceof M))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function Bn(e,t){await q(R.join(jn(e),`${t}.json`))}const Vn=new Map;function Hn(){Vn.clear()}async function Un(e){let t=R.resolve(e),n=Vn.get(t);return n||(n=Gn(t).catch(e=>{throw Vn.delete(t),e}),Vn.set(t,n)),n}async function Wn(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function Gn(e){let t=R.join(e,`hooks`,`.hook-index-complete`);try{await I.access(t);return}catch{}let n=R.join(e,`events`);await Wn(await Y(n),32,async t=>{let r=await Pn(R.join(n,`${t}.json`));if(!r||r.eventType!==`hook_created`||typeof r.correlationId!=`string`)return;let i=r.eventData?.token;if(typeof i==`string`)try{await Fn(e,i,r.runId,r.correlationId,r.eventId,Mn(t))}catch{}});let r=R.join(e,`hooks`);await Wn(await Y(r),32,async t=>{let n=null;try{n=await K(R.join(r,`${t}.json`),j)}catch(e){if(!(e instanceof SyntaxError||e instanceof M))throw e}if(n)try{await Ln(e,n.runId,n.hookId,Mn(t))}catch{}}),await J(t,``)}async function Kn(e,t,n,r){await Un(e);let i;try{i=t.kind===`token`?kn(e,t.token):An(e,t.hookId)}catch{return null}let a=(await Y(i)).filter(e=>Nn(e,r)).sort((e,t)=>ot(t).localeCompare(ot(e)));for(let t of a){let r=null;try{r=await K(R.join(i,`${t}.json`),Dn)}catch(e){if(!(e instanceof SyntaxError||e instanceof M))throw e}if(!r)continue;let a=ot(t),o;try{o=H(e,`events`,`${r.runId}-${a}`,Mn(t))}catch{continue}let s=await Pn(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function qn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Jn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Yn(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function Xn(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function Zn(e){let{token:t,metadata:n,isWebhook:r,isSystem:i}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1}}function Qn(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function $n(e,t,n){let r=await U(e,`runs`,t,D,n);return r?m(r.status):!1}async function er(e,t,n,r){let i=await Kn(e,t,e=>Qn(e,n),r);return!i||!Qn(i,n)||await $n(e,i.runId,r)||await gn(e,i.correlationId,r)?null:i}async function tr(e,t,n){let r=Zn(t);return await J(R.join(e,`hooks`,`tokens`,`${mn(r.token)}.json`),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId})),await Ln(e,r.runId,r.hookId,n),await J(H(e,`hooks`,r.hookId,n),JSON.stringify(r,W,2)),r}async function nr(e,t,n){let r=await er(e,{kind:`token`,token:t},e=>Xn(e)===t,n);return r?tr(e,r,n):null}async function rr(e,t,n){let r=await er(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?tr(e,r,n):null}function ir(e,t){let n=N({hookId:E().optional()});async function r(r){let i=null;try{i=await K(Cn(e,r),n)}catch(e){if(!(e instanceof SyntaxError||e instanceof M))throw e}if(i?.hookId)try{let n=await U(e,`hooks`,i.hookId,j,t);if(n&&n.token===r)return{...n,isWebhook:n.isWebhook??!0}}catch(e){if(!et.is(e))throw e}let a=R.join(e,`hooks`),o=await Y(a);for(let e of o){let t=await K(R.join(a,`${e}.json`),j);if(t&&t.token===r)return{...t,isWebhook:t.isWebhook??!0}}return null}async function i(n,r){z(`hookId`,n);let i=await U(e,`hooks`,n,j,t);if(!i){let i=await rr(e,n,t);if(!i)throw new f(n);let a=r?.resolveData||`all`;return Yn({...i,isWebhook:i.isWebhook??!0},a)}let a=r?.resolveData||`all`;return Yn({...i,isWebhook:i.isWebhook??!0},a)}async function a(n){let i=await r(n)??await nr(e,n,t);if(!i)throw new f(n);return i}async function o(t){let n=R.join(e,`hooks`),r=t.resolveData||`all`,i=await X({directory:n,schema:j,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:e=>!(t.runId&&e.runId!==t.runId),getCreatedAt:()=>null,getId:e=>e.hookId});return{...i,data:i.data.map(e=>Yn(e,r))}}return{get:i,getByToken:a,list:o}}async function ar(e,t){await Un(e);for(let n of await zn(e,t)){if(n.hookId){let r=null,i=null;try{i=H(e,`hooks`,n.hookId,n.tag),r=await K(i,j)}catch(e){if(!et.is(e)&&!(e instanceof SyntaxError||e instanceof M))throw e}r&&i&&r.runId===t&&(await wn(e,r.token,r.runId,r.hookId),await q(Tn(e,r.token,r.runId,r.hookId)),await q(i))}await Bn(e,n.fileId)}}async function or(e,t,n,r,i,a){if(m(a.status)||await vn(e,t))throw new u(`Workflow run "${t}" is already in a terminal state`);let o=bn(e,t,n);await J(o,r);try{if(await vn(e,t)||await vt(o,i)!==`linked`)throw new u(`Workflow run "${t}" is already in a terminal state`)}finally{await I.unlink(o).catch(()=>{})}}async function sr(e,t,n,r,i){z(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await J(_n(e,t),``),await xn(e,t);let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await G(B(e,`runs`,`${t}.json`),i,{overwrite:!0}),await ar(e,t),{event:void 0,run:qn(i,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${En()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:5},c=B(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await or(e,t,i,JSON.stringify(s,W,2),c,r):await G(c,s),{event:S(s,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const cr=new Map;function lr(e,t){let n=cr.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{cr.get(e)===r.task&&cr.delete(e)}})();return r.task=i,cr.set(e,i),i}function ur(e,t){let n=(async(n,r)=>{z(`runId`,n);let i=await U(e,`runs`,n,D,t);if(!i)throw new c(n);return qn(i,r?.resolveData??`all`)});return{get:n,getMany:(async(e,t)=>{let r=[...new Set(e)],i=await Promise.all(r.map(async e=>{try{return await n(e,t)}catch(e){if(e instanceof c)return null;throw e}})),a=new Map(r.map((e,t)=>[e,i[t]]));return e.map(e=>a.get(e)??null)}),list:(async t=>{let n=t?.resolveData??`all`,r=await X({directory:R.join(e,`runs`),schema:D,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:$(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(n,r,i)=>(z(`runId`,n),lr(n,async()=>{let a=await U(e,`runs`,n,D,t);if(!a)throw new c(n);try{se(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof x,e}let o=y(a.attributes,r),s={...a,attributes:o,updatedAt:new Date};return await G(H(e,`runs`,n,t),s,{overwrite:!0}),{attributes:o}}))}}function dr(){let e=process.env.WORKFLOW_MAX_EVENTS,t=e===void 0?NaN:Number(e);return Number.isInteger(t)&&t>0?t:25e3}const fr=N({hookId:E().optional(),runId:E(),eventId:E().optional()}),pr=N({eventId:E()});async function mr(e){try{return await K(e,fr)}catch(e){if(e instanceof SyntaxError||e instanceof M)return null;throw e}}async function hr(e,t,n){if(t.hookId&&await gn(e,t.hookId,n))return!0;let r=await U(e,`runs`,t.runId,D,n);return!r||m(r.status)}async function gr(e){try{return await K(e,pr)}catch(e){if(e instanceof SyntaxError||e instanceof M)return null;throw e}}async function _r(e,t,n){return(await X({directory:R.join(e,`events`),schema:T,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:$(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function vr(e,t,n,r,i){let a=await U(e,`events`,`${t}-${r}`,T,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await U(e,`hooks`,n,j,i))return;let o=a.eventData??{};if(typeof o.token!=`string`)return;let s={runId:t,hookId:n,token:o.token,metadata:o.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:a.createdAt,specVersion:a.specVersion,isWebhook:o.isWebhook??!0,isSystem:o.isSystem??!1};await Fn(e,o.token,t,n,r,i),await Ln(e,t,n,i),await J(H(e,`hooks`,n,i),JSON.stringify(s,W,2))}async function yr(e,t,n,r,i){let a=Tn(e,t,n,r);return await J(a,JSON.stringify({eventId:i}))?i:(await gr(a))?.eventId??null}function br(e,t,n){let r=e.get(t),i={},a=(async()=>{r&&await r.catch(()=>void 0);try{return await n()}finally{e.get(t)===i.task&&e.delete(t)}})();return i.task=a,e.set(t,a),a}async function xr(e,t){let n=R.join(e,`waits`),r=await Y(n);for(let e of r)e.startsWith(`${t}-`)&&await q(R.join(n,`${e}.json`))}async function Sr(e,t,n,r){return lr(t,async()=>{let i=await K(H(e,`runs`,t,n),D),a={...r,attributes:i?.attributes??r.attributes};return await G(H(e,`runs`,t,n),a,{overwrite:!0}),a})}function Cr(e,t){let n=4*1024*1024,r=new Map,i=new Map,a=new Map,o=0;function x(e){let t=r.get(e);if(!t)return;r.delete(e),o-=i.get(e)??0,i.delete(e);let n=a.get(t.runId);n?.delete(e),n?.size===0&&a.delete(t.runId)}function C(e){for(let t of a.get(e)??[])x(t)}function w(){r.clear(),i.clear(),a.clear(),o=0}function re(e,t,s){if(s>n)return;for(;r.size>0&&(r.size>=1e3||o+s>n);){let e=r.keys().next().value;x(e)}r.set(e,t),i.set(e,s),o+=s;let c=a.get(t.runId)??new Set;c.add(e),a.set(t.runId,c)}function ie(e,t,r){if(le(e.eventType)){C(e.runId);return}let i=Buffer.byteLength(r);if(i>n)return;let a=T.safeParse(JSON.parse(r,mt));a.success&&re(t,a.data,i)}async function ae(n){let r=H(e,`events`,`${n.runId}-${n.eventId}`,t),i=JSON.stringify(n,W,2);await ht(r,i),ie(n,r,i)}let E=new Map,O=new Map;return{clearCache:w,async create(n,i,a){if(n!=null&&n!==``&&z(`runId`,n),`correlationId`in i&&typeof i.correlationId==`string`&&z(`correlationId`,i.correlationId),te(i.eventType)&&n&&i.correlationId){let e=t?`${n}-${i.correlationId}.${t}`:`${n}-${i.correlationId}`;return br(E,e,()=>o())}if(b(i.eventType)&&n&&i.correlationId){let e=t?`${n}-${i.correlationId}.hook.${t}`:`${n}-${i.correlationId}.hook`;return br(O,e,()=>o())}return o();async function o(){let o=`evnt_${En()}`,b=new Date,x;if(i.eventType===`run_created`&&(!n||n===``))x=`wrun_${En()}`;else if(n)x=n;else throw Error(`runId is required for non-run_created events`);if(i.eventType===`run_created`&&n&&n!==``){let e=ce(x,`wrun_`);if(e)throw new s(e)}let C=i.specVersion??5,w=null;if(i.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(i.eventType)&&(w=await U(e,`runs`,x,D,t),i.eventType===`run_started`&&!w&&`eventData`in i&&i.eventData)){let n=i.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){se(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:x,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:C,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},encryptionPublicKey:n.encryptionPublicKey,createdAt:b,updatedAt:b};if(await J(H(e,`runs`,x,t),JSON.stringify(r,W))){let e=`evnt_${En()}`;await ae({eventType:`run_created`,runId:x,eventId:e,createdAt:b,specVersion:C,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),w=r}else w=await U(e,`runs`,x,D,t)}}if(i.eventType===`run_failed`&&!w||i.eventType===`attr_set`&&!w)throw new c(x);if(w){if(ue(w.specVersion))throw new d(w.specVersion,5);if(de(w.specVersion))return sr(e,x,i,w,a)}let re=v(i),E=re&&i.eventType===`step_started`;if(w&&m(w.status)){if(i.eventType===`run_cancelled`&&w.status===`cancelled`){let e={...i,runId:x,eventId:o,createdAt:b,specVersion:C};return await ae(e),{event:S(e,a?.resolveData??`all`),run:w,...w?{maxEvents:dr()}:{}}}if(i.eventType===`run_started`)throw new u(`Workflow run "${x}" is already in terminal state "${w.status}"`);if(le(i.eventType))throw new p(`Cannot transition run from terminal state "${w.status}"`);if(re)throw new p(`Cannot create new entities on run in terminal state "${w.status}"`);if(i.eventType===`attr_set`)throw new p(`Cannot set attributes on run in terminal state "${w.status}"`)}let O=null;if(te(i.eventType)&&i.eventType!==`step_created`&&i.correlationId){if(O=await U(e,`steps`,`${x}-${i.correlationId}`,_,t),!O&&!E)throw new s(`Step "${i.correlationId}" not found`);if(E&&O)throw new p(`Step "${i.correlationId}" already created`);if(O){if(g(O.status))throw new p(`Cannot modify step in terminal state "${O.status}"`);if(w&&m(w.status)&&O.status!==`running`)throw new u(`Cannot modify non-running step on run in terminal state "${w.status}"`)}}if(ee(i.eventType)&&i.correlationId&&(i.eventType===`hook_received`&&await gn(e,i.correlationId,t)||!await U(e,`hooks`,i.correlationId,j,t)))throw new f(i.correlationId);let k={...i,runId:x,eventId:o,createdAt:b,specVersion:C};if(i.eventType===`run_started`&&`eventData`in k&&delete k.eventData,E&&k.eventType===`step_started`&&k.eventData){let{input:e,...t}=k.eventData;k={...k,eventData:t}}let A,M,N,P,fe=!1,pe;if(le(i.eventType)&&w){await J(_n(e,x,t),``),await xn(e,x,t);let n=await Sn(e,x,t);o=n.eventId,k={...k,eventId:o,createdAt:n.createdAt}}if(i.eventType===`run_created`&&`eventData`in i){let n=i.eventData;if(se(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),A={runId:x,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:C,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},encryptionPublicKey:n.encryptionPublicKey,createdAt:b,updatedAt:b},!await J(H(e,`runs`,x,t),JSON.stringify(A,W,2)))throw new p(`Workflow run "${x}" already exists`)}else if(i.eventType===`run_started`){if(w){if(w.status===`running`)return{run:w,maxEvents:dr()};A=await Sr(e,x,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:w.startedAt??b,updatedAt:b,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey})}}else if(i.eventType===`run_completed`&&`eventData`in i){let n=i.eventData;w&&(A=await Sr(e,x,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:b,updatedAt:b,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([ar(e,x),xr(e,x)]))}else if(i.eventType===`run_failed`&&`eventData`in i){let n=i.eventData;w&&(A=await Sr(e,x,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:b,updatedAt:b,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([ar(e,x),xr(e,x)]))}else if(i.eventType===`run_cancelled`)w&&(A=await Sr(e,x,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:b,updatedAt:b,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([ar(e,x),xr(e,x)]));else if(i.eventType===`attr_set`&&w)A=await lr(x,async()=>{let n=await K(H(e,`runs`,x,t),D);if(!n)throw new c(x);if(se(i.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:i.eventData.allowReservedAttributes===!0}),i.correlationId&&i.eventData.writer.type===`workflow`&&!await J(B(e,`.locks`,`attributes`,t?`${x}-${i.correlationId}.created.${t}`:`${x}-${i.correlationId}.created`),``))throw new p(`Attribute event "${i.correlationId}" already exists`);let r={...n,attributes:y(n.attributes,i.eventData.changes),updatedAt:b};return await G(H(e,`runs`,x,t),r,{overwrite:!0}),r});else if(i.eventType===`step_created`&&`eventData`in i){if(!await J(B(e,`.locks`,`steps`,t?`${x}-${i.correlationId}.created.${t}`:`${x}-${i.correlationId}.created`),``))throw new p(`Step "${i.correlationId}" already created`);let n=i.eventData;M={runId:x,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:b,updatedAt:b,specVersion:C},await G(H(e,`steps`,`${x}-${i.correlationId}`,t),M)}else if(i.eventType===`step_started`){if(!O&&E){let n=i.eventData;if(await J(B(e,`.locks`,`steps`,t?`${x}-${i.correlationId}.created.${t}`:`${x}-${i.correlationId}.created`),``)){let r={runId:x,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:b,updatedAt:b,specVersion:C};await G(H(e,`steps`,`${x}-${i.correlationId}`,t),r);let a=`evnt_${En()}`,o={eventType:`step_created`,runId:x,eventId:a,createdAt:b,specVersion:C,correlationId:i.correlationId,eventData:{stepName:n.stepName,input:n.input}};await G(H(e,`events`,`${x}-${a}`,t),o),O=r,fe=!0}else throw new p(`Step "${i.correlationId}" already created`)}if(O){if(O.retryAfter&&O.retryAfter.getTime()>Date.now())throw new l(`Cannot start step "${i.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((O.retryAfter.getTime()-Date.now())/1e3)});let n=`${x}-${i.correlationId}`,r=await U(e,`steps`,n,_,t);if(r&&g(r.status))throw new p(`Cannot modify step in terminal state "${r.status}"`);M={...O,status:`running`,startedAt:O.startedAt??b,attempt:O.attempt+1,retryAfter:void 0,updatedAt:b},await G(H(e,`steps`,n,t),M,{overwrite:!0})}}else if(i.eventType===`step_completed`&&`eventData`in i){let n=i.eventData;if(O){let r=`${x}-${i.correlationId}`;if(!await J(B(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new p(`Cannot modify step in terminal state`);M={...O,status:`completed`,output:n.result,completedAt:b,updatedAt:b},await G(H(e,`steps`,r,t),M,{overwrite:!0})}}else if(i.eventType===`step_failed`&&`eventData`in i){let n=i.eventData;if(O){let r=`${x}-${i.correlationId}`;if(!await J(B(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new p(`Cannot modify step in terminal state`);M={...O,status:`failed`,error:n.error,completedAt:b,updatedAt:b},await G(H(e,`steps`,r,t),M,{overwrite:!0})}}else if(i.eventType===`step_retrying`&&`eventData`in i){let n=i.eventData;if(O){let r=`${x}-${i.correlationId}`;M={...O,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:b},await G(H(e,`steps`,r,t),M,{overwrite:!0})}}else if(i.eventType===`hook_created`&&`eventData`in i){let n=i.eventData,r=Cn(e,n.token),s=JSON.stringify({token:n.token,hookId:i.correlationId,runId:x,eventId:o}),c=!1,l=null,u=0,d=0;for(let a=0;a<10&&(await mr(r)||await nr(e,n.token,t),c=await J(r,s),!c);a++){if(l=await mr(r),!l){d++,d>=3&&await q(r);continue}if(l.runId===x&&l.hookId===i.correlationId||!await hr(e,l,t))break;u++,u<3?await new Promise(e=>setTimeout(e,10)):(await q(r),l.hookId&&(await q(H(e,`hooks`,l.hookId,t)),await q(Tn(e,n.token,l.runId,l.hookId)))),l=null}let f=!1;if(!c)if(l?.runId===x&&l.hookId===i.correlationId){let r;if(l.eventId)r=l.eventId;else{let a=await _r(e,x,i.correlationId);if(a!==null)throw await vr(e,x,i.correlationId,a,t),new p(`Hook "${i.correlationId}" already created`);let s=await yr(e,n.token,x,i.correlationId,o);if(s===null)throw new p(`Hook "${i.correlationId}" already created`);r=s}o=r;let a=oe(o.replace(/^evnt_/,``))??b;k={...i,runId:x,eventId:o,createdAt:a,specVersion:C},f=!0}else{let e={eventType:`hook_conflict`,correlationId:i.correlationId,eventData:{token:n.token,...l?{conflictingRunId:l.runId}:{}},runId:x,eventId:o,createdAt:b,specVersion:C};return await ae(e),{event:S(e,a?.resolveData??`all`),run:A,step:M,hook:void 0}}N={runId:x,hookId:i.correlationId,token:n.token,metadata:n.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:k.createdAt,specVersion:C,isWebhook:n.isWebhook??!1,isSystem:n.isSystem??!1},pe=f?{overwrite:!0}:void 0,await Fn(e,n.token,x,i.correlationId,o,t)}else if(i.eventType===`hook_disposed`){if(!await J(hn(e,i.correlationId,t),``))throw new p(`Hook "${i.correlationId}" already disposed`);let n=H(e,`hooks`,i.correlationId,t),r=await U(e,`hooks`,i.correlationId,j,t);r&&(await wn(e,r.token,r.runId,r.hookId),await q(Tn(e,r.token,r.runId,r.hookId))),await q(n),await Rn(e,x,i.correlationId,t)}else if(i.eventType===`wait_created`&&`eventData`in i){let n=`${x}-${i.correlationId}`;if(!await J(B(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new p(`Wait "${i.correlationId}" already exists`);let r=i.eventData;P={waitId:n,runId:x,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:b,updatedAt:b,specVersion:C},await G(H(e,`waits`,n,t),P)}else if(i.eventType===`wait_completed`){let n=`${x}-${i.correlationId}`,r=B(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await J(r,``))throw new p(`Wait "${i.correlationId}" already completed`);let a=await U(e,`waits`,n,ne,t);if(!a)throw await I.unlink(r).catch(()=>{}),new s(`Wait "${i.correlationId}" not found`);P={...a,status:`completed`,completedAt:b,updatedAt:b},await G(H(e,`waits`,n,t),P,{overwrite:!0})}if(i.eventType===`hook_received`&&i.correlationId&&await gn(e,i.correlationId,t))throw new f(i.correlationId);let me=H(e,`events`,`${x}-${o}`,t),F=JSON.stringify(k,W,2),he;if(i.eventType===`hook_received`){let n=await vn(e,x,t),r=n?null:await U(e,`runs`,x,D,t);if(n||r&&m(r.status))throw new u(`Workflow run "${x}" is already in a terminal state`);let i=bn(e,x,o,t);if(!await J(i,F))throw new p(`Event "${o}" already exists for run "${x}"`);try{if(await vn(e,x,t))throw new u(`Workflow run "${x}" is already in a terminal state`);let n=await vt(i,me);if(n===`missing`)throw new u(`Workflow run "${x}" is already in a terminal state`);he=n===`linked`}finally{await q(i).catch(()=>{})}}else he=await J(me,F);if(!he)throw i.eventType===`hook_created`&&i.correlationId&&await vr(e,x,i.correlationId,o,t),new p(`Event "${o}" already exists for run "${x}"`);ie(k,me,F),N&&i.eventType===`hook_created`&&(await Ln(e,N.runId,N.hookId,t),await G(H(e,`hooks`,N.hookId,t),N,pe));let ge=a?.resolveData??`all`,_e=S(k,ge),L,ve,ye;if(i.eventType===`run_started`&&A){let t=await X({directory:R.join(e,`events`),schema:T,cachedItems:r,filePrefix:`${x}-`,sortOrder:`asc`,limit:1e3,getCreatedAt:$(`evnt`),getId:e=>e.eventId});L=t.data,ve=t.cursor,ye=t.hasMore}if(h(i.eventType)&&typeof a?.sinceCursor==`string`){let t=await X({directory:R.join(e,`events`),schema:T,filePrefix:`${x}-`,sortOrder:`asc`,cursor:a.sinceCursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});L=ge===`none`?t.data.map(e=>S(e,ge)):t.data,ve=t.cursor,ye=t.hasMore}return{event:_e,run:A,step:M,hook:N,wait:P,events:L,cursor:ve,hasMore:ye,...fe?{stepCreated:!0}:{},...A?{maxEvents:dr()}:{}}}},async get(n,r,i){z(`runId`,n),z(`eventId`,r);let a=await U(e,`events`,`${n}-${r}`,T,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return S(a,i?.resolveData??`all`)},async list(t){let{runId:n}=t;z(`runId`,n);let i=t.resolveData??`all`,a=await X({directory:R.join(e,`events`),schema:T,cachedItems:r,filePrefix:`${n}-`,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>S(e,i))}:a},async listByCorrelationId(t){let n=t.correlationId;z(`correlationId`,n);let i=t.resolveData??`all`,a=await X({directory:R.join(e,`events`),schema:T,cachedItems:r,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>S(e,i))}:a}}}function wr(e,t){return{get:(async(n,r,i)=>{z(`runId`,n),z(`stepId`,r);let a=await U(e,`steps`,`${n}-${r}`,_,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return Jn(a,i?.resolveData??`all`)}),list:(async t=>{z(`runId`,t.runId);let n=t.resolveData??`all`,r=await X({directory:R.join(e,`steps`),schema:_,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function Tr(e,t){let n=ur(e,t),r=wr(e,t),i=Cr(e,t),a=ir(e,t);return{runs:rn(`world.runs`,n),steps:rn(`world.steps`,r),events:rn(`world.events`,i),hooks:rn(`world.hooks`,a),clearCache:()=>i.clearCache()}}const Er=A(()=>Math.random()),Dr=N({streams:ie(E())});function Or(e){return e===1}function kr(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function Ar(e){return Or(e[0])}function jr(e){return{eof:Ar(e),chunk:Buffer.from(e.subarray(1))}}async function Mr(e){try{return await I.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function Nr(e,t,n,r=n,i=()=>!0){for(let a of t){if(!a.endsWith(n))continue;let t=a.slice(0,-n.length);i(t)&&e.set(t,r)}}function Pr(e,t){return z(`streamName`,t),R.join(e,t)}async function Fr(e,t,n){let r=Pr(e,t),i=await Mr(r),a=new Map;return Nr(a,i,`.json`),Nr(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&Nr(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function Ir(e,t){let n=t?`.${t}`:``,r=new Ee,i=new Set;async function a(n,r){z(`runId`,n),z(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=H(e,`streams/runs`,n,t),s=(await U(e,`streams/runs`,n,Dr,t))?.streams??[];s.includes(r)||(s.push(r),await G(o,{streams:s},{overwrite:!0})),i.add(a)}function o(e){return typeof e==`string`?Buffer.from(new TextEncoder().encode(e)):e instanceof Buffer?e:Buffer.from(e)}return{streams:{async write(t,i,s){let c=`chnk_${Er()}`;await a(await t,i);let l=o(s),u=kr({chunk:l,eof:!1});await ht(R.join(Pr(R.join(e,`streams`,`chunks`),i),`${c}${n}.bin`),u);let d=Uint8Array.from(l);r.emit(`chunk:${i}`,{streamName:i,chunkData:d,chunkId:c})},async writeMulti(t,i,s){if(s.length===0)return;let c=s.map(()=>`chnk_${Er()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=kr({chunk:t,eof:!1});return await ht(R.join(Pr(R.join(e,`streams`,`chunks`),i),`${a}${n}.bin`),o),{chunkId:a,chunkData:Uint8Array.from(t)}});for(let e of l){let{chunkId:t,chunkData:n}=await e;r.emit(`chunk:${i}`,{streamName:i,chunkData:n,chunkId:t})}},async close(t,i){let o=`chnk_${Er()}`;await a(await t,i),await ht(R.join(Pr(R.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),kr({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return z(`runId`,n),(await U(e,`streams/runs`,n,Dr,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await Fr(R.join(e,`streams`,`chunks`),r,t),l=0;if(i?.cursor)try{l=JSON.parse(Buffer.from(i.cursor,`base64`).toString(`utf-8`)).i}catch{l=0}let u=!1,d=[],f=0;for(let e of o){let t=s.get(e)??`.bin`,n=R.join(c,`${e}${t}`);if(f<l){if(Or(await _t(n))){u=!0;break}f++;continue}if(d.length>=a){Or(await _t(n))?u=!0:f++;break}let r=jr(await gt(n));if(r.eof){u=!0;break}d.push({index:f,data:Uint8Array.from(r.chunk)}),f++}let p=!u&&f>l+d.length,m=l+d.length;return{data:d,cursor:p?Buffer.from(JSON.stringify({i:m})).toString(`base64`):null,hasMore:p,done:u}},async getInfo(n,r){let{files:i,extMap:a,dir:o}=await Fr(R.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(Or(await _t(R.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=R.join(e,`streams`,`chunks`),s=()=>{},c=null,l=!1;return new ReadableStream({async start(e){let n=new Set,u=[],d=!0,f=!1,p=t=>{if(t.chunkData.byteLength===0){n.add(t.chunkId);return}d?(n.add(t.chunkId),u.push({chunkId:t.chunkId,chunkData:Uint8Array.from(t.chunkData)})):n.has(t.chunkId)||(n.add(t.chunkId),e.enqueue(Uint8Array.from(t.chunkData)))},m=()=>{if(d){f=!0;return}l=!0,s();try{e.close()}catch{}};s=()=>{r.off(`chunk:${i}`,p),r.off(`close:${i}`,m),c&&=(clearInterval(c),null)},r.on(`chunk:${i}`,p),r.on(`close:${i}`,m);let{files:h,extMap:g,dir:_}=await Fr(o,i,t),v=h.length;if(typeof a==`number`&&a<0&&h.length>0){let e=h[h.length-1],t=g.get(e)??`.bin`;Or(await _t(R.join(_,`${e}${t}`)))&&v--}let ee=typeof a==`number`&&a<0?Math.max(0,v+a):a,y=!1;for(let t=ee;t<h.length;t++){let r=h[t],i=r;if(n.has(i))continue;let a=g.get(r)??`.bin`,o=jr(await gt(R.join(_,`${r}${a}`)));if(o?.eof===!0){y=!0;break}n.add(i),o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}d=!1,u.sort((e,t)=>e.chunkId.localeCompare(t.chunkId));for(let t of u)e.enqueue(Uint8Array.from(t.chunkData));if(y){l=!0,s();try{e.close()}catch{}return}if(f){l=!0,s();try{e.close()}catch{}return}for(let e=0;e<ee&&e<h.length;e++)n.add(h[e]);if(l){s();return}let b=!1;c=setInterval(async()=>{if(!b){b=!0;try{let{files:r,extMap:a}=await Fr(o,i,t);for(let t of r){let r=t;if(n.has(r))continue;n.add(r);let i=a.get(t)??`.bin`,o=jr(await gt(R.join(_,`${t}${i}`)));if(o?.eof===!0){l=!0,s();try{e.close()}catch{}return}if(l)return;o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}}catch(e){e instanceof Error&&`code`in e||console.error(`[world-local] Unexpected polling error:`,e)}finally{b=!1}}},100)},cancel(){l=!0,s()}})}}}}function Lr(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Je.value,...t};Me(n.dataDir);let r=n.tag,i=pn(n),{clearCache:a,...o}=Tr(n.dataDir,r),s=Ye(n);return{specVersion:5,...i,...o,...rn(`world.streams`,{...Ir(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Ft(n.dataDir),!s)return;let e=r?e=>st(e,r):ct;await O({...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))},i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=R.join(e,`hooks`),i=await lt(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-WjtNsOyf.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await K(R.join(t,n),a);r?.token&&(await q(R.join(t,`tokens`,`${mn(r.token)}.json`)),await q(Tn(e,r.token,r.runId,r.hookId)))})),await Promise.all([`runs`,`steps`,`events`,`hooks`,`hooks/by-run`,`waits`,`streams/runs`].map(async t=>{let n=R.join(e,t),i=await lt(n,r);await Promise.all(i.map(e=>q(R.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=R.join(e,`hooks`,t),i;try{i=await F.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=R.join(n,e.name),i=await lt(t,r);await Promise.all(i.map(e=>q(R.join(t,e))))}))}await F.rm(R.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=R.join(e,`streams`,`chunks`),s;try{s=await F.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=R.join(o,e.name),n=await ut(t,r,`.bin`);await Promise.all(n.map(e=>F.unlink(R.join(t,e)).catch(()=>{})))})),it()}else it(),Hn(),await be(n.dataDir,{recursive:!0,force:!0}),await Ft(n.dataDir)}}}export{Tt as DataDirAccessError,Et as DataDirVersionError,Oe as UnwritableDataDirError,Lr as createWorld,jt as ensureDataDir,Ft as initDataDir,Dt as parseVersion};
|
|
4
|
+
`);for(let e of r)if(e.includes(`LISTEN`)){let t=e.trim().split(/\s+/)[8];if(t){let e=t.lastIndexOf(`:`);if(e!==-1){let r=Ie(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Be(e){try{let{stdout:t}=await Fe(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Pe(t,e)}catch{return[]}}async function Ve(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Re(e);case`darwin`:return await ze(e);case`win32`:return await Be(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const He=`${o}/flow?__health`;async function Ue(e,t={}){let{endpoint:n=He,timeout:r=500}=t,i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return(await fetch(`http://localhost:${e}${n}`,{method:`HEAD`,signal:i.signal})).status===200}catch{return!1}finally{clearTimeout(a)}}async function We(e){let t=await Ve();if(t.length===0)return;if(t.length===1)return t[0];let n=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await Ue(t,e)})))).find(e=>e.isWorkflow);return n?n.port:(process.env.NODE_ENV===`development`&&console.debug(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function Ge(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Ke=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,qe=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Je=Ge(()=>({dataDir:Ke(),baseUrl:qe()}));function Ye(e){if(e.recoverActiveRuns!==void 0)return e.recoverActiveRuns;let t=process.env.WORKFLOW_LOCAL_RECOVER_ACTIVE_RUNS?.toLowerCase();return!(t===`0`||t===`false`)}function Xe(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??i(`http://localhost`)}async function Ze(e){if(e.baseUrl)return e.baseUrl;if(process.env.WORKFLOW_LOCAL_BASE_URL)return process.env.WORKFLOW_LOCAL_BASE_URL;if(typeof e.port==`number`)return i(`http://localhost:${e.port}`);if(process.env.PORT)return i(`http://localhost:${process.env.PORT}`);let t=await We({endpoint:a()});if(t)return i(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const Qe=A(()=>Math.random());function $e(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var et=class extends s{constructor(e,t){super(`Unsafe ${e} "${$e(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function R(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new et(e,t)}function z(e,...t){let n=L.resolve(e),r=L.resolve(e,...t);if(r!==n&&!r.startsWith(n+L.sep))throw new et(`path`,t.join(`/`));return r}const tt=process.platform===`win32`;async function B(e,t=5){if(!tt)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}const nt=new Set,rt=new Set;function it(){nt.clear(),rt.clear()}const at=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function V(e){return e.replace(at,``)}function ot(e,t){return e.endsWith(`.${t}`)}function st(e){return!at.test(e)}function H(e,t,n,r){return R(`fileId`,n),r!==void 0&&R(`tag`,r),z(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function U(e,t,n,r,i){if(R(`fileId`,n),i!==void 0&&R(`tag`,i),i){let a=await K(z(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return K(z(e,t,`${n}.json`),r)}async function ct(e,t){let n=`.${t}.json`;try{return(await F.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function lt(e,t,n){let r=`.${t}${n}`;try{return(await F.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function ut(e){let t=L.resolve(e);if(!rt.has(t))try{await F.mkdir(t,{recursive:!0}),rt.add(t)}catch(e){let n=e.code;if(Ae(n)&&!await dt(t))throw new Oe(t,n)}}async function dt(e){try{return(await F.stat(e)).isDirectory()}catch{return!1}}async function ft(e,t){await ut(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return rt.delete(L.resolve(e)),await ut(e),t()}}function W(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function pt(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function G(e,t,n){return mt(e,JSON.stringify(t,W,2),n)}async function mt(e,t,n){if(!n?.overwrite){if(nt.has(e))throw new p(`File ${e} already exists and 'overwrite' is false`);try{throw await F.access(e),nt.add(e),new p(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${Qe()}`,i=!1;try{await ft(L.dirname(e),async()=>{await F.writeFile(r,t),i=!0,await B(()=>F.rename(r,e))}),nt.add(e)}catch(e){throw i&&await B(()=>F.unlink(r),3).catch(()=>{}),e}}async function K(e,t){try{let n=await F.readFile(e,`utf-8`);return t.parse(JSON.parse(n,pt))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function ht(e){return await F.readFile(e)}async function gt(e){let t=await F.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function q(e){try{await F.unlink(e)}catch(e){if(e.code!==`ENOENT`)throw e}}async function J(e,t){let n=`${e}.tmp.${Qe()}`,r=!1;try{return await ft(L.dirname(e),async()=>{await F.writeFile(n,t,{flag:`wx`}),r=!0;try{return await B(()=>F.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await B(()=>F.unlink(n),3).catch(()=>{})}}async function _t(e,t){try{return await ft(L.dirname(t),()=>B(()=>F.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function Y(e){return vt(e,`.json`)}async function vt(e,t){try{return(await F.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}function yt(e){if(!e)return null;let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null}}function bt(e,t){return t?`${e.toISOString()}|${t}`:e.toISOString()}async function X(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d}=e;i!==void 0&&R(`filePrefix`,i);let f=L.resolve(t),p=await Y(f),m=i?p.filter(e=>e.startsWith(i)):p,h=a?m.filter(a):m,g=yt(l),_=h;g&&(_=h.filter(e=>{let t=u(`${e}.json`);if(t){let e=g.timestamp.getTime(),n=t.getTime();return g.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let v=[];for(let e=0;e<_.length;e+=32){let t=_.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=L.join(f,`${e}.json`);try{let e=r?.get(t);return e===void 0?await K(t,n):structuredClone(e)}catch(t){if(t instanceof M)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}}));for(let e of i)if(e&&!(o&&!o(e))){if(g){let t=e.createdAt.getTime(),n=g.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&g.id&&d&&d(e)>=g.id)continue}else if(t<n||t===n&&g.id&&d&&d(e)<=g.id)continue}v.push(e)}}v.sort((e,t)=>{let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let ee=v.length>c,y=ee?v.slice(0,c):v;return{data:y,cursor:y.length>0?bt(y[y.length-1].createdAt,d?.(y[y.length-1])):null,hasMore:ee}}let Z=null;function xt(){return typeof import.meta.url==`string`&&import.meta.url?L.dirname(me(import.meta.url)):null}async function St(){if(Z)return Z;let e=xt();if(e)try{let t=await ve(L.join(e,`../package.json`),`utf-8`);return Z=JSON.parse(t),Z}catch{}return Z={name:`@workflow/world-local`,version:`5.0.0-beta.32`},Z}const Ct=`version.txt`;var wt=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},Tt=class extends Error{oldVersion;newVersion;suggestedVersion;constructor(e,t,n,r){super(e),this.name=`DataDirVersionError`,this.oldVersion=t,this.newVersion=n,this.suggestedVersion=r}};function Et(e){let t=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);if(!t)throw Error(`Invalid version string: "${e}"`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4],raw:e}}function Q(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function Dt(e){let t=e.trim(),n=t.lastIndexOf(`@`);if(n<=0)throw Error(`Invalid version file content: "${e}"`);return{packageName:t.substring(0,n),version:Et(t.substring(n+1))}}function Ot(e,t){return`${e}@${Q(t)}`}function kt(e,t){console.log(`[world-local] Upgrading from version ${Q(e)} to ${Q(t)}`)}async function At(e){let t=L.resolve(e);try{await _e(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new wt(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await he(t,ge.R_OK)}catch(e){let n=e;throw new wt(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=L.join(t,`.workflow-write-test-${Date.now()}`);try{await Ce(n,``),await Se(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new wt(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function jt(e){let t=L.join(L.resolve(e),Ct);try{return Dt(await ve(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Mt(e,t){await Ce(L.join(L.resolve(e),Ct),Ot((await St()).name,t))}function Nt(e,t){return t||Q(e)}async function Pt(e){await At(e);let t=await St(),n=Et(t.version),r=await jt(e);if(r===null){await Mt(e,n);return}let{version:i}=r;if(Q(i)!==Q(n))try{kt(i,n),await Mt(e,n)}catch(e){let r=Nt(i,e instanceof Tt?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Q(i)} to ${Q(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let Ft=null;async function It(){return Ft||=import(`../../_chunks/workflow/src-Cj3P1ChQ.js`).then(e=>t(e.t(),1)).catch(()=>null),Ft}let Lt=null;async function Rt(){return Lt||=It().then(e=>e?e.trace.getTracer(`workflow`):null),Lt}async function zt(e,...t){let[n,r]=await Promise.all([Rt(),It()]),{fn:i,opts:a}=typeof t[0]==`function`?{fn:t[0],opts:{}}:{fn:t[1],opts:t[0]};if(!i)throw Error(`Function to trace must be provided`);return!n||!r?await i():n.startActiveSpan(e,a,async e=>{try{let t=await i(e);return e.setStatus({code:r.SpanStatusCode.OK}),t}catch(t){throw e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),t}finally{e.end()}})}async function Bt(e){let t=await It();if(t)return t.SpanKind[e]}function Vt(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Ht=Vt(`peer.service`),Ut=Vt(`rpc.system`),Wt=Vt(`rpc.service`),Gt=Vt(`rpc.method`),Kt=Vt(`workflow.run.id`),qt=Vt(`step.id`),Jt={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},Yt={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},Xt=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function Zt(e){if(e.length>=2&&typeof e[1]==`object`&&e[1]!==null){let t=e[1];if(typeof t.eventType==`string`)return t.eventType}}function Qt(e,t){return typeof e[t]==`string`?e[t]:void 0}function $t(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function en(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.runId==`string`)return t.runId;for(let e of[`run`,`step`,`hook`,`wait`]){let n=t[e];if(typeof n==`object`&&n){let e=n.runId;if(typeof e==`string`)return e}}}function tn(e,t,n){let r=`${e}.${t}`,i={},a=Yt[r],o=a===void 0?Xt.has(r)?$t(n[0]):void 0:Qt(n,a);if(o&&Object.assign(i,Kt(o)),r===`world.steps.get`){let e=Qt(n,1);e&&Object.assign(i,qt(e))}return i}function nn(e,t){let n={};for(let r of Object.keys(t))if(typeof t[r]!=`function`)n[r]=t[r];else{let i=t[r],a=String(r);n[r]=async(...t)=>{let n=`${e}.${a}`;if(e===`world.events`&&a===`create`){let r=Zt(t);r&&(n=`${e}.${a} ${r}`)}return zt(n,{kind:await Bt(`INTERNAL`)},async r=>{r?.setAttributes({...Ht(Jt.peerService),...Ut(Jt.rpcSystem),...Wt(Jt.rpcService),...Gt(n),...tn(e,a,t)});let o=await i(...t),s=en(o);return s&&r?.setAttributes(Kt(s)),o})}}return n}var rn=n((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimit=t.Sema=void 0;let r=n(e(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};t.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}t.RateLimit=f}))(),an=P(),on=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,W))}async deserialize(e){let t=[],n=e.getReader();for(;;){let{done:e,value:r}=await n.read();if(e)break;r&&t.push(r)}let r=Buffer.concat(t).toString();return JSON.parse(r,pt)}};const sn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,cn=2147483647,ln=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3,un=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function dn(e){let t=e,n=new Set;for(;t&&typeof t==`object`&&!n.has(t);){if(n.add(t),`message`in t&&typeof t.message==`string`&&t.message.includes(un))return!0;t=`cause`in t?t.cause:void 0}return!1}function fn(e){let t=new an.Agent({headersTimeout:0,connections:1e3,keepAliveTimeout:3e4}),n=new on,i=A(),a=new rn.Sema(ln),o=new AbortController,s=o.signal,c=new Map,l=new Map,u=async(o,u,d)=>{let f=[];if(d?.idempotencyKey){let e=c.get(d.idempotencyKey);if(e)return{messageId:e}}let p=n.serialize(u),{prefix:m}=w(o),h=ae.parse(`msg_${i()}`),g=u,_=g.runId??void 0,v=g.stepId??void 0;if(d?.idempotencyKey){let e=d.idempotencyKey;c.set(e,h),f.push(()=>{c.delete(e)})}return(async()=>{d?.delaySeconds&&d.delaySeconds>0&&await Ee(Math.min(d.delaySeconds*1e3,cn),void 0,{signal:s}),a.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${ln}) reached, waiting for queue to free up`),await a.acquire());let n=0;try{for(let i=0;i<256;i++){let a={...d?.headers,"content-type":`application/json`,"x-vqs-queue-name":o,"x-vqs-message-id":h,"x-vqs-message-attempt":String(n+1)},c=l.get(m),u;try{if(c)u=await c(new Request(r(Xe(e),{type:`flow`}),{method:`POST`,headers:a,body:p}));else{let n=await Ze(e);u=await fetch(r(n,{type:`flow`}),{method:`POST`,duplex:`half`,dispatcher:t,headers:a,body:p})}}catch(e){let t=e?.name;if(s.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(dn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${i+1}), retrying`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v},error:String(e)}),await Ee(5e3,void 0,{signal:s});continue}n++;let f=await u.text();if(u.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await Ee(Math.min(e*1e3,cn),void 0,{signal:s});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${n}, HTTP ${u.status})`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v},handlerError:f}),await Ee(5e3,void 0,{signal:s})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v}})}finally{a.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(dn(e)?console.error(`[local world] Queue operation failed: detected "${un}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of f)e()}),{messageId:h}},d=N({"x-vqs-queue-name":k,"x-vqs-message-id":ae,"x-vqs-message-attempt":C()});return{queue:u,createQueueHandler:(e,t)=>async n=>{let r=d.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new on().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a}),n=null;return typeof e?.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,sn)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await St()).version}`,registerHandler(e,t){l.set(e,t)},async close(){s.aborted||(o.abort(),await t.close())}}}function pn(e){return fe(`sha256`).update(e).digest(`hex`)}function mn(e,t,n){return z(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function hn(e,t,n){let r=[mn(e,t)];n&&r.push(mn(e,t,n));for(let e of r)try{return await I.access(e),!0}catch{}return!1}function gn(e,t,n){return z(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function _n(e,t,n){let r=[gn(e,t)];n&&r.push(gn(e,t,n));for(let e of r)try{return await I.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function vn(e,t,n){return z(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function yn(e,t,n,r){return L.join(vn(e,t,r),`${n}.json`)}async function bn(e,t,n){let r=[vn(e,t)];n&&r.push(vn(e,t,n));for(let e of r){let t;try{t=await I.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await B(()=>I.unlink(L.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await I.rmdir(e).catch(()=>{})}}async function xn(e,t,n){let r=[];try{r=await I.readdir(L.join(e,`events`))}catch(e){if(e.code!==`ENOENT`)throw e}let i=`${t}-`,a=null;for(let e of r){if(!e.startsWith(i)||!e.endsWith(`.json`))continue;let t=e.slice(0,-5);if(!st(t)&&!(n&&ot(t,n)))continue;let r=V(t).slice(i.length);(!a||r>a)&&(a=r)}let o=Date.now();if(a)try{let e=re(a.replace(/^evnt_/,``));o<=e&&(o=e+1)}catch{}return{eventId:`evnt_${Tn(o)}`,createdAt:new Date(o)}}function Sn(e,t){return L.join(e,`hooks`,`tokens`,`${pn(t)}.json`)}async function Cn(e,t,n,r){let i=Sn(e,t),a;try{a=JSON.parse(await I.readFile(i,`utf8`))}catch{return}a.runId!==n||a.hookId!==r||await I.unlink(i).catch(()=>{})}function wn(e,t,n,r){let i=fe(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return L.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const Tn=A(()=>Math.random()),$=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=V(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?oe(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:oe(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},En=N({runId:E()}),Dn=N({hookId:E(),tag:E().optional()});function On(e,t){return z(e,`hooks`,`token-index`,pn(t))}function kn(e,t){return R(`hookId`,t),z(e,`hooks`,`id-index`,t)}function An(e){return z(e,`hooks`,`by-run`)}function jn(e){let t=V(e);return t===e?void 0:e.slice(t.length+1)}function Mn(e,t){return t?st(e)||ot(e,t):st(e)}async function Nn(e){try{return await K(e,T)}catch(e){if(e instanceof SyntaxError||e instanceof M)return null;throw e}}async function Pn(e,t,n,r,i,a){R(`runId`,n),R(`eventId`,i),a!==void 0&&R(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([J(L.join(On(e,t),o),s),J(L.join(kn(e,r),o),s)])}function Fn(e,t,n,r){return H(e,`hooks/by-run`,`${t}-${n}`,r)}async function In(e,t,n,r){await J(Fn(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function Ln(e,t,n,r){await q(Fn(e,t,n,r)),r&&await q(Fn(e,t,n))}async function Rn(e,t){R(`runId`,t);let n=An(e),r=`${t}-`,i=[];for(let e of await Y(n)){if(!e.startsWith(r))continue;let t=null;try{t=await K(L.join(n,`${e}.json`),Dn)}catch(e){if(!(e instanceof SyntaxError||e instanceof M))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function zn(e,t){await q(L.join(An(e),`${t}.json`))}const Bn=new Map;function Vn(){Bn.clear()}async function Hn(e){let t=L.resolve(e),n=Bn.get(t);return n||(n=Wn(t).catch(e=>{throw Bn.delete(t),e}),Bn.set(t,n)),n}async function Un(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function Wn(e){let t=L.join(e,`hooks`,`.hook-index-complete`);try{await I.access(t);return}catch{}let n=L.join(e,`events`);await Un(await Y(n),32,async t=>{let r=await Nn(L.join(n,`${t}.json`));if(!r||r.eventType!==`hook_created`||typeof r.correlationId!=`string`)return;let i=r.eventData?.token;if(typeof i==`string`)try{await Pn(e,i,r.runId,r.correlationId,r.eventId,jn(t))}catch{}});let r=L.join(e,`hooks`);await Un(await Y(r),32,async t=>{let n=null;try{n=await K(L.join(r,`${t}.json`),j)}catch(e){if(!(e instanceof SyntaxError||e instanceof M))throw e}if(n)try{await In(e,n.runId,n.hookId,jn(t))}catch{}}),await J(t,``)}async function Gn(e,t,n,r){await Hn(e);let i;try{i=t.kind===`token`?On(e,t.token):kn(e,t.hookId)}catch{return null}let a=(await Y(i)).filter(e=>Mn(e,r)).sort((e,t)=>V(t).localeCompare(V(e)));for(let t of a){let r=null;try{r=await K(L.join(i,`${t}.json`),En)}catch(e){if(!(e instanceof SyntaxError||e instanceof M))throw e}if(!r)continue;let a=V(t),o;try{o=H(e,`events`,`${r.runId}-${a}`,jn(t))}catch{continue}let s=await Nn(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function Kn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function qn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Jn(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function Yn(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function Xn(e){let{token:t,metadata:n,isWebhook:r,isSystem:i}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1}}function Zn(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function Qn(e,t,n){let r=await U(e,`runs`,t,D,n);return r?m(r.status):!1}async function $n(e,t,n,r){let i=await Gn(e,t,e=>Zn(e,n),r);return!i||!Zn(i,n)||await Qn(e,i.runId,r)||await hn(e,i.correlationId,r)?null:i}async function er(e,t,n){let r=Xn(t);return await J(L.join(e,`hooks`,`tokens`,`${pn(r.token)}.json`),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId})),await In(e,r.runId,r.hookId,n),await J(H(e,`hooks`,r.hookId,n),JSON.stringify(r,W,2)),r}async function tr(e,t,n){let r=await $n(e,{kind:`token`,token:t},e=>Yn(e)===t,n);return r?er(e,r,n):null}async function nr(e,t,n){let r=await $n(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?er(e,r,n):null}function rr(e,t){let n=N({hookId:E().optional()});async function r(r){let i=null;try{i=await K(Sn(e,r),n)}catch(e){if(!(e instanceof SyntaxError||e instanceof M))throw e}if(i?.hookId)try{let n=await U(e,`hooks`,i.hookId,j,t);if(n&&n.token===r)return{...n,isWebhook:n.isWebhook??!0}}catch(e){if(!et.is(e))throw e}let a=L.join(e,`hooks`),o=await Y(a);for(let e of o){let t=await K(L.join(a,`${e}.json`),j);if(t&&t.token===r)return{...t,isWebhook:t.isWebhook??!0}}return null}async function i(n,r){R(`hookId`,n);let i=await U(e,`hooks`,n,j,t);if(!i){let i=await nr(e,n,t);if(!i)throw new f(n);let a=r?.resolveData||`all`;return Jn({...i,isWebhook:i.isWebhook??!0},a)}let a=r?.resolveData||`all`;return Jn({...i,isWebhook:i.isWebhook??!0},a)}async function a(n){let i=await r(n)??await tr(e,n,t);if(!i)throw new f(n);return i}async function o(t){let n=L.join(e,`hooks`),r=t.resolveData||`all`,i=await X({directory:n,schema:j,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:e=>!(t.runId&&e.runId!==t.runId),getCreatedAt:()=>null,getId:e=>e.hookId});return{...i,data:i.data.map(e=>Jn(e,r))}}return{get:i,getByToken:a,list:o}}async function ir(e,t){await Hn(e);for(let n of await Rn(e,t)){if(n.hookId){let r=null,i=null;try{i=H(e,`hooks`,n.hookId,n.tag),r=await K(i,j)}catch(e){if(!et.is(e)&&!(e instanceof SyntaxError||e instanceof M))throw e}r&&i&&r.runId===t&&(await Cn(e,r.token,r.runId,r.hookId),await q(wn(e,r.token,r.runId,r.hookId)),await q(i))}await zn(e,n.fileId)}}async function ar(e,t,n,r,i,a){if(m(a.status)||await _n(e,t))throw new u(`Workflow run "${t}" is already in a terminal state`);let o=yn(e,t,n);await J(o,r);try{if(await _n(e,t)||await _t(o,i)!==`linked`)throw new u(`Workflow run "${t}" is already in a terminal state`)}finally{await I.unlink(o).catch(()=>{})}}async function or(e,t,n,r,i){R(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await J(gn(e,t),``),await bn(e,t);let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await G(z(e,`runs`,`${t}.json`),i,{overwrite:!0}),await ir(e,t),{event:void 0,run:Kn(i,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${Tn()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:5},c=z(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await ar(e,t,i,JSON.stringify(s,W,2),c,r):await G(c,s),{event:S(s,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const sr=new Map;function cr(e,t){let n=sr.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{sr.get(e)===r.task&&sr.delete(e)}})();return r.task=i,sr.set(e,i),i}function lr(e,t){let n=(async(n,r)=>{R(`runId`,n);let i=await U(e,`runs`,n,D,t);if(!i)throw new c(n);return Kn(i,r?.resolveData??`all`)});return{get:n,getMany:(async(e,t)=>{let r=[...new Set(e)],i=await Promise.all(r.map(async e=>{try{return await n(e,t)}catch(e){if(e instanceof c)return null;throw e}})),a=new Map(r.map((e,t)=>[e,i[t]]));return e.map(e=>a.get(e)??null)}),list:(async t=>{let n=t?.resolveData??`all`,r=await X({directory:L.join(e,`runs`),schema:D,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:$(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(n,r,i)=>(R(`runId`,n),cr(n,async()=>{let a=await U(e,`runs`,n,D,t);if(!a)throw new c(n);try{se(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof x,e}let o=y(a.attributes,r),s={...a,attributes:o,updatedAt:new Date};return await G(H(e,`runs`,n,t),s,{overwrite:!0}),{attributes:o}}))}}function ur(){let e=process.env.WORKFLOW_MAX_EVENTS,t=e===void 0?NaN:Number(e);return Number.isInteger(t)&&t>0?t:25e3}const dr=N({hookId:E().optional(),runId:E(),eventId:E().optional()}),fr=N({eventId:E()});async function pr(e){try{return await K(e,dr)}catch(e){if(e instanceof SyntaxError||e instanceof M)return null;throw e}}async function mr(e,t,n){if(t.hookId&&await hn(e,t.hookId,n))return!0;let r=await U(e,`runs`,t.runId,D,n);return!r||m(r.status)}async function hr(e){try{return await K(e,fr)}catch(e){if(e instanceof SyntaxError||e instanceof M)return null;throw e}}async function gr(e,t,n){return(await X({directory:L.join(e,`events`),schema:T,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:$(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function _r(e,t,n,r,i){let a=await U(e,`events`,`${t}-${r}`,T,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await U(e,`hooks`,n,j,i))return;let o=a.eventData??{};if(typeof o.token!=`string`)return;let s={runId:t,hookId:n,token:o.token,metadata:o.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:a.createdAt,specVersion:a.specVersion,isWebhook:o.isWebhook??!0,isSystem:o.isSystem??!1};await Pn(e,o.token,t,n,r,i),await In(e,t,n,i),await J(H(e,`hooks`,n,i),JSON.stringify(s,W,2))}async function vr(e,t,n,r,i){let a=wn(e,t,n,r);return await J(a,JSON.stringify({eventId:i}))?i:(await hr(a))?.eventId??null}function yr(e,t,n){let r=e.get(t),i={},a=(async()=>{r&&await r.catch(()=>void 0);try{return await n()}finally{e.get(t)===i.task&&e.delete(t)}})();return i.task=a,e.set(t,a),a}async function br(e,t){let n=L.join(e,`waits`),r=await Y(n);for(let e of r)e.startsWith(`${t}-`)&&await q(L.join(n,`${e}.json`))}async function xr(e,t,n,r){return cr(t,async()=>{let i=await K(H(e,`runs`,t,n),D),a={...r,attributes:i?.attributes??r.attributes};return await G(H(e,`runs`,t,n),a,{overwrite:!0}),a})}function Sr(e,t){let n=4*1024*1024,r=new Map,i=new Map,a=new Map,o=0;function x(e){let t=r.get(e);if(!t)return;r.delete(e),o-=i.get(e)??0,i.delete(e);let n=a.get(t.runId);n?.delete(e),n?.size===0&&a.delete(t.runId)}function C(e){for(let t of a.get(e)??[])x(t)}function w(){r.clear(),i.clear(),a.clear(),o=0}function re(e,t,s){if(s>n)return;for(;r.size>0&&(r.size>=1e3||o+s>n);){let e=r.keys().next().value;x(e)}r.set(e,t),i.set(e,s),o+=s;let c=a.get(t.runId)??new Set;c.add(e),a.set(t.runId,c)}function ie(e,t,r){if(le(e.eventType)){C(e.runId);return}let i=Buffer.byteLength(r);if(i>n)return;let a=T.safeParse(JSON.parse(r,pt));a.success&&re(t,a.data,i)}async function ae(n){let r=H(e,`events`,`${n.runId}-${n.eventId}`,t),i=JSON.stringify(n,W,2);await mt(r,i),ie(n,r,i)}let E=new Map,O=new Map;return{clearCache:w,async create(n,i,a){if(n!=null&&n!==``&&R(`runId`,n),`correlationId`in i&&typeof i.correlationId==`string`&&R(`correlationId`,i.correlationId),te(i.eventType)&&n&&i.correlationId){let e=t?`${n}-${i.correlationId}.${t}`:`${n}-${i.correlationId}`;return yr(E,e,()=>o())}if(b(i.eventType)&&n&&i.correlationId){let e=t?`${n}-${i.correlationId}.hook.${t}`:`${n}-${i.correlationId}.hook`;return yr(O,e,()=>o())}return o();async function o(){let o=`evnt_${Tn()}`,b=new Date,x;if(i.eventType===`run_created`&&(!n||n===``))x=`wrun_${Tn()}`;else if(n)x=n;else throw Error(`runId is required for non-run_created events`);if(i.eventType===`run_created`&&n&&n!==``){let e=ce(x,`wrun_`);if(e)throw new s(e)}let C=i.specVersion??5,w=null;if(i.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(i.eventType)&&(w=await U(e,`runs`,x,D,t),i.eventType===`run_started`&&!w&&`eventData`in i&&i.eventData)){let n=i.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){se(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:x,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:C,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},encryptionPublicKey:n.encryptionPublicKey,createdAt:b,updatedAt:b};if(await J(H(e,`runs`,x,t),JSON.stringify(r,W))){let e=`evnt_${Tn()}`;await ae({eventType:`run_created`,runId:x,eventId:e,createdAt:b,specVersion:C,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),w=r}else w=await U(e,`runs`,x,D,t)}}if(i.eventType===`run_failed`&&!w||i.eventType===`attr_set`&&!w)throw new c(x);if(w){if(ue(w.specVersion))throw new d(w.specVersion,5);if(de(w.specVersion))return or(e,x,i,w,a)}let re=v(i),E=re&&i.eventType===`step_started`;if(w&&m(w.status)){if(i.eventType===`run_cancelled`&&w.status===`cancelled`){let e={...i,runId:x,eventId:o,createdAt:b,specVersion:C};return await ae(e),{event:S(e,a?.resolveData??`all`),run:w,...w?{maxEvents:ur()}:{}}}if(i.eventType===`run_started`)throw new u(`Workflow run "${x}" is already in terminal state "${w.status}"`);if(le(i.eventType))throw new p(`Cannot transition run from terminal state "${w.status}"`);if(re)throw new p(`Cannot create new entities on run in terminal state "${w.status}"`);if(i.eventType===`attr_set`)throw new p(`Cannot set attributes on run in terminal state "${w.status}"`)}let O=null;if(te(i.eventType)&&i.eventType!==`step_created`&&i.correlationId){if(O=await U(e,`steps`,`${x}-${i.correlationId}`,_,t),!O&&!E)throw new s(`Step "${i.correlationId}" not found`);if(E&&O)throw new p(`Step "${i.correlationId}" already created`);if(O){if(g(O.status))throw new p(`Cannot modify step in terminal state "${O.status}"`);if(w&&m(w.status)&&O.status!==`running`)throw new u(`Cannot modify non-running step on run in terminal state "${w.status}"`)}}if(ee(i.eventType)&&i.correlationId&&(i.eventType===`hook_received`&&await hn(e,i.correlationId,t)||!await U(e,`hooks`,i.correlationId,j,t)))throw new f(i.correlationId);let k={...i,runId:x,eventId:o,createdAt:b,specVersion:C};if(i.eventType===`run_started`&&`eventData`in k&&delete k.eventData,E&&k.eventType===`step_started`&&k.eventData){let{input:e,...t}=k.eventData;k={...k,eventData:t}}let A,M,N,P,fe=!1,pe;if(le(i.eventType)&&w){await J(gn(e,x,t),``),await bn(e,x,t);let n=await xn(e,x,t);o=n.eventId,k={...k,eventId:o,createdAt:n.createdAt}}if(i.eventType===`run_created`&&`eventData`in i){let n=i.eventData;if(se(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),A={runId:x,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:C,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},encryptionPublicKey:n.encryptionPublicKey,createdAt:b,updatedAt:b},!await J(H(e,`runs`,x,t),JSON.stringify(A,W,2)))throw new p(`Workflow run "${x}" already exists`)}else if(i.eventType===`run_started`){if(w){if(w.status===`running`)return{run:w,maxEvents:ur()};A=await xr(e,x,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:w.startedAt??b,updatedAt:b,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey})}}else if(i.eventType===`run_completed`&&`eventData`in i){let n=i.eventData;w&&(A=await xr(e,x,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:b,updatedAt:b,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([ir(e,x),br(e,x)]))}else if(i.eventType===`run_failed`&&`eventData`in i){let n=i.eventData;w&&(A=await xr(e,x,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:b,updatedAt:b,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([ir(e,x),br(e,x)]))}else if(i.eventType===`run_cancelled`)w&&(A=await xr(e,x,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:b,updatedAt:b,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([ir(e,x),br(e,x)]));else if(i.eventType===`attr_set`&&w)A=await cr(x,async()=>{let n=await K(H(e,`runs`,x,t),D);if(!n)throw new c(x);if(se(i.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:i.eventData.allowReservedAttributes===!0}),i.correlationId&&i.eventData.writer.type===`workflow`&&!await J(z(e,`.locks`,`attributes`,t?`${x}-${i.correlationId}.created.${t}`:`${x}-${i.correlationId}.created`),``))throw new p(`Attribute event "${i.correlationId}" already exists`);let r={...n,attributes:y(n.attributes,i.eventData.changes),updatedAt:b};return await G(H(e,`runs`,x,t),r,{overwrite:!0}),r});else if(i.eventType===`step_created`&&`eventData`in i){if(!await J(z(e,`.locks`,`steps`,t?`${x}-${i.correlationId}.created.${t}`:`${x}-${i.correlationId}.created`),``))throw new p(`Step "${i.correlationId}" already created`);let n=i.eventData;M={runId:x,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:b,updatedAt:b,specVersion:C},await G(H(e,`steps`,`${x}-${i.correlationId}`,t),M)}else if(i.eventType===`step_started`){if(!O&&E){let n=i.eventData;if(await J(z(e,`.locks`,`steps`,t?`${x}-${i.correlationId}.created.${t}`:`${x}-${i.correlationId}.created`),``)){let r={runId:x,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:b,updatedAt:b,specVersion:C};await G(H(e,`steps`,`${x}-${i.correlationId}`,t),r);let a=`evnt_${Tn()}`,o={eventType:`step_created`,runId:x,eventId:a,createdAt:b,specVersion:C,correlationId:i.correlationId,eventData:{stepName:n.stepName,input:n.input}};await G(H(e,`events`,`${x}-${a}`,t),o),O=r,fe=!0}else throw new p(`Step "${i.correlationId}" already created`)}if(O){if(O.retryAfter&&O.retryAfter.getTime()>Date.now())throw new l(`Cannot start step "${i.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((O.retryAfter.getTime()-Date.now())/1e3)});let n=`${x}-${i.correlationId}`,r=await U(e,`steps`,n,_,t);if(r&&g(r.status))throw new p(`Cannot modify step in terminal state "${r.status}"`);M={...O,status:`running`,startedAt:O.startedAt??b,attempt:O.attempt+1,retryAfter:void 0,updatedAt:b},await G(H(e,`steps`,n,t),M,{overwrite:!0})}}else if(i.eventType===`step_completed`&&`eventData`in i){let n=i.eventData;if(O){let r=`${x}-${i.correlationId}`;if(!await J(z(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new p(`Cannot modify step in terminal state`);M={...O,status:`completed`,output:n.result,completedAt:b,updatedAt:b},await G(H(e,`steps`,r,t),M,{overwrite:!0})}}else if(i.eventType===`step_failed`&&`eventData`in i){let n=i.eventData;if(O){let r=`${x}-${i.correlationId}`;if(!await J(z(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new p(`Cannot modify step in terminal state`);M={...O,status:`failed`,error:n.error,completedAt:b,updatedAt:b},await G(H(e,`steps`,r,t),M,{overwrite:!0})}}else if(i.eventType===`step_retrying`&&`eventData`in i){let n=i.eventData;if(O){let r=`${x}-${i.correlationId}`;M={...O,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:b},await G(H(e,`steps`,r,t),M,{overwrite:!0})}}else if(i.eventType===`hook_created`&&`eventData`in i){let n=i.eventData,r=Sn(e,n.token),s=JSON.stringify({token:n.token,hookId:i.correlationId,runId:x,eventId:o}),c=!1,l=null,u=0,d=0;for(let a=0;a<10&&(await pr(r)||await tr(e,n.token,t),c=await J(r,s),!c);a++){if(l=await pr(r),!l){d++,d>=3&&await q(r);continue}if(l.runId===x&&l.hookId===i.correlationId||!await mr(e,l,t))break;u++,u<3?await new Promise(e=>setTimeout(e,10)):(await q(r),l.hookId&&(await q(H(e,`hooks`,l.hookId,t)),await q(wn(e,n.token,l.runId,l.hookId)))),l=null}let f=!1;if(!c)if(l?.runId===x&&l.hookId===i.correlationId){let r;if(l.eventId)r=l.eventId;else{let a=await gr(e,x,i.correlationId);if(a!==null)throw await _r(e,x,i.correlationId,a,t),new p(`Hook "${i.correlationId}" already created`);let s=await vr(e,n.token,x,i.correlationId,o);if(s===null)throw new p(`Hook "${i.correlationId}" already created`);r=s}o=r;let a=oe(o.replace(/^evnt_/,``))??b;k={...i,runId:x,eventId:o,createdAt:a,specVersion:C},f=!0}else{let e={eventType:`hook_conflict`,correlationId:i.correlationId,eventData:{token:n.token,...l?{conflictingRunId:l.runId}:{}},runId:x,eventId:o,createdAt:b,specVersion:C};return await ae(e),{event:S(e,a?.resolveData??`all`),run:A,step:M,hook:void 0}}N={runId:x,hookId:i.correlationId,token:n.token,metadata:n.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:k.createdAt,specVersion:C,isWebhook:n.isWebhook??!1,isSystem:n.isSystem??!1},pe=f?{overwrite:!0}:void 0,await Pn(e,n.token,x,i.correlationId,o,t)}else if(i.eventType===`hook_disposed`){if(!await J(mn(e,i.correlationId,t),``))throw new p(`Hook "${i.correlationId}" already disposed`);let n=H(e,`hooks`,i.correlationId,t),r=await U(e,`hooks`,i.correlationId,j,t);r&&(await Cn(e,r.token,r.runId,r.hookId),await q(wn(e,r.token,r.runId,r.hookId))),await q(n),await Ln(e,x,i.correlationId,t)}else if(i.eventType===`wait_created`&&`eventData`in i){let n=`${x}-${i.correlationId}`;if(!await J(z(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new p(`Wait "${i.correlationId}" already exists`);let r=i.eventData;P={waitId:n,runId:x,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:b,updatedAt:b,specVersion:C},await G(H(e,`waits`,n,t),P)}else if(i.eventType===`wait_completed`){let n=`${x}-${i.correlationId}`,r=z(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await J(r,``))throw new p(`Wait "${i.correlationId}" already completed`);let a=await U(e,`waits`,n,ne,t);if(!a)throw await I.unlink(r).catch(()=>{}),new s(`Wait "${i.correlationId}" not found`);P={...a,status:`completed`,completedAt:b,updatedAt:b},await G(H(e,`waits`,n,t),P,{overwrite:!0})}if(i.eventType===`hook_received`&&i.correlationId&&await hn(e,i.correlationId,t))throw new f(i.correlationId);let me=H(e,`events`,`${x}-${o}`,t),F=JSON.stringify(k,W,2),he;if(i.eventType===`hook_received`){let n=await _n(e,x,t),r=n?null:await U(e,`runs`,x,D,t);if(n||r&&m(r.status))throw new u(`Workflow run "${x}" is already in a terminal state`);let i=yn(e,x,o,t);if(!await J(i,F))throw new p(`Event "${o}" already exists for run "${x}"`);try{if(await _n(e,x,t))throw new u(`Workflow run "${x}" is already in a terminal state`);let n=await _t(i,me);if(n===`missing`)throw new u(`Workflow run "${x}" is already in a terminal state`);he=n===`linked`}finally{await q(i).catch(()=>{})}}else he=await J(me,F);if(!he)throw i.eventType===`hook_created`&&i.correlationId&&await _r(e,x,i.correlationId,o,t),new p(`Event "${o}" already exists for run "${x}"`);ie(k,me,F),N&&i.eventType===`hook_created`&&(await In(e,N.runId,N.hookId,t),await G(H(e,`hooks`,N.hookId,t),N,pe));let ge=a?.resolveData??`all`,_e=S(k,ge),ve,ye,be;if(i.eventType===`run_started`&&A){let t=await X({directory:L.join(e,`events`),schema:T,cachedItems:r,filePrefix:`${x}-`,sortOrder:`asc`,limit:1e3,getCreatedAt:$(`evnt`),getId:e=>e.eventId});ve=t.data,ye=t.cursor,be=t.hasMore}if(h(i.eventType)&&typeof a?.sinceCursor==`string`){let t=await X({directory:L.join(e,`events`),schema:T,filePrefix:`${x}-`,sortOrder:`asc`,cursor:a.sinceCursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});ve=ge===`none`?t.data.map(e=>S(e,ge)):t.data,ye=t.cursor,be=t.hasMore}return{event:_e,run:A,step:M,hook:N,wait:P,events:ve,cursor:ye,hasMore:be,...fe?{stepCreated:!0}:{},...A?{maxEvents:ur()}:{}}}},async get(n,r,i){R(`runId`,n),R(`eventId`,r);let a=await U(e,`events`,`${n}-${r}`,T,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return S(a,i?.resolveData??`all`)},async list(t){let{runId:n}=t;R(`runId`,n);let i=t.resolveData??`all`,a=await X({directory:L.join(e,`events`),schema:T,cachedItems:r,filePrefix:`${n}-`,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>S(e,i))}:a},async listByCorrelationId(t){let n=t.correlationId;R(`correlationId`,n);let i=t.resolveData??`all`,a=await X({directory:L.join(e,`events`),schema:T,cachedItems:r,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>S(e,i))}:a}}}function Cr(e,t){return{get:(async(n,r,i)=>{R(`runId`,n),R(`stepId`,r);let a=await U(e,`steps`,`${n}-${r}`,_,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return qn(a,i?.resolveData??`all`)}),list:(async t=>{R(`runId`,t.runId);let n=t.resolveData??`all`,r=await X({directory:L.join(e,`steps`),schema:_,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function wr(e,t){let n=lr(e,t),r=Cr(e,t),i=Sr(e,t),a=rr(e,t);return{runs:nn(`world.runs`,n),steps:nn(`world.steps`,r),events:nn(`world.events`,i),hooks:nn(`world.hooks`,a),clearCache:()=>i.clearCache()}}const Tr=A(()=>Math.random()),Er=N({streams:ie(E())});function Dr(e){return e===1}function Or(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function kr(e){return Dr(e[0])}function Ar(e){return{eof:kr(e),chunk:Buffer.from(e.subarray(1))}}async function jr(e){try{return await I.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function Mr(e,t,n,r=n,i=()=>!0){for(let a of t){if(!a.endsWith(n))continue;let t=a.slice(0,-n.length);i(t)&&e.set(t,r)}}function Nr(e,t){return R(`streamName`,t),L.join(e,t)}async function Pr(e,t,n){let r=Nr(e,t),i=await jr(r),a=new Map;return Mr(a,i,`.json`),Mr(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&Mr(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function Fr(e,t){let n=t?`.${t}`:``,r=new De,i=new Set;async function a(n,r){R(`runId`,n),R(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=H(e,`streams/runs`,n,t),s=(await U(e,`streams/runs`,n,Er,t))?.streams??[];s.includes(r)||(s.push(r),await G(o,{streams:s},{overwrite:!0})),i.add(a)}function o(e){return typeof e==`string`?Buffer.from(new TextEncoder().encode(e)):e instanceof Buffer?e:Buffer.from(e)}return{streams:{async write(t,i,s){let c=`chnk_${Tr()}`;await a(await t,i);let l=o(s),u=Or({chunk:l,eof:!1});await mt(L.join(Nr(L.join(e,`streams`,`chunks`),i),`${c}${n}.bin`),u);let d=Uint8Array.from(l);r.emit(`chunk:${i}`,{streamName:i,chunkData:d,chunkId:c})},async writeMulti(t,i,s){if(s.length===0)return;let c=s.map(()=>`chnk_${Tr()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=Or({chunk:t,eof:!1});return await mt(L.join(Nr(L.join(e,`streams`,`chunks`),i),`${a}${n}.bin`),o),{chunkId:a,chunkData:Uint8Array.from(t)}});for(let e of l){let{chunkId:t,chunkData:n}=await e;r.emit(`chunk:${i}`,{streamName:i,chunkData:n,chunkId:t})}},async close(t,i){let o=`chnk_${Tr()}`;await a(await t,i),await mt(L.join(Nr(L.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),Or({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return R(`runId`,n),(await U(e,`streams/runs`,n,Er,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await Pr(L.join(e,`streams`,`chunks`),r,t),l=0;if(i?.cursor)try{l=JSON.parse(Buffer.from(i.cursor,`base64`).toString(`utf-8`)).i}catch{l=0}let u=!1,d=[],f=0;for(let e of o){let t=s.get(e)??`.bin`,n=L.join(c,`${e}${t}`);if(f<l){if(Dr(await gt(n))){u=!0;break}f++;continue}if(d.length>=a){Dr(await gt(n))?u=!0:f++;break}let r=Ar(await ht(n));if(r.eof){u=!0;break}d.push({index:f,data:Uint8Array.from(r.chunk)}),f++}let p=!u&&f>l+d.length,m=l+d.length;return{data:d,cursor:p?Buffer.from(JSON.stringify({i:m})).toString(`base64`):null,hasMore:p,done:u}},async getInfo(n,r){let{files:i,extMap:a,dir:o}=await Pr(L.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(Dr(await gt(L.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=L.join(e,`streams`,`chunks`),s=()=>{},c=null,l=!1;return new ReadableStream({async start(e){let n=new Set,u=[],d=!0,f=!1,p=t=>{if(t.chunkData.byteLength===0){n.add(t.chunkId);return}d?(n.add(t.chunkId),u.push({chunkId:t.chunkId,chunkData:Uint8Array.from(t.chunkData)})):n.has(t.chunkId)||(n.add(t.chunkId),e.enqueue(Uint8Array.from(t.chunkData)))},m=()=>{if(d){f=!0;return}l=!0,s();try{e.close()}catch{}};s=()=>{r.off(`chunk:${i}`,p),r.off(`close:${i}`,m),c&&=(clearInterval(c),null)},r.on(`chunk:${i}`,p),r.on(`close:${i}`,m);let{files:h,extMap:g,dir:_}=await Pr(o,i,t),v=h.length;if(typeof a==`number`&&a<0&&h.length>0){let e=h[h.length-1],t=g.get(e)??`.bin`;Dr(await gt(L.join(_,`${e}${t}`)))&&v--}let ee=typeof a==`number`&&a<0?Math.max(0,v+a):a,y=!1;for(let t=ee;t<h.length;t++){let r=h[t],i=r;if(n.has(i))continue;let a=g.get(r)??`.bin`,o=Ar(await ht(L.join(_,`${r}${a}`)));if(o?.eof===!0){y=!0;break}n.add(i),o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}d=!1,u.sort((e,t)=>e.chunkId.localeCompare(t.chunkId));for(let t of u)e.enqueue(Uint8Array.from(t.chunkData));if(y){l=!0,s();try{e.close()}catch{}return}if(f){l=!0,s();try{e.close()}catch{}return}for(let e=0;e<ee&&e<h.length;e++)n.add(h[e]);if(l){s();return}let b=!1;c=setInterval(async()=>{if(!b){b=!0;try{let{files:r,extMap:a}=await Pr(o,i,t);for(let t of r){let r=t;if(n.has(r))continue;n.add(r);let i=a.get(t)??`.bin`,o=Ar(await ht(L.join(_,`${t}${i}`)));if(o?.eof===!0){l=!0,s();try{e.close()}catch{}return}if(l)return;o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}}catch(e){e instanceof Error&&`code`in e||console.error(`[world-local] Unexpected polling error:`,e)}finally{b=!1}}},100)},cancel(){l=!0,s()}})}}}}function Ir(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Je.value,...t};Me(n.dataDir);let r=n.tag,i=fn(n),{clearCache:a,...o}=wr(n.dataDir,r),s=Ye(n);return{specVersion:5,...i,...o,...nn(`world.streams`,{...Fr(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Pt(n.dataDir),!s)return;let e=r?e=>ot(e,r):st;await O({...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))},i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=L.join(e,`hooks`),i=await ct(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-WjtNsOyf.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await K(L.join(t,n),a);r?.token&&(await q(L.join(t,`tokens`,`${pn(r.token)}.json`)),await q(wn(e,r.token,r.runId,r.hookId)))})),await Promise.all([`runs`,`steps`,`events`,`hooks`,`hooks/by-run`,`waits`,`streams/runs`].map(async t=>{let n=L.join(e,t),i=await ct(n,r);await Promise.all(i.map(e=>q(L.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=L.join(e,`hooks`,t),i;try{i=await F.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=L.join(n,e.name),i=await ct(t,r);await Promise.all(i.map(e=>q(L.join(t,e))))}))}await F.rm(L.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=L.join(e,`streams`,`chunks`),s;try{s=await F.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=L.join(o,e.name),n=await lt(t,r,`.bin`);await Promise.all(n.map(e=>F.unlink(L.join(t,e)).catch(()=>{})))})),it()}else it(),Vn(),await xe(n.dataDir,{recursive:!0,force:!0}),await Pt(n.dataDir)}}}export{wt as DataDirAccessError,Tt as DataDirVersionError,Oe as UnwritableDataDirError,Ir as createWorld,At as ensureDataDir,Pt as initDataDir,Et as parseVersion};
|