eve 0.31.0 → 0.31.2

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 (93) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/src/channel/cross-channel-receive.d.ts +1 -1
  3. package/dist/src/compiled/.vendor-stamp.json +6 -6
  4. package/dist/src/compiled/@workflow/core/_quickjs-wasi.d.ts +8 -0
  5. package/dist/src/compiled/@workflow/core/correlation-id.d.ts +109 -0
  6. package/dist/src/compiled/@workflow/core/events-consumer.d.ts +1 -0
  7. package/dist/src/compiled/@workflow/core/index.js +2 -2
  8. package/dist/src/compiled/@workflow/core/private.d.ts +17 -1
  9. package/dist/src/compiled/@workflow/core/private.js +1 -1
  10. package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +19 -0
  11. package/dist/src/compiled/@workflow/core/runtime/deployment-guard.d.ts +99 -0
  12. package/dist/src/compiled/@workflow/core/runtime/quickjs-assets.generated.d.ts +14 -0
  13. package/dist/src/compiled/@workflow/core/runtime/quickjs-entrypoint.d.ts +124 -0
  14. package/dist/src/compiled/@workflow/core/runtime/quickjs-runtime.d.ts +193 -0
  15. package/dist/src/compiled/@workflow/core/runtime/run.d.ts +2 -0
  16. package/dist/src/compiled/@workflow/core/runtime/runs.d.ts +18 -1
  17. package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +7 -0
  18. package/dist/src/compiled/@workflow/core/runtime/vm-mode.d.ts +44 -0
  19. package/dist/src/compiled/@workflow/core/runtime/vm-serde-bundle.generated.d.ts +14 -0
  20. package/dist/src/compiled/@workflow/core/runtime.d.ts +1 -1
  21. package/dist/src/compiled/@workflow/core/runtime.js +3 -3
  22. package/dist/src/compiled/@workflow/core/serialization/codec-devalue-vm.d.ts +9 -0
  23. package/dist/src/compiled/@workflow/core/serialization/reducers/class-vm.d.ts +20 -0
  24. package/dist/src/compiled/@workflow/core/serialization/reducers/common-vm.d.ts +15 -0
  25. package/dist/src/compiled/@workflow/core/serialization/reducers/step-function-vm.d.ts +44 -0
  26. package/dist/src/compiled/@workflow/core/serialization/vm-bundle-entry.d.ts +12 -0
  27. package/dist/src/compiled/@workflow/core/serialization/workflow-vm.d.ts +24 -0
  28. package/dist/src/compiled/@workflow/core/serialization.d.ts +2 -1
  29. package/dist/src/compiled/@workflow/core/source-map.d.ts +20 -0
  30. package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +78 -0
  31. package/dist/src/compiled/@workflow/core/telemetry.d.ts +5 -0
  32. package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
  33. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  34. package/dist/src/compiled/@workflow/errors/error-codes.d.ts +2 -0
  35. package/dist/src/compiled/@workflow/errors/index.d.ts +24 -0
  36. package/dist/src/compiled/@workflow/errors/index.js +1 -1
  37. package/dist/src/compiled/@workflow/world/analytics.d.ts +2 -0
  38. package/dist/src/compiled/@workflow/world/events.d.ts +51 -1
  39. package/dist/src/compiled/@workflow/world/hooks.d.ts +1 -0
  40. package/dist/src/compiled/@workflow/world/index.d.ts +1 -1
  41. package/dist/src/compiled/@workflow/world/interfaces.d.ts +28 -1
  42. package/dist/src/compiled/@workflow/world/queue.d.ts +8 -0
  43. package/dist/src/compiled/@workflow/world/runs.d.ts +83 -0
  44. package/dist/src/compiled/@workflow/world-local/index.js +5 -4
  45. package/dist/src/compiled/@workflow/world-vercel/index.js +15 -15
  46. package/dist/src/compiled/_chunks/workflow/_eve-core-quickjs-entrypoint-stub-qIV0OaFz.js +1 -0
  47. package/dist/src/compiled/_chunks/workflow/{attribute-changes-DROfGk6l.js → attribute-changes-Du5ztewf.js} +2 -2
  48. package/dist/src/compiled/_chunks/workflow/{dist-D5bR13zs.js → dist-CNXUKQCp.js} +1 -1
  49. package/dist/src/compiled/_chunks/workflow/dist-CRTn4Sg8.js +3 -0
  50. package/dist/src/compiled/_chunks/workflow/dist-tJoQXAF6.js +1 -0
  51. package/dist/src/compiled/_chunks/workflow/functions-ClJbpZhR.js +1 -0
  52. package/dist/src/compiled/_chunks/workflow/{private-BcwCGTV5.js → private-CiWVdS5v.js} +1 -1
  53. package/dist/src/compiled/_chunks/workflow/resume-hook-CT0keOww.js +1 -0
  54. package/dist/src/compiled/_chunks/workflow/run-DBheaFhH.js +1 -0
  55. package/dist/src/compiled/_chunks/workflow/signal-exit-C8vsI6zj.js +1 -0
  56. package/dist/src/compiled/_chunks/workflow/sleep-BeH4B0Cd.js +1 -0
  57. package/dist/src/compiled/_chunks/workflow/{token-hiUWkDKe.js → token-DtCUEpJs.js} +1 -1
  58. package/dist/src/compiled/_chunks/workflow/{token-util-DURSL1l8.js → token-util-DNwIAn_u.js} +9 -9
  59. package/dist/src/compiled/_chunks/workflow/undici-CUIybhQ2.js +95 -0
  60. package/dist/src/compiled/_chunks/workflow/wait-until-CMX5LUWJ.js +15 -0
  61. package/dist/src/compiler/extension-compatibility.d.ts +2 -2
  62. package/dist/src/compiler/extension-compatibility.js +1 -1
  63. package/dist/src/context/container.d.ts +3 -0
  64. package/dist/src/context/container.js +1 -1
  65. package/dist/src/discover/filesystem.js +1 -1
  66. package/dist/src/execution/parked-delivery-wait.js +1 -1
  67. package/dist/src/execution/session-command-inbox.d.ts +11 -3
  68. package/dist/src/execution/session-command-wire.d.ts +24 -0
  69. package/dist/src/execution/session-command-wire.js +1 -0
  70. package/dist/src/execution/turn-control-receiver.js +1 -1
  71. package/dist/src/execution/workflow-runtime.js +1 -1
  72. package/dist/src/execution/workflow-steps.js +1 -1
  73. package/dist/src/harness/authorization.d.ts +8 -0
  74. package/dist/src/harness/authorization.js +1 -1
  75. package/dist/src/internal/application/package.js +1 -1
  76. package/dist/src/internal/nitro/dev-runtime-source-snapshot-copy.js +1 -1
  77. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
  78. package/dist/src/public/definitions/tool.d.ts +18 -14
  79. package/dist/src/runtime/connections/scoped-authorization.js +1 -1
  80. package/dist/src/runtime/framework-tools/connection-search-dynamic.js +2 -2
  81. package/dist/src/setup/scaffold/create/project.js +1 -1
  82. package/docs/guides/meta.json +2 -1
  83. package/docs/guides/remote-agents.md +6 -4
  84. package/docs/guides/ucp.mdx +181 -0
  85. package/package.json +6 -6
  86. package/dist/src/compiled/_chunks/workflow/dist-B-vbuNqP.js +0 -1
  87. package/dist/src/compiled/_chunks/workflow/dist-dNxTT6nO.js +0 -3
  88. package/dist/src/compiled/_chunks/workflow/functions-CiVUVDNB.js +0 -1
  89. package/dist/src/compiled/_chunks/workflow/resume-hook-bc-OQVI0.js +0 -1
  90. package/dist/src/compiled/_chunks/workflow/run-DM3ouA3U.js +0 -1
  91. package/dist/src/compiled/_chunks/workflow/sleep-D5iWly6-.js +0 -1
  92. package/dist/src/compiled/_chunks/workflow/undici-DWL_MYmT.js +0 -95
  93. package/dist/src/compiled/_chunks/workflow/wait-until-DoW76jdb.js +0 -15
