eve 0.70.1 → 0.70.3

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.
Files changed (189) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/src/channel/adapter.js +1 -1
  3. package/dist/src/channel/channel-operations.js +1 -1
  4. package/dist/src/channel/resolve-text.d.ts +8 -0
  5. package/dist/src/channel/resolve-text.js +2 -1
  6. package/dist/src/chunks/{use-eve-agent-CJQeE7-t.js → use-eve-agent-CFCaYnrI.js} +1 -1
  7. package/dist/src/chunks/{use-eve-agent-DdemtY6C.js → use-eve-agent-DcDhXNv1.js} +1 -1
  8. package/dist/src/cli/banner.d.ts +2 -2
  9. package/dist/src/cli/banner.js +1 -1
  10. package/dist/src/cli/commands/init-agent-workspace.js +1 -1
  11. package/dist/src/cli/commands/init.js +1 -1
  12. package/dist/src/cli/dev/tui/runner.d.ts +2 -1
  13. package/dist/src/cli/dev/tui/runner.js +1 -1
  14. package/dist/src/cli/dev/tui/terminal-renderer.js +2 -2
  15. package/dist/src/cli/dev/tui/test/mock-terminal.d.ts +7 -1
  16. package/dist/src/cli/dev/tui/test/mock-terminal.js +4 -3
  17. package/dist/src/cli/dev/tui/theme.d.ts +1 -1
  18. package/dist/src/cli/dev/tui/theme.js +1 -1
  19. package/dist/src/cli/dev/tui/tool-presentation.d.ts +15 -2
  20. package/dist/src/cli/dev/tui/tool-presentation.js +1 -1
  21. package/dist/src/cli/dev/tui/transcript-parts.js +1 -1
  22. package/dist/src/client/ndjson.js +1 -1
  23. package/dist/src/compiled/.vendor-stamp.json +7 -7
  24. package/dist/src/compiled/@photon-ai/chat-adapter-imessage/index.js +1 -1
  25. package/dist/src/compiled/@vercel/sandbox/index.js +1 -1
  26. package/dist/src/compiled/@workflow/core/index.js +2 -2
  27. package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +15 -0
  28. package/dist/src/compiled/@workflow/core/runtime/dynamic-workflow.d.ts +182 -0
  29. package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +7 -0
  30. package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
  31. package/dist/src/compiled/@workflow/core/runtime/quickjs-assets.generated.d.ts +7 -0
  32. package/dist/src/compiled/@workflow/core/runtime/quickjs-entrypoint.d.ts +2 -30
  33. package/dist/src/compiled/@workflow/core/runtime/quickjs-log-view.d.ts +27 -4
  34. package/dist/src/compiled/@workflow/core/runtime/quickjs-runtime.d.ts +55 -3
  35. package/dist/src/compiled/@workflow/core/runtime/quickjs-snapshot-codec.d.ts +74 -0
  36. package/dist/src/compiled/@workflow/core/runtime/start.d.ts +4 -0
  37. package/dist/src/compiled/@workflow/core/runtime/vm-mode.d.ts +44 -0
  38. package/dist/src/compiled/@workflow/core/runtime.d.ts +1 -1
  39. package/dist/src/compiled/@workflow/core/runtime.js +4 -4
  40. package/dist/src/compiled/@workflow/core/schemas.d.ts +1 -1
  41. package/dist/src/compiled/@workflow/core/serialization/compression.d.ts +27 -2
  42. package/dist/src/compiled/@workflow/core/serialization/hardened.d.ts +8 -0
  43. package/dist/src/compiled/@workflow/core/serialization/types.d.ts +1 -0
  44. package/dist/src/compiled/@workflow/core/serialization.d.ts +48 -0
  45. package/dist/src/compiled/@workflow/core/serialization.js +1 -1
  46. package/dist/src/compiled/@workflow/core/set-error-stack.d.ts +12 -0
  47. package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +47 -0
  48. package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
  49. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  50. package/dist/src/compiled/@workflow/world/events.d.ts +10 -0
  51. package/dist/src/compiled/@workflow/world/index.d.ts +2 -0
  52. package/dist/src/compiled/@workflow/world/interfaces.d.ts +127 -0
  53. package/dist/src/compiled/@workflow/world/queue.d.ts +6 -0
  54. package/dist/src/compiled/@workflow/world/runs.d.ts +9 -2
  55. package/dist/src/compiled/@workflow/world/snapshots.d.ts +60 -0
  56. package/dist/src/compiled/@workflow/world-local/index.js +5 -5
  57. package/dist/src/compiled/@workflow/world-vercel/index.js +19 -17
  58. package/dist/src/compiled/_chunks/node/undici-B61sz6UT.js +95 -0
  59. package/dist/src/compiled/_chunks/workflow/{attribute-changes-D721NpZv.js → attribute-changes-VaTKT4K8.js} +3 -3
  60. package/dist/src/compiled/_chunks/workflow/dist-B7NC1c9-.js +1 -0
  61. package/dist/src/compiled/_chunks/workflow/{functions-DpZiBxgQ.js → functions-CKkqf9V6.js} +1 -1
  62. package/dist/src/compiled/_chunks/workflow/helpers-CP9TjeO8.js +1 -0
  63. package/dist/src/compiled/_chunks/workflow/{logger-D4GJNTk4.js → logger-oqfblE3p.js} +2 -2
  64. package/dist/src/compiled/_chunks/workflow/resume-hook-yq-NAdBu.js +1 -0
  65. package/dist/src/compiled/_chunks/workflow/run-DYKeqbob.js +32 -0
  66. package/dist/src/compiled/_chunks/workflow/serialization-APSKphN5.js +3 -0
  67. package/dist/src/compiled/_chunks/workflow/signal-exit-iIdjQcCK.js +95 -0
  68. package/dist/src/compiled/_chunks/workflow/sleep-Ba8SExMt.js +1 -0
  69. package/dist/src/compiled/_chunks/workflow/{token-BhlnqoHM.js → token-BKeK6DmC.js} +1 -1
  70. package/dist/src/compiled/_chunks/workflow/token-Cv2GYj9A.js +1 -0
  71. package/dist/src/compiled/_chunks/workflow/{token-util-DaeRTzDa.js → token-util-CddTZ_ef.js} +1 -1
  72. package/dist/src/compiled/_chunks/workflow/{wait-until-3_1djUuL.js → wait-until-Dc9s3yyP.js} +1 -1
  73. package/dist/src/compiled/_chunks/workflow/{wrapper-CzrF_dmI.js → wrapper-Dq4OeGmJ.js} +4 -4
  74. package/dist/src/compiled/shadcn-registry/index.js +4 -4
  75. package/dist/src/context/serialize.js +1 -1
  76. package/dist/src/discover/discover-agent.js +1 -1
  77. package/dist/src/discover/extension-specifier.d.ts +1 -0
  78. package/dist/src/discover/extension-specifier.js +1 -1
  79. package/dist/src/discover/extensions.d.ts +1 -1
  80. package/dist/src/discover/extensions.js +1 -1
  81. package/dist/src/discover/project-source.d.ts +5 -0
  82. package/dist/src/discover/project-source.js +1 -1
  83. package/dist/src/evals/session.d.ts +1 -0
  84. package/dist/src/evals/session.js +1 -1
  85. package/dist/src/evals/types.d.ts +6 -0
  86. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  87. package/dist/src/execution/legacy-session/turn-workflow.js +1 -1
  88. package/dist/src/execution/proxied-deliver-step.d.ts +11 -0
  89. package/dist/src/execution/proxied-deliver-step.js +1 -1
  90. package/dist/src/execution/sandbox/read-file.d.ts +8 -1
  91. package/dist/src/execution/sandbox/read-file.js +3 -3
  92. package/dist/src/execution/session/active-turn.d.ts +4 -1
  93. package/dist/src/execution/session/active-turn.js +1 -1
  94. package/dist/src/execution/session/entry-input.d.ts +23 -5
  95. package/dist/src/execution/session/entry.js +1 -1
  96. package/dist/src/execution/session/handoff.d.ts +35 -13
  97. package/dist/src/execution/session/handoff.js +1 -1
  98. package/dist/src/execution/session/program.d.ts +16 -3
  99. package/dist/src/execution/session/program.js +1 -1
  100. package/dist/src/execution/session/turn-step-types.d.ts +6 -1
  101. package/dist/src/execution/session/turn-step.js +1 -1
  102. package/dist/src/execution/session/turn.js +1 -1
  103. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  104. package/dist/src/execution/workflow-runtime.d.ts +4 -4
  105. package/dist/src/execution/workflow-runtime.js +1 -1
  106. package/dist/src/harness/attachment-staging.d.ts +27 -7
  107. package/dist/src/harness/attachment-staging.js +1 -1
  108. package/dist/src/harness/compaction-prompt.js +3 -3
  109. package/dist/src/harness/input-requests.js +1 -1
  110. package/dist/src/harness/messages.js +1 -1
  111. package/dist/src/harness/token-estimate.d.ts +7 -3
  112. package/dist/src/harness/token-estimate.js +1 -1
  113. package/dist/src/harness/tool-loop.js +2 -2
  114. package/dist/src/instrumentation/ai-sdk-hook-bridge.js +1 -1
  115. package/dist/src/instrumentation/lifecycle.d.ts +2 -0
  116. package/dist/src/internal/application/package.js +1 -1
  117. package/dist/src/internal/attachments/media-metadata.d.ts +25 -0
  118. package/dist/src/internal/attachments/media-metadata.js +1 -0
  119. package/dist/src/internal/attachments/sandbox-refs.d.ts +12 -7
  120. package/dist/src/internal/attachments/sandbox-refs.js +1 -1
  121. package/dist/src/internal/authored-module-loader.js +1 -1
  122. package/dist/src/internal/bundler/extension-mount-plugin.d.ts +4 -0
  123. package/dist/src/internal/bundler/extension-mount-plugin.js +1 -1
  124. package/dist/src/internal/bundler/extension-scope-plugin.js +2 -2
  125. package/dist/src/internal/input-text.d.ts +12 -0
  126. package/dist/src/internal/input-text.js +1 -0
  127. package/dist/src/internal/workflow/vercel-world-defaults.d.ts +1 -1
  128. package/dist/src/internal/workflow/vercel-world-defaults.js +1 -1
  129. package/dist/src/protocol/message.d.ts +2 -1
  130. package/dist/src/public/channels/chat-sdk/input-actions.d.ts +8 -2
  131. package/dist/src/public/channels/chat-sdk/input-actions.js +4 -1
  132. package/dist/src/public/channels/github/defaults.js +2 -3
  133. package/dist/src/public/channels/linear/hitl.js +2 -3
  134. package/dist/src/public/channels/slack/action-status.d.ts +10 -5
  135. package/dist/src/public/channels/slack/action-status.js +1 -1
  136. package/dist/src/public/channels/slack/defaults.js +3 -3
  137. package/dist/src/public/channels/slack/limits.d.ts +1 -1
  138. package/dist/src/public/channels/slack/limits.js +1 -1
  139. package/dist/src/public/channels/slack/slackChannel.d.ts +11 -9
  140. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  141. package/dist/src/public/channels/slack/task-card.js +1 -1
  142. package/dist/src/public/channels/slack/thread-status.d.ts +33 -0
  143. package/dist/src/public/channels/slack/thread-status.js +1 -0
  144. package/dist/src/public/channels/twilio/defaults.js +4 -2
  145. package/dist/src/react/use-eve-agent.js +1 -1
  146. package/dist/src/setup/scaffold/create/project.js +1 -1
  147. package/dist/src/subagents/hitl-proxy.d.ts +4 -2
  148. package/dist/src/subagents/hitl-proxy.js +1 -1
  149. package/dist/src/svelte/index.js +1 -1
  150. package/dist/src/svelte/use-eve-agent.js +1 -1
  151. package/dist/src/tools/provided/ask-question-workflow.js +1 -1
  152. package/dist/src/tools/provided/read-file.d.ts +7 -0
  153. package/dist/src/tools/provided/read-file.js +2 -2
  154. package/dist/src/tools/provided/sleep-workflow.js +1 -1
  155. package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
  156. package/dist/src/vue/index.js +1 -1
  157. package/dist/src/vue/use-eve-agent.js +1 -1
  158. package/docs/README.md +1 -0
  159. package/docs/agent-config.md +2 -2
  160. package/docs/channels/chat-sdk.mdx +1 -1
  161. package/docs/channels/slack.mdx +21 -15
  162. package/docs/channels/twilio.mdx +1 -1
  163. package/docs/code-extension.mdx +119 -0
  164. package/docs/concepts/built-in-tools.md +1 -1
  165. package/docs/concepts/default-harness.md +4 -0
  166. package/docs/concepts/execution-model-and-durability.mdx +7 -1
  167. package/docs/concepts/sessions-runs-and-streaming.md +6 -4
  168. package/docs/evals/cases.mdx +1 -0
  169. package/docs/extensions.md +6 -3
  170. package/docs/guides/client/streaming.mdx +1 -1
  171. package/docs/guides/dev-tui.md +3 -1
  172. package/docs/guides/dynamic-capabilities.md +1 -1
  173. package/docs/meta.json +1 -0
  174. package/docs/sandbox/index.mdx +13 -0
  175. package/docs/tools/overview.mdx +4 -2
  176. package/package.json +7 -7
  177. package/dist/src/compiled/_chunks/node/undici-h5GH4RBM.js +0 -95
  178. package/dist/src/compiled/_chunks/workflow/debug-log-CVPstO1D.js +0 -1
  179. package/dist/src/compiled/_chunks/workflow/dist-BUFGAKRb.js +0 -1
  180. package/dist/src/compiled/_chunks/workflow/frames-Dr9fHWdo.js +0 -3
  181. package/dist/src/compiled/_chunks/workflow/helpers-DkKxg_yn.js +0 -1
  182. package/dist/src/compiled/_chunks/workflow/resume-hook-uTW-jBYz.js +0 -1
  183. package/dist/src/compiled/_chunks/workflow/run-5DmiMN9b.js +0 -1
  184. package/dist/src/compiled/_chunks/workflow/serialization-CNIYl1D3.js +0 -3
  185. package/dist/src/compiled/_chunks/workflow/signal-exit-DZKTacNU.js +0 -95
  186. package/dist/src/compiled/_chunks/workflow/sleep-DFKgN7UG.js +0 -1
  187. package/dist/src/compiled/_chunks/workflow/token-1wSBbi5N.js +0 -1
  188. package/dist/src/compiled/_chunks/workflow/token-util-Cm4Ec1Bg.js +0 -1
  189. package/dist/src/compiled/_chunks/workflow/ws-transport--rYOVIaf.js +0 -1
