eve 0.34.0 → 0.36.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 +29 -0
- package/README.md +3 -3
- package/dist/src/chunks/{use-eve-agent-BNdcle_M.js → use-eve-agent-COmP-H8R.js} +6 -3
- package/dist/src/chunks/{use-eve-agent-FJkEMXYk.js → use-eve-agent-CnppTEFk.js} +6 -3
- package/dist/src/cli/commands/info.js +1 -1
- package/dist/src/cli/commands/trace-detail.d.ts +3 -2
- package/dist/src/cli/commands/trace-detail.js +1 -1
- package/dist/src/cli/dev/tui/traces/trace-conversation.d.ts +4 -6
- package/dist/src/cli/dev/tui/traces/trace-conversation.js +1 -2
- package/dist/src/client/agent-info-schema.d.ts +12 -4
- package/dist/src/client/agent-info-schema.js +1 -1
- package/dist/src/client/index.d.ts +1 -1
- package/dist/src/compiled/.vendor-stamp.json +3 -3
- package/dist/src/compiled/@chat-adapter/slack/index.js +1 -1
- package/dist/src/compiled/@workflow/core/index.js +1 -1
- package/dist/src/compiled/@workflow/core/runtime.js +3 -3
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/world/env-config.d.ts +1 -0
- package/dist/src/compiled/@workflow/world/events.d.ts +92 -35
- package/dist/src/compiled/@workflow/world/index.d.ts +3 -2
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +25 -23
- package/dist/src/compiled/@workflow/world/queue.d.ts +4 -0
- package/dist/src/compiled/@workflow/world/runs.d.ts +4 -0
- package/dist/src/compiled/@workflow/world/slot-identity.d.ts +53 -0
- package/dist/src/compiled/@workflow/world/spec-version.d.ts +36 -1
- package/dist/src/compiled/@workflow/world/steps.d.ts +4 -0
- package/dist/src/compiled/@workflow/world/ulid.d.ts +6 -0
- package/dist/src/compiled/@workflow/world-local/index.js +4 -4
- package/dist/src/compiled/@workflow/world-vercel/index.js +13 -17
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-6OqdYdi4.js → attribute-changes-BoH7JsWp.js} +3 -3
- package/dist/src/compiled/_chunks/workflow/dist-DlFv0aHY.js +40 -0
- package/dist/src/compiled/_chunks/workflow/env-config-DxamfI7T.js +1 -0
- package/dist/src/compiled/_chunks/workflow/frames-CTpeJYEQ.js +3 -0
- package/dist/src/compiled/_chunks/workflow/{functions-CXb61C6h.js → functions-CeeNvKsq.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-BPQHjeY5.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-DQ5dOyjm.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-id-BdE0MZz9.js +1 -0
- package/dist/src/compiled/_chunks/workflow/sleep-CzdoBiqy.js +1 -0
- package/dist/src/compiled/_chunks/workflow/spec-version-DBUVfF_R.js +1 -0
- package/dist/src/compiled/_chunks/workflow/undici-CUIybhQ2.js +95 -0
- package/dist/src/compiled/_chunks/workflow/wait-until-DK2lnH6U.js +15 -0
- package/dist/src/compiled/_chunks/workflow/{wrapper-CDq65xJV.js → wrapper-CMGju7QA.js} +1 -1
- package/dist/src/compiled/_chunks/workflow/ws-transport-Csi6Cydc.js +1 -0
- package/dist/src/compiler/extension-compatibility.d.ts +10 -10
- package/dist/src/compiler/extension-compatibility.js +1 -1
- package/dist/src/compiler/manifest.d.ts +8 -8
- package/dist/src/compiler/manifest.js +1 -1
- package/dist/src/compiler/normalize-extension.d.ts +3 -3
- package/dist/src/compiler/normalize-extension.js +1 -1
- package/dist/src/compiler/normalize-instructions.d.ts +1 -1
- package/dist/src/compiler/normalize-instructions.js +1 -1
- package/dist/src/compiler/normalize-manifest.js +1 -3
- package/dist/src/context/dynamic-instruction-lifecycle.d.ts +5 -1
- package/dist/src/context/dynamic-instruction-lifecycle.js +1 -1
- package/dist/src/context/keys.d.ts +6 -2
- package/dist/src/context/keys.js +1 -1
- package/dist/src/discover/manifest.d.ts +1 -1
- package/dist/src/discover/manifest.js +1 -1
- package/dist/src/evals/context.js +1 -1
- package/dist/src/evals/index.d.ts +2 -2
- package/dist/src/evals/reporters/index.d.ts +1 -1
- package/dist/src/evals/runner/artifacts.js +1 -1
- package/dist/src/evals/runner/execute-eval.d.ts +5 -0
- package/dist/src/evals/runner/execute-eval.js +1 -1
- package/dist/src/evals/runner/execute-task.d.ts +3 -0
- package/dist/src/evals/runner/execute-task.js +1 -1
- package/dist/src/evals/runner/reporters/braintrust.js +1 -1
- package/dist/src/evals/runner/reporters/types.d.ts +28 -2
- package/dist/src/evals/runner/run-evals.js +1 -1
- package/dist/src/evals/session.d.ts +12 -2
- package/dist/src/evals/session.js +1 -1
- package/dist/src/evals/target.js +1 -1
- package/dist/src/evals/types.d.ts +12 -1
- package/dist/src/execution/node-step.js +1 -1
- package/dist/src/execution/session.js +1 -1
- package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/execution/workflow-trace-context.d.ts +11 -0
- package/dist/src/execution/workflow-trace-context.js +1 -0
- package/dist/src/harness/ai-sdk-hook-bridge.d.ts +1 -1
- package/dist/src/harness/ai-sdk-hook-bridge.js +1 -1
- package/dist/src/harness/approval-delivery-coordinator.js +1 -1
- package/dist/src/harness/channel-delivery-instrumentation.d.ts +1 -1
- package/dist/src/harness/channel-delivery-instrumentation.js +1 -1
- package/dist/src/harness/emission.d.ts +2 -2
- package/dist/src/harness/emission.js +1 -1
- package/dist/src/harness/instrumentation/config.js +1 -0
- package/dist/src/harness/{instrumentation-content.d.ts → instrumentation/content.d.ts} +1 -1
- package/dist/src/harness/{instrumentation-dispatch.d.ts → instrumentation/dispatch.d.ts} +1 -1
- package/dist/src/harness/{instrumentation-dispatch.js → instrumentation/dispatch.js} +1 -1
- package/dist/src/harness/{instrumentation-lifecycle.d.ts → instrumentation/lifecycle.d.ts} +3 -6
- package/dist/src/harness/{instrumentation-lifecycle.js → instrumentation/lifecycle.js} +1 -1
- package/dist/src/harness/{instrumentation-native-events.d.ts → instrumentation/native-events.d.ts} +1 -1
- package/dist/src/harness/{instrumentation-native-events.js → instrumentation/native-events.js} +1 -1
- package/dist/src/harness/{instrumentation-providers.d.ts → instrumentation/providers.d.ts} +1 -1
- package/dist/src/harness/{instrumentation-providers.js → instrumentation/providers.js} +1 -1
- package/dist/src/harness/{instrumentation-runtime.d.ts → instrumentation/runtime.d.ts} +4 -2
- package/dist/src/harness/{instrumentation-state.d.ts → instrumentation/state.d.ts} +1 -1
- package/dist/src/harness/parent-lineage.d.ts +1 -1
- package/dist/src/harness/prepare-trace-context.d.ts +16 -0
- package/dist/src/harness/prepare-trace-context.js +1 -0
- package/dist/src/harness/tool-loop.js +2 -2
- package/dist/src/harness/types.d.ts +1 -1
- package/dist/src/internal/application/compiled-artifacts.js +2 -2
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/authored-definition/core.d.ts +3 -3
- package/dist/src/internal/authored-definition/core.js +1 -1
- package/dist/src/internal/authored-package-boundary.js +1 -1
- package/dist/src/internal/helpers/markdown.js +1 -1
- package/dist/src/internal/instrumentation.d.ts +1 -1
- package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.js +1 -1
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +4 -3
- package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
- package/dist/src/internal/nitro/routes/channel-request-instrumentation.js +1 -1
- package/dist/src/internal/vercel/project-link.d.ts +1 -1
- package/dist/src/internal/vercel/project-link.js +1 -1
- package/dist/src/internal/vercel-agent-summary.d.ts +10 -9
- package/dist/src/internal/vercel-agent-summary.js +1 -1
- package/dist/src/internal/workflow/development-world-client.js +1 -1
- package/dist/src/protocol/message.d.ts +15 -1
- package/dist/src/protocol/message.js +1 -1
- package/dist/src/public/channels/github/auth.d.ts +30 -0
- package/dist/src/public/channels/github/auth.js +2 -2
- package/dist/src/public/channels/github/defaults.d.ts +4 -4
- package/dist/src/public/channels/github/defaults.js +1 -1
- package/dist/src/public/channels/github/dispatch.d.ts +3 -2
- package/dist/src/public/channels/github/dispatch.js +1 -1
- package/dist/src/public/channels/github/githubChannel.d.ts +7 -2
- package/dist/src/public/channels/github/githubChannel.js +1 -1
- package/dist/src/public/channels/github/index.d.ts +1 -1
- package/dist/src/public/definitions/instructions.d.ts +14 -4
- package/dist/src/public/definitions/instructions.js +1 -1
- package/dist/src/public/definitions/tool.d.ts +5 -8
- package/dist/src/public/instructions/index.d.ts +1 -2
- package/dist/src/public/instructions/index.js +1 -1
- package/dist/src/public/instrumentation/index.d.ts +4 -3
- package/dist/src/public/instrumentation/otel.d.ts +5 -4
- package/dist/src/public/instrumentation/provider.d.ts +2 -2
- package/dist/src/public/nuxt/module.js +1 -1
- package/dist/src/public/sveltekit/index.d.ts +6 -20
- package/dist/src/public/sveltekit/index.js +1 -1
- package/dist/src/public/sveltekit/routing.d.ts +0 -24
- package/dist/src/public/sveltekit/routing.js +1 -1
- package/dist/src/runtime/agent/bootstrap.d.ts +2 -0
- package/dist/src/runtime/agent/bootstrap.js +1 -1
- package/dist/src/runtime/prompt/compose.d.ts +1 -1
- package/dist/src/runtime/prompt/compose.js +3 -1
- package/dist/src/runtime/resolve-agent.js +1 -1
- package/dist/src/runtime/types.d.ts +4 -3
- package/dist/src/setup/boxes/select-model.d.ts +6 -6
- package/dist/src/setup/boxes/select-model.js +1 -1
- package/dist/src/setup/project-resolution.d.ts +3 -3
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/setup/slack-connect-lifecycle.d.ts +0 -9
- package/dist/src/setup/slack-connect-lifecycle.js +1 -1
- package/dist/src/setup/slackbot.d.ts +2 -1
- package/dist/src/setup/slackbot.js +1 -1
- package/dist/src/shared/default-agent-model.d.ts +1 -1
- package/dist/src/shared/default-agent-model.js +1 -1
- package/dist/src/shared/dynamic-tool-definition.d.ts +3 -4
- package/dist/src/shared/instructions-definition.d.ts +15 -11
- package/dist/src/{public/nuxt → shared}/vercel-services.d.ts +18 -19
- package/dist/src/shared/vercel-services.js +1 -0
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/tracing/agent-action-instrumentation.d.ts +1 -1
- package/dist/src/tracing/agent-action-instrumentation.js +1 -1
- package/dist/src/tracing/agent-approval-instrumentation.d.ts +1 -1
- package/dist/src/tracing/agent-channel-delivery-instrumentation.d.ts +1 -1
- package/dist/src/tracing/agent-channel-delivery-instrumentation.js +1 -1
- package/dist/src/tracing/agent-otel-provider.d.ts +4 -2
- package/dist/src/tracing/agent-otel-provider.js +2 -2
- package/dist/src/tracing/agent-otel-session-context.d.ts +17 -0
- package/dist/src/tracing/agent-otel-session-context.js +1 -0
- package/dist/src/tracing/agent-otel-usage.d.ts +1 -1
- package/dist/src/tracing/agent-tool-instrumentation.d.ts +1 -1
- package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
- package/dist/src/tracing/agent-trace-state.d.ts +1 -1
- package/dist/src/tracing/install-instrumentation-runtime.d.ts +2 -2
- package/dist/src/tracing/install-instrumentation-runtime.js +1 -1
- package/dist/src/tracing/local-instrumentation-runtime.d.ts +1 -1
- package/dist/src/tracing/local-instrumentation-runtime.js +1 -1
- package/dist/src/tracing/local-traces.d.ts +3 -3
- package/dist/src/tracing/local-traces.js +1 -1
- package/dist/src/tracing/otel-declaration.d.ts +2 -2
- package/dist/src/tracing/otel-declaration.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/README.md +18 -20
- package/docs/agent-config.md +9 -6
- package/docs/channels/custom.mdx +1 -1
- package/docs/channels/eve.mdx +10 -56
- package/docs/channels/github.mdx +1 -1
- package/docs/channels/meta.json +1 -0
- package/docs/concepts/context-control.md +32 -56
- package/docs/concepts/default-harness.md +2 -2
- package/docs/concepts/execution-model-and-durability.mdx +4 -4
- package/docs/concepts/meta.json +3 -1
- package/docs/concepts/sessions-runs-and-streaming.md +23 -11
- package/docs/{guides → concepts}/state.md +3 -3
- package/docs/connections/mcp.mdx +6 -89
- package/docs/connections/meta.json +1 -0
- package/docs/connections/openapi.mdx +5 -69
- package/docs/connections/overview.mdx +29 -3
- package/docs/evals/meta.json +1 -0
- package/docs/evals/reporters.mdx +14 -4
- package/docs/extensions.md +1 -1
- package/docs/getting-started.mdx +175 -13
- package/docs/guides/auth-and-route-protection.md +3 -18
- package/docs/guides/client/messages.mdx +3 -1
- package/docs/guides/client/meta.json +2 -1
- package/docs/guides/client/output-schema.mdx +2 -2
- package/docs/guides/client/overview.mdx +1 -1
- package/docs/guides/deployment/meta.json +1 -0
- package/docs/guides/deployment/overview.md +1 -1
- package/docs/guides/deployment/self-hosting.md +3 -3
- package/docs/guides/deployment/vercel.mdx +1 -1
- package/docs/guides/dev-tui.md +3 -13
- package/docs/guides/dynamic-capabilities.md +64 -4
- package/docs/guides/frontend/meta.json +2 -1
- package/docs/guides/frontend/nextjs.mdx +1 -10
- package/docs/guides/frontend/nuxt.mdx +1 -10
- package/docs/guides/frontend/overview.mdx +12 -3
- package/docs/guides/frontend/sveltekit.mdx +23 -11
- package/docs/guides/frontend/use-eve-agent-svelte.mdx +39 -126
- package/docs/guides/frontend/use-eve-agent-vue.mdx +40 -139
- package/docs/guides/instrumentation.md +15 -15
- package/docs/guides/meta.json +1 -5
- package/docs/guides/remote-agents.md +9 -9
- package/docs/guides/session-context.md +34 -103
- package/docs/install-integrations.mdx +1 -1
- package/docs/instructions.mdx +45 -12
- package/docs/meta.json +24 -13
- package/docs/patterns/dynamic-scheduling.md +1 -1
- package/docs/patterns/meta.json +1 -0
- package/docs/patterns/multi-tenant-approvals.md +1 -1
- package/docs/patterns/multi-tenant-auth.md +1 -1
- package/docs/patterns/multi-tenant-memory.md +4 -3
- package/docs/{guides → protocols}/acp.md +1 -1
- package/docs/protocols/meta.json +5 -0
- package/docs/reference/cli.md +39 -39
- package/docs/reference/meta.json +1 -1
- package/docs/reference/typescript-api.md +4 -2
- package/docs/sandbox.mdx +8 -0
- package/docs/{subagents.mdx → subagents/index.mdx} +2 -2
- package/docs/subagents/meta.json +5 -0
- package/docs/{guides/dynamic-workflows.md → subagents/workflow-tool.md} +6 -6
- package/docs/tools/human-in-the-loop.md +1 -1
- package/docs/tools/meta.json +1 -0
- package/docs/tools/overview.mdx +1 -1
- package/docs/tutorial/connect-a-warehouse.mdx +1 -1
- package/docs/tutorial/meta.json +1 -0
- package/docs/tutorial/remember-definitions.mdx +2 -2
- package/docs/tutorial/ship-it.mdx +2 -2
- package/package.json +4 -4
- package/dist/src/compiled/_chunks/workflow/dist-C8PhDW9B.js +0 -1
- package/dist/src/compiled/_chunks/workflow/functions-xMPAeWFr.js +0 -1
- package/dist/src/compiled/_chunks/workflow/node-Smb57EnG.js +0 -40
- package/dist/src/compiled/_chunks/workflow/resume-hook-BrduAuFX.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-CX7_sJnW.js +0 -1
- package/dist/src/compiled/_chunks/workflow/sleep-tsb2HjWK.js +0 -1
- package/dist/src/compiled/_chunks/workflow/undici-BNc_0O4m.js +0 -95
- package/dist/src/compiled/_chunks/workflow/wait-until-BYKVqrwc.js +0 -15
- package/dist/src/harness/instrumentation-config.js +0 -1
- package/dist/src/public/nuxt/vercel-services.js +0 -1
- package/dist/src/public/sveltekit/vercel-json.d.ts +0 -17
- package/dist/src/public/sveltekit/vercel-json.js +0 -1
- package/docs/installation.mdx +0 -66
- package/docs/project-structure.mdx +0 -53
- package/docs/reference/project-layout.md +0 -123
- /package/dist/src/harness/{instrumentation-config.d.ts → instrumentation/config.d.ts} +0 -0
- /package/dist/src/harness/{instrumentation-content.js → instrumentation/content.js} +0 -0
- /package/dist/src/harness/{instrumentation-runtime-context.d.ts → instrumentation/runtime-context.d.ts} +0 -0
- /package/dist/src/harness/{instrumentation-runtime-context.js → instrumentation/runtime-context.js} +0 -0
- /package/dist/src/harness/{instrumentation-runtime.js → instrumentation/runtime.js} +0 -0
- /package/dist/src/harness/{instrumentation-setup-context.d.ts → instrumentation/setup-context.d.ts} +0 -0
- /package/dist/src/harness/{instrumentation-setup-context.js → instrumentation/setup-context.js} +0 -0
- /package/dist/src/harness/{instrumentation-state.js → instrumentation/state.js} +0 -0
- /package/docs/{guides → protocols}/ucp.mdx +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{i as e,o as t,t as n}from"../../_chunks/workflow/rolldown-runtime-DaDcL9Zw.js";import{E as r,O as i,_ as a,d as o,f as s,o as c,r as l}from"../../_chunks/workflow/dist-CRTn4Sg8.js";import"../../_chunks/workflow/dist-tJoQXAF6.js";import{i as u,n as d,r as f,t as p}from"../../_chunks/workflow/workflow-routes-CwqB063q.js";import{
|
|
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=Le(i.slice(s+1));c!==void 0&&n.push(c)}return n}const ze=
|
|
1
|
+
import{i as e,o as t,t as n}from"../../_chunks/workflow/rolldown-runtime-DaDcL9Zw.js";import{E as r,O as i,_ as a,d as o,f as s,o as c,r as l}from"../../_chunks/workflow/dist-CRTn4Sg8.js";import"../../_chunks/workflow/dist-tJoQXAF6.js";import{i as u,n as d,r as f,t as p}from"../../_chunks/workflow/workflow-routes-CwqB063q.js";import{$ as m,A as h,B as g,Cr as _,F as v,G as y,H as b,I as x,Ir as S,L as C,Tn as w,U as ee,V as te,W as ne,X as re,Z as ie,a as T,c as ae,et as E,g as D,hi as O,j as oe,k as se,l as ce,m as k,n as le,o as ue,p as de,q as fe,r as pe,u as me,v as A,x as he}from"../../_chunks/workflow/dist-DlFv0aHY.js";import{n as j}from"../../_chunks/workflow/env-config-DxamfI7T.js";import{n as ge,t as _e}from"../../_chunks/workflow/spec-version-DBUVfF_R.js";import{t as ve}from"../../_chunks/workflow/undici-CUIybhQ2.js";import{t as ye}from"../../_chunks/workflow/signal-exit-C8vsI6zj.js";import{createHash as M}from"node:crypto";import{promisify as N}from"node:util";import{fileURLToPath as P}from"node:url";import{promises as F}from"node:fs";import I,{access as be,constants as xe,mkdir as Se,readFile as L,readdir as Ce,readlink as we,rm as Te,unlink as Ee,writeFile as R}from"node:fs/promises";import z from"node:path";import{tmpdir as De}from"node:os";import{execFile as Oe}from"node:child_process";import{setTimeout as ke}from"node:timers/promises";import Ae from"node:assert";import{EventEmitter as je}from"node:events";var Me=class extends i{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 Ne=new Set([`EROFS`,`EACCES`,`EPERM`]);function Pe(e){return e!==void 0&&Ne.has(e)}let Fe=!1;function Ie(e){if(Fe||!process.env.VERCEL_DEPLOYMENT_ID)return;let t=z.resolve(e),n=De();t===n||t.startsWith(`${n}${z.sep}`)||(Fe=!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 Le(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function Re(e,t){let n=[],r=e.trim().split(`
|
|
2
|
+
`);for(let e of r){let r=e.trim().split(/\s+/);if(r.length<5||r[0]?.toUpperCase()!==`TCP`)continue;let[,i,,a,o]=r;if(a?.toUpperCase()!==`LISTENING`||o!==t.toString())continue;let s=i.lastIndexOf(`:`);if(s===-1)continue;let c=Le(i.slice(s+1));c!==void 0&&n.push(c)}return n}const ze=N(Oe);function Be(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const Ve=((e,t)=>e.join(t))([``,`proc`],`/`);async function He(e){let t=[`${Ve}/net/tcp`,`${Ve}/net/tcp6`],n=[],r=new Set,i=`${Ve}/${e}/fd`;try{let e=(await Ce(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await we(`${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 L(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=Be(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 Ue(e){try{let{stdout:t}=await ze(`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=Be(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function We(e){try{let{stdout:t}=await ze(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Re(t,e)}catch{return[]}}async function Ge(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await He(e);case`darwin`:return await Ue(e);case`win32`:return await We(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const Ke=`${p}/flow?__health`;async function qe(e,t={}){let{endpoint:n=Ke,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 Je(e){let t=await Ge();if(t.length===0)return;if(t.length===1)return t[0];let n=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await qe(t,e)})))).find(e=>e.isWorkflow);return n?n.port:(process.env.NODE_ENV===`development`&&console.debug(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function Ye(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Xe=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,Ze=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Qe=Ye(()=>({dataDir:Xe(),baseUrl:Ze()}));function $e(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 et(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??d(`http://localhost`)}async function tt(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 d(`http://localhost:${e.port}`);if(process.env.PORT)return d(`http://localhost:${process.env.PORT}`);let t=await Je({endpoint:f()});if(t)return d(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const nt=v(()=>Math.random());function rt(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var it=class extends i{constructor(e,t){super(`Unsafe ${e} "${rt(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function L(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new it(e,t)}function R(e,...t){let n=I.resolve(e),r=I.resolve(e,...t);if(r!==n&&!r.startsWith(n+I.sep))throw new it(`path`,t.join(`/`));return r}const at=process.platform===`win32`;async function z(e,t=5){if(!at)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}const ot=new Set,st=new Set;function ct(){ot.clear(),st.clear()}const lt=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function B(e){return e.replace(lt,``)}function ut(e,t){return e.endsWith(`.${t}`)}function dt(e){return!lt.test(e)}function V(e,t,n,r){return L(`fileId`,n),r!==void 0&&L(`tag`,r),R(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function H(e,t,n,r,i){if(L(`fileId`,n),i!==void 0&&L(`tag`,i),i){let a=await G(R(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return G(R(e,t,`${n}.json`),r)}async function ft(e,t){let n=`.${t}.json`;try{return(await N.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function pt(e,t,n){let r=`.${t}${n}`;try{return(await N.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function mt(e){let t=I.resolve(e);if(!st.has(t))try{await N.mkdir(t,{recursive:!0}),st.add(t)}catch(e){let n=e.code;if(Pe(n)&&!await ht(t))throw new Me(t,n)}}async function ht(e){try{return(await N.stat(e)).isDirectory()}catch{return!1}}async function gt(e,t){await mt(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return st.delete(I.resolve(e)),await mt(e),t()}}function U(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function _t(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function W(e,t,n){return vt(e,JSON.stringify(t,U,2),n)}async function vt(e,t,n){if(!n?.overwrite){if(ot.has(e))throw new l(`File ${e} already exists and 'overwrite' is false`);try{throw await N.access(e),ot.add(e),new l(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${nt()}`,i=!1;try{await gt(I.dirname(e),async()=>{await N.writeFile(r,t),i=!0,await z(()=>N.rename(r,e))}),ot.add(e)}catch(e){throw i&&await z(()=>N.unlink(r),3).catch(()=>{}),e}}async function G(e,t){try{let n=await N.readFile(e,`utf-8`);return t.parse(JSON.parse(n,_t))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function yt(e){return await N.readFile(e)}async function bt(e){let t=await N.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 K(e){try{await z(()=>N.unlink(e))}catch(e){if(e.code!==`ENOENT`)throw e}}async function q(e,t){let n=`${e}.tmp.${nt()}`,r=!1;try{return await gt(I.dirname(e),async()=>{await N.writeFile(n,t,{flag:`wx`}),r=!0;try{return await z(()=>N.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await z(()=>N.unlink(n),3).catch(()=>{})}}async function xt(e,t){try{return await gt(I.dirname(t),()=>z(()=>N.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function J(e){return St(e,`.json`)}async function St(e,t){try{return(await N.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}function Ct(e){if(!e)return null;let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null}}function wt(e,t){return t?`${e.toISOString()}|${t}`:e.toISOString()}async function Y(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d}=e;i!==void 0&&L(`filePrefix`,i);let f=I.resolve(t),p=await J(f),m=i?p.filter(e=>e.startsWith(i)):p,h=a?m.filter(a):m,g=Ct(l),_=h;g&&(_=h.filter(e=>{let t=u(`${e}.json`);if(t){let e=g.timestamp.getTime(),n=t.getTime();return g.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let v=[];for(let e=0;e<_.length;e+=32){let t=_.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=I.join(f,`${e}.json`),i;try{let e=r?.get(t);i=e===void 0?await G(t,n):structuredClone(e)}catch(t){if(t instanceof x)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){if(g){let t=e.createdAt.getTime(),n=g.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&g.id&&d&&d(e)>=g.id)continue}else if(t<n||t===n&&g.id&&d&&d(e)<=g.id)continue}v.push(e)}}v.sort((e,t)=>{let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let y=v.length>c,b=y?v.slice(0,c):v;return{data:b,cursor:b.length>0?wt(b[b.length-1].createdAt,d?.(b[b.length-1])):null,hasMore:y}}let X=null;function Tt(){return typeof import.meta.url==`string`&&import.meta.url?I.dirname(ve(import.meta.url)):null}async function Et(){if(X)return X;let e=Tt();if(e)try{let t=await F(I.join(e,`../package.json`),`utf-8`);return X=JSON.parse(t),X}catch{}return X={name:`@workflow/world-local`,version:`5.0.0-beta.34`},X}const Dt=`version.txt`;var Ot=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},kt=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 At(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 Z(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function jt(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:At(t.substring(n+1))}}function Mt(e,t){return`${e}@${Z(t)}`}function Nt(e,t){console.log(`[world-local] Upgrading from version ${Z(e)} to ${Z(t)}`)}async function Pt(e){let t=I.resolve(e);try{await xe(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new Ot(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await ye(t,be.R_OK)}catch(e){let n=e;throw new Ot(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=I.join(t,`.workflow-write-test-${Date.now()}`);try{await Ee(n,``),await Te(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new Ot(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Ft(e){let t=I.join(I.resolve(e),Dt);try{return jt(await F(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function It(e,t){await Ee(I.join(I.resolve(e),Dt),Mt((await Et()).name,t))}function Lt(e,t){return t||Z(e)}async function Rt(e){await Pt(e);let t=await Et(),n=At(t.version),r=await Ft(e);if(r===null){await It(e,n);return}let{version:i}=r;if(Z(i)!==Z(n))try{Nt(i,n),await It(e,n)}catch(e){let r=Lt(i,e instanceof kt?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Z(i)} to ${Z(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let zt=null;async function Bt(){return zt||=import(`../../_chunks/workflow/src-Cj3P1ChQ.js`).then(e=>t(e.t(),1)).catch(()=>null),zt}let Vt=null;async function Ht(){return Vt||=Bt().then(e=>e?e.trace.getTracer(`workflow`):null),Vt}async function Ut(e,...t){let[n,r]=await Promise.all([Ht(),Bt()]),{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 Wt(e){let t=await Bt();if(t)return t.SpanKind[e]}function Q(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Gt=Q(`peer.service`),Kt=Q(`rpc.system`),qt=Q(`rpc.service`),Jt=Q(`rpc.method`),Yt=Q(`workflow.run.id`),Xt=Q(`step.id`),Zt={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},Qt={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},$t=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function en(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 tn(e,t){return typeof e[t]==`string`?e[t]:void 0}function nn(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function rn(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 an(e,t,n){let r=`${e}.${t}`,i={},a=Qt[r],o=a===void 0?$t.has(r)?nn(n[0]):void 0:tn(n,a);if(o&&Object.assign(i,Yt(o)),r===`world.steps.get`){let e=tn(n,1);e&&Object.assign(i,Xt(e))}return i}function on(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=en(t);r&&(n=`${e}.${a} ${r}`)}return Ut(n,{kind:await Wt(`INTERNAL`)},async r=>{r?.setAttributes({...Gt(Zt.peerService),...Kt(Zt.rpcSystem),...qt(Zt.rpcService),...Jt(n),...an(e,a,t)});let o=await i(...t),s=rn(o);return s&&r?.setAttributes(Yt(s)),o})}}return n}var sn=n((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimit=t.Sema=void 0;let r=n(e(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};t.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}t.RateLimit=f}))(),cn=he(),ln=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,U))}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,_t)}};const un=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,dn=2147483647,fn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3;function pn(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 mn(){return{bodyTimeout:pn(`WORKFLOW_LOCAL_BODY_TIMEOUT_MS`,3e4),connections:1e3,headersTimeout:pn(`WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`,3e4),keepAliveTimeout:3e4}}const hn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function gn(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(hn))return!0;t=`cause`in t?t.cause:void 0}return!1}function _n(e){let t=new cn.Agent(mn()),n=new ln,r=v(),i=new sn.Sema(fn),a=new AbortController,o=a.signal,s=new Map,c=new Map,l=async(a,l,d)=>{let f=[];if(d?.idempotencyKey){let e=s.get(d.idempotencyKey);if(e)return{messageId:e}}let p=n.serialize(l),{prefix:m}=O(a),h=D.parse(`msg_${r()}`),g=l,_=g.runId??void 0,v=g.stepId??void 0;if(d?.idempotencyKey){let e=d.idempotencyKey;s.set(e,h),f.push(()=>{s.delete(e)})}return(async()=>{d?.delaySeconds&&d.delaySeconds>0&&await ke(Math.min(d.delaySeconds*1e3,dn),void 0,{signal:o}),i.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${fn}) reached, waiting for queue to free up`),await i.acquire());let n=0;try{for(let r=0;r<256;r++){let i={...d?.headers,"content-type":`application/json`,"x-vqs-queue-name":a,"x-vqs-message-id":h,"x-vqs-message-attempt":String(n+1)},s=c.get(m),l,f;try{if(s)l=await s(new Request(u(et(e),{type:`flow`}),{method:`POST`,headers:i,body:p}));else{let n=await tt(e);l=await fetch(u(n,{type:`flow`}),{method:`POST`,duplex:`half`,dispatcher:t,headers:i,body:p})}n++,f=await l.text()}catch(e){let t=e?.name;if(o.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(gn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${r+1}), retrying`,{queueName:a,messageId:h,..._&&{runId:_},...v&&{stepId:v},error:String(e)}),await ke(5e3,void 0,{signal:o});continue}if(l.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await ke(Math.min(e*1e3,dn),void 0,{signal:o});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${n}, HTTP ${l.status})`,{queueName:a,messageId:h,..._&&{runId:_},...v&&{stepId:v},handlerError:f}),await ke(5e3,void 0,{signal:o})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:a,messageId:h,..._&&{runId:_},...v&&{stepId:v}})}finally{i.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(gn(e)?console.error(`[local world] Queue operation failed: detected "${hn}". 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:a,messageId:h,..._&&{runId:_},...v&&{stepId:v},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of f)e()}),{messageId:h}},d=_({"x-vqs-queue-name":le,"x-vqs-message-id":D,"x-vqs-message-attempt":y()});return{queue:l,createQueueHandler:(e,t)=>async n=>{let r=d.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new ln().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a}),n=null;return typeof e?.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,un)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await Et()).version}`,registerHandler(e,t){c.set(e,t)},async close(){o.aborted||(a.abort(),await t.close())}}}var vn=n(((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`)}}})),yn=n(((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=64*1024,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())}}})),bn=n(((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}})),xn=n(((t,n)=>{var r=e(`fs`),i=vn(),a=yn(),o=bn(),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=te,e.createWriteStream=w;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,S=g.WriteStream}var _=e.ReadStream;_&&(x.prototype=Object.create(_.prototype),x.prototype.open=ee);var v=e.WriteStream;v&&(S.prototype=Object.create(v.prototype),S.prototype.open=C),Object.defineProperty(e,"ReadStream",{get:function(){return x},set:function(e){x=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return S},set:function(e){S=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=S;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 ee(){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 S(e,t){return this instanceof S?(v.apply(this,arguments),this):S.apply(Object.create(S.prototype),arguments)}function C(){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 te(t,n){return new e.ReadStream(t,n)}function w(t,n){return new e.WriteStream(t,n)}var T=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 T(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))}}})),Sn=n(((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}})),Cn=n((e=>{var t=Sn();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:1*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}}})),wn=n(((e,t)=>{t.exports=Cn()})),Tn=n(((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})),En=n(((t,n)=>{let r=e(`path`),i=xn(),a=wn(),o=ge(),s=Tn(),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})),Dn=n(((e,t)=>{let n=xn();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}})),On=n(((e,t)=>{let n=En(),{toPromise:r,toSync:i,toSyncOptions:a}=Dn();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 kn(e){return M(`sha256`).update(e).digest(`hex`)}function An(e,t,n){return R(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function jn(e,t,n){let r=[An(e,t)];n&&r.push(An(e,t,n));for(let e of r)try{return await P.access(e),!0}catch{}return!1}function Mn(e,t,n){return R(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function Nn(e,t,n){let r=[Mn(e,t)];n&&r.push(Mn(e,t,n));for(let e of r)try{return await P.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function Pn(e,t,n){return R(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function Fn(e,t,n,r){return I.join(Pn(e,t,r),`${n}.json`)}async function In(e,t,n){let r=[Pn(e,t)];n&&r.push(Pn(e,t,n));for(let e of r){let t;try{t=await P.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await z(()=>P.unlink(I.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await P.rmdir(e).catch(()=>{})}}async function Ln(e,t,n){let r=[];try{r=await P.readdir(I.join(e,`events`))}catch(e){if(e.code!==`ENOENT`)throw e}let i=`${t}-`,a=null;for(let e of r){if(!e.startsWith(i)||!e.endsWith(`.json`))continue;let t=e.slice(0,-5);if(!dt(t)&&!(n&&ut(t,n)))continue;let r=B(t).slice(i.length);(!a||r>a)&&(a=r)}let o=Date.now();if(a)try{let e=b(a.replace(/^evnt_/,``));o<=e&&(o=e+1)}catch{}return{eventId:`evnt_${Gn(o)}`,createdAt:new Date(o)}}function Rn(e,t){return I.join(e,`hooks`,`tokens`,`${kn(t)}.json`)}const zn=_({hookId:m().optional(),runId:m(),eventId:m().optional(),tokenRetentionUntil:h().optional()});async function Bn(e){try{return await G(e,zn)}catch(e){if(e instanceof SyntaxError||e instanceof x)return null;throw e}}async function Vn(e,t,n){let r=Rn(e,t);await P.mkdir(I.dirname(r),{recursive:!0});let a=new AbortController,o;try{o=await(0,On.lock)(r,{realpath:!1,stale:3e4,update:1e3,retries:{retries:350,factor:1,minTimeout:100,maxTimeout:100},onCompromised(e){a.abort(new i(`Hook token claim lock was compromised`,{cause:e}))}})}catch(e){throw new i(`Could not acquire Hook token claim lock`,{cause:e})}let s;try{s=await n(a.signal),a.signal.throwIfAborted()}catch(e){throw a.signal.aborted||await o().catch(()=>{}),e}try{await o()}catch(e){throw new i(`Could not release Hook token claim lock`,{cause:e})}return s}function Hn(e,t,n){let r=M(`sha256`).update(`${t}\x00${n}`).digest(`hex`);return I.join(e,`hooks`,`resumes`,`${r}.json`)}async function Un(e,t,n,r){await Vn(e,t,async i=>{let a=Rn(e,t),o=await Bn(a);o&&o.runId===n&&o.hookId===r&&(i.throwIfAborted(),await K(a))})}function Wn(e,t,n,r){let i=M(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return I.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const Gn=v(()=>Math.random()),$=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=B(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?se(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:se(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},Kn=_({runId:m()}),qn=_({hookId:m(),tag:m().optional()});function Jn(e,t){return R(e,`hooks`,`token-index`,kn(t))}function Yn(e,t){return L(`hookId`,t),R(e,`hooks`,`id-index`,t)}function Xn(e){return R(e,`hooks`,`by-run`)}function Zn(e){let t=B(e);return t===e?void 0:e.slice(t.length+1)}function Qn(e,t){return t?dt(e)||ut(e,t):dt(e)}async function $n(e){try{return await G(e,C)}catch(e){if(e instanceof SyntaxError||e instanceof x)return null;throw e}}async function er(e,t,n,r,i,a){L(`runId`,n),L(`eventId`,i),a!==void 0&&L(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([q(I.join(Jn(e,t),o),s),q(I.join(Yn(e,r),o),s)])}function tr(e,t,n,r){return V(e,`hooks/by-run`,`${t}-${n}`,r)}async function nr(e,t,n,r){await q(tr(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function rr(e,t,n,r){await K(tr(e,t,n,r)),r&&await K(tr(e,t,n))}async function ir(e,t){L(`runId`,t);let n=Xn(e),r=`${t}-`,i=[];for(let e of await J(n)){if(!e.startsWith(r))continue;let t=null;try{t=await G(I.join(n,`${e}.json`),qn)}catch(e){if(!(e instanceof SyntaxError||e instanceof x))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function ar(e,t){await K(I.join(Xn(e),`${t}.json`))}const or=new Map;function sr(){or.clear()}async function cr(e){let t=I.resolve(e),n=or.get(t);return n||(n=ur(t).catch(e=>{throw or.delete(t),e}),or.set(t,n)),n}async function lr(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function ur(e){let t=I.join(e,`hooks`,`.hook-index-complete`);try{await P.access(t);return}catch{}let n=I.join(e,`events`);await lr(await J(n),32,async t=>{let r=await $n(I.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 er(e,i,r.runId,r.correlationId,r.eventId,Zn(t))}catch{}});let r=I.join(e,`hooks`);await lr(await J(r),32,async t=>{let n=null;try{n=await G(I.join(r,`${t}.json`),A)}catch(e){if(!(e instanceof SyntaxError||e instanceof x))throw e}if(n)try{await nr(e,n.runId,n.hookId,Zn(t))}catch{}}),await q(t,``)}async function dr(e,t,n,r){await cr(e);let i;try{i=t.kind===`token`?Jn(e,t.token):Yn(e,t.hookId)}catch{return null}let a=(await J(i)).filter(e=>Qn(e,r)).sort((e,t)=>B(t).localeCompare(B(e)));for(let t of a){let r=null;try{r=await G(I.join(i,`${t}.json`),Kn)}catch(e){if(!(e instanceof SyntaxError||e instanceof x))throw e}if(!r)continue;let a=B(t),o;try{o=V(e,`events`,`${r.runId}-${a}`,Zn(t))}catch{continue}let s=await $n(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function fr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function pr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function mr(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function hr(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function gr(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 _r(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function vr(e,t,n){let r=await H(e,`runs`,t,j,n);return r?ie(r.status):!1}async function yr(e,t,n,r){let i=await dr(e,t,e=>_r(e,n),r);if(!i||!_r(i,n))return null;if(await vr(e,i.runId,r)){let e=i.eventData.tokenRetentionUntil;if(!e||e.getTime()<=Date.now())return null}return await jn(e,i.correlationId,r)?null:i}async function br(e,t,n){let r=gr(t);return await q(Rn(e,r.token),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId,tokenRetentionUntil:t.eventData.tokenRetentionUntil})),await nr(e,r.runId,r.hookId,n),await q(V(e,`hooks`,r.hookId,n),JSON.stringify(r,U,2)),r}async function xr(e,t,n){let r=await yr(e,{kind:`token`,token:t},e=>hr(e)===t,n);return r?br(e,r,n):null}async function Sr(e,t,n){let r=await yr(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?br(e,r,n):null}function Cr(e,t){async function n(n){return await jn(e,n.hookId,t)?!1:n.tokenRetentionUntil&&n.tokenRetentionUntil.getTime()>Date.now()?!0:!await vr(e,n.runId,t)}async function r(r){let i=await Bn(Rn(e,r));if(i?.hookId){try{let a=await H(e,`hooks`,i.hookId,A,t);if(a?.token===r){if(!await n(a))throw new c(r);return{...a,isWebhook:a.isWebhook??!0}}}catch(e){if(!it.is(e))throw e}return null}let a=I.join(e,`hooks`),o=await J(a);for(let e of o){let t=await G(I.join(a,`${e}.json`),A);if(t?.token===r){if(!await n(t))throw new c(r);return{...t,isWebhook:t.isWebhook??!0}}}return null}async function i(r,i){L(`hookId`,r);let a=await H(e,`hooks`,r,A,t);if(a&&!await n(a))throw new c(r);let o=a??await Sr(e,r,t);if(!o)throw new c(r);let s=i?.resolveData||`all`;return mr({...o,isWebhook:o.isWebhook??!0},s)}async function a(n){let i=await r(n)??await xr(e,n,t);if(!i)throw new c(n);return i}async function o(t){let r=I.join(e,`hooks`),i=t.resolveData||`all`,a=await Y({directory:r,schema:A,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=>mr(e,i))}}return{get:i,getByToken:a,list:o}}async function wr(e,t){await cr(e);for(let n of await ir(e,t)){if(n.hookId){let r=null,i=null;try{i=V(e,`hooks`,n.hookId,n.tag),r=await G(i,A)}catch(e){if(!it.is(e)&&!(e instanceof SyntaxError||e instanceof x))throw e}if(r&&i&&r.runId===t){if(r.tokenRetentionUntil&&r.tokenRetentionUntil.getTime()>Date.now())continue;await Un(e,r.token,r.runId,r.hookId),await K(Wn(e,r.token,r.runId,r.hookId)),await K(i)}}await ar(e,n.fileId)}}async function Tr(e,t,n,r,i,a){if(ie(a.status)||await Nn(e,t))throw new o(`Workflow run "${t}" is already in a terminal state`);let s=Fn(e,t,n);await q(s,r);try{if(await Nn(e,t)||await xt(s,i)!==`linked`)throw new o(`Workflow run "${t}" is already in a terminal state`)}finally{await P.unlink(s).catch(()=>{})}}async function Er(e,t,n,r,i){L(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await q(Mn(e,t),``),await In(e,t);let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await W(R(e,`runs`,`${t}.json`),i,{overwrite:!0}),await wr(e,t),{event:void 0,run:fr(i,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${Gn()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:5},c=R(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await Tr(e,t,i,JSON.stringify(s,U,2),c,r):await W(c,s),{event:w(s,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const Dr=new Map;function Or(e,t){let n=Dr.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{Dr.get(e)===r.task&&Dr.delete(e)}})();return r.task=i,Dr.set(e,i),i}function kr(e,t){let n=(async(n,i)=>{L(`runId`,n);let a=await H(e,`runs`,n,j,t);if(!a)throw new r(n);return fr(a,i?.resolveData??`all`)});return{get:n,getMany:(async(e,t)=>{let i=[...new Set(e)],a=await Promise.all(i.map(async e=>{try{return await n(e,t)}catch(e){if(e instanceof r)return null;throw e}})),o=new Map(i.map((e,t)=>[e,a[t]]));return e.map(e=>o.get(e)??null)}),list:(async t=>{let n=t?.resolveData??`all`,r=await Y({directory:I.join(e,`runs`),schema:j,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:$(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(n,i,a)=>(L(`runId`,n),Or(n,async()=>{let o=await H(e,`runs`,n,j,t);if(!o)throw new r(n);try{S(i,{existingKeys:Object.keys(o.attributes??{}),allowReservedAttributes:a?.allowReservedAttributes})}catch(e){throw e instanceof E,e}let s=fe(o.attributes,i),c={...o,attributes:s,updatedAt:new Date};return await W(V(e,`runs`,n,t),c,{overwrite:!0}),{attributes:s}}))}}function Ar(){let e=process.env.WORKFLOW_MAX_EVENTS,t=e===void 0?NaN:Number(e);return Number.isInteger(t)&&t>0?t:25e3}const jr=1440*60*1e3;function Mr(){let e=Number(process.env.WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS??30);if(!Number.isFinite(e)||e<=0)throw new i(`WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS must be a positive number`,{status:400});return e*jr}const Nr=_({eventId:m()}),Pr=_({runId:m(),resumeId:m(),hookId:m(),eventId:m(),payloadDigest:m().optional()});async function Fr(e,t,n){if(t.hookId&&await jn(e,t.hookId,n))return!0;let r=await H(e,`runs`,t.runId,j,n);return r?ie(r.status)?!t.tokenRetentionUntil||t.tokenRetentionUntil.getTime()<=Date.now():!1:!0}async function Ir(e){try{return await G(e,Nr)}catch(e){if(e instanceof SyntaxError||e instanceof x)return null;throw e}}async function Lr(e,t,n){return(await Y({directory:I.join(e,`events`),schema:C,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:$(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function Rr(e,t,n,r,i){let a=await H(e,`events`,`${t}-${r}`,C,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await H(e,`hooks`,n,A,i))return;let o=gr(a);await er(e,o.token,t,n,r,i),await nr(e,t,n,i),await q(V(e,`hooks`,n,i),JSON.stringify(o,U,2))}async function zr(e,t,n,r,i){let a=Wn(e,t,n,r);return await q(a,JSON.stringify({eventId:i}))?i:(await Ir(a))?.eventId??null}function Br(e,t,n){let r=e.get(t),i={},a=(async()=>{r&&await r.catch(()=>void 0);try{return await n()}finally{e.get(t)===i.task&&e.delete(t)}})();return i.task=a,e.set(t,a),a}async function Vr(e,t){let n=I.join(e,`waits`),r=await J(n);for(let e of r)e.startsWith(`${t}-`)&&await K(I.join(n,`${e}.json`))}async function Hr(e,t,n,r){return Or(t,async()=>{let i=await G(V(e,`runs`,t,n),j),a={...r,attributes:i?.attributes??r.attributes};return await W(V(e,`runs`,t,n),a,{overwrite:!0}),a})}function Ur(e,t){let n=Mr(),u=4*1024*1024,d=new Map,f=new Map,p=new Map,m=0;function h(e){let t=d.get(e);if(!t)return;d.delete(e),m-=f.get(e)??0,f.delete(e);let n=p.get(t.runId);n?.delete(e),n?.size===0&&p.delete(t.runId)}function g(e){for(let t of p.get(e)??[])h(t)}function _(){d.clear(),f.clear(),p.clear(),m=0}function v(e,t,n){if(n>u)return;for(;d.size>0&&(d.size>=1e3||m+n>u);){let e=d.keys().next().value;h(e)}d.set(e,t),f.set(e,n),m+=n;let r=p.get(t.runId)??new Set;r.add(e),p.set(t.runId,r)}function y(e,t,n){if(re(e.eventType)){g(e.runId);return}let r=Buffer.byteLength(n);if(r>u)return;let i=C.safeParse(JSON.parse(n,_t));i.success&&v(t,i.data,r)}async function b(n){let r=V(e,`events`,`${n.runId}-${n.eventId}`,t),i=JSON.stringify(n,U,2);await vt(r,i),y(n,r,i)}let x=new Map,E=new Map;return{clearCache:_,async create(u,f,p){if(f.eventType===`hook_created`&&f.eventData.tokenRetentionUntil!==void 0&&f.eventData.tokenRetentionUntil.getTime()>Date.now()+n)throw new i(`Hook minimum retention cannot exceed ${n/jr} days in the Local World.`,{status:400});if(u!=null&&u!==``&&L(`runId`,u),`correlationId`in f&&typeof f.correlationId==`string`&&L(`correlationId`,f.correlationId),ne(f.eventType)&&u&&f.correlationId){let e=t?`${u}-${f.correlationId}.${t}`:`${u}-${f.correlationId}`;return Br(x,e,()=>m())}if(T(f.eventType)&&u&&f.correlationId){let e=t?`${u}-${f.correlationId}.hook.${t}`:`${u}-${f.correlationId}.hook`;return Br(E,e,m)}return m();async function m(){let n=`evnt_${Gn()}`,m=new Date,h;if(f.eventType===`run_created`&&(!u||u===``))h=`wrun_${Gn()}`;else if(u)h=u;else throw Error(`runId is required for non-run_created events`);if(f.eventType===`run_created`&&u&&u!==``){let e=ce(h,`wrun_`);if(e)throw new i(e)}let g=f.specVersion??5,_=null;if(f.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(f.eventType)&&(_=await H(e,`runs`,h,j,t),f.eventType===`run_started`&&!_&&`eventData`in f&&f.eventData)){let n=f.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){S(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:h,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:g,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:m,updatedAt:m};if(await q(V(e,`runs`,h,t),JSON.stringify(r,U))){let e=`evnt_${Gn()}`;await b({eventType:`run_created`,runId:h,eventId:e,createdAt:m,specVersion:g,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),_=r}else _=await H(e,`runs`,h,j,t)}}if(f.eventType===`run_failed`&&!_||f.eventType===`attr_set`&&!_)throw new r(h);if(_){if(me(_.specVersion))throw new s(_.specVersion,5);if(pe(_.specVersion))return Er(e,h,f,_,p)}let v=ee(f),x=v&&f.eventType===`step_started`;if(_&&ie(_.status)){if(f.eventType===`run_cancelled`&&_.status===`cancelled`){let e={...f,runId:h,eventId:n,createdAt:m,specVersion:g};return await b(e),{event:w(e,p?.resolveData??`all`),run:_,..._?{maxEvents:Ar()}:{}}}if(f.eventType===`run_started`)throw new o(`Workflow run "${h}" is already in terminal state "${_.status}"`);if(re(f.eventType))throw new l(`Cannot transition run from terminal state "${_.status}"`);if(v)throw new l(`Cannot create new entities on run in terminal state "${_.status}"`);if(f.eventType===`attr_set`)throw new l(`Cannot set attributes on run in terminal state "${_.status}"`)}let T=null;if(ne(f.eventType)&&f.eventType!==`step_created`&&f.correlationId){if(T=await H(e,`steps`,`${h}-${f.correlationId}`,de,t),!T&&!x)throw new i(`Step "${f.correlationId}" not found`);if(x&&T)throw new l(`Step "${f.correlationId}" already created`);if(T){if(ae(T.status))throw new l(`Cannot modify step in terminal state "${T.status}"`);if(_&&ie(_.status)&&T.status!==`running`)throw new o(`Cannot modify non-running step on run in terminal state "${_.status}"`)}}if(oe(f.eventType)&&f.correlationId){if(f.eventType===`hook_received`&&p?.resumeId){let n=await G(Hn(e,h,p.resumeId),Pr);if(n&&n.hookId===f.correlationId&&(!p.resumePayloadDigest||!n.payloadDigest||n.payloadDigest===p.resumePayloadDigest)){let r=await H(e,`events`,`${h}-${n.eventId}`,C,t);if(r)return{event:r}}}if(f.eventType===`hook_received`&&await jn(e,f.correlationId,t)||!await H(e,`hooks`,f.correlationId,A,t))throw new c(f.correlationId);if(f.eventType===`hook_received`&&p?.resumeId){let r=Hn(e,h,p.resumeId),i=async r=>{if(r.hookId!==f.correlationId)throw new l(`hook_received resumeId "${p.resumeId}" already recorded for a different hook`);if(p.resumePayloadDigest&&r.payloadDigest&&r.payloadDigest!==p.resumePayloadDigest)throw new l(`hook_received resumeId "${p.resumeId}" already recorded with a different payload`);let i=await H(e,`events`,`${h}-${r.eventId}`,C,t);return i?{event:i}:(n=r.eventId,null)},a=await G(r,Pr);if(a){let e=await i(a);if(e)return e}else if(!await q(r,JSON.stringify({runId:h,resumeId:p.resumeId,hookId:f.correlationId,eventId:n,...p.resumePayloadDigest?{payloadDigest:p.resumePayloadDigest}:{}}))){let e=await G(r,Pr);if(e){let t=await i(e);if(t)return t}}}}let E={...f,runId:h,eventId:n,createdAt:m,specVersion:g,...f.eventType===`hook_received`&&p?.resumeId?{resumeId:p.resumeId}:{}};if(f.eventType===`run_started`&&`eventData`in E&&delete E.eventData,x&&E.eventType===`step_started`&&E.eventData){let{input:e,...t}=E.eventData;E={...E,eventData:t}}let D,O,k,le,he=!1,ge;if(re(f.eventType)&&_){await q(Mn(e,h,t),``),await In(e,h,t);let r=await Ln(e,h,t);n=r.eventId,E={...E,eventId:n,createdAt:r.createdAt}}if(f.eventType===`run_created`&&`eventData`in f){let n=f.eventData;if(S(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),D={runId:h,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:g,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:m,updatedAt:m},!await q(V(e,`runs`,h,t),JSON.stringify(D,U,2)))throw new l(`Workflow run "${h}" already exists`)}else if(f.eventType===`run_started`){if(_){if(_.status===`running`)return{run:_,maxEvents:Ar()};D=await Hr(e,h,t,{runId:_.runId,deploymentId:_.deploymentId,workflowName:_.workflowName,specVersion:_.specVersion,executionContext:_.executionContext,input:_.input,createdAt:_.createdAt,expiredAt:_.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:_.startedAt??m,updatedAt:m,attributes:_.attributes,encryptionPublicKey:_.encryptionPublicKey})}}else if(f.eventType===`run_completed`&&`eventData`in f){let n=f.eventData;_&&(D=await Hr(e,h,t,{runId:_.runId,deploymentId:_.deploymentId,workflowName:_.workflowName,specVersion:_.specVersion,executionContext:_.executionContext,input:_.input,createdAt:_.createdAt,expiredAt:_.expiredAt,startedAt:_.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:m,updatedAt:m,attributes:_.attributes,encryptionPublicKey:_.encryptionPublicKey}),await Promise.all([wr(e,h),Vr(e,h)]))}else if(f.eventType===`run_failed`&&`eventData`in f){let n=f.eventData;_&&(D=await Hr(e,h,t,{runId:_.runId,deploymentId:_.deploymentId,workflowName:_.workflowName,specVersion:_.specVersion,executionContext:_.executionContext,input:_.input,createdAt:_.createdAt,expiredAt:_.expiredAt,startedAt:_.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:m,updatedAt:m,attributes:_.attributes,encryptionPublicKey:_.encryptionPublicKey}),await Promise.all([wr(e,h),Vr(e,h)]))}else if(f.eventType===`run_cancelled`)_&&(D=await Hr(e,h,t,{runId:_.runId,deploymentId:_.deploymentId,workflowName:_.workflowName,specVersion:_.specVersion,executionContext:_.executionContext,input:_.input,createdAt:_.createdAt,expiredAt:_.expiredAt,startedAt:_.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:m,updatedAt:m,attributes:_.attributes,encryptionPublicKey:_.encryptionPublicKey}),await Promise.all([wr(e,h),Vr(e,h)]));else if(f.eventType===`attr_set`&&_)D=await Or(h,async()=>{let n=await G(V(e,`runs`,h,t),j);if(!n)throw new r(h);if(S(f.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:f.eventData.allowReservedAttributes===!0}),f.correlationId&&f.eventData.writer.type===`workflow`&&!await q(R(e,`.locks`,`attributes`,t?`${h}-${f.correlationId}.created.${t}`:`${h}-${f.correlationId}.created`),``))throw new l(`Attribute event "${f.correlationId}" already exists`);let i={...n,attributes:fe(n.attributes,f.eventData.changes),updatedAt:m};return await W(V(e,`runs`,h,t),i,{overwrite:!0}),i});else if(f.eventType===`step_created`&&`eventData`in f){if(!await q(R(e,`.locks`,`steps`,t?`${h}-${f.correlationId}.created.${t}`:`${h}-${f.correlationId}.created`),``))throw new l(`Step "${f.correlationId}" already created`);let n=f.eventData;O={runId:h,stepId:f.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:m,updatedAt:m,specVersion:g},await W(V(e,`steps`,`${h}-${f.correlationId}`,t),O)}else if(f.eventType===`step_started`){if(!T&&x){let n=f.eventData;if(await q(R(e,`.locks`,`steps`,t?`${h}-${f.correlationId}.created.${t}`:`${h}-${f.correlationId}.created`),``)){let r={runId:h,stepId:f.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:m,updatedAt:m,specVersion:g};await W(V(e,`steps`,`${h}-${f.correlationId}`,t),r);let i=`evnt_${Gn()}`,a={eventType:`step_created`,runId:h,eventId:i,createdAt:m,specVersion:g,correlationId:f.correlationId,eventData:{stepName:n.stepName,input:n.input}};await W(V(e,`events`,`${h}-${i}`,t),a),T=r,he=!0}else throw new l(`Step "${f.correlationId}" already created`)}if(T){if(T.retryAfter&&T.retryAfter.getTime()>Date.now())throw new a(`Cannot start step "${f.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((T.retryAfter.getTime()-Date.now())/1e3)});let n=`${h}-${f.correlationId}`,r=await H(e,`steps`,n,de,t);if(r&&ae(r.status))throw new l(`Cannot modify step in terminal state "${r.status}"`);O={...T,status:`running`,startedAt:T.startedAt??m,attempt:T.attempt+1,retryAfter:void 0,updatedAt:m},await W(V(e,`steps`,n,t),O,{overwrite:!0})}}else if(f.eventType===`step_completed`&&`eventData`in f){let n=f.eventData;if(T){let r=`${h}-${f.correlationId}`;if(!await q(R(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new l(`Cannot modify step in terminal state`);O={...T,status:`completed`,output:n.result,completedAt:m,updatedAt:m},await W(V(e,`steps`,r,t),O,{overwrite:!0})}}else if(f.eventType===`step_failed`&&`eventData`in f){let n=f.eventData;if(T){let r=`${h}-${f.correlationId}`;if(!await q(R(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new l(`Cannot modify step in terminal state`);O={...T,status:`failed`,error:n.error,completedAt:m,updatedAt:m},await W(V(e,`steps`,r,t),O,{overwrite:!0})}}else if(f.eventType===`step_retrying`&&`eventData`in f){let n=f.eventData;if(T){let r=`${h}-${f.correlationId}`;O={...T,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:m},await W(V(e,`steps`,r,t),O,{overwrite:!0})}}else if(f.eventType===`hook_created`&&`eventData`in f){let r=f.eventData,i=Rn(e,r.token),a=JSON.stringify({token:r.token,hookId:f.correlationId,runId:h,eventId:n,tokenRetentionUntil:r.tokenRetentionUntil}),o=await Vn(e,r.token,async n=>{let o=await Bn(i);return o||=(n.throwIfAborted(),await K(i),await xr(e,r.token,t),await Bn(i)),o?o.runId===h&&o.hookId===f.correlationId?{status:`owned`,claim:o}:await Fr(e,o,t)?(n.throwIfAborted(),await K(i),o.hookId&&(await K(V(e,`hooks`,o.hookId,t)),await K(Wn(e,r.token,o.runId,o.hookId)),await rr(e,o.runId,o.hookId,t)),n.throwIfAborted(),Ae(await q(i,a)),{status:`claimed`}):{status:`conflict`,claim:o}:(n.throwIfAborted(),Ae(await q(i,a)),{status:`claimed`})});if(o.status===`owned`){let i=o.claim,a;if(i.eventId)a=i.eventId;else{let i=await Lr(e,h,f.correlationId);if(i!==null)throw await Rr(e,h,f.correlationId,i,t),new l(`Hook "${f.correlationId}" already created`);let o=await zr(e,r.token,h,f.correlationId,n);if(o===null)throw new l(`Hook "${f.correlationId}" already created`);a=o}n=a;let s=se(n.replace(/^evnt_/,``))??m;E={...f,eventData:{...f.eventData,tokenRetentionUntil:i.tokenRetentionUntil},runId:h,eventId:n,createdAt:s,specVersion:g}}if(o.status===`conflict`){let e=o.claim,t={eventType:`hook_conflict`,correlationId:f.correlationId,eventData:{token:r.token,conflictingRunId:e.runId},runId:h,eventId:n,createdAt:m,specVersion:g};return await b(t),{event:w(t,p?.resolveData??`all`),run:D,step:O,hook:void 0}}let s=E.eventData;k={runId:h,hookId:f.correlationId,token:s.token,metadata:s.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:E.createdAt,specVersion:g,isWebhook:s.isWebhook??!1,isSystem:s.isSystem??!1,tokenRetentionUntil:s.tokenRetentionUntil},ge=o.status===`owned`?{overwrite:!0}:void 0,await er(e,r.token,h,f.correlationId,n,t)}else if(f.eventType===`hook_disposed`){if(!await q(An(e,f.correlationId,t),``))throw new l(`Hook "${f.correlationId}" already disposed`);let n=V(e,`hooks`,f.correlationId,t),r=await H(e,`hooks`,f.correlationId,A,t);r&&(await Un(e,r.token,r.runId,r.hookId),await K(Wn(e,r.token,r.runId,r.hookId))),await K(n),await rr(e,h,f.correlationId,t)}else if(f.eventType===`wait_created`&&`eventData`in f){let n=`${h}-${f.correlationId}`;if(!await q(R(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new l(`Wait "${f.correlationId}" already exists`);let r=f.eventData;le={waitId:n,runId:h,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:m,updatedAt:m,specVersion:g},await W(V(e,`waits`,n,t),le)}else if(f.eventType===`wait_completed`){let n=`${h}-${f.correlationId}`,r=R(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await q(r,``))throw new l(`Wait "${f.correlationId}" already completed`);let a=await H(e,`waits`,n,ue,t);if(!a)throw await P.unlink(r).catch(()=>{}),new i(`Wait "${f.correlationId}" not found`);le={...a,status:`completed`,completedAt:m,updatedAt:m},await W(V(e,`waits`,n,t),le,{overwrite:!0})}if(f.eventType===`hook_received`&&f.correlationId&&await jn(e,f.correlationId,t))throw new c(f.correlationId);let M=V(e,`events`,`${h}-${n}`,t),_e=JSON.stringify(E,U,2),ve;if(f.eventType===`hook_received`){let r=await Nn(e,h,t),i=r?null:await H(e,`runs`,h,j,t);if(r||i&&ie(i.status))throw new o(`Workflow run "${h}" is already in a terminal state`);let a=Fn(e,h,n,t);if(!await q(a,_e))throw new l(`Event "${n}" already exists for run "${h}"`);try{if(await Nn(e,h,t))throw new o(`Workflow run "${h}" is already in a terminal state`);let n=await xt(a,M);if(n===`missing`)throw new o(`Workflow run "${h}" is already in a terminal state`);ve=n===`linked`}finally{await K(a).catch(()=>{})}}else ve=await q(M,_e);if(!ve)throw f.eventType===`hook_created`&&f.correlationId&&await Rr(e,h,f.correlationId,n,t),new l(`Event "${n}" already exists for run "${h}"`);y(E,M,_e),k&&f.eventType===`hook_created`&&(await nr(e,k.runId,k.hookId,t),await W(V(e,`hooks`,k.hookId,t),k,ge));let N=p?.resolveData??`all`,ye=w(E,N),be,xe,F;if(f.eventType===`run_started`&&D){let t=await Y({directory:I.join(e,`events`),schema:C,cachedItems:d,filePrefix:`${h}-`,sortOrder:`asc`,limit:1e3,getCreatedAt:$(`evnt`),getId:e=>e.eventId});be=t.data,xe=t.cursor,F=t.hasMore}if(te(f.eventType)&&typeof p?.sinceCursor==`string`){let t=await Y({directory:I.join(e,`events`),schema:C,filePrefix:`${h}-`,sortOrder:`asc`,cursor:p.sinceCursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});be=N===`none`?t.data.map(e=>w(e,N)):t.data,xe=t.cursor,F=t.hasMore}return{event:ye,run:D,step:O,hook:k,wait:le,events:be,cursor:xe,hasMore:F,...he?{stepCreated:!0}:{},...D?{maxEvents:Ar()}:{}}}},async get(n,r,i){L(`runId`,n),L(`eventId`,r);let a=await H(e,`events`,`${n}-${r}`,C,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return w(a,i?.resolveData??`all`)},async list(t){let{runId:n}=t;L(`runId`,n);let r=t.resolveData??`all`,i=await Y({directory:I.join(e,`events`),schema:C,cachedItems:d,filePrefix:`${n}-`,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return r===`none`?{...i,data:i.data.map(e=>w(e,r))}:i},async listByCorrelationId(t){let n=t.correlationId;L(`correlationId`,n),L(`runId`,t.runId);let r=t.resolveData??`all`,i=await Y({directory:I.join(e,`events`),schema:C,cachedItems:d,filePrefix:`${t.runId}-`,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return r===`none`?{...i,data:i.data.map(e=>w(e,r))}:i}}}function Wr(e,t){return{get:(async(n,r,i)=>{L(`runId`,n),L(`stepId`,r);let a=await H(e,`steps`,`${n}-${r}`,de,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return pr(a,i?.resolveData??`all`)}),list:(async t=>{L(`runId`,t.runId);let n=t.resolveData??`all`,r=await Y({directory:I.join(e,`steps`),schema:de,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function Gr(e,t){let n=kr(e,t),r=Wr(e,t),i=Ur(e,t),a=Cr(e,t);return{runs:on(`world.runs`,n),steps:on(`world.steps`,r),events:on(`world.events`,i),hooks:on(`world.hooks`,a),clearCache:()=>i.clearCache()}}const Kr=v(()=>Math.random()),qr=_({streams:g(m())});function Jr(e){return e===1}function Yr(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function Xr(e){return Jr(e[0])}function Zr(e){return{eof:Xr(e),chunk:Buffer.from(e.subarray(1))}}async function Qr(e){try{return await P.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function $r(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 ei(e,t){return L(`streamName`,t),I.join(e,t)}async function ti(e,t,n){let r=ei(e,t),i=await Qr(r),a=new Map;return $r(a,i,`.json`),$r(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&$r(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function ni(e,t){let n=t?`.${t}`:``,r=new je,i=new Set;async function a(n,r){L(`runId`,n),L(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=V(e,`streams/runs`,n,t),s=(await H(e,`streams/runs`,n,qr,t))?.streams??[];s.includes(r)||(s.push(r),await W(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_${Kr()}`;await a(await t,i);let l=o(s),u=Yr({chunk:l,eof:!1});await vt(I.join(ei(I.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_${Kr()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=Yr({chunk:t,eof:!1});return await vt(I.join(ei(I.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_${Kr()}`;await a(await t,i),await vt(I.join(ei(I.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),Yr({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return L(`runId`,n),(await H(e,`streams/runs`,n,qr,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await ti(I.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=I.join(c,`${e}${t}`);if(f<l){if(Jr(await bt(n))){u=!0;break}f++;continue}if(d.length>=a){Jr(await bt(n))?u=!0:f++;break}let r=Zr(await yt(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 ti(I.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(Jr(await bt(I.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=I.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 ti(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`;Jr(await bt(I.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=Zr(await yt(I.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 ti(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=Zr(await yt(I.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 ri(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Qe.value,...t};Ie(n.dataDir);let r=n.tag,i=_n(n),{clearCache:a,...o}=Gr(n.dataDir,r),s=$e(n);return{specVersion:5,capabilities:{hookRetention:{active:!0},hookResumeDedup:!0},...i,...o,...on(`world.streams`,{...ni(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Rt(n.dataDir),!s)return;let e=r?e=>ut(e,r):dt;await k({...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))},i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=I.join(e,`hooks`),i=await ft(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-C8PhDW9B.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await G(I.join(t,n),a);r?.token&&(await K(I.join(t,`tokens`,`${kn(r.token)}.json`)),await K(Wn(e,r.token,r.runId,r.hookId)))})),await Promise.all([`runs`,`steps`,`events`,`hooks`,`hooks/by-run`,`waits`,`streams/runs`].map(async t=>{let n=I.join(e,t),i=await ft(n,r);await Promise.all(i.map(e=>K(I.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=I.join(e,`hooks`,t),i;try{i=await N.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=I.join(n,e.name),i=await ft(t,r);await Promise.all(i.map(e=>K(I.join(t,e))))}))}await N.rm(I.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=I.join(e,`streams`,`chunks`),s;try{s=await N.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=I.join(o,e.name),n=await pt(t,r,`.bin`);await Promise.all(n.map(e=>N.unlink(I.join(t,e)).catch(()=>{})))})),ct()}else ct(),sr(),await we(n.dataDir,{recursive:!0,force:!0}),await Rt(n.dataDir)}}}export{Ot as DataDirAccessError,kt as DataDirVersionError,Me as UnwritableDataDirError,ri as createWorld,Pt as ensureDataDir,Rt as initDataDir,At 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=Be(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function We(e){try{let{stdout:t}=await ze(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Re(t,e)}catch{return[]}}async function Ge(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await He(e);case`darwin`:return await Ue(e);case`win32`:return await We(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const Ke=`${p}/flow?__health`;async function qe(e,t={}){let{endpoint:n=Ke,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 Je(e){let t=await Ge();if(t.length===0)return;if(t.length===1)return t[0];let n=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await qe(t,e)})))).find(e=>e.isWorkflow);return n?n.port:(process.env.NODE_ENV===`development`&&console.debug(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function Ye(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Xe=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,Ze=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Qe=Ye(()=>({dataDir:Xe(),baseUrl:Ze()}));function $e(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 et(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??d(`http://localhost`)}async function tt(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 d(`http://localhost:${e.port}`);if(process.env.PORT)return d(`http://localhost:${process.env.PORT}`);let t=await Je({endpoint:f()});if(t)return d(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const nt=ue(()=>Math.random());function rt(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var it=class extends i{constructor(e,t){super(`Unsafe ${e} "${rt(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function B(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new it(e,t)}function V(e,...t){let n=z.resolve(e),r=z.resolve(e,...t);if(r!==n&&!r.startsWith(n+z.sep))throw new it(`path`,t.join(`/`));return r}const at=process.platform===`win32`;async function H(e,t=5){if(!at)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}const ot=new Set,st=new Set;function ct(){ot.clear(),st.clear()}const lt=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function U(e){return e.replace(lt,``)}function ut(e,t){return e.endsWith(`.${t}`)}function dt(e){return!lt.test(e)}function W(e,t,n,r){return B(`fileId`,n),r!==void 0&&B(`tag`,r),V(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function G(e,t,n,r,i){if(B(`fileId`,n),i!==void 0&&B(`tag`,i),i){let a=await J(V(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return J(V(e,t,`${n}.json`),r)}async function ft(e,t){let n=`.${t}.json`;try{return(await F.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function pt(e,t,n){let r=`.${t}${n}`;try{return(await F.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function mt(e){let t=z.resolve(e);if(!st.has(t))try{await F.mkdir(t,{recursive:!0}),st.add(t)}catch(e){let n=e.code;if(Pe(n)&&!await ht(t))throw new Me(t,n)}}async function ht(e){try{return(await F.stat(e)).isDirectory()}catch{return!1}}async function gt(e,t){await mt(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return st.delete(z.resolve(e)),await mt(e),t()}}function K(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function _t(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 vt(e,JSON.stringify(t,K,2),n)}async function vt(e,t,n){if(!n?.overwrite){if(ot.has(e))throw new l(`File ${e} already exists and 'overwrite' is false`);try{throw await F.access(e),ot.add(e),new l(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${nt()}`,i=!1;try{await gt(z.dirname(e),async()=>{await F.writeFile(r,t),i=!0,await H(()=>F.rename(r,e))}),ot.add(e)}catch(e){throw i&&await H(()=>F.unlink(r),3).catch(()=>{}),e}}async function J(e,t){try{let n=await F.readFile(e,`utf-8`);return t.parse(JSON.parse(n,_t))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function yt(e){return await F.readFile(e)}async function bt(e){let t=await F.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function Y(e){try{await H(()=>F.unlink(e))}catch(e){if(e.code!==`ENOENT`)throw e}}async function X(e,t){let n=`${e}.tmp.${nt()}`,r=!1;try{return await gt(z.dirname(e),async()=>{await F.writeFile(n,t,{flag:`wx`}),r=!0;try{return await H(()=>F.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await H(()=>F.unlink(n),3).catch(()=>{})}}async function xt(e,t){try{return await gt(z.dirname(t),()=>H(()=>F.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 St(e,`.json`)}async function St(e,t){try{return(await F.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}const Ct=`key:`;function wt(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 Tt(e,t,n){return n?`${Ct}${n}`:t?`${e.toISOString()}|${t}`:e.toISOString()}async function Q(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&&B(`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=wt(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 O)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?Tt(S[S.length-1].createdAt,d?.(S[S.length-1]),f?.(S[S.length-1])):null,hasMore:x}}let Et=null;function Dt(){return typeof import.meta.url==`string`&&import.meta.url?z.dirname(P(import.meta.url)):null}async function Ot(){if(Et)return Et;let e=Dt();if(e)try{let t=await L(z.join(e,`../package.json`),`utf-8`);return Et=JSON.parse(t),Et}catch{}return Et={name:`@workflow/world-local`,version:`5.0.0-beta.35`},Et}const kt=`version.txt`;var At=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},jt=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 Mt(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 $(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function Nt(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:Mt(t.substring(n+1))}}function Pt(e,t){return`${e}@${$(t)}`}function Ft(e,t){console.log(`[world-local] Upgrading from version ${$(e)} to ${$(t)}`)}async function It(e){let t=z.resolve(e);try{await Se(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new At(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await be(t,xe.R_OK)}catch(e){let n=e;throw new At(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=z.join(t,`.workflow-write-test-${Date.now()}`);try{await R(n,``),await Ee(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new At(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Lt(e){let t=z.join(z.resolve(e),kt);try{return Nt(await L(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Rt(e,t){await R(z.join(z.resolve(e),kt),Pt((await Ot()).name,t))}function zt(e,t){return t||$(e)}async function Bt(e){await It(e);let t=await Ot(),n=Mt(t.version),r=await Lt(e);if(r===null){await Rt(e,n);return}let{version:i}=r;if($(i)!==$(n))try{Ft(i,n),await Rt(e,n)}catch(e){let r=zt(i,e instanceof jt?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${$(i)} to ${$(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let Vt=null;async function Ht(){return Vt||=import(`../../_chunks/workflow/src-Cj3P1ChQ.js`).then(e=>t(e.t(),1)).catch(()=>null),Vt}let Ut=null;async function Wt(){return Ut||=Ht().then(e=>e?e.trace.getTracer(`workflow`):null),Ut}async function Gt(e,...t){let[n,r]=await Promise.all([Wt(),Ht()]),{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 Kt(e){let t=await Ht();if(t)return t.SpanKind[e]}function qt(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Jt=qt(`peer.service`),Yt=qt(`rpc.system`),Xt=qt(`rpc.service`),Zt=qt(`rpc.method`),Qt=qt(`workflow.run.id`),$t=qt(`step.id`),en={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},tn={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},nn=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function rn(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 an(e,t){return typeof e[t]==`string`?e[t]:void 0}function on(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function sn(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 cn(e,t,n){let r=`${e}.${t}`,i={},a=tn[r],o=a===void 0?nn.has(r)?on(n[0]):void 0:an(n,a);if(o&&Object.assign(i,Qt(o)),r===`world.steps.get`){let e=an(n,1);e&&Object.assign(i,$t(e))}return i}function ln(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=rn(t);r&&(n=`${e}.${a} ${r}`)}return Gt(n,{kind:await Kt(`INTERNAL`)},async r=>{r?.setAttributes({...Jt(en.peerService),...Yt(en.rpcSystem),...Xt(en.rpcService),...Zt(n),...cn(e,a,t)});let o=await i(...t),s=sn(o);return s&&r?.setAttributes(Qt(s)),o})}}return n}var un=n((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimit=t.Sema=void 0;let r=n(e(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};t.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}t.RateLimit=f}))(),dn=ve(),fn=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,_t)}};const pn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,mn=2147483647,hn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3;function gn(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 _n(){return{bodyTimeout:gn(`WORKFLOW_LOCAL_BODY_TIMEOUT_MS`,3e4),connections:1e3,headersTimeout:gn(`WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`,3e4),keepAliveTimeout:3e4}}const vn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function yn(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(vn))return!0;t=`cause`in t?t.cause:void 0}return!1}function bn(e){let t=new dn.Agent(_n()),n=new fn,r=ue(),i=new un.Sema(hn),a=new AbortController,o=a.signal,s=new Map,c=new Map,l=async(a,l,d)=>{let f=[];if(d?.idempotencyKey){let e=s.get(d.idempotencyKey);if(e)return{messageId:e}}let p=n.serialize(l),{prefix:m}=he(a),h=D.parse(`msg_${r()}`),g=l,_=g.runId??void 0,v=g.stepId??void 0;if(d?.idempotencyKey){let e=d.idempotencyKey;s.set(e,h),f.push(()=>{s.delete(e)})}return(async()=>{d?.delaySeconds&&d.delaySeconds>0&&await ke(Math.min(d.delaySeconds*1e3,mn),void 0,{signal:o}),i.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${hn}) reached, waiting for queue to free up`),await i.acquire());let n=0;try{for(let r=0;r<256;r++){let i={...d?.headers,"content-type":`application/json`,"x-vqs-queue-name":a,"x-vqs-message-id":h,"x-vqs-message-attempt":String(n+1)},s=c.get(m),l,f;try{if(s)l=await s(new Request(u(et(e),{type:`flow`}),{method:`POST`,headers:i,body:p}));else{let n=await tt(e);l=await fetch(u(n,{type:`flow`}),{method:`POST`,duplex:`half`,dispatcher:t,headers:i,body:p})}n++,f=await l.text()}catch(e){let t=e?.name;if(o.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(yn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${r+1}), retrying`,{queueName:a,messageId:h,..._&&{runId:_},...v&&{stepId:v},error:String(e)}),await ke(5e3,void 0,{signal:o});continue}if(l.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await ke(Math.min(e*1e3,mn),void 0,{signal:o});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${n}, HTTP ${l.status})`,{queueName:a,messageId:h,..._&&{runId:_},...v&&{stepId:v},handlerError:f}),await ke(5e3,void 0,{signal:o})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:a,messageId:h,..._&&{runId:_},...v&&{stepId:v}})}finally{i.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(yn(e)?console.error(`[local world] Queue operation failed: detected "${vn}". 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:a,messageId:h,..._&&{runId:_},...v&&{stepId:v},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of f)e()}),{messageId:h}},d=_({"x-vqs-queue-name":A,"x-vqs-message-id":D,"x-vqs-message-attempt":E()});return{queue:l,createQueueHandler:(e,t)=>async n=>{let r=d.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new fn().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a}),n=null;return typeof e?.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,pn)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await Ot()).version}`,registerHandler(e,t){c.set(e,t)},async close(){o.aborted||(a.abort(),await t.close())}}}var xn=n(((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`)}}})),Sn=n(((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=64*1024,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())}}})),Cn=n(((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}})),wn=n(((t,n)=>{var r=e(`fs`),i=xn(),a=Sn(),o=Cn(),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=ee,e.createWriteStream=te;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=w),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;re(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 w(){var e=this;re(e.path,e.flags,e.mode,function(t,n){t?(e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n))})}function ee(t,n){return new e.ReadStream(t,n)}function te(t,n){return new e.WriteStream(t,n)}var ne=e.open;e.open=re;function re(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 ne(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))}}})),Tn=n(((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}})),En=n((e=>{var t=Tn();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:1*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}}})),Dn=n(((e,t)=>{t.exports=En()})),On=n(((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})),kn=n(((t,n)=>{let r=e(`path`),i=wn(),a=Dn(),o=ye(),s=On(),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})),An=n(((e,t)=>{let n=wn();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}})),jn=n(((e,t)=>{let n=kn(),{toPromise:r,toSync:i,toSyncOptions:a}=An();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 Mn(e){return M(`sha256`).update(e).digest(`hex`)}function Nn(e,t,n){return V(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function Pn(e,t,n){let r=[Nn(e,t)];n&&r.push(Nn(e,t,n));for(let e of r)try{return await I.access(e),!0}catch{}return!1}function Fn(e,t,n){return V(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function In(e,t,n){let r=[Fn(e,t)];n&&r.push(Fn(e,t,n));for(let e of r)try{return await I.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function Ln(e,t,n){return V(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function Rn(e,t,n,r){return z.join(Ln(e,t,r),`${n}.json`)}async function zn(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 I.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await H(()=>I.unlink(z.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await I.rmdir(e).catch(()=>{})}}async function Bn(e,t,n){let r=await Vn(e,t,n),i=Date.now();if(r.maxId)try{let e=T(r.maxId.replace(/^evnt_/,``));i<=e&&(i=e+1)}catch{}return{eventId:`evnt_${Yn(i)}`,createdAt:new Date(i)}}async function Vn(e,t,n){let r=[];try{r=await I.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(!dt(t)&&!(n&&ut(t,n)))continue;let r=U(t).slice(i.length);l+=1,a.push(r),(!o||r>o)&&(o=r);let u=ae(r);u!==null&&(c=!0,u>s&&(s=u))}return{maxId:o,usesSlots:c,maxSlot:s,count:l,ids:a}}function Hn(e,t){return z.join(e,`hooks`,`tokens`,`${Mn(t)}.json`)}const Un=_({hookId:S().optional(),runId:S(),eventId:S().optional(),tokenRetentionUntil:m().optional()});async function Wn(e){try{return await J(e,Un)}catch(e){if(e instanceof SyntaxError||e instanceof O)return null;throw e}}async function Gn(e,t,n){let r=Hn(e,t);await I.mkdir(z.dirname(r),{recursive:!0});let a=new AbortController,o;try{o=await(0,jn.lock)(r,{realpath:!1,stale:3e4,update:1e3,retries:{retries:350,factor:1,minTimeout:100,maxTimeout:100},onCompromised(e){a.abort(new i(`Hook token claim lock was compromised`,{cause:e}))}})}catch(e){throw new i(`Could not acquire Hook token claim lock`,{cause:e})}let s;try{s=await n(a.signal),a.signal.throwIfAborted()}catch(e){throw a.signal.aborted||await o().catch(()=>{}),e}try{await o()}catch(e){throw new i(`Could not release Hook token claim lock`,{cause:e})}return s}function Kn(e,t,n){let r=M(`sha256`).update(`${t}\x00${n}`).digest(`hex`);return z.join(e,`hooks`,`resumes`,`${r}.json`)}async function qn(e,t,n,r){await Gn(e,t,async i=>{let a=Hn(e,t),o=await Wn(a);o&&o.runId===n&&o.hookId===r&&(i.throwIfAborted(),await Y(a))})}function Jn(e,t,n,r){let i=M(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return z.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const Yn=ue(()=>Math.random()),Xn=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=U(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?le(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:le(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},Zn=_({runId:S()}),Qn=_({hookId:S(),tag:S().optional()});function $n(e,t){return V(e,`hooks`,`token-index`,Mn(t))}function er(e,t){return B(`hookId`,t),V(e,`hooks`,`id-index`,t)}function tr(e){return V(e,`hooks`,`by-run`)}function nr(e){let t=U(e);return t===e?void 0:e.slice(t.length+1)}function rr(e,t){return t?dt(e)||ut(e,t):dt(e)}async function ir(e){try{return await J(e,C)}catch(e){if(e instanceof SyntaxError||e instanceof O)return null;throw e}}async function ar(e,t,n,r,i,a){B(`runId`,n),B(`eventId`,i),a!==void 0&&B(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([X(z.join($n(e,t),o),s),X(z.join(er(e,r),o),s)])}function or(e,t,n,r){return W(e,`hooks/by-run`,`${t}-${n}`,r)}async function sr(e,t,n,r){await X(or(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function cr(e,t,n,r){await Y(or(e,t,n,r)),r&&await Y(or(e,t,n))}async function lr(e,t){B(`runId`,t);let n=tr(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`),Qn)}catch(e){if(!(e instanceof SyntaxError||e instanceof O))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function ur(e,t){await Y(z.join(tr(e),`${t}.json`))}const dr=new Map;function fr(){dr.clear()}async function pr(e){let t=z.resolve(e),n=dr.get(t);return n||(n=hr(t).catch(e=>{throw dr.delete(t),e}),dr.set(t,n)),n}async function mr(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function hr(e){let t=z.join(e,`hooks`,`.hook-index-complete`);try{await I.access(t);return}catch{}let n=z.join(e,`events`);await mr(await Z(n),32,async t=>{let r=await ir(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 ar(e,i,r.runId,r.correlationId,r.eventId,nr(t))}catch{}});let r=z.join(e,`hooks`);await mr(await Z(r),32,async t=>{let n=null;try{n=await J(z.join(r,`${t}.json`),k)}catch(e){if(!(e instanceof SyntaxError||e instanceof O))throw e}if(n)try{await sr(e,n.runId,n.hookId,nr(t))}catch{}}),await X(t,``)}async function gr(e,t,n,r){await pr(e);let i;try{i=t.kind===`token`?$n(e,t.token):er(e,t.hookId)}catch{return null}let a=(await Z(i)).filter(e=>rr(e,r)).sort((e,t)=>U(t).localeCompare(U(e)));for(let t of a){let r=null;try{r=await J(z.join(i,`${t}.json`),Zn)}catch(e){if(!(e instanceof SyntaxError||e instanceof O))throw e}if(!r)continue;let a=U(t),o;try{o=W(e,`events`,`${r.runId}-${a}`,nr(t))}catch{continue}let s=await ir(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function _r(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function vr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function yr(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function br(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function xr(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 Sr(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function Cr(e,t,n){let r=await G(e,`runs`,t,v,n);return r?x(r.status):!1}async function wr(e,t,n,r){let i=await gr(e,t,e=>Sr(e,n),r);if(!i||!Sr(i,n))return null;if(await Cr(e,i.runId,r)){let e=i.eventData.tokenRetentionUntil;if(!e||e.getTime()<=Date.now())return null}return await Pn(e,i.correlationId,r)?null:i}async function Tr(e,t,n){let r=xr(t);return await X(Hn(e,r.token),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId,tokenRetentionUntil:t.eventData.tokenRetentionUntil})),await sr(e,r.runId,r.hookId,n),await X(W(e,`hooks`,r.hookId,n),JSON.stringify(r,K,2)),r}async function Er(e,t,n){let r=await wr(e,{kind:`token`,token:t},e=>br(e)===t,n);return r?Tr(e,r,n):null}async function Dr(e,t,n){let r=await wr(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?Tr(e,r,n):null}function Or(e,t){async function n(n){return await Pn(e,n.hookId,t)?!1:n.tokenRetentionUntil&&n.tokenRetentionUntil.getTime()>Date.now()?!0:!await Cr(e,n.runId,t)}async function r(r){let i=await Wn(Hn(e,r));if(i?.hookId){try{let a=await G(e,`hooks`,i.hookId,k,t);if(a?.token===r){if(!await n(a))throw new c(r);return{...a,isWebhook:a.isWebhook??!0}}}catch(e){if(!it.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`),k);if(t?.token===r){if(!await n(t))throw new c(r);return{...t,isWebhook:t.isWebhook??!0}}}return null}async function i(r,i){B(`hookId`,r);let a=await G(e,`hooks`,r,k,t);if(a&&!await n(a))throw new c(r);let o=a??await Dr(e,r,t);if(!o)throw new c(r);let s=i?.resolveData||`all`;return yr({...o,isWebhook:o.isWebhook??!0},s)}async function a(n){let i=await r(n)??await Er(e,n,t);if(!i)throw new c(n);return i}async function o(t){let r=z.join(e,`hooks`),i=t.resolveData||`all`,a=await Q({directory:r,schema:k,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=>yr(e,i))}}return{get:i,getByToken:a,list:o}}async function kr(e,t){await pr(e);for(let n of await lr(e,t)){if(n.hookId){let r=null,i=null;try{i=W(e,`hooks`,n.hookId,n.tag),r=await J(i,k)}catch(e){if(!it.is(e)&&!(e instanceof SyntaxError||e instanceof O))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 Y(Jn(e,r.token,r.runId,r.hookId)),await Y(i)}}await ur(e,n.fileId)}}async function Ar(e,t,n,r,i,a){if(x(a.status)||await In(e,t))throw new o(`Workflow run "${t}" is already in a terminal state`);let s=Rn(e,t,n);await X(s,r);try{if(await In(e,t)||await xt(s,i)!==`linked`)throw new o(`Workflow run "${t}" is already in a terminal state`)}finally{await I.unlink(s).catch(()=>{})}}async function jr(e,t,n,r,i){B(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await X(Fn(e,t),``),await zn(e,t);let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await q(V(e,`runs`,`${t}.json`),i,{overwrite:!0}),await kr(e,t),{event:void 0,run:_r(i,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${Yn()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:5},c=V(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await Ar(e,t,i,JSON.stringify(s,K,2),c,r):await q(c,s),{event:y(s,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const Mr=new Map;function Nr(e,t){let n=Mr.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{Mr.get(e)===r.task&&Mr.delete(e)}})();return r.task=i,Mr.set(e,i),i}function Pr(e,t){let n=(async(n,i)=>{B(`runId`,n);let a=await G(e,`runs`,n,v,t);if(!a)throw new r(n);return _r(a,i?.resolveData??`all`)});return{get:n,getMany:(async(e,t)=>{let i=[...new Set(e)],a=await Promise.all(i.map(async e=>{try{return await n(e,t)}catch(e){if(e instanceof r)return null;throw e}})),o=new Map(i.map((e,t)=>[e,a[t]]));return e.map(e=>o.get(e)??null)}),list:(async t=>{let n=t?.resolveData??`all`,r=await Q({directory:z.join(e,`runs`),schema:v,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:Xn(`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,i,a)=>(B(`runId`,n),Nr(n,async()=>{let o=await G(e,`runs`,n,v,t);if(!o)throw new r(n);try{ie(i,{existingKeys:Object.keys(o.attributes??{}),allowReservedAttributes:a?.allowReservedAttributes})}catch(e){throw e instanceof fe,e}let s=re(o.attributes,i),c={...o,attributes:s,updatedAt:new Date};return await q(W(e,`runs`,n,t),c,{overwrite:!0}),{attributes:s}}))}}const Fr=1440*60*1e3;function Ir(){let e=Number(process.env.WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS??30);if(!Number.isFinite(e)||e<=0)throw new i(`WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS must be a positive number`,{status:400});return e*Fr}const Lr=_({eventId:S()}),Rr=_({runId:S(),resumeId:S(),hookId:S(),eventId:S(),payloadDigest:S().optional()});function zr(e,t){return e.eventType===`hook_received`&&e.correlationId===t.hookId&&(e.resumeId===void 0||e.resumeId===t.resumeId)}async function Br(e,t,n,r){let i=await Vn(e,t,r);for(let a of i.ids){let i=await G(e,`events`,`${t}-${a}`,C,r);if(i&&i.resumeId===n.resumeId&&zr(i,n))return i}return null}async function Vr(e,t,n){if(t.hookId&&await Pn(e,t.hookId,n))return!0;let r=await G(e,`runs`,t.runId,v,n);return r?x(r.status)?!t.tokenRetentionUntil||t.tokenRetentionUntil.getTime()<=Date.now():!1:!0}async function Hr(e){try{return await J(e,Lr)}catch(e){if(e instanceof SyntaxError||e instanceof O)return null;throw e}}function Ur(e){return ce(e.eventId)?e.eventId:null}function Wr(e,t){let n=U(t).slice(e.length+1);return ce(n)?n:null}async function Gr(e,t,n){return(await Q({directory:z.join(e,`events`),schema:C,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:Xn(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function Kr(e,t,n,r,i){let a=await G(e,`events`,`${t}-${r}`,C,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await G(e,`hooks`,n,k,i))return;let o=xr(a);await ar(e,o.token,t,n,r,i),await sr(e,t,n,i),await X(W(e,`hooks`,n,i),JSON.stringify(o,K,2))}async function qr(e,t,n,r,i){let a=Jn(e,t,n,r);return await X(a,JSON.stringify({eventId:i}))?i:(await Hr(a))?.eventId??null}function Jr(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 Yr(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 Xr(e,t,n,r){return Nr(t,async()=>{let i=await J(W(e,`runs`,t,n),v),a={...r,attributes:i?.attributes??r.attributes};return await q(W(e,`runs`,t,n),a,{overwrite:!0}),a})}function Zr(e,t){let n=Ir(),u=4*1024*1024,d=new Map,f=new Map,p=new Map,m=0;function _(e){let t=d.get(e);if(!t)return;d.delete(e),m-=f.get(e)??0,f.delete(e);let n=p.get(t.runId);n?.delete(e),n?.size===0&&p.delete(t.runId)}function S(e){for(let t of p.get(e)??[])_(t)}function w(){d.clear(),f.clear(),p.clear(),m=0,T.clear()}let T=new Map;function E(e){return t?`${e}.${t}`:e}async function D(n,r){let i=`${n}-${me(r)}`;for(let n of t?[W(e,`events`,i,t),W(e,`events`,i)]:[W(e,`events`,i)])try{return await I.stat(n),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}async function O(n,r){let i=E(n),a=T.get(i);if(a===void 0||r?.rescan){let r=await Vn(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 D(n,o);)a.published=Math.max(a.published,o),o+=1;return o}function ue(e,t){let n=ae(t);if(n===null)return;let r=T.get(E(e));r&&(r.published=Math.max(r.published,n))}async function de(e){let t=await O(e);return t===null?`evnt_${Yn()}`:me(t)}async function fe(n){let r=await O(n,{rescan:!0});return r===null?Bn(e,n,t):{eventId:me(r),createdAt:new Date}}function A(e,t,n){if(n>u)return;for(;d.size>0&&(d.size>=1e3||m+n>u);){let e=d.keys().next().value;_(e)}d.set(e,t),f.set(e,n),m+=n;let r=p.get(t.runId)??new Set;r.add(e),p.set(t.runId,r)}function he(e,t,n){if(ne(e.eventType)){S(e.runId);return}let r=Buffer.byteLength(n);if(r>u)return;let i=C.safeParse(JSON.parse(n,_t));i.success&&A(t,i.data,r)}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=ae(r.eventId);if(o===null)return await vt(i,a),he(r,i,a),r;if(await X(i,a))return ue(r.runId,r.eventId),he(r,i,a),r;let s=await O(r.runId,{rescan:n>0&&n%8==0,atLeast:o+1});Ae(s!==null),r={...r,eventId:me(s)}}}let ye=(t,n)=>Q({directory:z.join(e,`events`),schema:C,cachedItems:d,filePrefix:`${t}-`,sortOrder:n.sortOrder??`asc`,limit:n.limit,cursor:n.cursor,getCreatedAt:Xn(`evnt`),getId:e=>e.eventId,getSortKey:Ur,getSortKeyFromFileId:e=>Wr(t,e)}),M=new Map,N=new Map,P={clearCache:w,async create(u,d,f){if(d.eventType===`hook_created`&&d.eventData.tokenRetentionUntil!==void 0&&d.eventData.tokenRetentionUntil.getTime()>Date.now()+n)throw new i(`Hook minimum retention cannot exceed ${n/Fr} days in the Local World.`,{status:400});if(u!=null&&u!==``&&B(`runId`,u),`correlationId`in d&&typeof d.correlationId==`string`&&B(`correlationId`,d.correlationId),ee(d.eventType)&&u&&d.correlationId){let e=t?`${u}-${d.correlationId}.${t}`:`${u}-${d.correlationId}`;return Jr(M,e,p)}if(b(d.eventType)&&u&&d.correlationId){let e=t?`${u}-${d.correlationId}.hook.${t}`:`${u}-${d.correlationId}.hook`;return Jr(N,e,p)}return p();async function p(){let n=``,p=!1,m=null,_=new Date,b;if(d.eventType===`run_created`&&(!u||u===``))b=`wrun_${Yn()}`;else if(u)b=u;else throw Error(`runId is required for non-run_created events`);if(d.eventType===`run_created`&&u&&u!==``){let e=pe(b,`wrun_`);if(e)throw new i(e)}let S=d.specVersion??5,w=null;if(d.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(d.eventType)&&(w=await G(e,`runs`,b,v,t),d.eventType===`run_started`&&!w&&`eventData`in d&&d.eventData)){let n=d.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){ie(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:b,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:S,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:_,updatedAt:_};if(await X(W(e,`runs`,b,t),JSON.stringify(r,K))){let e=await de(b);await ve({eventType:`run_created`,runId:b,eventId:e,createdAt:_,specVersion:S,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),w=r}else w=await G(e,`runs`,b,v,t)}}if(n=await de(b),!w&&(d.eventType===`run_failed`||d.eventType===`attr_set`||d.eventType===`run_started`))throw new r(b);if(w){if(ge(w.specVersion))throw new s(w.specVersion,5);if(_e(w.specVersion))return jr(e,b,d,w,f)}let T=g(d),E=T&&d.eventType===`step_started`;if(w&&x(w.status)){if(d.eventType===`run_cancelled`&&w.status===`cancelled`)return{event:y(await ve({...d,runId:b,eventId:n,createdAt:_,specVersion:S}),f?.resolveData??`all`),run:w,...w?{maxEvents:j()}:{}};if(d.eventType===`run_started`)throw new o(`Workflow run "${b}" is already in terminal state "${w.status}"`);if(ne(d.eventType))throw new l(`Cannot transition run from terminal state "${w.status}"`);if(T)throw new l(`Cannot create new entities on run in terminal state "${w.status}"`);if(d.eventType===`attr_set`)throw new l(`Cannot set attributes on run in terminal state "${w.status}"`)}let D=null;if(ee(d.eventType)&&d.eventType!==`step_created`&&d.correlationId){if(D=await G(e,`steps`,`${b}-${d.correlationId}`,h,t),!D&&!E)throw new i(`Step "${d.correlationId}" not found`);if(E&&D)throw new l(`Step "${d.correlationId}" already created`);if(D){if(oe(D.status))throw new l(`Cannot modify step in terminal state "${D.status}"`);if(w&&x(w.status)&&D.status!==`running`)throw new o(`Cannot modify non-running step on run in terminal state "${w.status}"`)}}if(te(d.eventType)&&d.correlationId){if(d.eventType===`hook_received`&&f?.resumeId){let n=await J(Kn(e,b,f.resumeId),Rr);if(n&&n.hookId===d.correlationId&&(!f.resumePayloadDigest||!n.payloadDigest||n.payloadDigest===f.resumePayloadDigest)){let r=await G(e,`events`,`${b}-${n.eventId}`,C,t),i=r&&zr(r,n)?r:await Br(e,b,n,t);if(i)return{event:i}}}if(d.eventType===`hook_received`&&await Pn(e,d.correlationId,t)||!await G(e,`hooks`,d.correlationId,k,t))throw new c(d.correlationId);if(d.eventType===`hook_received`&&f?.resumeId){let r=Kn(e,b,f.resumeId),i=async r=>{if(r.hookId!==d.correlationId)throw new l(`hook_received resumeId "${f.resumeId}" already recorded for a different hook`);if(f.resumePayloadDigest&&r.payloadDigest&&r.payloadDigest!==f.resumePayloadDigest)throw new l(`hook_received resumeId "${f.resumeId}" already recorded with a different payload`);let i=await G(e,`events`,`${b}-${r.eventId}`,C,t);if(i&&zr(i,r))return{event:i};let a=await Br(e,b,r,t);return a?{event:a}:(m=r.eventId,i||(n=r.eventId,p=!0),null)},a=await J(r,Rr);if(a){let e=await i(a);if(e)return e}else if(p=!ce(n),m=n,!await X(r,JSON.stringify({runId:b,resumeId:f.resumeId,hookId:d.correlationId,eventId:n,...f.resumePayloadDigest?{payloadDigest:f.resumePayloadDigest}:{}}))){m=null;let e=await J(r,Rr);if(e){let t=await i(e);if(t)return t}}}}let A={...d,runId:b,eventId:n,createdAt:_,specVersion:S,...d.eventType===`hook_received`&&f?.resumeId?{resumeId:f.resumeId}:{}};if(d.eventType===`run_started`&&`eventData`in A&&delete A.eventData,E&&A.eventType===`step_started`&&A.eventData){let{input:e,...t}=A.eventData;A={...A,eventData:t}}let M,N,P,F,be=!1,xe;if(ne(d.eventType)&&w){await X(Fn(e,b,t),``),await zn(e,b,t);let r=await fe(b);n=r.eventId,A={...A,eventId:n,createdAt:r.createdAt}}if(d.eventType===`run_created`&&`eventData`in d){let n=d.eventData;if(ie(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),M={runId:b,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:S,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:_,updatedAt:_},!await X(W(e,`runs`,b,t),JSON.stringify(M,K,2)))throw new l(`Workflow run "${b}" already exists`)}else if(d.eventType===`run_started`){if(w){if(w.status===`running`){if(f?.skipPreload)return{run:w,maxEvents:j()};let e=await ye(b,{limit:j()});return{run:w,events:e.data,cursor:e.cursor,hasMore:e.hasMore,maxEvents:j()}}M=await Xr(e,b,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:w.startedAt??_,updatedAt:_,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey})}}else if(d.eventType===`run_completed`&&`eventData`in d){let n=d.eventData;w&&(M=await Xr(e,b,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:_,updatedAt:_,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([kr(e,b),Yr(e,b)]))}else if(d.eventType===`run_failed`&&`eventData`in d){let n=d.eventData;w&&(M=await Xr(e,b,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:_,updatedAt:_,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([kr(e,b),Yr(e,b)]))}else if(d.eventType===`run_cancelled`)w&&(M=await Xr(e,b,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:_,updatedAt:_,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([kr(e,b),Yr(e,b)]));else if(d.eventType===`attr_set`&&w)M=await Nr(b,async()=>{let n=await J(W(e,`runs`,b,t),v);if(!n)throw new r(b);if(ie(d.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:d.eventData.allowReservedAttributes===!0}),d.correlationId&&d.eventData.writer.type===`workflow`&&!await X(V(e,`.locks`,`attributes`,t?`${b}-${d.correlationId}.created.${t}`:`${b}-${d.correlationId}.created`),``))throw new l(`Attribute event "${d.correlationId}" already exists`);let i={...n,attributes:re(n.attributes,d.eventData.changes),updatedAt:_};return await q(W(e,`runs`,b,t),i,{overwrite:!0}),i});else if(d.eventType===`step_created`&&`eventData`in d){if(!await X(V(e,`.locks`,`steps`,t?`${b}-${d.correlationId}.created.${t}`:`${b}-${d.correlationId}.created`),``))throw new l(`Step "${d.correlationId}" already created`);let n=d.eventData;N={runId:b,stepId:d.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:_,updatedAt:_,specVersion:S},await q(W(e,`steps`,`${b}-${d.correlationId}`,t),N)}else if(d.eventType===`step_started`){if(!D&&E){let n=d.eventData;if(await X(V(e,`.locks`,`steps`,t?`${b}-${d.correlationId}.created.${t}`:`${b}-${d.correlationId}.created`),``)){let r={runId:b,stepId:d.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:_,updatedAt:_,specVersion:S};await q(W(e,`steps`,`${b}-${d.correlationId}`,t),r);let i=await de(b);await ve({eventType:`step_created`,runId:b,eventId:i,createdAt:_,specVersion:S,correlationId:d.correlationId,eventData:{stepName:n.stepName,input:n.input}}),D=r,be=!0}else throw new l(`Step "${d.correlationId}" already created`)}if(D){if(D.retryAfter&&D.retryAfter.getTime()>Date.now())throw new a(`Cannot start step "${d.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((D.retryAfter.getTime()-Date.now())/1e3)});let n=`${b}-${d.correlationId}`,r=await G(e,`steps`,n,h,t);if(r&&oe(r.status))throw new l(`Cannot modify step in terminal state "${r.status}"`);N={...D,status:`running`,startedAt:D.startedAt??_,attempt:D.attempt+1,retryAfter:void 0,updatedAt:_},await q(W(e,`steps`,n,t),N,{overwrite:!0})}}else if(d.eventType===`step_completed`&&`eventData`in d){let n=d.eventData;if(D){let r=`${b}-${d.correlationId}`;if(!await X(V(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new l(`Cannot modify step in terminal state`);N={...D,status:`completed`,output:n.result,completedAt:_,updatedAt:_},await q(W(e,`steps`,r,t),N,{overwrite:!0})}}else if(d.eventType===`step_failed`&&`eventData`in d){let n=d.eventData;if(D){let r=`${b}-${d.correlationId}`;if(!await X(V(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new l(`Cannot modify step in terminal state`);N={...D,status:`failed`,error:n.error,completedAt:_,updatedAt:_},await q(W(e,`steps`,r,t),N,{overwrite:!0})}}else if(d.eventType===`step_retrying`&&`eventData`in d){let n=d.eventData;if(D){let r=`${b}-${d.correlationId}`;N={...D,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:_},await q(W(e,`steps`,r,t),N,{overwrite:!0})}}else if(d.eventType===`hook_created`&&`eventData`in d){let r=d.eventData,i=Hn(e,r.token),a=JSON.stringify({token:r.token,hookId:d.correlationId,runId:b,eventId:n,tokenRetentionUntil:r.tokenRetentionUntil}),o=await Gn(e,r.token,async n=>{let o=await Wn(i);return o||=(n.throwIfAborted(),await Y(i),await Er(e,r.token,t),await Wn(i)),o?o.runId===b&&o.hookId===d.correlationId?{status:`owned`,claim:o}:await Vr(e,o,t)?(n.throwIfAborted(),await Y(i),o.hookId&&(await Y(W(e,`hooks`,o.hookId,t)),await Y(Jn(e,r.token,o.runId,o.hookId)),await cr(e,o.runId,o.hookId,t)),n.throwIfAborted(),Ae(await X(i,a)),{status:`claimed`}):{status:`conflict`,claim:o}:(n.throwIfAborted(),Ae(await X(i,a)),{status:`claimed`})});if(o.status===`owned`){let i=o.claim,a;if(i.eventId)a=i.eventId;else{let i=await Gr(e,b,d.correlationId);if(i!==null)throw await Kr(e,b,d.correlationId,i,t),new l(`Hook "${d.correlationId}" already created`);let o=await qr(e,r.token,b,d.correlationId,n);if(o===null)throw new l(`Hook "${d.correlationId}" already created`);a=o}n=a,p=!0;let s=le(n.replace(/^evnt_/,``))??_;A={...d,eventData:{...d.eventData,tokenRetentionUntil:i.tokenRetentionUntil},runId:b,eventId:n,createdAt:s,specVersion:S}}if(o.status===`conflict`){let e=o.claim;return{event:y(await ve({eventType:`hook_conflict`,correlationId:d.correlationId,eventData:{token:r.token,conflictingRunId:e.runId},runId:b,eventId:n,createdAt:_,specVersion:S}),f?.resolveData??`all`),run:M,step:N,hook:void 0}}let s=A.eventData;P={runId:b,hookId:d.correlationId,token:s.token,metadata:s.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:A.createdAt,specVersion:S,isWebhook:s.isWebhook??!1,isSystem:s.isSystem??!1,tokenRetentionUntil:s.tokenRetentionUntil},xe=o.status===`owned`?{overwrite:!0}:void 0,await ar(e,r.token,b,d.correlationId,n,t)}else if(d.eventType===`hook_disposed`){if(!await X(Nn(e,d.correlationId,t),``))throw new l(`Hook "${d.correlationId}" already disposed`);let n=W(e,`hooks`,d.correlationId,t),r=await G(e,`hooks`,d.correlationId,k,t);r&&(await qn(e,r.token,r.runId,r.hookId),await Y(Jn(e,r.token,r.runId,r.hookId))),await Y(n),await cr(e,b,d.correlationId,t)}else if(d.eventType===`wait_created`&&`eventData`in d){let n=`${b}-${d.correlationId}`;if(!await X(V(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new l(`Wait "${d.correlationId}" already exists`);let r=d.eventData;F={waitId:n,runId:b,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:_,updatedAt:_,specVersion:S},await q(W(e,`waits`,n,t),F)}else if(d.eventType===`wait_completed`){let n=`${b}-${d.correlationId}`,r=V(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await X(r,``))throw new l(`Wait "${d.correlationId}" already completed`);let a=await G(e,`waits`,n,se,t);if(!a)throw await I.unlink(r).catch(()=>{}),new i(`Wait "${d.correlationId}" not found`);F={...a,status:`completed`,completedAt:_,updatedAt:_},await q(W(e,`waits`,n,t),F,{overwrite:!0})}if(d.eventType===`hook_received`&&d.correlationId&&await Pn(e,d.correlationId,t))throw new c(d.correlationId);let Se=W(e,`events`,`${b}-${n}`,t),L=JSON.stringify(A,K,2),Ce=async r=>{let i=ae(n);if(p||i===null)return!1;let a=await O(b,{rescan:r>0&&r%8==0,atLeast:i+1});return a===null?!1:(n=me(a),A={...A,eventId:n},Se=W(e,`events`,`${b}-${n}`,t),L=JSON.stringify(A,K,2),!0)},we=!1;for(let r=0;;r++){if(d.eventType===`hook_received`){let i=await In(e,b,t),a=i?null:await G(e,`runs`,b,v,t);if(i||a&&x(a.status))throw new o(`Workflow run "${b}" is already in a terminal state`);let s=Rn(e,b,n,t);if(!await X(s,L)){if(await Ce(r))continue;throw new l(`Event "${n}" already exists for run "${b}"`)}try{if(await In(e,b,t))throw new o(`Workflow run "${b}" is already in a terminal state`);let n=await xt(s,Se);if(n===`missing`)throw new o(`Workflow run "${b}" is already in a terminal state`);we=n===`linked`}finally{await Y(s).catch(()=>{})}}else we=await X(Se,L);if(we){ue(b,n);break}if(!await Ce(r))break}if(!we)throw d.eventType===`hook_created`&&d.correlationId&&await Kr(e,b,d.correlationId,n,t),new l(`Event "${n}" already exists for run "${b}"`);he(A,Se,L),d.eventType===`hook_received`&&f?.resumeId&&m!==null&&m!==n&&await vt(Kn(e,b,f.resumeId),JSON.stringify({runId:b,resumeId:f.resumeId,hookId:d.correlationId,eventId:n,...f.resumePayloadDigest?{payloadDigest:f.resumePayloadDigest}:{}}),{overwrite:!0}),P&&d.eventType===`hook_created`&&(await sr(e,P.runId,P.hookId,t),await q(W(e,`hooks`,P.hookId,t),P,xe));let Te=f?.resolveData??`all`,Ee=y(A,Te),R;if(d.eventType===`run_started`&&M&&!f?.skipPreload&&(R=await ye(b,{limit:j()})),typeof f?.sinceCursor==`string`){let e=await ye(b,{sortOrder:`asc`,cursor:f.sinceCursor});R=Te===`none`?{...e,data:e.data.map(e=>y(e,Te))}:e}let z={event:Ee,run:M,step:N,hook:P,wait:F,...be?{stepCreated:!0}:{},...M?{maxEvents:j()}:{}};return R?{...z,events:R.data,cursor:R.cursor,hasMore:R.hasMore}:z}},async get(n,r,i){B(`runId`,n),B(`eventId`,r);let a=await G(e,`events`,`${n}-${r}`,C,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return y(a,i?.resolveData??`all`)},async list(e){let{runId:t}=e;B(`runId`,t);let n=e.resolveData??`all`,r=await ye(t,{...e.pagination,limit:e.pagination?.limit??j()});return n===`none`?{...r,data:r.data.map(e=>y(e,n))}:r},async listByCorrelationId(t){let n=t.correlationId;B(`correlationId`,n),B(`runId`,t.runId);let r=t.resolveData??`all`,i=await Q({directory:z.join(e,`events`),schema:C,cachedItems:d,filePrefix:`${t.runId}-`,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:Xn(`evnt`),getId:e=>e.eventId,getSortKey:Ur,getSortKeyFromFileId:e=>Wr(t.runId,e)});return r===`none`?{...i,data:i.data.map(e=>y(e,r))}:i}};async function F(e,t,n){if(!e.event)return e;let r=ae(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:`${Ct}${me(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 be=(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:be}}function Qr(e,t){return{get:(async(n,r,i)=>{B(`runId`,n),B(`stepId`,r);let a=await G(e,`steps`,`${n}-${r}`,h,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return vr(a,i?.resolveData??`all`)}),list:(async t=>{B(`runId`,t.runId);let n=t.resolveData??`all`,r=await Q({directory:z.join(e,`steps`),schema:h,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:Xn(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function $r(e,t){let n=Pr(e,t),r=Qr(e,t),i=Zr(e,t),a=Or(e,t);return{runs:ln(`world.runs`,n),steps:ln(`world.steps`,r),events:ln(`world.events`,i),hooks:ln(`world.hooks`,a),clearCache:()=>i.clearCache()}}const ei=ue(()=>Math.random()),ti=_({streams:w(S())});function ni(e){return e===1}function ri(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function ii(e){return ni(e[0])}function ai(e){return{eof:ii(e),chunk:Buffer.from(e.subarray(1))}}async function oi(e){try{return await I.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function si(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 ci(e,t){return B(`streamName`,t),z.join(e,t)}async function li(e,t,n){let r=ci(e,t),i=await oi(r),a=new Map;return si(a,i,`.json`),si(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&si(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function ui(e,t){let n=t?`.${t}`:``,r=new je,i=new Set;async function a(n,r){B(`runId`,n),B(`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,ti,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_${ei()}`;await a(await t,i);let l=o(s),u=ri({chunk:l,eof:!1});await vt(z.join(ci(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_${ei()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=ri({chunk:t,eof:!1});return await vt(z.join(ci(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_${ei()}`;await a(await t,i),await vt(z.join(ci(z.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),ri({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return B(`runId`,n),(await G(e,`streams/runs`,n,ti,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await li(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(ni(await bt(n))){u=!0;break}f++;continue}if(d.length>=a){ni(await bt(n))?u=!0:f++;break}let r=ai(await yt(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 li(z.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(ni(await bt(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 li(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`;ni(await bt(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=ai(await yt(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 li(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=ai(await yt(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 di(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Qe.value,...t};Ie(n.dataDir);let r=n.tag,i=bn(n),{clearCache:a,...o}=$r(n.dataDir,r),s=$e(n);return{specVersion:5,capabilities:{hookRetention:{active:!0},hookResumeDedup:!0,slotEventIds:!0},...i,...o,...ln(`world.streams`,{...ui(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Bt(n.dataDir),!s)return;let e=r?e=>ut(e,r):dt;await de({...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))},i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=z.join(e,`hooks`),i=await ft(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-DlFv0aHY.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`,`${Mn(r.token)}.json`)),await Y(Jn(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 ft(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 F.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 ft(t,r);await Promise.all(i.map(e=>Y(z.join(t,e))))}))}await F.rm(z.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=z.join(e,`streams`,`chunks`),s;try{s=await F.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=z.join(o,e.name),n=await pt(t,r,`.bin`);await Promise.all(n.map(e=>F.unlink(z.join(t,e)).catch(()=>{})))})),ct()}else ct(),fr(),await Te(n.dataDir,{recursive:!0,force:!0}),await Bt(n.dataDir)}}}export{At as DataDirAccessError,jt as DataDirVersionError,Me as UnwritableDataDirError,di as createWorld,It as ensureDataDir,Bt as initDataDir,Mt as parseVersion};
|