@@ -1,4 +1,5 @@
1
- import{i as e,o as t,t as n}from"../../_chunks/workflow/rolldown-runtime-DaDcL9Zw.js";import"../../_chunks/workflow/dist-B-vbuNqP.js";import{i as r,n as i,r as a,t as o}from"../../_chunks/workflow/workflow-routes-CwqB063q.js";import{D as s,T as c,_ as l,d as u,f as d,o as f,r as p}from"../../_chunks/workflow/dist-dNxTT6nO.js";import{A as m,B as h,D as g,E as _,H as v,I as ee,J as y,L as te,M as b,Mr as x,O as ne,R as S,V as re,W as C,X as w,a as ie,d as T,di as E,h as ae,j as oe,n as se,o as D,p as O,q as ce,r as le,u as k,v as A,xn as j,yr as M,z as ue}from"../../_chunks/workflow/dist-D5bR13zs.js";import{n as de,t as fe}from"../../_chunks/workflow/spec-version-C0hBsfu-.js";import{t as N}from"../../_chunks/workflow/undici-DWL_MYmT.js";import{createHash as pe}from"node:crypto";import{promisify as me}from"node:util";import{fileURLToPath as he}from"node:url";import{promises as P}from"node:fs";import F,{access as ge,constants as _e,mkdir as ve,readFile as I,readdir as ye,readlink as be,rm as xe,unlink as Se,writeFile as Ce}from"node:fs/promises";import L from"node:path";import{tmpdir as we}from"node:os";import{execFile as Te}from"node:child_process";import{setTimeout as Ee}from"node:timers/promises";import{EventEmitter as De}from"node:events";var Oe=class extends s{dataDir;constructor(e,t){super(`[workflow] The local (filesystem) world cannot create its data directory "${e}" (${t}). Workflow runs cannot be stored, so every run will fail before its first step. If this is a Vercel deployment, its filesystem is read-only and the local world cannot work there. The world is selected from the environment when the process starts: the Vercel world is used when VERCEL_DEPLOYMENT_ID is set, unless WORKFLOW_TARGET_WORLD says otherwise. Unset WORKFLOW_TARGET_WORLD in this deployment, or set WORKFLOW_TARGET_WORLD=vercel, to use the Vercel world. Otherwise point WORKFLOW_LOCAL_DATA_DIR at a writable directory.`,{code:t}),this.name=`UnwritableDataDirError`,this.dataDir=e}static is(e){return e instanceof Error&&e.name===`UnwritableDataDirError`}};const ke=new Set([`EROFS`,`EACCES`,`EPERM`]);function Ae(e){return e!==void 0&&ke.has(e)}let je=!1;function Me(e){if(je||!process.env.VERCEL_DEPLOYMENT_ID)return;let t=L.resolve(e),n=we();t===n||t.startsWith(`${n}${L.sep}`)||(je=!0,console.warn(`[workflow] Warning: the local (filesystem) world is running inside a Vercel deployment, writing to ${t}. That filesystem is read-only, so workflow runs will fail before their first step. The world is selected from the environment when the process starts: the Vercel world is used when VERCEL_DEPLOYMENT_ID is set, unless WORKFLOW_TARGET_WORLD says otherwise. Unset WORKFLOW_TARGET_WORLD in this deployment, or set WORKFLOW_TARGET_WORLD=vercel, to use the Vercel world.`))}function Ne(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function Pe(e,t){let n=[],r=e.trim().split(`
2
- `);for(let e of r){let r=e.trim().split(/\s+/);if(r.length<5||r[0]?.toUpperCase()!==`TCP`)continue;let[,i,,a,o]=r;if(a?.toUpperCase()!==`LISTENING`||o!==t.toString())continue;let s=i.lastIndexOf(`:`);if(s===-1)continue;let c=Ne(i.slice(s+1));c!==void 0&&n.push(c)}return n}const Fe=me(Te);function Ie(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const Le=((e,t)=>e.join(t))([``,`proc`],`/`);async function Re(e){let t=[`${Le}/net/tcp`,`${Le}/net/tcp6`],n=[],r=new Set,i=`${Le}/${e}/fd`;try{let e=(await ye(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await be(`${i}/${e}`)).match(/^socket:\[(\d+)\]$/)?.[1]??null));for(let e of t)e.status===`fulfilled`&&e.value&&(n.push(e.value),r.add(e.value))}catch{return[]}if(n.length===0)return[];let a=new Map;for(let e of t)try{let t=(await I(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=Ie(c,16);l!==void 0&&a.set(o,l)}}catch{}let o=[];for(let e of n){let t=a.get(e);t!==void 0&&o.push(t)}return o}async function ze(e){try{let{stdout:t}=await Fe(`lsof`,[`-a`,`-i`,`-P`,`-n`,`-p`,e.toString()]),n=[],r=t.split(`
4
- `);for(let e of r)if(e.includes(`LISTEN`)){let t=e.trim().split(/\s+/)[8];if(t){let e=t.lastIndexOf(`:`);if(e!==-1){let r=Ie(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Be(e){try{let{stdout:t}=await Fe(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Pe(t,e)}catch{return[]}}async function Ve(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Re(e);case`darwin`:return await ze(e);case`win32`:return await Be(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const He=`${o}/flow?__health`;async function Ue(e,t={}){let{endpoint:n=He,timeout:r=500}=t,i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return(await fetch(`http://localhost:${e}${n}`,{method:`HEAD`,signal:i.signal})).status===200}catch{return!1}finally{clearTimeout(a)}}async function We(e){let t=await Ve();if(t.length===0)return;if(t.length===1)return t[0];let n=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await Ue(t,e)})))).find(e=>e.isWorkflow);return n?n.port:(process.env.NODE_ENV===`development`&&console.debug(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function Ge(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Ke=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,qe=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Je=Ge(()=>({dataDir:Ke(),baseUrl:qe()}));function Ye(e){if(e.recoverActiveRuns!==void 0)return e.recoverActiveRuns;let t=process.env.WORKFLOW_LOCAL_RECOVER_ACTIVE_RUNS?.toLowerCase();return!(t===`0`||t===`false`)}function Xe(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??i(`http://localhost`)}async function Ze(e){if(e.baseUrl)return e.baseUrl;if(process.env.WORKFLOW_LOCAL_BASE_URL)return process.env.WORKFLOW_LOCAL_BASE_URL;if(typeof e.port==`number`)return i(`http://localhost:${e.port}`);if(process.env.PORT)return i(`http://localhost:${process.env.PORT}`);let t=await We({endpoint:a()});if(t)return i(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const Qe=D(()=>Math.random());function $e(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var et=class extends s{constructor(e,t){super(`Unsafe ${e} "${$e(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function R(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new et(e,t)}function z(e,...t){let n=L.resolve(e),r=L.resolve(e,...t);if(r!==n&&!r.startsWith(n+L.sep))throw new et(`path`,t.join(`/`));return r}const tt=process.platform===`win32`;async function B(e,t=5){if(!tt)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}const nt=new Set,rt=new Set;function it(){nt.clear(),rt.clear()}const at=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function V(e){return e.replace(at,``)}function ot(e,t){return e.endsWith(`.${t}`)}function st(e){return!at.test(e)}function H(e,t,n,r){return R(`fileId`,n),r!==void 0&&R(`tag`,r),z(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function U(e,t,n,r,i){if(R(`fileId`,n),i!==void 0&&R(`tag`,i),i){let a=await K(z(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return K(z(e,t,`${n}.json`),r)}async function ct(e,t){let n=`.${t}.json`;try{return(await P.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function lt(e,t,n){let r=`.${t}${n}`;try{return(await P.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function ut(e){let t=L.resolve(e);if(!rt.has(t))try{await P.mkdir(t,{recursive:!0}),rt.add(t)}catch(e){let n=e.code;if(Ae(n)&&!await dt(t))throw new Oe(t,n)}}async function dt(e){try{return(await P.stat(e)).isDirectory()}catch{return!1}}async function ft(e,t){await ut(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return rt.delete(L.resolve(e)),await ut(e),t()}}function W(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function pt(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function G(e,t,n){return mt(e,JSON.stringify(t,W,2),n)}async function mt(e,t,n){if(!n?.overwrite){if(nt.has(e))throw new p(`File ${e} already exists and 'overwrite' is false`);try{throw await P.access(e),nt.add(e),new p(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${Qe()}`,i=!1;try{await ft(L.dirname(e),async()=>{await P.writeFile(r,t),i=!0,await B(()=>P.rename(r,e))}),nt.add(e)}catch(e){throw i&&await B(()=>P.unlink(r),3).catch(()=>{}),e}}async function K(e,t){try{let n=await P.readFile(e,`utf-8`);return t.parse(JSON.parse(n,pt))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function ht(e){return await P.readFile(e)}async function gt(e){let t=await P.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function q(e){try{await B(()=>P.unlink(e))}catch(e){if(e.code!==`ENOENT`)throw e}}async function J(e,t){let n=`${e}.tmp.${Qe()}`,r=!1;try{return await ft(L.dirname(e),async()=>{await P.writeFile(n,t,{flag:`wx`}),r=!0;try{return await B(()=>P.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await B(()=>P.unlink(n),3).catch(()=>{})}}async function _t(e,t){try{return await ft(L.dirname(t),()=>B(()=>P.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function Y(e){return vt(e,`.json`)}async function vt(e,t){try{return(await P.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}function yt(e){if(!e)return null;let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null}}function bt(e,t){return t?`${e.toISOString()}|${t}`:e.toISOString()}async function X(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d}=e;i!==void 0&&R(`filePrefix`,i);let f=L.resolve(t),p=await Y(f),m=i?p.filter(e=>e.startsWith(i)):p,h=a?m.filter(a):m,g=yt(l),_=h;g&&(_=h.filter(e=>{let t=u(`${e}.json`);if(t){let e=g.timestamp.getTime(),n=t.getTime();return g.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let v=[];for(let e=0;e<_.length;e+=32){let t=_.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=L.join(f,`${e}.json`);try{let e=r?.get(t);return e===void 0?await K(t,n):structuredClone(e)}catch(t){if(t instanceof E)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}}));for(let e of i)if(e&&!(o&&!o(e))){if(g){let t=e.createdAt.getTime(),n=g.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&g.id&&d&&d(e)>=g.id)continue}else if(t<n||t===n&&g.id&&d&&d(e)<=g.id)continue}v.push(e)}}v.sort((e,t)=>{let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let ee=v.length>c,y=ee?v.slice(0,c):v;return{data:y,cursor:y.length>0?bt(y[y.length-1].createdAt,d?.(y[y.length-1])):null,hasMore:ee}}let Z=null;function xt(){return typeof import.meta.url==`string`&&import.meta.url?L.dirname(he(import.meta.url)):null}async function St(){if(Z)return Z;let e=xt();if(e)try{let t=await I(L.join(e,`../package.json`),`utf-8`);return Z=JSON.parse(t),Z}catch{}return Z={name:`@workflow/world-local`,version:`5.0.0-beta.33`},Z}const Ct=`version.txt`;var wt=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},Tt=class extends Error{oldVersion;newVersion;suggestedVersion;constructor(e,t,n,r){super(e),this.name=`DataDirVersionError`,this.oldVersion=t,this.newVersion=n,this.suggestedVersion=r}};function Et(e){let t=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);if(!t)throw Error(`Invalid version string: "${e}"`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4],raw:e}}function Q(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function Dt(e){let t=e.trim(),n=t.lastIndexOf(`@`);if(n<=0)throw Error(`Invalid version file content: "${e}"`);return{packageName:t.substring(0,n),version:Et(t.substring(n+1))}}function Ot(e,t){return`${e}@${Q(t)}`}function kt(e,t){console.log(`[world-local] Upgrading from version ${Q(e)} to ${Q(t)}`)}async function At(e){let t=L.resolve(e);try{await ve(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new wt(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await ge(t,_e.R_OK)}catch(e){let n=e;throw new wt(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=L.join(t,`.workflow-write-test-${Date.now()}`);try{await Ce(n,``),await Se(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new wt(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function jt(e){let t=L.join(L.resolve(e),Ct);try{return Dt(await I(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Mt(e,t){await Ce(L.join(L.resolve(e),Ct),Ot((await St()).name,t))}function Nt(e,t){return t||Q(e)}async function Pt(e){await At(e);let t=await St(),n=Et(t.version),r=await jt(e);if(r===null){await Mt(e,n);return}let{version:i}=r;if(Q(i)!==Q(n))try{kt(i,n),await Mt(e,n)}catch(e){let r=Nt(i,e instanceof Tt?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Q(i)} to ${Q(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let Ft=null;async function It(){return Ft||=import(`../../_chunks/workflow/src-Cj3P1ChQ.js`).then(e=>t(e.t(),1)).catch(()=>null),Ft}let Lt=null;async function Rt(){return Lt||=It().then(e=>e?e.trace.getTracer(`workflow`):null),Lt}async function zt(e,...t){let[n,r]=await Promise.all([Rt(),It()]),{fn:i,opts:a}=typeof t[0]==`function`?{fn:t[0],opts:{}}:{fn:t[1],opts:t[0]};if(!i)throw Error(`Function to trace must be provided`);return!n||!r?await i():n.startActiveSpan(e,a,async e=>{try{let t=await i(e);return e.setStatus({code:r.SpanStatusCode.OK}),t}catch(t){throw e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),t}finally{e.end()}})}async function Bt(e){let t=await It();if(t)return t.SpanKind[e]}function Vt(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Ht=Vt(`peer.service`),Ut=Vt(`rpc.system`),Wt=Vt(`rpc.service`),Gt=Vt(`rpc.method`),Kt=Vt(`workflow.run.id`),qt=Vt(`step.id`),Jt={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},Yt={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},Xt=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function Zt(e){if(e.length>=2&&typeof e[1]==`object`&&e[1]!==null){let t=e[1];if(typeof t.eventType==`string`)return t.eventType}}function Qt(e,t){return typeof e[t]==`string`?e[t]:void 0}function $t(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function en(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.runId==`string`)return t.runId;for(let e of[`run`,`step`,`hook`,`wait`]){let n=t[e];if(typeof n==`object`&&n){let e=n.runId;if(typeof e==`string`)return e}}}function tn(e,t,n){let r=`${e}.${t}`,i={},a=Yt[r],o=a===void 0?Xt.has(r)?$t(n[0]):void 0:Qt(n,a);if(o&&Object.assign(i,Kt(o)),r===`world.steps.get`){let e=Qt(n,1);e&&Object.assign(i,qt(e))}return i}function nn(e,t){let n={};for(let r of Object.keys(t))if(typeof t[r]!=`function`)n[r]=t[r];else{let i=t[r],a=String(r);n[r]=async(...t)=>{let n=`${e}.${a}`;if(e===`world.events`&&a===`create`){let r=Zt(t);r&&(n=`${e}.${a} ${r}`)}return zt(n,{kind:await Bt(`INTERNAL`)},async r=>{r?.setAttributes({...Ht(Jt.peerService),...Ut(Jt.rpcSystem),...Wt(Jt.rpcService),...Gt(n),...tn(e,a,t)});let o=await i(...t),s=en(o);return s&&r?.setAttributes(Kt(s)),o})}}return n}var rn=n((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimit=t.Sema=void 0;let r=n(e(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};t.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}t.RateLimit=f}))(),an=N(),on=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,W))}async deserialize(e){let t=[],n=e.getReader();for(;;){let{done:e,value:r}=await n.read();if(e)break;r&&t.push(r)}let r=Buffer.concat(t).toString();return JSON.parse(r,pt)}};const sn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,cn=2147483647,ln=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3;function un(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 dn(){return{bodyTimeout:un(`WORKFLOW_LOCAL_BODY_TIMEOUT_MS`,3e4),connections:1e3,headersTimeout:un(`WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`,3e4),keepAliveTimeout:3e4}}const fn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function pn(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(fn))return!0;t=`cause`in t?t.cause:void 0}return!1}function mn(e){let t=new an.Agent(dn()),n=new on,i=D(),a=new rn.Sema(ln),o=new AbortController,s=o.signal,c=new Map,l=new Map,u=async(o,u,d)=>{let f=[];if(d?.idempotencyKey){let e=c.get(d.idempotencyKey);if(e)return{messageId:e}}let p=n.serialize(u),{prefix:m}=A(o),h=O.parse(`msg_${i()}`),g=u,_=g.runId??void 0,v=g.stepId??void 0;if(d?.idempotencyKey){let e=d.idempotencyKey;c.set(e,h),f.push(()=>{c.delete(e)})}return(async()=>{d?.delaySeconds&&d.delaySeconds>0&&await Ee(Math.min(d.delaySeconds*1e3,cn),void 0,{signal:s}),a.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${ln}) reached, waiting for queue to free up`),await a.acquire());let n=0;try{for(let i=0;i<256;i++){let a={...d?.headers,"content-type":`application/json`,"x-vqs-queue-name":o,"x-vqs-message-id":h,"x-vqs-message-attempt":String(n+1)},c=l.get(m),u,f;try{if(c)u=await c(new Request(r(Xe(e),{type:`flow`}),{method:`POST`,headers:a,body:p}));else{let n=await Ze(e);u=await fetch(r(n,{type:`flow`}),{method:`POST`,duplex:`half`,dispatcher:t,headers:a,body:p})}n++,f=await u.text()}catch(e){let t=e?.name;if(s.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(pn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${i+1}), retrying`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v},error:String(e)}),await Ee(5e3,void 0,{signal:s});continue}if(u.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await Ee(Math.min(e*1e3,cn),void 0,{signal:s});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${n}, HTTP ${u.status})`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v},handlerError:f}),await Ee(5e3,void 0,{signal:s})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v}})}finally{a.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(pn(e)?console.error(`[local world] Queue operation failed: detected "${fn}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler`,{queueName:o,messageId:h,..._&&{runId:_},...v&&{stepId:v},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of f)e()}),{messageId:h}},d=M({"x-vqs-queue-name":ae,"x-vqs-message-id":O,"x-vqs-message-attempt":w()});return{queue:u,createQueueHandler:(e,t)=>async n=>{let r=d.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new on().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a}),n=null;return typeof e?.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,sn)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await St()).version}`,registerHandler(e,t){l.set(e,t)},async close(){s.aborted||(o.abort(),await t.close())}}}function hn(e){return pe(`sha256`).update(e).digest(`hex`)}function gn(e,t,n){return z(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function _n(e,t,n){let r=[gn(e,t)];n&&r.push(gn(e,t,n));for(let e of r)try{return await F.access(e),!0}catch{}return!1}function vn(e,t,n){return z(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function yn(e,t,n){let r=[vn(e,t)];n&&r.push(vn(e,t,n));for(let e of r)try{return await F.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function bn(e,t,n){return z(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function xn(e,t,n,r){return L.join(bn(e,t,r),`${n}.json`)}async function Sn(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 F.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await B(()=>F.unlink(L.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await F.rmdir(e).catch(()=>{})}}async function Cn(e,t,n){let r=[];try{r=await F.readdir(L.join(e,`events`))}catch(e){if(e.code!==`ENOENT`)throw e}let i=`${t}-`,a=null;for(let e of r){if(!e.startsWith(i)||!e.endsWith(`.json`))continue;let t=e.slice(0,-5);if(!st(t)&&!(n&&ot(t,n)))continue;let r=V(t).slice(i.length);(!a||r>a)&&(a=r)}let o=Date.now();if(a)try{let e=ie(a.replace(/^evnt_/,``));o<=e&&(o=e+1)}catch{}return{eventId:`evnt_${On(o)}`,createdAt:new Date(o)}}function wn(e,t){return L.join(e,`hooks`,`tokens`,`${hn(t)}.json`)}function Tn(e,t,n){let r=pe(`sha256`).update(`${t}\x00${n}`).digest(`hex`);return L.join(e,`hooks`,`resumes`,`${r}.json`)}async function En(e,t,n,r){let i=wn(e,t),a;try{a=JSON.parse(await F.readFile(i,`utf8`))}catch{return}a.runId!==n||a.hookId!==r||await F.unlink(i).catch(()=>{})}function Dn(e,t,n,r){let i=pe(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return L.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const On=D(()=>Math.random()),$=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=V(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?se(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:se(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},kn=M({runId:x()}),An=M({hookId:x(),tag:x().optional()});function jn(e,t){return z(e,`hooks`,`token-index`,hn(t))}function Mn(e,t){return R(`hookId`,t),z(e,`hooks`,`id-index`,t)}function Nn(e){return z(e,`hooks`,`by-run`)}function Pn(e){let t=V(e);return t===e?void 0:e.slice(t.length+1)}function Fn(e,t){return t?st(e)||ot(e,t):st(e)}async function In(e){try{return await K(e,b)}catch(e){if(e instanceof SyntaxError||e instanceof E)return null;throw e}}async function Ln(e,t,n,r,i,a){R(`runId`,n),R(`eventId`,i),a!==void 0&&R(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([J(L.join(jn(e,t),o),s),J(L.join(Mn(e,r),o),s)])}function Rn(e,t,n,r){return H(e,`hooks/by-run`,`${t}-${n}`,r)}async function zn(e,t,n,r){await J(Rn(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function Bn(e,t,n,r){await q(Rn(e,t,n,r)),r&&await q(Rn(e,t,n))}async function Vn(e,t){R(`runId`,t);let n=Nn(e),r=`${t}-`,i=[];for(let e of await Y(n)){if(!e.startsWith(r))continue;let t=null;try{t=await K(L.join(n,`${e}.json`),An)}catch(e){if(!(e instanceof SyntaxError||e instanceof E))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function Hn(e,t){await q(L.join(Nn(e),`${t}.json`))}const Un=new Map;function Wn(){Un.clear()}async function Gn(e){let t=L.resolve(e),n=Un.get(t);return n||(n=qn(t).catch(e=>{throw Un.delete(t),e}),Un.set(t,n)),n}async function Kn(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function qn(e){let t=L.join(e,`hooks`,`.hook-index-complete`);try{await F.access(t);return}catch{}let n=L.join(e,`events`);await Kn(await Y(n),32,async t=>{let r=await In(L.join(n,`${t}.json`));if(!r||r.eventType!==`hook_created`||typeof r.correlationId!=`string`)return;let i=r.eventData?.token;if(typeof i==`string`)try{await Ln(e,i,r.runId,r.correlationId,r.eventId,Pn(t))}catch{}});let r=L.join(e,`hooks`);await Kn(await Y(r),32,async t=>{let n=null;try{n=await K(L.join(r,`${t}.json`),T)}catch(e){if(!(e instanceof SyntaxError||e instanceof E))throw e}if(n)try{await zn(e,n.runId,n.hookId,Pn(t))}catch{}}),await J(t,``)}async function Jn(e,t,n,r){await Gn(e);let i;try{i=t.kind===`token`?jn(e,t.token):Mn(e,t.hookId)}catch{return null}let a=(await Y(i)).filter(e=>Fn(e,r)).sort((e,t)=>V(t).localeCompare(V(e)));for(let t of a){let r=null;try{r=await K(L.join(i,`${t}.json`),kn)}catch(e){if(!(e instanceof SyntaxError||e instanceof E))throw e}if(!r)continue;let a=V(t),o;try{o=H(e,`events`,`${r.runId}-${a}`,Pn(t))}catch{continue}let s=await In(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function Yn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Xn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Zn(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function Qn(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function $n(e){let{token:t,metadata:n,isWebhook:r,isSystem:i}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1}}function er(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function tr(e,t,n){let r=await U(e,`runs`,t,m,n);return r?oe(r.status):!1}async function nr(e,t,n,r){let i=await Jn(e,t,e=>er(e,n),r);return!i||!er(i,n)||await tr(e,i.runId,r)||await _n(e,i.correlationId,r)?null:i}async function rr(e,t,n){let r=$n(t);return await J(L.join(e,`hooks`,`tokens`,`${hn(r.token)}.json`),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId})),await zn(e,r.runId,r.hookId,n),await J(H(e,`hooks`,r.hookId,n),JSON.stringify(r,W,2)),r}async function ir(e,t,n){let r=await nr(e,{kind:`token`,token:t},e=>Qn(e)===t,n);return r?rr(e,r,n):null}async function ar(e,t,n){let r=await nr(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?rr(e,r,n):null}function or(e,t){let n=M({hookId:x().optional()});async function r(r){let i=null;try{i=await K(wn(e,r),n)}catch(e){if(!(e instanceof SyntaxError||e instanceof E))throw e}if(i?.hookId)try{let n=await U(e,`hooks`,i.hookId,T,t);if(n&&n.token===r)return{...n,isWebhook:n.isWebhook??!0}}catch(e){if(!et.is(e))throw e}let a=L.join(e,`hooks`),o=await Y(a);for(let e of o){let t=await K(L.join(a,`${e}.json`),T);if(t&&t.token===r)return{...t,isWebhook:t.isWebhook??!0}}return null}async function i(n,r){R(`hookId`,n);let i=await U(e,`hooks`,n,T,t);if(!i){let i=await ar(e,n,t);if(!i)throw new f(n);let a=r?.resolveData||`all`;return Zn({...i,isWebhook:i.isWebhook??!0},a)}let a=r?.resolveData||`all`;return Zn({...i,isWebhook:i.isWebhook??!0},a)}async function a(n){let i=await r(n)??await ir(e,n,t);if(!i)throw new f(n);return i}async function o(t){let n=L.join(e,`hooks`),r=t.resolveData||`all`,i=await X({directory:n,schema:T,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:e=>!(t.runId&&e.runId!==t.runId),getCreatedAt:()=>null,getId:e=>e.hookId});return{...i,data:i.data.map(e=>Zn(e,r))}}return{get:i,getByToken:a,list:o}}async function sr(e,t){await Gn(e);for(let n of await Vn(e,t)){if(n.hookId){let r=null,i=null;try{i=H(e,`hooks`,n.hookId,n.tag),r=await K(i,T)}catch(e){if(!et.is(e)&&!(e instanceof SyntaxError||e instanceof E))throw e}r&&i&&r.runId===t&&(await En(e,r.token,r.runId,r.hookId),await q(Dn(e,r.token,r.runId,r.hookId)),await q(i))}await Hn(e,n.fileId)}}async function cr(e,t,n,r,i,a){if(oe(a.status)||await yn(e,t))throw new u(`Workflow run "${t}" is already in a terminal state`);let o=xn(e,t,n);await J(o,r);try{if(await yn(e,t)||await _t(o,i)!==`linked`)throw new u(`Workflow run "${t}" is already in a terminal state`)}finally{await F.unlink(o).catch(()=>{})}}async function lr(e,t,n,r,i){R(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await J(vn(e,t),``),await Sn(e,t);let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await G(z(e,`runs`,`${t}.json`),i,{overwrite:!0}),await sr(e,t),{event:void 0,run:Yn(i,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${On()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:5},c=z(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await cr(e,t,i,JSON.stringify(s,W,2),c,r):await G(c,s),{event:v(s,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const ur=new Map;function dr(e,t){let n=ur.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{ur.get(e)===r.task&&ur.delete(e)}})();return r.task=i,ur.set(e,i),i}function fr(e,t){let n=(async(n,r)=>{R(`runId`,n);let i=await U(e,`runs`,n,m,t);if(!i)throw new c(n);return Yn(i,r?.resolveData??`all`)});return{get:n,getMany:(async(e,t)=>{let r=[...new Set(e)],i=await Promise.all(r.map(async e=>{try{return await n(e,t)}catch(e){if(e instanceof c)return null;throw e}})),a=new Map(r.map((e,t)=>[e,i[t]]));return e.map(e=>a.get(e)??null)}),list:(async t=>{let n=t?.resolveData??`all`,r=await X({directory:L.join(e,`runs`),schema:m,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:$(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(n,r,i)=>(R(`runId`,n),dr(n,async()=>{let a=await U(e,`runs`,n,m,t);if(!a)throw new c(n);try{y(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof C,e}let o=ce(a.attributes,r),s={...a,attributes:o,updatedAt:new Date};return await G(H(e,`runs`,n,t),s,{overwrite:!0}),{attributes:o}}))}}function pr(){let e=process.env.WORKFLOW_MAX_EVENTS,t=e===void 0?NaN:Number(e);return Number.isInteger(t)&&t>0?t:25e3}const mr=M({hookId:x().optional(),runId:x(),eventId:x().optional()}),hr=M({eventId:x()}),gr=M({runId:x(),resumeId:x(),hookId:x(),eventId:x(),payloadDigest:x().optional()});async function _r(e){try{return await K(e,mr)}catch(e){if(e instanceof SyntaxError||e instanceof E)return null;throw e}}async function vr(e,t,n){if(t.hookId&&await _n(e,t.hookId,n))return!0;let r=await U(e,`runs`,t.runId,m,n);return!r||oe(r.status)}async function yr(e){try{return await K(e,hr)}catch(e){if(e instanceof SyntaxError||e instanceof E)return null;throw e}}async function br(e,t,n){return(await X({directory:L.join(e,`events`),schema:b,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:$(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function xr(e,t,n,r,i){let a=await U(e,`events`,`${t}-${r}`,b,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await U(e,`hooks`,n,T,i))return;let o=a.eventData??{};if(typeof o.token!=`string`)return;let s={runId:t,hookId:n,token:o.token,metadata:o.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:a.createdAt,specVersion:a.specVersion,isWebhook:o.isWebhook??!0,isSystem:o.isSystem??!1};await Ln(e,o.token,t,n,r,i),await zn(e,t,n,i),await J(H(e,`hooks`,n,i),JSON.stringify(s,W,2))}async function Sr(e,t,n,r,i){let a=Dn(e,t,n,r);return await J(a,JSON.stringify({eventId:i}))?i:(await yr(a))?.eventId??null}function Cr(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 wr(e,t){let n=L.join(e,`waits`),r=await Y(n);for(let e of r)e.startsWith(`${t}-`)&&await q(L.join(n,`${e}.json`))}async function Tr(e,t,n,r){return dr(t,async()=>{let i=await K(H(e,`runs`,t,n),m),a={...r,attributes:i?.attributes??r.attributes};return await G(H(e,`runs`,t,n),a,{overwrite:!0}),a})}function Er(e,t){let n=4*1024*1024,r=new Map,i=new Map,a=new Map,o=0;function x(e){let t=r.get(e);if(!t)return;r.delete(e),o-=i.get(e)??0,i.delete(e);let n=a.get(t.runId);n?.delete(e),n?.size===0&&a.delete(t.runId)}function C(e){for(let t of a.get(e)??[])x(t)}function w(){r.clear(),i.clear(),a.clear(),o=0}function ie(e,t,s){if(s>n)return;for(;r.size>0&&(r.size>=1e3||o+s>n);){let e=r.keys().next().value;x(e)}r.set(e,t),i.set(e,s),o+=s;let c=a.get(t.runId)??new Set;c.add(e),a.set(t.runId,c)}function E(e,t,r){if(h(e.eventType)){C(e.runId);return}let i=Buffer.byteLength(r);if(i>n)return;let a=b.safeParse(JSON.parse(r,pt));a.success&&ie(t,a.data,i)}async function ae(n){let r=H(e,`events`,`${n.runId}-${n.eventId}`,t),i=JSON.stringify(n,W,2);await mt(r,i),E(n,r,i)}let D=new Map,O=new Map;return{clearCache:w,async create(n,i,a){if(n!=null&&n!==``&&R(`runId`,n),`correlationId`in i&&typeof i.correlationId==`string`&&R(`correlationId`,i.correlationId),ue(i.eventType)&&n&&i.correlationId){let e=t?`${n}-${i.correlationId}.${t}`:`${n}-${i.correlationId}`;return Cr(D,e,()=>o())}if(S(i.eventType)&&n&&i.correlationId){let e=t?`${n}-${i.correlationId}.hook.${t}`:`${n}-${i.correlationId}.hook`;return Cr(O,e,()=>o())}return o();async function o(){let o=`evnt_${On()}`,x=new Date,S;if(i.eventType===`run_created`&&(!n||n===``))S=`wrun_${On()}`;else if(n)S=n;else throw Error(`runId is required for non-run_created events`);if(i.eventType===`run_created`&&n&&n!==``){let e=le(S,`wrun_`);if(e)throw new s(e)}let C=i.specVersion??5,w=null;if(i.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(i.eventType)&&(w=await U(e,`runs`,S,m,t),i.eventType===`run_started`&&!w&&`eventData`in i&&i.eventData)){let n=i.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){y(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:C,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},encryptionPublicKey:n.encryptionPublicKey,createdAt:x,updatedAt:x};if(await J(H(e,`runs`,S,t),JSON.stringify(r,W))){let e=`evnt_${On()}`;await ae({eventType:`run_created`,runId:S,eventId:e,createdAt:x,specVersion:C,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),w=r}else w=await U(e,`runs`,S,m,t)}}if(i.eventType===`run_failed`&&!w||i.eventType===`attr_set`&&!w)throw new c(S);if(w){if(de(w.specVersion))throw new d(w.specVersion,5);if(fe(w.specVersion))return lr(e,S,i,w,a)}let ie=ee(i),D=ie&&i.eventType===`step_started`;if(w&&oe(w.status)){if(i.eventType===`run_cancelled`&&w.status===`cancelled`){let e={...i,runId:S,eventId:o,createdAt:x,specVersion:C};return await ae(e),{event:v(e,a?.resolveData??`all`),run:w,...w?{maxEvents:pr()}:{}}}if(i.eventType===`run_started`)throw new u(`Workflow run "${S}" is already in terminal state "${w.status}"`);if(h(i.eventType))throw new p(`Cannot transition run from terminal state "${w.status}"`);if(ie)throw new p(`Cannot create new entities on run in terminal state "${w.status}"`);if(i.eventType===`attr_set`)throw new p(`Cannot set attributes on run in terminal state "${w.status}"`)}let O=null;if(ue(i.eventType)&&i.eventType!==`step_created`&&i.correlationId){if(O=await U(e,`steps`,`${S}-${i.correlationId}`,g,t),!O&&!D)throw new s(`Step "${i.correlationId}" not found`);if(D&&O)throw new p(`Step "${i.correlationId}" already created`);if(O){if(ne(O.status))throw new p(`Cannot modify step in terminal state "${O.status}"`);if(w&&oe(w.status)&&O.status!==`running`)throw new u(`Cannot modify non-running step on run in terminal state "${w.status}"`)}}if(te(i.eventType)&&i.correlationId){if(i.eventType===`hook_received`&&a?.resumeId){let n=await K(Tn(e,S,a.resumeId),gr);if(n&&n.hookId===i.correlationId&&(!a.resumePayloadDigest||!n.payloadDigest||n.payloadDigest===a.resumePayloadDigest)){let r=await U(e,`events`,`${S}-${n.eventId}`,b,t);if(r)return{event:r}}}if(i.eventType===`hook_received`&&await _n(e,i.correlationId,t)||!await U(e,`hooks`,i.correlationId,T,t))throw new f(i.correlationId);if(i.eventType===`hook_received`&&a?.resumeId){let n=Tn(e,S,a.resumeId),r=async n=>{if(n.hookId!==i.correlationId)throw new p(`hook_received resumeId "${a.resumeId}" already recorded for a different hook`);if(a.resumePayloadDigest&&n.payloadDigest&&n.payloadDigest!==a.resumePayloadDigest)throw new p(`hook_received resumeId "${a.resumeId}" already recorded with a different payload`);let r=await U(e,`events`,`${S}-${n.eventId}`,b,t);return r?{event:r}:(o=n.eventId,null)},s=await K(n,gr);if(s){let e=await r(s);if(e)return e}else if(!await J(n,JSON.stringify({runId:S,resumeId:a.resumeId,hookId:i.correlationId,eventId:o,...a.resumePayloadDigest?{payloadDigest:a.resumePayloadDigest}:{}}))){let e=await K(n,gr);if(e){let t=await r(e);if(t)return t}}}}let k={...i,runId:S,eventId:o,createdAt:x,specVersion:C,...i.eventType===`hook_received`&&a?.resumeId?{resumeId:a.resumeId}:{}};if(i.eventType===`run_started`&&`eventData`in k&&delete k.eventData,D&&k.eventType===`step_started`&&k.eventData){let{input:e,...t}=k.eventData;k={...k,eventData:t}}let A,j,M,N,pe=!1,me;if(h(i.eventType)&&w){await J(vn(e,S,t),``),await Sn(e,S,t);let n=await Cn(e,S,t);o=n.eventId,k={...k,eventId:o,createdAt:n.createdAt}}if(i.eventType===`run_created`&&`eventData`in i){let n=i.eventData;if(y(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),A={runId:S,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:C,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},encryptionPublicKey:n.encryptionPublicKey,createdAt:x,updatedAt:x},!await J(H(e,`runs`,S,t),JSON.stringify(A,W,2)))throw new p(`Workflow run "${S}" already exists`)}else if(i.eventType===`run_started`){if(w){if(w.status===`running`)return{run:w,maxEvents:pr()};A=await Tr(e,S,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:w.startedAt??x,updatedAt:x,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey})}}else if(i.eventType===`run_completed`&&`eventData`in i){let n=i.eventData;w&&(A=await Tr(e,S,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:x,updatedAt:x,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([sr(e,S),wr(e,S)]))}else if(i.eventType===`run_failed`&&`eventData`in i){let n=i.eventData;w&&(A=await Tr(e,S,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:x,updatedAt:x,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([sr(e,S),wr(e,S)]))}else if(i.eventType===`run_cancelled`)w&&(A=await Tr(e,S,t,{runId:w.runId,deploymentId:w.deploymentId,workflowName:w.workflowName,specVersion:w.specVersion,executionContext:w.executionContext,input:w.input,createdAt:w.createdAt,expiredAt:w.expiredAt,startedAt:w.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:x,updatedAt:x,attributes:w.attributes,encryptionPublicKey:w.encryptionPublicKey}),await Promise.all([sr(e,S),wr(e,S)]));else if(i.eventType===`attr_set`&&w)A=await dr(S,async()=>{let n=await K(H(e,`runs`,S,t),m);if(!n)throw new c(S);if(y(i.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:i.eventData.allowReservedAttributes===!0}),i.correlationId&&i.eventData.writer.type===`workflow`&&!await J(z(e,`.locks`,`attributes`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``))throw new p(`Attribute event "${i.correlationId}" already exists`);let r={...n,attributes:ce(n.attributes,i.eventData.changes),updatedAt:x};return await G(H(e,`runs`,S,t),r,{overwrite:!0}),r});else if(i.eventType===`step_created`&&`eventData`in i){if(!await J(z(e,`.locks`,`steps`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``))throw new p(`Step "${i.correlationId}" already created`);let n=i.eventData;j={runId:S,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:x,updatedAt:x,specVersion:C},await G(H(e,`steps`,`${S}-${i.correlationId}`,t),j)}else if(i.eventType===`step_started`){if(!O&&D){let n=i.eventData;if(await J(z(e,`.locks`,`steps`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``)){let r={runId:S,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:x,updatedAt:x,specVersion:C};await G(H(e,`steps`,`${S}-${i.correlationId}`,t),r);let a=`evnt_${On()}`,o={eventType:`step_created`,runId:S,eventId:a,createdAt:x,specVersion:C,correlationId:i.correlationId,eventData:{stepName:n.stepName,input:n.input}};await G(H(e,`events`,`${S}-${a}`,t),o),O=r,pe=!0}else throw new p(`Step "${i.correlationId}" already created`)}if(O){if(O.retryAfter&&O.retryAfter.getTime()>Date.now())throw new l(`Cannot start step "${i.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((O.retryAfter.getTime()-Date.now())/1e3)});let n=`${S}-${i.correlationId}`,r=await U(e,`steps`,n,g,t);if(r&&ne(r.status))throw new p(`Cannot modify step in terminal state "${r.status}"`);j={...O,status:`running`,startedAt:O.startedAt??x,attempt:O.attempt+1,retryAfter:void 0,updatedAt:x},await G(H(e,`steps`,n,t),j,{overwrite:!0})}}else if(i.eventType===`step_completed`&&`eventData`in i){let n=i.eventData;if(O){let r=`${S}-${i.correlationId}`;if(!await J(z(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new p(`Cannot modify step in terminal state`);j={...O,status:`completed`,output:n.result,completedAt:x,updatedAt:x},await G(H(e,`steps`,r,t),j,{overwrite:!0})}}else if(i.eventType===`step_failed`&&`eventData`in i){let n=i.eventData;if(O){let r=`${S}-${i.correlationId}`;if(!await J(z(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new p(`Cannot modify step in terminal state`);j={...O,status:`failed`,error:n.error,completedAt:x,updatedAt:x},await G(H(e,`steps`,r,t),j,{overwrite:!0})}}else if(i.eventType===`step_retrying`&&`eventData`in i){let n=i.eventData;if(O){let r=`${S}-${i.correlationId}`;j={...O,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:x},await G(H(e,`steps`,r,t),j,{overwrite:!0})}}else if(i.eventType===`hook_created`&&`eventData`in i){let n=i.eventData,r=wn(e,n.token),s=JSON.stringify({token:n.token,hookId:i.correlationId,runId:S,eventId:o}),c=!1,l=null,u=0,d=0;for(let a=0;a<10&&(await _r(r)||await ir(e,n.token,t),c=await J(r,s),!c);a++){if(l=await _r(r),!l){d++,d>=3&&await q(r);continue}if(l.runId===S&&l.hookId===i.correlationId||!await vr(e,l,t))break;u++,u<3?await new Promise(e=>setTimeout(e,10)):(await q(r),l.hookId&&(await q(H(e,`hooks`,l.hookId,t)),await q(Dn(e,n.token,l.runId,l.hookId)))),l=null}let f=!1;if(!c)if(l?.runId===S&&l.hookId===i.correlationId){let r;if(l.eventId)r=l.eventId;else{let a=await br(e,S,i.correlationId);if(a!==null)throw await xr(e,S,i.correlationId,a,t),new p(`Hook "${i.correlationId}" already created`);let s=await Sr(e,n.token,S,i.correlationId,o);if(s===null)throw new p(`Hook "${i.correlationId}" already created`);r=s}o=r;let a=se(o.replace(/^evnt_/,``))??x;k={...i,runId:S,eventId:o,createdAt:a,specVersion:C},f=!0}else{let e={eventType:`hook_conflict`,correlationId:i.correlationId,eventData:{token:n.token,...l?{conflictingRunId:l.runId}:{}},runId:S,eventId:o,createdAt:x,specVersion:C};return await ae(e),{event:v(e,a?.resolveData??`all`),run:A,step:j,hook:void 0}}M={runId:S,hookId:i.correlationId,token:n.token,metadata:n.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:k.createdAt,specVersion:C,isWebhook:n.isWebhook??!1,isSystem:n.isSystem??!1},me=f?{overwrite:!0}:void 0,await Ln(e,n.token,S,i.correlationId,o,t)}else if(i.eventType===`hook_disposed`){if(!await J(gn(e,i.correlationId,t),``))throw new p(`Hook "${i.correlationId}" already disposed`);let n=H(e,`hooks`,i.correlationId,t),r=await U(e,`hooks`,i.correlationId,T,t);r&&(await En(e,r.token,r.runId,r.hookId),await q(Dn(e,r.token,r.runId,r.hookId))),await q(n),await Bn(e,S,i.correlationId,t)}else if(i.eventType===`wait_created`&&`eventData`in i){let n=`${S}-${i.correlationId}`;if(!await J(z(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new p(`Wait "${i.correlationId}" already exists`);let r=i.eventData;N={waitId:n,runId:S,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:x,updatedAt:x,specVersion:C},await G(H(e,`waits`,n,t),N)}else if(i.eventType===`wait_completed`){let n=`${S}-${i.correlationId}`,r=z(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await J(r,``))throw new p(`Wait "${i.correlationId}" already completed`);let a=await U(e,`waits`,n,_,t);if(!a)throw await F.unlink(r).catch(()=>{}),new s(`Wait "${i.correlationId}" not found`);N={...a,status:`completed`,completedAt:x,updatedAt:x},await G(H(e,`waits`,n,t),N,{overwrite:!0})}if(i.eventType===`hook_received`&&i.correlationId&&await _n(e,i.correlationId,t))throw new f(i.correlationId);let he=H(e,`events`,`${S}-${o}`,t),P=JSON.stringify(k,W,2),ge;if(i.eventType===`hook_received`){let n=await yn(e,S,t),r=n?null:await U(e,`runs`,S,m,t);if(n||r&&oe(r.status))throw new u(`Workflow run "${S}" is already in a terminal state`);let i=xn(e,S,o,t);if(!await J(i,P))throw new p(`Event "${o}" already exists for run "${S}"`);try{if(await yn(e,S,t))throw new u(`Workflow run "${S}" is already in a terminal state`);let n=await _t(i,he);if(n===`missing`)throw new u(`Workflow run "${S}" is already in a terminal state`);ge=n===`linked`}finally{await q(i).catch(()=>{})}}else ge=await J(he,P);if(!ge)throw i.eventType===`hook_created`&&i.correlationId&&await xr(e,S,i.correlationId,o,t),new p(`Event "${o}" already exists for run "${S}"`);E(k,he,P),M&&i.eventType===`hook_created`&&(await zn(e,M.runId,M.hookId,t),await G(H(e,`hooks`,M.hookId,t),M,me));let _e=a?.resolveData??`all`,ve=v(k,_e),I,ye,be;if(i.eventType===`run_started`&&A){let t=await X({directory:L.join(e,`events`),schema:b,cachedItems:r,filePrefix:`${S}-`,sortOrder:`asc`,limit:1e3,getCreatedAt:$(`evnt`),getId:e=>e.eventId});I=t.data,ye=t.cursor,be=t.hasMore}if(re(i.eventType)&&typeof a?.sinceCursor==`string`){let t=await X({directory:L.join(e,`events`),schema:b,filePrefix:`${S}-`,sortOrder:`asc`,cursor:a.sinceCursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});I=_e===`none`?t.data.map(e=>v(e,_e)):t.data,ye=t.cursor,be=t.hasMore}return{event:ve,run:A,step:j,hook:M,wait:N,events:I,cursor:ye,hasMore:be,...pe?{stepCreated:!0}:{},...A?{maxEvents:pr()}:{}}}},async get(n,r,i){R(`runId`,n),R(`eventId`,r);let a=await U(e,`events`,`${n}-${r}`,b,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return v(a,i?.resolveData??`all`)},async list(t){let{runId:n}=t;R(`runId`,n);let i=t.resolveData??`all`,a=await X({directory:L.join(e,`events`),schema:b,cachedItems:r,filePrefix:`${n}-`,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>v(e,i))}:a},async listByCorrelationId(t){let n=t.correlationId;R(`correlationId`,n);let i=t.resolveData??`all`,a=await X({directory:L.join(e,`events`),schema:b,cachedItems:r,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>v(e,i))}:a}}}function Dr(e,t){return{get:(async(n,r,i)=>{R(`runId`,n),R(`stepId`,r);let a=await U(e,`steps`,`${n}-${r}`,g,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return Xn(a,i?.resolveData??`all`)}),list:(async t=>{R(`runId`,t.runId);let n=t.resolveData??`all`,r=await X({directory:L.join(e,`steps`),schema:g,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function Or(e,t){let n=fr(e,t),r=Dr(e,t),i=Er(e,t),a=or(e,t);return{runs:nn(`world.runs`,n),steps:nn(`world.steps`,r),events:nn(`world.events`,i),hooks:nn(`world.hooks`,a),clearCache:()=>i.clearCache()}}const kr=D(()=>Math.random()),Ar=M({streams:j(x())});function jr(e){return e===1}function Mr(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function Nr(e){return jr(e[0])}function Pr(e){return{eof:Nr(e),chunk:Buffer.from(e.subarray(1))}}async function Fr(e){try{return await F.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function Ir(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 Lr(e,t){return R(`streamName`,t),L.join(e,t)}async function Rr(e,t,n){let r=Lr(e,t),i=await Fr(r),a=new Map;return Ir(a,i,`.json`),Ir(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&Ir(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function zr(e,t){let n=t?`.${t}`:``,r=new De,i=new Set;async function a(n,r){R(`runId`,n),R(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=H(e,`streams/runs`,n,t),s=(await U(e,`streams/runs`,n,Ar,t))?.streams??[];s.includes(r)||(s.push(r),await G(o,{streams:s},{overwrite:!0})),i.add(a)}function o(e){return typeof e==`string`?Buffer.from(new TextEncoder().encode(e)):e instanceof Buffer?e:Buffer.from(e)}return{streams:{async write(t,i,s){let c=`chnk_${kr()}`;await a(await t,i);let l=o(s),u=Mr({chunk:l,eof:!1});await mt(L.join(Lr(L.join(e,`streams`,`chunks`),i),`${c}${n}.bin`),u);let d=Uint8Array.from(l);r.emit(`chunk:${i}`,{streamName:i,chunkData:d,chunkId:c})},async writeMulti(t,i,s){if(s.length===0)return;let c=s.map(()=>`chnk_${kr()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=Mr({chunk:t,eof:!1});return await mt(L.join(Lr(L.join(e,`streams`,`chunks`),i),`${a}${n}.bin`),o),{chunkId:a,chunkData:Uint8Array.from(t)}});for(let e of l){let{chunkId:t,chunkData:n}=await e;r.emit(`chunk:${i}`,{streamName:i,chunkData:n,chunkId:t})}},async close(t,i){let o=`chnk_${kr()}`;await a(await t,i),await mt(L.join(Lr(L.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),Mr({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return R(`runId`,n),(await U(e,`streams/runs`,n,Ar,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await Rr(L.join(e,`streams`,`chunks`),r,t),l=0;if(i?.cursor)try{l=JSON.parse(Buffer.from(i.cursor,`base64`).toString(`utf-8`)).i}catch{l=0}let u=!1,d=[],f=0;for(let e of o){let t=s.get(e)??`.bin`,n=L.join(c,`${e}${t}`);if(f<l){if(jr(await gt(n))){u=!0;break}f++;continue}if(d.length>=a){jr(await gt(n))?u=!0:f++;break}let r=Pr(await ht(n));if(r.eof){u=!0;break}d.push({index:f,data:Uint8Array.from(r.chunk)}),f++}let p=!u&&f>l+d.length,m=l+d.length;return{data:d,cursor:p?Buffer.from(JSON.stringify({i:m})).toString(`base64`):null,hasMore:p,done:u}},async getInfo(n,r){let{files:i,extMap:a,dir:o}=await Rr(L.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(jr(await gt(L.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=L.join(e,`streams`,`chunks`),s=()=>{},c=null,l=!1;return new ReadableStream({async start(e){let n=new Set,u=[],d=!0,f=!1,p=t=>{if(t.chunkData.byteLength===0){n.add(t.chunkId);return}d?(n.add(t.chunkId),u.push({chunkId:t.chunkId,chunkData:Uint8Array.from(t.chunkData)})):n.has(t.chunkId)||(n.add(t.chunkId),e.enqueue(Uint8Array.from(t.chunkData)))},m=()=>{if(d){f=!0;return}l=!0,s();try{e.close()}catch{}};s=()=>{r.off(`chunk:${i}`,p),r.off(`close:${i}`,m),c&&=(clearInterval(c),null)},r.on(`chunk:${i}`,p),r.on(`close:${i}`,m);let{files:h,extMap:g,dir:_}=await Rr(o,i,t),v=h.length;if(typeof a==`number`&&a<0&&h.length>0){let e=h[h.length-1],t=g.get(e)??`.bin`;jr(await gt(L.join(_,`${e}${t}`)))&&v--}let ee=typeof a==`number`&&a<0?Math.max(0,v+a):a,y=!1;for(let t=ee;t<h.length;t++){let r=h[t],i=r;if(n.has(i))continue;let a=g.get(r)??`.bin`,o=Pr(await ht(L.join(_,`${r}${a}`)));if(o?.eof===!0){y=!0;break}n.add(i),o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}d=!1,u.sort((e,t)=>e.chunkId.localeCompare(t.chunkId));for(let t of u)e.enqueue(Uint8Array.from(t.chunkData));if(y){l=!0,s();try{e.close()}catch{}return}if(f){l=!0,s();try{e.close()}catch{}return}for(let e=0;e<ee&&e<h.length;e++)n.add(h[e]);if(l){s();return}let te=!1;c=setInterval(async()=>{if(!te){te=!0;try{let{files:r,extMap:a}=await Rr(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=Pr(await ht(L.join(_,`${t}${i}`)));if(o?.eof===!0){l=!0,s();try{e.close()}catch{}return}if(l)return;o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}}catch(e){e instanceof Error&&`code`in e||console.error(`[world-local] Unexpected polling error:`,e)}finally{te=!1}}},100)},cancel(){l=!0,s()}})}}}}function Br(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Je.value,...t};Me(n.dataDir);let r=n.tag,i=mn(n),{clearCache:a,...o}=Or(n.dataDir,r),s=Ye(n);return{specVersion:5,capabilities:{hookResumeDedup:!0},...i,...o,...nn(`world.streams`,{...zr(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Pt(n.dataDir),!s)return;let e=r?e=>ot(e,r):st;await k({...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))},i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=L.join(e,`hooks`),i=await ct(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-D5bR13zs.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await K(L.join(t,n),a);r?.token&&(await q(L.join(t,`tokens`,`${hn(r.token)}.json`)),await q(Dn(e,r.token,r.runId,r.hookId)))})),await Promise.all([`runs`,`steps`,`events`,`hooks`,`hooks/by-run`,`waits`,`streams/runs`].map(async t=>{let n=L.join(e,t),i=await ct(n,r);await Promise.all(i.map(e=>q(L.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=L.join(e,`hooks`,t),i;try{i=await P.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=L.join(n,e.name),i=await ct(t,r);await Promise.all(i.map(e=>q(L.join(t,e))))}))}await P.rm(L.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=L.join(e,`streams`,`chunks`),s;try{s=await P.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=L.join(o,e.name),n=await lt(t,r,`.bin`);await Promise.all(n.map(e=>P.unlink(L.join(t,e)).catch(()=>{})))})),it()}else it(),Wn(),await xe(n.dataDir,{recursive:!0,force:!0}),await Pt(n.dataDir)}}}export{wt as DataDirAccessError,Tt as DataDirVersionError,Oe as UnwritableDataDirError,Br as createWorld,At as ensureDataDir,Pt as initDataDir,Et as parseVersion};
1
+ import{i as e,o as t,t as n}from"../../_chunks/workflow/rolldown-runtime-DaDcL9Zw.js";import{E as r,O as i,_ as a,d as o,f as s,o as c,r as l}from"../../_chunks/workflow/dist-CRTn4Sg8.js";import"../../_chunks/workflow/dist-tJoQXAF6.js";import{i as u,n as d,r as f,t as p}from"../../_chunks/workflow/workflow-routes-CwqB063q.js";import{A as m,B as h,En as g,F as _,G as v,H as y,I as b,J as x,K as S,Lr as C,O as ee,P as w,Q as te,U as ne,V as re,W as ie,Z as ae,_ as oe,a as T,b as se,c as E,et as D,f as O,gi as k,h as A,k as ce,n as le,p as j,r as ue,tt as M,wr as N}from"../../_chunks/workflow/dist-CNXUKQCp.js";import{n as de,t as fe}from"../../_chunks/workflow/spec-version-C0hBsfu-.js";import{t as pe}from"../../_chunks/workflow/undici-CUIybhQ2.js";import{t as me}from"../../_chunks/workflow/signal-exit-C8vsI6zj.js";import{createHash as P}from"node:crypto";import{promisify as he}from"node:util";import{fileURLToPath as ge}from"node:url";import{promises as F}from"node:fs";import I,{access as _e,constants as ve,mkdir as ye,readFile as be,readdir as xe,readlink as Se,rm as Ce,unlink as we,writeFile as Te}from"node:fs/promises";import L from"node:path";import{tmpdir as Ee}from"node:os";import{execFile as De}from"node:child_process";import{setTimeout as Oe}from"node:timers/promises";import ke from"node:assert";import{EventEmitter as Ae}from"node:events";var je=class extends i{dataDir;constructor(e,t){super(`[workflow] The local (filesystem) world cannot create its data directory "${e}" (${t}). Workflow runs cannot be stored, so every run will fail before its first step. If this is a Vercel deployment, its filesystem is read-only and the local world cannot work there. The world is selected from the environment when the process starts: the Vercel world is used when VERCEL_DEPLOYMENT_ID is set, unless WORKFLOW_TARGET_WORLD says otherwise. Unset WORKFLOW_TARGET_WORLD in this deployment, or set WORKFLOW_TARGET_WORLD=vercel, to use the Vercel world. Otherwise point WORKFLOW_LOCAL_DATA_DIR at a writable directory.`,{code:t}),this.name=`UnwritableDataDirError`,this.dataDir=e}static is(e){return e instanceof Error&&e.name===`UnwritableDataDirError`}};const Me=new Set([`EROFS`,`EACCES`,`EPERM`]);function Ne(e){return e!==void 0&&Me.has(e)}let Pe=!1;function Fe(e){if(Pe||!process.env.VERCEL_DEPLOYMENT_ID)return;let t=L.resolve(e),n=Ee();t===n||t.startsWith(`${n}${L.sep}`)||(Pe=!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 Ie(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function Le(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=Ie(i.slice(s+1));c!==void 0&&n.push(c)}return n}const Re=he(De);function ze(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const Be=((e,t)=>e.join(t))([``,`proc`],`/`);async function Ve(e){let t=[`${Be}/net/tcp`,`${Be}/net/tcp6`],n=[],r=new Set,i=`${Be}/${e}/fd`;try{let e=(await xe(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await Se(`${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 be(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=ze(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 He(e){try{let{stdout:t}=await Re(`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=ze(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Ue(e){try{let{stdout:t}=await Re(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Le(t,e)}catch{return[]}}async function We(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Ve(e);case`darwin`:return await He(e);case`win32`:return await Ue(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const Ge=`${p}/flow?__health`;async function Ke(e,t={}){let{endpoint:n=Ge,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 qe(e){let t=await We();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 Ke(t,e)})))).find(e=>e.isWorkflow);return n?n.port:(process.env.NODE_ENV===`development`&&console.debug(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function Je(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Ye=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,Xe=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Ze=Je(()=>({dataDir:Ye(),baseUrl:Xe()}));function Qe(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 $e(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??d(`http://localhost`)}async function et(e){if(e.baseUrl)return e.baseUrl;if(process.env.WORKFLOW_LOCAL_BASE_URL)return process.env.WORKFLOW_LOCAL_BASE_URL;if(typeof e.port==`number`)return d(`http://localhost:${e.port}`);if(process.env.PORT)return d(`http://localhost:${process.env.PORT}`);let t=await qe({endpoint:f()});if(t)return d(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const tt=E(()=>Math.random());function nt(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var rt=class extends i{constructor(e,t){super(`Unsafe ${e} "${nt(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function R(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new rt(e,t)}function z(e,...t){let n=L.resolve(e),r=L.resolve(e,...t);if(r!==n&&!r.startsWith(n+L.sep))throw new rt(`path`,t.join(`/`));return r}const it=process.platform===`win32`;async function B(e,t=5){if(!it)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}const at=new Set,ot=new Set;function st(){at.clear(),ot.clear()}const ct=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function V(e){return e.replace(ct,``)}function lt(e,t){return e.endsWith(`.${t}`)}function ut(e){return!ct.test(e)}function H(e,t,n,r){return R(`fileId`,n),r!==void 0&&R(`tag`,r),z(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function U(e,t,n,r,i){if(R(`fileId`,n),i!==void 0&&R(`tag`,i),i){let a=await K(z(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return K(z(e,t,`${n}.json`),r)}async function dt(e,t){let n=`.${t}.json`;try{return(await F.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function ft(e,t,n){let r=`.${t}${n}`;try{return(await F.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function pt(e){let t=L.resolve(e);if(!ot.has(t))try{await F.mkdir(t,{recursive:!0}),ot.add(t)}catch(e){let n=e.code;if(Ne(n)&&!await mt(t))throw new je(t,n)}}async function mt(e){try{return(await F.stat(e)).isDirectory()}catch{return!1}}async function ht(e,t){await pt(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return ot.delete(L.resolve(e)),await pt(e),t()}}function W(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function gt(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function G(e,t,n){return _t(e,JSON.stringify(t,W,2),n)}async function _t(e,t,n){if(!n?.overwrite){if(at.has(e))throw new l(`File ${e} already exists and 'overwrite' is false`);try{throw await F.access(e),at.add(e),new l(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${tt()}`,i=!1;try{await ht(L.dirname(e),async()=>{await F.writeFile(r,t),i=!0,await B(()=>F.rename(r,e))}),at.add(e)}catch(e){throw i&&await B(()=>F.unlink(r),3).catch(()=>{}),e}}async function K(e,t){try{let n=await F.readFile(e,`utf-8`);return t.parse(JSON.parse(n,gt))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function vt(e){return await F.readFile(e)}async function yt(e){let t=await F.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function q(e){try{await B(()=>F.unlink(e))}catch(e){if(e.code!==`ENOENT`)throw e}}async function J(e,t){let n=`${e}.tmp.${tt()}`,r=!1;try{return await ht(L.dirname(e),async()=>{await F.writeFile(n,t,{flag:`wx`}),r=!0;try{return await B(()=>F.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await B(()=>F.unlink(n),3).catch(()=>{})}}async function bt(e,t){try{return await ht(L.dirname(t),()=>B(()=>F.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function Y(e){return xt(e,`.json`)}async function xt(e,t){try{return(await F.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}function St(e){if(!e)return null;let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null}}function Ct(e,t){return t?`${e.toISOString()}|${t}`:e.toISOString()}async function X(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d}=e;i!==void 0&&R(`filePrefix`,i);let f=L.resolve(t),p=await Y(f),m=i?p.filter(e=>e.startsWith(i)):p,h=a?m.filter(a):m,g=St(l),_=h;g&&(_=h.filter(e=>{let t=u(`${e}.json`);if(t){let e=g.timestamp.getTime(),n=t.getTime();return g.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let v=[];for(let e=0;e<_.length;e+=32){let t=_.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=L.join(f,`${e}.json`),i;try{let e=r?.get(t);i=e===void 0?await K(t,n):structuredClone(e)}catch(t){if(t instanceof k)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}return i&&o&&!await o(i)?null:i}));for(let e of i)if(e){if(g){let t=e.createdAt.getTime(),n=g.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&g.id&&d&&d(e)>=g.id)continue}else if(t<n||t===n&&g.id&&d&&d(e)<=g.id)continue}v.push(e)}}v.sort((e,t)=>{let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let y=v.length>c,b=y?v.slice(0,c):v;return{data:b,cursor:b.length>0?Ct(b[b.length-1].createdAt,d?.(b[b.length-1])):null,hasMore:y}}let Z=null;function wt(){return typeof import.meta.url==`string`&&import.meta.url?L.dirname(ge(import.meta.url)):null}async function Tt(){if(Z)return Z;let e=wt();if(e)try{let t=await be(L.join(e,`../package.json`),`utf-8`);return Z=JSON.parse(t),Z}catch{}return Z={name:`@workflow/world-local`,version:`5.0.0-beta.34`},Z}const Et=`version.txt`;var Dt=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},Ot=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 kt(e){let t=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);if(!t)throw Error(`Invalid version string: "${e}"`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4],raw:e}}function Q(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function At(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:kt(t.substring(n+1))}}function jt(e,t){return`${e}@${Q(t)}`}function Mt(e,t){console.log(`[world-local] Upgrading from version ${Q(e)} to ${Q(t)}`)}async function Nt(e){let t=L.resolve(e);try{await ye(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new Dt(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await _e(t,ve.R_OK)}catch(e){let n=e;throw new Dt(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=L.join(t,`.workflow-write-test-${Date.now()}`);try{await Te(n,``),await we(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new Dt(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Pt(e){let t=L.join(L.resolve(e),Et);try{return At(await be(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Ft(e,t){await Te(L.join(L.resolve(e),Et),jt((await Tt()).name,t))}function It(e,t){return t||Q(e)}async function Lt(e){await Nt(e);let t=await Tt(),n=kt(t.version),r=await Pt(e);if(r===null){await Ft(e,n);return}let{version:i}=r;if(Q(i)!==Q(n))try{Mt(i,n),await Ft(e,n)}catch(e){let r=It(i,e instanceof Ot?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Q(i)} to ${Q(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let Rt=null;async function zt(){return Rt||=import(`../../_chunks/workflow/src-Cj3P1ChQ.js`).then(e=>t(e.t(),1)).catch(()=>null),Rt}let Bt=null;async function Vt(){return Bt||=zt().then(e=>e?e.trace.getTracer(`workflow`):null),Bt}async function Ht(e,...t){let[n,r]=await Promise.all([Vt(),zt()]),{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 Ut(e){let t=await zt();if(t)return t.SpanKind[e]}function Wt(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Gt=Wt(`peer.service`),Kt=Wt(`rpc.system`),qt=Wt(`rpc.service`),Jt=Wt(`rpc.method`),Yt=Wt(`workflow.run.id`),Xt=Wt(`step.id`),Zt={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},Qt={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},$t=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function en(e){if(e.length>=2&&typeof e[1]==`object`&&e[1]!==null){let t=e[1];if(typeof t.eventType==`string`)return t.eventType}}function tn(e,t){return typeof e[t]==`string`?e[t]:void 0}function nn(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function rn(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.runId==`string`)return t.runId;for(let e of[`run`,`step`,`hook`,`wait`]){let n=t[e];if(typeof n==`object`&&n){let e=n.runId;if(typeof e==`string`)return e}}}function an(e,t,n){let r=`${e}.${t}`,i={},a=Qt[r],o=a===void 0?$t.has(r)?nn(n[0]):void 0:tn(n,a);if(o&&Object.assign(i,Yt(o)),r===`world.steps.get`){let e=tn(n,1);e&&Object.assign(i,Xt(e))}return i}function on(e,t){let n={};for(let r of Object.keys(t))if(typeof t[r]!=`function`)n[r]=t[r];else{let i=t[r],a=String(r);n[r]=async(...t)=>{let n=`${e}.${a}`;if(e===`world.events`&&a===`create`){let r=en(t);r&&(n=`${e}.${a} ${r}`)}return Ht(n,{kind:await Ut(`INTERNAL`)},async r=>{r?.setAttributes({...Gt(Zt.peerService),...Kt(Zt.rpcSystem),...qt(Zt.rpcService),...Jt(n),...an(e,a,t)});let o=await i(...t),s=rn(o);return s&&r?.setAttributes(Yt(s)),o})}}return n}var sn=n((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimit=t.Sema=void 0;let r=n(e(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};t.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}t.RateLimit=f}))(),cn=pe(),ln=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,W))}async deserialize(e){let t=[],n=e.getReader();for(;;){let{done:e,value:r}=await n.read();if(e)break;r&&t.push(r)}let r=Buffer.concat(t).toString();return JSON.parse(r,gt)}};const un=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,dn=2147483647,fn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3;function pn(e,t){let n=process.env[e];if(n===void 0||n===``)return t;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>=0?r:t}function mn(){return{bodyTimeout:pn(`WORKFLOW_LOCAL_BODY_TIMEOUT_MS`,3e4),connections:1e3,headersTimeout:pn(`WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`,3e4),keepAliveTimeout:3e4}}const hn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function gn(e){let t=e,n=new Set;for(;t&&typeof t==`object`&&!n.has(t);){if(n.add(t),`message`in t&&typeof t.message==`string`&&t.message.includes(hn))return!0;t=`cause`in t?t.cause:void 0}return!1}function _n(e){let t=new cn.Agent(mn()),n=new ln,r=E(),i=new sn.Sema(fn),a=new AbortController,o=a.signal,s=new Map,c=new Map,l=async(a,l,d)=>{let f=[];if(d?.idempotencyKey){let e=s.get(d.idempotencyKey);if(e)return{messageId:e}}let p=n.serialize(l),{prefix:m}=se(a),h=A.parse(`msg_${r()}`),g=l,_=g.runId??void 0,v=g.stepId??void 0;if(d?.idempotencyKey){let e=d.idempotencyKey;s.set(e,h),f.push(()=>{s.delete(e)})}return(async()=>{d?.delaySeconds&&d.delaySeconds>0&&await Oe(Math.min(d.delaySeconds*1e3,dn),void 0,{signal:o}),i.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${fn}) reached, waiting for queue to free up`),await i.acquire());let n=0;try{for(let r=0;r<256;r++){let i={...d?.headers,"content-type":`application/json`,"x-vqs-queue-name":a,"x-vqs-message-id":h,"x-vqs-message-attempt":String(n+1)},s=c.get(m),l,f;try{if(s)l=await s(new Request(u($e(e),{type:`flow`}),{method:`POST`,headers:i,body:p}));else{let n=await et(e);l=await fetch(u(n,{type:`flow`}),{method:`POST`,duplex:`half`,dispatcher:t,headers:i,body:p})}n++,f=await l.text()}catch(e){let t=e?.name;if(o.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(gn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${r+1}), retrying`,{queueName:a,messageId:h,..._&&{runId:_},...v&&{stepId:v},error:String(e)}),await Oe(5e3,void 0,{signal:o});continue}if(l.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await Oe(Math.min(e*1e3,dn),void 0,{signal:o});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${n}, HTTP ${l.status})`,{queueName:a,messageId:h,..._&&{runId:_},...v&&{stepId:v},handlerError:f}),await Oe(5e3,void 0,{signal:o})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:a,messageId:h,..._&&{runId:_},...v&&{stepId:v}})}finally{i.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(gn(e)?console.error(`[local world] Queue operation failed: detected "${hn}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler`,{queueName:a,messageId:h,..._&&{runId:_},...v&&{stepId:v},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of f)e()}),{messageId:h}},d=N({"x-vqs-queue-name":oe,"x-vqs-message-id":A,"x-vqs-message-attempt":M()});return{queue:l,createQueueHandler:(e,t)=>async n=>{let r=d.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new ln().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a}),n=null;return typeof e?.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,un)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await Tt()).version}`,registerHandler(e,t){c.set(e,t)},async close(){o.aborted||(a.abort(),await t.close())}}}var vn=n(((t,n)=>{var r=e(`constants`),i=process.cwd,a=null,o=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return a||=i.call(process),a};try{process.cwd()}catch{}if(typeof process.chdir==`function`){var s=process.chdir;process.chdir=function(e){a=null,s.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,s)}n.exports=c;function c(e){r.hasOwnProperty(`O_SYMLINK`)&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||n(e),e.chown=s(e.chown),e.fchown=s(e.fchown),e.lchown=s(e.lchown),e.chmod=i(e.chmod),e.fchmod=i(e.fchmod),e.lchmod=i(e.lchmod),e.chownSync=c(e.chownSync),e.fchownSync=c(e.fchownSync),e.lchownSync=c(e.lchownSync),e.chmodSync=a(e.chmodSync),e.fchmodSync=a(e.fchmodSync),e.lchmodSync=a(e.lchmodSync),e.stat=l(e.stat),e.fstat=l(e.fstat),e.lstat=l(e.lstat),e.statSync=u(e.statSync),e.fstatSync=u(e.fstatSync),e.lstatSync=u(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){}),o===`win32`&&(e.rename=typeof e.rename==`function`?(function(t){function n(n,r,i){var a=Date.now(),o=0;t(n,r,function s(c){if(c&&(c.code===`EACCES`||c.code===`EPERM`||c.code===`EBUSY`)&&Date.now()-a<6e4){setTimeout(function(){e.stat(r,function(e,a){e&&e.code===`ENOENT`?t(n,r,s):i(c)})},o),o<100&&(o+=10);return}i&&i(c)})}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.rename):e.rename),e.read=typeof e.read==`function`?(function(t){function n(n,r,i,a,o,s){var c;if(s&&typeof s==`function`){var l=0;c=function(u,d,f){if(u&&u.code===`EAGAIN`&&l<10)return l++,t.call(e,n,r,i,a,o,c);s.apply(this,arguments)}}return t.call(e,n,r,i,a,o,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.read):e.read,e.readSync=typeof e.readSync==`function`?(function(t){return function(n,r,i,a,o){for(var s=0;;)try{return t.call(e,n,r,i,a,o)}catch(e){if(e.code===`EAGAIN`&&s<10){s++;continue}throw e}}})(e.readSync):e.readSync;function t(e){e.lchmod=function(t,n,i){e.open(t,r.O_WRONLY|r.O_SYMLINK,n,function(t,r){if(t){i&&i(t);return}e.fchmod(r,n,function(t){e.close(r,function(e){i&&i(t||e)})})})},e.lchmodSync=function(t,n){var i=e.openSync(t,r.O_WRONLY|r.O_SYMLINK,n),a=!0,o;try{o=e.fchmodSync(i,n),a=!1}finally{if(a)try{e.closeSync(i)}catch{}else e.closeSync(i)}return o}}function n(e){r.hasOwnProperty(`O_SYMLINK`)&&e.futimes?(e.lutimes=function(t,n,i,a){e.open(t,r.O_SYMLINK,function(t,r){if(t){a&&a(t);return}e.futimes(r,n,i,function(t){e.close(r,function(e){a&&a(t||e)})})})},e.lutimesSync=function(t,n,i){var a=e.openSync(t,r.O_SYMLINK),o,s=!0;try{o=e.futimesSync(a,n,i),s=!1}finally{if(s)try{e.closeSync(a)}catch{}else e.closeSync(a)}return o}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}function i(t){return t&&function(n,r,i){return t.call(e,n,r,function(e){d(e)&&(e=null),i&&i.apply(this,arguments)})}}function a(t){return t&&function(n,r){try{return t.call(e,n,r)}catch(e){if(!d(e))throw e}}}function s(t){return t&&function(n,r,i,a){return t.call(e,n,r,i,function(e){d(e)&&(e=null),a&&a.apply(this,arguments)})}}function c(t){return t&&function(n,r,i){try{return t.call(e,n,r,i)}catch(e){if(!d(e))throw e}}}function l(t){return t&&function(n,r,i){typeof r==`function`&&(i=r,r=null);function a(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),i&&i.apply(this,arguments)}return r?t.call(e,n,r,a):t.call(e,n,a)}}function u(t){return t&&function(n,r){var i=r?t.call(e,n,r):t.call(e,n);return i&&(i.uid<0&&(i.uid+=4294967296),i.gid<0&&(i.gid+=4294967296)),i}}function d(e){return!e||e.code===`ENOSYS`||(!process.getuid||process.getuid()!==0)&&(e.code===`EINVAL`||e.code===`EPERM`)}}})),yn=n(((t,n)=>{var r=e(`stream`).Stream;n.exports=i;function i(e){return{ReadStream:t,WriteStream:n};function t(n,i){if(!(this instanceof t))return new t(n,i);r.call(this);var a=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags=`r`,this.mode=438,this.bufferSize=64*1024,i||={};for(var o=Object.keys(i),s=0,c=o.length;s<c;s++){var l=o[s];this[l]=i[l]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!=`number`)throw TypeError(`start must be a Number`);if(this.end===void 0)this.end=1/0;else if(typeof this.end!=`number`)throw TypeError(`end must be a Number`);if(this.start>this.end)throw Error(`start must be <= end`);this.pos=this.start}if(this.fd!==null){process.nextTick(function(){a._read()});return}e.open(this.path,this.flags,this.mode,function(e,t){if(e){a.emit(`error`,e),a.readable=!1;return}a.fd=t,a.emit(`open`,t),a._read()})}function n(t,i){if(!(this instanceof n))return new n(t,i);r.call(this),this.path=t,this.fd=null,this.writable=!0,this.flags=`w`,this.encoding=`binary`,this.mode=438,this.bytesWritten=0,i||={};for(var a=Object.keys(i),o=0,s=a.length;o<s;o++){var c=a[o];this[c]=i[c]}if(this.start!==void 0){if(typeof this.start!=`number`)throw TypeError(`start must be a Number`);if(this.start<0)throw Error(`start must be >= zero`);this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=e.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}})),bn=n(((e,t)=>{t.exports=r;var n=Object.getPrototypeOf||function(e){return e.__proto__};function r(e){if(typeof e!=`object`||!e)return e;if(e instanceof Object)var t={__proto__:n(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}),t}})),xn=n(((t,n)=>{var r=e(`fs`),i=vn(),a=yn(),o=bn(),s=e(`util`),c,l;typeof Symbol==`function`&&typeof Symbol.for==`function`?(c=Symbol.for(`graceful-fs.queue`),l=Symbol.for(`graceful-fs.previous`)):(c=`___graceful-fs.queue`,l=`___graceful-fs.previous`);function u(){}function d(e,t){Object.defineProperty(e,c,{get:function(){return t}})}var f=u;s.debuglog?f=s.debuglog(`gfs4`):/\bgfs4\b/i.test(process.env.NODE_DEBUG||``)&&(f=function(){var e=s.format.apply(s,arguments);e=`GFS4: `+e.split(/\n/).join(`
5
+ GFS4: `),console.error(e)}),r[c]||(d(r,global[c]||[]),r.close=(function(e){function t(t,n){return e.call(r,t,function(e){e||g(),typeof n==`function`&&n.apply(this,arguments)})}return Object.defineProperty(t,l,{value:e}),t})(r.close),r.closeSync=(function(e){function t(t){e.apply(r,arguments),g()}return Object.defineProperty(t,l,{value:e}),t})(r.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||``)&&process.on(`exit`,function(){f(r[c]),e(`assert`).equal(r[c].length,0)})),global[c]||d(global,r[c]),n.exports=p(o(r)),process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!r.__patched&&(n.exports=p(r),r.__patched=!0);function p(e){i(e),e.gracefulify=p,e.createReadStream=w,e.createWriteStream=te;var t=e.readFile;e.readFile=n;function n(e,n,r){return typeof n==`function`&&(r=n,n=null),i(e,n,r);function i(e,n,r,a){return t(e,n,function(t){t&&(t.code===`EMFILE`||t.code===`ENFILE`)?m([i,[e,n,r],t,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var r=e.writeFile;e.writeFile=o;function o(e,t,n,i){return typeof n==`function`&&(i=n,n=null),a(e,t,n,i);function a(e,t,n,i,o){return r(e,t,n,function(r){r&&(r.code===`EMFILE`||r.code===`ENFILE`)?m([a,[e,t,n,i],r,o||Date.now(),Date.now()]):typeof i==`function`&&i.apply(this,arguments)})}}var s=e.appendFile;s&&(e.appendFile=c);function c(e,t,n,r){return typeof n==`function`&&(r=n,n=null),i(e,t,n,r);function i(e,t,n,r,a){return s(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var l=e.copyFile;l&&(e.copyFile=u);function u(e,t,n,r){return typeof n==`function`&&(r=n,n=0),i(e,t,n,r);function i(e,t,n,r,a){return l(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var d=e.readdir;e.readdir=h;var f=/^v[0-5]\./;function h(e,t,n){typeof t==`function`&&(n=t,t=null);var r=f.test(process.version)?function(e,t,n,r){return d(e,i(e,t,n,r))}:function(e,t,n,r){return d(e,t,i(e,t,n,r))};return r(e,t,n);function i(e,t,n,i){return function(a,o){a&&(a.code===`EMFILE`||a.code===`ENFILE`)?m([r,[e,t,n],a,i||Date.now(),Date.now()]):(o&&o.sort&&o.sort(),typeof n==`function`&&n.call(this,a,o))}}}if(process.version.substr(0,4)===`v0.8`){var g=a(e);x=g.ReadStream,C=g.WriteStream}var _=e.ReadStream;_&&(x.prototype=Object.create(_.prototype),x.prototype.open=S);var v=e.WriteStream;v&&(C.prototype=Object.create(v.prototype),C.prototype.open=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;re(e.path,e.flags,e.mode,function(t,n){t?(e.autoClose&&e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n),e.read())})}function C(e,t){return this instanceof C?(v.apply(this,arguments),this):C.apply(Object.create(C.prototype),arguments)}function ee(){var e=this;re(e.path,e.flags,e.mode,function(t,n){t?(e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n))})}function w(t,n){return new e.ReadStream(t,n)}function te(t,n){return new e.WriteStream(t,n)}var ne=e.open;e.open=re;function re(e,t,n,r){return typeof n==`function`&&(r=n,n=null),i(e,t,n,r);function i(e,t,n,r,a){return ne(e,t,n,function(o,s){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}return e}function m(e){f(`ENQUEUE`,e[0].name,e[1]),r[c].push(e),_()}var h;function g(){for(var e=Date.now(),t=0;t<r[c].length;++t)r[c][t].length>2&&(r[c][t][3]=e,r[c][t][4]=e);_()}function _(){if(clearTimeout(h),h=void 0,r[c].length!==0){var e=r[c].shift(),t=e[0],n=e[1],i=e[2],a=e[3],o=e[4];if(a===void 0)f(`RETRY`,t.name,n),t.apply(null,n);else if(Date.now()-a>=6e4){f(`TIMEOUT`,t.name,n);var s=n.pop();typeof s==`function`&&s.call(null,i)}else{var l=Date.now()-o,u=Math.max(o-a,1);l>=Math.min(u*1.2,100)?(f(`RETRY`,t.name,n),t.apply(null,n.concat([a]))):r[c].push(e)}h===void 0&&(h=setTimeout(_,0))}}})),Sn=n(((e,t)=>{function n(e,t){typeof t==`boolean`&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}t.exports=n,n.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},n.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},n.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error(`RetryOperation timeout occurred`)),!1;this._errors.push(e);var n=this._timeouts.shift();if(n===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),n=this._timeouts.shift();else return!1;var r=this,i=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},n);return this._options.unref&&i.unref(),!0},n.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){n._operationTimeoutCb()},n._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},n.prototype.try=function(e){console.log(`Using RetryOperation.try() is deprecated`),this.attempt(e)},n.prototype.start=function(e){console.log(`Using RetryOperation.start() is deprecated`),this.attempt(e)},n.prototype.start=n.prototype.try,n.prototype.errors=function(){return this._errors},n.prototype.attempts=function(){return this._attempts},n.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,n=0,r=0;r<this._errors.length;r++){var i=this._errors[r],a=i.message,o=(e[a]||0)+1;e[a]=o,o>=n&&(t=i,n=o)}return t}})),Cn=n((e=>{var t=Sn();e.operation=function(n){return new t(e.timeouts(n),{forever:n&&n.forever,unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},e.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var n in e)t[n]=e[n];if(t.minTimeout>t.maxTimeout)throw Error(`minTimeout is greater than maxTimeout`);for(var r=[],i=0;i<t.retries;i++)r.push(this.createTimeout(i,t));return e&&e.forever&&!r.length&&r.push(this.createTimeout(i,t)),r.sort(function(e,t){return e-t}),r},e.createTimeout=function(e,t){var n=t.randomize?Math.random()+1:1,r=Math.round(n*t.minTimeout*t.factor**+e);return r=Math.min(r,t.maxTimeout),r},e.wrap=function(t,n,r){if(n instanceof Array&&(r=n,n=null),!r)for(var i in r=[],t)typeof t[i]==`function`&&r.push(i);for(var a=0;a<r.length;a++){var o=r[a],s=t[o];t[o]=function(r){var i=e.operation(n),a=Array.prototype.slice.call(arguments,1),o=a.pop();a.push(function(e){i.retry(e)||(e&&(arguments[0]=i.mainError()),o.apply(this,arguments))}),i.attempt(function(){r.apply(t,a)})}.bind(t,s),t[o].options=n}}})),wn=n(((e,t)=>{t.exports=Cn()})),Tn=n(((e,t)=>{let n=Symbol();function r(e,t,r){let i=t[n];if(i)return t.stat(e,(e,t)=>{if(e)return r(e);r(null,t.mtime,i)});let a=new Date(Math.ceil(Date.now()/1e3)*1e3+5);t.utimes(e,a,a,i=>{if(i)return r(i);t.stat(e,(e,i)=>{if(e)return r(e);let a=i.mtime.getTime()%1e3==0?`s`:`ms`;Object.defineProperty(t,n,{value:a}),r(null,i.mtime,a)})})}function i(e){let t=Date.now();return e===`s`&&(t=Math.ceil(t/1e3)*1e3),new Date(t)}t.exports.probe=r,t.exports.getMtime=i})),En=n(((t,n)=>{let r=e(`path`),i=xn(),a=wn(),o=me(),s=Tn(),c={};function l(e,t){return t.lockfilePath||`${e}.lock`}function u(e,t,n){if(!t.realpath)return n(null,r.resolve(e));t.fs.realpath(e,n)}function d(e,t,n){let r=l(e,t);t.fs.mkdir(r,i=>{if(!i)return s.probe(r,t.fs,(e,i,a)=>{if(e)return t.fs.rmdir(r,()=>{}),n(e);n(null,i,a)});if(i.code!==`EEXIST`)return n(i);if(t.stale<=0)return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));t.fs.stat(r,(r,i)=>{if(r)return r.code===`ENOENT`?d(e,{...t,stale:0},n):n(r);if(!f(i,t))return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));p(e,t,r=>{if(r)return n(r);d(e,{...t,stale:0},n)})})})}function f(e,t){return e.mtime.getTime()<Date.now()-t.stale}function p(e,t,n){t.fs.rmdir(l(e,t),e=>{if(e&&e.code!==`ENOENT`)return n(e);n()})}function m(e,t){let n=c[e];n.updateTimeout||(n.updateDelay=n.updateDelay||t.update,n.updateTimeout=setTimeout(()=>{n.updateTimeout=null,t.fs.stat(n.lockfilePath,(r,i)=>{let a=n.lastUpdate+t.stale<Date.now();if(r)return r.code===`ENOENT`||a?h(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,m(e,t));if(n.mtime.getTime()!==i.mtime.getTime())return h(e,n,Object.assign(Error(`Unable to update lock within the stale threshold`),{code:`ECOMPROMISED`}));let o=s.getMtime(n.mtimePrecision);t.fs.utimes(n.lockfilePath,o,o,r=>{let i=n.lastUpdate+t.stale<Date.now();if(!n.released){if(r)return r.code===`ENOENT`||i?h(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,m(e,t));n.mtime=o,n.lastUpdate=Date.now(),n.updateDelay=null,m(e,t)}})})},n.updateDelay),n.updateTimeout.unref&&n.updateTimeout.unref())}function h(e,t,n){t.released=!0,t.updateTimeout&&clearTimeout(t.updateTimeout),c[e]===t&&delete c[e],t.options.onCompromised(n)}function g(e,t,n){t={stale:1e4,update:null,realpath:!0,retries:0,fs:i,onCompromised:e=>{throw e},...t},t.retries=t.retries||0,t.retries=typeof t.retries==`number`?{retries:t.retries}:t.retries,t.stale=Math.max(t.stale||0,2e3),t.update=t.update==null?t.stale/2:t.update||0,t.update=Math.max(Math.min(t.update,t.stale/2),1e3),u(e,t,(e,r)=>{if(e)return n(e);let i=a.operation(t.retries);i.attempt(()=>{d(r,t,(e,a,o)=>{if(i.retry(e))return;if(e)return n(i.mainError());let s=c[r]={lockfilePath:l(r,t),mtime:a,mtimePrecision:o,options:t,lastUpdate:Date.now()};m(r,t),n(null,e=>{if(s.released)return e&&e(Object.assign(Error(`Lock is already released`),{code:`ERELEASED`}));_(r,{...t,realpath:!1},e)})})})})}function _(e,t,n){t={fs:i,realpath:!0,...t},u(e,t,(e,r)=>{if(e)return n(e);let i=c[r];if(!i)return n(Object.assign(Error(`Lock is not acquired/owned by you`),{code:`ENOTACQUIRED`}));i.updateTimeout&&clearTimeout(i.updateTimeout),i.released=!0,delete c[r],p(r,t,n)})}function v(e,t,n){t={stale:1e4,realpath:!0,fs:i,...t},t.stale=Math.max(t.stale||0,2e3),u(e,t,(e,r)=>{if(e)return n(e);t.fs.stat(l(r,t),(e,r)=>e?e.code===`ENOENT`?n(null,!1):n(e):n(null,!f(r,t)))})}function y(){return c}o(()=>{for(let e in c){let t=c[e].options;try{t.fs.rmdirSync(l(e,t))}catch{}}}),n.exports.lock=g,n.exports.unlock=_,n.exports.check=v,n.exports.getLocks=y})),Dn=n(((e,t)=>{let n=xn();function r(e){let t=[`mkdir`,`realpath`,`stat`,`rmdir`,`utimes`],n={...e};return t.forEach(t=>{n[t]=(...n)=>{let r=n.pop(),i;try{i=e[`${t}Sync`](...n)}catch(e){return r(e)}r(null,i)}}),n}function i(e){return(...t)=>new Promise((n,r)=>{t.push((e,t)=>{e?r(e):n(t)}),e(...t)})}function a(e){return(...t)=>{let n,r;if(t.push((e,t)=>{n=e,r=t}),e(...t),n)throw n;return r}}function o(e){if(e={...e},e.fs=r(e.fs||n),typeof e.retries==`number`&&e.retries>0||e.retries&&typeof e.retries.retries==`number`&&e.retries.retries>0)throw Object.assign(Error(`Cannot use retries with the sync api`),{code:`ESYNC`});return e}t.exports={toPromise:i,toSync:a,toSyncOptions:o}})),On=n(((e,t)=>{let n=En(),{toPromise:r,toSync:i,toSyncOptions:a}=Dn();async function o(e,t){let i=await r(n.lock)(e,t);return r(i)}function s(e,t){let r=i(n.lock)(e,a(t));return i(r)}function c(e,t){return r(n.unlock)(e,t)}function l(e,t){return i(n.unlock)(e,a(t))}function u(e,t){return r(n.check)(e,t)}function d(e,t){return i(n.check)(e,a(t))}t.exports=o,t.exports.lock=o,t.exports.unlock=c,t.exports.lockSync=s,t.exports.unlockSync=l,t.exports.check=u,t.exports.checkSync=d}))();function kn(e){return P(`sha256`).update(e).digest(`hex`)}function An(e,t,n){return z(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function jn(e,t,n){let r=[An(e,t)];n&&r.push(An(e,t,n));for(let e of r)try{return await I.access(e),!0}catch{}return!1}function Mn(e,t,n){return z(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function Nn(e,t,n){let r=[Mn(e,t)];n&&r.push(Mn(e,t,n));for(let e of r)try{return await I.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function Pn(e,t,n){return z(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function Fn(e,t,n,r){return L.join(Pn(e,t,r),`${n}.json`)}async function In(e,t,n){let r=[Pn(e,t)];n&&r.push(Pn(e,t,n));for(let e of r){let t;try{t=await I.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await B(()=>I.unlink(L.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await I.rmdir(e).catch(()=>{})}}async function Ln(e,t,n){let r=[];try{r=await I.readdir(L.join(e,`events`))}catch(e){if(e.code!==`ENOENT`)throw e}let i=`${t}-`,a=null;for(let e of r){if(!e.startsWith(i)||!e.endsWith(`.json`))continue;let t=e.slice(0,-5);if(!ut(t)&&!(n&&lt(t,n)))continue;let r=V(t).slice(i.length);(!a||r>a)&&(a=r)}let o=Date.now();if(a)try{let e=T(a.replace(/^evnt_/,``));o<=e&&(o=e+1)}catch{}return{eventId:`evnt_${Gn(o)}`,createdAt:new Date(o)}}function Rn(e,t){return L.join(e,`hooks`,`tokens`,`${kn(t)}.json`)}const zn=N({hookId:C().optional(),runId:C(),eventId:C().optional(),tokenRetentionUntil:D().optional()});async function Bn(e){try{return await K(e,zn)}catch(e){if(e instanceof SyntaxError||e instanceof k)return null;throw e}}async function Vn(e,t,n){let r=Rn(e,t);await I.mkdir(L.dirname(r),{recursive:!0});let a=new AbortController,o;try{o=await(0,On.lock)(r,{realpath:!1,stale:3e4,update:1e3,retries:{retries:350,factor:1,minTimeout:100,maxTimeout:100},onCompromised(e){a.abort(new i(`Hook token claim lock was compromised`,{cause:e}))}})}catch(e){throw new i(`Could not acquire Hook token claim lock`,{cause:e})}let s;try{s=await n(a.signal),a.signal.throwIfAborted()}catch(e){throw a.signal.aborted||await o().catch(()=>{}),e}try{await o()}catch(e){throw new i(`Could not release Hook token claim lock`,{cause:e})}return s}function Hn(e,t,n){let r=P(`sha256`).update(`${t}\x00${n}`).digest(`hex`);return L.join(e,`hooks`,`resumes`,`${r}.json`)}async function Un(e,t,n,r){await Vn(e,t,async i=>{let a=Rn(e,t),o=await Bn(a);o&&o.runId===n&&o.hookId===r&&(i.throwIfAborted(),await q(a))})}function Wn(e,t,n,r){let i=P(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return L.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const Gn=E(()=>Math.random()),$=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=V(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?le(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:le(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},Kn=N({runId:C()}),qn=N({hookId:C(),tag:C().optional()});function Jn(e,t){return z(e,`hooks`,`token-index`,kn(t))}function Yn(e,t){return R(`hookId`,t),z(e,`hooks`,`id-index`,t)}function Xn(e){return z(e,`hooks`,`by-run`)}function Zn(e){let t=V(e);return t===e?void 0:e.slice(t.length+1)}function Qn(e,t){return t?ut(e)||lt(e,t):ut(e)}async function $n(e){try{return await K(e,b)}catch(e){if(e instanceof SyntaxError||e instanceof k)return null;throw e}}async function er(e,t,n,r,i,a){R(`runId`,n),R(`eventId`,i),a!==void 0&&R(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([J(L.join(Jn(e,t),o),s),J(L.join(Yn(e,r),o),s)])}function tr(e,t,n,r){return H(e,`hooks/by-run`,`${t}-${n}`,r)}async function nr(e,t,n,r){await J(tr(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function rr(e,t,n,r){await q(tr(e,t,n,r)),r&&await q(tr(e,t,n))}async function ir(e,t){R(`runId`,t);let n=Xn(e),r=`${t}-`,i=[];for(let e of await Y(n)){if(!e.startsWith(r))continue;let t=null;try{t=await K(L.join(n,`${e}.json`),qn)}catch(e){if(!(e instanceof SyntaxError||e instanceof k))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function ar(e,t){await q(L.join(Xn(e),`${t}.json`))}const or=new Map;function sr(){or.clear()}async function cr(e){let t=L.resolve(e),n=or.get(t);return n||(n=ur(t).catch(e=>{throw or.delete(t),e}),or.set(t,n)),n}async function lr(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function ur(e){let t=L.join(e,`hooks`,`.hook-index-complete`);try{await I.access(t);return}catch{}let n=L.join(e,`events`);await lr(await Y(n),32,async t=>{let r=await $n(L.join(n,`${t}.json`));if(!r||r.eventType!==`hook_created`||typeof r.correlationId!=`string`)return;let i=r.eventData?.token;if(typeof i==`string`)try{await er(e,i,r.runId,r.correlationId,r.eventId,Zn(t))}catch{}});let r=L.join(e,`hooks`);await lr(await Y(r),32,async t=>{let n=null;try{n=await K(L.join(r,`${t}.json`),j)}catch(e){if(!(e instanceof SyntaxError||e instanceof k))throw e}if(n)try{await nr(e,n.runId,n.hookId,Zn(t))}catch{}}),await J(t,``)}async function dr(e,t,n,r){await cr(e);let i;try{i=t.kind===`token`?Jn(e,t.token):Yn(e,t.hookId)}catch{return null}let a=(await Y(i)).filter(e=>Qn(e,r)).sort((e,t)=>V(t).localeCompare(V(e)));for(let t of a){let r=null;try{r=await K(L.join(i,`${t}.json`),Kn)}catch(e){if(!(e instanceof SyntaxError||e instanceof k))throw e}if(!r)continue;let a=V(t),o;try{o=H(e,`events`,`${r.runId}-${a}`,Zn(t))}catch{continue}let s=await $n(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function fr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function pr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function mr(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function hr(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function gr(e){let{token:t,metadata:n,isWebhook:r,isSystem:i,tokenRetentionUntil:a}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1,tokenRetentionUntil:a}}function _r(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function vr(e,t,n){let r=await U(e,`runs`,t,w,n);return r?_(r.status):!1}async function yr(e,t,n,r){let i=await dr(e,t,e=>_r(e,n),r);if(!i||!_r(i,n))return null;if(await vr(e,i.runId,r)){let e=i.eventData.tokenRetentionUntil;if(!e||e.getTime()<=Date.now())return null}return await jn(e,i.correlationId,r)?null:i}async function br(e,t,n){let r=gr(t);return await J(Rn(e,r.token),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId,tokenRetentionUntil:t.eventData.tokenRetentionUntil})),await nr(e,r.runId,r.hookId,n),await J(H(e,`hooks`,r.hookId,n),JSON.stringify(r,W,2)),r}async function xr(e,t,n){let r=await yr(e,{kind:`token`,token:t},e=>hr(e)===t,n);return r?br(e,r,n):null}async function Sr(e,t,n){let r=await yr(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?br(e,r,n):null}function Cr(e,t){async function n(n){return await jn(e,n.hookId,t)?!1:n.tokenRetentionUntil&&n.tokenRetentionUntil.getTime()>Date.now()?!0:!await vr(e,n.runId,t)}async function r(r){let i=await Bn(Rn(e,r));if(i?.hookId){try{let a=await U(e,`hooks`,i.hookId,j,t);if(a?.token===r){if(!await n(a))throw new c(r);return{...a,isWebhook:a.isWebhook??!0}}}catch(e){if(!rt.is(e))throw e}return null}let a=L.join(e,`hooks`),o=await Y(a);for(let e of o){let t=await K(L.join(a,`${e}.json`),j);if(t?.token===r){if(!await n(t))throw new c(r);return{...t,isWebhook:t.isWebhook??!0}}}return null}async function i(r,i){R(`hookId`,r);let a=await U(e,`hooks`,r,j,t);if(a&&!await n(a))throw new c(r);let o=a??await Sr(e,r,t);if(!o)throw new c(r);let s=i?.resolveData||`all`;return mr({...o,isWebhook:o.isWebhook??!0},s)}async function a(n){let i=await r(n)??await xr(e,n,t);if(!i)throw new c(n);return i}async function o(t){let r=L.join(e,`hooks`),i=t.resolveData||`all`,a=await X({directory:r,schema:j,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:async e=>t.runId&&e.runId!==t.runId?!1:n(e),getCreatedAt:()=>null,getId:e=>e.hookId});return{...a,data:a.data.map(e=>mr(e,i))}}return{get:i,getByToken:a,list:o}}async function wr(e,t){await cr(e);for(let n of await ir(e,t)){if(n.hookId){let r=null,i=null;try{i=H(e,`hooks`,n.hookId,n.tag),r=await K(i,j)}catch(e){if(!rt.is(e)&&!(e instanceof SyntaxError||e instanceof k))throw e}if(r&&i&&r.runId===t){if(r.tokenRetentionUntil&&r.tokenRetentionUntil.getTime()>Date.now())continue;await Un(e,r.token,r.runId,r.hookId),await q(Wn(e,r.token,r.runId,r.hookId)),await q(i)}}await ar(e,n.fileId)}}async function Tr(e,t,n,r,i,a){if(_(a.status)||await Nn(e,t))throw new o(`Workflow run "${t}" is already in a terminal state`);let s=Fn(e,t,n);await J(s,r);try{if(await Nn(e,t)||await bt(s,i)!==`linked`)throw new o(`Workflow run "${t}" is already in a terminal state`)}finally{await I.unlink(s).catch(()=>{})}}async function Er(e,t,n,r,i){R(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await J(Mn(e,t),``),await In(e,t);let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await G(z(e,`runs`,`${t}.json`),i,{overwrite:!0}),await wr(e,t),{event:void 0,run:fr(i,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${Gn()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:5},c=z(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await Tr(e,t,i,JSON.stringify(s,W,2),c,r):await G(c,s),{event:S(s,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const Dr=new Map;function Or(e,t){let n=Dr.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{Dr.get(e)===r.task&&Dr.delete(e)}})();return r.task=i,Dr.set(e,i),i}function kr(e,t){let n=(async(n,i)=>{R(`runId`,n);let a=await U(e,`runs`,n,w,t);if(!a)throw new r(n);return fr(a,i?.resolveData??`all`)});return{get:n,getMany:(async(e,t)=>{let i=[...new Set(e)],a=await Promise.all(i.map(async e=>{try{return await n(e,t)}catch(e){if(e instanceof r)return null;throw e}})),o=new Map(i.map((e,t)=>[e,a[t]]));return e.map(e=>o.get(e)??null)}),list:(async t=>{let n=t?.resolveData??`all`,r=await X({directory:L.join(e,`runs`),schema:w,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:$(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(n,i,a)=>(R(`runId`,n),Or(n,async()=>{let o=await U(e,`runs`,n,w,t);if(!o)throw new r(n);try{te(i,{existingKeys:Object.keys(o.attributes??{}),allowReservedAttributes:a?.allowReservedAttributes})}catch(e){throw e instanceof x,e}let s=ae(o.attributes,i),c={...o,attributes:s,updatedAt:new Date};return await G(H(e,`runs`,n,t),c,{overwrite:!0}),{attributes:s}}))}}function Ar(){let e=process.env.WORKFLOW_MAX_EVENTS,t=e===void 0?NaN:Number(e);return Number.isInteger(t)&&t>0?t:25e3}const jr=1440*60*1e3;function Mr(){let e=Number(process.env.WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS??30);if(!Number.isFinite(e)||e<=0)throw new i(`WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS must be a positive number`,{status:400});return e*jr}const Nr=N({eventId:C()}),Pr=N({runId:C(),resumeId:C(),hookId:C(),eventId:C(),payloadDigest:C().optional()});async function Fr(e,t,n){if(t.hookId&&await jn(e,t.hookId,n))return!0;let r=await U(e,`runs`,t.runId,w,n);return r?_(r.status)?!t.tokenRetentionUntil||t.tokenRetentionUntil.getTime()<=Date.now():!1:!0}async function Ir(e){try{return await K(e,Nr)}catch(e){if(e instanceof SyntaxError||e instanceof k)return null;throw e}}async function Lr(e,t,n){return(await X({directory:L.join(e,`events`),schema:b,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:$(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function Rr(e,t,n,r,i){let a=await U(e,`events`,`${t}-${r}`,b,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await U(e,`hooks`,n,j,i))return;let o=gr(a);await er(e,o.token,t,n,r,i),await nr(e,t,n,i),await J(H(e,`hooks`,n,i),JSON.stringify(o,W,2))}async function zr(e,t,n,r,i){let a=Wn(e,t,n,r);return await J(a,JSON.stringify({eventId:i}))?i:(await Ir(a))?.eventId??null}function Br(e,t,n){let r=e.get(t),i={},a=(async()=>{r&&await r.catch(()=>void 0);try{return await n()}finally{e.get(t)===i.task&&e.delete(t)}})();return i.task=a,e.set(t,a),a}async function Vr(e,t){let n=L.join(e,`waits`),r=await Y(n);for(let e of r)e.startsWith(`${t}-`)&&await q(L.join(n,`${e}.json`))}async function Hr(e,t,n,r){return Or(t,async()=>{let i=await K(H(e,`runs`,t,n),w),a={...r,attributes:i?.attributes??r.attributes};return await G(H(e,`runs`,t,n),a,{overwrite:!0}),a})}function Ur(e,t){let n=Mr(),u=4*1024*1024,d=new Map,f=new Map,p=new Map,g=0;function x(e){let t=d.get(e);if(!t)return;d.delete(e),g-=f.get(e)??0,f.delete(e);let n=p.get(t.runId);n?.delete(e),n?.size===0&&p.delete(t.runId)}function C(e){for(let t of p.get(e)??[])x(t)}function oe(){d.clear(),f.clear(),p.clear(),g=0}function T(e,t,n){if(n>u)return;for(;d.size>0&&(d.size>=1e3||g+n>u);){let e=d.keys().next().value;x(e)}d.set(e,t),f.set(e,n),g+=n;let r=p.get(t.runId)??new Set;r.add(e),p.set(t.runId,r)}function se(e,t,n){if(ie(e.eventType)){C(e.runId);return}let r=Buffer.byteLength(n);if(r>u)return;let i=b.safeParse(JSON.parse(n,gt));i.success&&T(t,i.data,r)}async function E(n){let r=H(e,`events`,`${n.runId}-${n.eventId}`,t),i=JSON.stringify(n,W,2);await _t(r,i),se(n,r,i)}let D=new Map,O=new Map;return{clearCache:oe,async create(u,f,p){if(f.eventType===`hook_created`&&f.eventData.tokenRetentionUntil!==void 0&&f.eventData.tokenRetentionUntil.getTime()>Date.now()+n)throw new i(`Hook minimum retention cannot exceed ${n/jr} days in the Local World.`,{status:400});if(u!=null&&u!==``&&R(`runId`,u),`correlationId`in f&&typeof f.correlationId==`string`&&R(`correlationId`,f.correlationId),ne(f.eventType)&&u&&f.correlationId){let e=t?`${u}-${f.correlationId}.${t}`:`${u}-${f.correlationId}`;return Br(D,e,()=>g())}if(y(f.eventType)&&u&&f.correlationId){let e=t?`${u}-${f.correlationId}.hook.${t}`:`${u}-${f.correlationId}.hook`;return Br(O,e,g)}return g();async function g(){let n=`evnt_${Gn()}`,g=new Date,y;if(f.eventType===`run_created`&&(!u||u===``))y=`wrun_${Gn()}`;else if(u)y=u;else throw Error(`runId is required for non-run_created events`);if(f.eventType===`run_created`&&u&&u!==``){let e=ue(y,`wrun_`);if(e)throw new i(e)}let x=f.specVersion??5,C=null;if(f.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(f.eventType)&&(C=await U(e,`runs`,y,w,t),f.eventType===`run_started`&&!C&&`eventData`in f&&f.eventData)){let n=f.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){te(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:y,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,createdAt:g,updatedAt:g};if(await J(H(e,`runs`,y,t),JSON.stringify(r,W))){let e=`evnt_${Gn()}`;await E({eventType:`run_created`,runId:y,eventId:e,createdAt:g,specVersion:x,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),C=r}else C=await U(e,`runs`,y,w,t)}}if(f.eventType===`run_failed`&&!C||f.eventType===`attr_set`&&!C)throw new r(y);if(C){if(de(C.specVersion))throw new s(C.specVersion,5);if(fe(C.specVersion))return Er(e,y,f,C,p)}let oe=h(f),T=oe&&f.eventType===`step_started`;if(C&&_(C.status)){if(f.eventType===`run_cancelled`&&C.status===`cancelled`){let e={...f,runId:y,eventId:n,createdAt:g,specVersion:x};return await E(e),{event:S(e,p?.resolveData??`all`),run:C,...C?{maxEvents:Ar()}:{}}}if(f.eventType===`run_started`)throw new o(`Workflow run "${y}" is already in terminal state "${C.status}"`);if(ie(f.eventType))throw new l(`Cannot transition run from terminal state "${C.status}"`);if(oe)throw new l(`Cannot create new entities on run in terminal state "${C.status}"`);if(f.eventType===`attr_set`)throw new l(`Cannot set attributes on run in terminal state "${C.status}"`)}let D=null;if(ne(f.eventType)&&f.eventType!==`step_created`&&f.correlationId){if(D=await U(e,`steps`,`${y}-${f.correlationId}`,ce,t),!D&&!T)throw new i(`Step "${f.correlationId}" not found`);if(T&&D)throw new l(`Step "${f.correlationId}" already created`);if(D){if(m(D.status))throw new l(`Cannot modify step in terminal state "${D.status}"`);if(C&&_(C.status)&&D.status!==`running`)throw new o(`Cannot modify non-running step on run in terminal state "${C.status}"`)}}if(re(f.eventType)&&f.correlationId){if(f.eventType===`hook_received`&&p?.resumeId){let n=await K(Hn(e,y,p.resumeId),Pr);if(n&&n.hookId===f.correlationId&&(!p.resumePayloadDigest||!n.payloadDigest||n.payloadDigest===p.resumePayloadDigest)){let r=await U(e,`events`,`${y}-${n.eventId}`,b,t);if(r)return{event:r}}}if(f.eventType===`hook_received`&&await jn(e,f.correlationId,t)||!await U(e,`hooks`,f.correlationId,j,t))throw new c(f.correlationId);if(f.eventType===`hook_received`&&p?.resumeId){let r=Hn(e,y,p.resumeId),i=async r=>{if(r.hookId!==f.correlationId)throw new l(`hook_received resumeId "${p.resumeId}" already recorded for a different hook`);if(p.resumePayloadDigest&&r.payloadDigest&&r.payloadDigest!==p.resumePayloadDigest)throw new l(`hook_received resumeId "${p.resumeId}" already recorded with a different payload`);let i=await U(e,`events`,`${y}-${r.eventId}`,b,t);return i?{event:i}:(n=r.eventId,null)},a=await K(r,Pr);if(a){let e=await i(a);if(e)return e}else if(!await J(r,JSON.stringify({runId:y,resumeId:p.resumeId,hookId:f.correlationId,eventId:n,...p.resumePayloadDigest?{payloadDigest:p.resumePayloadDigest}:{}}))){let e=await K(r,Pr);if(e){let t=await i(e);if(t)return t}}}}let O={...f,runId:y,eventId:n,createdAt:g,specVersion:x,...f.eventType===`hook_received`&&p?.resumeId?{resumeId:p.resumeId}:{}};if(f.eventType===`run_started`&&`eventData`in O&&delete O.eventData,T&&O.eventType===`step_started`&&O.eventData){let{input:e,...t}=O.eventData;O={...O,eventData:t}}let k,A,M,N,pe=!1,me;if(ie(f.eventType)&&C){await J(Mn(e,y,t),``),await In(e,y,t);let r=await Ln(e,y,t);n=r.eventId,O={...O,eventId:n,createdAt:r.createdAt}}if(f.eventType===`run_created`&&`eventData`in f){let n=f.eventData;if(te(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),k={runId:y,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,createdAt:g,updatedAt:g},!await J(H(e,`runs`,y,t),JSON.stringify(k,W,2)))throw new l(`Workflow run "${y}" already exists`)}else if(f.eventType===`run_started`){if(C){if(C.status===`running`)return{run:C,maxEvents:Ar()};k=await Hr(e,y,t,{runId:C.runId,deploymentId:C.deploymentId,workflowName:C.workflowName,specVersion:C.specVersion,executionContext:C.executionContext,input:C.input,createdAt:C.createdAt,expiredAt:C.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:C.startedAt??g,updatedAt:g,attributes:C.attributes,encryptionPublicKey:C.encryptionPublicKey})}}else if(f.eventType===`run_completed`&&`eventData`in f){let n=f.eventData;C&&(k=await Hr(e,y,t,{runId:C.runId,deploymentId:C.deploymentId,workflowName:C.workflowName,specVersion:C.specVersion,executionContext:C.executionContext,input:C.input,createdAt:C.createdAt,expiredAt:C.expiredAt,startedAt:C.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:g,updatedAt:g,attributes:C.attributes,encryptionPublicKey:C.encryptionPublicKey}),await Promise.all([wr(e,y),Vr(e,y)]))}else if(f.eventType===`run_failed`&&`eventData`in f){let n=f.eventData;C&&(k=await Hr(e,y,t,{runId:C.runId,deploymentId:C.deploymentId,workflowName:C.workflowName,specVersion:C.specVersion,executionContext:C.executionContext,input:C.input,createdAt:C.createdAt,expiredAt:C.expiredAt,startedAt:C.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:g,updatedAt:g,attributes:C.attributes,encryptionPublicKey:C.encryptionPublicKey}),await Promise.all([wr(e,y),Vr(e,y)]))}else if(f.eventType===`run_cancelled`)C&&(k=await Hr(e,y,t,{runId:C.runId,deploymentId:C.deploymentId,workflowName:C.workflowName,specVersion:C.specVersion,executionContext:C.executionContext,input:C.input,createdAt:C.createdAt,expiredAt:C.expiredAt,startedAt:C.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:g,updatedAt:g,attributes:C.attributes,encryptionPublicKey:C.encryptionPublicKey}),await Promise.all([wr(e,y),Vr(e,y)]));else if(f.eventType===`attr_set`&&C)k=await Or(y,async()=>{let n=await K(H(e,`runs`,y,t),w);if(!n)throw new r(y);if(te(f.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:f.eventData.allowReservedAttributes===!0}),f.correlationId&&f.eventData.writer.type===`workflow`&&!await J(z(e,`.locks`,`attributes`,t?`${y}-${f.correlationId}.created.${t}`:`${y}-${f.correlationId}.created`),``))throw new l(`Attribute event "${f.correlationId}" already exists`);let i={...n,attributes:ae(n.attributes,f.eventData.changes),updatedAt:g};return await G(H(e,`runs`,y,t),i,{overwrite:!0}),i});else if(f.eventType===`step_created`&&`eventData`in f){if(!await J(z(e,`.locks`,`steps`,t?`${y}-${f.correlationId}.created.${t}`:`${y}-${f.correlationId}.created`),``))throw new l(`Step "${f.correlationId}" already created`);let n=f.eventData;A={runId:y,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:g,updatedAt:g,specVersion:x},await G(H(e,`steps`,`${y}-${f.correlationId}`,t),A)}else if(f.eventType===`step_started`){if(!D&&T){let n=f.eventData;if(await J(z(e,`.locks`,`steps`,t?`${y}-${f.correlationId}.created.${t}`:`${y}-${f.correlationId}.created`),``)){let r={runId:y,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:g,updatedAt:g,specVersion:x};await G(H(e,`steps`,`${y}-${f.correlationId}`,t),r);let i=`evnt_${Gn()}`,a={eventType:`step_created`,runId:y,eventId:i,createdAt:g,specVersion:x,correlationId:f.correlationId,eventData:{stepName:n.stepName,input:n.input}};await G(H(e,`events`,`${y}-${i}`,t),a),D=r,pe=!0}else throw new l(`Step "${f.correlationId}" already created`)}if(D){if(D.retryAfter&&D.retryAfter.getTime()>Date.now())throw new a(`Cannot start step "${f.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((D.retryAfter.getTime()-Date.now())/1e3)});let n=`${y}-${f.correlationId}`,r=await U(e,`steps`,n,ce,t);if(r&&m(r.status))throw new l(`Cannot modify step in terminal state "${r.status}"`);A={...D,status:`running`,startedAt:D.startedAt??g,attempt:D.attempt+1,retryAfter:void 0,updatedAt:g},await G(H(e,`steps`,n,t),A,{overwrite:!0})}}else if(f.eventType===`step_completed`&&`eventData`in f){let n=f.eventData;if(D){let r=`${y}-${f.correlationId}`;if(!await J(z(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new l(`Cannot modify step in terminal state`);A={...D,status:`completed`,output:n.result,completedAt:g,updatedAt:g},await G(H(e,`steps`,r,t),A,{overwrite:!0})}}else if(f.eventType===`step_failed`&&`eventData`in f){let n=f.eventData;if(D){let r=`${y}-${f.correlationId}`;if(!await J(z(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new l(`Cannot modify step in terminal state`);A={...D,status:`failed`,error:n.error,completedAt:g,updatedAt:g},await G(H(e,`steps`,r,t),A,{overwrite:!0})}}else if(f.eventType===`step_retrying`&&`eventData`in f){let n=f.eventData;if(D){let r=`${y}-${f.correlationId}`;A={...D,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:g},await G(H(e,`steps`,r,t),A,{overwrite:!0})}}else if(f.eventType===`hook_created`&&`eventData`in f){let r=f.eventData,i=Rn(e,r.token),a=JSON.stringify({token:r.token,hookId:f.correlationId,runId:y,eventId:n,tokenRetentionUntil:r.tokenRetentionUntil}),o=await Vn(e,r.token,async n=>{let o=await Bn(i);return o||=(n.throwIfAborted(),await q(i),await xr(e,r.token,t),await Bn(i)),o?o.runId===y&&o.hookId===f.correlationId?{status:`owned`,claim:o}:await Fr(e,o,t)?(n.throwIfAborted(),await q(i),o.hookId&&(await q(H(e,`hooks`,o.hookId,t)),await q(Wn(e,r.token,o.runId,o.hookId)),await rr(e,o.runId,o.hookId,t)),n.throwIfAborted(),ke(await J(i,a)),{status:`claimed`}):{status:`conflict`,claim:o}:(n.throwIfAborted(),ke(await J(i,a)),{status:`claimed`})});if(o.status===`owned`){let i=o.claim,a;if(i.eventId)a=i.eventId;else{let i=await Lr(e,y,f.correlationId);if(i!==null)throw await Rr(e,y,f.correlationId,i,t),new l(`Hook "${f.correlationId}" already created`);let o=await zr(e,r.token,y,f.correlationId,n);if(o===null)throw new l(`Hook "${f.correlationId}" already created`);a=o}n=a;let s=le(n.replace(/^evnt_/,``))??g;O={...f,eventData:{...f.eventData,tokenRetentionUntil:i.tokenRetentionUntil},runId:y,eventId:n,createdAt:s,specVersion:x}}if(o.status===`conflict`){let e=o.claim,t={eventType:`hook_conflict`,correlationId:f.correlationId,eventData:{token:r.token,conflictingRunId:e.runId},runId:y,eventId:n,createdAt:g,specVersion:x};return await E(t),{event:S(t,p?.resolveData??`all`),run:k,step:A,hook:void 0}}let s=O.eventData;M={runId:y,hookId:f.correlationId,token:s.token,metadata:s.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:O.createdAt,specVersion:x,isWebhook:s.isWebhook??!1,isSystem:s.isSystem??!1,tokenRetentionUntil:s.tokenRetentionUntil},me=o.status===`owned`?{overwrite:!0}:void 0,await er(e,r.token,y,f.correlationId,n,t)}else if(f.eventType===`hook_disposed`){if(!await J(An(e,f.correlationId,t),``))throw new l(`Hook "${f.correlationId}" already disposed`);let n=H(e,`hooks`,f.correlationId,t),r=await U(e,`hooks`,f.correlationId,j,t);r&&(await Un(e,r.token,r.runId,r.hookId),await q(Wn(e,r.token,r.runId,r.hookId))),await q(n),await rr(e,y,f.correlationId,t)}else if(f.eventType===`wait_created`&&`eventData`in f){let n=`${y}-${f.correlationId}`;if(!await J(z(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new l(`Wait "${f.correlationId}" already exists`);let r=f.eventData;N={waitId:n,runId:y,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:g,updatedAt:g,specVersion:x},await G(H(e,`waits`,n,t),N)}else if(f.eventType===`wait_completed`){let n=`${y}-${f.correlationId}`,r=z(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await J(r,``))throw new l(`Wait "${f.correlationId}" already completed`);let a=await U(e,`waits`,n,ee,t);if(!a)throw await I.unlink(r).catch(()=>{}),new i(`Wait "${f.correlationId}" not found`);N={...a,status:`completed`,completedAt:g,updatedAt:g},await G(H(e,`waits`,n,t),N,{overwrite:!0})}if(f.eventType===`hook_received`&&f.correlationId&&await jn(e,f.correlationId,t))throw new c(f.correlationId);let P=H(e,`events`,`${y}-${n}`,t),he=JSON.stringify(O,W,2),ge;if(f.eventType===`hook_received`){let r=await Nn(e,y,t),i=r?null:await U(e,`runs`,y,w,t);if(r||i&&_(i.status))throw new o(`Workflow run "${y}" is already in a terminal state`);let a=Fn(e,y,n,t);if(!await J(a,he))throw new l(`Event "${n}" already exists for run "${y}"`);try{if(await Nn(e,y,t))throw new o(`Workflow run "${y}" is already in a terminal state`);let n=await bt(a,P);if(n===`missing`)throw new o(`Workflow run "${y}" is already in a terminal state`);ge=n===`linked`}finally{await q(a).catch(()=>{})}}else ge=await J(P,he);if(!ge)throw f.eventType===`hook_created`&&f.correlationId&&await Rr(e,y,f.correlationId,n,t),new l(`Event "${n}" already exists for run "${y}"`);se(O,P,he),M&&f.eventType===`hook_created`&&(await nr(e,M.runId,M.hookId,t),await G(H(e,`hooks`,M.hookId,t),M,me));let F=p?.resolveData??`all`,_e=S(O,F),ve,ye,be;if(f.eventType===`run_started`&&k){let t=await X({directory:L.join(e,`events`),schema:b,cachedItems:d,filePrefix:`${y}-`,sortOrder:`asc`,limit:1e3,getCreatedAt:$(`evnt`),getId:e=>e.eventId});ve=t.data,ye=t.cursor,be=t.hasMore}if(v(f.eventType)&&typeof p?.sinceCursor==`string`){let t=await X({directory:L.join(e,`events`),schema:b,filePrefix:`${y}-`,sortOrder:`asc`,cursor:p.sinceCursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});ve=F===`none`?t.data.map(e=>S(e,F)):t.data,ye=t.cursor,be=t.hasMore}return{event:_e,run:k,step:A,hook:M,wait:N,events:ve,cursor:ye,hasMore:be,...pe?{stepCreated:!0}:{},...k?{maxEvents:Ar()}:{}}}},async get(n,r,i){R(`runId`,n),R(`eventId`,r);let a=await U(e,`events`,`${n}-${r}`,b,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return S(a,i?.resolveData??`all`)},async list(t){let{runId:n}=t;R(`runId`,n);let r=t.resolveData??`all`,i=await X({directory:L.join(e,`events`),schema:b,cachedItems:d,filePrefix:`${n}-`,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return r===`none`?{...i,data:i.data.map(e=>S(e,r))}:i},async listByCorrelationId(t){let n=t.correlationId;R(`correlationId`,n),R(`runId`,t.runId);let r=t.resolveData??`all`,i=await X({directory:L.join(e,`events`),schema:b,cachedItems:d,filePrefix:`${t.runId}-`,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return r===`none`?{...i,data:i.data.map(e=>S(e,r))}:i}}}function Wr(e,t){return{get:(async(n,r,i)=>{R(`runId`,n),R(`stepId`,r);let a=await U(e,`steps`,`${n}-${r}`,ce,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return pr(a,i?.resolveData??`all`)}),list:(async t=>{R(`runId`,t.runId);let n=t.resolveData??`all`,r=await X({directory:L.join(e,`steps`),schema:ce,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function Gr(e,t){let n=kr(e,t),r=Wr(e,t),i=Ur(e,t),a=Cr(e,t);return{runs:on(`world.runs`,n),steps:on(`world.steps`,r),events:on(`world.events`,i),hooks:on(`world.hooks`,a),clearCache:()=>i.clearCache()}}const Kr=E(()=>Math.random()),qr=N({streams:g(C())});function Jr(e){return e===1}function Yr(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function Xr(e){return Jr(e[0])}function Zr(e){return{eof:Xr(e),chunk:Buffer.from(e.subarray(1))}}async function Qr(e){try{return await I.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function $r(e,t,n,r=n,i=()=>!0){for(let a of t){if(!a.endsWith(n))continue;let t=a.slice(0,-n.length);i(t)&&e.set(t,r)}}function ei(e,t){return R(`streamName`,t),L.join(e,t)}async function ti(e,t,n){let r=ei(e,t),i=await Qr(r),a=new Map;return $r(a,i,`.json`),$r(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&$r(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function ni(e,t){let n=t?`.${t}`:``,r=new Ae,i=new Set;async function a(n,r){R(`runId`,n),R(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=H(e,`streams/runs`,n,t),s=(await U(e,`streams/runs`,n,qr,t))?.streams??[];s.includes(r)||(s.push(r),await G(o,{streams:s},{overwrite:!0})),i.add(a)}function o(e){return typeof e==`string`?Buffer.from(new TextEncoder().encode(e)):e instanceof Buffer?e:Buffer.from(e)}return{streams:{async write(t,i,s){let c=`chnk_${Kr()}`;await a(await t,i);let l=o(s),u=Yr({chunk:l,eof:!1});await _t(L.join(ei(L.join(e,`streams`,`chunks`),i),`${c}${n}.bin`),u);let d=Uint8Array.from(l);r.emit(`chunk:${i}`,{streamName:i,chunkData:d,chunkId:c})},async writeMulti(t,i,s){if(s.length===0)return;let c=s.map(()=>`chnk_${Kr()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=Yr({chunk:t,eof:!1});return await _t(L.join(ei(L.join(e,`streams`,`chunks`),i),`${a}${n}.bin`),o),{chunkId:a,chunkData:Uint8Array.from(t)}});for(let e of l){let{chunkId:t,chunkData:n}=await e;r.emit(`chunk:${i}`,{streamName:i,chunkData:n,chunkId:t})}},async close(t,i){let o=`chnk_${Kr()}`;await a(await t,i),await _t(L.join(ei(L.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),Yr({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return R(`runId`,n),(await U(e,`streams/runs`,n,qr,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await ti(L.join(e,`streams`,`chunks`),r,t),l=0;if(i?.cursor)try{l=JSON.parse(Buffer.from(i.cursor,`base64`).toString(`utf-8`)).i}catch{l=0}let u=!1,d=[],f=0;for(let e of o){let t=s.get(e)??`.bin`,n=L.join(c,`${e}${t}`);if(f<l){if(Jr(await yt(n))){u=!0;break}f++;continue}if(d.length>=a){Jr(await yt(n))?u=!0:f++;break}let r=Zr(await vt(n));if(r.eof){u=!0;break}d.push({index:f,data:Uint8Array.from(r.chunk)}),f++}let p=!u&&f>l+d.length,m=l+d.length;return{data:d,cursor:p?Buffer.from(JSON.stringify({i:m})).toString(`base64`):null,hasMore:p,done:u}},async getInfo(n,r){let{files:i,extMap:a,dir:o}=await ti(L.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(Jr(await yt(L.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=L.join(e,`streams`,`chunks`),s=()=>{},c=null,l=!1;return new ReadableStream({async start(e){let n=new Set,u=[],d=!0,f=!1,p=t=>{if(t.chunkData.byteLength===0){n.add(t.chunkId);return}d?(n.add(t.chunkId),u.push({chunkId:t.chunkId,chunkData:Uint8Array.from(t.chunkData)})):n.has(t.chunkId)||(n.add(t.chunkId),e.enqueue(Uint8Array.from(t.chunkData)))},m=()=>{if(d){f=!0;return}l=!0,s();try{e.close()}catch{}};s=()=>{r.off(`chunk:${i}`,p),r.off(`close:${i}`,m),c&&=(clearInterval(c),null)},r.on(`chunk:${i}`,p),r.on(`close:${i}`,m);let{files:h,extMap:g,dir:_}=await ti(o,i,t),v=h.length;if(typeof a==`number`&&a<0&&h.length>0){let e=h[h.length-1],t=g.get(e)??`.bin`;Jr(await yt(L.join(_,`${e}${t}`)))&&v--}let y=typeof a==`number`&&a<0?Math.max(0,v+a):a,b=!1;for(let t=y;t<h.length;t++){let r=h[t],i=r;if(n.has(i))continue;let a=g.get(r)??`.bin`,o=Zr(await vt(L.join(_,`${r}${a}`)));if(o?.eof===!0){b=!0;break}n.add(i),o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}d=!1,u.sort((e,t)=>e.chunkId.localeCompare(t.chunkId));for(let t of u)e.enqueue(Uint8Array.from(t.chunkData));if(b){l=!0,s();try{e.close()}catch{}return}if(f){l=!0,s();try{e.close()}catch{}return}for(let e=0;e<y&&e<h.length;e++)n.add(h[e]);if(l){s();return}let x=!1;c=setInterval(async()=>{if(!x){x=!0;try{let{files:r,extMap:a}=await ti(o,i,t);for(let t of r){let r=t;if(n.has(r))continue;n.add(r);let i=a.get(t)??`.bin`,o=Zr(await vt(L.join(_,`${t}${i}`)));if(o?.eof===!0){l=!0,s();try{e.close()}catch{}return}if(l)return;o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}}catch(e){e instanceof Error&&`code`in e||console.error(`[world-local] Unexpected polling error:`,e)}finally{x=!1}}},100)},cancel(){l=!0,s()}})}}}}function ri(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Ze.value,...t};Fe(n.dataDir);let r=n.tag,i=_n(n),{clearCache:a,...o}=Gr(n.dataDir,r),s=Qe(n);return{specVersion:5,capabilities:{hookRetention:{active:!0},hookResumeDedup:!0},...i,...o,...on(`world.streams`,{...ni(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Lt(n.dataDir),!s)return;let e=r?e=>lt(e,r):ut;await O({...o.runs,list:(t=>o.runs.list({...t,fileIdFilter:e}))},i.queue,`world-local`)},async close(){a(),await i.close()},async clear(){if(a(),r){let e=n.dataDir,t=L.join(e,`hooks`),i=await dt(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-CNXUKQCp.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await K(L.join(t,n),a);r?.token&&(await q(L.join(t,`tokens`,`${kn(r.token)}.json`)),await q(Wn(e,r.token,r.runId,r.hookId)))})),await Promise.all([`runs`,`steps`,`events`,`hooks`,`hooks/by-run`,`waits`,`streams/runs`].map(async t=>{let n=L.join(e,t),i=await dt(n,r);await Promise.all(i.map(e=>q(L.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=L.join(e,`hooks`,t),i;try{i=await F.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=L.join(n,e.name),i=await dt(t,r);await Promise.all(i.map(e=>q(L.join(t,e))))}))}await F.rm(L.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=L.join(e,`streams`,`chunks`),s;try{s=await F.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=L.join(o,e.name),n=await ft(t,r,`.bin`);await Promise.all(n.map(e=>F.unlink(L.join(t,e)).catch(()=>{})))})),st()}else st(),sr(),await Ce(n.dataDir,{recursive:!0,force:!0}),await Lt(n.dataDir)}}}export{Dt as DataDirAccessError,Ot as DataDirVersionError,je as UnwritableDataDirError,ri as createWorld,Nt as ensureDataDir,Lt as initDataDir,kt as parseVersion};