@@ -1,5 +1,5 @@
1
- import{a as e,t}from"../../_chunks/workflow/rolldown-runtime-B_knIduE.js";import{t as n}from"../../_chunks/workflow/debug-log-CVPstO1D.js";import{B as r,F as i,G as a,J as o,K as s,N as c,P as l,Q as u,U as d,V as f,W as p,_ as m,a as h,c as g,ct as _,d as v,dt as y,g as b,h as x,ht as S,it as C,l as ee,m as te,mt as ne,n as re,nt as w,o as T,ot as ie,pt as ae,q as oe,r as se,s as ce,st as le,ut as ue,w as de,x as fe,y as pe,z as E}from"../../_chunks/workflow/dist-BUFGAKRb.js";import{b as me,f as he,j as D,k as ge,o as O,p as _e,r as k,s as A}from"../../_chunks/workflow/dist-CaNNONeg.js";import{i as j,n as ve,r as ye,t as be}from"../../_chunks/workflow/workflow-routes-CwqB063q.js";import{a as xe,i as M,n as N,r as P,t as F}from"../../_chunks/workflow/signal-exit-DZKTacNU.js";import{z as I}from"#compiled/zod/index.js";import{createHash as L}from"node:crypto";import{promisify as Se}from"node:util";import{fileURLToPath as Ce}from"node:url";import{promises as R}from"node:fs";import z,{access as we,constants as Te,mkdir as Ee,readFile as De,readdir as Oe,readlink as ke,rm as Ae,unlink as je,writeFile as Me}from"node:fs/promises";import B from"node:path";import{tmpdir as Ne}from"node:os";import{execFile as Pe}from"node:child_process";import{setTimeout as Fe}from"node:timers/promises";import Ie from"node:assert";import{EventEmitter as Le}from"node:events";var Re=class extends D{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 ze=new Set([`EROFS`,`EACCES`,`EPERM`]);function Be(e){return e!==void 0&&ze.has(e)}const Ve=S(`@workflow/world-local//buildTargetWarnings`,1,()=>({warnedAboutVercelDeployment:!1}));function He(e){if(Ve.warnedAboutVercelDeployment||!process.env.VERCEL_DEPLOYMENT_ID)return;let t=B.resolve(e),n=Ne();t===n||t.startsWith(`${n}${B.sep}`)||(Ve.warnedAboutVercelDeployment=!0,console.warn(`[workflow] Warning: the local (filesystem) world is running inside a Vercel deployment, writing to ${t}. That filesystem is read-only, so workflow runs will fail before their first step. The world is selected from the environment when the process starts: the Vercel world is used when VERCEL_DEPLOYMENT_ID is set, unless WORKFLOW_TARGET_WORLD says otherwise. Unset WORKFLOW_TARGET_WORLD in this deployment, or set WORKFLOW_TARGET_WORLD=vercel, to use the Vercel world.`))}function Ue(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function We(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=Ue(i.slice(s+1));c!==void 0&&n.push(c)}return n}const Ge=Se(Pe);function Ke(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const qe=((e,t)=>e.join(t))([``,`proc`],`/`);async function Je(e){let t=[`${qe}/net/tcp`,`${qe}/net/tcp6`],n=[],r=new Set,i=`${qe}/${e}/fd`;try{let e=(await Oe(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await ke(`${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 De(e,`utf8`)).split(`
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=Ke(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 Ye(e){try{let{stdout:t}=await Ge(`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=Ke(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Xe(e){try{let{stdout:t}=await Ge(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return We(t,e)}catch{return[]}}async function Ze(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Je(e);case`darwin`:return await Ye(e);case`win32`:return await Xe(e);default:return[]}}catch(e){return n(`[getAllPorts] Detection failed:`,e),[]}}const Qe=`${be}/flow?__health`;async function $e(e,t={}){let{endpoint:n=Qe,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 et(e){let t=await Ze();if(t.length===0)return;if(t.length===1)return t[0];let r=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await $e(t,e)})))).find(e=>e.isWorkflow);return r?r.port:(n(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function tt(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const nt=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,rt=()=>process.env.WORKFLOW_LOCAL_BASE_URL,it=tt(()=>({dataDir:nt(),baseUrl:rt()}));function at(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 ot(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??ve(`http://localhost`)}async function st(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 ve(`http://localhost:${e.port}`);if(process.env.PORT)return ve(`http://localhost:${process.env.PORT}`);let t=await et({endpoint:ye()});if(t)return ve(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const V=S(`@workflow/world-local//fs`,1,()=>({ulid:y(()=>Math.random()),createdFilesCache:new Set,createdDirectoriesCache:new Set}));function ct(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var lt=class extends D{constructor(e,t){super(`Unsafe ${e} "${ct(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function H(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new lt(e,t)}function U(e,...t){let n=B.resolve(e),r=B.resolve(e,...t);if(r!==n&&!r.startsWith(n+B.sep))throw new lt(`path`,t.join(`/`));return r}const ut=process.platform===`win32`;async function W(e,t=5){if(!ut)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}function dt(){V.createdFilesCache.clear(),V.createdDirectoriesCache.clear()}const ft=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function pt(e){return e.replace(ft,``)}function mt(e,t){return e.endsWith(`.${t}`)}function ht(e){return!ft.test(e)}function G(e,t,n,r){return H(`fileId`,n),r!==void 0&&H(`tag`,r),U(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function K(e,t,n,r,i){if(H(`fileId`,n),i!==void 0&&H(`tag`,i),i){let a=await X(U(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return X(U(e,t,`${n}.json`),r)}async function gt(e,t){let n=`.${t}.json`;try{return(await R.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function _t(e,t,n){let r=`.${t}${n}`;try{return(await R.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function vt(e){let t=B.resolve(e);if(!V.createdDirectoriesCache.has(t))try{await R.mkdir(t,{recursive:!0}),V.createdDirectoriesCache.add(t)}catch(e){let n=e.code;if(Be(n)&&!await yt(t))throw new Re(t,n)}}async function yt(e){try{return(await R.stat(e)).isDirectory()}catch{return!1}}async function bt(e,t){await vt(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return V.createdDirectoriesCache.delete(B.resolve(e)),await vt(e),t()}}function q(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function xt(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function J(e,t,n){return Y(e,JSON.stringify(t,q,2),n)}async function Y(e,t,n){if(!n?.overwrite){if(V.createdFilesCache.has(e))throw new k(`File ${e} already exists and 'overwrite' is false`);try{throw await R.access(e),V.createdFilesCache.add(e),new k(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${V.ulid()}`,i=!1;try{await bt(B.dirname(e),async()=>{await R.writeFile(r,t),i=!0,await W(()=>R.rename(r,e))}),V.createdFilesCache.add(e)}catch(e){throw i&&await W(()=>R.unlink(r),3).catch(()=>{}),e}}async function X(e,t){try{let n=await W(()=>R.readFile(e,`utf-8`));return t.parse(JSON.parse(n,xt))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function St(e){return await R.readFile(e)}async function Ct(e){let t=await R.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function Z(e){try{await W(()=>R.unlink(e))}catch(e){if(e.code!==`ENOENT`)throw e}}async function Q(e,t){let n=`${e}.tmp.${V.ulid()}`,r=!1;try{return await bt(B.dirname(e),async()=>{await R.writeFile(n,t,{flag:`wx`}),r=!0;try{return await W(()=>R.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await W(()=>R.unlink(n),3).catch(()=>{})}}async function wt(e,t){try{return await bt(B.dirname(t),()=>W(()=>R.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function Tt(e){return Et(e,`.json`)}async function Et(e,t){try{return(await R.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}const Dt=`key:`;function Ot(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 kt(e,t,n){return n?`${Dt}${n}`:t?`${e.toISOString()}|${t}`:e.toISOString()}async function At(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d,getSortKey:f,getSortKeyFromFileId:p}=e;i!==void 0&&H(`filePrefix`,i);let m=B.resolve(t),h=await Tt(m),g=i?h.filter(e=>e.startsWith(i)):h,_=a?g.filter(a):g,v=Ot(l),y=_;if(v?.sortKey&&p){let e=v.sortKey;y=_.filter(t=>{let n=p(t);if(n===null)return!0;let r=n.localeCompare(e);return s===`desc`?r<0:r>0})}else v&&!v.sortKey&&(y=_.filter(e=>{let t=u(`${e}.json`);if(t){let e=v.timestamp.getTime(),n=t.getTime();return v.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let b=[];for(let e=0;e<y.length;e+=32){let t=y.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=B.join(m,`${e}.json`),i;try{let e=r?.get(t);i=e===void 0?await X(t,n):structuredClone(e)}catch(t){if(t instanceof I.ZodError)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}return i&&o&&!await o(i)?null:i}));for(let e of i){if(!e)continue;let t=f?.(e)??null;if(v?.sortKey){if(t){let e=t.localeCompare(v.sortKey);if(s===`desc`?e>=0:e<=0)continue}b.push(e);continue}if(v){let t=e.createdAt.getTime(),n=v.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&v.id&&d&&d(e)>=v.id)continue}else if(t<n||t===n&&v.id&&d&&d(e)<=v.id)continue}b.push(e)}}b.sort((e,t)=>{if(f){let n=f(e),r=f(t);if(n!==null&&r!==null)return s===`asc`?n.localeCompare(r):r.localeCompare(n)}let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let x=b.length>c,S=x?b.slice(0,c):b;return{data:S,cursor:S.length>0?kt(S[S.length-1].createdAt,d?.(S[S.length-1]),f?.(S[S.length-1])):null,hasMore:x}}const jt=S(`@workflow/world-local//packageInfo`,1,()=>({cached:null}));function Mt(){return typeof import.meta.url==`string`&&import.meta.url?B.dirname(Ce(import.meta.url)):null}async function Nt(){if(jt.cached)return jt.cached;let e=Mt();if(e)try{let t=await De(B.join(e,`../package.json`),`utf-8`);return jt.cached=JSON.parse(t),jt.cached}catch{}return jt.cached={name:`@workflow/world-local`,version:`5.0.0-beta.48`},jt.cached}const Pt=`version.txt`;var Ft=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},It=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 Lt(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 Rt(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function zt(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:Lt(t.substring(n+1))}}function Bt(e,t){return`${e}@${Rt(t)}`}function Vt(e,t){console.log(`[world-local] Upgrading from version ${Rt(e)} to ${Rt(t)}`)}async function Ht(e){let t=B.resolve(e);try{await Ee(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new Ft(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await we(t,Te.R_OK)}catch(e){let n=e;throw new Ft(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=B.join(t,`.workflow-write-test-${Date.now()}`);try{await Me(n,``),await je(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new Ft(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Ut(e){let t=B.join(B.resolve(e),Pt);try{return zt(await De(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Wt(e,t){let n=B.join(B.resolve(e),Pt),r=Bt((await Nt()).name,t);await Me(n,r)}function Gt(e,t){return t||Rt(e)}async function Kt(e){await Ht(e);let t=await Nt(),n=Lt(t.version),r=await Ut(e);if(r===null){await Wt(e,n);return}let{version:i}=r;if(Rt(i)!==Rt(n))try{Vt(i,n),await Wt(e,n)}catch(e){let r=Gt(i,e instanceof It?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Rt(i)} to ${Rt(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}const qt=S(`@workflow/world-local//telemetry`,1,()=>({apiPromise:null,tracerPromise:null}));async function Jt(){return qt.apiPromise||=import(`../../@opentelemetry/api/index.js`).catch(()=>null),qt.apiPromise}async function Yt(){return qt.tracerPromise||=Jt().then(e=>e?e.trace.getTracer(`workflow`):null),qt.tracerPromise}async function Xt(e,...t){let[n,r]=await Promise.all([Yt(),Jt()]),{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 Zt(e){let t=await Jt();if(t)return t.SpanKind[e]}function Qt(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const $t=Qt(`peer.service`),en=Qt(`rpc.system`),tn=Qt(`rpc.service`),nn=Qt(`rpc.method`),rn=Qt(`workflow.run.id`),an=Qt(`step.id`),on={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},sn={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},cn=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function ln(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 un(e,t){return typeof e[t]==`string`?e[t]:void 0}function dn(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function fn(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 pn(e,t,n){let r=`${e}.${t}`,i={},a=sn[r],o=a===void 0?cn.has(r)?dn(n[0]):void 0:un(n,a);if(o&&Object.assign(i,rn(o)),r===`world.steps.get`){let e=un(n,1);e&&Object.assign(i,an(e))}return i}function mn(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=ln(t);r&&(n=`${e}.${a} ${r}`)}return Xt(n,{kind:await Zt(`INTERNAL`)},async r=>{r?.setAttributes({...$t(on.peerService),...en(on.rpcSystem),...tn(on.rpcService),...nn(n),...pn(e,a,t)});let o=await i(...t),s=fn(o);return s&&r?.setAttributes(rn(s)),o})}}return n}var hn=t((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimit=t.Sema=void 0;let r=n(e(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};t.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}t.RateLimit=f}))(),gn=N(),_n=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,q))}async deserialize(e){let t=[],n=e.getReader();for(;;){let{done:e,value:r}=await n.read();if(e)break;r&&t.push(r)}let r=Buffer.concat(t).toString();return JSON.parse(r,xt)}};const vn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,yn=2147483647,bn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3;function xn(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 Sn(){return{bodyTimeout:xn(`WORKFLOW_LOCAL_BODY_TIMEOUT_MS`,0),connections:1e3,headersTimeout:xn(`WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`,0),keepAliveTimeout:3e4}}const Cn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function wn(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(Cn))return!0;t=`cause`in t?t.cause:void 0}return!1}function Tn(e){let t=Sn(),r=b()?P({maxSockets:t.connections,keepAliveMs:t.keepAliveTimeout}):void 0,i=r?void 0:new gn.Agent(t),a=new _n,o=y(),s=new hn.Sema(bn),c=new AbortController,l=c.signal,u=new Map,d=new Map,f=async(c,f,p)=>{let m=[];if(p?.idempotencyKey){let e=u.get(p.idempotencyKey);if(e)return{messageId:e}}let h=a.serialize(f),{prefix:g}=de(c),_=pe.parse(`msg_${o()}`),v=f,y=v.runId??void 0,b=v.stepId??void 0;if(p?.idempotencyKey){let e=p.idempotencyKey;u.set(e,_),m.push(()=>{u.delete(e)})}return(async()=>{if(p?.delaySeconds&&p.delaySeconds>0){let e=Math.min(p.delaySeconds*1e3,yn);await Fe(e,void 0,{signal:l})}s.tryAcquire()||(n(`[world-local]: concurrency limit (${bn}) reached, waiting for queue to free up`),await s.acquire());let a=0;try{for(let n=0;n<256;n++){let o={...p?.headers,"content-type":`application/json`,"x-vqs-queue-name":c,"x-vqs-message-id":_,"x-vqs-message-attempt":String(a+1)},s=d.get(g),u,f;try{if(s)u=await s(new Request(j(ot(e),{type:`flow`}),{method:`POST`,headers:o,body:h}));else{let n=await st(e),a=j(n,{type:`flow`});u=r?await xe(a,{method:`POST`,headers:new Headers(o),body:h,agents:r,signal:l,headersTimeoutMs:t.headersTimeout,bodyTimeoutMs:t.bodyTimeout}):await fetch(a,{method:`POST`,duplex:`half`,dispatcher:i,headers:o,body:h,signal:l})}a++,f=await u.text()}catch(e){let t=e?.name;if(l.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(wn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${n+1}), retrying`,{queueName:c,messageId:_,...y&&{runId:y},...b&&{stepId:b},error:String(e)}),await Fe(5e3,void 0,{signal:l});continue}if(u.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){if(e>0){let t=Math.min(e*1e3,yn);await Fe(t,void 0,{signal:l})}continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${a}, HTTP ${u.status})`,{queueName:c,messageId:_,...y&&{runId:y},...b&&{stepId:b},handlerError:f}),await Fe(5e3,void 0,{signal:l})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:c,messageId:_,...y&&{runId:y},...b&&{stepId:b}})}finally{s.release()}})().catch(e=>{e?.name!==`AbortError`&&e?.name!==`ResponseAborted`&&(wn(e)?console.error(`[local world] Queue operation failed: detected "${Cn}". 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:c,messageId:_,...y&&{runId:y},...b&&{stepId:b},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of m)e()}),{messageId:_}},p=I.compile(I.object({"x-vqs-queue-name":fe,"x-vqs-message-id":pe,"x-vqs-message-attempt":I.coerce.number()}));return{queue:f,createQueueHandler:(e,t)=>async n=>{let r=p.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 _n().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a});if(typeof s==`object`&&s&&`invoke`in s&&s.invoke===!0)return Response.json({result:e});let n=null;return typeof e==`object`&&e&&`timeoutSeconds`in e&&typeof e.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,vn)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await Nt()).version}`,registerHandler(e,t){d.set(e,t)},async close(){l.aborted||(c.abort(),r&&M(r),await i?.close())}}}var En=t(((t,n)=>{var r=e(`constants`),i=process.cwd,a=null,o=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return a||=i.call(process),a};try{process.cwd()}catch{}if(typeof process.chdir==`function`){var s=process.chdir;process.chdir=function(e){a=null,s.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,s)}n.exports=c;function c(e){r.hasOwnProperty(`O_SYMLINK`)&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||n(e),e.chown=s(e.chown),e.fchown=s(e.fchown),e.lchown=s(e.lchown),e.chmod=i(e.chmod),e.fchmod=i(e.fchmod),e.lchmod=i(e.lchmod),e.chownSync=c(e.chownSync),e.fchownSync=c(e.fchownSync),e.lchownSync=c(e.lchownSync),e.chmodSync=a(e.chmodSync),e.fchmodSync=a(e.fchmodSync),e.lchmodSync=a(e.lchmodSync),e.stat=l(e.stat),e.fstat=l(e.fstat),e.lstat=l(e.lstat),e.statSync=u(e.statSync),e.fstatSync=u(e.fstatSync),e.lstatSync=u(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){}),o===`win32`&&(e.rename=typeof e.rename==`function`?(function(t){function n(n,r,i){var a=Date.now(),o=0;t(n,r,function s(c){if(c&&(c.code===`EACCES`||c.code===`EPERM`||c.code===`EBUSY`)&&Date.now()-a<6e4){setTimeout(function(){e.stat(r,function(e,a){e&&e.code===`ENOENT`?t(n,r,s):i(c)})},o),o<100&&(o+=10);return}i&&i(c)})}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.rename):e.rename),e.read=typeof e.read==`function`?(function(t){function n(n,r,i,a,o,s){var c;if(s&&typeof s==`function`){var l=0;c=function(u,d,f){if(u&&u.code===`EAGAIN`&&l<10)return l++,t.call(e,n,r,i,a,o,c);s.apply(this,arguments)}}return t.call(e,n,r,i,a,o,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.read):e.read,e.readSync=typeof e.readSync==`function`?(function(t){return function(n,r,i,a,o){for(var s=0;;)try{return t.call(e,n,r,i,a,o)}catch(e){if(e.code===`EAGAIN`&&s<10){s++;continue}throw e}}})(e.readSync):e.readSync;function t(e){e.lchmod=function(t,n,i){e.open(t,r.O_WRONLY|r.O_SYMLINK,n,function(t,r){if(t){i&&i(t);return}e.fchmod(r,n,function(t){e.close(r,function(e){i&&i(t||e)})})})},e.lchmodSync=function(t,n){var i=e.openSync(t,r.O_WRONLY|r.O_SYMLINK,n),a=!0,o;try{o=e.fchmodSync(i,n),a=!1}finally{if(a)try{e.closeSync(i)}catch{}else e.closeSync(i)}return o}}function n(e){r.hasOwnProperty(`O_SYMLINK`)&&e.futimes?(e.lutimes=function(t,n,i,a){e.open(t,r.O_SYMLINK,function(t,r){if(t){a&&a(t);return}e.futimes(r,n,i,function(t){e.close(r,function(e){a&&a(t||e)})})})},e.lutimesSync=function(t,n,i){var a=e.openSync(t,r.O_SYMLINK),o,s=!0;try{o=e.futimesSync(a,n,i),s=!1}finally{if(s)try{e.closeSync(a)}catch{}else e.closeSync(a)}return o}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}function i(t){return t&&function(n,r,i){return t.call(e,n,r,function(e){d(e)&&(e=null),i&&i.apply(this,arguments)})}}function a(t){return t&&function(n,r){try{return t.call(e,n,r)}catch(e){if(!d(e))throw e}}}function s(t){return t&&function(n,r,i,a){return t.call(e,n,r,i,function(e){d(e)&&(e=null),a&&a.apply(this,arguments)})}}function c(t){return t&&function(n,r,i){try{return t.call(e,n,r,i)}catch(e){if(!d(e))throw e}}}function l(t){return t&&function(n,r,i){typeof r==`function`&&(i=r,r=null);function a(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),i&&i.apply(this,arguments)}return r?t.call(e,n,r,a):t.call(e,n,a)}}function u(t){return t&&function(n,r){var i=r?t.call(e,n,r):t.call(e,n);return i&&(i.uid<0&&(i.uid+=4294967296),i.gid<0&&(i.gid+=4294967296)),i}}function d(e){return!(e&&e.code!==`ENOSYS`&&(process.getuid&&process.getuid()===0||e.code!==`EINVAL`&&e.code!==`EPERM`))}}})),Dn=t(((t,n)=>{var r=e(`stream`).Stream;n.exports=i;function i(e){return{ReadStream:t,WriteStream:n};function t(n,i){if(!(this instanceof t))return new t(n,i);r.call(this);var a=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags=`r`,this.mode=438,this.bufferSize=65536,i||={};for(var o=Object.keys(i),s=0,c=o.length;s<c;s++){var l=o[s];this[l]=i[l]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!=`number`)throw TypeError(`start must be a Number`);if(this.end===void 0)this.end=1/0;else if(typeof this.end!=`number`)throw TypeError(`end must be a Number`);if(this.start>this.end)throw Error(`start must be <= end`);this.pos=this.start}if(this.fd!==null){process.nextTick(function(){a._read()});return}e.open(this.path,this.flags,this.mode,function(e,t){if(e){a.emit(`error`,e),a.readable=!1;return}a.fd=t,a.emit(`open`,t),a._read()})}function n(t,i){if(!(this instanceof n))return new n(t,i);r.call(this),this.path=t,this.fd=null,this.writable=!0,this.flags=`w`,this.encoding=`binary`,this.mode=438,this.bytesWritten=0,i||={};for(var a=Object.keys(i),o=0,s=a.length;o<s;o++){var c=a[o];this[c]=i[c]}if(this.start!==void 0){if(typeof this.start!=`number`)throw TypeError(`start must be a Number`);if(this.start<0)throw Error(`start must be >= zero`);this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}})),On=t(((e,t)=>{t.exports=r;var n=Object.getPrototypeOf||function(e){return e.__proto__};function r(e){if(typeof e!=`object`||!e)return e;if(e instanceof Object)var t={__proto__:n(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}),t}})),kn=t(((t,n)=>{var r=e(`fs`),i=En(),a=Dn(),o=On(),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=ne;var t=e.readFile;e.readFile=n;function n(e,n,r){return typeof n==`function`&&(r=n,n=null),i(e,n,r);function i(e,n,r,a){return t(e,n,function(t){t&&(t.code===`EMFILE`||t.code===`ENFILE`)?m([i,[e,n,r],t,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var r=e.writeFile;e.writeFile=o;function o(e,t,n,i){return typeof n==`function`&&(i=n,n=null),a(e,t,n,i);function a(e,t,n,i,o){return r(e,t,n,function(r){r&&(r.code===`EMFILE`||r.code===`ENFILE`)?m([a,[e,t,n,i],r,o||Date.now(),Date.now()]):typeof i==`function`&&i.apply(this,arguments)})}}var s=e.appendFile;s&&(e.appendFile=c);function c(e,t,n,r){return typeof n==`function`&&(r=n,n=null),i(e,t,n,r);function i(e,t,n,r,a){return s(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var l=e.copyFile;l&&(e.copyFile=u);function u(e,t,n,r){return typeof n==`function`&&(r=n,n=0),i(e,t,n,r);function i(e,t,n,r,a){return l(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var d=e.readdir;e.readdir=h;var f=/^v[0-5]\./;function h(e,t,n){typeof t==`function`&&(n=t,t=null);var r=f.test(process.version)?function(e,t,n,r){return d(e,i(e,t,n,r))}:function(e,t,n,r){return d(e,t,i(e,t,n,r))};return r(e,t,n);function i(e,t,n,i){return function(a,o){a&&(a.code===`EMFILE`||a.code===`ENFILE`)?m([r,[e,t,n],a,i||Date.now(),Date.now()]):(o&&o.sort&&o.sort(),typeof n==`function`&&n.call(this,a,o))}}}if(process.version.substr(0,4)===`v0.8`){var g=a(e);x=g.ReadStream,C=g.WriteStream}var _=e.ReadStream;_&&(x.prototype=Object.create(_.prototype),x.prototype.open=S);var v=e.WriteStream;v&&(C.prototype=Object.create(v.prototype),C.prototype.open=ee),Object.defineProperty(e,"ReadStream",{get:function(){return x},set:function(e){x=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return C},set:function(e){C=e},enumerable:!0,configurable:!0});var y=x;Object.defineProperty(e,"FileReadStream",{get:function(){return y},set:function(e){y=e},enumerable:!0,configurable:!0});var b=C;Object.defineProperty(e,"FileWriteStream",{get:function(){return b},set:function(e){b=e},enumerable:!0,configurable:!0});function x(e,t){return this instanceof x?(_.apply(this,arguments),this):x.apply(Object.create(x.prototype),arguments)}function S(){var e=this;w(e.path,e.flags,e.mode,function(t,n){t?(e.autoClose&&e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n),e.read())})}function C(e,t){return this instanceof C?(v.apply(this,arguments),this):C.apply(Object.create(C.prototype),arguments)}function ee(){var e=this;w(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 ne(t,n){return new e.WriteStream(t,n)}var re=e.open;e.open=w;function w(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 re(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))}}})),An=t(((e,t)=>{function n(e,t){typeof t==`boolean`&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}t.exports=n,n.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},n.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},n.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error(`RetryOperation timeout occurred`)),!1;this._errors.push(e);var n=this._timeouts.shift();if(n===void 0){if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),n=this._timeouts.shift();else return!1}var r=this,i=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},n);return this._options.unref&&i.unref(),!0},n.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){n._operationTimeoutCb()},n._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},n.prototype.try=function(e){console.log(`Using RetryOperation.try() is deprecated`),this.attempt(e)},n.prototype.start=function(e){console.log(`Using RetryOperation.start() is deprecated`),this.attempt(e)},n.prototype.start=n.prototype.try,n.prototype.errors=function(){return this._errors},n.prototype.attempts=function(){return this._attempts},n.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,n=0,r=0;r<this._errors.length;r++){var i=this._errors[r],a=i.message,o=(e[a]||0)+1;e[a]=o,o>=n&&(t=i,n=o)}return t}})),jn=t((e=>{var t=An();e.operation=function(n){return new t(e.timeouts(n),{forever:n&&n.forever,unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},e.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var n in e)t[n]=e[n];if(t.minTimeout>t.maxTimeout)throw Error(`minTimeout is greater than maxTimeout`);for(var r=[],i=0;i<t.retries;i++)r.push(this.createTimeout(i,t));return e&&e.forever&&!r.length&&r.push(this.createTimeout(i,t)),r.sort(function(e,t){return e-t}),r},e.createTimeout=function(e,t){var n=t.randomize?Math.random()+1:1,r=Math.round(n*t.minTimeout*t.factor**+e);return r=Math.min(r,t.maxTimeout),r},e.wrap=function(t,n,r){if(n instanceof Array&&(r=n,n=null),!r)for(var i in r=[],t)typeof t[i]==`function`&&r.push(i);for(var a=0;a<r.length;a++){var o=r[a],s=t[o];t[o]=function(r){var i=e.operation(n),a=Array.prototype.slice.call(arguments,1),o=a.pop();a.push(function(e){i.retry(e)||(e&&(arguments[0]=i.mainError()),o.apply(this,arguments))}),i.attempt(function(){r.apply(t,a)})}.bind(t,s),t[o].options=n}}})),Mn=t(((e,t)=>{t.exports=jn()})),Nn=t(((e,t)=>{let n=Symbol();function r(e,t,r){let i=t[n];if(i)return t.stat(e,(e,t)=>{if(e)return r(e);r(null,t.mtime,i)});let a=new Date(Math.ceil(Date.now()/1e3)*1e3+5);t.utimes(e,a,a,i=>{if(i)return r(i);t.stat(e,(e,i)=>{if(e)return r(e);let a=i.mtime.getTime()%1e3==0?`s`:`ms`;Object.defineProperty(t,n,{value:a}),r(null,i.mtime,a)})})}function i(e){let t=Date.now();return e===`s`&&(t=Math.ceil(t/1e3)*1e3),new Date(t)}t.exports.probe=r,t.exports.getMtime=i})),Pn=t(((t,n)=>{let r=e(`path`),i=kn(),a=Mn(),o=F(),s=Nn(),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})),Fn=t(((e,t)=>{let n=kn();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}})),In=t(((e,t)=>{let n=Pn(),{toPromise:r,toSync:i,toSyncOptions:a}=Fn();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 Ln(e){return L(`sha256`).update(e).digest(`hex`)}function Rn(e,t,n){return U(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function zn(e,t,n){let r=[Rn(e,t)];n&&r.push(Rn(e,t,n));for(let e of r){let t;try{t=await z.readFile(e,`utf8`)}catch{continue}if(t.trim()===``)return{committed:!0};try{let e=JSON.parse(t).forceClaimedBy;if(e&&typeof e.runId==`string`&&typeof e.hookId==`string`)return{committed:!0,forceClaimedBy:{runId:e.runId,hookId:e.hookId}}}catch{}return{committed:!0}}return{committed:!1}}async function Bn(e,t,n){let r=[Rn(e,t)];n&&r.push(Rn(e,t,n));for(let e of r)try{return await z.access(e),!0}catch{}return!1}function Vn(e,t,n){return U(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function Hn(e,t,n){let r=[Vn(e,t)];n&&r.push(Vn(e,t,n));for(let e of r)try{return await z.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function Un(e,t,n){return U(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function Wn(e,t,n,r){return B.join(Un(e,t,r),`${n}.json`)}async function Gn(e,t,n){let r=[Un(e,t)];n&&r.push(Un(e,t,n));for(let e of r){let t;try{t=await z.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await W(()=>z.unlink(B.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await z.rmdir(e).catch(()=>{})}}async function Kn(e,t,n){let r=await qn(e,t,n),i=Date.now();if(r.maxId)try{let e=ue(r.maxId.replace(/^evnt_/,``));i<=e&&(i=e+1)}catch{}return{eventId:`evnt_${nr(i)}`,createdAt:new Date(i)}}async function qn(e,t,n){let r=[];try{r=await z.readdir(B.join(e,`events`))}catch(e){if(e.code!==`ENOENT`)throw e}let i=`${t}-`,a=[],o=null,s=0,c=!1,l=0;for(let e of r){if(!e.startsWith(i)||!e.endsWith(`.json`))continue;let t=e.slice(0,-5);if(!ht(t)&&!(n&&mt(t,n)))continue;let r=pt(t).slice(i.length);l+=1,a.push(r),(!o||r>o)&&(o=r);let u=g(r);u!==null&&(c=!0,u>s&&(s=u))}return{maxId:o,usesSlots:c,maxSlot:s,count:l,ids:a}}function Jn(e,t){return B.join(e,`hooks`,`tokens`,`${Ln(t)}.json`)}const Yn=I.compile(I.object({hookId:I.string().optional(),runId:I.string(),eventId:I.string().optional(),tokenRetentionUntil:I.coerce.date().optional(),claimedFrom:I.object({runId:I.string(),hookId:I.string(),workflowName:I.string().optional(),deploymentId:I.string().optional(),runSpecVersion:I.number().optional()}).optional()}));async function Xn(e){try{return await X(e,Yn)}catch(e){if(e instanceof SyntaxError||e instanceof I.ZodError)return null;throw e}}async function Zn(e,t,n){let r=Jn(e,t);await z.mkdir(B.dirname(r),{recursive:!0});let i=new AbortController,a;try{a=await(0,In.lock)(r,{realpath:!1,stale:3e4,update:1e3,retries:{retries:350,factor:1,minTimeout:100,maxTimeout:100},onCompromised(e){i.abort(new D(`Hook token claim lock was compromised`,{cause:e}))}})}catch(e){throw new D(`Could not acquire Hook token claim lock`,{cause:e})}let o;try{o=await n(i.signal),i.signal.throwIfAborted()}catch(e){throw i.signal.aborted||await a().catch(()=>{}),e}try{await a()}catch(e){throw new D(`Could not release Hook token claim lock`,{cause:e})}return o}function Qn(e,t,n){let r=L(`sha256`).update(`${t}\x00${n}`).digest(`hex`);return B.join(e,`hooks`,`resumes`,`${r}.json`)}async function $n(e,t,n,r){await Zn(e,t,async i=>{let a=Jn(e,t),o=await Xn(a);o&&o.runId===n&&o.hookId===r&&(i.throwIfAborted(),await Z(a))})}function er(e,t,n,r){let i=L(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return B.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const tr=S(`@workflow/world-local//storageMonotonicUlid`,1,()=>({next:y(()=>Math.random())})),nr=e=>tr.next(e),rr=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=pt(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);if(i===-1){let e=r.replace(/\.json$/,``).replace(t,``);return re(e)}if(e===`step`)return null;let a=r.substring(i+1).replace(/\.json$/,``).replace(t,``);return re(a)}},ir=I.compile(I.object({runId:I.string()})),ar=I.compile(I.object({hookId:I.string(),tag:I.string().optional()}));function or(e,t){return U(e,`hooks`,`token-index`,Ln(t))}function sr(e,t){return H(`hookId`,t),U(e,`hooks`,`id-index`,t)}function cr(e){return U(e,`hooks`,`by-run`)}function lr(e){let t=pt(e);return t===e?void 0:e.slice(t.length+1)}function ur(e,t){return t?ht(e)||mt(e,t):ht(e)}async function dr(e){try{return await X(e,f)}catch(e){if(e instanceof SyntaxError||e instanceof I.ZodError)return null;throw e}}async function fr(e,t,n,r,i,a){H(`runId`,n),H(`eventId`,i),a!==void 0&&H(`tag`,a);let o=a?`${n}-${i}.${a}.json`:`${n}-${i}.json`,s=JSON.stringify({runId:n});await Promise.all([Q(B.join(or(e,t),o),s),Q(B.join(sr(e,r),o),s)])}function pr(e,t,n,r){return G(e,`hooks/by-run`,`${t}-${n}`,r)}async function mr(e,t,n,r){await Q(pr(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function hr(e,t,n,r){await Z(pr(e,t,n,r)),r&&await Z(pr(e,t,n))}async function gr(e,t){H(`runId`,t);let n=cr(e),r=`${t}-`,i=[];for(let e of await Tt(n)){if(!e.startsWith(r))continue;let t=null;try{t=await X(B.join(n,`${e}.json`),ar)}catch(e){if(!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function _r(e,t){await Z(B.join(cr(e),`${t}.json`))}const vr=S(`@workflow/world-local//hookIndexEnsureCache`,1,()=>({ensuredBasedirs:new Map}));function yr(){vr.ensuredBasedirs.clear()}async function br(e){let t=B.resolve(e),n=vr.ensuredBasedirs.get(t);return n||(n=Sr(t).catch(e=>{throw vr.ensuredBasedirs.delete(t),e}),vr.ensuredBasedirs.set(t,n)),n}async function xr(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function Sr(e){let t=B.join(e,`hooks`,`.hook-index-complete`);try{await z.access(t);return}catch{}let n=B.join(e,`events`);await xr(await Tt(n),32,async t=>{let r=await dr(B.join(n,`${t}.json`));if(!r||r.eventType!==`hook_created`||typeof r.correlationId!=`string`)return;let i=r.eventData?.token;if(typeof i==`string`)try{await fr(e,i,r.runId,r.correlationId,r.eventId,lr(t))}catch{}});let r=B.join(e,`hooks`);await xr(await Tt(r),32,async t=>{let n=null;try{n=await X(B.join(r,`${t}.json`),m)}catch(e){if(!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}if(n)try{await mr(e,n.runId,n.hookId,lr(t))}catch{}}),await Q(t,``)}async function Cr(e,t,n,r){await br(e);let i;try{i=t.kind===`token`?or(e,t.token):sr(e,t.hookId)}catch{return null}let a=(e,t)=>{let n=pt(e);return n.startsWith(`${t}-`)?n.slice(t.length+1):n},o=(await Tt(i)).filter(e=>ur(e,r)).sort((e,t)=>pt(t).localeCompare(pt(e)));for(let t of o){let r=null;try{r=await X(B.join(i,`${t}.json`),ir)}catch(e){if(!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}if(!r)continue;let o=a(t,r.runId),s;try{s=G(e,`events`,`${r.runId}-${o}`,lr(t))}catch{continue}let c=await dr(s);if(c&&c.eventType===`hook_created`&&typeof c.correlationId==`string`&&await n(c))return c}return null}function wr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Tr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Er(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function Dr(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function Or(e){let{token:t,metadata:n,isWebhook:r,isSystem:i,tokenRetentionUntil:a,forceClaimedFrom:o}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,...o!==void 0&&{claimedFrom:o},metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1,tokenRetentionUntil:a}}function kr(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function Ar(e,t,n){let i=await K(e,`runs`,t,E,n);return i?r(i.status):!1}async function jr(e,t,n,r){let i=async t=>{if(await Ar(e,t.runId,r)){let e=t.eventData.tokenRetentionUntil;if(!e||e.getTime()<=Date.now())return!1}return!await Bn(e,t.correlationId,r)},a=await Cr(e,t,e=>kr(e,n)&&i(e),r);return a&&kr(a,n)?a:null}async function Mr(e,t,n){let r=Or(t);return await Q(Jn(e,r.token),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId,tokenRetentionUntil:t.eventData.tokenRetentionUntil,...r.claimedFrom&&{claimedFrom:r.claimedFrom}})),await mr(e,r.runId,r.hookId,n),await Q(G(e,`hooks`,r.hookId,n),JSON.stringify(r,q,2)),r}async function Nr(e,t,n){let r=await jr(e,{kind:`token`,token:t},e=>Dr(e)===t,n);return r?Mr(e,r,n):null}async function Pr(e,t,n){let r=await jr(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?Mr(e,r,n):null}function Fr(e,t){async function n(n){return await Bn(e,n.hookId,t)?!1:n.tokenRetentionUntil&&n.tokenRetentionUntil.getTime()>Date.now()?!0:!await Ar(e,n.runId,t)}async function r(n){let r=await zn(e,n.hookId,t);return r.committed&&r.forceClaimedBy!==void 0}async function i(i){let a=await Xn(Jn(e,i));if(a?.hookId)try{let o=await K(e,`hooks`,a.hookId,m,t);if(o?.token===i){if(await n(o))return{...o,isWebhook:o.isWebhook??!0};if(!await r(o))throw new A(i)}else if(o)return null}catch(e){if(!lt.is(e))throw e;return null}let o=B.join(e,`hooks`),s=await Tt(o),c=!1;for(let e of s){let t=await X(B.join(o,`${e}.json`),m);if(t?.token===i){if(await n(t))return{...t,isWebhook:t.isWebhook??!0};if(await r(t)){c=!0;continue}throw new A(i)}}if(c)throw new A(i);return null}async function a(r,i){H(`hookId`,r);let a=await K(e,`hooks`,r,m,t);if(a&&!await n(a))throw new A(r);let o=a??await Pr(e,r,t);if(!o)throw new A(r);let s=i?.resolveData||`all`;return Er({...o,isWebhook:o.isWebhook??!0},s)}async function o(n){let r=await i(n)??await Nr(e,n,t);if(!r)throw new A(n);return r}async function s(t){let r=B.join(e,`hooks`),i=t.resolveData||`all`,a=await At({directory:r,schema:m,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=>Er(e,i))}}return{get:a,getByToken:o,list:s}}async function Ir(e,t){await br(e);for(let n of await gr(e,t)){if(n.hookId){let r=null,i=null;try{i=G(e,`hooks`,n.hookId,n.tag),r=await X(i,m)}catch(e){if(!lt.is(e)&&!(e instanceof SyntaxError||e instanceof I.ZodError))throw e}if(r&&i&&r.runId===t){if(r.tokenRetentionUntil&&r.tokenRetentionUntil.getTime()>Date.now())continue;await $n(e,r.token,r.runId,r.hookId),await Z(er(e,r.token,r.runId,r.hookId)),await Z(i)}}await _r(e,n.fileId)}}const Lr=S(`@workflow/world-local//streamerMonotonicUlid`,1,()=>({next:y(()=>Math.random())})),Rr=e=>Lr.next(e),zr=I.compile(I.object({streams:I.array(I.string())}));function Br(e){return e===1}function Vr(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function Hr(e){return Br(e[0])}function Ur(e){return{eof:Hr(e),chunk:Buffer.from(e.subarray(1))}}async function Wr(e){try{return await z.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function Gr(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 Kr(e,t){return H(`streamName`,t),B.join(e,t)}async function qr(e,t,n){let r=Kr(e,t),i=await Wr(r),a=new Map;return Gr(a,i,`.json`),Gr(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&Gr(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}const Jr=`chnk_${`0`.repeat(26)}`;async function Yr(e,t,n){let r=B.join(e,`streams`,`chunks`),i=n?`.${n}`:``,a;try{H(`runId`,t),a=(await K(e,`streams/runs`,t,zr,n))?.streams??[]}catch(e){Xr(`streams of ${t}`,e);return}for(let e of a)try{let t=Kr(r,e);await Y(B.join(t,`${Jr}${i}.bin`),Vr({chunk:Buffer.from([]),eof:!0}),{overwrite:!0});for(let e of await Wr(t))e.startsWith(Jr)||(e.endsWith(`.bin`)||e.endsWith(`.json`))&&await W(()=>z.unlink(B.join(t,e))).catch(t=>{t.code!==`ENOENT`&&Xr(e,t)})}catch(t){Xr(e,t)}}function Xr(e,t){console.warn(`[world-local] Failed to purge stream data for ${e}:`,t instanceof Error?t.message:t)}function Zr(e,t){let n=t?`.${t}`:``,r=new Le,i=new Set;async function a(n,r){H(`runId`,n),H(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=G(e,`streams/runs`,n,t),s=(await K(e,`streams/runs`,n,zr,t))?.streams??[];s.includes(r)||(s.push(r),await J(o,{streams:s},{overwrite:!0})),i.add(a)}function o(e){return typeof e==`string`?Buffer.from(new TextEncoder().encode(e)):e instanceof Buffer?e:Buffer.from(e)}return{streams:{async write(t,i,s){let c=`chnk_${Rr()}`;await a(await t,i);let l=o(s),u=Vr({chunk:l,eof:!1});await Y(B.join(Kr(B.join(e,`streams`,`chunks`),i),`${c}${n}.bin`),u);let d=Uint8Array.from(l);r.emit(`chunk:${i}`,{streamName:i,chunkData:d,chunkId:c})},async writeMulti(t,i,s){if(s.length===0)return;let c=s.map(()=>`chnk_${Rr()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=Vr({chunk:t,eof:!1});return await Y(B.join(Kr(B.join(e,`streams`,`chunks`),i),`${a}${n}.bin`),o),{chunkId:a,chunkData:Uint8Array.from(t)}});for(let e of l){let{chunkId:t,chunkData:n}=await e;r.emit(`chunk:${i}`,{streamName:i,chunkData:n,chunkId:t})}},async close(t,i){let o=`chnk_${Rr()}`;await a(await t,i),await Y(B.join(Kr(B.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),Vr({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return H(`runId`,n),(await K(e,`streams/runs`,n,zr,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await qr(B.join(e,`streams`,`chunks`),r,t),l=0;if(i?.cursor)try{l=JSON.parse(Buffer.from(i.cursor,`base64`).toString(`utf-8`)).i}catch{l=0}let u=!1,d=[],f=0;for(let e of o){let t=s.get(e)??`.bin`,n=B.join(c,`${e}${t}`);if(f<l){if(Br(await Ct(n))){u=!0;break}f++;continue}if(d.length>=a){Br(await Ct(n))?u=!0:f++;break}let r=Ur(await St(n));if(r.eof){u=!0;break}d.push({index:f,data:Uint8Array.from(r.chunk)}),f++}let p=!u&&f>l+d.length,m=l+d.length;return{data:d,cursor:p?Buffer.from(JSON.stringify({i:m})).toString(`base64`):null,hasMore:p,done:u}},async getInfo(n,r){let{files:i,extMap:a,dir:o}=await qr(B.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(Br(await Ct(B.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=B.join(e,`streams`,`chunks`),s=()=>{},c=null,l=!1;return new ReadableStream({async start(e){let n=new Set,u=[],d=!0,f=!1,p=t=>{if(t.chunkData.byteLength===0){n.add(t.chunkId);return}d?(n.add(t.chunkId),u.push({chunkId:t.chunkId,chunkData:Uint8Array.from(t.chunkData)})):n.has(t.chunkId)||(n.add(t.chunkId),e.enqueue(Uint8Array.from(t.chunkData)))},m=()=>{if(d){f=!0;return}l=!0,s();try{e.close()}catch{}};s=()=>{r.off(`chunk:${i}`,p),r.off(`close:${i}`,m),c&&=(clearInterval(c),null)},r.on(`chunk:${i}`,p),r.on(`close:${i}`,m);let{files:h,extMap:g,dir:_}=await qr(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`;Br(await Ct(B.join(_,`${e}${t}`)))&&v--}let y=typeof a==`number`&&a<0?Math.max(0,v+a):a,b=!1;for(let t=y;t<h.length;t++){let r=h[t],i=r;if(n.has(i))continue;let a=g.get(r)??`.bin`,o=Ur(await St(B.join(_,`${r}${a}`)));if(o?.eof===!0){b=!0;break}n.add(i),o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}d=!1,u.sort((e,t)=>e.chunkId.localeCompare(t.chunkId));for(let t of u)e.enqueue(Uint8Array.from(t.chunkData));if(b){l=!0,s();try{e.close()}catch{}return}if(f){l=!0,s();try{e.close()}catch{}return}for(let e=0;e<y&&e<h.length;e++)n.add(h[e]);if(l){s();return}let x=!1;c=setInterval(async()=>{if(!x){x=!0;try{let{files:r,extMap:a}=await qr(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=Ur(await St(B.join(_,`${t}${i}`)));if(o?.eof===!0){l=!0,s();try{e.close()}catch{}return}if(l)return;o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}}catch(e){e instanceof Error&&`code`in e||console.error(`[world-local] Unexpected polling error:`,e)}finally{x=!1}}},100)},cancel(){l=!0,s()}})}}}}function Qr(e){let t=le(e);return t.unsupported&&console.warn(`[world-local] Ignoring unrecognized ${C} value ${JSON.stringify(t.raw)}; keeping the run's data.`),t.mode===`none`}function $r(e,t){return{...e,input:void 0,output:void 0,error:void 0,expiredAt:t}}async function ei(e,t,n){await Promise.all([ni(B.join(e,`steps`),t,e=>{e.input=void 0,e.output=void 0,e.error=void 0}),ni(B.join(e,`events`),t,e=>{let t=e.eventData;if(t&&typeof t==`object`)for(let n of u(String(e.eventType)))delete t[n]}),ri(e,t),Yr(e,t,n)])}const ti=I.record(I.string(),I.any()),$=I.preprocess(e=>{if(e&&typeof e==`object`&&`eventType`in e&&`eventData`in e){let t=e.eventData;if(t&&typeof t==`object`)for(let n of u(String(e.eventType)))n in t||(t[n]=void 0)}return e},f);async function ni(e,t,n){let r;try{r=await Tt(e)}catch(t){ii(e,t);return}for(let i of r){if(!i.startsWith(`${t}-`))continue;let r=B.join(e,`${i}.json`);try{let e=await X(r,ti);if(!e)continue;n(e),await J(r,e,{overwrite:!0})}catch(e){ii(r,e)}}}async function ri(e,t){let n;try{await br(e),n=await gr(e,t)}catch(e){ii(`hooks of ${t}`,e);return}for(let r of n)if(r.hookId)try{let n=G(e,`hooks`,r.hookId,r.tag),i=await X(n,ti);if(!i||i.runId!==t)continue;i.metadata=void 0,await J(n,i,{overwrite:!0})}catch(e){ii(r.hookId,e)}}function ii(e,t){console.warn(`[world-local] Failed to purge user data for ${e}:`,t instanceof Error?t.message:t)}const ai=new Le;ai.setMaxListeners(0);function oi(){return ae(`WORKFLOW_LOCAL_RUN_STATUS_POLL_INTERVAL_MS`,100,{integer:!0,min:1})}function si(e){ai.emit(`run:${e}`)}function ci(e,t,n){return t<=0||n?.aborted?Promise.resolve():new Promise(r=>{let i=`run:${e}`,a=!1,o=()=>{a||(a=!0,clearTimeout(s),ai.off(i,o),n?.removeEventListener(`abort`,o),r())},s=setTimeout(o,t);ai.once(i,o),n?.addEventListener(`abort`,o,{once:!0})})}async function li(e,t,n,i,a,o){if(r(o.status)||await Hn(e,t))throw new he(`Workflow run "${t}" is already in a terminal state`);let s=Wn(e,t,n);await Q(s,i);try{if(await Hn(e,t)||await wt(s,a)!==`linked`)throw new he(`Workflow run "${t}" is already in a terminal state`)}finally{await z.unlink(s).catch(()=>{})}}async function ui(e,t,n,r,i){H(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await Q(Vn(e,t),``),await Gn(e,t);let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes},o=Qr(i.attributes),s=o?$r(i,n):i;return await J(U(e,`runs`,`${t}.json`),s,{overwrite:!0}),si(t),await Ir(e,t),o&&await ei(e,t,void 0),{event:void 0,run:wr(s,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${nr()}`,s=new Date,c={...n,runId:t,eventId:i,createdAt:s,specVersion:8},l=U(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await li(e,t,i,JSON.stringify(c,q,2),l,r):await J(l,c),{event:o(c,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const di=S(`@workflow/world-local//runFileLocks`,1,()=>({byKey:new Map}));function fi(e,t){let n=di.byKey.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{di.byKey.get(e)===r.task&&di.byKey.delete(e)}})();return r.task=i,di.byKey.set(e,i),i}function pi(e,t){let n=(async(n,r)=>{H(`runId`,n);let i=await K(e,`runs`,n,E,t);if(!i)throw new ge(n);return wr(i,r?.resolveData??`all`)});return{get:n,waitForTerminalStatus:(async(e,t)=>{let i=Date.now()+(t?.timeoutMs??0);for(;;){let a=await n(e,t);if(r(a.status))return a;let o=i-Date.now();if(o<=0||t?.signal?.aborted)return a;await ci(e,Math.min(o,oi()),t?.signal)}}),getMany:(async(e,t)=>{let r=[...new Set(e)],i=await Promise.all(r.map(async e=>{try{return await n(e,t)}catch(e){if(e instanceof ge)return null;throw e}})),a=new Map(r.map((e,t)=>[e,i[t]]));return e.map(e=>a.get(e)??null)}),list:(async t=>{let n=t?.resolveData??`all`,r=await At({directory:B.join(e,`runs`),schema:E,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status!==void 0&&!(Array.isArray(t.status)?t.status:[t.status]).includes(e.status)),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:rr(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(n,r,i)=>(H(`runId`,n),fi(n,async()=>{let a=await K(e,`runs`,n,E,t);if(!a)throw new ge(n);try{_(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof w,e}let o=ie(a.attributes,r),s={...a,attributes:o,updatedAt:new Date};return await J(G(e,`runs`,n,t),s,{overwrite:!0}),{attributes:o}}))}}const mi=864e5;function hi(){let e=Number(process.env.WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS??30);if(!Number.isFinite(e)||e<=0)throw new D(`WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS must be a positive number`,{status:400});return e*mi}const gi=I.compile(I.object({eventId:I.string()})),_i=I.compile(I.object({runId:I.string(),resumeId:I.string(),hookId:I.string(),eventId:I.string(),payloadDigest:I.string().optional()}));function vi(e,t){return e.eventType===`hook_received`&&e.correlationId===t.hookId&&(e.resumeId===void 0||e.resumeId===t.resumeId)}async function yi(e,t,n,r){let i=await qn(e,t,r);for(let a of i.ids){let i=await K(e,`events`,`${t}-${a}`,$,r);if(i&&i.resumeId===n.resumeId&&vi(i,n))return i}return null}async function bi(e,t,n){if(t.hookId&&await Bn(e,t.hookId,n))return!0;let i=await K(e,`runs`,t.runId,E,n);return i?r(i.status)?!t.tokenRetentionUntil||t.tokenRetentionUntil.getTime()<=Date.now():!1:!0}async function xi(e){try{return await X(e,gi)}catch(e){if(e instanceof SyntaxError||e instanceof I.ZodError)return null;throw e}}function Si(e){return ee(e.eventId)?e.eventId:null}function Ci(e,t){let n=pt(t).slice(e.length+1);return ee(n)?n:null}async function wi(e,t,n){return(await At({directory:B.join(e,`events`),schema:$,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:rr(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function Ti(e,t,n,r,i){let a=await K(e,`events`,`${t}-${r}`,$,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await K(e,`hooks`,n,m,i))return;let o=Or(a);await fr(e,o.token,t,n,r,i),await mr(e,t,n,i),await Q(G(e,`hooks`,n,i),JSON.stringify(o,q,2))}async function Ei(e,t,n,r,i){let a=er(e,t,n,r);return await Q(a,JSON.stringify({eventId:i}))?i:(await xi(a))?.eventId??null}function Di(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 Oi(e,t){let n=B.join(e,`waits`),r=await Tt(n);for(let e of r)e.startsWith(`${t}-`)&&await Z(B.join(n,`${e}.json`))}async function ki(e,t,n,i){return fi(t,async()=>{let a=(await X(G(e,`runs`,t,n),E))?.attributes??i.attributes,o={...i,attributes:a},s=r(o.status)&&Qr(a);return s&&(o=$r(o,new Date)),await J(G(e,`runs`,t,n),o,{overwrite:!0}),r(o.status)&&si(t),{run:o,purged:s}})}function Ai(e,t){let n=hi(),u=4194304,f=new Map,y=new Map,b=new Map,x=0;function S(e){let t=f.get(e);if(!t)return;f.delete(e),x-=y.get(e)??0,y.delete(e);let n=b.get(t.runId);n?.delete(e),n?.size===0&&b.delete(t.runId)}function C(e){for(let t of b.get(e)??[])S(t)}function w(){f.clear(),y.clear(),b.clear(),x=0,T.clear()}let T=new Map;function ae(e){return t?`${e}.${t}`:e}async function le(n,r){let i=`${n}-${v(r)}`;for(let n of t?[G(e,`events`,i,t),G(e,`events`,i)]:[G(e,`events`,i)])try{return await z.stat(n),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}async function ue(n,r){let i=ae(n),a=T.get(i);if(a===void 0||r?.rescan){let r=await qn(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 le(n,o);)a.published=Math.max(a.published,o),o+=1;return o}function de(e,t){let n=g(t);if(n===null)return;let r=T.get(ae(e));r&&(r.published=Math.max(r.published,n))}async function fe(e){let t=await ue(e);return t===null?`evnt_${nr()}`:v(t)}async function pe(n){let r=await ue(n,{rescan:!0});return r===null?Kn(e,n,t):{eventId:v(r),createdAt:new Date}}function j(e,t,n){if(n>u)return;for(;f.size>0&&(f.size>=1e3||x+n>u);){let e=f.keys().next().value;S(e)}f.set(e,t),y.set(e,n),x+=n;let r=b.get(t.runId)??new Set;r.add(e),b.set(t.runId,r)}function ve(e,t,n){if(oe(e.eventType)){C(e.runId);return}let r=Buffer.byteLength(n);if(r>u)return;let i=$.safeParse(JSON.parse(n,xt));i.success&&j(t,i.data,r)}async function ye(n){let r=n;for(let n=0;;n++){let i=G(e,`events`,`${r.runId}-${r.eventId}`,t),a=JSON.stringify(r,q,2),o=g(r.eventId);if(o===null)return await Y(i,a),ve(r,i,a),r;if(await Q(i,a))return de(r.runId,r.eventId),ve(r,i,a),r;let s=await ue(r.runId,{rescan:n>0&&n%8==0,atLeast:o+1});Ie(s!==null),r={...r,eventId:v(s)}}}async function be(n,r){let i=await zn(e,n,t);if(i.committed)throw i.forceClaimedBy?new O(typeof r==`string`?r:``,i.forceClaimedBy.runId,i.forceClaimedBy.hookId):new A(n)}let xe=(t,n)=>At({directory:B.join(e,`events`),schema:$,cachedItems:f,filePrefix:`${t}-`,sortOrder:n.sortOrder??`asc`,limit:n.limit,cursor:n.cursor,getCreatedAt:rr(`evnt`),getId:e=>e.eventId,getSortKey:Si,getSortKeyFromFileId:e=>Ci(t,e)}),M=new Map,N=new Map,P={clearCache:w,async create(u,f,y){if(f.eventType===`hook_created`&&f.eventData.tokenRetentionUntil!==void 0&&f.eventData.tokenRetentionUntil.getTime()>Date.now()+n)throw new D(`Hook minimum retention cannot exceed ${n/mi} days in the Local World.`,{status:400});if(u!=null&&u!==``&&H(`runId`,u),`correlationId`in f&&typeof f.correlationId==`string`&&H(`correlationId`,f.correlationId),s(f.eventType)&&u&&f.correlationId){let e=t?`${u}-${f.correlationId}.${t}`:`${u}-${f.correlationId}`;return Di(M,e,b)}if(a(f.eventType)&&u&&f.correlationId){let e=t?`${u}-${f.correlationId}.hook.${t}`:`${u}-${f.correlationId}.hook`;return Di(N,e,b)}return b();async function b(){let n=``,a=!1,b=null,x=new Date,S;if(f.eventType===`run_created`&&(!u||u===``))S=`wrun_${nr()}`;else if(u)S=u;else throw Error(`runId is required for non-run_created events`);if(f.eventType===`run_created`&&u&&u!==``){let e=se(S,`wrun_`);if(e)throw new D(e)}let w=f.specVersion??8,T=null;if(f.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(f.eventType)&&(T=await K(e,`runs`,S,E,t),f.eventType===`run_started`&&!T&&`eventData`in f&&f.eventData)){let n=f.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){_(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:S,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},encryptionPublicKey:n.encryptionPublicKey,createdAt:x,updatedAt:x};if(await Q(G(e,`runs`,S,t),JSON.stringify(r,q))){let e=await fe(S);await ye({eventType:`run_created`,runId:S,eventId:e,createdAt:x,specVersion:w,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),T=r}else T=await K(e,`runs`,S,E,t)}}if(n=await fe(S),!T&&(f.eventType===`run_failed`||f.eventType===`attr_set`||f.eventType===`run_started`))throw new ge(S);if(T){if(ce(T.specVersion))throw new _e(T.specVersion,8);if(h(T.specVersion))return ui(e,S,f,T,y&&{resolveData:te(y.resolveData)})}let ae=d(f),le=ae&&f.eventType===`step_started`;if(T&&r(T.status)){if(f.eventType===`run_cancelled`&&T.status===`cancelled`){let e=await ye({...f,runId:S,eventId:n,createdAt:x,specVersion:w}),t=y?.resolveData??`all`;return{event:o(e,t),run:T,...T?{maxEvents:ne()}:{}}}if(f.eventType===`run_started`)throw new he(`Workflow run "${S}" is already in terminal state "${T.status}"`);if(oe(f.eventType))throw new k(`Cannot transition run from terminal state "${T.status}"`);if(ae)throw new k(`Cannot create new entities on run in terminal state "${T.status}"`);if(f.eventType===`attr_set`)throw new k(`Cannot set attributes on run in terminal state "${T.status}"`)}let O=null;if(s(f.eventType)&&f.eventType!==`step_created`&&f.correlationId){if(O=await K(e,`steps`,`${S}-${f.correlationId}`,l,t),!O&&!le)throw new D(`Step "${f.correlationId}" not found`);if(le&&O)throw new k(`Step "${f.correlationId}" already created`);if(O){if(i(O.status))throw new k(`Cannot modify step in terminal state "${O.status}"`);if(T&&r(T.status)&&(O.status!==`running`||f.eventType===`step_started`))throw new he(`Cannot ${f.eventType===`step_started`?`start`:`modify non-running`} step on run in terminal state "${T.status}"`)}}if(p(f.eventType)&&f.correlationId){if(f.eventType===`hook_received`&&y?.resumeId){let n=await X(Qn(e,S,y.resumeId),_i);if(n&&n.hookId===f.correlationId&&(!y.resumePayloadDigest||!n.payloadDigest||n.payloadDigest===y.resumePayloadDigest)){let r=await K(e,`events`,`${S}-${n.eventId}`,$,t),i=r&&vi(r,n)?r:await yi(e,S,n,t);if(i)return{event:i}}}if(f.eventType===`hook_received`&&await be(f.correlationId,f.eventData?.token),!await K(e,`hooks`,f.correlationId,m,t))throw new A(f.correlationId);if(f.eventType===`hook_received`&&y?.resumeId){let r=Qn(e,S,y.resumeId),i=async r=>{if(r.hookId!==f.correlationId)throw new k(`hook_received resumeId "${y.resumeId}" already recorded for a different hook`);if(y.resumePayloadDigest&&r.payloadDigest&&r.payloadDigest!==y.resumePayloadDigest)throw new k(`hook_received resumeId "${y.resumeId}" already recorded with a different payload`);let i=await K(e,`events`,`${S}-${r.eventId}`,$,t);if(i&&vi(i,r))return{event:i};let o=await yi(e,S,r,t);return o?{event:o}:(b=r.eventId,i||(n=r.eventId,a=!0),null)},o=await X(r,_i);if(o){let e=await i(o);if(e)return e}else if(a=!ee(n),b=n,!await Q(r,JSON.stringify({runId:S,resumeId:y.resumeId,hookId:f.correlationId,eventId:n,...y.resumePayloadDigest?{payloadDigest:y.resumePayloadDigest}:{}}))){b=null;let e=await X(r,_i);if(e){let t=await i(e);if(t)return t}}}}let j,M={...f,runId:S,eventId:n,createdAt:x,specVersion:w,...f.eventType===`hook_received`&&y?.resumeId?{resumeId:y.resumeId}:{}};if(f.eventType===`run_started`&&`eventData`in M&&delete M.eventData,le&&M.eventType===`step_started`&&M.eventData){let{input:e,...t}=M.eventData;M={...M,eventData:t}}let N,P=!1,F,I,L,Se=!1,Ce;if(oe(f.eventType)&&T){await Q(Vn(e,S,t),``),await Gn(e,S,t);let r=await pe(S);n=r.eventId,M={...M,eventId:n,createdAt:r.createdAt}}if(f.eventType===`run_created`&&`eventData`in f){let n=f.eventData;if(_(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),N={runId:S,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},encryptionPublicKey:n.encryptionPublicKey,createdAt:x,updatedAt:x},!await Q(G(e,`runs`,S,t),JSON.stringify(N,q,2)))throw new k(`Workflow run "${S}" already exists`)}else if(f.eventType===`run_started`){if(T){if(T.status===`running`){if(y?.skipPreload)return{run:T,maxEvents:ne()};let e=await xe(S,{limit:ne()});return{run:T,events:e.data,cursor:e.cursor,hasMore:e.hasMore,maxEvents:ne()}}let n=await ki(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:T.startedAt??x,updatedAt:x,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});N=n.run,P=n.purged}}else if(f.eventType===`run_completed`&&`eventData`in f){let n=f.eventData;if(T){let r=await ki(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:x,updatedAt:x,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});N=r.run,P=r.purged,await Promise.all([Ir(e,S),Oi(e,S)])}}else if(f.eventType===`run_failed`&&`eventData`in f){let n=f.eventData;if(T){let r=await ki(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:x,updatedAt:x,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});N=r.run,P=r.purged,await Promise.all([Ir(e,S),Oi(e,S)])}}else if(f.eventType===`run_cancelled`){if(T){let n=await ki(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:x,updatedAt:x,attributes:T.attributes,encryptionPublicKey:T.encryptionPublicKey});N=n.run,P=n.purged,await Promise.all([Ir(e,S),Oi(e,S)])}}else if(f.eventType===`attr_set`&&T)N=await fi(S,async()=>{let n=await X(G(e,`runs`,S,t),E);if(!n)throw new ge(S);if(_(f.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:f.eventData.allowReservedAttributes===!0}),f.correlationId&&f.eventData.writer.type===`workflow`&&!await Q(U(e,`.locks`,`attributes`,t?`${S}-${f.correlationId}.created.${t}`:`${S}-${f.correlationId}.created`),``))throw new k(`Attribute event "${f.correlationId}" already exists`);let r={...n,attributes:ie(n.attributes,f.eventData.changes),updatedAt:x};return await J(G(e,`runs`,S,t),r,{overwrite:!0}),r});else if(f.eventType===`step_created`&&`eventData`in f){if(!await Q(U(e,`.locks`,`steps`,t?`${S}-${f.correlationId}.created.${t}`:`${S}-${f.correlationId}.created`),``))throw new k(`Step "${f.correlationId}" already created`);let n=f.eventData;F={runId:S,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:x,updatedAt:x,specVersion:w},await J(G(e,`steps`,`${S}-${f.correlationId}`,t),F)}else if(f.eventType===`step_started`){if(!O&&le){let n=f.eventData;if(await Q(U(e,`.locks`,`steps`,t?`${S}-${f.correlationId}.created.${t}`:`${S}-${f.correlationId}.created`),``)){let r={runId:S,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:x,updatedAt:x,specVersion:w};await J(G(e,`steps`,`${S}-${f.correlationId}`,t),r);let i=await fe(S);await ye({eventType:`step_created`,runId:S,eventId:i,createdAt:x,specVersion:w,correlationId:f.correlationId,eventData:{stepName:n.stepName,input:n.input}}),O=r,Se=!0}else throw new k(`Step "${f.correlationId}" already created`)}if(O){if(O.retryAfter&&O.retryAfter.getTime()>Date.now())throw new me(`Cannot start step "${f.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((O.retryAfter.getTime()-Date.now())/1e3)});let n=`${S}-${f.correlationId}`,r=await K(e,`steps`,n,l,t);if(r&&i(r.status))throw new k(`Cannot modify step in terminal state "${r.status}"`);F={...O,status:`running`,startedAt:O.startedAt??x,attempt:O.attempt+1,retryAfter:void 0,updatedAt:x},await J(G(e,`steps`,n,t),F,{overwrite:!0})}}else if(f.eventType===`step_completed`&&`eventData`in f){let n=f.eventData;if(O){let r=`${S}-${f.correlationId}`;if(!await Q(U(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new k(`Cannot modify step in terminal state`);F={...O,status:`completed`,output:n.result,completedAt:x,updatedAt:x},await J(G(e,`steps`,r,t),F,{overwrite:!0})}}else if(f.eventType===`step_failed`&&`eventData`in f){let n=f.eventData;if(O){let r=`${S}-${f.correlationId}`;if(!await Q(U(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new k(`Cannot modify step in terminal state`);F={...O,status:`failed`,error:n.error,completedAt:x,updatedAt:x},await J(G(e,`steps`,r,t),F,{overwrite:!0})}}else if(f.eventType===`step_retrying`&&`eventData`in f){let n=f.eventData;if(O){let r=`${S}-${f.correlationId}`;F={...O,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:x},await J(G(e,`steps`,r,t),F,{overwrite:!0})}}else if(f.eventType===`hook_created`&&`eventData`in f){let i=f.eventData,s=Jn(e,i.token),c,l=()=>JSON.stringify({token:i.token,hookId:f.correlationId,runId:S,eventId:n,tokenRetentionUntil:i.tokenRetentionUntil,...c&&{claimedFrom:c}}),u=await Zn(e,i.token,async a=>{let o=await Xn(s);if(o||=(a.throwIfAborted(),await Z(s),await Nr(e,i.token,t),await Xn(s)),!o)return a.throwIfAborted(),Ie(await Q(s,l())),{status:`claimed`};if(o.runId===S&&o.hookId===f.correlationId)return{status:`owned`,claim:o};if(!await bi(e,o,t)){if(i.force!==!0||!o.hookId)return{status:`conflict`,claim:o};a.throwIfAborted();let s=await K(e,`runs`,o.runId,E,t),l=s!==null&&!r(s.status);if(c={runId:o.runId,hookId:o.hookId,...l&&{workflowName:s.workflowName,deploymentId:s.deploymentId,runSpecVersion:s.specVersion}},l&&(s.specVersion??1)<8)return{status:`conflict`,claim:o,forceRefusedReason:`victim-spec-version`};let u=await wi(e,S,f.correlationId);u?(n=u,j={...M,eventId:n}):(j=await ye({...M,eventData:{...M.eventData,forceClaimedFrom:c}}),n=j.eventId),await mr(e,S,f.correlationId,t),await J(G(e,`hooks`,f.correlationId,t),{runId:S,hookId:f.correlationId,token:i.token,metadata:i.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:x,specVersion:w,isWebhook:i.isWebhook??!1,isSystem:i.isSystem??!1,tokenRetentionUntil:i.tokenRetentionUntil,claimedFrom:c},{overwrite:!0});let d=await Q(Rn(e,o.hookId,t),JSON.stringify({forceClaimedBy:{runId:S,hookId:f.correlationId}}));l&&d&&await ye({eventType:`hook_disposed`,correlationId:o.hookId,eventData:{token:i.token,forceClaimedBy:{runId:S,hookId:f.correlationId}},runId:o.runId,eventId:await fe(o.runId),createdAt:new Date,specVersion:s.specVersion})}return a.throwIfAborted(),c?await Y(s,l(),{overwrite:!0}):await Z(s),o.hookId&&(await Z(G(e,`hooks`,o.hookId,t)),await Z(er(e,i.token,o.runId,o.hookId)),await hr(e,o.runId,o.hookId,t)),a.throwIfAborted(),c||Ie(await Q(s,l())),{status:`claimed`}});if(u.status===`owned`&&u.claim.claimedFrom&&(c=u.claim.claimedFrom),u.status===`owned`){let r=u.claim,o;if(r.eventId)o=r.eventId;else{let r=await wi(e,S,f.correlationId);if(r!==null)throw await Ti(e,S,f.correlationId,r,t),new k(`Hook "${f.correlationId}" already created`);let a=await Ei(e,i.token,S,f.correlationId,n);if(a===null)throw new k(`Hook "${f.correlationId}" already created`);o=a}n=o,a=!0;let s=re(n.replace(/^evnt_/,``))??x;M={...f,eventData:{...f.eventData,tokenRetentionUntil:r.tokenRetentionUntil},runId:S,eventId:n,createdAt:s,specVersion:w}}if(u.status===`conflict`){let e=u.claim,t=await ye({eventType:`hook_conflict`,correlationId:f.correlationId,eventData:{token:i.token,conflictingRunId:e.runId,...u.forceRefusedReason!==void 0&&{forceRefusedReason:u.forceRefusedReason}},runId:S,eventId:n,createdAt:x,specVersion:w}),r=y?.resolveData??`all`,a=typeof y?.sinceCursor==`string`?await xe(S,{sortOrder:`asc`,cursor:y.sinceCursor}):void 0,s={event:o(t,r),run:N,step:F,hook:void 0};return a?{...s,events:r===`none`?a.data.map(e=>o(e,r)):a.data,cursor:a.cursor,hasMore:a.hasMore}:s}c&&(M={...M,eventData:{...M.eventData,forceClaimedFrom:c}});let d=M.eventData;I={runId:S,hookId:f.correlationId,token:d.token,metadata:d.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:M.createdAt,specVersion:w,isWebhook:d.isWebhook??!1,isSystem:d.isSystem??!1,tokenRetentionUntil:d.tokenRetentionUntil,...c&&{claimedFrom:c}},Ce=u.status===`owned`||c?{overwrite:!0}:void 0,await fr(e,i.token,S,f.correlationId,n,t)}else if(f.eventType===`hook_disposed`){if(!await Q(Rn(e,f.correlationId,t),``))throw new k(`Hook "${f.correlationId}" already disposed`);let n=G(e,`hooks`,f.correlationId,t),r=await K(e,`hooks`,f.correlationId,m,t);r&&(await $n(e,r.token,r.runId,r.hookId),await Z(er(e,r.token,r.runId,r.hookId))),await Z(n),await hr(e,S,f.correlationId,t)}else if(f.eventType===`wait_created`&&`eventData`in f){let n=`${S}-${f.correlationId}`;if(!await Q(U(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new k(`Wait "${f.correlationId}" already exists`);let r=f.eventData;L={waitId:n,runId:S,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:x,updatedAt:x,specVersion:w},await J(G(e,`waits`,n,t),L)}else if(f.eventType===`wait_completed`){let n=`${S}-${f.correlationId}`,r=U(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await Q(r,``))throw new k(`Wait "${f.correlationId}" already completed`);let i=await K(e,`waits`,n,c,t);if(!i)throw await z.unlink(r).catch(()=>{}),new D(`Wait "${f.correlationId}" not found`);L={...i,status:`completed`,completedAt:x,updatedAt:x},await J(G(e,`waits`,n,t),L,{overwrite:!0})}if(f.eventType===`hook_received`&&f.correlationId&&await be(f.correlationId,f.eventData?.token),f.eventType===`hook_created`&&f.correlationId){let n=await zn(e,f.correlationId,t);if(n.committed&&n.forceClaimedBy)throw new k(`Hook "${f.correlationId}" was force-claimed by another run before its creation was journaled`)}let R=G(e,`events`,`${S}-${n}`,t),we=JSON.stringify(M,q,2),Te=async r=>{let i=g(n);if(a||i===null)return!1;let o=await ue(S,{rescan:r>0&&r%8==0,atLeast:i+1});return o!==null&&(n=v(o),M={...M,eventId:n},R=G(e,`events`,`${S}-${n}`,t),we=JSON.stringify(M,q,2),!0)},Ee=!1;j&&(M=j,R=G(e,`events`,`${S}-${n}`,t),we=JSON.stringify(M,q,2),Ee=!0);for(let i=0;!Ee;i++){if(f.eventType===`hook_received`){let i=await Hn(e,S,t),a=i?null:await K(e,`runs`,S,E,t);if(i||a&&r(a.status))throw new he(`Workflow run "${S}" is already in a terminal state`);let o=Wn(e,S,`${n}.${nr()}`,t);if(!await Q(o,we))throw new D(`Failed to stage event "${n}" for run "${S}": staging path already exists`);try{if(await Hn(e,S,t))throw new he(`Workflow run "${S}" is already in a terminal state`);let n=await wt(o,R);if(n===`missing`)throw new he(`Workflow run "${S}" is already in a terminal state`);Ee=n===`linked`}finally{await Z(o).catch(()=>{})}}else Ee=await Q(R,we);if(Ee){de(S,n);break}if(f.eventType===`hook_received`&&y?.resumeId){let r=await K(e,`events`,`${S}-${n}`,$,t);if(r&&vi(r,{runId:S,resumeId:y.resumeId,hookId:f.correlationId,eventId:n}))return{event:r}}if(!await Te(i))break}if(!Ee)throw f.eventType===`hook_created`&&f.correlationId&&await Ti(e,S,f.correlationId,n,t),new k(`Event "${n}" already exists for run "${S}"`);ve(M,R,we),f.eventType===`hook_received`&&y?.resumeId&&b!==null&&b!==n&&await Y(Qn(e,S,y.resumeId),JSON.stringify({runId:S,resumeId:y.resumeId,hookId:f.correlationId,eventId:n,...y.resumePayloadDigest?{payloadDigest:y.resumePayloadDigest}:{}}),{overwrite:!0}),I&&f.eventType===`hook_created`&&(await mr(e,I.runId,I.hookId,t),await J(G(e,`hooks`,I.hookId,t),I,Ce)),P&&(await ei(e,S,t),C(S));let De=y?.resolveData??`all`,Oe=o(M,De),ke;if(f.eventType===`run_started`&&N&&!y?.skipPreload&&(ke=await xe(S,{limit:ne()})),typeof y?.sinceCursor==`string`){let e=await xe(S,{sortOrder:`asc`,cursor:y.sinceCursor});ke=De===`none`?{...e,data:e.data.map(e=>o(e,De))}:e}let Ae={event:Oe,run:N,step:F,hook:I,wait:L,...Se?{stepCreated:!0}:{},...N?{maxEvents:ne()}:{}};return ke?{...Ae,events:ke.data,cursor:ke.cursor,hasMore:ke.hasMore}:Ae}},async get(n,r,i){H(`runId`,n),H(`eventId`,r);let a=await K(e,`events`,`${n}-${r}`,$,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);let s=i?.resolveData??`all`;return o(a,s)},async list(e){let{runId:t}=e;H(`runId`,t);let n=e.resolveData??`all`,r=await xe(t,{...e.pagination,limit:e.pagination?.limit??ne()});return n===`none`?{...r,data:r.data.map(e=>o(e,n))}:r},async listByCorrelationId(t){let n=t.correlationId;H(`correlationId`,n),H(`runId`,t.runId);let r=t.resolveData??`all`,i=await At({directory:B.join(e,`events`),schema:$,cachedItems:f,filePrefix:`${t.runId}-`,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:rr(`evnt`),getId:e=>e.eventId,getSortKey:Si,getSortKeyFromFileId:e=>Ci(t.runId,e)});return r===`none`?{...i,data:i.data.map(e=>o(e,r))}:i}};async function F(e,t,n){if(!e.event)return e;let r=g(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:`${Dt}${v(t)}`,limit:i,sortOrder:`asc`},resolveData:n}),o=e.event.eventId,s=a.data.filter(e=>e.eventId<o);return{...e,events:s,cursor:null,hasMore:s.length<r-t-1}}let I=(async(e,t,n)=>{if(n?.eventCount===void 0)return P.create(e,t,n);let r=n.resolveData??`all`,i=await P.create(e,t,n);return typeof n.sinceCursor==`string`?i:F(i,n.eventCount,r)});return{...P,create:I}}function ji(e,t){return{get:(async(n,r,i)=>{H(`runId`,n),H(`stepId`,r);let a=await K(e,`steps`,`${n}-${r}`,l,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return Tr(a,i?.resolveData??`all`)}),list:(async t=>{H(`runId`,t.runId);let n=t.resolveData??`all`,r=await At({directory:B.join(e,`steps`),schema:l,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:rr(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function Mi(e,t){let n=pi(e,t),r=ji(e,t),i=Ai(e,t),a=Fr(e,t);return{runs:mn(`world.runs`,n),steps:mn(`world.steps`,r),events:mn(`world.events`,i),hooks:mn(`world.hooks`,a),clearCache:()=>i.clearCache()}}function Ni(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...it.value,...t};He(n.dataDir);let r=n.tag,i=Tn(n),{clearCache:a,...o}=Mi(n.dataDir,r),s=at(n);return{specVersion:T(),capabilities:{hookRetention:{active:!0},hookResumeDedup:!0,hookForceClaim:!0},...i,...o,...mn(`world.streams`,{...Zr(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Kt(n.dataDir),!s)return;let e=r?e=>mt(e,r):ht,t={...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))};await x(t,i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=B.join(e,`hooks`),i=await gt(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-BUFGAKRb.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await X(B.join(t,n),a);r?.token&&(await Z(B.join(t,`tokens`,`${Ln(r.token)}.json`)),await Z(er(e,r.token,r.runId,r.hookId)))})),await Promise.all([`runs`,`steps`,`events`,`hooks`,`hooks/by-run`,`waits`,`streams/runs`].map(async t=>{let n=B.join(e,t),i=await gt(n,r);await Promise.all(i.map(e=>Z(B.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=B.join(e,`hooks`,t),i;try{i=await R.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=B.join(n,e.name),i=await gt(t,r);await Promise.all(i.map(e=>Z(B.join(t,e))))}))}await R.rm(B.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=B.join(e,`streams`,`chunks`),s;try{s=await R.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=B.join(o,e.name),n=await _t(t,r,`.bin`);await Promise.all(n.map(e=>R.unlink(B.join(t,e)).catch(()=>{})))})),dt()}else dt(),yr(),await Ae(n.dataDir,{recursive:!0,force:!0}),await Kt(n.dataDir)}}}export{Ft as DataDirAccessError,It as DataDirVersionError,Re as UnwritableDataDirError,Ni as createWorld,Ht as ensureDataDir,Kt as initDataDir,Lt as parseVersion};
1
+ import{a as e,t}from"../../_chunks/workflow/rolldown-runtime-B_knIduE.js";import{a as n,i as r,n as i,o as a,r as o,t as s}from"../../_chunks/workflow/signal-exit-iIdjQcCK.js";import{C as c,E as l,F as u,G as d,H as f,I as p,J as m,K as h,L as g,U as _,V as v,X as y,Y as b,_ as x,_t as S,a as C,c as ee,ct as te,d as ne,et as re,ft as ie,g as ae,gt as oe,ht as se,it as ce,l as le,lt as ue,n as de,o as fe,ot as pe,p as me,pt as w,q as T,r as he,s as ge,u as _e,ut as ve,v as ye,x as E,y as D}from"../../_chunks/workflow/dist-B7NC1c9-.js";import{b as be,f as xe,j as O,k as Se,o as k,p as Ce,r as A,s as j}from"../../_chunks/workflow/dist-CaNNONeg.js";import{i as M,n as N,r as P,t as we}from"../../_chunks/workflow/workflow-routes-CwqB063q.js";import{z as F}from"#compiled/zod/index.js";import{createHash as Te}from"node:crypto";import{promisify as Ee}from"node:util";import{fileURLToPath as De}from"node:url";import{promises as I}from"node:fs";import L,{access as Oe,constants as ke,mkdir as Ae,readFile as R,readdir as je,readlink as Me,rm as Ne,unlink as Pe,writeFile as Fe}from"node:fs/promises";import z from"node:path";import{tmpdir as Ie}from"node:os";import{execFile as Le}from"node:child_process";import{setTimeout as Re}from"node:timers/promises";import ze from"node:assert";import{EventEmitter as Be}from"node:events";var Ve=class extends O{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 He=new Set([`EROFS`,`EACCES`,`EPERM`]);function Ue(e){return e!==void 0&&He.has(e)}const We=S(`@workflow/world-local//buildTargetWarnings`,1,()=>({warnedAboutVercelDeployment:!1}));function Ge(e){if(We.warnedAboutVercelDeployment||!process.env.VERCEL_DEPLOYMENT_ID)return;let t=z.resolve(e),n=Ie();t===n||t.startsWith(`${n}${z.sep}`)||(We.warnedAboutVercelDeployment=!0,console.warn(`[workflow] Warning: the local (filesystem) world is running inside a Vercel deployment, writing to ${t}. That filesystem is read-only, so workflow runs will fail before their first step. The world is selected from the environment when the process starts: the Vercel world is used when VERCEL_DEPLOYMENT_ID is set, unless WORKFLOW_TARGET_WORLD says otherwise. Unset WORKFLOW_TARGET_WORLD in this deployment, or set WORKFLOW_TARGET_WORLD=vercel, to use the Vercel world.`))}function Ke(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function qe(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=Ke(i.slice(s+1));c!==void 0&&n.push(c)}return n}const Je=Ee(Le);function Ye(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const Xe=((e,t)=>e.join(t))([``,`proc`],`/`);async function Ze(e){let t=[`${Xe}/net/tcp`,`${Xe}/net/tcp6`],n=[],r=new Set,i=`${Xe}/${e}/fd`;try{let e=(await je(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await Me(`${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 R(e,`utf8`)).split(`
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=Ye(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 Qe(e){try{let{stdout:t}=await Je(`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=Ye(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function $e(e){try{let{stdout:t}=await Je(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return qe(t,e)}catch{return[]}}async function et(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Ze(e);case`darwin`:return await Qe(e);case`win32`:return await $e(e);default:return[]}}catch(e){return a(`[getAllPorts] Detection failed:`,e),[]}}const tt=`${we}/flow?__health`;async function nt(e,t={}){let{endpoint:n=tt,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 rt(e){let t=await et();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 nt(t,e)})))).find(e=>e.isWorkflow);return n?n.port:(a(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function it(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const at=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,ot=()=>process.env.WORKFLOW_LOCAL_BASE_URL,st=it(()=>({dataDir:at(),baseUrl:ot()}));function ct(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 lt(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??N(`http://localhost`)}async function ut(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 N(`http://localhost:${e.port}`);if(process.env.PORT)return N(`http://localhost:${process.env.PORT}`);let t=await rt({endpoint:P()});if(t)return N(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const B=S(`@workflow/world-local//fs`,1,()=>({ulid:w(()=>Math.random()),createdFilesCache:new Set,createdDirectoriesCache:new Set}));function dt(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var ft=class extends O{constructor(e,t){super(`Unsafe ${e} "${dt(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function V(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new ft(e,t)}function H(e,...t){let n=z.resolve(e),r=z.resolve(e,...t);if(r!==n&&!r.startsWith(n+z.sep))throw new ft(`path`,t.join(`/`));return r}const pt=process.platform===`win32`;async function U(e,t=5){if(!pt)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}function mt(){B.createdFilesCache.clear(),B.createdDirectoriesCache.clear()}const ht=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function gt(e){return e.replace(ht,``)}function _t(e,t){return e.endsWith(`.${t}`)}function vt(e){return!ht.test(e)}function W(e,t,n,r){return V(`fileId`,n),r!==void 0&&V(`tag`,r),H(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function G(e,t,n,r,i){if(V(`fileId`,n),i!==void 0&&V(`tag`,i),i){let a=await Y(H(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return Y(H(e,t,`${n}.json`),r)}async function yt(e,t){let n=`.${t}.json`;try{return(await I.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function bt(e,t,n){let r=`.${t}${n}`;try{return(await I.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function xt(e){let t=z.resolve(e);if(!B.createdDirectoriesCache.has(t))try{await I.mkdir(t,{recursive:!0}),B.createdDirectoriesCache.add(t)}catch(e){let n=e.code;if(Ue(n)&&!await St(t))throw new Ve(t,n)}}async function St(e){try{return(await I.stat(e)).isDirectory()}catch{return!1}}async function Ct(e,t){await xt(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return B.createdDirectoriesCache.delete(z.resolve(e)),await xt(e),t()}}function K(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function wt(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 J(e,JSON.stringify(t,K,2),n)}async function J(e,t,n){if(!n?.overwrite){if(B.createdFilesCache.has(e))throw new A(`File ${e} already exists and 'overwrite' is false`);try{throw await I.access(e),B.createdFilesCache.add(e),new A(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${B.ulid()}`,i=!1;try{await Ct(z.dirname(e),async()=>{await I.writeFile(r,t),i=!0,await U(()=>I.rename(r,e))}),B.createdFilesCache.add(e)}catch(e){throw i&&await U(()=>I.unlink(r),3).catch(()=>{}),e}}async function Y(e,t){try{let n=await U(()=>I.readFile(e,`utf-8`));return t.parse(JSON.parse(n,wt))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Tt(e){return await I.readFile(e)}async function Et(e){let t=await I.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 X(e){try{await U(()=>I.unlink(e))}catch(e){if(e.code!==`ENOENT`)throw e}}async function Z(e,t){let n=`${e}.tmp.${B.ulid()}`,r=!1;try{return await Ct(z.dirname(e),async()=>{await I.writeFile(n,t,{flag:`wx`}),r=!0;try{return await U(()=>I.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await U(()=>I.unlink(n),3).catch(()=>{})}}async function Dt(e,t){try{return await Ct(z.dirname(t),()=>U(()=>I.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function Q(e){return Ot(e,`.json`)}async function Ot(e,t){try{return(await I.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}const kt=`key:`;function At(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 jt(e,t,n){return n?`${kt}${n}`:t?`${e.toISOString()}|${t}`:e.toISOString()}async function Mt(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d,getSortKey:f,getSortKeyFromFileId:p}=e;i!==void 0&&V(`filePrefix`,i);let m=z.resolve(t),h=await Q(m),g=i?h.filter(e=>e.startsWith(i)):h,_=a?g.filter(a):g,v=At(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 Y(t,n):structuredClone(e)}catch(t){if(t instanceof F.ZodError)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}return i&&o&&!await o(i)?null:i}));for(let e of i){if(!e)continue;let t=f?.(e)??null;if(v?.sortKey){if(t){let e=t.localeCompare(v.sortKey);if(s===`desc`?e>=0:e<=0)continue}b.push(e);continue}if(v){let t=e.createdAt.getTime(),n=v.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&v.id&&d&&d(e)>=v.id)continue}else if(t<n||t===n&&v.id&&d&&d(e)<=v.id)continue}b.push(e)}}b.sort((e,t)=>{if(f){let n=f(e),r=f(t);if(n!==null&&r!==null)return s===`asc`?n.localeCompare(r):r.localeCompare(n)}let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let x=b.length>c,S=x?b.slice(0,c):b;return{data:S,cursor:S.length>0?jt(S[S.length-1].createdAt,d?.(S[S.length-1]),f?.(S[S.length-1])):null,hasMore:x}}const Nt=S(`@workflow/world-local//packageInfo`,1,()=>({cached:null}));function Pt(){return typeof import.meta.url==`string`&&import.meta.url?z.dirname(De(import.meta.url)):null}async function Ft(){if(Nt.cached)return Nt.cached;let e=Pt();if(e)try{let t=await R(z.join(e,`../package.json`),`utf-8`);return Nt.cached=JSON.parse(t),Nt.cached}catch{}return Nt.cached={name:`@workflow/world-local`,version:`5.0.1`},Nt.cached}const It=`version.txt`;var Lt=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},Rt=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 zt(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 Bt(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function Vt(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:zt(t.substring(n+1))}}function Ht(e,t){return`${e}@${Bt(t)}`}function Ut(e,t){console.log(`[world-local] Upgrading from version ${Bt(e)} to ${Bt(t)}`)}async function Wt(e){let t=z.resolve(e);try{await Ae(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new Lt(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await Oe(t,ke.R_OK)}catch(e){let n=e;throw new Lt(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=z.join(t,`.workflow-write-test-${Date.now()}`);try{await Fe(n,``),await Pe(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new Lt(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Gt(e){let t=z.join(z.resolve(e),It);try{return Vt(await R(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Kt(e,t){let n=z.join(z.resolve(e),It),r=Ht((await Ft()).name,t);await Fe(n,r)}function qt(e,t){return t||Bt(e)}async function Jt(e){await Wt(e);let t=await Ft(),n=zt(t.version),r=await Gt(e);if(r===null){await Kt(e,n);return}let{version:i}=r;if(Bt(i)!==Bt(n))try{Ut(i,n),await Kt(e,n)}catch(e){let r=qt(i,e instanceof Rt?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Bt(i)} to ${Bt(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}const Yt=S(`@workflow/world-local//telemetry`,1,()=>({apiPromise:null,tracerPromise:null}));async function Xt(){return Yt.apiPromise||=import(`../../@opentelemetry/api/index.js`).catch(()=>null),Yt.apiPromise}async function Zt(){return Yt.tracerPromise||=Xt().then(e=>e?e.trace.getTracer(`workflow`):null),Yt.tracerPromise}async function Qt(e,...t){let[n,r]=await Promise.all([Zt(),Xt()]),{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 $t(e){let t=await Xt();if(t)return t.SpanKind[e]}function en(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const tn=en(`peer.service`),nn=en(`rpc.system`),rn=en(`rpc.service`),an=en(`rpc.method`),on=en(`workflow.run.id`),sn=en(`step.id`),cn={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},ln={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},un=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function dn(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 fn(e,t){return typeof e[t]==`string`?e[t]:void 0}function pn(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function mn(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 hn(e,t,n){let r=`${e}.${t}`,i={},a=ln[r],o=a===void 0?un.has(r)?pn(n[0]):void 0:fn(n,a);if(o&&Object.assign(i,on(o)),r===`world.steps.get`){let e=fn(n,1);e&&Object.assign(i,sn(e))}return i}function gn(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=dn(t);r&&(n=`${e}.${a} ${r}`)}return Qt(n,{kind:await $t(`INTERNAL`)},async r=>{r?.setAttributes({...tn(cn.peerService),...nn(cn.rpcSystem),...rn(cn.rpcService),...an(n),...hn(e,a,t)});let o=await i(...t),s=mn(o);return s&&r?.setAttributes(on(s)),o})}}return n}var _n=t((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimit=t.Sema=void 0;let r=n(e(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};t.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}t.RateLimit=f}))(),vn=i(),yn=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,wt)}};const bn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,xn=2147483647,Sn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3;function Cn(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 wn(){return{bodyTimeout:Cn(`WORKFLOW_LOCAL_BODY_TIMEOUT_MS`,0),connections:1e3,headersTimeout:Cn(`WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`,0),keepAliveTimeout:3e4}}const Tn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function En(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(Tn))return!0;t=`cause`in t?t.cause:void 0}return!1}function Dn(e){let t=wn(),i=ye()?o({maxSockets:t.connections,keepAliveMs:t.keepAliveTimeout}):void 0,s=i?void 0:new vn.Agent(t),u=new yn,d=w(),f=new _n.Sema(Sn),p=new AbortController,m=p.signal,h=new Map,g=new Map,_=async(r,o,c)=>{let p=[];if(c?.idempotencyKey){let e=h.get(c.idempotencyKey);if(e)return{messageId:e}}let _=u.serialize(o),{prefix:v}=l(r),y=E.parse(`msg_${d()}`),b=o,x=b.runId??void 0,S=b.stepId??void 0;if(c?.idempotencyKey){let e=c.idempotencyKey;h.set(e,y),p.push(()=>{h.delete(e)})}return(async()=>{if(c?.delaySeconds&&c.delaySeconds>0){let e=Math.min(c.delaySeconds*1e3,xn);await Re(e,void 0,{signal:m})}f.tryAcquire()||(a(`[world-local]: concurrency limit (${Sn}) reached, waiting for queue to free up`),await f.acquire());let o=0;try{for(let a=0;a<256;a++){let l={...c?.headers,"content-type":`application/json`,"x-vqs-queue-name":r,"x-vqs-message-id":y,"x-vqs-message-attempt":String(o+1)},u=g.get(v),d,f;try{if(u)d=await u(new Request(M(lt(e),{type:`flow`}),{method:`POST`,headers:l,body:_}));else{let r=await ut(e),a=M(r,{type:`flow`});d=i?await n(a,{method:`POST`,headers:new Headers(l),body:_,agents:i,signal:m,headersTimeoutMs:t.headersTimeout,bodyTimeoutMs:t.bodyTimeout}):await fetch(a,{method:`POST`,duplex:`half`,dispatcher:s,headers:l,body:_,signal:m})}o++,f=await d.text()}catch(e){let t=e?.name;if(m.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(En(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${a+1}), retrying`,{queueName:r,messageId:y,...x&&{runId:x},...S&&{stepId:S},error:String(e)}),await Re(5e3,void 0,{signal:m});continue}if(d.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){if(e>0){let t=Math.min(e*1e3,xn);await Re(t,void 0,{signal:m})}continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${o}, HTTP ${d.status})`,{queueName:r,messageId:y,...x&&{runId:x},...S&&{stepId:S},handlerError:f}),await Re(5e3,void 0,{signal:m})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:r,messageId:y,...x&&{runId:x},...S&&{stepId:S}})}finally{f.release()}})().catch(e=>{e?.name!==`AbortError`&&e?.name!==`ResponseAborted`&&(En(e)?console.error(`[local world] Queue operation failed: detected "${Tn}". 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:r,messageId:y,...x&&{runId:x},...S&&{stepId:S},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of p)e()}),{messageId:y}},v=F.compile(F.object({"x-vqs-queue-name":c,"x-vqs-message-id":E,"x-vqs-message-attempt":F.coerce.number()}));return{queue:_,createQueueHandler:(e,t)=>async n=>{let r=v.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 yn().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a});if(typeof s==`object`&&s&&`invoke`in s&&s.invoke===!0)return Response.json({result:e});let n=null;return typeof e==`object`&&e&&`timeoutSeconds`in e&&typeof e.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,bn)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await Ft()).version}`,registerHandler(e,t){g.set(e,t)},async close(){m.aborted||(p.abort(),i&&r(i),await s?.close())}}}var On=t(((t,n)=>{var r=e(`constants`),i=process.cwd,a=null,o=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return a||=i.call(process),a};try{process.cwd()}catch{}if(typeof process.chdir==`function`){var s=process.chdir;process.chdir=function(e){a=null,s.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,s)}n.exports=c;function c(e){r.hasOwnProperty(`O_SYMLINK`)&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||n(e),e.chown=s(e.chown),e.fchown=s(e.fchown),e.lchown=s(e.lchown),e.chmod=i(e.chmod),e.fchmod=i(e.fchmod),e.lchmod=i(e.lchmod),e.chownSync=c(e.chownSync),e.fchownSync=c(e.fchownSync),e.lchownSync=c(e.lchownSync),e.chmodSync=a(e.chmodSync),e.fchmodSync=a(e.fchmodSync),e.lchmodSync=a(e.lchmodSync),e.stat=l(e.stat),e.fstat=l(e.fstat),e.lstat=l(e.lstat),e.statSync=u(e.statSync),e.fstatSync=u(e.fstatSync),e.lstatSync=u(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){}),o===`win32`&&(e.rename=typeof e.rename==`function`?(function(t){function n(n,r,i){var a=Date.now(),o=0;t(n,r,function s(c){if(c&&(c.code===`EACCES`||c.code===`EPERM`||c.code===`EBUSY`)&&Date.now()-a<6e4){setTimeout(function(){e.stat(r,function(e,a){e&&e.code===`ENOENT`?t(n,r,s):i(c)})},o),o<100&&(o+=10);return}i&&i(c)})}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.rename):e.rename),e.read=typeof e.read==`function`?(function(t){function n(n,r,i,a,o,s){var c;if(s&&typeof s==`function`){var l=0;c=function(u,d,f){if(u&&u.code===`EAGAIN`&&l<10)return l++,t.call(e,n,r,i,a,o,c);s.apply(this,arguments)}}return t.call(e,n,r,i,a,o,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.read):e.read,e.readSync=typeof e.readSync==`function`?(function(t){return function(n,r,i,a,o){for(var s=0;;)try{return t.call(e,n,r,i,a,o)}catch(e){if(e.code===`EAGAIN`&&s<10){s++;continue}throw e}}})(e.readSync):e.readSync;function t(e){e.lchmod=function(t,n,i){e.open(t,r.O_WRONLY|r.O_SYMLINK,n,function(t,r){if(t){i&&i(t);return}e.fchmod(r,n,function(t){e.close(r,function(e){i&&i(t||e)})})})},e.lchmodSync=function(t,n){var i=e.openSync(t,r.O_WRONLY|r.O_SYMLINK,n),a=!0,o;try{o=e.fchmodSync(i,n),a=!1}finally{if(a)try{e.closeSync(i)}catch{}else e.closeSync(i)}return o}}function n(e){r.hasOwnProperty(`O_SYMLINK`)&&e.futimes?(e.lutimes=function(t,n,i,a){e.open(t,r.O_SYMLINK,function(t,r){if(t){a&&a(t);return}e.futimes(r,n,i,function(t){e.close(r,function(e){a&&a(t||e)})})})},e.lutimesSync=function(t,n,i){var a=e.openSync(t,r.O_SYMLINK),o,s=!0;try{o=e.futimesSync(a,n,i),s=!1}finally{if(s)try{e.closeSync(a)}catch{}else e.closeSync(a)}return o}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}function i(t){return t&&function(n,r,i){return t.call(e,n,r,function(e){d(e)&&(e=null),i&&i.apply(this,arguments)})}}function a(t){return t&&function(n,r){try{return t.call(e,n,r)}catch(e){if(!d(e))throw e}}}function s(t){return t&&function(n,r,i,a){return t.call(e,n,r,i,function(e){d(e)&&(e=null),a&&a.apply(this,arguments)})}}function c(t){return t&&function(n,r,i){try{return t.call(e,n,r,i)}catch(e){if(!d(e))throw e}}}function l(t){return t&&function(n,r,i){typeof r==`function`&&(i=r,r=null);function a(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),i&&i.apply(this,arguments)}return r?t.call(e,n,r,a):t.call(e,n,a)}}function u(t){return t&&function(n,r){var i=r?t.call(e,n,r):t.call(e,n);return i&&(i.uid<0&&(i.uid+=4294967296),i.gid<0&&(i.gid+=4294967296)),i}}function d(e){return!(e&&e.code!==`ENOSYS`&&(process.getuid&&process.getuid()===0||e.code!==`EINVAL`&&e.code!==`EPERM`))}}})),kn=t(((t,n)=>{var r=e(`stream`).Stream;n.exports=i;function i(e){return{ReadStream:t,WriteStream:n};function t(n,i){if(!(this instanceof t))return new t(n,i);r.call(this);var a=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags=`r`,this.mode=438,this.bufferSize=65536,i||={};for(var o=Object.keys(i),s=0,c=o.length;s<c;s++){var l=o[s];this[l]=i[l]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!=`number`)throw TypeError(`start must be a Number`);if(this.end===void 0)this.end=1/0;else if(typeof this.end!=`number`)throw TypeError(`end must be a Number`);if(this.start>this.end)throw Error(`start must be <= end`);this.pos=this.start}if(this.fd!==null){process.nextTick(function(){a._read()});return}e.open(this.path,this.flags,this.mode,function(e,t){if(e){a.emit(`error`,e),a.readable=!1;return}a.fd=t,a.emit(`open`,t),a._read()})}function n(t,i){if(!(this instanceof n))return new n(t,i);r.call(this),this.path=t,this.fd=null,this.writable=!0,this.flags=`w`,this.encoding=`binary`,this.mode=438,this.bytesWritten=0,i||={};for(var a=Object.keys(i),o=0,s=a.length;o<s;o++){var c=a[o];this[c]=i[c]}if(this.start!==void 0){if(typeof this.start!=`number`)throw TypeError(`start must be a Number`);if(this.start<0)throw Error(`start must be >= zero`);this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}})),An=t(((e,t)=>{t.exports=r;var n=Object.getPrototypeOf||function(e){return e.__proto__};function r(e){if(typeof e!=`object`||!e)return e;if(e instanceof Object)var t={__proto__:n(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}),t}})),jn=t(((t,n)=>{var r=e(`fs`),i=On(),a=kn(),o=An(),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=ne;var t=e.readFile;e.readFile=n;function n(e,n,r){return typeof n==`function`&&(r=n,n=null),i(e,n,r);function i(e,n,r,a){return t(e,n,function(t){t&&(t.code===`EMFILE`||t.code===`ENFILE`)?m([i,[e,n,r],t,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var r=e.writeFile;e.writeFile=o;function o(e,t,n,i){return typeof n==`function`&&(i=n,n=null),a(e,t,n,i);function a(e,t,n,i,o){return r(e,t,n,function(r){r&&(r.code===`EMFILE`||r.code===`ENFILE`)?m([a,[e,t,n,i],r,o||Date.now(),Date.now()]):typeof i==`function`&&i.apply(this,arguments)})}}var s=e.appendFile;s&&(e.appendFile=c);function c(e,t,n,r){return typeof n==`function`&&(r=n,n=null),i(e,t,n,r);function i(e,t,n,r,a){return s(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var l=e.copyFile;l&&(e.copyFile=u);function u(e,t,n,r){return typeof n==`function`&&(r=n,n=0),i(e,t,n,r);function i(e,t,n,r,a){return l(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var d=e.readdir;e.readdir=h;var f=/^v[0-5]\./;function h(e,t,n){typeof t==`function`&&(n=t,t=null);var r=f.test(process.version)?function(e,t,n,r){return d(e,i(e,t,n,r))}:function(e,t,n,r){return d(e,t,i(e,t,n,r))};return r(e,t,n);function i(e,t,n,i){return function(a,o){a&&(a.code===`EMFILE`||a.code===`ENFILE`)?m([r,[e,t,n],a,i||Date.now(),Date.now()]):(o&&o.sort&&o.sort(),typeof n==`function`&&n.call(this,a,o))}}}if(process.version.substr(0,4)===`v0.8`){var g=a(e);x=g.ReadStream,C=g.WriteStream}var _=e.ReadStream;_&&(x.prototype=Object.create(_.prototype),x.prototype.open=S);var v=e.WriteStream;v&&(C.prototype=Object.create(v.prototype),C.prototype.open=ee),Object.defineProperty(e,"ReadStream",{get:function(){return x},set:function(e){x=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return C},set:function(e){C=e},enumerable:!0,configurable:!0});var y=x;Object.defineProperty(e,"FileReadStream",{get:function(){return y},set:function(e){y=e},enumerable:!0,configurable:!0});var b=C;Object.defineProperty(e,"FileWriteStream",{get:function(){return b},set:function(e){b=e},enumerable:!0,configurable:!0});function x(e,t){return this instanceof x?(_.apply(this,arguments),this):x.apply(Object.create(x.prototype),arguments)}function S(){var e=this;ie(e.path,e.flags,e.mode,function(t,n){t?(e.autoClose&&e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n),e.read())})}function C(e,t){return this instanceof C?(v.apply(this,arguments),this):C.apply(Object.create(C.prototype),arguments)}function ee(){var e=this;ie(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 ne(t,n){return new e.WriteStream(t,n)}var re=e.open;e.open=ie;function ie(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 re(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))}}})),Mn=t(((e,t)=>{function n(e,t){typeof t==`boolean`&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}t.exports=n,n.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},n.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},n.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error(`RetryOperation timeout occurred`)),!1;this._errors.push(e);var n=this._timeouts.shift();if(n===void 0){if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),n=this._timeouts.shift();else return!1}var r=this,i=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},n);return this._options.unref&&i.unref(),!0},n.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){n._operationTimeoutCb()},n._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},n.prototype.try=function(e){console.log(`Using RetryOperation.try() is deprecated`),this.attempt(e)},n.prototype.start=function(e){console.log(`Using RetryOperation.start() is deprecated`),this.attempt(e)},n.prototype.start=n.prototype.try,n.prototype.errors=function(){return this._errors},n.prototype.attempts=function(){return this._attempts},n.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,n=0,r=0;r<this._errors.length;r++){var i=this._errors[r],a=i.message,o=(e[a]||0)+1;e[a]=o,o>=n&&(t=i,n=o)}return t}})),Nn=t((e=>{var t=Mn();e.operation=function(n){return new t(e.timeouts(n),{forever:n&&n.forever,unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},e.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var n in e)t[n]=e[n];if(t.minTimeout>t.maxTimeout)throw Error(`minTimeout is greater than maxTimeout`);for(var r=[],i=0;i<t.retries;i++)r.push(this.createTimeout(i,t));return e&&e.forever&&!r.length&&r.push(this.createTimeout(i,t)),r.sort(function(e,t){return e-t}),r},e.createTimeout=function(e,t){var n=t.randomize?Math.random()+1:1,r=Math.round(n*t.minTimeout*t.factor**+e);return r=Math.min(r,t.maxTimeout),r},e.wrap=function(t,n,r){if(n instanceof Array&&(r=n,n=null),!r)for(var i in r=[],t)typeof t[i]==`function`&&r.push(i);for(var a=0;a<r.length;a++){var o=r[a],s=t[o];t[o]=function(r){var i=e.operation(n),a=Array.prototype.slice.call(arguments,1),o=a.pop();a.push(function(e){i.retry(e)||(e&&(arguments[0]=i.mainError()),o.apply(this,arguments))}),i.attempt(function(){r.apply(t,a)})}.bind(t,s),t[o].options=n}}})),Pn=t(((e,t)=>{t.exports=Nn()})),Fn=t(((e,t)=>{let n=Symbol();function r(e,t,r){let i=t[n];if(i)return t.stat(e,(e,t)=>{if(e)return r(e);r(null,t.mtime,i)});let a=new Date(Math.ceil(Date.now()/1e3)*1e3+5);t.utimes(e,a,a,i=>{if(i)return r(i);t.stat(e,(e,i)=>{if(e)return r(e);let a=i.mtime.getTime()%1e3==0?`s`:`ms`;Object.defineProperty(t,n,{value:a}),r(null,i.mtime,a)})})}function i(e){let t=Date.now();return e===`s`&&(t=Math.ceil(t/1e3)*1e3),new Date(t)}t.exports.probe=r,t.exports.getMtime=i})),In=t(((t,n)=>{let r=e(`path`),i=jn(),a=Pn(),o=s(),c=Fn(),l={};function u(e,t){return t.lockfilePath||`${e}.lock`}function d(e,t,n){if(!t.realpath)return n(null,r.resolve(e));t.fs.realpath(e,n)}function f(e,t,n){let r=u(e,t);t.fs.mkdir(r,i=>{if(!i)return c.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`?f(e,{...t,stale:0},n):n(r);if(!p(i,t))return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));m(e,t,r=>{if(r)return n(r);f(e,{...t,stale:0},n)})})})}function p(e,t){return e.mtime.getTime()<Date.now()-t.stale}function m(e,t,n){t.fs.rmdir(u(e,t),e=>{if(e&&e.code!==`ENOENT`)return n(e);n()})}function h(e,t){let n=l[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?g(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,h(e,t));if(n.mtime.getTime()!==i.mtime.getTime())return g(e,n,Object.assign(Error(`Unable to update lock within the stale threshold`),{code:`ECOMPROMISED`}));let o=c.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?g(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,h(e,t));n.mtime=o,n.lastUpdate=Date.now(),n.updateDelay=null,h(e,t)}})})},n.updateDelay),n.updateTimeout.unref&&n.updateTimeout.unref())}function g(e,t,n){t.released=!0,t.updateTimeout&&clearTimeout(t.updateTimeout),l[e]===t&&delete l[e],t.options.onCompromised(n)}function _(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),d(e,t,(e,r)=>{if(e)return n(e);let i=a.operation(t.retries);i.attempt(()=>{f(r,t,(e,a,o)=>{if(i.retry(e))return;if(e)return n(i.mainError());let s=l[r]={lockfilePath:u(r,t),mtime:a,mtimePrecision:o,options:t,lastUpdate:Date.now()};h(r,t),n(null,e=>{if(s.released)return e&&e(Object.assign(Error(`Lock is already released`),{code:`ERELEASED`}));v(r,{...t,realpath:!1},e)})})})})}function v(e,t,n){t={fs:i,realpath:!0,...t},d(e,t,(e,r)=>{if(e)return n(e);let i=l[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 l[r],m(r,t,n)})}function y(e,t,n){t={stale:1e4,realpath:!0,fs:i,...t},t.stale=Math.max(t.stale||0,2e3),d(e,t,(e,r)=>{if(e)return n(e);t.fs.stat(u(r,t),(e,r)=>e?e.code===`ENOENT`?n(null,!1):n(e):n(null,!p(r,t)))})}function b(){return l}o(()=>{for(let e in l){let t=l[e].options;try{t.fs.rmdirSync(u(e,t))}catch{}}}),n.exports.lock=_,n.exports.unlock=v,n.exports.check=y,n.exports.getLocks=b})),Ln=t(((e,t)=>{let n=jn();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}})),Rn=t(((e,t)=>{let n=In(),{toPromise:r,toSync:i,toSyncOptions:a}=Ln();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 zn(e){return Te(`sha256`).update(e).digest(`hex`)}function Bn(e,t,n){return H(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function Vn(e,t,n){let r=[Bn(e,t)];n&&r.push(Bn(e,t,n));for(let e of r){let t;try{t=await L.readFile(e,`utf8`)}catch{continue}if(t.trim()===``)return{committed:!0};try{let e=JSON.parse(t).forceClaimedBy;if(e&&typeof e.runId==`string`&&typeof e.hookId==`string`)return{committed:!0,forceClaimedBy:{runId:e.runId,hookId:e.hookId}}}catch{}return{committed:!0}}return{committed:!1}}async function Hn(e,t,n){let r=[Bn(e,t)];n&&r.push(Bn(e,t,n));for(let e of r)try{return await L.access(e),!0}catch{}return!1}function Un(e,t,n){return H(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function Wn(e,t,n){let r=[Un(e,t)];n&&r.push(Un(e,t,n));for(let e of r)try{return await L.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function Gn(e,t,n){return H(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function Kn(e,t,n,r){return z.join(Gn(e,t,r),`${n}.json`)}async function qn(e,t,n){let r=[Gn(e,t)];n&&r.push(Gn(e,t,n));for(let e of r){let t;try{t=await L.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await U(()=>L.unlink(z.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await L.rmdir(e).catch(()=>{})}}async function Jn(e,t,n){let r=await Yn(e,t,n),i=Date.now();if(r.maxId)try{let e=ie(r.maxId.replace(/^evnt_/,``));i<=e&&(i=e+1)}catch{}return{eventId:`evnt_${ir(i)}`,createdAt:new Date(i)}}async function Yn(e,t,n){let r=[];try{r=await L.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(!vt(t)&&!(n&&_t(t,n)))continue;let r=gt(t).slice(i.length);l+=1,a.push(r),(!o||r>o)&&(o=r);let u=_e(r);u!==null&&(c=!0,u>s&&(s=u))}return{maxId:o,usesSlots:c,maxSlot:s,count:l,ids:a}}function Xn(e,t){return z.join(e,`hooks`,`tokens`,`${zn(t)}.json`)}const Zn=F.compile(F.object({hookId:F.string().optional(),runId:F.string(),eventId:F.string().optional(),tokenRetentionUntil:F.coerce.date().optional(),claimedFrom:F.object({runId:F.string(),hookId:F.string(),workflowName:F.string().optional(),deploymentId:F.string().optional(),runSpecVersion:F.number().optional()}).optional()}));async function Qn(e){try{return await Y(e,Zn)}catch(e){if(e instanceof SyntaxError||e instanceof F.ZodError)return null;throw e}}async function $n(e,t,n){let r=Xn(e,t);await L.mkdir(z.dirname(r),{recursive:!0});let i=new AbortController,a;try{a=await(0,Rn.lock)(r,{realpath:!1,stale:3e4,update:1e3,retries:{retries:350,factor:1,minTimeout:100,maxTimeout:100},onCompromised(e){i.abort(new O(`Hook token claim lock was compromised`,{cause:e}))}})}catch(e){throw new O(`Could not acquire Hook token claim lock`,{cause:e})}let o;try{o=await n(i.signal),i.signal.throwIfAborted()}catch(e){throw i.signal.aborted||await a().catch(()=>{}),e}try{await a()}catch(e){throw new O(`Could not release Hook token claim lock`,{cause:e})}return o}function er(e,t,n){let r=Te(`sha256`).update(`${t}\x00${n}`).digest(`hex`);return z.join(e,`hooks`,`resumes`,`${r}.json`)}async function tr(e,t,n,r){await $n(e,t,async i=>{let a=Xn(e,t),o=await Qn(a);o&&o.runId===n&&o.hookId===r&&(i.throwIfAborted(),await X(a))})}function nr(e,t,n,r){let i=Te(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return z.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const rr=S(`@workflow/world-local//storageMonotonicUlid`,1,()=>({next:w(()=>Math.random())})),ir=e=>rr.next(e),ar=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=gt(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);if(i===-1){let e=r.replace(/\.json$/,``).replace(t,``);return de(e)}if(e===`step`)return null;let a=r.substring(i+1).replace(/\.json$/,``).replace(t,``);return de(a)}},or=F.compile(F.object({runId:F.string()})),sr=F.compile(F.object({hookId:F.string(),tag:F.string().optional()}));function cr(e,t){return H(e,`hooks`,`token-index`,zn(t))}function lr(e,t){return V(`hookId`,t),H(e,`hooks`,`id-index`,t)}function ur(e){return H(e,`hooks`,`by-run`)}function dr(e){let t=gt(e);return t===e?void 0:e.slice(t.length+1)}function fr(e,t){return t?vt(e)||_t(e,t):vt(e)}async function pr(e){try{return await Y(e,_)}catch(e){if(e instanceof SyntaxError||e instanceof F.ZodError)return null;throw e}}async function mr(e,t,n,r,i,a){V(`runId`,n),V(`eventId`,i),a!==void 0&&V(`tag`,a);let o=a?`${n}-${i}.${a}.json`:`${n}-${i}.json`,s=JSON.stringify({runId:n});await Promise.all([Z(z.join(cr(e,t),o),s),Z(z.join(lr(e,r),o),s)])}function hr(e,t,n,r){return W(e,`hooks/by-run`,`${t}-${n}`,r)}async function gr(e,t,n,r){await Z(hr(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function _r(e,t,n,r){await X(hr(e,t,n,r)),r&&await X(hr(e,t,n))}async function vr(e,t){V(`runId`,t);let n=ur(e),r=`${t}-`,i=[];for(let e of await Q(n)){if(!e.startsWith(r))continue;let t=null;try{t=await Y(z.join(n,`${e}.json`),sr)}catch(e){if(!(e instanceof SyntaxError||e instanceof F.ZodError))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function yr(e,t){await X(z.join(ur(e),`${t}.json`))}const br=S(`@workflow/world-local//hookIndexEnsureCache`,1,()=>({ensuredBasedirs:new Map}));function xr(){br.ensuredBasedirs.clear()}async function Sr(e){let t=z.resolve(e),n=br.ensuredBasedirs.get(t);return n||(n=wr(t).catch(e=>{throw br.ensuredBasedirs.delete(t),e}),br.ensuredBasedirs.set(t,n)),n}async function Cr(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function wr(e){let t=z.join(e,`hooks`,`.hook-index-complete`);try{await L.access(t);return}catch{}let n=z.join(e,`events`);await Cr(await Q(n),32,async t=>{let r=await pr(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 mr(e,i,r.runId,r.correlationId,r.eventId,dr(t))}catch{}});let r=z.join(e,`hooks`);await Cr(await Q(r),32,async t=>{let n=null;try{n=await Y(z.join(r,`${t}.json`),D)}catch(e){if(!(e instanceof SyntaxError||e instanceof F.ZodError))throw e}if(n)try{await gr(e,n.runId,n.hookId,dr(t))}catch{}}),await Z(t,``)}async function Tr(e,t,n,r){await Sr(e);let i;try{i=t.kind===`token`?cr(e,t.token):lr(e,t.hookId)}catch{return null}let a=(e,t)=>{let n=gt(e);return n.startsWith(`${t}-`)?n.slice(t.length+1):n},o=(await Q(i)).filter(e=>fr(e,r)).sort((e,t)=>gt(t).localeCompare(gt(e)));for(let t of o){let r=null;try{r=await Y(z.join(i,`${t}.json`),or)}catch(e){if(!(e instanceof SyntaxError||e instanceof F.ZodError))throw e}if(!r)continue;let o=a(t,r.runId),s;try{s=W(e,`events`,`${r.runId}-${o}`,dr(t))}catch{continue}let c=await pr(s);if(c&&c.eventType===`hook_created`&&typeof c.correlationId==`string`&&await n(c))return c}return null}function Er(e,t){if(t===`none`){let{dynamicWorkflowCode:t,...n}=e;return{...n,input:void 0,output:void 0}}return e}function Dr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Or(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function kr(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function Ar(e){let{token:t,metadata:n,isWebhook:r,isSystem:i,tokenRetentionUntil:a,forceClaimedFrom:o}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,...o!==void 0&&{claimedFrom:o},metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1,tokenRetentionUntil:a}}function jr(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function Mr(e,t,n){let r=await G(e,`runs`,t,v,n);return r?f(r.status):!1}async function Nr(e,t,n,r){let i=async t=>{if(await Mr(e,t.runId,r)){let e=t.eventData.tokenRetentionUntil;if(!e||e.getTime()<=Date.now())return!1}return!await Hn(e,t.correlationId,r)},a=await Tr(e,t,e=>jr(e,n)&&i(e),r);return a&&jr(a,n)?a:null}async function Pr(e,t,n){let r=Ar(t);return await Z(Xn(e,r.token),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId,tokenRetentionUntil:t.eventData.tokenRetentionUntil,...r.claimedFrom&&{claimedFrom:r.claimedFrom}})),await gr(e,r.runId,r.hookId,n),await Z(W(e,`hooks`,r.hookId,n),JSON.stringify(r,K,2)),r}async function Fr(e,t,n){let r=await Nr(e,{kind:`token`,token:t},e=>kr(e)===t,n);return r?Pr(e,r,n):null}async function Ir(e,t,n){let r=await Nr(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?Pr(e,r,n):null}function Lr(e,t){async function n(n){return await Hn(e,n.hookId,t)?!1:n.tokenRetentionUntil&&n.tokenRetentionUntil.getTime()>Date.now()?!0:!await Mr(e,n.runId,t)}async function r(n){let r=await Vn(e,n.hookId,t);return r.committed&&r.forceClaimedBy!==void 0}async function i(i){let a=await Qn(Xn(e,i));if(a?.hookId)try{let o=await G(e,`hooks`,a.hookId,D,t);if(o?.token===i){if(await n(o))return{...o,isWebhook:o.isWebhook??!0};if(!await r(o))throw new j(i)}else if(o)return null}catch(e){if(!ft.is(e))throw e;return null}let o=z.join(e,`hooks`),s=await Q(o),c=!1;for(let e of s){let t=await Y(z.join(o,`${e}.json`),D);if(t?.token===i){if(await n(t))return{...t,isWebhook:t.isWebhook??!0};if(await r(t)){c=!0;continue}throw new j(i)}}if(c)throw new j(i);return null}async function a(r,i){V(`hookId`,r);let a=await G(e,`hooks`,r,D,t);if(a&&!await n(a))throw new j(r);let o=a??await Ir(e,r,t);if(!o)throw new j(r);let s=i?.resolveData||`all`;return Or({...o,isWebhook:o.isWebhook??!0},s)}async function o(n){let r=await i(n)??await Fr(e,n,t);if(!r)throw new j(n);return r}async function s(t){let r=z.join(e,`hooks`),i=t.resolveData||`all`,a=await Mt({directory:r,schema:D,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=>Or(e,i))}}return{get:a,getByToken:o,list:s}}async function Rr(e,t){await Sr(e);for(let n of await vr(e,t)){if(n.hookId){let r=null,i=null;try{i=W(e,`hooks`,n.hookId,n.tag),r=await Y(i,D)}catch(e){if(!ft.is(e)&&!(e instanceof SyntaxError||e instanceof F.ZodError))throw e}if(r&&i&&r.runId===t){if(r.tokenRetentionUntil&&r.tokenRetentionUntil.getTime()>Date.now())continue;await tr(e,r.token,r.runId,r.hookId),await X(nr(e,r.token,r.runId,r.hookId)),await X(i)}}await yr(e,n.fileId)}}const zr=S(`@workflow/world-local//streamerMonotonicUlid`,1,()=>({next:w(()=>Math.random())})),Br=e=>zr.next(e),Vr=F.compile(F.object({streams:F.array(F.string())}));function Hr(e){return e===1}function Ur(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function Wr(e){return Hr(e[0])}function Gr(e){return{eof:Wr(e),chunk:Buffer.from(e.subarray(1))}}async function Kr(e){try{return await L.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function qr(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 Jr(e,t){return V(`streamName`,t),z.join(e,t)}async function Yr(e,t,n){let r=Jr(e,t),i=await Kr(r),a=new Map;return qr(a,i,`.json`),qr(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&qr(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}const Xr=`chnk_${`0`.repeat(26)}`;async function Zr(e,t,n){let r=z.join(e,`streams`,`chunks`),i=n?`.${n}`:``,a;try{V(`runId`,t),a=(await G(e,`streams/runs`,t,Vr,n))?.streams??[]}catch(e){Qr(`streams of ${t}`,e);return}for(let e of a)try{let t=Jr(r,e);await J(z.join(t,`${Xr}${i}.bin`),Ur({chunk:Buffer.from([]),eof:!0}),{overwrite:!0});for(let e of await Kr(t))e.startsWith(Xr)||(e.endsWith(`.bin`)||e.endsWith(`.json`))&&await U(()=>L.unlink(z.join(t,e))).catch(t=>{t.code!==`ENOENT`&&Qr(e,t)})}catch(t){Qr(e,t)}}function Qr(e,t){console.warn(`[world-local] Failed to purge stream data for ${e}:`,t instanceof Error?t.message:t)}function $r(e,t){let n=t?`.${t}`:``,r=new Be,i=new Set;async function a(n,r){V(`runId`,n),V(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=W(e,`streams/runs`,n,t),s=(await G(e,`streams/runs`,n,Vr,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_${Br()}`;await a(await t,i);let l=o(s),u=Ur({chunk:l,eof:!1});await J(z.join(Jr(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_${Br()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=Ur({chunk:t,eof:!1});return await J(z.join(Jr(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_${Br()}`;await a(await t,i),await J(z.join(Jr(z.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),Ur({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return V(`runId`,n),(await G(e,`streams/runs`,n,Vr,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await Yr(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(Hr(await Et(n))){u=!0;break}f++;continue}if(d.length>=a){Hr(await Et(n))?u=!0:f++;break}let r=Gr(await Tt(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 Yr(z.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(Hr(await Et(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 Yr(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`;Hr(await Et(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=Gr(await Tt(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 Yr(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=Gr(await Tt(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 ei(e){let t=ue(e);return t.unsupported&&console.warn(`[world-local] Ignoring unrecognized ${pe} value ${JSON.stringify(t.raw)}; keeping the run's data.`),t.mode===`none`}function ti(e,t){return{...e,input:void 0,output:void 0,error:void 0,dynamicWorkflowCode:void 0,expiredAt:t}}async function ni(e,t,n){await Promise.all([ii(z.join(e,`steps`),t,e=>{e.input=void 0,e.output=void 0,e.error=void 0}),ii(z.join(e,`events`),t,e=>{let t=e.eventData;if(t&&typeof t==`object`){for(let n of re(String(e.eventType)))delete t[n];(e.eventType===`run_created`||e.eventType===`run_started`)&&(delete t.dynamicWorkflowCode,delete t.dynamicWorkflowCodeRef)}}),ai(e,t),Zr(e,t,n)])}const ri=F.record(F.string(),F.any()),$=F.preprocess(e=>{if(e&&typeof e==`object`&&`eventType`in e&&`eventData`in e){let t=e.eventData;if(t&&typeof t==`object`)for(let n of re(String(e.eventType)))n in t||(t[n]=void 0)}return e},_);async function ii(e,t,n){let r;try{r=await Q(e)}catch(t){oi(e,t);return}for(let i of r){if(!i.startsWith(`${t}-`))continue;let r=z.join(e,`${i}.json`);try{let e=await Y(r,ri);if(!e)continue;n(e),await q(r,e,{overwrite:!0})}catch(e){oi(r,e)}}}async function ai(e,t){let n;try{await Sr(e),n=await vr(e,t)}catch(e){oi(`hooks of ${t}`,e);return}for(let r of n)if(r.hookId)try{let n=W(e,`hooks`,r.hookId,r.tag),i=await Y(n,ri);if(!i||i.runId!==t)continue;i.metadata=void 0,await q(n,i,{overwrite:!0})}catch(e){oi(r.hookId,e)}}function oi(e,t){console.warn(`[world-local] Failed to purge user data for ${e}:`,t instanceof Error?t.message:t)}const si=new Be;si.setMaxListeners(0);function ci(){return se(`WORKFLOW_LOCAL_RUN_STATUS_POLL_INTERVAL_MS`,100,{integer:!0,min:1})}function li(e){si.emit(`run:${e}`)}function ui(e,t,n){return t<=0||n?.aborted?Promise.resolve():new Promise(r=>{let i=`run:${e}`,a=!1,o=()=>{a||(a=!0,clearTimeout(s),si.off(i,o),n?.removeEventListener(`abort`,o),r())},s=setTimeout(o,t);si.once(i,o),n?.addEventListener(`abort`,o,{once:!0})})}async function di(e,t,n,r,i,a){if(f(a.status)||await Wn(e,t))throw new xe(`Workflow run "${t}" is already in a terminal state`);let o=Kn(e,t,n);await Z(o,r);try{if(await Wn(e,t)||await Dt(o,i)!==`linked`)throw new xe(`Workflow run "${t}" is already in a terminal state`)}finally{await L.unlink(o).catch(()=>{})}}async function fi(e,t,n,r,i){V(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await Z(Un(e,t),``),await qn(e,t);let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes},o=ei(i.attributes),s=o?ti(i,n):i;return await q(H(e,`runs`,`${t}.json`),s,{overwrite:!0}),li(t),await Rr(e,t),o&&await ni(e,t,void 0),{event:void 0,run:Er(s,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${ir()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:8},c=H(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await di(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 pi=S(`@workflow/world-local//runFileLocks`,1,()=>({byKey:new Map}));function mi(e,t){let n=pi.byKey.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{pi.byKey.get(e)===r.task&&pi.byKey.delete(e)}})();return r.task=i,pi.byKey.set(e,i),i}function hi(e,t){let n=(async(n,r)=>{V(`runId`,n);let i=await G(e,`runs`,n,v,t);if(!i)throw new Se(n);return Er(i,r?.resolveData??`all`)});return{get:n,waitForTerminalStatus:(async(e,t)=>{let r=Date.now()+(t?.timeoutMs??0);for(;;){let i=await n(e,t);if(f(i.status))return i;let a=r-Date.now();if(a<=0||t?.signal?.aborted)return i;await ui(e,Math.min(a,ci()),t?.signal)}}),getMany:(async(e,t)=>{let r=[...new Set(e)],i=await Promise.all(r.map(async e=>{try{return await n(e,t)}catch(e){if(e instanceof Se)return null;throw e}})),a=new Map(r.map((e,t)=>[e,i[t]]));return e.map(e=>a.get(e)??null)}),list:(async t=>{let n=t?.resolveData??`all`,r=await Mt({directory:z.join(e,`runs`),schema:v,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status!==void 0&&!(Array.isArray(t.status)?t.status:[t.status]).includes(e.status)),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:ar(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>Er(e,`none`))}:r}),experimentalSetAttributes:async(n,r,i)=>(V(`runId`,n),mi(n,async()=>{let a=await G(e,`runs`,n,v,t);if(!a)throw new Se(n);try{ve(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof ce,e}let o=te(a.attributes,r),s={...a,attributes:o,updatedAt:new Date};return await q(W(e,`runs`,n,t),s,{overwrite:!0}),{attributes:o}}))}}const gi=864e5;function _i(){let e=Number(process.env.WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS??30);if(!Number.isFinite(e)||e<=0)throw new O(`WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS must be a positive number`,{status:400});return e*gi}const vi=F.compile(F.object({eventId:F.string()})),yi=F.compile(F.object({runId:F.string(),resumeId:F.string(),hookId:F.string(),eventId:F.string(),payloadDigest:F.string().optional()}));function bi(e,t){return e.eventType===`hook_received`&&e.correlationId===t.hookId&&(e.resumeId===void 0||e.resumeId===t.resumeId)}async function xi(e,t,n,r){let i=await Yn(e,t,r);for(let a of i.ids){let i=await G(e,`events`,`${t}-${a}`,$,r);if(i&&i.resumeId===n.resumeId&&bi(i,n))return i}return null}async function Si(e,t,n){if(t.hookId&&await Hn(e,t.hookId,n))return!0;let r=await G(e,`runs`,t.runId,v,n);return r?f(r.status)?!t.tokenRetentionUntil||t.tokenRetentionUntil.getTime()<=Date.now():!1:!0}async function Ci(e){try{return await Y(e,vi)}catch(e){if(e instanceof SyntaxError||e instanceof F.ZodError)return null;throw e}}function wi(e){return ne(e.eventId)?e.eventId:null}function Ti(e,t){let n=gt(t).slice(e.length+1);return ne(n)?n:null}async function Ei(e,t,n){return(await Mt({directory:z.join(e,`events`),schema:$,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:ar(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function Di(e,t,n,r,i){let a=await G(e,`events`,`${t}-${r}`,$,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await G(e,`hooks`,n,D,i))return;let o=Ar(a);await mr(e,o.token,t,n,r,i),await gr(e,t,n,i),await Z(W(e,`hooks`,n,i),JSON.stringify(o,K,2))}async function Oi(e,t,n,r,i){let a=nr(e,t,n,r);return await Z(a,JSON.stringify({eventId:i}))?i:(await Ci(a))?.eventId??null}function ki(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 Ai(e,t){let n=z.join(e,`waits`),r=await Q(n);for(let e of r)e.startsWith(`${t}-`)&&await X(z.join(n,`${e}.json`))}async function ji(e,t,n,r){return mi(t,async()=>{let i=(await Y(W(e,`runs`,t,n),v))?.attributes??r.attributes,a={...r,attributes:i},o=f(a.status)&&ei(i);return o&&(a=ti(a,new Date)),await q(W(e,`runs`,t,n),a,{overwrite:!0}),f(a.status)&&li(t),{run:a,purged:o}})}function Mi(e,t){let n=_i(),r=4194304,i=new Map,a=new Map,o=new Map,s=0;function c(e){let t=i.get(e);if(!t)return;i.delete(e),s-=a.get(e)??0,a.delete(e);let n=o.get(t.runId);n?.delete(e),n?.size===0&&o.delete(t.runId)}function l(e){for(let t of o.get(e)??[])c(t)}function _(){i.clear(),a.clear(),o.clear(),s=0,x.clear()}let x=new Map;function S(e){return t?`${e}.${t}`:e}async function ee(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 L.stat(n),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}async function re(n,r){let i=S(n),a=x.get(i);if(a===void 0||r?.rescan){let r=await Yn(e,n,t);a===void 0?(a=r.count>0&&!r.usesSlots?null:{published:r.maxSlot},x.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 ee(n,o);)a.published=Math.max(a.published,o),o+=1;return o}function ie(e,t){let n=_e(t);if(n===null)return;let r=x.get(S(e));r&&(r.published=Math.max(r.published,n))}async function se(e){let t=await re(e);return t===null?`evnt_${ir()}`:me(t)}async function ce(n){let r=await re(n,{rescan:!0});return r===null?Jn(e,n,t):{eventId:me(r),createdAt:new Date}}function le(e,t,n){if(n>r)return;for(;i.size>0&&(i.size>=1e3||s+n>r);){let e=i.keys().next().value;c(e)}i.set(e,t),a.set(e,n),s+=n;let l=o.get(t.runId)??new Set;l.add(e),o.set(t.runId,l)}function ue(e,t,n){if(b(e.eventType)){l(e.runId);return}let i=Buffer.byteLength(n);if(i>r)return;let a=$.safeParse(JSON.parse(n,wt));a.success&&le(t,a.data,i)}async function fe(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=_e(r.eventId);if(o===null)return await J(i,a),ue(r,i,a),r;if(await Z(i,a))return ie(r.runId,r.eventId),ue(r,i,a),r;let s=await re(r.runId,{rescan:n>0&&n%8==0,atLeast:o+1});ze(s!==null),r={...r,eventId:me(s)}}}async function pe(n,r){let i=await Vn(e,n,t);if(i.committed)throw i.forceClaimedBy?new k(typeof r==`string`?r:``,i.forceClaimedBy.runId,i.forceClaimedBy.hookId):new j(n)}let w=(t,n)=>Mt({directory:z.join(e,`events`),schema:$,cachedItems:i,filePrefix:`${t}-`,sortOrder:n.sortOrder??`asc`,limit:n.limit,cursor:n.cursor,getCreatedAt:ar(`evnt`),getId:e=>e.eventId,getSortKey:wi,getSortKeyFromFileId:e=>Ti(t,e)}),ye=new Map,E=new Map,M={clearCache:_,async create(r,i,a){if(i.eventType===`hook_created`&&i.eventData.tokenRetentionUntil!==void 0&&i.eventData.tokenRetentionUntil.getTime()>Date.now()+n)throw new O(`Hook minimum retention cannot exceed ${n/gi} days in the Local World.`,{status:400});if(r!=null&&r!==``&&V(`runId`,r),`correlationId`in i&&typeof i.correlationId==`string`&&V(`correlationId`,i.correlationId),m(i.eventType)&&r&&i.correlationId){let e=t?`${r}-${i.correlationId}.${t}`:`${r}-${i.correlationId}`;return ki(ye,e,o)}if(T(i.eventType)&&r&&i.correlationId){let e=t?`${r}-${i.correlationId}.hook.${t}`:`${r}-${i.correlationId}.hook`;return ki(E,e,o)}return o();async function o(){let n=``,o=!1,s=null,c=new Date,_;if(i.eventType===`run_created`&&(!r||r===``))_=`wrun_${ir()}`;else if(r)_=r;else throw Error(`runId is required for non-run_created events`);if(i.eventType===`run_created`&&r&&r!==``){let e=he(_,`wrun_`);if(e)throw new O(e)}let x=i.specVersion??8,S=null;if(i.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(i.eventType)&&(S=await G(e,`runs`,_,v,t),i.eventType===`run_started`&&!S&&`eventData`in i&&i.eventData)){let n=i.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){ve(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:_,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:x,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},encryptionPublicKey:n.encryptionPublicKey,dynamicWorkflowCode:n.dynamicWorkflowCode,createdAt:c,updatedAt:c};if(await Z(W(e,`runs`,_,t),JSON.stringify(r,K))){let e=await se(_);await fe({eventType:`run_created`,runId:_,eventId:e,createdAt:c,specVersion:x,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),S=r}else S=await G(e,`runs`,_,v,t)}}if(n=await se(_),!S&&(i.eventType===`run_failed`||i.eventType===`attr_set`||i.eventType===`run_started`))throw new Se(_);if(S){if(ge(S.specVersion))throw new Ce(S.specVersion,8);if(C(S.specVersion))return fi(e,_,i,S,a&&{resolveData:ae(a.resolveData)})}let ee=d(i),le=ee&&i.eventType===`step_started`;if(S&&f(S.status)){if(i.eventType===`run_cancelled`&&S.status===`cancelled`){let e=await fe({...i,runId:_,eventId:n,createdAt:c,specVersion:x}),t=a?.resolveData??`all`;return{event:y(e,t),run:S,...S?{maxEvents:oe()}:{}}}if(i.eventType===`run_started`)throw new xe(`Workflow run "${_}" is already in terminal state "${S.status}"`);if(b(i.eventType))throw new A(`Cannot transition run from terminal state "${S.status}"`);if(ee)throw new A(`Cannot create new entities on run in terminal state "${S.status}"`);if(i.eventType===`attr_set`)throw new A(`Cannot set attributes on run in terminal state "${S.status}"`)}let T=null;if(m(i.eventType)&&i.eventType!==`step_created`&&i.correlationId){if(T=await G(e,`steps`,`${_}-${i.correlationId}`,p,t),!T&&!le)throw new O(`Step "${i.correlationId}" not found`);if(le&&T)throw new A(`Step "${i.correlationId}" already created`);if(T){if(g(T.status))throw new A(`Cannot modify step in terminal state "${T.status}"`);if(S&&f(S.status)&&(T.status!==`running`||i.eventType===`step_started`))throw new xe(`Cannot ${i.eventType===`step_started`?`start`:`modify non-running`} step on run in terminal state "${S.status}"`)}}if(h(i.eventType)&&i.correlationId){if(i.eventType===`hook_received`&&a?.resumeId){let n=await Y(er(e,_,a.resumeId),yi);if(n&&n.hookId===i.correlationId&&(!a.resumePayloadDigest||!n.payloadDigest||n.payloadDigest===a.resumePayloadDigest)){let r=await G(e,`events`,`${_}-${n.eventId}`,$,t),i=r&&bi(r,n)?r:await xi(e,_,n,t);if(i)return{event:i}}}if(i.eventType===`hook_received`&&await pe(i.correlationId,i.eventData?.token),!await G(e,`hooks`,i.correlationId,D,t))throw new j(i.correlationId);if(i.eventType===`hook_received`&&a?.resumeId){let r=er(e,_,a.resumeId),c=async r=>{if(r.hookId!==i.correlationId)throw new A(`hook_received resumeId "${a.resumeId}" already recorded for a different hook`);if(a.resumePayloadDigest&&r.payloadDigest&&r.payloadDigest!==a.resumePayloadDigest)throw new A(`hook_received resumeId "${a.resumeId}" already recorded with a different payload`);let c=await G(e,`events`,`${_}-${r.eventId}`,$,t);if(c&&bi(c,r))return{event:c};let l=await xi(e,_,r,t);return l?{event:l}:(s=r.eventId,c||(n=r.eventId,o=!0),null)},l=await Y(r,yi);if(l){let e=await c(l);if(e)return e}else if(o=!ne(n),s=n,!await Z(r,JSON.stringify({runId:_,resumeId:a.resumeId,hookId:i.correlationId,eventId:n,...a.resumePayloadDigest?{payloadDigest:a.resumePayloadDigest}:{}}))){s=null;let e=await Y(r,yi);if(e){let t=await c(e);if(t)return t}}}}let ye,E={...i,runId:_,eventId:n,createdAt:c,specVersion:x,...i.eventType===`hook_received`&&a?.resumeId?{resumeId:a.resumeId}:{}};if(i.eventType===`run_started`&&`eventData`in E&&delete E.eventData,E.eventType===`run_created`&&E.eventData){let{dynamicWorkflowCode:e,dynamicWorkflowCodeRef:t,...n}=E.eventData;E={...E,eventData:n}}if(le&&E.eventType===`step_started`&&E.eventData){let{input:e,...t}=E.eventData;E={...E,eventData:t}}let k,M=!1,N,P,we,F=!1,Te;if(b(i.eventType)&&S){await Z(Un(e,_,t),``),await qn(e,_,t);let r=await ce(_);n=r.eventId,E={...E,eventId:n,createdAt:r.createdAt}}if(i.eventType===`run_created`&&`eventData`in i){let n=i.eventData;if(ve(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),k={runId:_,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:x,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},encryptionPublicKey:n.encryptionPublicKey,dynamicWorkflowCode:n.dynamicWorkflowCode,createdAt:c,updatedAt:c},!await Z(W(e,`runs`,_,t),JSON.stringify(k,K,2)))throw new A(`Workflow run "${_}" already exists`)}else if(i.eventType===`run_started`){if(S){if(S.status===`running`){if(a?.skipPreload)return{run:S,maxEvents:oe()};let e=await w(_,{limit:oe()});return{run:S,events:e.data,cursor:e.cursor,hasMore:e.hasMore,maxEvents:oe()}}let n=await ji(e,_,t,{runId:S.runId,deploymentId:S.deploymentId,workflowName:S.workflowName,specVersion:S.specVersion,executionContext:S.executionContext,input:S.input,createdAt:S.createdAt,expiredAt:S.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:S.startedAt??c,updatedAt:c,attributes:S.attributes,encryptionPublicKey:S.encryptionPublicKey,dynamicWorkflowCode:S.dynamicWorkflowCode});k=n.run,M=n.purged}}else if(i.eventType===`run_completed`&&`eventData`in i){let n=i.eventData;if(S){let r=await ji(e,_,t,{runId:S.runId,deploymentId:S.deploymentId,workflowName:S.workflowName,specVersion:S.specVersion,executionContext:S.executionContext,input:S.input,createdAt:S.createdAt,expiredAt:S.expiredAt,startedAt:S.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:c,updatedAt:c,attributes:S.attributes,encryptionPublicKey:S.encryptionPublicKey,dynamicWorkflowCode:S.dynamicWorkflowCode});k=r.run,M=r.purged,await Promise.all([Rr(e,_),Ai(e,_)])}}else if(i.eventType===`run_failed`&&`eventData`in i){let n=i.eventData;if(S){let r=await ji(e,_,t,{runId:S.runId,deploymentId:S.deploymentId,workflowName:S.workflowName,specVersion:S.specVersion,executionContext:S.executionContext,input:S.input,createdAt:S.createdAt,expiredAt:S.expiredAt,startedAt:S.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:c,updatedAt:c,attributes:S.attributes,encryptionPublicKey:S.encryptionPublicKey,dynamicWorkflowCode:S.dynamicWorkflowCode});k=r.run,M=r.purged,await Promise.all([Rr(e,_),Ai(e,_)])}}else if(i.eventType===`run_cancelled`){if(S){let n=await ji(e,_,t,{runId:S.runId,deploymentId:S.deploymentId,workflowName:S.workflowName,specVersion:S.specVersion,executionContext:S.executionContext,input:S.input,createdAt:S.createdAt,expiredAt:S.expiredAt,startedAt:S.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:c,updatedAt:c,attributes:S.attributes,encryptionPublicKey:S.encryptionPublicKey,dynamicWorkflowCode:S.dynamicWorkflowCode});k=n.run,M=n.purged,await Promise.all([Rr(e,_),Ai(e,_)])}}else if(i.eventType===`attr_set`&&S)k=await mi(_,async()=>{let n=await Y(W(e,`runs`,_,t),v);if(!n)throw new Se(_);if(ve(i.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:i.eventData.allowReservedAttributes===!0}),i.correlationId&&i.eventData.writer.type===`workflow`&&!await Z(H(e,`.locks`,`attributes`,t?`${_}-${i.correlationId}.created.${t}`:`${_}-${i.correlationId}.created`),``))throw new A(`Attribute event "${i.correlationId}" already exists`);let r={...n,attributes:te(n.attributes,i.eventData.changes),updatedAt:c};return await q(W(e,`runs`,_,t),r,{overwrite:!0}),r});else if(i.eventType===`step_created`&&`eventData`in i){if(!await Z(H(e,`.locks`,`steps`,t?`${_}-${i.correlationId}.created.${t}`:`${_}-${i.correlationId}.created`),``))throw new A(`Step "${i.correlationId}" already created`);let n=i.eventData;N={runId:_,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:c,updatedAt:c,specVersion:x},await q(W(e,`steps`,`${_}-${i.correlationId}`,t),N)}else if(i.eventType===`step_started`){if(!T&&le){let n=i.eventData;if(await Z(H(e,`.locks`,`steps`,t?`${_}-${i.correlationId}.created.${t}`:`${_}-${i.correlationId}.created`),``)){let r={runId:_,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:c,updatedAt:c,specVersion:x};await q(W(e,`steps`,`${_}-${i.correlationId}`,t),r);let a=await se(_);await fe({eventType:`step_created`,runId:_,eventId:a,createdAt:c,specVersion:x,correlationId:i.correlationId,eventData:{stepName:n.stepName,input:n.input}}),T=r,F=!0}else throw new A(`Step "${i.correlationId}" already created`)}if(T){if(T.retryAfter&&T.retryAfter.getTime()>Date.now())throw new be(`Cannot start step "${i.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((T.retryAfter.getTime()-Date.now())/1e3)});let n=`${_}-${i.correlationId}`,r=await G(e,`steps`,n,p,t);if(r&&g(r.status))throw new A(`Cannot modify step in terminal state "${r.status}"`);N={...T,status:`running`,startedAt:T.startedAt??c,attempt:T.attempt+1,retryAfter:void 0,updatedAt:c},await q(W(e,`steps`,n,t),N,{overwrite:!0})}}else if(i.eventType===`step_completed`&&`eventData`in i){let n=i.eventData;if(T){let r=`${_}-${i.correlationId}`;if(!await Z(H(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new A(`Cannot modify step in terminal state`);N={...T,status:`completed`,output:n.result,completedAt:c,updatedAt:c},await q(W(e,`steps`,r,t),N,{overwrite:!0})}}else if(i.eventType===`step_failed`&&`eventData`in i){let n=i.eventData;if(T){let r=`${_}-${i.correlationId}`;if(!await Z(H(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new A(`Cannot modify step in terminal state`);N={...T,status:`failed`,error:n.error,completedAt:c,updatedAt:c},await q(W(e,`steps`,r,t),N,{overwrite:!0})}}else if(i.eventType===`step_retrying`&&`eventData`in i){let n=i.eventData;if(T){let r=`${_}-${i.correlationId}`;N={...T,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:c},await q(W(e,`steps`,r,t),N,{overwrite:!0})}}else if(i.eventType===`hook_created`&&`eventData`in i){let r=i.eventData,s=Xn(e,r.token),l,u=()=>JSON.stringify({token:r.token,hookId:i.correlationId,runId:_,eventId:n,tokenRetentionUntil:r.tokenRetentionUntil,...l&&{claimedFrom:l}}),d=await $n(e,r.token,async a=>{let o=await Qn(s);if(o||=(a.throwIfAborted(),await X(s),await Fr(e,r.token,t),await Qn(s)),!o)return a.throwIfAborted(),ze(await Z(s,u())),{status:`claimed`};if(o.runId===_&&o.hookId===i.correlationId)return{status:`owned`,claim:o};if(!await Si(e,o,t)){if(r.force!==!0||!o.hookId)return{status:`conflict`,claim:o};a.throwIfAborted();let s=await G(e,`runs`,o.runId,v,t),u=s!==null&&!f(s.status);if(l={runId:o.runId,hookId:o.hookId,...u&&{workflowName:s.workflowName,deploymentId:s.deploymentId,runSpecVersion:s.specVersion}},u&&(s.specVersion??1)<8)return{status:`conflict`,claim:o,forceRefusedReason:`victim-spec-version`};let d=await Ei(e,_,i.correlationId);d?(n=d,ye={...E,eventId:n}):(ye=await fe({...E,eventData:{...E.eventData,forceClaimedFrom:l}}),n=ye.eventId),await gr(e,_,i.correlationId,t),await q(W(e,`hooks`,i.correlationId,t),{runId:_,hookId:i.correlationId,token:r.token,metadata:r.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:c,specVersion:x,isWebhook:r.isWebhook??!1,isSystem:r.isSystem??!1,tokenRetentionUntil:r.tokenRetentionUntil,claimedFrom:l},{overwrite:!0});let p=await Z(Bn(e,o.hookId,t),JSON.stringify({forceClaimedBy:{runId:_,hookId:i.correlationId}}));u&&p&&await fe({eventType:`hook_disposed`,correlationId:o.hookId,eventData:{token:r.token,forceClaimedBy:{runId:_,hookId:i.correlationId}},runId:o.runId,eventId:await se(o.runId),createdAt:new Date,specVersion:s.specVersion})}return a.throwIfAborted(),l?await J(s,u(),{overwrite:!0}):await X(s),o.hookId&&(await X(W(e,`hooks`,o.hookId,t)),await X(nr(e,r.token,o.runId,o.hookId)),await _r(e,o.runId,o.hookId,t)),a.throwIfAborted(),l||ze(await Z(s,u())),{status:`claimed`}});if(d.status===`owned`&&d.claim.claimedFrom&&(l=d.claim.claimedFrom),d.status===`owned`){let a=d.claim,s;if(a.eventId)s=a.eventId;else{let a=await Ei(e,_,i.correlationId);if(a!==null)throw await Di(e,_,i.correlationId,a,t),new A(`Hook "${i.correlationId}" already created`);let o=await Oi(e,r.token,_,i.correlationId,n);if(o===null)throw new A(`Hook "${i.correlationId}" already created`);s=o}n=s,o=!0;let l=de(n.replace(/^evnt_/,``))??c;E={...i,eventData:{...i.eventData,tokenRetentionUntil:a.tokenRetentionUntil},runId:_,eventId:n,createdAt:l,specVersion:x}}if(d.status===`conflict`){let e=d.claim,t=await fe({eventType:`hook_conflict`,correlationId:i.correlationId,eventData:{token:r.token,conflictingRunId:e.runId,...d.forceRefusedReason!==void 0&&{forceRefusedReason:d.forceRefusedReason}},runId:_,eventId:n,createdAt:c,specVersion:x}),o=a?.resolveData??`all`,s=typeof a?.sinceCursor==`string`?await w(_,{sortOrder:`asc`,cursor:a.sinceCursor}):void 0,l={event:y(t,o),run:k,step:N,hook:void 0};return s?{...l,events:o===`none`?s.data.map(e=>y(e,o)):s.data,cursor:s.cursor,hasMore:s.hasMore}:l}l&&(E={...E,eventData:{...E.eventData,forceClaimedFrom:l}});let p=E.eventData;P={runId:_,hookId:i.correlationId,token:p.token,metadata:p.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:E.createdAt,specVersion:x,isWebhook:p.isWebhook??!1,isSystem:p.isSystem??!1,tokenRetentionUntil:p.tokenRetentionUntil,...l&&{claimedFrom:l}},Te=d.status===`owned`||l?{overwrite:!0}:void 0,await mr(e,r.token,_,i.correlationId,n,t)}else if(i.eventType===`hook_disposed`){if(!await Z(Bn(e,i.correlationId,t),``))throw new A(`Hook "${i.correlationId}" already disposed`);let n=W(e,`hooks`,i.correlationId,t),r=await G(e,`hooks`,i.correlationId,D,t);r&&(await tr(e,r.token,r.runId,r.hookId),await X(nr(e,r.token,r.runId,r.hookId))),await X(n),await _r(e,_,i.correlationId,t)}else if(i.eventType===`wait_created`&&`eventData`in i){let n=`${_}-${i.correlationId}`;if(!await Z(H(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new A(`Wait "${i.correlationId}" already exists`);let r=i.eventData;we={waitId:n,runId:_,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:c,updatedAt:c,specVersion:x},await q(W(e,`waits`,n,t),we)}else if(i.eventType===`wait_completed`){let n=`${_}-${i.correlationId}`,r=H(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await Z(r,``))throw new A(`Wait "${i.correlationId}" already completed`);let a=await G(e,`waits`,n,u,t);if(!a)throw await L.unlink(r).catch(()=>{}),new O(`Wait "${i.correlationId}" not found`);we={...a,status:`completed`,completedAt:c,updatedAt:c},await q(W(e,`waits`,n,t),we,{overwrite:!0})}if(i.eventType===`hook_received`&&i.correlationId&&await pe(i.correlationId,i.eventData?.token),i.eventType===`hook_created`&&i.correlationId){let n=await Vn(e,i.correlationId,t);if(n.committed&&n.forceClaimedBy)throw new A(`Hook "${i.correlationId}" was force-claimed by another run before its creation was journaled`)}let Ee=W(e,`events`,`${_}-${n}`,t),De=JSON.stringify(E,K,2),I=async r=>{let i=_e(n);if(o||i===null)return!1;let a=await re(_,{rescan:r>0&&r%8==0,atLeast:i+1});return a!==null&&(n=me(a),E={...E,eventId:n},Ee=W(e,`events`,`${_}-${n}`,t),De=JSON.stringify(E,K,2),!0)},Oe=!1;ye&&(E=ye,Ee=W(e,`events`,`${_}-${n}`,t),De=JSON.stringify(E,K,2),Oe=!0);for(let r=0;!Oe;r++){if(i.eventType===`hook_received`){let r=await Wn(e,_,t),i=r?null:await G(e,`runs`,_,v,t);if(r||i&&f(i.status))throw new xe(`Workflow run "${_}" is already in a terminal state`);let a=Kn(e,_,`${n}.${ir()}`,t);if(!await Z(a,De))throw new O(`Failed to stage event "${n}" for run "${_}": staging path already exists`);try{if(await Wn(e,_,t))throw new xe(`Workflow run "${_}" is already in a terminal state`);let n=await Dt(a,Ee);if(n===`missing`)throw new xe(`Workflow run "${_}" is already in a terminal state`);Oe=n===`linked`}finally{await X(a).catch(()=>{})}}else Oe=await Z(Ee,De);if(Oe){ie(_,n);break}if(i.eventType===`hook_received`&&a?.resumeId){let r=await G(e,`events`,`${_}-${n}`,$,t);if(r&&bi(r,{runId:_,resumeId:a.resumeId,hookId:i.correlationId,eventId:n}))return{event:r}}if(!await I(r))break}if(!Oe)throw i.eventType===`hook_created`&&i.correlationId&&await Di(e,_,i.correlationId,n,t),new A(`Event "${n}" already exists for run "${_}"`);ue(E,Ee,De),i.eventType===`hook_received`&&a?.resumeId&&s!==null&&s!==n&&await J(er(e,_,a.resumeId),JSON.stringify({runId:_,resumeId:a.resumeId,hookId:i.correlationId,eventId:n,...a.resumePayloadDigest?{payloadDigest:a.resumePayloadDigest}:{}}),{overwrite:!0}),P&&i.eventType===`hook_created`&&(await gr(e,P.runId,P.hookId,t),await q(W(e,`hooks`,P.hookId,t),P,Te)),M&&(await ni(e,_,t),l(_));let ke=a?.resolveData??`all`,Ae=y(E,ke),R;if(i.eventType===`run_started`&&k&&!a?.skipPreload&&(R=await w(_,{limit:oe()})),typeof a?.sinceCursor==`string`){let e=await w(_,{sortOrder:`asc`,cursor:a.sinceCursor});R=ke===`none`?{...e,data:e.data.map(e=>y(e,ke))}:e}let je={event:Ae,run:k,step:N,hook:P,wait:we,...F?{stepCreated:!0}:{},...k?{maxEvents:oe()}:{}};return R?{...je,events:R.data,cursor:R.cursor,hasMore:R.hasMore}:je}},async get(n,r,i){V(`runId`,n),V(`eventId`,r);let a=await G(e,`events`,`${n}-${r}`,$,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);let o=i?.resolveData??`all`;return y(a,o)},async list(e){let{runId:t}=e;V(`runId`,t);let n=e.resolveData??`all`,r=await w(t,{...e.pagination,limit:e.pagination?.limit??oe()});return n===`none`?{...r,data:r.data.map(e=>y(e,n))}:r},async listByCorrelationId(t){let n=t.correlationId;V(`correlationId`,n),V(`runId`,t.runId);let r=t.resolveData??`all`,a=await Mt({directory:z.join(e,`events`),schema:$,cachedItems:i,filePrefix:`${t.runId}-`,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:ar(`evnt`),getId:e=>e.eventId,getSortKey:wi,getSortKeyFromFileId:e=>Ti(t.runId,e)});return r===`none`?{...a,data:a.data.map(e=>y(e,r))}:a}};async function N(e,t,n){if(!e.event)return e;let r=_e(e.event.eventId);if(r===null||t<1||r<=t+1)return e;let i=r-t-1,a=await M.list({runId:e.event.runId,pagination:{cursor:`${kt}${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 P=(async(e,t,n)=>{if(n?.eventCount===void 0)return M.create(e,t,n);let r=n.resolveData??`all`,i=await M.create(e,t,n);return typeof n.sinceCursor==`string`?i:N(i,n.eventCount,r)});return{...M,create:P}}function Ni(e){let t=z.join(e,`snapshots`);function n(e){return V(`runId`,e),H(t,`${e}.snapshot`)}return{async save(e,r,i){await xt(t),await J(n(e),Buffer.from(le(i,r)),{overwrite:!0})},async load(e){let t;try{t=await Tt(n(e))}catch(e){if(e.code===`ENOENT`)return null;throw e}return ee(new Uint8Array(t.buffer,t.byteOffset,t.byteLength))},async delete(e){await L.rm(n(e),{force:!0})}}}function Pi(e,t){return{get:(async(n,r,i)=>{V(`runId`,n),V(`stepId`,r);let a=await G(e,`steps`,`${n}-${r}`,p,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return Dr(a,i?.resolveData??`all`)}),list:(async t=>{V(`runId`,t.runId);let n=t.resolveData??`all`,r=await Mt({directory:z.join(e,`steps`),schema:p,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:ar(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function Fi(e,t){let n=hi(e,t),r=Pi(e,t),i=Mi(e,t),a=Lr(e,t),o=Ni(e);return{runs:gn(`world.runs`,n),steps:gn(`world.steps`,r),events:gn(`world.events`,i),hooks:gn(`world.hooks`,a),experimental_snapshots:gn(`world.experimental_snapshots`,o),clearCache:()=>i.clearCache()}}function Ii(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...st.value,...t};Ge(n.dataDir);let r=n.tag,i=Dn(n),{clearCache:a,...o}=Fi(n.dataDir,r),s=ct(n);return{specVersion:fe(),capabilities:{hookRetention:{active:!0},dynamicWorkflowCode:!0,hookResumeDedup:!0,hookForceClaim:!0},...i,...o,...gn(`world.streams`,{...$r(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Jt(n.dataDir),!s)return;let e=r?e=>_t(e,r):vt,t={...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))};await x(t,i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=z.join(e,`hooks`),i=await yt(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-B7NC1c9-.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await Y(z.join(t,n),a);r?.token&&(await X(z.join(t,`tokens`,`${zn(r.token)}.json`)),await X(nr(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 yt(n,r);await Promise.all(i.map(e=>X(z.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=z.join(e,`hooks`,t),i;try{i=await I.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 yt(t,r);await Promise.all(i.map(e=>X(z.join(t,e))))}))}await I.rm(z.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=z.join(e,`streams`,`chunks`),s;try{s=await I.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 bt(t,r,`.bin`);await Promise.all(n.map(e=>I.unlink(z.join(t,e)).catch(()=>{})))})),mt()}else mt(),xr(),await Ne(n.dataDir,{recursive:!0,force:!0}),await Jt(n.dataDir)}}}export{Lt as DataDirAccessError,Rt as DataDirVersionError,Ve as UnwritableDataDirError,Ii as createWorld,Wt as ensureDataDir,Jt as initDataDir,zt as parseVersion};