eve 0.66.2 → 0.67.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/channel-address.d.ts +0 -2
- package/dist/src/channel/channel-address.js +1 -1
- package/dist/src/channel/channel-operations.d.ts +0 -5
- package/dist/src/channel/channel-operations.js +1 -1
- package/dist/src/channel/compiled-channel.d.ts +8 -0
- package/dist/src/channel/compiled-channel.js +2 -2
- package/dist/src/channel/conversation-context.js +1 -1
- package/dist/src/channel/routes.d.ts +1 -2
- package/dist/src/channel/schedule.d.ts +2 -2
- package/dist/src/channel/schedule.js +1 -1
- package/dist/src/channel/types.d.ts +8 -13
- package/dist/src/chunks/{use-eve-agent-PbSMyJ6e.js → use-eve-agent-DzdyI97Z.js} +0 -5
- package/dist/src/chunks/{use-eve-agent-Di1u2zKu.js → use-eve-agent-OCHP4s0z.js} +0 -5
- package/dist/src/cli/acp/command.js +3 -3
- package/dist/src/cli/commands/logs.d.ts +3 -3
- package/dist/src/cli/commands/logs.js +1 -1
- package/dist/src/cli/commands/register-integration-commands.js +1 -1
- package/dist/src/cli/commands/registry-declared-setups.d.ts +0 -1
- package/dist/src/cli/commands/registry-declared-setups.js +1 -1
- package/dist/src/cli/commands/registry.d.ts +5 -1
- package/dist/src/cli/commands/registry.js +1 -1
- package/dist/src/cli/commands/trace.js +1 -1
- package/dist/src/cli/dev/command.d.ts +9 -5
- package/dist/src/cli/dev/command.js +1 -3
- package/dist/src/cli/dev/run-interactive-ui.d.ts +0 -1
- package/dist/src/cli/dev/run-interactive-ui.js +1 -1
- package/dist/src/cli/dev/tui/argument-typeahead.d.ts +1 -2
- package/dist/src/cli/dev/tui/argument-typeahead.js +2 -2
- package/dist/src/cli/dev/tui/blocks.d.ts +5 -1
- package/dist/src/cli/dev/tui/blocks.js +4 -4
- package/dist/src/cli/dev/tui/flow-drawer.d.ts +11 -0
- package/dist/src/cli/dev/tui/flow-drawer.js +1 -0
- package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -1
- package/dist/src/cli/dev/tui/prompt-commands.d.ts +199 -0
- package/dist/src/cli/dev/tui/prompt-commands.js +2 -2
- package/dist/src/cli/dev/tui/question-panel.d.ts +4 -4
- package/dist/src/cli/dev/tui/question-panel.js +1 -1
- package/dist/src/cli/dev/tui/registry-result-message.d.ts +15 -4
- package/dist/src/cli/dev/tui/registry-result-message.js +4 -4
- package/dist/src/cli/dev/tui/runner.d.ts +18 -6
- package/dist/src/cli/dev/tui/runner.js +3 -2
- package/dist/src/cli/dev/tui/setup-commands.d.ts +5 -22
- package/dist/src/cli/dev/tui/setup-commands.js +2 -1
- package/dist/src/cli/dev/tui/setup-flow.d.ts +2 -10
- package/dist/src/cli/dev/tui/setup-panel.d.ts +4 -23
- package/dist/src/cli/dev/tui/setup-panel.js +3 -3
- package/dist/src/cli/dev/tui/terminal-renderer.d.ts +11 -7
- package/dist/src/cli/dev/tui/terminal-renderer.js +11 -11
- package/dist/src/cli/dev/tui/theme.d.ts +1 -1
- package/dist/src/cli/dev/tui/tui-prompter.js +1 -1
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/dev/url-target.js +1 -1
- package/dist/src/cli/invoke/command.d.ts +2 -5
- package/dist/src/cli/invoke/command.js +1 -1
- package/dist/src/cli/invoke/invoke.d.ts +2 -2
- package/dist/src/cli/invoke/invoke.js +1 -1
- package/dist/src/cli/invoke/result.d.ts +14 -194
- package/dist/src/cli/invoke/result.js +1 -1
- package/dist/src/cli/run.d.ts +0 -4
- package/dist/src/cli/run.js +2 -2
- package/dist/src/cli/telemetry/index.js +1 -1
- package/dist/src/client/message-reducer.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +6 -6
- package/dist/src/compiled/@workflow/core/create-hook.d.ts +38 -1
- package/dist/src/compiled/@workflow/core/global.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +9 -0
- package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime/hook-wake.d.ts +89 -0
- package/dist/src/compiled/@workflow/core/runtime/open-hook-wait-state.d.ts +55 -0
- package/dist/src/compiled/@workflow/core/runtime/quickjs-runtime.d.ts +2 -0
- package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +8 -1
- package/dist/src/compiled/@workflow/core/runtime.js +4 -4
- package/dist/src/compiled/@workflow/core/serialization/types.d.ts +8 -0
- package/dist/src/compiled/@workflow/core/serialization.d.ts +8 -0
- package/dist/src/compiled/@workflow/core/serialization.js +1 -1
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/errors/index.d.ts +23 -0
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/events.d.ts +34 -0
- package/dist/src/compiled/@workflow/world/hooks.d.ts +27 -0
- package/dist/src/compiled/@workflow/world/index.d.ts +2 -2
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +24 -0
- package/dist/src/compiled/@workflow/world/spec-version.d.ts +32 -11
- package/dist/src/compiled/@workflow/world-local/index.js +3 -3
- package/dist/src/compiled/@workflow/world-vercel/index.js +17 -17
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-89Nwz7XW.js → attribute-changes-DzJovO_f.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/dist-BQSf8Hax.js +1 -0
- package/dist/src/compiled/_chunks/workflow/dist-BfMqXLK3.js +3 -0
- package/dist/src/compiled/_chunks/workflow/frames-qKc30rjg.js +3 -0
- package/dist/src/compiled/_chunks/workflow/{global-DIlFoH2w.js → global-BQnKzRXo.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{helpers-k3zcudWr.js → helpers-CNMO7zB1.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{logger-Bzc8jWWj.js → logger-BCEj9caG.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-QS_cMwHn.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-CA5wWV2S.js +1 -0
- package/dist/src/compiled/_chunks/workflow/serialization-CJ265vSe.js +3 -0
- package/dist/src/compiled/_chunks/workflow/sleep-CBn94Ayv.js +1 -0
- package/dist/src/compiled/_chunks/workflow/{wait-until-DXLZx3tU.js → wait-until-Bo2U6ON9.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/{ws-transport-BSM_Cl7a.js → ws-transport-BrsMYqJg.js} +1 -1
- package/dist/src/compiler/compile-from-memory.d.ts +0 -1
- package/dist/src/compiler/compile-from-memory.js +1 -1
- package/dist/src/compiler/extension-compatibility.d.ts +25 -18
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/manifest.d.ts +48 -14
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/normalize-agent-config.js +1 -1
- package/dist/src/compiler/normalize-channel.js +1 -1
- package/dist/src/compiler/normalize-connection.js +1 -1
- package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
- package/dist/src/compiler/normalize-subagent.d.ts +0 -2
- package/dist/src/compiler/normalize-subagent.js +1 -1
- package/dist/src/compiler/remote-agent-node.d.ts +0 -2
- package/dist/src/compiler/remote-agent-node.js +1 -1
- package/dist/src/compiler/workspace-resources.js +1 -1
- package/dist/src/context/dynamic-subagent-lifecycle.js +1 -1
- package/dist/src/context/keys.d.ts +0 -3
- package/dist/src/context/keys.js +1 -1
- package/dist/src/context/memory-lifecycle.d.ts +1 -0
- package/dist/src/context/memory-lifecycle.js +1 -1
- package/dist/src/discover/project.js +1 -1
- package/dist/src/eve-channel/create-request.d.ts +0 -3
- package/dist/src/eve-channel/create-request.js +1 -1
- package/dist/src/eve-channel/index.js +1 -1
- package/dist/src/eve-channel/request.js +1 -1
- package/dist/src/eve-channel/types.d.ts +1 -1
- package/dist/src/execution/delegated-session-context.d.ts +2 -0
- package/dist/src/execution/delegated-session-context.js +1 -0
- package/dist/src/execution/dynamic-connections.d.ts +4 -1
- package/dist/src/execution/dynamic-connections.js +1 -1
- package/dist/src/execution/dynamic-workflow/tool.js +1 -1
- package/dist/src/execution/effective-agent-config.js +1 -1
- package/dist/src/execution/legacy-session/input.d.ts +0 -2
- package/dist/src/execution/legacy-session/input.js +1 -1
- package/dist/src/execution/legacy-session/prepare-step.d.ts +0 -1
- package/dist/src/execution/legacy-session/turn-workflow.js +1 -1
- package/dist/src/execution/node-step.d.ts +4 -2
- package/dist/src/execution/node-step.js +1 -1
- package/dist/src/execution/proxied-deliver-step.js +1 -1
- package/dist/src/execution/publish-channel-event.d.ts +23 -0
- package/dist/src/execution/publish-channel-event.js +1 -0
- package/dist/src/execution/runtime-context.js +1 -1
- package/dist/src/execution/session/entry-input.d.ts +4 -0
- package/dist/src/execution/session/entry-input.js +1 -1
- package/dist/src/execution/session/entry.js +1 -1
- package/dist/src/execution/session/event-sink.d.ts +1 -1
- package/dist/src/execution/session/event-sink.js +1 -1
- package/dist/src/execution/session/finalization.d.ts +1 -4
- package/dist/src/execution/session/finalization.js +1 -1
- package/dist/src/execution/session/handoff.d.ts +1 -3
- package/dist/src/execution/session/handoff.js +1 -1
- package/dist/src/execution/session/input-queue.d.ts +0 -1
- package/dist/src/execution/session/input-queue.js +1 -1
- package/dist/src/execution/session/next-input.d.ts +0 -1
- package/dist/src/execution/session/next-input.js +1 -1
- package/dist/src/execution/session/program.d.ts +0 -3
- package/dist/src/execution/session/program.js +1 -1
- package/dist/src/execution/session/turn-step-result.d.ts +1 -2
- package/dist/src/execution/session/turn-step-result.js +1 -1
- package/dist/src/execution/session/turn-step.js +1 -1
- package/dist/src/execution/session/turn.d.ts +2 -2
- package/dist/src/execution/session/turn.js +1 -1
- package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
- package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +1 -1
- package/dist/src/execution/tools/agent-router-workflow.js +1 -1
- package/dist/src/execution/tools/agent-router.d.ts +0 -2
- package/dist/src/execution/tools/agent-router.js +1 -1
- package/dist/src/execution/tools/ask-question-workflow.js +1 -1
- package/dist/src/execution/tools/connection-search.d.ts +1 -0
- package/dist/src/execution/tools/connection-search.js +1 -1
- package/dist/src/execution/tools/sleep-workflow.js +1 -1
- package/dist/src/execution/tools/subagent/invoke-preparation.js +1 -1
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/extensions/code/extension/lib/connect-authentication.js +1 -1
- package/dist/src/extensions/code/extension/lib/github-shell.js +1 -1
- package/dist/src/extensions/code/extension/lib/prwatch-github.js +1 -1
- package/dist/src/framework/sources/registry.js +1 -1
- package/dist/src/harness/approval-delivery-coordinator.d.ts +3 -13
- package/dist/src/harness/approval-delivery-coordinator.js +1 -1
- package/dist/src/harness/emission.d.ts +2 -3
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/input-request-resolution.d.ts +2 -0
- package/dist/src/harness/input-request-resolution.js +1 -1
- package/dist/src/harness/input-requests.d.ts +3 -3
- package/dist/src/harness/input-requests.js +1 -1
- package/dist/src/harness/pending-input-batches.d.ts +3 -3
- package/dist/src/harness/pending-input-batches.js +1 -1
- package/dist/src/harness/proxy-input-requests.d.ts +2 -0
- package/dist/src/harness/proxy-input-requests.js +1 -1
- package/dist/src/harness/session-limit-enforcement.d.ts +2 -3
- package/dist/src/harness/session-limit-enforcement.js +1 -1
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/tools.js +1 -1
- package/dist/src/harness/types.d.ts +11 -13
- package/dist/src/instrumentation/session-context.js +1 -1
- package/dist/src/instrumentation/session-init.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/core.js +1 -1
- package/dist/src/internal/authored-module-loader.js +1 -2
- package/dist/src/internal/authored-package-boundary.d.ts +0 -1
- package/dist/src/internal/authored-package-boundary.js +1 -1
- package/dist/src/internal/authored-relative-extension-resolver.js +1 -1
- package/dist/src/internal/external-resources-snapshot.d.ts +46 -0
- package/dist/src/internal/external-resources-snapshot.js +1 -0
- package/dist/src/internal/external-resources.d.ts +20 -0
- package/dist/src/internal/external-resources.js +1 -0
- package/dist/src/internal/invocation/workflow-execution.d.ts +0 -2
- package/dist/src/internal/invocation/workflow-execution.js +1 -1
- package/dist/src/internal/nitro/host/build-application.js +1 -1
- package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
- package/dist/src/internal/nitro/host/instrumentation-entry.d.ts +3 -0
- package/dist/src/internal/nitro/host/instrumentation-entry.js +2 -0
- package/dist/src/internal/nitro/host/start-development-server.d.ts +0 -8
- package/dist/src/internal/nitro/host/start-development-server.js +2 -2
- package/dist/src/internal/nitro/host.d.ts +1 -1
- package/dist/src/internal/nitro/host.js +1 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
- package/dist/src/internal/nitro/routes/index.js +72 -3
- package/dist/src/internal/workflow/development-world-client.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_cli-config@0.2.7 → @vercel_cli-config@0.3.0}/node_modules/@vercel/cli-config/dist/index.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/authorization.js +1 -1
- package/dist/src/node_modules/.pnpm/@vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494/node_modules/@vercel/connect/dist/connector.js +1 -0
- package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/installation.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/token.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token-util.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token.js +1 -1
- package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/version.js +1 -1
- package/dist/src/protocol/message.d.ts +4 -0
- package/dist/src/protocol/message.js +1 -1
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +0 -1
- package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +1 -1
- package/dist/src/public/channels/mcp.js +1 -1
- package/dist/src/public/channels/slack/activity-plan.d.ts +2 -1
- package/dist/src/public/channels/slack/activity-plan.js +1 -1
- package/dist/src/public/channels/slack/activity.d.ts +2 -0
- package/dist/src/public/channels/slack/activity.js +1 -1
- package/dist/src/public/channels/slack/api.d.ts +7 -0
- package/dist/src/public/channels/slack/api.js +1 -1
- package/dist/src/public/channels/slack/app-manifest.d.ts +9 -0
- package/dist/src/public/channels/slack/app-manifest.js +1 -0
- package/dist/src/public/channels/slack/attachments.d.ts +5 -2
- package/dist/src/public/channels/slack/attachments.js +1 -1
- package/dist/src/public/channels/slack/inbound-content.js +6 -3
- package/dist/src/public/channels/slack/index.d.ts +1 -0
- package/dist/src/public/channels/slack/input-response.d.ts +2 -0
- package/dist/src/public/channels/slack/input-response.js +1 -1
- package/dist/src/public/channels/slack/interaction-cards.js +1 -1
- package/dist/src/public/channels/slack/interactions.d.ts +2 -0
- package/dist/src/public/channels/slack/interactions.js +1 -1
- package/dist/src/public/channels/slack/slackChannel.d.ts +7 -1
- package/dist/src/public/channels/slack/slackChannel.js +1 -1
- package/dist/src/public/channels/slack/slash-command.d.ts +5 -1
- package/dist/src/public/channels/slack/slash-command.js +1 -1
- package/dist/src/public/channels/slack/transport.d.ts +76 -0
- package/dist/src/public/channels/slack/transport.js +1 -0
- package/dist/src/public/definitions/remote-agent.d.ts +0 -9
- package/dist/src/public/definitions/workspace-agent.d.ts +0 -3
- package/dist/src/public/definitions/workspace-agent.js +1 -1
- package/dist/src/runtime/agent/bootstrap.d.ts +0 -1
- package/dist/src/runtime/agent/bootstrap.js +1 -1
- package/dist/src/runtime/connections/mcp-client.js +1 -1
- package/dist/src/runtime/connections/mcp-tracing.d.ts +27 -0
- package/dist/src/runtime/connections/mcp-tracing.js +1 -0
- package/dist/src/runtime/resolve-agent-graph.js +1 -1
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +0 -2
- package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -1
- package/dist/src/runtime/subagents/dynamic-remote-agent-config.d.ts +0 -2
- package/dist/src/runtime/subagents/dynamic-remote-agent-config.js +1 -1
- package/dist/src/runtime/types.d.ts +1 -2
- package/dist/src/services/dev-client/vercel-auth-error.d.ts +1 -1
- package/dist/src/setup/cli/channel-setup-prompter.d.ts +2 -9
- package/dist/src/setup/cli/channel-setup-prompter.js +1 -1
- package/dist/src/setup/cli/index.d.ts +1 -1
- package/dist/src/setup/connection-connector.js +1 -1
- package/dist/src/setup/flows/model-login-connection.d.ts +0 -16
- package/dist/src/setup/flows/model-login-connection.js +1 -1
- package/dist/src/setup/flows/model-login-options.d.ts +59 -0
- package/dist/src/setup/flows/model-login-options.js +1 -0
- package/dist/src/setup/flows/model-login.js +1 -1
- package/dist/src/setup/flows/model-source-change.d.ts +0 -2
- package/dist/src/setup/flows/model-source-change.js +1 -1
- package/dist/src/setup/flows/registry-session.d.ts +15 -13
- package/dist/src/setup/flows/registry-session.js +1 -1
- package/dist/src/setup/flows/registry.js +1 -1
- package/dist/src/setup/flows/vercel-model-login.js +1 -1
- package/dist/src/setup/integrations/photon/setup-flow.js +1 -1
- package/dist/src/setup/prompter.d.ts +2 -2
- package/dist/src/setup/registry-setup-client.js +1 -1
- package/dist/src/setup/registry-setup-protocol.d.ts +0 -4
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/slack-connect-lifecycle.js +1 -1
- package/dist/src/setup/verified-remote-agent.d.ts +1 -0
- package/dist/src/setup/verified-remote-agent.js +1 -1
- package/dist/src/shared/action-types.d.ts +2 -2
- package/dist/src/shared/agent-definition.d.ts +0 -9
- package/dist/src/shared/agent-turn-outcome.d.ts +1 -1
- package/dist/src/shared/channel-definition.d.ts +2 -2
- package/dist/src/shared/conversation-context.d.ts +0 -4
- package/dist/src/shared/conversation-context.js +1 -1
- package/dist/src/shared/validate-authorization.js +1 -1
- package/dist/src/shared/vercel-connect-metadata.d.ts +12 -0
- package/dist/src/shared/vercel-connect-metadata.js +1 -0
- package/dist/src/subagents/agent-handle-errors.d.ts +0 -4
- package/dist/src/subagents/agent-handle-errors.js +1 -1
- package/dist/src/subagents/callback-route.js +1 -1
- package/dist/src/subagents/callback-step.d.ts +0 -22
- package/dist/src/subagents/callback-step.js +1 -1
- package/dist/src/subagents/event-proxy-step.js +1 -1
- package/dist/src/subagents/hitl-proxy.d.ts +3 -5
- package/dist/src/subagents/hitl-proxy.js +1 -1
- package/dist/src/subagents/invocation.d.ts +5 -6
- package/dist/src/subagents/parent-notification.d.ts +1 -18
- package/dist/src/subagents/parent-notification.js +1 -1
- package/dist/src/subagents/remote-dispatch.js +1 -1
- package/dist/src/subagents/tool.d.ts +0 -3
- package/dist/src/subagents/tool.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/tools/framework/agent-contract.d.ts +0 -2
- package/dist/src/tools/framework/agent-contract.js +1 -1
- package/dist/src/tracing/agent-action-instrumentation.js +1 -1
- package/dist/src/tracing/agent-approval-instrumentation.js +1 -1
- package/dist/src/tracing/agent-memory-instrumentation.js +1 -1
- package/dist/src/tracing/agent-otel-provider.js +2 -2
- package/dist/src/tracing/agent-otel-session-context.js +1 -1
- package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
- package/dist/src/tracing/agent-tool-span-context.d.ts +15 -0
- package/dist/src/tracing/agent-tool-span-context.js +1 -0
- package/dist/src/tracing/otel-declaration.d.ts +4 -9
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/agent-config.md +12 -13
- package/docs/channels/chat-sdk.mdx +1 -1
- package/docs/channels/custom.mdx +1 -1
- package/docs/channels/eve.mdx +4 -4
- package/docs/channels/mcp.mdx +10 -10
- package/docs/channels/slack.mdx +32 -3
- package/docs/concepts/sessions-runs-and-streaming.md +5 -6
- package/docs/connections/overview.mdx +22 -0
- package/docs/guides/deployment/overview.md +1 -1
- package/docs/guides/deployment/self-hosting.md +1 -1
- package/docs/guides/deployment/vercel.mdx +2 -2
- package/docs/guides/dev-tui.md +7 -7
- package/docs/guides/dynamic-capabilities.md +2 -2
- package/docs/guides/frontend/overview.mdx +5 -3
- package/docs/guides/hooks.md +4 -2
- package/docs/guides/instrumentation/agent-runs.mdx +7 -7
- package/docs/guides/instrumentation/instrumentation.mdx +22 -5
- package/docs/guides/instrumentation/otel.mdx +30 -0
- package/docs/guides/remote-agents.md +3 -4
- package/docs/guides/self-modification.md +1 -1
- package/docs/memory/custom-provider.md +1 -1
- package/docs/protocols/acp.md +1 -1
- package/docs/reference/cli.md +91 -97
- package/docs/schedules.mdx +4 -5
- package/docs/subagents/index.mdx +5 -7
- package/docs/tools/human-in-the-loop.md +4 -0
- package/docs/tools/overview.mdx +2 -0
- package/docs/tools/workflows.mdx +1 -1
- package/docs/tutorial/remember-definitions.mdx +1 -1
- package/docs/tutorial/ship-it.mdx +1 -1
- package/package.json +8 -7
- package/dist/src/cli/commands/channels.d.ts +0 -9
- package/dist/src/cli/commands/channels.js +0 -1
- package/dist/src/compiled/_chunks/workflow/dist-CNT2vjZ4.js +0 -1
- package/dist/src/compiled/_chunks/workflow/dist-DtXwQbZr.js +0 -3
- package/dist/src/compiled/_chunks/workflow/frames-DnrfSd1P.js +0 -3
- package/dist/src/compiled/_chunks/workflow/resume-hook-BmJ263ZR.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-NLvREued.js +0 -1
- package/dist/src/compiled/_chunks/workflow/serialization-HCDeQWcR.js +0 -3
- package/dist/src/compiled/_chunks/workflow/sleep-Bi508qmg.js +0 -1
- package/dist/src/execution/effective-output-schema.d.ts +0 -22
- package/dist/src/execution/effective-output-schema.js +0 -1
- package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/connector.js +0 -1
- package/dist/src/public/channels/slack/api-errors.d.ts +0 -33
- package/dist/src/public/channels/slack/api-errors.js +0 -1
- package/dist/src/shared/run-mode.d.ts +0 -7
- package/dist/src/shared/run-mode.js +0 -1
- package/dist/src/subagents/parent-result.d.ts +0 -14
- package/dist/src/subagents/parent-result.js +0 -1
- /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/index.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/base-url.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/default-scopes.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/env.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38 → @vercel_connect@2.3.3_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_a37674779346d612fa7d2ca9bd316494}/node_modules/@vercel/connect/dist/internal/url-validation.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/auth-errors.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/get-context.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/index.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/oauth.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token-error.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/token-io.js +0 -0
- /package/dist/src/node_modules/.pnpm/{@vercel_oidc@3.8.8 → @vercel_oidc@3.8.9}/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{a as e,t}from"../../_chunks/workflow/rolldown-runtime-B_knIduE.js";import{t as n}from"../../_chunks/workflow/debug-log-CVPstO1D.js";import{B as r,C as i,G as a,H as o,K as s,M as c,N as l,P as u,R as d,U as f,W as p,Z as m,a as h,at as g,b as _,c as v,d as y,ft as b,g as x,h as S,l as C,lt as ee,m as w,mt as T,n as te,o as
|
|
1
|
+
import{a as e,t}from"../../_chunks/workflow/rolldown-runtime-B_knIduE.js";import{t as n}from"../../_chunks/workflow/debug-log-CVPstO1D.js";import{B as r,C as i,G as a,H as o,K as s,M as c,N as l,P as u,R as d,U as f,W as p,Z as m,a as h,at as g,b as _,c as v,d as y,ft as b,g as x,h as S,l as C,lt as ee,m as w,mt as T,n as te,o as E,ot as ne,pt as re,q as D,r as ie,rt as ae,s as oe,st as se,tt as ce,ut as le,v as ue,z as O}from"../../_chunks/workflow/dist-BQSf8Hax.js";import{b as de,f as fe,j as k,k as pe,o as A,p as me,r as j,s as he}from"../../_chunks/workflow/dist-BfMqXLK3.js";import{i as ge,n as _e,r as ve,t as ye}from"../../_chunks/workflow/workflow-routes-CwqB063q.js";import{a as be,i as M,n as N,r as P,t as F}from"../../_chunks/workflow/signal-exit-DZKTacNU.js";import{z as I}from"#compiled/zod/index.js";import{createHash as L}from"node:crypto";import{promisify as xe}from"node:util";import{fileURLToPath as Se}from"node:url";import{promises as R}from"node:fs";import z,{access as Ce,constants as we,mkdir as Te,readFile as Ee,readdir as De,readlink as Oe,rm as ke,unlink as Ae,writeFile as je}from"node:fs/promises";import B from"node:path";import{tmpdir as Me}from"node:os";import{execFile as Ne}from"node:child_process";import{setTimeout as Pe}from"node:timers/promises";import Fe from"node:assert";import{EventEmitter as Ie}from"node:events";var Le=class extends k{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 Re=new Set([`EROFS`,`EACCES`,`EPERM`]);function ze(e){return e!==void 0&&Re.has(e)}const Be=T(`@workflow/world-local//buildTargetWarnings`,1,()=>({warnedAboutVercelDeployment:!1}));function Ve(e){if(Be.warnedAboutVercelDeployment||!process.env.VERCEL_DEPLOYMENT_ID)return;let t=B.resolve(e),n=Me();t===n||t.startsWith(`${n}${B.sep}`)||(Be.warnedAboutVercelDeployment=!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 He(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function Ue(e,t){let n=[],r=e.trim().split(`
|
|
2
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=He(i.slice(s+1));c!==void 0&&n.push(c)}return n}const We=xe(Ne);function Ge(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const Ke=((e,t)=>e.join(t))([``,`proc`],`/`);async function qe(e){let t=[`${Ke}/net/tcp`,`${Ke}/net/tcp6`],n=[],r=new Set,i=`${Ke}/${e}/fd`;try{let e=(await De(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await Oe(`${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 Ee(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=Ge(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 Je(e){try{let{stdout:t}=await We(`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=Ge(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Ye(e){try{let{stdout:t}=await We(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Ue(t,e)}catch{return[]}}async function Xe(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await qe(e);case`darwin`:return await Je(e);case`win32`:return await Ye(e);default:return[]}}catch(e){return n(`[getAllPorts] Detection failed:`,e),[]}}const Ze=`${ye}/flow?__health`;async function Qe(e,t={}){let{endpoint:n=Ze,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 $e(e){let t=await Xe();if(t.length===0)return;if(t.length===1)return t[0];let r=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await Qe(t,e)})))).find(e=>e.isWorkflow);return r?r.port:(n(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function et(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const tt=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,nt=()=>process.env.WORKFLOW_LOCAL_BASE_URL,rt=et(()=>({dataDir:tt(),baseUrl:nt()}));function it(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 at(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??_e(`http://localhost`)}async function ot(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 _e(`http://localhost:${e.port}`);if(process.env.PORT)return _e(`http://localhost:${process.env.PORT}`);let t=await $e({endpoint:ve()});if(t)return _e(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const B=T(`@workflow/world-local//fs`,1,()=>({ulid:ue(()=>Math.random()),createdFilesCache:new Set,createdDirectoriesCache:new Set}));function st(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var ct=class extends O{constructor(e,t){super(`Unsafe ${e} "${st(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function V(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new ct(e,t)}function H(e,...t){let n=z.resolve(e),r=z.resolve(e,...t);if(r!==n&&!r.startsWith(n+z.sep))throw new ct(`path`,t.join(`/`));return r}const lt=process.platform===`win32`;async function U(e,t=5){if(!lt)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`)}function ut(){B.createdFilesCache.clear(),B.createdDirectoriesCache.clear()}const dt=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function ft(e){return e.replace(dt,``)}function pt(e,t){return e.endsWith(`.${t}`)}function mt(e){return!dt.test(e)}function W(e,t,n,r){return V(`fileId`,n),r!==void 0&&V(`tag`,r),H(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function G(e,t,n,r,i){if(V(`fileId`,n),i!==void 0&&V(`tag`,i),i){let a=await J(H(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return J(H(e,t,`${n}.json`),r)}async function ht(e,t){let n=`.${t}.json`;try{return(await L.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function gt(e,t,n){let r=`.${t}${n}`;try{return(await L.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function _t(e){let t=z.resolve(e);if(!B.createdDirectoriesCache.has(t))try{await L.mkdir(t,{recursive:!0}),B.createdDirectoriesCache.add(t)}catch(e){let n=e.code;if(ze(n)&&!await vt(t))throw new Le(t,n)}}async function vt(e){try{return(await L.stat(e)).isDirectory()}catch{return!1}}async function yt(e,t){await _t(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return B.createdDirectoriesCache.delete(z.resolve(e)),await _t(e),t()}}function K(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function bt(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function q(e,t,n){return xt(e,JSON.stringify(t,K,2),n)}async function xt(e,t,n){if(!n?.overwrite){if(B.createdFilesCache.has(e))throw new k(`File ${e} already exists and 'overwrite' is false`);try{throw await L.access(e),B.createdFilesCache.add(e),new k(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${B.ulid()}`,i=!1;try{await yt(z.dirname(e),async()=>{await L.writeFile(r,t),i=!0,await U(()=>L.rename(r,e))}),B.createdFilesCache.add(e)}catch(e){throw i&&await U(()=>L.unlink(r),3).catch(()=>{}),e}}async function J(e,t){try{let n=await U(()=>L.readFile(e,`utf-8`));return t.parse(JSON.parse(n,bt))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function St(e){return await L.readFile(e)}async function Ct(e){let t=await L.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 Y(e){try{await U(()=>L.unlink(e))}catch(e){if(e.code!==`ENOENT`)throw e}}async function X(e,t){let n=`${e}.tmp.${B.ulid()}`,r=!1;try{return await yt(z.dirname(e),async()=>{await L.writeFile(n,t,{flag:`wx`}),r=!0;try{return await U(()=>L.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await U(()=>L.unlink(n),3).catch(()=>{})}}async function wt(e,t){try{return await yt(z.dirname(t),()=>U(()=>L.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function Z(e){return Tt(e,`.json`)}async function Tt(e,t){try{return(await L.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}const Et=`key:`;function Dt(e){if(!e)return null;if(e.startsWith(`key:`))return{timestamp:new Date(0),id:null,sortKey:e.slice(4)};let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null,sortKey:null}}function Ot(e,t,n){return n?`${Et}${n}`:t?`${e.toISOString()}|${t}`:e.toISOString()}async function kt(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,getSortKey:f,getSortKeyFromFileId:p}=e;i!==void 0&&V(`filePrefix`,i);let m=z.resolve(t),h=await Z(m),g=i?h.filter(e=>e.startsWith(i)):h,_=a?g.filter(a):g,v=Dt(l),y=_;if(v?.sortKey&&p){let e=v.sortKey;y=_.filter(t=>{let n=p(t);if(n===null)return!0;let r=n.localeCompare(e);return s===`desc`?r<0:r>0})}else v&&!v.sortKey&&(y=_.filter(e=>{let t=u(`${e}.json`);if(t){let e=v.timestamp.getTime(),n=t.getTime();return v.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let b=[];for(let e=0;e<y.length;e+=32){let t=y.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=z.join(m,`${e}.json`),i;try{let e=r?.get(t);i=e===void 0?await J(t,n):structuredClone(e)}catch(t){if(t instanceof I.ZodError)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}return i&&o&&!await o(i)?null:i}));for(let e of i){if(!e)continue;let t=f?.(e)??null;if(v?.sortKey){if(t){let e=t.localeCompare(v.sortKey);if(s===`desc`?e>=0:e<=0)continue}b.push(e);continue}if(v){let t=e.createdAt.getTime(),n=v.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&v.id&&d&&d(e)>=v.id)continue}else if(t<n||t===n&&v.id&&d&&d(e)<=v.id)continue}b.push(e)}}b.sort((e,t)=>{if(f){let n=f(e),r=f(t);if(n!==null&&r!==null)return s===`asc`?n.localeCompare(r):r.localeCompare(n)}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 x=b.length>c,S=x?b.slice(0,c):b;return{data:S,cursor:S.length>0?Ot(S[S.length-1].createdAt,d?.(S[S.length-1]),f?.(S[S.length-1])):null,hasMore:x}}const At=T(`@workflow/world-local//packageInfo`,1,()=>({cached:null}));function jt(){return typeof import.meta.url==`string`&&import.meta.url?z.dirname(Se(import.meta.url)):null}async function Mt(){if(At.cached)return At.cached;let e=jt();if(e)try{let t=await Ee(z.join(e,`../package.json`),`utf-8`);return At.cached=JSON.parse(t),At.cached}catch{}return At.cached={name:`@workflow/world-local`,version:`5.0.0-beta.46`},At.cached}const Nt=`version.txt`;var Pt=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},Ft=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 It(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 Lt(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:It(t.substring(n+1))}}function Rt(e,t){return`${e}@${Q(t)}`}function zt(e,t){console.log(`[world-local] Upgrading from version ${Q(e)} to ${Q(t)}`)}async function Bt(e){let t=z.resolve(e);try{await Te(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new Pt(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await Ce(t,we.R_OK)}catch(e){let n=e;throw new Pt(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=z.join(t,`.workflow-write-test-${Date.now()}`);try{await je(n,``),await Ae(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new Pt(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Vt(e){let t=z.join(z.resolve(e),Nt);try{return Lt(await Ee(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Ht(e,t){let n=z.join(z.resolve(e),Nt),r=Rt((await Mt()).name,t);await je(n,r)}function Ut(e,t){return t||Q(e)}async function Wt(e){await Bt(e);let t=await Mt(),n=It(t.version),r=await Vt(e);if(r===null){await Ht(e,n);return}let{version:i}=r;if(Q(i)!==Q(n))try{zt(i,n),await Ht(e,n)}catch(e){let r=Ut(i,e instanceof Ft?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}}const Gt=T(`@workflow/world-local//telemetry`,1,()=>({apiPromise:null,tracerPromise:null}));async function Kt(){return Gt.apiPromise||=import(`../../@opentelemetry/api/index.js`).catch(()=>null),Gt.apiPromise}async function qt(){return Gt.tracerPromise||=Kt().then(e=>e?e.trace.getTracer(`workflow`):null),Gt.tracerPromise}async function Jt(e,...t){let[n,r]=await Promise.all([qt(),Kt()]),{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 Yt(e){let t=await Kt();if(t)return t.SpanKind[e]}function Xt(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Zt=Xt(`peer.service`),Qt=Xt(`rpc.system`),$t=Xt(`rpc.service`),en=Xt(`rpc.method`),tn=Xt(`workflow.run.id`),nn=Xt(`step.id`),rn={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},an={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},on=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function sn(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 cn(e,t){return typeof e[t]==`string`?e[t]:void 0}function ln(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function un(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 dn(e,t,n){let r=`${e}.${t}`,i={},a=an[r],o=a===void 0?on.has(r)?ln(n[0]):void 0:cn(n,a);if(o&&Object.assign(i,tn(o)),r===`world.steps.get`){let e=cn(n,1);e&&Object.assign(i,nn(e))}return i}function fn(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=sn(t);r&&(n=`${e}.${a} ${r}`)}return Jt(n,{kind:await Yt(`INTERNAL`)},async r=>{r?.setAttributes({...Zt(rn.peerService),...Qt(rn.rpcSystem),...$t(rn.rpcService),...en(n),...dn(e,a,t)});let o=await i(...t),s=un(o);return s&&r?.setAttributes(tn(s)),o})}}return n}var pn=t((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}))(),mn=N(),hn=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,K))}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,bt)}};const gn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,_n=2147483647,vn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3;function yn(e,t){let n=process.env[e];if(n===void 0||n===``)return t;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>=0?r:t}function bn(){return{bodyTimeout:yn(`WORKFLOW_LOCAL_BODY_TIMEOUT_MS`,3e4),connections:1e3,headersTimeout:yn(`WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`,3e4),keepAliveTimeout:3e4}}const xn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function Sn(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(xn))return!0;t=`cause`in t?t.cause:void 0}return!1}function Cn(e){let t=bn(),r=S()?P({maxSockets:t.connections,keepAliveMs:t.keepAliveTimeout}):void 0,a=r?void 0:new mn.Agent(t),o=new hn,s=ue(),c=new pn.Sema(vn),l=new AbortController,u=l.signal,d=new Map,f=new Map,p=async(l,p,m)=>{let h=[];if(m?.idempotencyKey){let e=d.get(m.idempotencyKey);if(e)return{messageId:e}}let g=o.serialize(p),{prefix:_}=i(l),v=de.parse(`msg_${s()}`),y=p,b=y.runId??void 0,x=y.stepId??void 0;if(m?.idempotencyKey){let e=m.idempotencyKey;d.set(e,v),h.push(()=>{d.delete(e)})}return(async()=>{if(m?.delaySeconds&&m.delaySeconds>0){let e=Math.min(m.delaySeconds*1e3,_n);await Pe(e,void 0,{signal:u})}c.tryAcquire()||(n(`[world-local]: concurrency limit (${vn}) reached, waiting for queue to free up`),await c.acquire());let i=0;try{for(let n=0;n<256;n++){let o={...m?.headers,"content-type":`application/json`,"x-vqs-queue-name":l,"x-vqs-message-id":v,"x-vqs-message-attempt":String(i+1)},s=f.get(_),c,d;try{if(s)c=await s(new Request(A(at(e),{type:`flow`}),{method:`POST`,headers:o,body:g}));else{let n=await ot(e),i=A(n,{type:`flow`});c=r?await j(i,{method:`POST`,headers:new Headers(o),body:g,agents:r,signal:u,headersTimeoutMs:t.headersTimeout,bodyTimeoutMs:t.bodyTimeout}):await fetch(i,{method:`POST`,duplex:`half`,dispatcher:a,headers:o,body:g,signal:u})}i++,d=await c.text()}catch(e){let t=e?.name;if(u.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(Sn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${n+1}), retrying`,{queueName:l,messageId:v,...b&&{runId:b},...x&&{stepId:x},error:String(e)}),await Pe(5e3,void 0,{signal:u});continue}if(c.ok){try{let e=Number(JSON.parse(d).timeoutSeconds);if(Number.isFinite(e)&&e>=0){if(e>0){let t=Math.min(e*1e3,_n);await Pe(t,void 0,{signal:u})}continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${i}, HTTP ${c.status})`,{queueName:l,messageId:v,...b&&{runId:b},...x&&{stepId:x},handlerError:d}),await Pe(5e3,void 0,{signal:u})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:l,messageId:v,...b&&{runId:b},...x&&{stepId:x}})}finally{c.release()}})().catch(e=>{e?.name!==`AbortError`&&e?.name!==`ResponseAborted`&&(Sn(e)?console.error(`[local world] Queue operation failed: detected "${xn}". 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:l,messageId:v,...b&&{runId:b},...x&&{stepId:x},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of h)e()}),{messageId:v}},m=I.compile(I.object({"x-vqs-queue-name":_,"x-vqs-message-id":de,"x-vqs-message-attempt":I.coerce.number()}));return{queue:p,createQueueHandler:(e,t)=>async n=>{let r=m.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 hn().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a});if(typeof s==`object`&&s&&`invoke`in s&&s.invoke===!0)return Response.json({result:e});let n=null;return typeof e==`object`&&e&&`timeoutSeconds`in e&&typeof e.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,gn)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await Mt()).version}`,registerHandler(e,t){f.set(e,t)},async close(){u.aborted||(l.abort(),r&&M(r),await a?.close())}}}var wn=t(((t,n)=>{var r=e(`constants`),i=process.cwd,a=null,o=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return a||=i.call(process),a};try{process.cwd()}catch{}if(typeof process.chdir==`function`){var s=process.chdir;process.chdir=function(e){a=null,s.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,s)}n.exports=c;function c(e){r.hasOwnProperty(`O_SYMLINK`)&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||n(e),e.chown=s(e.chown),e.fchown=s(e.fchown),e.lchown=s(e.lchown),e.chmod=i(e.chmod),e.fchmod=i(e.fchmod),e.lchmod=i(e.lchmod),e.chownSync=c(e.chownSync),e.fchownSync=c(e.fchownSync),e.lchownSync=c(e.lchownSync),e.chmodSync=a(e.chmodSync),e.fchmodSync=a(e.fchmodSync),e.lchmodSync=a(e.lchmodSync),e.stat=l(e.stat),e.fstat=l(e.fstat),e.lstat=l(e.lstat),e.statSync=u(e.statSync),e.fstatSync=u(e.fstatSync),e.lstatSync=u(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){}),o===`win32`&&(e.rename=typeof e.rename==`function`?(function(t){function n(n,r,i){var a=Date.now(),o=0;t(n,r,function s(c){if(c&&(c.code===`EACCES`||c.code===`EPERM`||c.code===`EBUSY`)&&Date.now()-a<6e4){setTimeout(function(){e.stat(r,function(e,a){e&&e.code===`ENOENT`?t(n,r,s):i(c)})},o),o<100&&(o+=10);return}i&&i(c)})}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.rename):e.rename),e.read=typeof e.read==`function`?(function(t){function n(n,r,i,a,o,s){var c;if(s&&typeof s==`function`){var l=0;c=function(u,d,f){if(u&&u.code===`EAGAIN`&&l<10)return l++,t.call(e,n,r,i,a,o,c);s.apply(this,arguments)}}return t.call(e,n,r,i,a,o,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.read):e.read,e.readSync=typeof e.readSync==`function`?(function(t){return function(n,r,i,a,o){for(var s=0;;)try{return t.call(e,n,r,i,a,o)}catch(e){if(e.code===`EAGAIN`&&s<10){s++;continue}throw e}}})(e.readSync):e.readSync;function t(e){e.lchmod=function(t,n,i){e.open(t,r.O_WRONLY|r.O_SYMLINK,n,function(t,r){if(t){i&&i(t);return}e.fchmod(r,n,function(t){e.close(r,function(e){i&&i(t||e)})})})},e.lchmodSync=function(t,n){var i=e.openSync(t,r.O_WRONLY|r.O_SYMLINK,n),a=!0,o;try{o=e.fchmodSync(i,n),a=!1}finally{if(a)try{e.closeSync(i)}catch{}else e.closeSync(i)}return o}}function n(e){r.hasOwnProperty(`O_SYMLINK`)&&e.futimes?(e.lutimes=function(t,n,i,a){e.open(t,r.O_SYMLINK,function(t,r){if(t){a&&a(t);return}e.futimes(r,n,i,function(t){e.close(r,function(e){a&&a(t||e)})})})},e.lutimesSync=function(t,n,i){var a=e.openSync(t,r.O_SYMLINK),o,s=!0;try{o=e.futimesSync(a,n,i),s=!1}finally{if(s)try{e.closeSync(a)}catch{}else e.closeSync(a)}return o}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}function i(t){return t&&function(n,r,i){return t.call(e,n,r,function(e){d(e)&&(e=null),i&&i.apply(this,arguments)})}}function a(t){return t&&function(n,r){try{return t.call(e,n,r)}catch(e){if(!d(e))throw e}}}function s(t){return t&&function(n,r,i,a){return t.call(e,n,r,i,function(e){d(e)&&(e=null),a&&a.apply(this,arguments)})}}function c(t){return t&&function(n,r,i){try{return t.call(e,n,r,i)}catch(e){if(!d(e))throw e}}}function l(t){return t&&function(n,r,i){typeof r==`function`&&(i=r,r=null);function a(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),i&&i.apply(this,arguments)}return r?t.call(e,n,r,a):t.call(e,n,a)}}function u(t){return t&&function(n,r){var i=r?t.call(e,n,r):t.call(e,n);return i&&(i.uid<0&&(i.uid+=4294967296),i.gid<0&&(i.gid+=4294967296)),i}}function d(e){return!(e&&e.code!==`ENOSYS`&&(process.getuid&&process.getuid()===0||e.code!==`EINVAL`&&e.code!==`EPERM`))}}})),Tn=t(((t,n)=>{var r=e(`stream`).Stream;n.exports=i;function i(e){return{ReadStream:t,WriteStream:n};function t(n,i){if(!(this instanceof t))return new t(n,i);r.call(this);var a=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags=`r`,this.mode=438,this.bufferSize=65536,i||={};for(var o=Object.keys(i),s=0,c=o.length;s<c;s++){var l=o[s];this[l]=i[l]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!=`number`)throw TypeError(`start must be a Number`);if(this.end===void 0)this.end=1/0;else if(typeof this.end!=`number`)throw TypeError(`end must be a Number`);if(this.start>this.end)throw Error(`start must be <= end`);this.pos=this.start}if(this.fd!==null){process.nextTick(function(){a._read()});return}e.open(this.path,this.flags,this.mode,function(e,t){if(e){a.emit(`error`,e),a.readable=!1;return}a.fd=t,a.emit(`open`,t),a._read()})}function n(t,i){if(!(this instanceof n))return new n(t,i);r.call(this),this.path=t,this.fd=null,this.writable=!0,this.flags=`w`,this.encoding=`binary`,this.mode=438,this.bytesWritten=0,i||={};for(var a=Object.keys(i),o=0,s=a.length;o<s;o++){var c=a[o];this[c]=i[c]}if(this.start!==void 0){if(typeof this.start!=`number`)throw TypeError(`start must be a Number`);if(this.start<0)throw Error(`start must be >= zero`);this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}})),En=t(((e,t)=>{t.exports=r;var n=Object.getPrototypeOf||function(e){return e.__proto__};function r(e){if(typeof e!=`object`||!e)return e;if(e instanceof Object)var t={__proto__:n(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}),t}})),Dn=t(((t,n)=>{var r=e(`fs`),i=wn(),a=Tn(),o=En(),s=e(`util`),c,l;typeof Symbol==`function`&&typeof Symbol.for==`function`?(c=Symbol.for(`graceful-fs.queue`),l=Symbol.for(`graceful-fs.previous`)):(c=`___graceful-fs.queue`,l=`___graceful-fs.previous`);function u(){}function d(e,t){Object.defineProperty(e,c,{get:function(){return t}})}var f=u;s.debuglog?f=s.debuglog(`gfs4`):/\bgfs4\b/i.test(process.env.NODE_DEBUG||``)&&(f=function(){var e=s.format.apply(s,arguments);e=`GFS4: `+e.split(/\n/).join(`
|
|
5
|
-
GFS4: `),console.error(e)}),r[c]||(d(r,global[c]||[]),r.close=(function(e){function t(t,n){return e.call(r,t,function(e){e||g(),typeof n==`function`&&n.apply(this,arguments)})}return Object.defineProperty(t,l,{value:e}),t})(r.close),r.closeSync=(function(e){function t(t){e.apply(r,arguments),g()}return Object.defineProperty(t,l,{value:e}),t})(r.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||``)&&process.on(`exit`,function(){f(r[c]),e(`assert`).equal(r[c].length,0)})),global[c]||d(global,r[c]),n.exports=p(o(r)),process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!r.__patched&&(n.exports=p(r),r.__patched=!0);function p(e){i(e),e.gracefulify=p,e.createReadStream=w,e.createWriteStream=T;var t=e.readFile;e.readFile=n;function n(e,n,r){return typeof n==`function`&&(r=n,n=null),i(e,n,r);function i(e,n,r,a){return t(e,n,function(t){t&&(t.code===`EMFILE`||t.code===`ENFILE`)?m([i,[e,n,r],t,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var r=e.writeFile;e.writeFile=o;function o(e,t,n,i){return typeof n==`function`&&(i=n,n=null),a(e,t,n,i);function a(e,t,n,i,o){return r(e,t,n,function(r){r&&(r.code===`EMFILE`||r.code===`ENFILE`)?m([a,[e,t,n,i],r,o||Date.now(),Date.now()]):typeof i==`function`&&i.apply(this,arguments)})}}var s=e.appendFile;s&&(e.appendFile=c);function c(e,t,n,r){return typeof n==`function`&&(r=n,n=null),i(e,t,n,r);function i(e,t,n,r,a){return s(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var l=e.copyFile;l&&(e.copyFile=u);function u(e,t,n,r){return typeof n==`function`&&(r=n,n=0),i(e,t,n,r);function i(e,t,n,r,a){return l(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var d=e.readdir;e.readdir=h;var f=/^v[0-5]\./;function h(e,t,n){typeof t==`function`&&(n=t,t=null);var r=f.test(process.version)?function(e,t,n,r){return d(e,i(e,t,n,r))}:function(e,t,n,r){return d(e,t,i(e,t,n,r))};return r(e,t,n);function i(e,t,n,i){return function(a,o){a&&(a.code===`EMFILE`||a.code===`ENFILE`)?m([r,[e,t,n],a,i||Date.now(),Date.now()]):(o&&o.sort&&o.sort(),typeof n==`function`&&n.call(this,a,o))}}}if(process.version.substr(0,4)===`v0.8`){var g=a(e);x=g.ReadStream,C=g.WriteStream}var _=e.ReadStream;_&&(x.prototype=Object.create(_.prototype),x.prototype.open=S);var v=e.WriteStream;v&&(C.prototype=Object.create(v.prototype),C.prototype.open=ee),Object.defineProperty(e,"ReadStream",{get:function(){return x},set:function(e){x=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return C},set:function(e){C=e},enumerable:!0,configurable:!0});var y=x;Object.defineProperty(e,"FileReadStream",{get:function(){return y},set:function(e){y=e},enumerable:!0,configurable:!0});var b=C;Object.defineProperty(e,"FileWriteStream",{get:function(){return b},set:function(e){b=e},enumerable:!0,configurable:!0});function x(e,t){return this instanceof x?(_.apply(this,arguments),this):x.apply(Object.create(x.prototype),arguments)}function S(){var e=this;ne(e.path,e.flags,e.mode,function(t,n){t?(e.autoClose&&e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n),e.read())})}function C(e,t){return this instanceof C?(v.apply(this,arguments),this):C.apply(Object.create(C.prototype),arguments)}function ee(){var e=this;ne(e.path,e.flags,e.mode,function(t,n){t?(e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n))})}function w(t,n){return new e.ReadStream(t,n)}function T(t,n){return new e.WriteStream(t,n)}var te=e.open;e.open=ne;function ne(e,t,n,r){return typeof n==`function`&&(r=n,n=null),i(e,t,n,r);function i(e,t,n,r,a){return te(e,t,n,function(o,s){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}return e}function m(e){f(`ENQUEUE`,e[0].name,e[1]),r[c].push(e),_()}var h;function g(){for(var e=Date.now(),t=0;t<r[c].length;++t)r[c][t].length>2&&(r[c][t][3]=e,r[c][t][4]=e);_()}function _(){if(clearTimeout(h),h=void 0,r[c].length!==0){var e=r[c].shift(),t=e[0],n=e[1],i=e[2],a=e[3],o=e[4];if(a===void 0)f(`RETRY`,t.name,n),t.apply(null,n);else if(Date.now()-a>=6e4){f(`TIMEOUT`,t.name,n);var s=n.pop();typeof s==`function`&&s.call(null,i)}else{var l=Date.now()-o,u=Math.max(o-a,1);l>=Math.min(u*1.2,100)?(f(`RETRY`,t.name,n),t.apply(null,n.concat([a]))):r[c].push(e)}h===void 0&&(h=setTimeout(_,0))}}})),On=t(((e,t)=>{function n(e,t){typeof t==`boolean`&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}t.exports=n,n.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},n.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},n.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error(`RetryOperation timeout occurred`)),!1;this._errors.push(e);var n=this._timeouts.shift();if(n===void 0){if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),n=this._timeouts.shift();else return!1}var r=this,i=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},n);return this._options.unref&&i.unref(),!0},n.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){n._operationTimeoutCb()},n._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},n.prototype.try=function(e){console.log(`Using RetryOperation.try() is deprecated`),this.attempt(e)},n.prototype.start=function(e){console.log(`Using RetryOperation.start() is deprecated`),this.attempt(e)},n.prototype.start=n.prototype.try,n.prototype.errors=function(){return this._errors},n.prototype.attempts=function(){return this._attempts},n.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,n=0,r=0;r<this._errors.length;r++){var i=this._errors[r],a=i.message,o=(e[a]||0)+1;e[a]=o,o>=n&&(t=i,n=o)}return t}})),kn=t((e=>{var t=On();e.operation=function(n){return new t(e.timeouts(n),{forever:n&&n.forever,unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},e.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var n in e)t[n]=e[n];if(t.minTimeout>t.maxTimeout)throw Error(`minTimeout is greater than maxTimeout`);for(var r=[],i=0;i<t.retries;i++)r.push(this.createTimeout(i,t));return e&&e.forever&&!r.length&&r.push(this.createTimeout(i,t)),r.sort(function(e,t){return e-t}),r},e.createTimeout=function(e,t){var n=t.randomize?Math.random()+1:1,r=Math.round(n*t.minTimeout*t.factor**+e);return r=Math.min(r,t.maxTimeout),r},e.wrap=function(t,n,r){if(n instanceof Array&&(r=n,n=null),!r)for(var i in r=[],t)typeof t[i]==`function`&&r.push(i);for(var a=0;a<r.length;a++){var o=r[a],s=t[o];t[o]=function(r){var i=e.operation(n),a=Array.prototype.slice.call(arguments,1),o=a.pop();a.push(function(e){i.retry(e)||(e&&(arguments[0]=i.mainError()),o.apply(this,arguments))}),i.attempt(function(){r.apply(t,a)})}.bind(t,s),t[o].options=n}}})),An=t(((e,t)=>{t.exports=kn()})),jn=t(((e,t)=>{let n=Symbol();function r(e,t,r){let i=t[n];if(i)return t.stat(e,(e,t)=>{if(e)return r(e);r(null,t.mtime,i)});let a=new Date(Math.ceil(Date.now()/1e3)*1e3+5);t.utimes(e,a,a,i=>{if(i)return r(i);t.stat(e,(e,i)=>{if(e)return r(e);let a=i.mtime.getTime()%1e3==0?`s`:`ms`;Object.defineProperty(t,n,{value:a}),r(null,i.mtime,a)})})}function i(e){let t=Date.now();return e===`s`&&(t=Math.ceil(t/1e3)*1e3),new Date(t)}t.exports.probe=r,t.exports.getMtime=i})),Mn=t(((t,n)=>{let r=e(`path`),i=Dn(),a=An(),o=F(),s=jn(),c={};function l(e,t){return t.lockfilePath||`${e}.lock`}function u(e,t,n){if(!t.realpath)return n(null,r.resolve(e));t.fs.realpath(e,n)}function d(e,t,n){let r=l(e,t);t.fs.mkdir(r,i=>{if(!i)return s.probe(r,t.fs,(e,i,a)=>{if(e)return t.fs.rmdir(r,()=>{}),n(e);n(null,i,a)});if(i.code!==`EEXIST`)return n(i);if(t.stale<=0)return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));t.fs.stat(r,(r,i)=>{if(r)return r.code===`ENOENT`?d(e,{...t,stale:0},n):n(r);if(!f(i,t))return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));p(e,t,r=>{if(r)return n(r);d(e,{...t,stale:0},n)})})})}function f(e,t){return e.mtime.getTime()<Date.now()-t.stale}function p(e,t,n){t.fs.rmdir(l(e,t),e=>{if(e&&e.code!==`ENOENT`)return n(e);n()})}function m(e,t){let n=c[e];n.updateTimeout||(n.updateDelay=n.updateDelay||t.update,n.updateTimeout=setTimeout(()=>{n.updateTimeout=null,t.fs.stat(n.lockfilePath,(r,i)=>{let a=n.lastUpdate+t.stale<Date.now();if(r)return r.code===`ENOENT`||a?h(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,m(e,t));if(n.mtime.getTime()!==i.mtime.getTime())return h(e,n,Object.assign(Error(`Unable to update lock within the stale threshold`),{code:`ECOMPROMISED`}));let o=s.getMtime(n.mtimePrecision);t.fs.utimes(n.lockfilePath,o,o,r=>{let i=n.lastUpdate+t.stale<Date.now();if(!n.released){if(r)return r.code===`ENOENT`||i?h(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,m(e,t));n.mtime=o,n.lastUpdate=Date.now(),n.updateDelay=null,m(e,t)}})})},n.updateDelay),n.updateTimeout.unref&&n.updateTimeout.unref())}function h(e,t,n){t.released=!0,t.updateTimeout&&clearTimeout(t.updateTimeout),c[e]===t&&delete c[e],t.options.onCompromised(n)}function g(e,t,n){t={stale:1e4,update:null,realpath:!0,retries:0,fs:i,onCompromised:e=>{throw e},...t},t.retries=t.retries||0,t.retries=typeof t.retries==`number`?{retries:t.retries}:t.retries,t.stale=Math.max(t.stale||0,2e3),t.update=t.update==null?t.stale/2:t.update||0,t.update=Math.max(Math.min(t.update,t.stale/2),1e3),u(e,t,(e,r)=>{if(e)return n(e);let i=a.operation(t.retries);i.attempt(()=>{d(r,t,(e,a,o)=>{if(i.retry(e))return;if(e)return n(i.mainError());let s=c[r]={lockfilePath:l(r,t),mtime:a,mtimePrecision:o,options:t,lastUpdate:Date.now()};m(r,t),n(null,e=>{if(s.released)return e&&e(Object.assign(Error(`Lock is already released`),{code:`ERELEASED`}));_(r,{...t,realpath:!1},e)})})})})}function _(e,t,n){t={fs:i,realpath:!0,...t},u(e,t,(e,r)=>{if(e)return n(e);let i=c[r];if(!i)return n(Object.assign(Error(`Lock is not acquired/owned by you`),{code:`ENOTACQUIRED`}));i.updateTimeout&&clearTimeout(i.updateTimeout),i.released=!0,delete c[r],p(r,t,n)})}function v(e,t,n){t={stale:1e4,realpath:!0,fs:i,...t},t.stale=Math.max(t.stale||0,2e3),u(e,t,(e,r)=>{if(e)return n(e);t.fs.stat(l(r,t),(e,r)=>e?e.code===`ENOENT`?n(null,!1):n(e):n(null,!f(r,t)))})}function y(){return c}o(()=>{for(let e in c){let t=c[e].options;try{t.fs.rmdirSync(l(e,t))}catch{}}}),n.exports.lock=g,n.exports.unlock=_,n.exports.check=v,n.exports.getLocks=y})),Nn=t(((e,t)=>{let n=Dn();function r(e){let t=[`mkdir`,`realpath`,`stat`,`rmdir`,`utimes`],n={...e};return t.forEach(t=>{n[t]=(...n)=>{let r=n.pop(),i;try{i=e[`${t}Sync`](...n)}catch(e){return r(e)}r(null,i)}}),n}function i(e){return(...t)=>new Promise((n,r)=>{t.push((e,t)=>{e?r(e):n(t)}),e(...t)})}function a(e){return(...t)=>{let n,r;if(t.push((e,t)=>{n=e,r=t}),e(...t),n)throw n;return r}}function o(e){if(e={...e},e.fs=r(e.fs||n),typeof e.retries==`number`&&e.retries>0||e.retries&&typeof e.retries.retries==`number`&&e.retries.retries>0)throw Object.assign(Error(`Cannot use retries with the sync api`),{code:`ESYNC`});return e}t.exports={toPromise:i,toSync:a,toSyncOptions:o}})),Pn=t(((e,t)=>{let n=Mn(),{toPromise:r,toSync:i,toSyncOptions:a}=Nn();async function o(e,t){let i=await r(n.lock)(e,t);return r(i)}function s(e,t){let r=i(n.lock)(e,a(t));return i(r)}function c(e,t){return r(n.unlock)(e,t)}function l(e,t){return i(n.unlock)(e,a(t))}function u(e,t){return r(n.check)(e,t)}function d(e,t){return i(n.check)(e,a(t))}t.exports=o,t.exports.lock=o,t.exports.unlock=c,t.exports.lockSync=s,t.exports.unlockSync=l,t.exports.check=u,t.exports.checkSync=d}))();function Fn(e){return be(`sha256`).update(e).digest(`hex`)}function In(e,t,n){return H(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function Ln(e,t,n){let r=[In(e,t)];n&&r.push(In(e,t,n));for(let e of r)try{return await R.access(e),!0}catch{}return!1}function Rn(e,t,n){return H(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function zn(e,t,n){let r=[Rn(e,t)];n&&r.push(Rn(e,t,n));for(let e of r)try{return await R.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function Bn(e,t,n){return H(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function Vn(e,t,n,r){return z.join(Bn(e,t,r),`${n}.json`)}async function Hn(e,t,n){let r=[Bn(e,t)];n&&r.push(Bn(e,t,n));for(let e of r){let t;try{t=await R.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await U(()=>R.unlink(z.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await R.rmdir(e).catch(()=>{})}}async function Un(e,t,n){let r=await Wn(e,t,n),i=Date.now();if(r.maxId)try{let e=ee(r.maxId.replace(/^evnt_/,``));i<=e&&(i=e+1)}catch{}return{eventId:`evnt_${$n(i)}`,createdAt:new Date(i)}}async function Wn(e,t,n){let r=[];try{r=await R.readdir(z.join(e,`events`))}catch(e){if(e.code!==`ENOENT`)throw e}let i=`${t}-`,a=[],o=null,s=0,c=!1,l=0;for(let e of r){if(!e.startsWith(i)||!e.endsWith(`.json`))continue;let t=e.slice(0,-5);if(!mt(t)&&!(n&&pt(t,n)))continue;let r=ft(t).slice(i.length);l+=1,a.push(r),(!o||r>o)&&(o=r);let u=v(r);u!==null&&(c=!0,u>s&&(s=u))}return{maxId:o,usesSlots:c,maxSlot:s,count:l,ids:a}}function Gn(e,t){return z.join(e,`hooks`,`tokens`,`${Fn(t)}.json`)}const Kn=I.compile(I.object({hookId:I.string().optional(),runId:I.string(),eventId:I.string().optional(),tokenRetentionUntil:I.coerce.date().optional()}));async function qn(e){try{return await J(e,Kn)}catch(e){if(e instanceof SyntaxError||e instanceof I.ZodError)return null;throw e}}async function Jn(e,t,n){let r=Gn(e,t);await R.mkdir(z.dirname(r),{recursive:!0});let i=new AbortController,a;try{a=await(0,Pn.lock)(r,{realpath:!1,stale:3e4,update:1e3,retries:{retries:350,factor:1,minTimeout:100,maxTimeout:100},onCompromised(e){i.abort(new O(`Hook token claim lock was compromised`,{cause:e}))}})}catch(e){throw new O(`Could not acquire Hook token claim lock`,{cause:e})}let o;try{o=await n(i.signal),i.signal.throwIfAborted()}catch(e){throw i.signal.aborted||await a().catch(()=>{}),e}try{await a()}catch(e){throw new O(`Could not release Hook token claim lock`,{cause:e})}return o}function Yn(e,t,n){let r=be(`sha256`).update(`${t}\x00${n}`).digest(`hex`);return z.join(e,`hooks`,`resumes`,`${r}.json`)}async function Xn(e,t,n,r){await Jn(e,t,async i=>{let a=Gn(e,t),o=await qn(a);o&&o.runId===n&&o.hookId===r&&(i.throwIfAborted(),await Y(a))})}function Zn(e,t,n,r){let i=be(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return z.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const Qn=T(`@workflow/world-local//storageMonotonicUlid`,1,()=>({next:ue(()=>Math.random())})),$n=e=>Qn.next(e),er=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=ft(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);if(i===-1){let e=r.replace(/\.json$/,``).replace(t,``);return te(e)}if(e===`step`)return null;let a=r.substring(i+1).replace(/\.json$/,``).replace(t,``);return te(a)}},tr=I.compile(I.object({runId:I.string()})),nr=I.compile(I.object({hookId:I.string(),tag:I.string().optional()}));function rr(e,t){return H(e,`hooks`,`token-index`,Fn(t))}function ir(e,t){return V(`hookId`,t),H(e,`hooks`,`id-index`,t)}function ar(e){return H(e,`hooks`,`by-run`)}function or(e){let t=ft(e);return t===e?void 0:e.slice(t.length+1)}function sr(e,t){return t?mt(e)||pt(e,t):mt(e)}async function cr(e){try{return await J(e,r)}catch(e){if(e instanceof SyntaxError||e instanceof I.ZodError)return null;throw e}}async function lr(e,t,n,r,i,a){V(`runId`,n),V(`eventId`,i),a!==void 0&&V(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([X(z.join(rr(e,t),o),s),X(z.join(ir(e,r),o),s)])}function ur(e,t,n,r){return W(e,`hooks/by-run`,`${t}-${n}`,r)}async function dr(e,t,n,r){await X(ur(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function fr(e,t,n,r){await Y(ur(e,t,n,r)),r&&await Y(ur(e,t,n))}async function pr(e,t){V(`runId`,t);let n=ar(e),r=`${t}-`,i=[];for(let e of await Z(n)){if(!e.startsWith(r))continue;let t=null;try{t=await J(z.join(n,`${e}.json`),nr)}catch(e){if(!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function mr(e,t){await Y(z.join(ar(e),`${t}.json`))}const hr=T(`@workflow/world-local//hookIndexEnsureCache`,1,()=>({ensuredBasedirs:new Map}));function gr(){hr.ensuredBasedirs.clear()}async function _r(e){let t=z.resolve(e),n=hr.ensuredBasedirs.get(t);return n||(n=yr(t).catch(e=>{throw hr.ensuredBasedirs.delete(t),e}),hr.ensuredBasedirs.set(t,n)),n}async function vr(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function yr(e){let t=z.join(e,`hooks`,`.hook-index-complete`);try{await R.access(t);return}catch{}let n=z.join(e,`events`);await vr(await Z(n),32,async t=>{let r=await cr(z.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 lr(e,i,r.runId,r.correlationId,r.eventId,or(t))}catch{}});let r=z.join(e,`hooks`);await vr(await Z(r),32,async t=>{let n=null;try{n=await J(z.join(r,`${t}.json`),x)}catch(e){if(!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}if(n)try{await dr(e,n.runId,n.hookId,or(t))}catch{}}),await X(t,``)}async function br(e,t,n,r){await _r(e);let i;try{i=t.kind===`token`?rr(e,t.token):ir(e,t.hookId)}catch{return null}let a=(await Z(i)).filter(e=>sr(e,r)).sort((e,t)=>ft(t).localeCompare(ft(e)));for(let t of a){let r=null;try{r=await J(z.join(i,`${t}.json`),tr)}catch(e){if(!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}if(!r)continue;let a=ft(t),o;try{o=W(e,`events`,`${r.runId}-${a}`,or(t))}catch{continue}let s=await cr(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function xr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Sr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Cr(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function wr(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function Tr(e){let{token:t,metadata:n,isWebhook:r,isSystem:i,tokenRetentionUntil:a}=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,tokenRetentionUntil:a}}function Er(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function Dr(e,t,n){let r=await G(e,`runs`,t,d,n);return r?D(r.status):!1}async function Or(e,t,n,r){let i=await br(e,t,e=>Er(e,n),r);if(!i||!Er(i,n))return null;if(await Dr(e,i.runId,r)){let e=i.eventData.tokenRetentionUntil;if(!e||e.getTime()<=Date.now())return null}return await Ln(e,i.correlationId,r)?null:i}async function kr(e,t,n){let r=Tr(t);return await X(Gn(e,r.token),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId,tokenRetentionUntil:t.eventData.tokenRetentionUntil})),await dr(e,r.runId,r.hookId,n),await X(W(e,`hooks`,r.hookId,n),JSON.stringify(r,K,2)),r}async function Ar(e,t,n){let r=await Or(e,{kind:`token`,token:t},e=>wr(e)===t,n);return r?kr(e,r,n):null}async function jr(e,t,n){let r=await Or(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?kr(e,r,n):null}function Mr(e,t){async function n(n){return await Ln(e,n.hookId,t)?!1:n.tokenRetentionUntil&&n.tokenRetentionUntil.getTime()>Date.now()?!0:!await Dr(e,n.runId,t)}async function r(r){let i=await qn(Gn(e,r));if(i?.hookId){try{let a=await G(e,`hooks`,i.hookId,x,t);if(a?.token===r){if(!await n(a))throw new he(r);return{...a,isWebhook:a.isWebhook??!0}}}catch(e){if(!ct.is(e))throw e}return null}let a=z.join(e,`hooks`),o=await Z(a);for(let e of o){let t=await J(z.join(a,`${e}.json`),x);if(t?.token===r){if(!await n(t))throw new he(r);return{...t,isWebhook:t.isWebhook??!0}}}return null}async function i(r,i){V(`hookId`,r);let a=await G(e,`hooks`,r,x,t);if(a&&!await n(a))throw new he(r);let o=a??await jr(e,r,t);if(!o)throw new he(r);let s=i?.resolveData||`all`;return Cr({...o,isWebhook:o.isWebhook??!0},s)}async function a(n){let i=await r(n)??await Ar(e,n,t);if(!i)throw new he(n);return i}async function o(t){let r=z.join(e,`hooks`),i=t.resolveData||`all`,a=await kt({directory:r,schema:x,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:async e=>t.runId&&e.runId!==t.runId?!1:n(e),getCreatedAt:()=>null,getId:e=>e.hookId});return{...a,data:a.data.map(e=>Cr(e,i))}}return{get:i,getByToken:a,list:o}}async function Nr(e,t){await _r(e);for(let n of await pr(e,t)){if(n.hookId){let r=null,i=null;try{i=W(e,`hooks`,n.hookId,n.tag),r=await J(i,x)}catch(e){if(!ct.is(e)&&!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}if(r&&i&&r.runId===t){if(r.tokenRetentionUntil&&r.tokenRetentionUntil.getTime()>Date.now())continue;await Xn(e,r.token,r.runId,r.hookId),await Y(Zn(e,r.token,r.runId,r.hookId)),await Y(i)}}await mr(e,n.fileId)}}const Pr=T(`@workflow/world-local//streamerMonotonicUlid`,1,()=>({next:ue(()=>Math.random())})),Fr=e=>Pr.next(e),Ir=I.compile(I.object({streams:I.array(I.string())}));function Lr(e){return e===1}function Rr(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function zr(e){return Lr(e[0])}function Br(e){return{eof:zr(e),chunk:Buffer.from(e.subarray(1))}}async function Vr(e){try{return await R.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function Hr(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 Ur(e,t){return V(`streamName`,t),z.join(e,t)}async function Wr(e,t,n){let r=Ur(e,t),i=await Vr(r),a=new Map;return Hr(a,i,`.json`),Hr(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&Hr(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}const Gr=`chnk_${`0`.repeat(26)}`;async function Kr(e,t,n){let r=z.join(e,`streams`,`chunks`),i=n?`.${n}`:``,a;try{V(`runId`,t),a=(await G(e,`streams/runs`,t,Ir,n))?.streams??[]}catch(e){qr(`streams of ${t}`,e);return}for(let e of a)try{let t=Ur(r,e);await xt(z.join(t,`${Gr}${i}.bin`),Rr({chunk:Buffer.from([]),eof:!0}),{overwrite:!0});for(let e of await Vr(t))e.startsWith(Gr)||(e.endsWith(`.bin`)||e.endsWith(`.json`))&&await U(()=>R.unlink(z.join(t,e))).catch(t=>{t.code!==`ENOENT`&&qr(e,t)})}catch(t){qr(e,t)}}function qr(e,t){console.warn(`[world-local] Failed to purge stream data for ${e}:`,t instanceof Error?t.message:t)}function Jr(e,t){let n=t?`.${t}`:``,r=new Ie,i=new Set;async function a(n,r){V(`runId`,n),V(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=W(e,`streams/runs`,n,t),s=(await G(e,`streams/runs`,n,Ir,t))?.streams??[];s.includes(r)||(s.push(r),await q(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_${Fr()}`;await a(await t,i);let l=o(s),u=Rr({chunk:l,eof:!1});await xt(z.join(Ur(z.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_${Fr()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=Rr({chunk:t,eof:!1});return await xt(z.join(Ur(z.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_${Fr()}`;await a(await t,i),await xt(z.join(Ur(z.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),Rr({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return V(`runId`,n),(await G(e,`streams/runs`,n,Ir,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await Wr(z.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=z.join(c,`${e}${t}`);if(f<l){if(Lr(await Ct(n))){u=!0;break}f++;continue}if(d.length>=a){Lr(await Ct(n))?u=!0:f++;break}let r=Br(await St(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 Wr(z.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(Lr(await Ct(z.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=z.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 Wr(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`;Lr(await Ct(z.join(_,`${e}${t}`)))&&v--}let y=typeof a==`number`&&a<0?Math.max(0,v+a):a,b=!1;for(let t=y;t<h.length;t++){let r=h[t],i=r;if(n.has(i))continue;let a=g.get(r)??`.bin`,o=Br(await St(z.join(_,`${r}${a}`)));if(o?.eof===!0){b=!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(b){l=!0,s();try{e.close()}catch{}return}if(f){l=!0,s();try{e.close()}catch{}return}for(let e=0;e<y&&e<h.length;e++)n.add(h[e]);if(l){s();return}let x=!1;c=setInterval(async()=>{if(!x){x=!0;try{let{files:r,extMap:a}=await Wr(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=Br(await St(z.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{x=!1}}},100)},cancel(){l=!0,s()}})}}}}function Yr(e){let t=re(e);return t.unsupported&&console.warn(`[world-local] Ignoring unrecognized ${oe} value ${JSON.stringify(t.raw)}; keeping the run's data.`),t.mode===`none`}function Xr(e,t){return{...e,input:void 0,output:void 0,error:void 0,expiredAt:t}}async function Zr(e,t,n){await Promise.all([$r(z.join(e,`steps`),t,e=>{e.input=void 0,e.output=void 0,e.error=void 0}),$r(z.join(e,`events`),t,e=>{let t=e.eventData;if(t&&typeof t==`object`)for(let n of m(String(e.eventType)))delete t[n]}),ei(e,t),Kr(e,t,n)])}const Qr=I.record(I.string(),I.any()),$=I.preprocess(e=>{if(e&&typeof e==`object`&&`eventType`in e&&`eventData`in e){let t=e.eventData;if(t&&typeof t==`object`)for(let n of m(String(e.eventType)))n in t||(t[n]=void 0)}return e},r);async function $r(e,t,n){let r;try{r=await Z(e)}catch(t){ti(e,t);return}for(let i of r){if(!i.startsWith(`${t}-`))continue;let r=z.join(e,`${i}.json`);try{let e=await J(r,Qr);if(!e)continue;n(e),await q(r,e,{overwrite:!0})}catch(e){ti(r,e)}}}async function ei(e,t){let n;try{await _r(e),n=await pr(e,t)}catch(e){ti(`hooks of ${t}`,e);return}for(let r of n)if(r.hookId)try{let n=W(e,`hooks`,r.hookId,r.tag),i=await J(n,Qr);if(!i||i.runId!==t)continue;i.metadata=void 0,await q(n,i,{overwrite:!0})}catch(e){ti(r.hookId,e)}}function ti(e,t){console.warn(`[world-local] Failed to purge user data for ${e}:`,t instanceof Error?t.message:t)}const ni=new Ie;ni.setMaxListeners(0);function ri(){return b(`WORKFLOW_LOCAL_RUN_STATUS_POLL_INTERVAL_MS`,100,{integer:!0,min:1})}function ii(e){ni.emit(`run:${e}`)}function ai(e,t,n){return t<=0||n?.aborted?Promise.resolve():new Promise(r=>{let i=`run:${e}`,a=!1,o=()=>{a||(a=!0,clearTimeout(s),ni.off(i,o),n?.removeEventListener(`abort`,o),r())},s=setTimeout(o,t);ni.once(i,o),n?.addEventListener(`abort`,o,{once:!0})})}async function oi(e,t,n,r,i,a){if(D(a.status)||await zn(e,t))throw new pe(`Workflow run "${t}" is already in a terminal state`);let o=Vn(e,t,n);await X(o,r);try{if(await zn(e,t)||await wt(o,i)!==`linked`)throw new pe(`Workflow run "${t}" is already in a terminal state`)}finally{await R.unlink(o).catch(()=>{})}}async function si(e,t,n,r,i){V(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await X(Rn(e,t),``),await Hn(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},o=Yr(i.attributes),s=o?Xr(i,n):i;return await q(H(e,`runs`,`${t}.json`),s,{overwrite:!0}),ii(t),await Nr(e,t),o&&await Zr(e,t,void 0),{event:void 0,run:xr(s,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${$n()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:7},c=H(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await oi(e,t,i,JSON.stringify(s,K,2),c,r):await q(c,s),{event:E(s,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const ci=T(`@workflow/world-local//runFileLocks`,1,()=>({byKey:new Map}));function li(e,t){let n=ci.byKey.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{ci.byKey.get(e)===r.task&&ci.byKey.delete(e)}})();return r.task=i,ci.byKey.set(e,i),i}function ui(e,t){let n=(async(n,r)=>{V(`runId`,n);let i=await G(e,`runs`,n,d,t);if(!i)throw new fe(n);return xr(i,r?.resolveData??`all`)});return{get:n,waitForTerminalStatus:(async(e,t)=>{let r=Date.now()+(t?.timeoutMs??0);for(;;){let i=await n(e,t);if(D(i.status))return i;let a=r-Date.now();if(a<=0||t?.signal?.aborted)return i;await ai(e,Math.min(a,ri()),t?.signal)}}),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 fe)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 kt({directory:z.join(e,`runs`),schema:d,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status!==void 0&&!(Array.isArray(t.status)?t.status:[t.status]).includes(e.status)),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:er(`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)=>(V(`runId`,n),li(n,async()=>{let a=await G(e,`runs`,n,d,t);if(!a)throw new fe(n);try{ce(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof le,e}let o=g(a.attributes,r),s={...a,attributes:o,updatedAt:new Date};return await q(W(e,`runs`,n,t),s,{overwrite:!0}),{attributes:o}}))}}const di=864e5;function fi(){let e=Number(process.env.WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS??30);if(!Number.isFinite(e)||e<=0)throw new O(`WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS must be a positive number`,{status:400});return e*di}const pi=I.compile(I.object({eventId:I.string()})),mi=I.compile(I.object({runId:I.string(),resumeId:I.string(),hookId:I.string(),eventId:I.string(),payloadDigest:I.string().optional()}));function hi(e,t){return e.eventType===`hook_received`&&e.correlationId===t.hookId&&(e.resumeId===void 0||e.resumeId===t.resumeId)}async function gi(e,t,n,r){let i=await Wn(e,t,r);for(let a of i.ids){let i=await G(e,`events`,`${t}-${a}`,$,r);if(i&&i.resumeId===n.resumeId&&hi(i,n))return i}return null}async function _i(e,t,n){if(t.hookId&&await Ln(e,t.hookId,n))return!0;let r=await G(e,`runs`,t.runId,d,n);return r?D(r.status)?!t.tokenRetentionUntil||t.tokenRetentionUntil.getTime()<=Date.now():!1:!0}async function vi(e){try{return await J(e,pi)}catch(e){if(e instanceof SyntaxError||e instanceof I.ZodError)return null;throw e}}function yi(e){return C(e.eventId)?e.eventId:null}function bi(e,t){let n=ft(t).slice(e.length+1);return C(n)?n:null}async function xi(e,t,n){return(await kt({directory:z.join(e,`events`),schema:$,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:er(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function Si(e,t,n,r,i){let a=await G(e,`events`,`${t}-${r}`,$,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await G(e,`hooks`,n,x,i))return;let o=Tr(a);await lr(e,o.token,t,n,r,i),await dr(e,t,n,i),await X(W(e,`hooks`,n,i),JSON.stringify(o,K,2))}async function Ci(e,t,n,r,i){let a=Zn(e,t,n,r);return await X(a,JSON.stringify({eventId:i}))?i:(await vi(a))?.eventId??null}function wi(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 Ti(e,t){let n=z.join(e,`waits`),r=await Z(n);for(let e of r)e.startsWith(`${t}-`)&&await Y(z.join(n,`${e}.json`))}async function Ei(e,t,n,r){return li(t,async()=>{let i=(await J(W(e,`runs`,t,n),d))?.attributes??r.attributes,a={...r,attributes:i},o=D(a.status)&&Yr(i);return o&&(a=Xr(a,new Date)),await q(W(e,`runs`,t,n),a,{overwrite:!0}),D(a.status)&&ii(t),{run:a,purged:o}})}function Di(e,t){let n=fi(),r=4194304,i=new Map,m=new Map,_=new Map,b=0;function S(e){let t=i.get(e);if(!t)return;i.delete(e),b-=m.get(e)??0,m.delete(e);let n=_.get(t.runId);n?.delete(e),n?.size===0&&_.delete(t.runId)}function ee(e){for(let t of _.get(e)??[])S(t)}function w(){i.clear(),m.clear(),_.clear(),b=0,T.clear()}let T=new Map;function ne(e){return t?`${e}.${t}`:e}async function re(n,r){let i=`${n}-${y(r)}`;for(let n of t?[W(e,`events`,i,t),W(e,`events`,i)]:[W(e,`events`,i)])try{return await R.stat(n),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}async function oe(n,r){let i=ne(n),a=T.get(i);if(a===void 0||r?.rescan){let r=await Wn(e,n,t);a===void 0?(a=r.count>0&&!r.usesSlots?null:{published:r.maxSlot},T.set(i,a)):a!==null&&(a.published=Math.max(a.published,r.maxSlot))}if(a===null)return null;let o=Math.max(a.published+1,1,r?.atLeast??1);for(;await re(n,o);)a.published=Math.max(a.published,o),o+=1;return o}function le(e,t){let n=v(t);if(n===null)return;let r=T.get(ne(e));r&&(r.published=Math.max(r.published,n))}async function ue(e){let t=await oe(e);return t===null?`evnt_${$n()}`:y(t)}async function de(n){let r=await oe(n,{rescan:!0});return r===null?Un(e,n,t):{eventId:y(r),createdAt:new Date}}function A(e,t,n){if(n>r)return;for(;i.size>0&&(i.size>=1e3||b+n>r);){let e=i.keys().next().value;S(e)}i.set(e,t),m.set(e,n),b+=n;let a=_.get(t.runId)??new Set;a.add(e),_.set(t.runId,a)}function _e(e,t,n){if(s(e.eventType)){ee(e.runId);return}let i=Buffer.byteLength(n);if(i>r)return;let a=$.safeParse(JSON.parse(n,bt));a.success&&A(t,a.data,i)}async function ve(n){let r=n;for(let n=0;;n++){let i=W(e,`events`,`${r.runId}-${r.eventId}`,t),a=JSON.stringify(r,K,2),o=v(r.eventId);if(o===null)return await xt(i,a),_e(r,i,a),r;if(await X(i,a))return le(r.runId,r.eventId),_e(r,i,a),r;let s=await oe(r.runId,{rescan:n>0&&n%8==0,atLeast:o+1});Fe(s!==null),r={...r,eventId:y(s)}}}let ye=(t,n)=>kt({directory:z.join(e,`events`),schema:$,cachedItems:i,filePrefix:`${t}-`,sortOrder:n.sortOrder??`asc`,limit:n.limit,cursor:n.cursor,getCreatedAt:er(`evnt`),getId:e=>e.eventId,getSortKey:yi,getSortKeyFromFileId:e=>bi(t,e)}),j=new Map,M=new Map,N={clearCache:w,async create(r,i,m){if(i.eventType===`hook_created`&&i.eventData.tokenRetentionUntil!==void 0&&i.eventData.tokenRetentionUntil.getTime()>Date.now()+n)throw new O(`Hook minimum retention cannot exceed ${n/di} days in the Local World.`,{status:400});if(r!=null&&r!==``&&V(`runId`,r),`correlationId`in i&&typeof i.correlationId==`string`&&V(`correlationId`,i.correlationId),a(i.eventType)&&r&&i.correlationId){let e=t?`${r}-${i.correlationId}.${t}`:`${r}-${i.correlationId}`;return wi(j,e,_)}if(p(i.eventType)&&r&&i.correlationId){let e=t?`${r}-${i.correlationId}.hook.${t}`:`${r}-${i.correlationId}.hook`;return wi(M,e,_)}return _();async function _(){let n=``,p=!1,_=null,b=new Date,S;if(i.eventType===`run_created`&&(!r||r===``))S=`wrun_${$n()}`;else if(r)S=r;else throw Error(`runId is required for non-run_created events`);if(i.eventType===`run_created`&&r&&r!==``){let e=ae(S,`wrun_`);if(e)throw new O(e)}let w=i.specVersion??7,T=null;if(i.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(i.eventType)&&(T=await G(e,`runs`,S,d,t),i.eventType===`run_started`&&!T&&`eventData`in i&&i.eventData)){let n=i.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){ce(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:S,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,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 X(W(e,`runs`,S,t),JSON.stringify(r,K))){let e=await ue(S);await ve({eventType:`run_created`,runId:S,eventId:e,createdAt:b,specVersion:w,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),T=r}else T=await G(e,`runs`,S,d,t)}}if(n=await ue(S),!T&&(i.eventType===`run_failed`||i.eventType===`attr_set`||i.eventType===`run_started`))throw new fe(S);if(T){if(se(T.specVersion))throw new me(T.specVersion,7);if(h(T.specVersion))return si(e,S,i,T,m)}let ne=o(i),re=ne&&i.eventType===`step_started`;if(T&&D(T.status)){if(i.eventType===`run_cancelled`&&T.status===`cancelled`){let e=await ve({...i,runId:S,eventId:n,createdAt:b,specVersion:w}),t=m?.resolveData??`all`;return{event:E(e,t),run:T,...T?{maxEvents:ie()}:{}}}if(i.eventType===`run_started`)throw new pe(`Workflow run "${S}" is already in terminal state "${T.status}"`);if(s(i.eventType))throw new k(`Cannot transition run from terminal state "${T.status}"`);if(ne)throw new k(`Cannot create new entities on run in terminal state "${T.status}"`);if(i.eventType===`attr_set`)throw new k(`Cannot set attributes on run in terminal state "${T.status}"`)}let A=null;if(a(i.eventType)&&i.eventType!==`step_created`&&i.correlationId){if(A=await G(e,`steps`,`${S}-${i.correlationId}`,l,t),!A&&!re)throw new O(`Step "${i.correlationId}" not found`);if(re&&A)throw new k(`Step "${i.correlationId}" already created`);if(A){if(u(A.status))throw new k(`Cannot modify step in terminal state "${A.status}"`);if(T&&D(T.status)&&(A.status!==`running`||i.eventType===`step_started`))throw new pe(`Cannot ${i.eventType===`step_started`?`start`:`modify non-running`} step on run in terminal state "${T.status}"`)}}if(f(i.eventType)&&i.correlationId){if(i.eventType===`hook_received`&&m?.resumeId){let n=await J(Yn(e,S,m.resumeId),mi);if(n&&n.hookId===i.correlationId&&(!m.resumePayloadDigest||!n.payloadDigest||n.payloadDigest===m.resumePayloadDigest)){let r=await G(e,`events`,`${S}-${n.eventId}`,$,t),i=r&&hi(r,n)?r:await gi(e,S,n,t);if(i)return{event:i}}}if(i.eventType===`hook_received`&&await Ln(e,i.correlationId,t)||!await G(e,`hooks`,i.correlationId,x,t))throw new he(i.correlationId);if(i.eventType===`hook_received`&&m?.resumeId){let r=Yn(e,S,m.resumeId),a=async r=>{if(r.hookId!==i.correlationId)throw new k(`hook_received resumeId "${m.resumeId}" already recorded for a different hook`);if(m.resumePayloadDigest&&r.payloadDigest&&r.payloadDigest!==m.resumePayloadDigest)throw new k(`hook_received resumeId "${m.resumeId}" already recorded with a different payload`);let a=await G(e,`events`,`${S}-${r.eventId}`,$,t);if(a&&hi(a,r))return{event:a};let o=await gi(e,S,r,t);return o?{event:o}:(_=r.eventId,a||(n=r.eventId,p=!0),null)},o=await J(r,mi);if(o){let e=await a(o);if(e)return e}else if(p=!C(n),_=n,!await X(r,JSON.stringify({runId:S,resumeId:m.resumeId,hookId:i.correlationId,eventId:n,...m.resumePayloadDigest?{payloadDigest:m.resumePayloadDigest}:{}}))){_=null;let e=await J(r,mi);if(e){let t=await a(e);if(t)return t}}}}let j={...i,runId:S,eventId:n,createdAt:b,specVersion:w,...i.eventType===`hook_received`&&m?.resumeId?{resumeId:m.resumeId}:{}};if(i.eventType===`run_started`&&`eventData`in j&&delete j.eventData,re&&j.eventType===`step_started`&&j.eventData){let{input:e,...t}=j.eventData;j={...j,eventData:t}}let M,N=!1,P,F,I,be=!1,xe;if(s(i.eventType)&&T){await X(Rn(e,S,t),``),await Hn(e,S,t);let r=await de(S);n=r.eventId,j={...j,eventId:n,createdAt:r.createdAt}}if(i.eventType===`run_created`&&`eventData`in i){let n=i.eventData;if(ce(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),M={runId:S,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,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 X(W(e,`runs`,S,t),JSON.stringify(M,K,2)))throw new k(`Workflow run "${S}" already exists`)}else if(i.eventType===`run_started`){if(T){if(T.status===`running`){if(m?.skipPreload)return{run:T,maxEvents:ie()};let e=await ye(S,{limit:ie()});return{run:T,events:e.data,cursor:e.cursor,hasMore:e.hasMore,maxEvents:ie()}}let n=await Ei(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:T.startedAt??b,updatedAt:b,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});M=n.run,N=n.purged}}else if(i.eventType===`run_completed`&&`eventData`in i){let n=i.eventData;if(T){let r=await Ei(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:b,updatedAt:b,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});M=r.run,N=r.purged,await Promise.all([Nr(e,S),Ti(e,S)])}}else if(i.eventType===`run_failed`&&`eventData`in i){let n=i.eventData;if(T){let r=await Ei(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:b,updatedAt:b,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});M=r.run,N=r.purged,await Promise.all([Nr(e,S),Ti(e,S)])}}else if(i.eventType===`run_cancelled`){if(T){let n=await Ei(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:b,updatedAt:b,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});M=n.run,N=n.purged,await Promise.all([Nr(e,S),Ti(e,S)])}}else if(i.eventType===`attr_set`&&T)M=await li(S,async()=>{let n=await J(W(e,`runs`,S,t),d);if(!n)throw new fe(S);if(ce(i.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:i.eventData.allowReservedAttributes===!0}),i.correlationId&&i.eventData.writer.type===`workflow`&&!await X(H(e,`.locks`,`attributes`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``))throw new k(`Attribute event "${i.correlationId}" already exists`);let r={...n,attributes:g(n.attributes,i.eventData.changes),updatedAt:b};return await q(W(e,`runs`,S,t),r,{overwrite:!0}),r});else if(i.eventType===`step_created`&&`eventData`in i){if(!await X(H(e,`.locks`,`steps`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``))throw new k(`Step "${i.correlationId}" already created`);let n=i.eventData;P={runId:S,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:w},await q(W(e,`steps`,`${S}-${i.correlationId}`,t),P)}else if(i.eventType===`step_started`){if(!A&&re){let n=i.eventData;if(await X(H(e,`.locks`,`steps`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``)){let r={runId:S,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:w};await q(W(e,`steps`,`${S}-${i.correlationId}`,t),r);let a=await ue(S);await ve({eventType:`step_created`,runId:S,eventId:a,createdAt:b,specVersion:w,correlationId:i.correlationId,eventData:{stepName:n.stepName,input:n.input}}),A=r,be=!0}else throw new k(`Step "${i.correlationId}" already created`)}if(A){if(A.retryAfter&&A.retryAfter.getTime()>Date.now())throw new ge(`Cannot start step "${i.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((A.retryAfter.getTime()-Date.now())/1e3)});let n=`${S}-${i.correlationId}`,r=await G(e,`steps`,n,l,t);if(r&&u(r.status))throw new k(`Cannot modify step in terminal state "${r.status}"`);P={...A,status:`running`,startedAt:A.startedAt??b,attempt:A.attempt+1,retryAfter:void 0,updatedAt:b},await q(W(e,`steps`,n,t),P,{overwrite:!0})}}else if(i.eventType===`step_completed`&&`eventData`in i){let n=i.eventData;if(A){let r=`${S}-${i.correlationId}`;if(!await X(H(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new k(`Cannot modify step in terminal state`);P={...A,status:`completed`,output:n.result,completedAt:b,updatedAt:b},await q(W(e,`steps`,r,t),P,{overwrite:!0})}}else if(i.eventType===`step_failed`&&`eventData`in i){let n=i.eventData;if(A){let r=`${S}-${i.correlationId}`;if(!await X(H(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new k(`Cannot modify step in terminal state`);P={...A,status:`failed`,error:n.error,completedAt:b,updatedAt:b},await q(W(e,`steps`,r,t),P,{overwrite:!0})}}else if(i.eventType===`step_retrying`&&`eventData`in i){let n=i.eventData;if(A){let r=`${S}-${i.correlationId}`;P={...A,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:b},await q(W(e,`steps`,r,t),P,{overwrite:!0})}}else if(i.eventType===`hook_created`&&`eventData`in i){let r=i.eventData,a=Gn(e,r.token),o=JSON.stringify({token:r.token,hookId:i.correlationId,runId:S,eventId:n,tokenRetentionUntil:r.tokenRetentionUntil}),s=await Jn(e,r.token,async n=>{let s=await qn(a);return s||=(n.throwIfAborted(),await Y(a),await Ar(e,r.token,t),await qn(a)),s?s.runId===S&&s.hookId===i.correlationId?{status:`owned`,claim:s}:await _i(e,s,t)?(n.throwIfAborted(),await Y(a),s.hookId&&(await Y(W(e,`hooks`,s.hookId,t)),await Y(Zn(e,r.token,s.runId,s.hookId)),await fr(e,s.runId,s.hookId,t)),n.throwIfAborted(),Fe(await X(a,o)),{status:`claimed`}):{status:`conflict`,claim:s}:(n.throwIfAborted(),Fe(await X(a,o)),{status:`claimed`})});if(s.status===`owned`){let a=s.claim,o;if(a.eventId)o=a.eventId;else{let a=await xi(e,S,i.correlationId);if(a!==null)throw await Si(e,S,i.correlationId,a,t),new k(`Hook "${i.correlationId}" already created`);let s=await Ci(e,r.token,S,i.correlationId,n);if(s===null)throw new k(`Hook "${i.correlationId}" already created`);o=s}n=o,p=!0;let c=te(n.replace(/^evnt_/,``))??b;j={...i,eventData:{...i.eventData,tokenRetentionUntil:a.tokenRetentionUntil},runId:S,eventId:n,createdAt:c,specVersion:w}}if(s.status===`conflict`){let e=s.claim,t=await ve({eventType:`hook_conflict`,correlationId:i.correlationId,eventData:{token:r.token,conflictingRunId:e.runId},runId:S,eventId:n,createdAt:b,specVersion:w}),a=m?.resolveData??`all`,o=typeof m?.sinceCursor==`string`?await ye(S,{sortOrder:`asc`,cursor:m.sinceCursor}):void 0,c={event:E(t,a),run:M,step:P,hook:void 0};return o?{...c,events:a===`none`?o.data.map(e=>E(e,a)):o.data,cursor:o.cursor,hasMore:o.hasMore}:c}let c=j.eventData;F={runId:S,hookId:i.correlationId,token:c.token,metadata:c.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:j.createdAt,specVersion:w,isWebhook:c.isWebhook??!1,isSystem:c.isSystem??!1,tokenRetentionUntil:c.tokenRetentionUntil},xe=s.status===`owned`?{overwrite:!0}:void 0,await lr(e,r.token,S,i.correlationId,n,t)}else if(i.eventType===`hook_disposed`){if(!await X(In(e,i.correlationId,t),``))throw new k(`Hook "${i.correlationId}" already disposed`);let n=W(e,`hooks`,i.correlationId,t),r=await G(e,`hooks`,i.correlationId,x,t);r&&(await Xn(e,r.token,r.runId,r.hookId),await Y(Zn(e,r.token,r.runId,r.hookId))),await Y(n),await fr(e,S,i.correlationId,t)}else if(i.eventType===`wait_created`&&`eventData`in i){let n=`${S}-${i.correlationId}`;if(!await X(H(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new k(`Wait "${i.correlationId}" already exists`);let r=i.eventData;I={waitId:n,runId:S,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:b,updatedAt:b,specVersion:w},await q(W(e,`waits`,n,t),I)}else if(i.eventType===`wait_completed`){let n=`${S}-${i.correlationId}`,r=H(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await X(r,``))throw new k(`Wait "${i.correlationId}" already completed`);let a=await G(e,`waits`,n,c,t);if(!a)throw await R.unlink(r).catch(()=>{}),new O(`Wait "${i.correlationId}" not found`);I={...a,status:`completed`,completedAt:b,updatedAt:b},await q(W(e,`waits`,n,t),I,{overwrite:!0})}if(i.eventType===`hook_received`&&i.correlationId&&await Ln(e,i.correlationId,t))throw new he(i.correlationId);let Se=W(e,`events`,`${S}-${n}`,t),L=JSON.stringify(j,K,2),Ce=async r=>{let i=v(n);if(p||i===null)return!1;let a=await oe(S,{rescan:r>0&&r%8==0,atLeast:i+1});return a!==null&&(n=y(a),j={...j,eventId:n},Se=W(e,`events`,`${S}-${n}`,t),L=JSON.stringify(j,K,2),!0)},we=!1;for(let r=0;;r++){if(i.eventType===`hook_received`){let r=await zn(e,S,t),i=r?null:await G(e,`runs`,S,d,t);if(r||i&&D(i.status))throw new pe(`Workflow run "${S}" is already in a terminal state`);let a=Vn(e,S,`${n}.${$n()}`,t);if(!await X(a,L))throw new O(`Failed to stage event "${n}" for run "${S}": staging path already exists`);try{if(await zn(e,S,t))throw new pe(`Workflow run "${S}" is already in a terminal state`);let n=await wt(a,Se);if(n===`missing`)throw new pe(`Workflow run "${S}" is already in a terminal state`);we=n===`linked`}finally{await Y(a).catch(()=>{})}}else we=await X(Se,L);if(we){le(S,n);break}if(i.eventType===`hook_received`&&m?.resumeId){let r=await G(e,`events`,`${S}-${n}`,$,t);if(r&&hi(r,{runId:S,resumeId:m.resumeId,hookId:i.correlationId,eventId:n}))return{event:r}}if(!await Ce(r))break}if(!we)throw i.eventType===`hook_created`&&i.correlationId&&await Si(e,S,i.correlationId,n,t),new k(`Event "${n}" already exists for run "${S}"`);_e(j,Se,L),i.eventType===`hook_received`&&m?.resumeId&&_!==null&&_!==n&&await xt(Yn(e,S,m.resumeId),JSON.stringify({runId:S,resumeId:m.resumeId,hookId:i.correlationId,eventId:n,...m.resumePayloadDigest?{payloadDigest:m.resumePayloadDigest}:{}}),{overwrite:!0}),F&&i.eventType===`hook_created`&&(await dr(e,F.runId,F.hookId,t),await q(W(e,`hooks`,F.hookId,t),F,xe)),N&&(await Zr(e,S,t),ee(S));let Te=m?.resolveData??`all`,Ee=E(j,Te),De;if(i.eventType===`run_started`&&M&&!m?.skipPreload&&(De=await ye(S,{limit:ie()})),typeof m?.sinceCursor==`string`){let e=await ye(S,{sortOrder:`asc`,cursor:m.sinceCursor});De=Te===`none`?{...e,data:e.data.map(e=>E(e,Te))}:e}let Oe={event:Ee,run:M,step:P,hook:F,wait:I,...be?{stepCreated:!0}:{},...M?{maxEvents:ie()}:{}};return De?{...Oe,events:De.data,cursor:De.cursor,hasMore:De.hasMore}:Oe}},async get(n,r,i){V(`runId`,n),V(`eventId`,r);let a=await G(e,`events`,`${n}-${r}`,$,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);let o=i?.resolveData??`all`;return E(a,o)},async list(e){let{runId:t}=e;V(`runId`,t);let n=e.resolveData??`all`,r=await ye(t,{...e.pagination,limit:e.pagination?.limit??ie()});return n===`none`?{...r,data:r.data.map(e=>E(e,n))}:r},async listByCorrelationId(t){let n=t.correlationId;V(`correlationId`,n),V(`runId`,t.runId);let r=t.resolveData??`all`,a=await kt({directory:z.join(e,`events`),schema:$,cachedItems:i,filePrefix:`${t.runId}-`,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:er(`evnt`),getId:e=>e.eventId,getSortKey:yi,getSortKeyFromFileId:e=>bi(t.runId,e)});return r===`none`?{...a,data:a.data.map(e=>E(e,r))}:a}};async function P(e,t,n){if(!e.event)return e;let r=v(e.event.eventId);if(r===null||t<1||r<=t+1)return e;let i=r-t-1,a=await N.list({runId:e.event.runId,pagination:{cursor:`${Et}${y(t)}`,limit:i,sortOrder:`asc`},resolveData:n}),o=e.event.eventId,s=a.data.filter(e=>e.eventId<o);return{...e,events:s,cursor:null,hasMore:s.length<r-t-1}}let F=(async(e,t,n)=>{if(n?.eventCount===void 0)return N.create(e,t,n);let r=n.resolveData??`all`,i=await N.create(e,t,n);return typeof n.sinceCursor==`string`?i:P(i,n.eventCount,r)});return{...N,create:F}}function Oi(e,t){return{get:(async(n,r,i)=>{V(`runId`,n),V(`stepId`,r);let a=await G(e,`steps`,`${n}-${r}`,l,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return Sr(a,i?.resolveData??`all`)}),list:(async t=>{V(`runId`,t.runId);let n=t.resolveData??`all`,r=await kt({directory:z.join(e,`steps`),schema:l,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:er(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function ki(e,t){let n=ui(e,t),r=Oi(e,t),i=Di(e,t),a=Mr(e,t);return{runs:fn(`world.runs`,n),steps:fn(`world.steps`,r),events:fn(`world.events`,i),hooks:fn(`world.hooks`,a),clearCache:()=>i.clearCache()}}function Ai(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...rt.value,...t};Ve(n.dataDir);let r=n.tag,i=Cn(n),{clearCache:a,...o}=ki(n.dataDir,r),s=it(n);return{specVersion:ne(),capabilities:{hookRetention:{active:!0},hookResumeDedup:!0},...i,...o,...fn(`world.streams`,{...Jr(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Wt(n.dataDir),!s)return;let e=r?e=>pt(e,r):mt,t={...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))};await w(t,i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=z.join(e,`hooks`),i=await ht(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-CNT2vjZ4.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await J(z.join(t,n),a);r?.token&&(await Y(z.join(t,`tokens`,`${Fn(r.token)}.json`)),await Y(Zn(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=z.join(e,t),i=await ht(n,r);await Promise.all(i.map(e=>Y(z.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=z.join(e,`hooks`,t),i;try{i=await L.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=z.join(n,e.name),i=await ht(t,r);await Promise.all(i.map(e=>Y(z.join(t,e))))}))}await L.rm(z.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=z.join(e,`streams`,`chunks`),s;try{s=await L.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=z.join(o,e.name),n=await gt(t,r,`.bin`);await Promise.all(n.map(e=>L.unlink(z.join(t,e)).catch(()=>{})))})),ut()}else ut(),gr(),await ke(n.dataDir,{recursive:!0,force:!0}),await Wt(n.dataDir)}}}export{Pt as DataDirAccessError,Ft as DataDirVersionError,Le as UnwritableDataDirError,Ai as createWorld,Bt as ensureDataDir,Wt as initDataDir,It 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=Ge(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Ye(e){try{let{stdout:t}=await We(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Ue(t,e)}catch{return[]}}async function Xe(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await qe(e);case`darwin`:return await Je(e);case`win32`:return await Ye(e);default:return[]}}catch(e){return n(`[getAllPorts] Detection failed:`,e),[]}}const Ze=`${ye}/flow?__health`;async function Qe(e,t={}){let{endpoint:n=Ze,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 $e(e){let t=await Xe();if(t.length===0)return;if(t.length===1)return t[0];let r=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await Qe(t,e)})))).find(e=>e.isWorkflow);return r?r.port:(n(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function et(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const tt=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,nt=()=>process.env.WORKFLOW_LOCAL_BASE_URL,rt=et(()=>({dataDir:tt(),baseUrl:nt()}));function it(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 at(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??_e(`http://localhost`)}async function ot(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 _e(`http://localhost:${e.port}`);if(process.env.PORT)return _e(`http://localhost:${process.env.PORT}`);let t=await $e({endpoint:ve()});if(t)return _e(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const V=T(`@workflow/world-local//fs`,1,()=>({ulid:le(()=>Math.random()),createdFilesCache:new Set,createdDirectoriesCache:new Set}));function st(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var ct=class extends k{constructor(e,t){super(`Unsafe ${e} "${st(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function H(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new ct(e,t)}function U(e,...t){let n=B.resolve(e),r=B.resolve(e,...t);if(r!==n&&!r.startsWith(n+B.sep))throw new ct(`path`,t.join(`/`));return r}const lt=process.platform===`win32`;async function W(e,t=5){if(!lt)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`)}function ut(){V.createdFilesCache.clear(),V.createdDirectoriesCache.clear()}const dt=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function ft(e){return e.replace(dt,``)}function pt(e,t){return e.endsWith(`.${t}`)}function mt(e){return!dt.test(e)}function G(e,t,n,r){return H(`fileId`,n),r!==void 0&&H(`tag`,r),U(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function K(e,t,n,r,i){if(H(`fileId`,n),i!==void 0&&H(`tag`,i),i){let a=await X(U(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return X(U(e,t,`${n}.json`),r)}async function ht(e,t){let n=`.${t}.json`;try{return(await R.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function gt(e,t,n){let r=`.${t}${n}`;try{return(await R.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function _t(e){let t=B.resolve(e);if(!V.createdDirectoriesCache.has(t))try{await R.mkdir(t,{recursive:!0}),V.createdDirectoriesCache.add(t)}catch(e){let n=e.code;if(ze(n)&&!await vt(t))throw new Le(t,n)}}async function vt(e){try{return(await R.stat(e)).isDirectory()}catch{return!1}}async function yt(e,t){await _t(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return V.createdDirectoriesCache.delete(B.resolve(e)),await _t(e),t()}}function q(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function bt(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function J(e,t,n){return Y(e,JSON.stringify(t,q,2),n)}async function Y(e,t,n){if(!n?.overwrite){if(V.createdFilesCache.has(e))throw new j(`File ${e} already exists and 'overwrite' is false`);try{throw await R.access(e),V.createdFilesCache.add(e),new j(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${V.ulid()}`,i=!1;try{await yt(B.dirname(e),async()=>{await R.writeFile(r,t),i=!0,await W(()=>R.rename(r,e))}),V.createdFilesCache.add(e)}catch(e){throw i&&await W(()=>R.unlink(r),3).catch(()=>{}),e}}async function X(e,t){try{let n=await W(()=>R.readFile(e,`utf-8`));return t.parse(JSON.parse(n,bt))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function xt(e){return await R.readFile(e)}async function St(e){let t=await R.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 Z(e){try{await W(()=>R.unlink(e))}catch(e){if(e.code!==`ENOENT`)throw e}}async function Q(e,t){let n=`${e}.tmp.${V.ulid()}`,r=!1;try{return await yt(B.dirname(e),async()=>{await R.writeFile(n,t,{flag:`wx`}),r=!0;try{return await W(()=>R.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await W(()=>R.unlink(n),3).catch(()=>{})}}async function Ct(e,t){try{return await yt(B.dirname(t),()=>W(()=>R.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function wt(e){return Tt(e,`.json`)}async function Tt(e,t){try{return(await R.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}const Et=`key:`;function Dt(e){if(!e)return null;if(e.startsWith(`key:`))return{timestamp:new Date(0),id:null,sortKey:e.slice(4)};let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null,sortKey:null}}function Ot(e,t,n){return n?`${Et}${n}`:t?`${e.toISOString()}|${t}`:e.toISOString()}async function kt(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,getSortKey:f,getSortKeyFromFileId:p}=e;i!==void 0&&H(`filePrefix`,i);let m=B.resolve(t),h=await wt(m),g=i?h.filter(e=>e.startsWith(i)):h,_=a?g.filter(a):g,v=Dt(l),y=_;if(v?.sortKey&&p){let e=v.sortKey;y=_.filter(t=>{let n=p(t);if(n===null)return!0;let r=n.localeCompare(e);return s===`desc`?r<0:r>0})}else v&&!v.sortKey&&(y=_.filter(e=>{let t=u(`${e}.json`);if(t){let e=v.timestamp.getTime(),n=t.getTime();return v.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let b=[];for(let e=0;e<y.length;e+=32){let t=y.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=B.join(m,`${e}.json`),i;try{let e=r?.get(t);i=e===void 0?await X(t,n):structuredClone(e)}catch(t){if(t instanceof I.ZodError)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}return i&&o&&!await o(i)?null:i}));for(let e of i){if(!e)continue;let t=f?.(e)??null;if(v?.sortKey){if(t){let e=t.localeCompare(v.sortKey);if(s===`desc`?e>=0:e<=0)continue}b.push(e);continue}if(v){let t=e.createdAt.getTime(),n=v.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&v.id&&d&&d(e)>=v.id)continue}else if(t<n||t===n&&v.id&&d&&d(e)<=v.id)continue}b.push(e)}}b.sort((e,t)=>{if(f){let n=f(e),r=f(t);if(n!==null&&r!==null)return s===`asc`?n.localeCompare(r):r.localeCompare(n)}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 x=b.length>c,S=x?b.slice(0,c):b;return{data:S,cursor:S.length>0?Ot(S[S.length-1].createdAt,d?.(S[S.length-1]),f?.(S[S.length-1])):null,hasMore:x}}const At=T(`@workflow/world-local//packageInfo`,1,()=>({cached:null}));function jt(){return typeof import.meta.url==`string`&&import.meta.url?B.dirname(Se(import.meta.url)):null}async function Mt(){if(At.cached)return At.cached;let e=jt();if(e)try{let t=await Ee(B.join(e,`../package.json`),`utf-8`);return At.cached=JSON.parse(t),At.cached}catch{}return At.cached={name:`@workflow/world-local`,version:`5.0.0-beta.47`},At.cached}const Nt=`version.txt`;var Pt=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},Ft=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 It(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 Lt(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function Rt(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:It(t.substring(n+1))}}function zt(e,t){return`${e}@${Lt(t)}`}function Bt(e,t){console.log(`[world-local] Upgrading from version ${Lt(e)} to ${Lt(t)}`)}async function Vt(e){let t=B.resolve(e);try{await Te(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new Pt(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await Ce(t,we.R_OK)}catch(e){let n=e;throw new Pt(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=B.join(t,`.workflow-write-test-${Date.now()}`);try{await je(n,``),await Ae(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new Pt(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Ht(e){let t=B.join(B.resolve(e),Nt);try{return Rt(await Ee(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Ut(e,t){let n=B.join(B.resolve(e),Nt),r=zt((await Mt()).name,t);await je(n,r)}function Wt(e,t){return t||Lt(e)}async function Gt(e){await Vt(e);let t=await Mt(),n=It(t.version),r=await Ht(e);if(r===null){await Ut(e,n);return}let{version:i}=r;if(Lt(i)!==Lt(n))try{Bt(i,n),await Ut(e,n)}catch(e){let r=Wt(i,e instanceof Ft?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Lt(i)} to ${Lt(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}}const Kt=T(`@workflow/world-local//telemetry`,1,()=>({apiPromise:null,tracerPromise:null}));async function qt(){return Kt.apiPromise||=import(`../../@opentelemetry/api/index.js`).catch(()=>null),Kt.apiPromise}async function Jt(){return Kt.tracerPromise||=qt().then(e=>e?e.trace.getTracer(`workflow`):null),Kt.tracerPromise}async function Yt(e,...t){let[n,r]=await Promise.all([Jt(),qt()]),{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 Xt(e){let t=await qt();if(t)return t.SpanKind[e]}function Zt(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Qt=Zt(`peer.service`),$t=Zt(`rpc.system`),en=Zt(`rpc.service`),tn=Zt(`rpc.method`),nn=Zt(`workflow.run.id`),rn=Zt(`step.id`),an={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},on={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},sn=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function cn(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 ln(e,t){return typeof e[t]==`string`?e[t]:void 0}function un(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function dn(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 fn(e,t,n){let r=`${e}.${t}`,i={},a=on[r],o=a===void 0?sn.has(r)?un(n[0]):void 0:ln(n,a);if(o&&Object.assign(i,nn(o)),r===`world.steps.get`){let e=ln(n,1);e&&Object.assign(i,rn(e))}return i}function pn(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=cn(t);r&&(n=`${e}.${a} ${r}`)}return Yt(n,{kind:await Xt(`INTERNAL`)},async r=>{r?.setAttributes({...Qt(an.peerService),...$t(an.rpcSystem),...en(an.rpcService),...tn(n),...fn(e,a,t)});let o=await i(...t),s=dn(o);return s&&r?.setAttributes(nn(s)),o})}}return n}var mn=t((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}))(),hn=N(),gn=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,q))}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,bt)}};const _n=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,vn=2147483647,yn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3;function bn(e,t){let n=process.env[e];if(n===void 0||n===``)return t;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>=0?r:t}function xn(){return{bodyTimeout:bn(`WORKFLOW_LOCAL_BODY_TIMEOUT_MS`,3e4),connections:1e3,headersTimeout:bn(`WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`,3e4),keepAliveTimeout:3e4}}const Sn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function Cn(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(Sn))return!0;t=`cause`in t?t.cause:void 0}return!1}function wn(e){let t=xn(),r=S()?P({maxSockets:t.connections,keepAliveMs:t.keepAliveTimeout}):void 0,a=r?void 0:new hn.Agent(t),o=new gn,s=le(),c=new mn.Sema(yn),l=new AbortController,u=l.signal,d=new Map,f=new Map,p=async(l,p,m)=>{let h=[];if(m?.idempotencyKey){let e=d.get(m.idempotencyKey);if(e)return{messageId:e}}let g=o.serialize(p),{prefix:_}=i(l),v=ue.parse(`msg_${s()}`),y=p,b=y.runId??void 0,x=y.stepId??void 0;if(m?.idempotencyKey){let e=m.idempotencyKey;d.set(e,v),h.push(()=>{d.delete(e)})}return(async()=>{if(m?.delaySeconds&&m.delaySeconds>0){let e=Math.min(m.delaySeconds*1e3,vn);await Pe(e,void 0,{signal:u})}c.tryAcquire()||(n(`[world-local]: concurrency limit (${yn}) reached, waiting for queue to free up`),await c.acquire());let i=0;try{for(let n=0;n<256;n++){let o={...m?.headers,"content-type":`application/json`,"x-vqs-queue-name":l,"x-vqs-message-id":v,"x-vqs-message-attempt":String(i+1)},s=f.get(_),c,d;try{if(s)c=await s(new Request(ge(at(e),{type:`flow`}),{method:`POST`,headers:o,body:g}));else{let n=await ot(e),i=ge(n,{type:`flow`});c=r?await be(i,{method:`POST`,headers:new Headers(o),body:g,agents:r,signal:u,headersTimeoutMs:t.headersTimeout,bodyTimeoutMs:t.bodyTimeout}):await fetch(i,{method:`POST`,duplex:`half`,dispatcher:a,headers:o,body:g,signal:u})}i++,d=await c.text()}catch(e){let t=e?.name;if(u.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(Cn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${n+1}), retrying`,{queueName:l,messageId:v,...b&&{runId:b},...x&&{stepId:x},error:String(e)}),await Pe(5e3,void 0,{signal:u});continue}if(c.ok){try{let e=Number(JSON.parse(d).timeoutSeconds);if(Number.isFinite(e)&&e>=0){if(e>0){let t=Math.min(e*1e3,vn);await Pe(t,void 0,{signal:u})}continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${i}, HTTP ${c.status})`,{queueName:l,messageId:v,...b&&{runId:b},...x&&{stepId:x},handlerError:d}),await Pe(5e3,void 0,{signal:u})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:l,messageId:v,...b&&{runId:b},...x&&{stepId:x}})}finally{c.release()}})().catch(e=>{e?.name!==`AbortError`&&e?.name!==`ResponseAborted`&&(Cn(e)?console.error(`[local world] Queue operation failed: detected "${Sn}". 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:l,messageId:v,...b&&{runId:b},...x&&{stepId:x},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of h)e()}),{messageId:v}},m=I.compile(I.object({"x-vqs-queue-name":_,"x-vqs-message-id":ue,"x-vqs-message-attempt":I.coerce.number()}));return{queue:p,createQueueHandler:(e,t)=>async n=>{let r=m.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 gn().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a});if(typeof s==`object`&&s&&`invoke`in s&&s.invoke===!0)return Response.json({result:e});let n=null;return typeof e==`object`&&e&&`timeoutSeconds`in e&&typeof e.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,_n)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await Mt()).version}`,registerHandler(e,t){f.set(e,t)},async close(){u.aborted||(l.abort(),r&&M(r),await a?.close())}}}var Tn=t(((t,n)=>{var r=e(`constants`),i=process.cwd,a=null,o=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return a||=i.call(process),a};try{process.cwd()}catch{}if(typeof process.chdir==`function`){var s=process.chdir;process.chdir=function(e){a=null,s.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,s)}n.exports=c;function c(e){r.hasOwnProperty(`O_SYMLINK`)&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||n(e),e.chown=s(e.chown),e.fchown=s(e.fchown),e.lchown=s(e.lchown),e.chmod=i(e.chmod),e.fchmod=i(e.fchmod),e.lchmod=i(e.lchmod),e.chownSync=c(e.chownSync),e.fchownSync=c(e.fchownSync),e.lchownSync=c(e.lchownSync),e.chmodSync=a(e.chmodSync),e.fchmodSync=a(e.fchmodSync),e.lchmodSync=a(e.lchmodSync),e.stat=l(e.stat),e.fstat=l(e.fstat),e.lstat=l(e.lstat),e.statSync=u(e.statSync),e.fstatSync=u(e.fstatSync),e.lstatSync=u(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){}),o===`win32`&&(e.rename=typeof e.rename==`function`?(function(t){function n(n,r,i){var a=Date.now(),o=0;t(n,r,function s(c){if(c&&(c.code===`EACCES`||c.code===`EPERM`||c.code===`EBUSY`)&&Date.now()-a<6e4){setTimeout(function(){e.stat(r,function(e,a){e&&e.code===`ENOENT`?t(n,r,s):i(c)})},o),o<100&&(o+=10);return}i&&i(c)})}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.rename):e.rename),e.read=typeof e.read==`function`?(function(t){function n(n,r,i,a,o,s){var c;if(s&&typeof s==`function`){var l=0;c=function(u,d,f){if(u&&u.code===`EAGAIN`&&l<10)return l++,t.call(e,n,r,i,a,o,c);s.apply(this,arguments)}}return t.call(e,n,r,i,a,o,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.read):e.read,e.readSync=typeof e.readSync==`function`?(function(t){return function(n,r,i,a,o){for(var s=0;;)try{return t.call(e,n,r,i,a,o)}catch(e){if(e.code===`EAGAIN`&&s<10){s++;continue}throw e}}})(e.readSync):e.readSync;function t(e){e.lchmod=function(t,n,i){e.open(t,r.O_WRONLY|r.O_SYMLINK,n,function(t,r){if(t){i&&i(t);return}e.fchmod(r,n,function(t){e.close(r,function(e){i&&i(t||e)})})})},e.lchmodSync=function(t,n){var i=e.openSync(t,r.O_WRONLY|r.O_SYMLINK,n),a=!0,o;try{o=e.fchmodSync(i,n),a=!1}finally{if(a)try{e.closeSync(i)}catch{}else e.closeSync(i)}return o}}function n(e){r.hasOwnProperty(`O_SYMLINK`)&&e.futimes?(e.lutimes=function(t,n,i,a){e.open(t,r.O_SYMLINK,function(t,r){if(t){a&&a(t);return}e.futimes(r,n,i,function(t){e.close(r,function(e){a&&a(t||e)})})})},e.lutimesSync=function(t,n,i){var a=e.openSync(t,r.O_SYMLINK),o,s=!0;try{o=e.futimesSync(a,n,i),s=!1}finally{if(s)try{e.closeSync(a)}catch{}else e.closeSync(a)}return o}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}function i(t){return t&&function(n,r,i){return t.call(e,n,r,function(e){d(e)&&(e=null),i&&i.apply(this,arguments)})}}function a(t){return t&&function(n,r){try{return t.call(e,n,r)}catch(e){if(!d(e))throw e}}}function s(t){return t&&function(n,r,i,a){return t.call(e,n,r,i,function(e){d(e)&&(e=null),a&&a.apply(this,arguments)})}}function c(t){return t&&function(n,r,i){try{return t.call(e,n,r,i)}catch(e){if(!d(e))throw e}}}function l(t){return t&&function(n,r,i){typeof r==`function`&&(i=r,r=null);function a(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),i&&i.apply(this,arguments)}return r?t.call(e,n,r,a):t.call(e,n,a)}}function u(t){return t&&function(n,r){var i=r?t.call(e,n,r):t.call(e,n);return i&&(i.uid<0&&(i.uid+=4294967296),i.gid<0&&(i.gid+=4294967296)),i}}function d(e){return!(e&&e.code!==`ENOSYS`&&(process.getuid&&process.getuid()===0||e.code!==`EINVAL`&&e.code!==`EPERM`))}}})),En=t(((t,n)=>{var r=e(`stream`).Stream;n.exports=i;function i(e){return{ReadStream:t,WriteStream:n};function t(n,i){if(!(this instanceof t))return new t(n,i);r.call(this);var a=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags=`r`,this.mode=438,this.bufferSize=65536,i||={};for(var o=Object.keys(i),s=0,c=o.length;s<c;s++){var l=o[s];this[l]=i[l]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!=`number`)throw TypeError(`start must be a Number`);if(this.end===void 0)this.end=1/0;else if(typeof this.end!=`number`)throw TypeError(`end must be a Number`);if(this.start>this.end)throw Error(`start must be <= end`);this.pos=this.start}if(this.fd!==null){process.nextTick(function(){a._read()});return}e.open(this.path,this.flags,this.mode,function(e,t){if(e){a.emit(`error`,e),a.readable=!1;return}a.fd=t,a.emit(`open`,t),a._read()})}function n(t,i){if(!(this instanceof n))return new n(t,i);r.call(this),this.path=t,this.fd=null,this.writable=!0,this.flags=`w`,this.encoding=`binary`,this.mode=438,this.bytesWritten=0,i||={};for(var a=Object.keys(i),o=0,s=a.length;o<s;o++){var c=a[o];this[c]=i[c]}if(this.start!==void 0){if(typeof this.start!=`number`)throw TypeError(`start must be a Number`);if(this.start<0)throw Error(`start must be >= zero`);this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}})),Dn=t(((e,t)=>{t.exports=r;var n=Object.getPrototypeOf||function(e){return e.__proto__};function r(e){if(typeof e!=`object`||!e)return e;if(e instanceof Object)var t={__proto__:n(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}),t}})),On=t(((t,n)=>{var r=e(`fs`),i=Tn(),a=En(),o=Dn(),s=e(`util`),c,l;typeof Symbol==`function`&&typeof Symbol.for==`function`?(c=Symbol.for(`graceful-fs.queue`),l=Symbol.for(`graceful-fs.previous`)):(c=`___graceful-fs.queue`,l=`___graceful-fs.previous`);function u(){}function d(e,t){Object.defineProperty(e,c,{get:function(){return t}})}var f=u;s.debuglog?f=s.debuglog(`gfs4`):/\bgfs4\b/i.test(process.env.NODE_DEBUG||``)&&(f=function(){var e=s.format.apply(s,arguments);e=`GFS4: `+e.split(/\n/).join(`
|
|
5
|
+
GFS4: `),console.error(e)}),r[c]||(d(r,global[c]||[]),r.close=(function(e){function t(t,n){return e.call(r,t,function(e){e||g(),typeof n==`function`&&n.apply(this,arguments)})}return Object.defineProperty(t,l,{value:e}),t})(r.close),r.closeSync=(function(e){function t(t){e.apply(r,arguments),g()}return Object.defineProperty(t,l,{value:e}),t})(r.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||``)&&process.on(`exit`,function(){f(r[c]),e(`assert`).equal(r[c].length,0)})),global[c]||d(global,r[c]),n.exports=p(o(r)),process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!r.__patched&&(n.exports=p(r),r.__patched=!0);function p(e){i(e),e.gracefulify=p,e.createReadStream=w,e.createWriteStream=T;var t=e.readFile;e.readFile=n;function n(e,n,r){return typeof n==`function`&&(r=n,n=null),i(e,n,r);function i(e,n,r,a){return t(e,n,function(t){t&&(t.code===`EMFILE`||t.code===`ENFILE`)?m([i,[e,n,r],t,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var r=e.writeFile;e.writeFile=o;function o(e,t,n,i){return typeof n==`function`&&(i=n,n=null),a(e,t,n,i);function a(e,t,n,i,o){return r(e,t,n,function(r){r&&(r.code===`EMFILE`||r.code===`ENFILE`)?m([a,[e,t,n,i],r,o||Date.now(),Date.now()]):typeof i==`function`&&i.apply(this,arguments)})}}var s=e.appendFile;s&&(e.appendFile=c);function c(e,t,n,r){return typeof n==`function`&&(r=n,n=null),i(e,t,n,r);function i(e,t,n,r,a){return s(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var l=e.copyFile;l&&(e.copyFile=u);function u(e,t,n,r){return typeof n==`function`&&(r=n,n=0),i(e,t,n,r);function i(e,t,n,r,a){return l(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var d=e.readdir;e.readdir=h;var f=/^v[0-5]\./;function h(e,t,n){typeof t==`function`&&(n=t,t=null);var r=f.test(process.version)?function(e,t,n,r){return d(e,i(e,t,n,r))}:function(e,t,n,r){return d(e,t,i(e,t,n,r))};return r(e,t,n);function i(e,t,n,i){return function(a,o){a&&(a.code===`EMFILE`||a.code===`ENFILE`)?m([r,[e,t,n],a,i||Date.now(),Date.now()]):(o&&o.sort&&o.sort(),typeof n==`function`&&n.call(this,a,o))}}}if(process.version.substr(0,4)===`v0.8`){var g=a(e);x=g.ReadStream,C=g.WriteStream}var _=e.ReadStream;_&&(x.prototype=Object.create(_.prototype),x.prototype.open=S);var v=e.WriteStream;v&&(C.prototype=Object.create(v.prototype),C.prototype.open=ee),Object.defineProperty(e,"ReadStream",{get:function(){return x},set:function(e){x=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return C},set:function(e){C=e},enumerable:!0,configurable:!0});var y=x;Object.defineProperty(e,"FileReadStream",{get:function(){return y},set:function(e){y=e},enumerable:!0,configurable:!0});var b=C;Object.defineProperty(e,"FileWriteStream",{get:function(){return b},set:function(e){b=e},enumerable:!0,configurable:!0});function x(e,t){return this instanceof x?(_.apply(this,arguments),this):x.apply(Object.create(x.prototype),arguments)}function S(){var e=this;E(e.path,e.flags,e.mode,function(t,n){t?(e.autoClose&&e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n),e.read())})}function C(e,t){return this instanceof C?(v.apply(this,arguments),this):C.apply(Object.create(C.prototype),arguments)}function ee(){var e=this;E(e.path,e.flags,e.mode,function(t,n){t?(e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n))})}function w(t,n){return new e.ReadStream(t,n)}function T(t,n){return new e.WriteStream(t,n)}var te=e.open;e.open=E;function E(e,t,n,r){return typeof n==`function`&&(r=n,n=null),i(e,t,n,r);function i(e,t,n,r,a){return te(e,t,n,function(o,s){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}return e}function m(e){f(`ENQUEUE`,e[0].name,e[1]),r[c].push(e),_()}var h;function g(){for(var e=Date.now(),t=0;t<r[c].length;++t)r[c][t].length>2&&(r[c][t][3]=e,r[c][t][4]=e);_()}function _(){if(clearTimeout(h),h=void 0,r[c].length!==0){var e=r[c].shift(),t=e[0],n=e[1],i=e[2],a=e[3],o=e[4];if(a===void 0)f(`RETRY`,t.name,n),t.apply(null,n);else if(Date.now()-a>=6e4){f(`TIMEOUT`,t.name,n);var s=n.pop();typeof s==`function`&&s.call(null,i)}else{var l=Date.now()-o,u=Math.max(o-a,1);l>=Math.min(u*1.2,100)?(f(`RETRY`,t.name,n),t.apply(null,n.concat([a]))):r[c].push(e)}h===void 0&&(h=setTimeout(_,0))}}})),kn=t(((e,t)=>{function n(e,t){typeof t==`boolean`&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}t.exports=n,n.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},n.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},n.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error(`RetryOperation timeout occurred`)),!1;this._errors.push(e);var n=this._timeouts.shift();if(n===void 0){if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),n=this._timeouts.shift();else return!1}var r=this,i=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},n);return this._options.unref&&i.unref(),!0},n.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){n._operationTimeoutCb()},n._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},n.prototype.try=function(e){console.log(`Using RetryOperation.try() is deprecated`),this.attempt(e)},n.prototype.start=function(e){console.log(`Using RetryOperation.start() is deprecated`),this.attempt(e)},n.prototype.start=n.prototype.try,n.prototype.errors=function(){return this._errors},n.prototype.attempts=function(){return this._attempts},n.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,n=0,r=0;r<this._errors.length;r++){var i=this._errors[r],a=i.message,o=(e[a]||0)+1;e[a]=o,o>=n&&(t=i,n=o)}return t}})),An=t((e=>{var t=kn();e.operation=function(n){return new t(e.timeouts(n),{forever:n&&n.forever,unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},e.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var n in e)t[n]=e[n];if(t.minTimeout>t.maxTimeout)throw Error(`minTimeout is greater than maxTimeout`);for(var r=[],i=0;i<t.retries;i++)r.push(this.createTimeout(i,t));return e&&e.forever&&!r.length&&r.push(this.createTimeout(i,t)),r.sort(function(e,t){return e-t}),r},e.createTimeout=function(e,t){var n=t.randomize?Math.random()+1:1,r=Math.round(n*t.minTimeout*t.factor**+e);return r=Math.min(r,t.maxTimeout),r},e.wrap=function(t,n,r){if(n instanceof Array&&(r=n,n=null),!r)for(var i in r=[],t)typeof t[i]==`function`&&r.push(i);for(var a=0;a<r.length;a++){var o=r[a],s=t[o];t[o]=function(r){var i=e.operation(n),a=Array.prototype.slice.call(arguments,1),o=a.pop();a.push(function(e){i.retry(e)||(e&&(arguments[0]=i.mainError()),o.apply(this,arguments))}),i.attempt(function(){r.apply(t,a)})}.bind(t,s),t[o].options=n}}})),jn=t(((e,t)=>{t.exports=An()})),Mn=t(((e,t)=>{let n=Symbol();function r(e,t,r){let i=t[n];if(i)return t.stat(e,(e,t)=>{if(e)return r(e);r(null,t.mtime,i)});let a=new Date(Math.ceil(Date.now()/1e3)*1e3+5);t.utimes(e,a,a,i=>{if(i)return r(i);t.stat(e,(e,i)=>{if(e)return r(e);let a=i.mtime.getTime()%1e3==0?`s`:`ms`;Object.defineProperty(t,n,{value:a}),r(null,i.mtime,a)})})}function i(e){let t=Date.now();return e===`s`&&(t=Math.ceil(t/1e3)*1e3),new Date(t)}t.exports.probe=r,t.exports.getMtime=i})),Nn=t(((t,n)=>{let r=e(`path`),i=On(),a=jn(),o=F(),s=Mn(),c={};function l(e,t){return t.lockfilePath||`${e}.lock`}function u(e,t,n){if(!t.realpath)return n(null,r.resolve(e));t.fs.realpath(e,n)}function d(e,t,n){let r=l(e,t);t.fs.mkdir(r,i=>{if(!i)return s.probe(r,t.fs,(e,i,a)=>{if(e)return t.fs.rmdir(r,()=>{}),n(e);n(null,i,a)});if(i.code!==`EEXIST`)return n(i);if(t.stale<=0)return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));t.fs.stat(r,(r,i)=>{if(r)return r.code===`ENOENT`?d(e,{...t,stale:0},n):n(r);if(!f(i,t))return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));p(e,t,r=>{if(r)return n(r);d(e,{...t,stale:0},n)})})})}function f(e,t){return e.mtime.getTime()<Date.now()-t.stale}function p(e,t,n){t.fs.rmdir(l(e,t),e=>{if(e&&e.code!==`ENOENT`)return n(e);n()})}function m(e,t){let n=c[e];n.updateTimeout||(n.updateDelay=n.updateDelay||t.update,n.updateTimeout=setTimeout(()=>{n.updateTimeout=null,t.fs.stat(n.lockfilePath,(r,i)=>{let a=n.lastUpdate+t.stale<Date.now();if(r)return r.code===`ENOENT`||a?h(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,m(e,t));if(n.mtime.getTime()!==i.mtime.getTime())return h(e,n,Object.assign(Error(`Unable to update lock within the stale threshold`),{code:`ECOMPROMISED`}));let o=s.getMtime(n.mtimePrecision);t.fs.utimes(n.lockfilePath,o,o,r=>{let i=n.lastUpdate+t.stale<Date.now();if(!n.released){if(r)return r.code===`ENOENT`||i?h(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,m(e,t));n.mtime=o,n.lastUpdate=Date.now(),n.updateDelay=null,m(e,t)}})})},n.updateDelay),n.updateTimeout.unref&&n.updateTimeout.unref())}function h(e,t,n){t.released=!0,t.updateTimeout&&clearTimeout(t.updateTimeout),c[e]===t&&delete c[e],t.options.onCompromised(n)}function g(e,t,n){t={stale:1e4,update:null,realpath:!0,retries:0,fs:i,onCompromised:e=>{throw e},...t},t.retries=t.retries||0,t.retries=typeof t.retries==`number`?{retries:t.retries}:t.retries,t.stale=Math.max(t.stale||0,2e3),t.update=t.update==null?t.stale/2:t.update||0,t.update=Math.max(Math.min(t.update,t.stale/2),1e3),u(e,t,(e,r)=>{if(e)return n(e);let i=a.operation(t.retries);i.attempt(()=>{d(r,t,(e,a,o)=>{if(i.retry(e))return;if(e)return n(i.mainError());let s=c[r]={lockfilePath:l(r,t),mtime:a,mtimePrecision:o,options:t,lastUpdate:Date.now()};m(r,t),n(null,e=>{if(s.released)return e&&e(Object.assign(Error(`Lock is already released`),{code:`ERELEASED`}));_(r,{...t,realpath:!1},e)})})})})}function _(e,t,n){t={fs:i,realpath:!0,...t},u(e,t,(e,r)=>{if(e)return n(e);let i=c[r];if(!i)return n(Object.assign(Error(`Lock is not acquired/owned by you`),{code:`ENOTACQUIRED`}));i.updateTimeout&&clearTimeout(i.updateTimeout),i.released=!0,delete c[r],p(r,t,n)})}function v(e,t,n){t={stale:1e4,realpath:!0,fs:i,...t},t.stale=Math.max(t.stale||0,2e3),u(e,t,(e,r)=>{if(e)return n(e);t.fs.stat(l(r,t),(e,r)=>e?e.code===`ENOENT`?n(null,!1):n(e):n(null,!f(r,t)))})}function y(){return c}o(()=>{for(let e in c){let t=c[e].options;try{t.fs.rmdirSync(l(e,t))}catch{}}}),n.exports.lock=g,n.exports.unlock=_,n.exports.check=v,n.exports.getLocks=y})),Pn=t(((e,t)=>{let n=On();function r(e){let t=[`mkdir`,`realpath`,`stat`,`rmdir`,`utimes`],n={...e};return t.forEach(t=>{n[t]=(...n)=>{let r=n.pop(),i;try{i=e[`${t}Sync`](...n)}catch(e){return r(e)}r(null,i)}}),n}function i(e){return(...t)=>new Promise((n,r)=>{t.push((e,t)=>{e?r(e):n(t)}),e(...t)})}function a(e){return(...t)=>{let n,r;if(t.push((e,t)=>{n=e,r=t}),e(...t),n)throw n;return r}}function o(e){if(e={...e},e.fs=r(e.fs||n),typeof e.retries==`number`&&e.retries>0||e.retries&&typeof e.retries.retries==`number`&&e.retries.retries>0)throw Object.assign(Error(`Cannot use retries with the sync api`),{code:`ESYNC`});return e}t.exports={toPromise:i,toSync:a,toSyncOptions:o}})),Fn=t(((e,t)=>{let n=Nn(),{toPromise:r,toSync:i,toSyncOptions:a}=Pn();async function o(e,t){let i=await r(n.lock)(e,t);return r(i)}function s(e,t){let r=i(n.lock)(e,a(t));return i(r)}function c(e,t){return r(n.unlock)(e,t)}function l(e,t){return i(n.unlock)(e,a(t))}function u(e,t){return r(n.check)(e,t)}function d(e,t){return i(n.check)(e,a(t))}t.exports=o,t.exports.lock=o,t.exports.unlock=c,t.exports.lockSync=s,t.exports.unlockSync=l,t.exports.check=u,t.exports.checkSync=d}))();function In(e){return L(`sha256`).update(e).digest(`hex`)}function Ln(e,t,n){return U(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function Rn(e,t,n){let r=[Ln(e,t)];n&&r.push(Ln(e,t,n));for(let e of r){let t;try{t=await z.readFile(e,`utf8`)}catch{continue}if(t.trim()===``)return{committed:!0};try{let e=JSON.parse(t).forceClaimedBy;if(e&&typeof e.runId==`string`&&typeof e.hookId==`string`)return{committed:!0,forceClaimedBy:{runId:e.runId,hookId:e.hookId}}}catch{}return{committed:!0}}return{committed:!1}}async function zn(e,t,n){let r=[Ln(e,t)];n&&r.push(Ln(e,t,n));for(let e of r)try{return await z.access(e),!0}catch{}return!1}function Bn(e,t,n){return U(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function Vn(e,t,n){let r=[Bn(e,t)];n&&r.push(Bn(e,t,n));for(let e of r)try{return await z.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function Hn(e,t,n){return U(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function Un(e,t,n,r){return B.join(Hn(e,t,r),`${n}.json`)}async function Wn(e,t,n){let r=[Hn(e,t)];n&&r.push(Hn(e,t,n));for(let e of r){let t;try{t=await z.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await W(()=>z.unlink(B.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await z.rmdir(e).catch(()=>{})}}async function Gn(e,t,n){let r=await Kn(e,t,n),i=Date.now();if(r.maxId)try{let e=ee(r.maxId.replace(/^evnt_/,``));i<=e&&(i=e+1)}catch{}return{eventId:`evnt_${tr(i)}`,createdAt:new Date(i)}}async function Kn(e,t,n){let r=[];try{r=await z.readdir(B.join(e,`events`))}catch(e){if(e.code!==`ENOENT`)throw e}let i=`${t}-`,a=[],o=null,s=0,c=!1,l=0;for(let e of r){if(!e.startsWith(i)||!e.endsWith(`.json`))continue;let t=e.slice(0,-5);if(!mt(t)&&!(n&&pt(t,n)))continue;let r=ft(t).slice(i.length);l+=1,a.push(r),(!o||r>o)&&(o=r);let u=v(r);u!==null&&(c=!0,u>s&&(s=u))}return{maxId:o,usesSlots:c,maxSlot:s,count:l,ids:a}}function qn(e,t){return B.join(e,`hooks`,`tokens`,`${In(t)}.json`)}const Jn=I.compile(I.object({hookId:I.string().optional(),runId:I.string(),eventId:I.string().optional(),tokenRetentionUntil:I.coerce.date().optional(),claimedFrom:I.object({runId:I.string(),hookId:I.string(),workflowName:I.string().optional(),deploymentId:I.string().optional(),runSpecVersion:I.number().optional()}).optional()}));async function Yn(e){try{return await X(e,Jn)}catch(e){if(e instanceof SyntaxError||e instanceof I.ZodError)return null;throw e}}async function Xn(e,t,n){let r=qn(e,t);await z.mkdir(B.dirname(r),{recursive:!0});let i=new AbortController,a;try{a=await(0,Fn.lock)(r,{realpath:!1,stale:3e4,update:1e3,retries:{retries:350,factor:1,minTimeout:100,maxTimeout:100},onCompromised(e){i.abort(new k(`Hook token claim lock was compromised`,{cause:e}))}})}catch(e){throw new k(`Could not acquire Hook token claim lock`,{cause:e})}let o;try{o=await n(i.signal),i.signal.throwIfAborted()}catch(e){throw i.signal.aborted||await a().catch(()=>{}),e}try{await a()}catch(e){throw new k(`Could not release Hook token claim lock`,{cause:e})}return o}function Zn(e,t,n){let r=L(`sha256`).update(`${t}\x00${n}`).digest(`hex`);return B.join(e,`hooks`,`resumes`,`${r}.json`)}async function Qn(e,t,n,r){await Xn(e,t,async i=>{let a=qn(e,t),o=await Yn(a);o&&o.runId===n&&o.hookId===r&&(i.throwIfAborted(),await Z(a))})}function $n(e,t,n,r){let i=L(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return B.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const er=T(`@workflow/world-local//storageMonotonicUlid`,1,()=>({next:le(()=>Math.random())})),tr=e=>er.next(e),nr=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=ft(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);if(i===-1){let e=r.replace(/\.json$/,``).replace(t,``);return te(e)}if(e===`step`)return null;let a=r.substring(i+1).replace(/\.json$/,``).replace(t,``);return te(a)}},rr=I.compile(I.object({runId:I.string()})),ir=I.compile(I.object({hookId:I.string(),tag:I.string().optional()}));function ar(e,t){return U(e,`hooks`,`token-index`,In(t))}function or(e,t){return H(`hookId`,t),U(e,`hooks`,`id-index`,t)}function sr(e){return U(e,`hooks`,`by-run`)}function cr(e){let t=ft(e);return t===e?void 0:e.slice(t.length+1)}function lr(e,t){return t?mt(e)||pt(e,t):mt(e)}async function ur(e){try{return await X(e,r)}catch(e){if(e instanceof SyntaxError||e instanceof I.ZodError)return null;throw e}}async function dr(e,t,n,r,i,a){H(`runId`,n),H(`eventId`,i),a!==void 0&&H(`tag`,a);let o=a?`${n}-${i}.${a}.json`:`${n}-${i}.json`,s=JSON.stringify({runId:n});await Promise.all([Q(B.join(ar(e,t),o),s),Q(B.join(or(e,r),o),s)])}function fr(e,t,n,r){return G(e,`hooks/by-run`,`${t}-${n}`,r)}async function pr(e,t,n,r){await Q(fr(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function mr(e,t,n,r){await Z(fr(e,t,n,r)),r&&await Z(fr(e,t,n))}async function hr(e,t){H(`runId`,t);let n=sr(e),r=`${t}-`,i=[];for(let e of await wt(n)){if(!e.startsWith(r))continue;let t=null;try{t=await X(B.join(n,`${e}.json`),ir)}catch(e){if(!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function gr(e,t){await Z(B.join(sr(e),`${t}.json`))}const _r=T(`@workflow/world-local//hookIndexEnsureCache`,1,()=>({ensuredBasedirs:new Map}));function vr(){_r.ensuredBasedirs.clear()}async function yr(e){let t=B.resolve(e),n=_r.ensuredBasedirs.get(t);return n||(n=xr(t).catch(e=>{throw _r.ensuredBasedirs.delete(t),e}),_r.ensuredBasedirs.set(t,n)),n}async function br(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function xr(e){let t=B.join(e,`hooks`,`.hook-index-complete`);try{await z.access(t);return}catch{}let n=B.join(e,`events`);await br(await wt(n),32,async t=>{let r=await ur(B.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 dr(e,i,r.runId,r.correlationId,r.eventId,cr(t))}catch{}});let r=B.join(e,`hooks`);await br(await wt(r),32,async t=>{let n=null;try{n=await X(B.join(r,`${t}.json`),x)}catch(e){if(!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}if(n)try{await pr(e,n.runId,n.hookId,cr(t))}catch{}}),await Q(t,``)}async function Sr(e,t,n,r){await yr(e);let i;try{i=t.kind===`token`?ar(e,t.token):or(e,t.hookId)}catch{return null}let a=(e,t)=>{let n=ft(e);return n.startsWith(`${t}-`)?n.slice(t.length+1):n},o=(await wt(i)).filter(e=>lr(e,r)).sort((e,t)=>ft(t).localeCompare(ft(e)));for(let t of o){let r=null;try{r=await X(B.join(i,`${t}.json`),rr)}catch(e){if(!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}if(!r)continue;let o=a(t,r.runId),s;try{s=G(e,`events`,`${r.runId}-${o}`,cr(t))}catch{continue}let c=await ur(s);if(c&&c.eventType===`hook_created`&&typeof c.correlationId==`string`&&await n(c))return c}return null}function Cr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function wr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Tr(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function Er(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function Dr(e){let{token:t,metadata:n,isWebhook:r,isSystem:i,tokenRetentionUntil:a,forceClaimedFrom:o}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,...o!==void 0&&{claimedFrom:o},metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1,tokenRetentionUntil:a}}function Or(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function kr(e,t,n){let r=await K(e,`runs`,t,d,n);return r?O(r.status):!1}async function Ar(e,t,n,r){let i=async t=>{if(await kr(e,t.runId,r)){let e=t.eventData.tokenRetentionUntil;if(!e||e.getTime()<=Date.now())return!1}return!await zn(e,t.correlationId,r)},a=await Sr(e,t,e=>Or(e,n)&&i(e),r);return a&&Or(a,n)?a:null}async function jr(e,t,n){let r=Dr(t);return await Q(qn(e,r.token),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId,tokenRetentionUntil:t.eventData.tokenRetentionUntil,...r.claimedFrom&&{claimedFrom:r.claimedFrom}})),await pr(e,r.runId,r.hookId,n),await Q(G(e,`hooks`,r.hookId,n),JSON.stringify(r,q,2)),r}async function Mr(e,t,n){let r=await Ar(e,{kind:`token`,token:t},e=>Er(e)===t,n);return r?jr(e,r,n):null}async function Nr(e,t,n){let r=await Ar(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?jr(e,r,n):null}function Pr(e,t){async function n(n){return await zn(e,n.hookId,t)?!1:n.tokenRetentionUntil&&n.tokenRetentionUntil.getTime()>Date.now()?!0:!await kr(e,n.runId,t)}async function r(n){let r=await Rn(e,n.hookId,t);return r.committed&&r.forceClaimedBy!==void 0}async function i(i){let a=await Yn(qn(e,i));if(a?.hookId)try{let o=await K(e,`hooks`,a.hookId,x,t);if(o?.token===i){if(await n(o))return{...o,isWebhook:o.isWebhook??!0};if(!await r(o))throw new he(i)}else if(o)return null}catch(e){if(!ct.is(e))throw e;return null}let o=B.join(e,`hooks`),s=await wt(o),c=!1;for(let e of s){let t=await X(B.join(o,`${e}.json`),x);if(t?.token===i){if(await n(t))return{...t,isWebhook:t.isWebhook??!0};if(await r(t)){c=!0;continue}throw new he(i)}}if(c)throw new he(i);return null}async function a(r,i){H(`hookId`,r);let a=await K(e,`hooks`,r,x,t);if(a&&!await n(a))throw new he(r);let o=a??await Nr(e,r,t);if(!o)throw new he(r);let s=i?.resolveData||`all`;return Tr({...o,isWebhook:o.isWebhook??!0},s)}async function o(n){let r=await i(n)??await Mr(e,n,t);if(!r)throw new he(n);return r}async function s(t){let r=B.join(e,`hooks`),i=t.resolveData||`all`,a=await kt({directory:r,schema:x,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:async e=>t.runId&&e.runId!==t.runId?!1:n(e),getCreatedAt:()=>null,getId:e=>e.hookId});return{...a,data:a.data.map(e=>Tr(e,i))}}return{get:a,getByToken:o,list:s}}async function Fr(e,t){await yr(e);for(let n of await hr(e,t)){if(n.hookId){let r=null,i=null;try{i=G(e,`hooks`,n.hookId,n.tag),r=await X(i,x)}catch(e){if(!ct.is(e)&&!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}if(r&&i&&r.runId===t){if(r.tokenRetentionUntil&&r.tokenRetentionUntil.getTime()>Date.now())continue;await Qn(e,r.token,r.runId,r.hookId),await Z($n(e,r.token,r.runId,r.hookId)),await Z(i)}}await gr(e,n.fileId)}}const Ir=T(`@workflow/world-local//streamerMonotonicUlid`,1,()=>({next:le(()=>Math.random())})),Lr=e=>Ir.next(e),Rr=I.compile(I.object({streams:I.array(I.string())}));function zr(e){return e===1}function Br(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function Vr(e){return zr(e[0])}function Hr(e){return{eof:Vr(e),chunk:Buffer.from(e.subarray(1))}}async function Ur(e){try{return await z.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function Wr(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 Gr(e,t){return H(`streamName`,t),B.join(e,t)}async function Kr(e,t,n){let r=Gr(e,t),i=await Ur(r),a=new Map;return Wr(a,i,`.json`),Wr(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&Wr(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}const qr=`chnk_${`0`.repeat(26)}`;async function Jr(e,t,n){let r=B.join(e,`streams`,`chunks`),i=n?`.${n}`:``,a;try{H(`runId`,t),a=(await K(e,`streams/runs`,t,Rr,n))?.streams??[]}catch(e){Yr(`streams of ${t}`,e);return}for(let e of a)try{let t=Gr(r,e);await Y(B.join(t,`${qr}${i}.bin`),Br({chunk:Buffer.from([]),eof:!0}),{overwrite:!0});for(let e of await Ur(t))e.startsWith(qr)||(e.endsWith(`.bin`)||e.endsWith(`.json`))&&await W(()=>z.unlink(B.join(t,e))).catch(t=>{t.code!==`ENOENT`&&Yr(e,t)})}catch(t){Yr(e,t)}}function Yr(e,t){console.warn(`[world-local] Failed to purge stream data for ${e}:`,t instanceof Error?t.message:t)}function Xr(e,t){let n=t?`.${t}`:``,r=new Ie,i=new Set;async function a(n,r){H(`runId`,n),H(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=G(e,`streams/runs`,n,t),s=(await K(e,`streams/runs`,n,Rr,t))?.streams??[];s.includes(r)||(s.push(r),await J(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_${Lr()}`;await a(await t,i);let l=o(s),u=Br({chunk:l,eof:!1});await Y(B.join(Gr(B.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_${Lr()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=Br({chunk:t,eof:!1});return await Y(B.join(Gr(B.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_${Lr()}`;await a(await t,i),await Y(B.join(Gr(B.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),Br({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return H(`runId`,n),(await K(e,`streams/runs`,n,Rr,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await Kr(B.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=B.join(c,`${e}${t}`);if(f<l){if(zr(await St(n))){u=!0;break}f++;continue}if(d.length>=a){zr(await St(n))?u=!0:f++;break}let r=Hr(await xt(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 Kr(B.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(zr(await St(B.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=B.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 Kr(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`;zr(await St(B.join(_,`${e}${t}`)))&&v--}let y=typeof a==`number`&&a<0?Math.max(0,v+a):a,b=!1;for(let t=y;t<h.length;t++){let r=h[t],i=r;if(n.has(i))continue;let a=g.get(r)??`.bin`,o=Hr(await xt(B.join(_,`${r}${a}`)));if(o?.eof===!0){b=!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(b){l=!0,s();try{e.close()}catch{}return}if(f){l=!0,s();try{e.close()}catch{}return}for(let e=0;e<y&&e<h.length;e++)n.add(h[e]);if(l){s();return}let x=!1;c=setInterval(async()=>{if(!x){x=!0;try{let{files:r,extMap:a}=await Kr(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=Hr(await xt(B.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{x=!1}}},100)},cancel(){l=!0,s()}})}}}}function Zr(e){let t=ne(e);return t.unsupported&&console.warn(`[world-local] Ignoring unrecognized ${ae} value ${JSON.stringify(t.raw)}; keeping the run's data.`),t.mode===`none`}function Qr(e,t){return{...e,input:void 0,output:void 0,error:void 0,expiredAt:t}}async function $r(e,t,n){await Promise.all([ti(B.join(e,`steps`),t,e=>{e.input=void 0,e.output=void 0,e.error=void 0}),ti(B.join(e,`events`),t,e=>{let t=e.eventData;if(t&&typeof t==`object`)for(let n of m(String(e.eventType)))delete t[n]}),ni(e,t),Jr(e,t,n)])}const ei=I.record(I.string(),I.any()),$=I.preprocess(e=>{if(e&&typeof e==`object`&&`eventType`in e&&`eventData`in e){let t=e.eventData;if(t&&typeof t==`object`)for(let n of m(String(e.eventType)))n in t||(t[n]=void 0)}return e},r);async function ti(e,t,n){let r;try{r=await wt(e)}catch(t){ri(e,t);return}for(let i of r){if(!i.startsWith(`${t}-`))continue;let r=B.join(e,`${i}.json`);try{let e=await X(r,ei);if(!e)continue;n(e),await J(r,e,{overwrite:!0})}catch(e){ri(r,e)}}}async function ni(e,t){let n;try{await yr(e),n=await hr(e,t)}catch(e){ri(`hooks of ${t}`,e);return}for(let r of n)if(r.hookId)try{let n=G(e,`hooks`,r.hookId,r.tag),i=await X(n,ei);if(!i||i.runId!==t)continue;i.metadata=void 0,await J(n,i,{overwrite:!0})}catch(e){ri(r.hookId,e)}}function ri(e,t){console.warn(`[world-local] Failed to purge user data for ${e}:`,t instanceof Error?t.message:t)}const ii=new Ie;ii.setMaxListeners(0);function ai(){return b(`WORKFLOW_LOCAL_RUN_STATUS_POLL_INTERVAL_MS`,100,{integer:!0,min:1})}function oi(e){ii.emit(`run:${e}`)}function si(e,t,n){return t<=0||n?.aborted?Promise.resolve():new Promise(r=>{let i=`run:${e}`,a=!1,o=()=>{a||(a=!0,clearTimeout(s),ii.off(i,o),n?.removeEventListener(`abort`,o),r())},s=setTimeout(o,t);ii.once(i,o),n?.addEventListener(`abort`,o,{once:!0})})}async function ci(e,t,n,r,i,a){if(O(a.status)||await Vn(e,t))throw new fe(`Workflow run "${t}" is already in a terminal state`);let o=Un(e,t,n);await Q(o,r);try{if(await Vn(e,t)||await Ct(o,i)!==`linked`)throw new fe(`Workflow run "${t}" is already in a terminal state`)}finally{await z.unlink(o).catch(()=>{})}}async function li(e,t,n,r,i){H(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await Q(Bn(e,t),``),await Wn(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},o=Zr(i.attributes),s=o?Qr(i,n):i;return await J(U(e,`runs`,`${t}.json`),s,{overwrite:!0}),oi(t),await Fr(e,t),o&&await $r(e,t,void 0),{event:void 0,run:Cr(s,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${tr()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:8},c=U(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await ci(e,t,i,JSON.stringify(s,q,2),c,r):await J(c,s),{event:D(s,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const ui=T(`@workflow/world-local//runFileLocks`,1,()=>({byKey:new Map}));function di(e,t){let n=ui.byKey.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{ui.byKey.get(e)===r.task&&ui.byKey.delete(e)}})();return r.task=i,ui.byKey.set(e,i),i}function fi(e,t){let n=(async(n,r)=>{H(`runId`,n);let i=await K(e,`runs`,n,d,t);if(!i)throw new pe(n);return Cr(i,r?.resolveData??`all`)});return{get:n,waitForTerminalStatus:(async(e,t)=>{let r=Date.now()+(t?.timeoutMs??0);for(;;){let i=await n(e,t);if(O(i.status))return i;let a=r-Date.now();if(a<=0||t?.signal?.aborted)return i;await si(e,Math.min(a,ai()),t?.signal)}}),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 pe)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 kt({directory:B.join(e,`runs`),schema:d,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status!==void 0&&!(Array.isArray(t.status)?t.status:[t.status]).includes(e.status)),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:nr(`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)=>(H(`runId`,n),di(n,async()=>{let a=await K(e,`runs`,n,d,t);if(!a)throw new pe(n);try{se(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof ce,e}let o=g(a.attributes,r),s={...a,attributes:o,updatedAt:new Date};return await J(G(e,`runs`,n,t),s,{overwrite:!0}),{attributes:o}}))}}const pi=864e5;function mi(){let e=Number(process.env.WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS??30);if(!Number.isFinite(e)||e<=0)throw new k(`WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS must be a positive number`,{status:400});return e*pi}const hi=I.compile(I.object({eventId:I.string()})),gi=I.compile(I.object({runId:I.string(),resumeId:I.string(),hookId:I.string(),eventId:I.string(),payloadDigest:I.string().optional()}));function _i(e,t){return e.eventType===`hook_received`&&e.correlationId===t.hookId&&(e.resumeId===void 0||e.resumeId===t.resumeId)}async function vi(e,t,n,r){let i=await Kn(e,t,r);for(let a of i.ids){let i=await K(e,`events`,`${t}-${a}`,$,r);if(i&&i.resumeId===n.resumeId&&_i(i,n))return i}return null}async function yi(e,t,n){if(t.hookId&&await zn(e,t.hookId,n))return!0;let r=await K(e,`runs`,t.runId,d,n);return r?O(r.status)?!t.tokenRetentionUntil||t.tokenRetentionUntil.getTime()<=Date.now():!1:!0}async function bi(e){try{return await X(e,hi)}catch(e){if(e instanceof SyntaxError||e instanceof I.ZodError)return null;throw e}}function xi(e){return C(e.eventId)?e.eventId:null}function Si(e,t){let n=ft(t).slice(e.length+1);return C(n)?n:null}async function Ci(e,t,n){return(await kt({directory:B.join(e,`events`),schema:$,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:nr(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function wi(e,t,n,r,i){let a=await K(e,`events`,`${t}-${r}`,$,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await K(e,`hooks`,n,x,i))return;let o=Dr(a);await dr(e,o.token,t,n,r,i),await pr(e,t,n,i),await Q(G(e,`hooks`,n,i),JSON.stringify(o,q,2))}async function Ti(e,t,n,r,i){let a=$n(e,t,n,r);return await Q(a,JSON.stringify({eventId:i}))?i:(await bi(a))?.eventId??null}function Ei(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 Di(e,t){let n=B.join(e,`waits`),r=await wt(n);for(let e of r)e.startsWith(`${t}-`)&&await Z(B.join(n,`${e}.json`))}async function Oi(e,t,n,r){return di(t,async()=>{let i=(await X(G(e,`runs`,t,n),d))?.attributes??r.attributes,a={...r,attributes:i},o=O(a.status)&&Zr(i);return o&&(a=Qr(a,new Date)),await J(G(e,`runs`,t,n),a,{overwrite:!0}),O(a.status)&&oi(t),{run:a,purged:o}})}function ki(e,t){let n=mi(),r=4194304,i=new Map,m=new Map,_=new Map,b=0;function S(e){let t=i.get(e);if(!t)return;i.delete(e),b-=m.get(e)??0,m.delete(e);let n=_.get(t.runId);n?.delete(e),n?.size===0&&_.delete(t.runId)}function ee(e){for(let t of _.get(e)??[])S(t)}function w(){i.clear(),m.clear(),_.clear(),b=0,T.clear()}let T=new Map;function E(e){return t?`${e}.${t}`:e}async function ne(n,r){let i=`${n}-${y(r)}`;for(let n of t?[G(e,`events`,i,t),G(e,`events`,i)]:[G(e,`events`,i)])try{return await z.stat(n),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}async function ae(n,r){let i=E(n),a=T.get(i);if(a===void 0||r?.rescan){let r=await Kn(e,n,t);a===void 0?(a=r.count>0&&!r.usesSlots?null:{published:r.maxSlot},T.set(i,a)):a!==null&&(a.published=Math.max(a.published,r.maxSlot))}if(a===null)return null;let o=Math.max(a.published+1,1,r?.atLeast??1);for(;await ne(n,o);)a.published=Math.max(a.published,o),o+=1;return o}function ce(e,t){let n=v(t);if(n===null)return;let r=T.get(E(e));r&&(r.published=Math.max(r.published,n))}async function le(e){let t=await ae(e);return t===null?`evnt_${tr()}`:y(t)}async function ue(n){let r=await ae(n,{rescan:!0});return r===null?Gn(e,n,t):{eventId:y(r),createdAt:new Date}}function ge(e,t,n){if(n>r)return;for(;i.size>0&&(i.size>=1e3||b+n>r);){let e=i.keys().next().value;S(e)}i.set(e,t),m.set(e,n),b+=n;let a=_.get(t.runId)??new Set;a.add(e),_.set(t.runId,a)}function _e(e,t,n){if(s(e.eventType)){ee(e.runId);return}let i=Buffer.byteLength(n);if(i>r)return;let a=$.safeParse(JSON.parse(n,bt));a.success&&ge(t,a.data,i)}async function ve(n){let r=n;for(let n=0;;n++){let i=G(e,`events`,`${r.runId}-${r.eventId}`,t),a=JSON.stringify(r,q,2),o=v(r.eventId);if(o===null)return await Y(i,a),_e(r,i,a),r;if(await Q(i,a))return ce(r.runId,r.eventId),_e(r,i,a),r;let s=await ae(r.runId,{rescan:n>0&&n%8==0,atLeast:o+1});Fe(s!==null),r={...r,eventId:y(s)}}}async function ye(n,r){let i=await Rn(e,n,t);if(i.committed)throw i.forceClaimedBy?new A(typeof r==`string`?r:``,i.forceClaimedBy.runId,i.forceClaimedBy.hookId):new he(n)}let be=(t,n)=>kt({directory:B.join(e,`events`),schema:$,cachedItems:i,filePrefix:`${t}-`,sortOrder:n.sortOrder??`asc`,limit:n.limit,cursor:n.cursor,getCreatedAt:nr(`evnt`),getId:e=>e.eventId,getSortKey:xi,getSortKeyFromFileId:e=>Si(t,e)}),M=new Map,N=new Map,P={clearCache:w,async create(r,i,m){if(i.eventType===`hook_created`&&i.eventData.tokenRetentionUntil!==void 0&&i.eventData.tokenRetentionUntil.getTime()>Date.now()+n)throw new k(`Hook minimum retention cannot exceed ${n/pi} days in the Local World.`,{status:400});if(r!=null&&r!==``&&H(`runId`,r),`correlationId`in i&&typeof i.correlationId==`string`&&H(`correlationId`,i.correlationId),a(i.eventType)&&r&&i.correlationId){let e=t?`${r}-${i.correlationId}.${t}`:`${r}-${i.correlationId}`;return Ei(M,e,_)}if(p(i.eventType)&&r&&i.correlationId){let e=t?`${r}-${i.correlationId}.hook.${t}`:`${r}-${i.correlationId}.hook`;return Ei(N,e,_)}return _();async function _(){let n=``,p=!1,_=null,b=new Date,S;if(i.eventType===`run_created`&&(!r||r===``))S=`wrun_${tr()}`;else if(r)S=r;else throw Error(`runId is required for non-run_created events`);if(i.eventType===`run_created`&&r&&r!==``){let e=ie(S,`wrun_`);if(e)throw new k(e)}let w=i.specVersion??8,T=null;if(i.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(i.eventType)&&(T=await K(e,`runs`,S,d,t),i.eventType===`run_started`&&!T&&`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:S,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,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 Q(G(e,`runs`,S,t),JSON.stringify(r,q))){let e=await le(S);await ve({eventType:`run_created`,runId:S,eventId:e,createdAt:b,specVersion:w,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),T=r}else T=await K(e,`runs`,S,d,t)}}if(n=await le(S),!T&&(i.eventType===`run_failed`||i.eventType===`attr_set`||i.eventType===`run_started`))throw new pe(S);if(T){if(oe(T.specVersion))throw new me(T.specVersion,8);if(h(T.specVersion))return li(e,S,i,T,m)}let E=o(i),ne=E&&i.eventType===`step_started`;if(T&&O(T.status)){if(i.eventType===`run_cancelled`&&T.status===`cancelled`){let e=await ve({...i,runId:S,eventId:n,createdAt:b,specVersion:w}),t=m?.resolveData??`all`;return{event:D(e,t),run:T,...T?{maxEvents:re()}:{}}}if(i.eventType===`run_started`)throw new fe(`Workflow run "${S}" is already in terminal state "${T.status}"`);if(s(i.eventType))throw new j(`Cannot transition run from terminal state "${T.status}"`);if(E)throw new j(`Cannot create new entities on run in terminal state "${T.status}"`);if(i.eventType===`attr_set`)throw new j(`Cannot set attributes on run in terminal state "${T.status}"`)}let A=null;if(a(i.eventType)&&i.eventType!==`step_created`&&i.correlationId){if(A=await K(e,`steps`,`${S}-${i.correlationId}`,l,t),!A&&!ne)throw new k(`Step "${i.correlationId}" not found`);if(ne&&A)throw new j(`Step "${i.correlationId}" already created`);if(A){if(u(A.status))throw new j(`Cannot modify step in terminal state "${A.status}"`);if(T&&O(T.status)&&(A.status!==`running`||i.eventType===`step_started`))throw new fe(`Cannot ${i.eventType===`step_started`?`start`:`modify non-running`} step on run in terminal state "${T.status}"`)}}if(f(i.eventType)&&i.correlationId){if(i.eventType===`hook_received`&&m?.resumeId){let n=await X(Zn(e,S,m.resumeId),gi);if(n&&n.hookId===i.correlationId&&(!m.resumePayloadDigest||!n.payloadDigest||n.payloadDigest===m.resumePayloadDigest)){let r=await K(e,`events`,`${S}-${n.eventId}`,$,t),i=r&&_i(r,n)?r:await vi(e,S,n,t);if(i)return{event:i}}}if(i.eventType===`hook_received`&&await ye(i.correlationId,i.eventData?.token),!await K(e,`hooks`,i.correlationId,x,t))throw new he(i.correlationId);if(i.eventType===`hook_received`&&m?.resumeId){let r=Zn(e,S,m.resumeId),a=async r=>{if(r.hookId!==i.correlationId)throw new j(`hook_received resumeId "${m.resumeId}" already recorded for a different hook`);if(m.resumePayloadDigest&&r.payloadDigest&&r.payloadDigest!==m.resumePayloadDigest)throw new j(`hook_received resumeId "${m.resumeId}" already recorded with a different payload`);let a=await K(e,`events`,`${S}-${r.eventId}`,$,t);if(a&&_i(a,r))return{event:a};let o=await vi(e,S,r,t);return o?{event:o}:(_=r.eventId,a||(n=r.eventId,p=!0),null)},o=await X(r,gi);if(o){let e=await a(o);if(e)return e}else if(p=!C(n),_=n,!await Q(r,JSON.stringify({runId:S,resumeId:m.resumeId,hookId:i.correlationId,eventId:n,...m.resumePayloadDigest?{payloadDigest:m.resumePayloadDigest}:{}}))){_=null;let e=await X(r,gi);if(e){let t=await a(e);if(t)return t}}}}let ge,M={...i,runId:S,eventId:n,createdAt:b,specVersion:w,...i.eventType===`hook_received`&&m?.resumeId?{resumeId:m.resumeId}:{}};if(i.eventType===`run_started`&&`eventData`in M&&delete M.eventData,ne&&M.eventType===`step_started`&&M.eventData){let{input:e,...t}=M.eventData;M={...M,eventData:t}}let N,P=!1,F,I,L,xe=!1,Se;if(s(i.eventType)&&T){await Q(Bn(e,S,t),``),await Wn(e,S,t);let r=await ue(S);n=r.eventId,M={...M,eventId:n,createdAt:r.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}),N={runId:S,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,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 Q(G(e,`runs`,S,t),JSON.stringify(N,q,2)))throw new j(`Workflow run "${S}" already exists`)}else if(i.eventType===`run_started`){if(T){if(T.status===`running`){if(m?.skipPreload)return{run:T,maxEvents:re()};let e=await be(S,{limit:re()});return{run:T,events:e.data,cursor:e.cursor,hasMore:e.hasMore,maxEvents:re()}}let n=await Oi(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:T.startedAt??b,updatedAt:b,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});N=n.run,P=n.purged}}else if(i.eventType===`run_completed`&&`eventData`in i){let n=i.eventData;if(T){let r=await Oi(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:b,updatedAt:b,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});N=r.run,P=r.purged,await Promise.all([Fr(e,S),Di(e,S)])}}else if(i.eventType===`run_failed`&&`eventData`in i){let n=i.eventData;if(T){let r=await Oi(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:b,updatedAt:b,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});N=r.run,P=r.purged,await Promise.all([Fr(e,S),Di(e,S)])}}else if(i.eventType===`run_cancelled`){if(T){let n=await Oi(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:b,updatedAt:b,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});N=n.run,P=n.purged,await Promise.all([Fr(e,S),Di(e,S)])}}else if(i.eventType===`attr_set`&&T)N=await di(S,async()=>{let n=await X(G(e,`runs`,S,t),d);if(!n)throw new pe(S);if(se(i.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:i.eventData.allowReservedAttributes===!0}),i.correlationId&&i.eventData.writer.type===`workflow`&&!await Q(U(e,`.locks`,`attributes`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``))throw new j(`Attribute event "${i.correlationId}" already exists`);let r={...n,attributes:g(n.attributes,i.eventData.changes),updatedAt:b};return await J(G(e,`runs`,S,t),r,{overwrite:!0}),r});else if(i.eventType===`step_created`&&`eventData`in i){if(!await Q(U(e,`.locks`,`steps`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``))throw new j(`Step "${i.correlationId}" already created`);let n=i.eventData;F={runId:S,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:w},await J(G(e,`steps`,`${S}-${i.correlationId}`,t),F)}else if(i.eventType===`step_started`){if(!A&&ne){let n=i.eventData;if(await Q(U(e,`.locks`,`steps`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``)){let r={runId:S,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:w};await J(G(e,`steps`,`${S}-${i.correlationId}`,t),r);let a=await le(S);await ve({eventType:`step_created`,runId:S,eventId:a,createdAt:b,specVersion:w,correlationId:i.correlationId,eventData:{stepName:n.stepName,input:n.input}}),A=r,xe=!0}else throw new j(`Step "${i.correlationId}" already created`)}if(A){if(A.retryAfter&&A.retryAfter.getTime()>Date.now())throw new de(`Cannot start step "${i.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((A.retryAfter.getTime()-Date.now())/1e3)});let n=`${S}-${i.correlationId}`,r=await K(e,`steps`,n,l,t);if(r&&u(r.status))throw new j(`Cannot modify step in terminal state "${r.status}"`);F={...A,status:`running`,startedAt:A.startedAt??b,attempt:A.attempt+1,retryAfter:void 0,updatedAt:b},await J(G(e,`steps`,n,t),F,{overwrite:!0})}}else if(i.eventType===`step_completed`&&`eventData`in i){let n=i.eventData;if(A){let r=`${S}-${i.correlationId}`;if(!await Q(U(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new j(`Cannot modify step in terminal state`);F={...A,status:`completed`,output:n.result,completedAt:b,updatedAt:b},await J(G(e,`steps`,r,t),F,{overwrite:!0})}}else if(i.eventType===`step_failed`&&`eventData`in i){let n=i.eventData;if(A){let r=`${S}-${i.correlationId}`;if(!await Q(U(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new j(`Cannot modify step in terminal state`);F={...A,status:`failed`,error:n.error,completedAt:b,updatedAt:b},await J(G(e,`steps`,r,t),F,{overwrite:!0})}}else if(i.eventType===`step_retrying`&&`eventData`in i){let n=i.eventData;if(A){let r=`${S}-${i.correlationId}`;F={...A,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:b},await J(G(e,`steps`,r,t),F,{overwrite:!0})}}else if(i.eventType===`hook_created`&&`eventData`in i){let r=i.eventData,a=qn(e,r.token),o,s=()=>JSON.stringify({token:r.token,hookId:i.correlationId,runId:S,eventId:n,tokenRetentionUntil:r.tokenRetentionUntil,...o&&{claimedFrom:o}}),c=await Xn(e,r.token,async c=>{let l=await Yn(a);if(l||=(c.throwIfAborted(),await Z(a),await Mr(e,r.token,t),await Yn(a)),!l)return c.throwIfAborted(),Fe(await Q(a,s())),{status:`claimed`};if(l.runId===S&&l.hookId===i.correlationId)return{status:`owned`,claim:l};if(!await yi(e,l,t)){if(r.force!==!0||!l.hookId)return{status:`conflict`,claim:l};c.throwIfAborted();let a=await K(e,`runs`,l.runId,d,t),s=a!==null&&!O(a.status);if(o={runId:l.runId,hookId:l.hookId,...s&&{workflowName:a.workflowName,deploymentId:a.deploymentId,runSpecVersion:a.specVersion}},s&&(a.specVersion??1)<8)return{status:`conflict`,claim:l,forceRefusedReason:`victim-spec-version`};let u=await Ci(e,S,i.correlationId);u?(n=u,ge={...M,eventId:n}):(ge=await ve({...M,eventData:{...M.eventData,forceClaimedFrom:o}}),n=ge.eventId),await pr(e,S,i.correlationId,t),await J(G(e,`hooks`,i.correlationId,t),{runId:S,hookId:i.correlationId,token:r.token,metadata:r.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:b,specVersion:w,isWebhook:r.isWebhook??!1,isSystem:r.isSystem??!1,tokenRetentionUntil:r.tokenRetentionUntil,claimedFrom:o},{overwrite:!0});let f=await Q(Ln(e,l.hookId,t),JSON.stringify({forceClaimedBy:{runId:S,hookId:i.correlationId}}));s&&f&&await ve({eventType:`hook_disposed`,correlationId:l.hookId,eventData:{token:r.token,forceClaimedBy:{runId:S,hookId:i.correlationId}},runId:l.runId,eventId:await le(l.runId),createdAt:new Date,specVersion:a.specVersion})}return c.throwIfAborted(),o?await Y(a,s(),{overwrite:!0}):await Z(a),l.hookId&&(await Z(G(e,`hooks`,l.hookId,t)),await Z($n(e,r.token,l.runId,l.hookId)),await mr(e,l.runId,l.hookId,t)),c.throwIfAborted(),o||Fe(await Q(a,s())),{status:`claimed`}});if(c.status===`owned`&&c.claim.claimedFrom&&(o=c.claim.claimedFrom),c.status===`owned`){let a=c.claim,o;if(a.eventId)o=a.eventId;else{let a=await Ci(e,S,i.correlationId);if(a!==null)throw await wi(e,S,i.correlationId,a,t),new j(`Hook "${i.correlationId}" already created`);let s=await Ti(e,r.token,S,i.correlationId,n);if(s===null)throw new j(`Hook "${i.correlationId}" already created`);o=s}n=o,p=!0;let s=te(n.replace(/^evnt_/,``))??b;M={...i,eventData:{...i.eventData,tokenRetentionUntil:a.tokenRetentionUntil},runId:S,eventId:n,createdAt:s,specVersion:w}}if(c.status===`conflict`){let e=c.claim,t=await ve({eventType:`hook_conflict`,correlationId:i.correlationId,eventData:{token:r.token,conflictingRunId:e.runId,...c.forceRefusedReason!==void 0&&{forceRefusedReason:c.forceRefusedReason}},runId:S,eventId:n,createdAt:b,specVersion:w}),a=m?.resolveData??`all`,o=typeof m?.sinceCursor==`string`?await be(S,{sortOrder:`asc`,cursor:m.sinceCursor}):void 0,s={event:D(t,a),run:N,step:F,hook:void 0};return o?{...s,events:a===`none`?o.data.map(e=>D(e,a)):o.data,cursor:o.cursor,hasMore:o.hasMore}:s}o&&(M={...M,eventData:{...M.eventData,forceClaimedFrom:o}});let l=M.eventData;I={runId:S,hookId:i.correlationId,token:l.token,metadata:l.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:M.createdAt,specVersion:w,isWebhook:l.isWebhook??!1,isSystem:l.isSystem??!1,tokenRetentionUntil:l.tokenRetentionUntil,...o&&{claimedFrom:o}},Se=c.status===`owned`||o?{overwrite:!0}:void 0,await dr(e,r.token,S,i.correlationId,n,t)}else if(i.eventType===`hook_disposed`){if(!await Q(Ln(e,i.correlationId,t),``))throw new j(`Hook "${i.correlationId}" already disposed`);let n=G(e,`hooks`,i.correlationId,t),r=await K(e,`hooks`,i.correlationId,x,t);r&&(await Qn(e,r.token,r.runId,r.hookId),await Z($n(e,r.token,r.runId,r.hookId))),await Z(n),await mr(e,S,i.correlationId,t)}else if(i.eventType===`wait_created`&&`eventData`in i){let n=`${S}-${i.correlationId}`;if(!await Q(U(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new j(`Wait "${i.correlationId}" already exists`);let r=i.eventData;L={waitId:n,runId:S,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:b,updatedAt:b,specVersion:w},await J(G(e,`waits`,n,t),L)}else if(i.eventType===`wait_completed`){let n=`${S}-${i.correlationId}`,r=U(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await Q(r,``))throw new j(`Wait "${i.correlationId}" already completed`);let a=await K(e,`waits`,n,c,t);if(!a)throw await z.unlink(r).catch(()=>{}),new k(`Wait "${i.correlationId}" not found`);L={...a,status:`completed`,completedAt:b,updatedAt:b},await J(G(e,`waits`,n,t),L,{overwrite:!0})}if(i.eventType===`hook_received`&&i.correlationId&&await ye(i.correlationId,i.eventData?.token),i.eventType===`hook_created`&&i.correlationId){let n=await Rn(e,i.correlationId,t);if(n.committed&&n.forceClaimedBy)throw new j(`Hook "${i.correlationId}" was force-claimed by another run before its creation was journaled`)}let R=G(e,`events`,`${S}-${n}`,t),Ce=JSON.stringify(M,q,2),we=async r=>{let i=v(n);if(p||i===null)return!1;let a=await ae(S,{rescan:r>0&&r%8==0,atLeast:i+1});return a!==null&&(n=y(a),M={...M,eventId:n},R=G(e,`events`,`${S}-${n}`,t),Ce=JSON.stringify(M,q,2),!0)},Te=!1;ge&&(M=ge,R=G(e,`events`,`${S}-${n}`,t),Ce=JSON.stringify(M,q,2),Te=!0);for(let r=0;!Te;r++){if(i.eventType===`hook_received`){let r=await Vn(e,S,t),i=r?null:await K(e,`runs`,S,d,t);if(r||i&&O(i.status))throw new fe(`Workflow run "${S}" is already in a terminal state`);let a=Un(e,S,`${n}.${tr()}`,t);if(!await Q(a,Ce))throw new k(`Failed to stage event "${n}" for run "${S}": staging path already exists`);try{if(await Vn(e,S,t))throw new fe(`Workflow run "${S}" is already in a terminal state`);let n=await Ct(a,R);if(n===`missing`)throw new fe(`Workflow run "${S}" is already in a terminal state`);Te=n===`linked`}finally{await Z(a).catch(()=>{})}}else Te=await Q(R,Ce);if(Te){ce(S,n);break}if(i.eventType===`hook_received`&&m?.resumeId){let r=await K(e,`events`,`${S}-${n}`,$,t);if(r&&_i(r,{runId:S,resumeId:m.resumeId,hookId:i.correlationId,eventId:n}))return{event:r}}if(!await we(r))break}if(!Te)throw i.eventType===`hook_created`&&i.correlationId&&await wi(e,S,i.correlationId,n,t),new j(`Event "${n}" already exists for run "${S}"`);_e(M,R,Ce),i.eventType===`hook_received`&&m?.resumeId&&_!==null&&_!==n&&await Y(Zn(e,S,m.resumeId),JSON.stringify({runId:S,resumeId:m.resumeId,hookId:i.correlationId,eventId:n,...m.resumePayloadDigest?{payloadDigest:m.resumePayloadDigest}:{}}),{overwrite:!0}),I&&i.eventType===`hook_created`&&(await pr(e,I.runId,I.hookId,t),await J(G(e,`hooks`,I.hookId,t),I,Se)),P&&(await $r(e,S,t),ee(S));let Ee=m?.resolveData??`all`,De=D(M,Ee),Oe;if(i.eventType===`run_started`&&N&&!m?.skipPreload&&(Oe=await be(S,{limit:re()})),typeof m?.sinceCursor==`string`){let e=await be(S,{sortOrder:`asc`,cursor:m.sinceCursor});Oe=Ee===`none`?{...e,data:e.data.map(e=>D(e,Ee))}:e}let ke={event:De,run:N,step:F,hook:I,wait:L,...xe?{stepCreated:!0}:{},...N?{maxEvents:re()}:{}};return Oe?{...ke,events:Oe.data,cursor:Oe.cursor,hasMore:Oe.hasMore}:ke}},async get(n,r,i){H(`runId`,n),H(`eventId`,r);let a=await K(e,`events`,`${n}-${r}`,$,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);let o=i?.resolveData??`all`;return D(a,o)},async list(e){let{runId:t}=e;H(`runId`,t);let n=e.resolveData??`all`,r=await be(t,{...e.pagination,limit:e.pagination?.limit??re()});return n===`none`?{...r,data:r.data.map(e=>D(e,n))}:r},async listByCorrelationId(t){let n=t.correlationId;H(`correlationId`,n),H(`runId`,t.runId);let r=t.resolveData??`all`,a=await kt({directory:B.join(e,`events`),schema:$,cachedItems:i,filePrefix:`${t.runId}-`,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:nr(`evnt`),getId:e=>e.eventId,getSortKey:xi,getSortKeyFromFileId:e=>Si(t.runId,e)});return r===`none`?{...a,data:a.data.map(e=>D(e,r))}:a}};async function F(e,t,n){if(!e.event)return e;let r=v(e.event.eventId);if(r===null||t<1||r<=t+1)return e;let i=r-t-1,a=await P.list({runId:e.event.runId,pagination:{cursor:`${Et}${y(t)}`,limit:i,sortOrder:`asc`},resolveData:n}),o=e.event.eventId,s=a.data.filter(e=>e.eventId<o);return{...e,events:s,cursor:null,hasMore:s.length<r-t-1}}let I=(async(e,t,n)=>{if(n?.eventCount===void 0)return P.create(e,t,n);let r=n.resolveData??`all`,i=await P.create(e,t,n);return typeof n.sinceCursor==`string`?i:F(i,n.eventCount,r)});return{...P,create:I}}function Ai(e,t){return{get:(async(n,r,i)=>{H(`runId`,n),H(`stepId`,r);let a=await K(e,`steps`,`${n}-${r}`,l,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return wr(a,i?.resolveData??`all`)}),list:(async t=>{H(`runId`,t.runId);let n=t.resolveData??`all`,r=await kt({directory:B.join(e,`steps`),schema:l,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:nr(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function ji(e,t){let n=fi(e,t),r=Ai(e,t),i=ki(e,t),a=Pr(e,t);return{runs:pn(`world.runs`,n),steps:pn(`world.steps`,r),events:pn(`world.events`,i),hooks:pn(`world.hooks`,a),clearCache:()=>i.clearCache()}}function Mi(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...rt.value,...t};Ve(n.dataDir);let r=n.tag,i=wn(n),{clearCache:a,...o}=ji(n.dataDir,r),s=it(n);return{specVersion:E(),capabilities:{hookRetention:{active:!0},hookResumeDedup:!0,hookForceClaim:!0},...i,...o,...pn(`world.streams`,{...Xr(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Gt(n.dataDir),!s)return;let e=r?e=>pt(e,r):mt,t={...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))};await w(t,i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=B.join(e,`hooks`),i=await ht(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-BQSf8Hax.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await X(B.join(t,n),a);r?.token&&(await Z(B.join(t,`tokens`,`${In(r.token)}.json`)),await Z($n(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=B.join(e,t),i=await ht(n,r);await Promise.all(i.map(e=>Z(B.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=B.join(e,`hooks`,t),i;try{i=await R.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=B.join(n,e.name),i=await ht(t,r);await Promise.all(i.map(e=>Z(B.join(t,e))))}))}await R.rm(B.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=B.join(e,`streams`,`chunks`),s;try{s=await R.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=B.join(o,e.name),n=await gt(t,r,`.bin`);await Promise.all(n.map(e=>R.unlink(B.join(t,e)).catch(()=>{})))})),ut()}else ut(),vr(),await ke(n.dataDir,{recursive:!0,force:!0}),await Gt(n.dataDir)}}}export{Pt as DataDirAccessError,Ft as DataDirVersionError,Le as UnwritableDataDirError,Mi as createWorld,Vt as ensureDataDir,Gt as initDataDir,It as parseVersion};
|