eve 0.48.0 → 0.49.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +15 -0
- package/dist/src/channel/channel-address.js +1 -1
- package/dist/src/channel/types.d.ts +10 -0
- package/dist/src/cli/commands/registry-metadata.d.ts +30 -0
- package/dist/src/cli/commands/registry-metadata.js +1 -1
- package/dist/src/cli/commands/registry-package.d.ts +6 -0
- package/dist/src/cli/commands/registry-package.js +1 -1
- package/dist/src/cli/commands/registry-pnpm-build-policy-flow.d.ts +30 -0
- package/dist/src/cli/commands/registry-pnpm-build-policy-flow.js +1 -0
- package/dist/src/cli/commands/registry-pnpm-build-policy.d.ts +12 -0
- package/dist/src/cli/commands/registry-pnpm-build-policy.js +6 -0
- package/dist/src/cli/commands/registry-recovery.d.ts +4 -0
- package/dist/src/cli/commands/registry-recovery.js +1 -1
- package/dist/src/cli/commands/registry.d.ts +1 -1
- package/dist/src/cli/commands/registry.js +1 -1
- package/dist/src/cli/dev/tui/setup-commands.js +2 -2
- package/dist/src/compiled/.vendor-stamp.json +7 -7
- package/dist/src/compiled/@workflow/core/attribute-changes.d.ts +2 -4
- package/dist/src/compiled/@workflow/core/capabilities.d.ts +10 -9
- package/dist/src/compiled/@workflow/core/capture-stack.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/class-serialization.d.ts +8 -8
- package/dist/src/compiled/@workflow/core/context-violation-error.d.ts +5 -5
- package/dist/src/compiled/@workflow/core/create-hook.d.ts +2 -2
- package/dist/src/compiled/@workflow/core/describe-error.d.ts +7 -7
- package/dist/src/compiled/@workflow/core/encryption.d.ts +5 -5
- package/dist/src/compiled/@workflow/core/events-consumer.d.ts +49 -14
- package/dist/src/compiled/@workflow/core/flushable-stream.d.ts +4 -4
- package/dist/src/compiled/@workflow/core/global.d.ts +4 -2
- package/dist/src/compiled/@workflow/core/index.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/index.js +2 -2
- package/dist/src/compiled/@workflow/core/log-format.d.ts +2 -2
- package/dist/src/compiled/@workflow/core/private.d.ts +40 -78
- package/dist/src/compiled/@workflow/core/private.js +1 -1
- package/dist/src/compiled/@workflow/core/replay-payload-cache.d.ts +13 -17
- package/dist/src/compiled/@workflow/core/runtime/compute-instance.d.ts +4 -3
- package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +27 -27
- package/dist/src/compiled/@workflow/core/runtime/count-step-started-events.d.ts +7 -7
- package/dist/src/compiled/@workflow/core/runtime/deployment-guard.d.ts +7 -7
- package/dist/src/compiled/@workflow/core/runtime/get-port-lazy.d.ts +2 -2
- package/dist/src/compiled/@workflow/core/runtime/get-world-lazy.d.ts +2 -2
- package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +30 -49
- package/dist/src/compiled/@workflow/core/runtime/quickjs-entrypoint.d.ts +21 -10
- package/dist/src/compiled/@workflow/core/runtime/quickjs-runtime.d.ts +31 -15
- package/dist/src/compiled/@workflow/core/runtime/quickjs-serde.d.ts +10 -10
- package/dist/src/compiled/@workflow/core/runtime/replay-budget.d.ts +4 -4
- package/dist/src/compiled/@workflow/core/runtime/replay-recovery-reporter.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/runtime/resume-hook.d.ts +20 -12
- package/dist/src/compiled/@workflow/core/runtime/resume-latency.d.ts +37 -30
- package/dist/src/compiled/@workflow/core/runtime/run-id-time.d.ts +2 -2
- package/dist/src/compiled/@workflow/core/runtime/run.d.ts +22 -5
- package/dist/src/compiled/@workflow/core/runtime/runs.d.ts +4 -4
- package/dist/src/compiled/@workflow/core/runtime/start.d.ts +3 -3
- package/dist/src/compiled/@workflow/core/runtime/step-executor.d.ts +14 -14
- package/dist/src/compiled/@workflow/core/runtime/step-latency.d.ts +42 -25
- package/dist/src/compiled/@workflow/core/runtime/step-ownership.d.ts +6 -6
- package/dist/src/compiled/@workflow/core/runtime/step-single-flight.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +38 -24
- package/dist/src/compiled/@workflow/core/runtime/unserializable-step.d.ts +34 -0
- package/dist/src/compiled/@workflow/core/runtime/vm-mode.d.ts +2 -2
- package/dist/src/compiled/@workflow/core/runtime/wait-continuation.d.ts +31 -9
- package/dist/src/compiled/@workflow/core/runtime/wait-until.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/runtime/world-compatibility.d.ts +20 -9
- package/dist/src/compiled/@workflow/core/runtime/world-init.d.ts +5 -5
- package/dist/src/compiled/@workflow/core/runtime.js +3 -3
- package/dist/src/compiled/@workflow/core/sealed-box.d.ts +7 -7
- package/dist/src/compiled/@workflow/core/serialization/codec-devalue-vm.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/serialization/codec-devalue.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/serialization/codec.d.ts +4 -4
- package/dist/src/compiled/@workflow/core/serialization/compression.d.ts +12 -11
- package/dist/src/compiled/@workflow/core/serialization/encryption.d.ts +7 -7
- package/dist/src/compiled/@workflow/core/serialization/format.d.ts +6 -6
- package/dist/src/compiled/@workflow/core/serialization/hardened.d.ts +23 -22
- package/dist/src/compiled/@workflow/core/serialization/index.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/serialization/reducers/class-vm.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/serialization/reducers/step-function-vm.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/serialization/types.d.ts +5 -5
- package/dist/src/compiled/@workflow/core/serialization/workflow-vm.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/serialization-format.d.ts +11 -11
- package/dist/src/compiled/@workflow/core/serialization.d.ts +18 -19
- package/dist/src/compiled/@workflow/core/source-map.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/step/context-storage.d.ts +5 -5
- package/dist/src/compiled/@workflow/core/step/writable-stream.d.ts +3 -3
- package/dist/src/compiled/@workflow/core/symbols.d.ts +2 -2
- package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +71 -20
- package/dist/src/compiled/@workflow/core/telemetry.d.ts +15 -3
- package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/vm/script-cache.d.ts +9 -11
- package/dist/src/compiled/@workflow/core/workflow/abort-controller.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow/set-attributes.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow/world-init-stub.d.ts +1 -1
- package/dist/src/compiled/@workflow/core/workflow.js +1 -1
- package/dist/src/compiled/@workflow/errors/index.d.ts +18 -18
- package/dist/src/compiled/@workflow/errors/index.js +1 -1
- package/dist/src/compiled/@workflow/world/analytics.d.ts +3 -2
- package/dist/src/compiled/@workflow/world/attributes-validation.d.ts +28 -0
- package/dist/src/compiled/@workflow/world/attributes.d.ts +8 -107
- package/dist/src/compiled/@workflow/world/env-config.d.ts +5 -5
- package/dist/src/compiled/@workflow/world/event-metadata.d.ts +132 -0
- package/dist/src/compiled/@workflow/world/events.d.ts +42 -96
- package/dist/src/compiled/@workflow/world/hooks.d.ts +12 -11
- package/dist/src/compiled/@workflow/world/index.d.ts +3 -3
- package/dist/src/compiled/@workflow/world/interfaces.d.ts +94 -39
- package/dist/src/compiled/@workflow/world/queue.d.ts +29 -22
- package/dist/src/compiled/@workflow/world/runs.d.ts +20 -0
- package/dist/src/compiled/@workflow/world/slot-identity.d.ts +3 -3
- package/dist/src/compiled/@workflow/world/spec-version.d.ts +82 -15
- package/dist/src/compiled/@workflow/world/ulid.d.ts +2 -2
- package/dist/src/compiled/@workflow/world-local/index.js +5 -5
- package/dist/src/compiled/@workflow/world-vercel/index.js +12 -12
- package/dist/src/compiled/_chunks/workflow/{attribute-changes-DXbpwBdw.js → attribute-changes-BwAadFfB.js} +3 -3
- package/dist/src/compiled/_chunks/workflow/debug-log-CVPstO1D.js +1 -0
- package/dist/src/compiled/_chunks/workflow/dist-CgbVZs5l.js +40 -0
- package/dist/src/compiled/_chunks/workflow/dist-DjojkP5e.js +3 -0
- package/dist/src/compiled/_chunks/workflow/frames-CZ9eHShe.js +3 -0
- package/dist/src/compiled/_chunks/workflow/global-singleton-BNinwFrL.js +1 -0
- package/dist/src/compiled/_chunks/workflow/private-CZFMABEf.js +1 -0
- package/dist/src/compiled/_chunks/workflow/resume-hook-BToMtPbH.js +1 -0
- package/dist/src/compiled/_chunks/workflow/run-DzyAoGh4.js +1 -0
- package/dist/src/compiled/_chunks/workflow/sleep-3_A5uOp-.js +1 -0
- package/dist/src/compiled/_chunks/workflow/undici-DfxNX5og.js +95 -0
- package/dist/src/compiled/_chunks/workflow/wait-until-BtySPYD0.js +15 -0
- package/dist/src/compiled/_chunks/workflow/ws-transport-PnVVxT0R.js +1 -0
- package/dist/src/eve-channel/index.js +1 -1
- package/dist/src/execution/agent-handle-dispatch.js +1 -1
- package/dist/src/execution/continuation-conflict-step.d.ts +10 -0
- package/dist/src/execution/continuation-conflict-step.js +1 -0
- package/dist/src/execution/delegated-parent-notification.js +1 -1
- package/dist/src/execution/dispatch-runtime-actions-shared.d.ts +7 -29
- package/dist/src/execution/dispatch-runtime-actions-shared.js +1 -1
- package/dist/src/execution/dispatch-runtime-actions-start.d.ts +33 -0
- package/dist/src/execution/dispatch-runtime-actions-start.js +1 -0
- package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
- package/dist/src/execution/dispatch-turn-step.js +1 -1
- package/dist/src/execution/dynamic-connections.js +1 -1
- package/dist/src/execution/inline-turn.js +1 -1
- package/dist/src/execution/next-driver-action.d.ts +5 -4
- package/dist/src/execution/proxied-deliver-step.js +1 -1
- package/dist/src/execution/runtime-errors.d.ts +0 -12
- package/dist/src/execution/runtime-errors.js +1 -1
- package/dist/src/execution/session-timeout-steps.js +1 -1
- package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
- package/dist/src/execution/stable-workflow-names.d.ts +2 -2
- package/dist/src/execution/subagent-start-local.js +1 -1
- package/dist/src/execution/tasks/parent/dispatch-task-step.js +1 -1
- package/dist/src/execution/tasks/parent/run-parent.js +1 -1
- package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
- package/dist/src/execution/tool-run/start.js +1 -1
- package/dist/src/execution/tools/subagent/local.js +1 -1
- package/dist/src/execution/turn-workflow.js +1 -1
- package/dist/src/execution/workflow-entry.d.ts +5 -1
- package/dist/src/execution/workflow-entry.js +1 -1
- package/dist/src/execution/workflow-runtime.d.ts +12 -12
- package/dist/src/execution/workflow-runtime.js +1 -1
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/harness/tool-loop.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/internal/workflow/development-world-client.js +1 -1
- package/dist/src/packages/eve-catalog/src/index.js +1 -1
- package/dist/src/public/channels/slack/slackChannel.d.ts +7 -1
- package/dist/src/public/channels/slack/slackChannel.js +1 -1
- package/dist/src/setup/flows/registry.js +1 -1
- package/dist/src/setup/scaffold/connections/catalog.js +1 -1
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/docs/channels/custom.mdx +4 -0
- package/docs/channels/eve.mdx +12 -8
- package/docs/channels/mcp.mdx +4 -1
- package/docs/guides/instrumentation.md +1 -1
- package/docs/install-integrations.mdx +2 -0
- package/docs/instructions.mdx +1 -1
- package/docs/memory/custom-provider.md +214 -0
- package/docs/memory/file.md +129 -0
- package/docs/memory/meta.json +5 -0
- package/docs/memory/overview.mdx +282 -0
- package/docs/patterns/multi-tenant-memory.md +12 -20
- package/package.json +8 -8
- package/dist/src/compiled/_chunks/workflow/dist-CqvWKNQv.js +0 -3
- package/dist/src/compiled/_chunks/workflow/dist-Dk0aQqFO.js +0 -40
- package/dist/src/compiled/_chunks/workflow/dist-DpYyXbJv.js +0 -1
- package/dist/src/compiled/_chunks/workflow/env-config-L94XftKz.js +0 -1
- package/dist/src/compiled/_chunks/workflow/frames-Dl2Hcma4.js +0 -3
- package/dist/src/compiled/_chunks/workflow/private-CuQ4HTFC.js +0 -1
- package/dist/src/compiled/_chunks/workflow/resume-hook-E-Nkx8q_.js +0 -1
- package/dist/src/compiled/_chunks/workflow/run-cIeex2KF.js +0 -1
- package/dist/src/compiled/_chunks/workflow/sleep-CxFsdxB_.js +0 -1
- package/dist/src/compiled/_chunks/workflow/spec-version-DBUVfF_R.js +0 -1
- package/dist/src/compiled/_chunks/workflow/undici-DznrXKcM.js +0 -95
- package/dist/src/compiled/_chunks/workflow/wait-until-BZHmJCAW.js +0 -15
- package/dist/src/compiled/_chunks/workflow/ws-transport-Ct6yyRWZ.js +0 -1
- package/docs/memory.md +0 -408
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import{i as e,t}from"../../_chunks/workflow/rolldown-runtime-8V8biNmG.js";import{D as
|
|
2
|
-
`);for(let e of r){let r=e.trim().split(/\s+/);if(r.length<5||r[0]?.toUpperCase()!==`TCP`)continue;let[,i,,a,o]=r;if(a?.toUpperCase()!==`LISTENING`||o!==t.toString())continue;let s=i.lastIndexOf(`:`);if(s===-1)continue;let c=
|
|
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=
|
|
4
|
-
`);for(let e of r)if(e.includes(`LISTEN`)){let t=e.trim().split(/\s+/)[8];if(t){let e=t.lastIndexOf(`:`);if(e!==-1){let r=Be(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function We(e){try{let{stdout:t}=await ze(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Re(t,e)}catch{return[]}}async function Ge(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await He(e);case`darwin`:return await Ue(e);case`win32`:return await We(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const Ke=`${f}/flow?__health`;async function qe(e,t={}){let{endpoint:n=Ke,timeout:r=500}=t,i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return(await fetch(`http://localhost:${e}${n}`,{method:`HEAD`,signal:i.signal})).status===200}catch{return!1}finally{clearTimeout(a)}}async function Je(e){let t=await Ge();if(t.length===0)return;if(t.length===1)return t[0];let n=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await qe(t,e)})))).find(e=>e.isWorkflow);return n?n.port:(process.env.NODE_ENV===`development`&&console.debug(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function Ye(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Xe=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,Ze=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Qe=Ye(()=>({dataDir:Xe(),baseUrl:Ze()}));function $e(e){if(e.recoverActiveRuns!==void 0)return e.recoverActiveRuns;let t=process.env.WORKFLOW_LOCAL_RECOVER_ACTIVE_RUNS?.toLowerCase();return!(t===`0`||t===`false`)}function et(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??u(`http://localhost`)}async function tt(e){if(e.baseUrl)return e.baseUrl;if(process.env.WORKFLOW_LOCAL_BASE_URL)return process.env.WORKFLOW_LOCAL_BASE_URL;if(typeof e.port==`number`)return u(`http://localhost:${e.port}`);if(process.env.PORT)return u(`http://localhost:${process.env.PORT}`);let t=await Je({endpoint:d()});if(t)return u(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const nt=ce(()=>Math.random());function rt(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var it=class extends a{constructor(e,t){super(`Unsafe ${e} "${rt(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function U(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new it(e,t)}function W(e,...t){let n=H.resolve(e),r=H.resolve(e,...t);if(r!==n&&!r.startsWith(n+H.sep))throw new it(`path`,t.join(`/`));return r}const at=process.platform===`win32`;async function G(e,t=5){if(!at)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}const ot=new Set,st=new Set;function ct(){ot.clear(),st.clear()}const lt=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function ut(e){return e.replace(lt,``)}function dt(e,t){return e.endsWith(`.${t}`)}function ft(e){return!lt.test(e)}function K(e,t,n,r){return U(`fileId`,n),r!==void 0&&U(`tag`,r),W(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function q(e,t,n,r,i){if(U(`fileId`,n),i!==void 0&&U(`tag`,i),i){let a=await X(W(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return X(W(e,t,`${n}.json`),r)}async function pt(e,t){let n=`.${t}.json`;try{return(await z.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function mt(e,t,n){let r=`.${t}${n}`;try{return(await z.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function ht(e){let t=H.resolve(e);if(!st.has(t))try{await z.mkdir(t,{recursive:!0}),st.add(t)}catch(e){let n=e.code;if(Pe(n)&&!await gt(t))throw new Me(t,n)}}async function gt(e){try{return(await z.stat(e)).isDirectory()}catch{return!1}}async function _t(e,t){await ht(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return st.delete(H.resolve(e)),await ht(e),t()}}function J(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function vt(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function Y(e,t,n){return yt(e,JSON.stringify(t,J,2),n)}async function yt(e,t,n){if(!n?.overwrite){if(ot.has(e))throw new s(`File ${e} already exists and 'overwrite' is false`);try{throw await z.access(e),ot.add(e),new s(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${nt()}`,i=!1;try{await _t(H.dirname(e),async()=>{await z.writeFile(r,t),i=!0,await G(()=>z.rename(r,e))}),ot.add(e)}catch(e){throw i&&await G(()=>z.unlink(r),3).catch(()=>{}),e}}async function X(e,t){try{let n=await z.readFile(e,`utf-8`);return t.parse(JSON.parse(n,vt))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function bt(e){return await z.readFile(e)}async function xt(e){let t=await z.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function Z(e){try{await G(()=>z.unlink(e))}catch(e){if(e.code!==`ENOENT`)throw e}}async function Q(e,t){let n=`${e}.tmp.${nt()}`,r=!1;try{return await _t(H.dirname(e),async()=>{await z.writeFile(n,t,{flag:`wx`}),r=!0;try{return await G(()=>z.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await G(()=>z.unlink(n),3).catch(()=>{})}}async function St(e,t){try{return await _t(H.dirname(t),()=>G(()=>z.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function Ct(e){return wt(e,`.json`)}async function wt(e,t){try{return(await z.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}const Tt=`key:`;function Et(e){if(!e)return null;if(e.startsWith(`key:`))return{timestamp:new Date(0),id:null,sortKey:e.slice(4)};let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null,sortKey:null}}function Dt(e,t,n){return n?`${Tt}${n}`:t?`${e.toISOString()}|${t}`:e.toISOString()}async function Ot(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d,getSortKey:f,getSortKeyFromFileId:p}=e;i!==void 0&&U(`filePrefix`,i);let m=H.resolve(t),h=await Ct(m),g=i?h.filter(e=>e.startsWith(i)):h,_=a?g.filter(a):g,v=Et(l),y=_;if(v?.sortKey&&p){let e=v.sortKey;y=_.filter(t=>{let n=p(t);if(n===null)return!0;let r=n.localeCompare(e);return s===`desc`?r<0:r>0})}else v&&!v.sortKey&&(y=_.filter(e=>{let t=u(`${e}.json`);if(t){let e=v.timestamp.getTime(),n=t.getTime();return v.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let b=[];for(let e=0;e<y.length;e+=32){let t=y.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=H.join(m,`${e}.json`),i;try{let e=r?.get(t);i=e===void 0?await X(t,n):structuredClone(e)}catch(t){if(t instanceof A)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}return i&&o&&!await o(i)?null:i}));for(let e of i){if(!e)continue;let t=f?.(e)??null;if(v?.sortKey){if(t){let e=t.localeCompare(v.sortKey);if(s===`desc`?e>=0:e<=0)continue}b.push(e);continue}if(v){let t=e.createdAt.getTime(),n=v.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&v.id&&d&&d(e)>=v.id)continue}else if(t<n||t===n&&v.id&&d&&d(e)<=v.id)continue}b.push(e)}}b.sort((e,t)=>{if(f){let n=f(e),r=f(t);if(n!==null&&r!==null)return s===`asc`?n.localeCompare(r):r.localeCompare(n)}let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let x=b.length>c,S=x?b.slice(0,c):b;return{data:S,cursor:S.length>0?Dt(S[S.length-1].createdAt,d?.(S[S.length-1]),f?.(S[S.length-1])):null,hasMore:x}}let kt=null;function At(){return typeof import.meta.url==`string`&&import.meta.url?H.dirname(ve(import.meta.url)):null}async function jt(){if(kt)return kt;let e=At();if(e)try{let t=await Se(H.join(e,`../package.json`),`utf-8`);return kt=JSON.parse(t),kt}catch{}return kt={name:`@workflow/world-local`,version:`5.0.0-beta.37`},kt}const Mt=`version.txt`;var Nt=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},Pt=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 Ft(e){let t=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);if(!t)throw Error(`Invalid version string: "${e}"`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4],raw:e}}function $(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function It(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:Ft(t.substring(n+1))}}function Lt(e,t){return`${e}@${$(t)}`}function Rt(e,t){console.log(`[world-local] Upgrading from version ${$(e)} to ${$(t)}`)}async function zt(e){let t=H.resolve(e);try{await xe(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new Nt(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await ye(t,be.R_OK)}catch(e){let n=e;throw new Nt(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=H.join(t,`.workflow-write-test-${Date.now()}`);try{await Ee(n,``),await Te(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new Nt(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Bt(e){let t=H.join(H.resolve(e),Mt);try{return It(await Se(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Vt(e,t){await Ee(H.join(H.resolve(e),Mt),Lt((await jt()).name,t))}function Ht(e,t){return t||$(e)}async function Ut(e){await zt(e);let t=await jt(),n=Ft(t.version),r=await Bt(e);if(r===null){await Vt(e,n);return}let{version:i}=r;if($(i)!==$(n))try{Rt(i,n),await Vt(e,n)}catch(e){let r=Ht(i,e instanceof Pt?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${$(i)} to ${$(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let Wt=null;async function Gt(){return Wt||=import(`../../@opentelemetry/api/index.js`).catch(()=>null),Wt}let Kt=null;async function qt(){return Kt||=Gt().then(e=>e?e.trace.getTracer(`workflow`):null),Kt}async function Jt(e,...t){let[n,r]=await Promise.all([qt(),Gt()]),{fn:i,opts:a}=typeof t[0]==`function`?{fn:t[0],opts:{}}:{fn:t[1],opts:t[0]};if(!i)throw Error(`Function to trace must be provided`);return!n||!r?await i():n.startActiveSpan(e,a,async e=>{try{let t=await i(e);return e.setStatus({code:r.SpanStatusCode.OK}),t}catch(t){throw e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),t}finally{e.end()}})}async function Yt(e){let t=await Gt();if(t)return t.SpanKind[e]}function Xt(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Zt=Xt(`peer.service`),Qt=Xt(`rpc.system`),$t=Xt(`rpc.service`),en=Xt(`rpc.method`),tn=Xt(`workflow.run.id`),nn=Xt(`step.id`),rn={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},an={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},on=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function sn(e){if(e.length>=2&&typeof e[1]==`object`&&e[1]!==null){let t=e[1];if(typeof t.eventType==`string`)return t.eventType}}function cn(e,t){return typeof e[t]==`string`?e[t]:void 0}function ln(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function un(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.runId==`string`)return t.runId;for(let e of[`run`,`step`,`hook`,`wait`]){let n=t[e];if(typeof n==`object`&&n){let e=n.runId;if(typeof e==`string`)return e}}}function dn(e,t,n){let r=`${e}.${t}`,i={},a=an[r],o=a===void 0?on.has(r)?ln(n[0]):void 0:cn(n,a);if(o&&Object.assign(i,tn(o)),r===`world.steps.get`){let e=cn(n,1);e&&Object.assign(i,nn(e))}return i}function fn(e,t){let n={};for(let r of Object.keys(t))if(typeof t[r]!=`function`)n[r]=t[r];else{let i=t[r],a=String(r);n[r]=async(...t)=>{let n=`${e}.${a}`;if(e===`world.events`&&a===`create`){let r=sn(t);r&&(n=`${e}.${a} ${r}`)}return Jt(n,{kind:await Yt(`INTERNAL`)},async r=>{r?.setAttributes({...Zt(rn.peerService),...Qt(rn.rpcSystem),...$t(rn.rpcService),...en(n),...dn(e,a,t)});let o=await i(...t),s=un(o);return s&&r?.setAttributes(tn(s)),o})}}return n}var pn=t((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimit=t.Sema=void 0;let r=n(e(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};t.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}t.RateLimit=f}))(),mn=I(),hn=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,J))}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,vt)}};const gn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,_n=2147483647,vn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3;function yn(e,t){let n=process.env[e];if(n===void 0||n===``)return t;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>=0?r:t}function bn(){return{bodyTimeout:yn(`WORKFLOW_LOCAL_BODY_TIMEOUT_MS`,3e4),connections:1e3,headersTimeout:yn(`WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`,3e4),keepAliveTimeout:3e4}}const xn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function Sn(e){let t=e,n=new Set;for(;t&&typeof t==`object`&&!n.has(t);){if(n.add(t),`message`in t&&typeof t.message==`string`&&t.message.includes(xn))return!0;t=`cause`in t?t.cause:void 0}return!1}function Cn(e){let t=bn(),n=fe()?me({maxSockets:t.connections,keepAliveMs:t.keepAliveTimeout}):void 0,r=n?void 0:new mn.Agent(t),i=new hn,a=ce(),o=new pn.Sema(vn),s=new AbortController,c=s.signal,u=new Map,d=new Map,f=async(s,f,p)=>{let m=[];if(p?.idempotencyKey){let e=u.get(p.idempotencyKey);if(e)return{messageId:e}}let h=i.serialize(f),{prefix:g}=T(s),_=k.parse(`msg_${a()}`),v=f,y=v.runId??void 0,b=v.stepId??void 0;if(p?.idempotencyKey){let e=p.idempotencyKey;u.set(e,_),m.push(()=>{u.delete(e)})}return(async()=>{p?.delaySeconds&&p.delaySeconds>0&&await ke(Math.min(p.delaySeconds*1e3,_n),void 0,{signal:c}),o.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${vn}) reached, waiting for queue to free up`),await o.acquire());let i=0;try{for(let a=0;a<256;a++){let o={...p?.headers,"content-type":`application/json`,"x-vqs-queue-name":s,"x-vqs-message-id":_,"x-vqs-message-attempt":String(i+1)},u=d.get(g),f,m;try{if(u)f=await u(new Request(l(et(e),{type:`flow`}),{method:`POST`,headers:o,body:h}));else{let i=l(await tt(e),{type:`flow`});f=n?await pe(i,{method:`POST`,headers:new Headers(o),body:h,agents:n,headersTimeoutMs:t.headersTimeout,bodyTimeoutMs:t.bodyTimeout}):await fetch(i,{method:`POST`,duplex:`half`,dispatcher:r,headers:o,body:h})}i++,m=await f.text()}catch(e){let t=e?.name;if(c.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(Sn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${a+1}), retrying`,{queueName:s,messageId:_,...y&&{runId:y},...b&&{stepId:b},error:String(e)}),await ke(5e3,void 0,{signal:c});continue}if(f.ok){try{let e=Number(JSON.parse(m).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await ke(Math.min(e*1e3,_n),void 0,{signal:c});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${i}, HTTP ${f.status})`,{queueName:s,messageId:_,...y&&{runId:y},...b&&{stepId:b},handlerError:m}),await ke(5e3,void 0,{signal:c})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:s,messageId:_,...y&&{runId:y},...b&&{stepId:b}})}finally{o.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(Sn(e)?console.error(`[local world] Queue operation failed: detected "${xn}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler`,{queueName:s,messageId:_,...y&&{runId:y},...b&&{stepId:b},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of m)e()}),{messageId:_}},p=E({"x-vqs-queue-name":P,"x-vqs-message-id":k,"x-vqs-message-attempt":se()});return{queue:f,createQueueHandler:(e,t)=>async n=>{let r=p.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new hn().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,gn)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await jt()).version}`,registerHandler(e,t){d.set(e,t)},async close(){c.aborted||(s.abort(),n&&F(n),await r?.close())}}}var wn=t(((t,n)=>{var r=e(`constants`),i=process.cwd,a=null,o=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return a||=i.call(process),a};try{process.cwd()}catch{}if(typeof process.chdir==`function`){var s=process.chdir;process.chdir=function(e){a=null,s.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,s)}n.exports=c;function c(e){r.hasOwnProperty(`O_SYMLINK`)&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||n(e),e.chown=s(e.chown),e.fchown=s(e.fchown),e.lchown=s(e.lchown),e.chmod=i(e.chmod),e.fchmod=i(e.fchmod),e.lchmod=i(e.lchmod),e.chownSync=c(e.chownSync),e.fchownSync=c(e.fchownSync),e.lchownSync=c(e.lchownSync),e.chmodSync=a(e.chmodSync),e.fchmodSync=a(e.fchmodSync),e.lchmodSync=a(e.lchmodSync),e.stat=l(e.stat),e.fstat=l(e.fstat),e.lstat=l(e.lstat),e.statSync=u(e.statSync),e.fstatSync=u(e.fstatSync),e.lstatSync=u(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){}),o===`win32`&&(e.rename=typeof e.rename==`function`?(function(t){function n(n,r,i){var a=Date.now(),o=0;t(n,r,function s(c){if(c&&(c.code===`EACCES`||c.code===`EPERM`||c.code===`EBUSY`)&&Date.now()-a<6e4){setTimeout(function(){e.stat(r,function(e,a){e&&e.code===`ENOENT`?t(n,r,s):i(c)})},o),o<100&&(o+=10);return}i&&i(c)})}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.rename):e.rename),e.read=typeof e.read==`function`?(function(t){function n(n,r,i,a,o,s){var c;if(s&&typeof s==`function`){var l=0;c=function(u,d,f){if(u&&u.code===`EAGAIN`&&l<10)return l++,t.call(e,n,r,i,a,o,c);s.apply(this,arguments)}}return t.call(e,n,r,i,a,o,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.read):e.read,e.readSync=typeof e.readSync==`function`?(function(t){return function(n,r,i,a,o){for(var s=0;;)try{return t.call(e,n,r,i,a,o)}catch(e){if(e.code===`EAGAIN`&&s<10){s++;continue}throw e}}})(e.readSync):e.readSync;function t(e){e.lchmod=function(t,n,i){e.open(t,r.O_WRONLY|r.O_SYMLINK,n,function(t,r){if(t){i&&i(t);return}e.fchmod(r,n,function(t){e.close(r,function(e){i&&i(t||e)})})})},e.lchmodSync=function(t,n){var i=e.openSync(t,r.O_WRONLY|r.O_SYMLINK,n),a=!0,o;try{o=e.fchmodSync(i,n),a=!1}finally{if(a)try{e.closeSync(i)}catch{}else e.closeSync(i)}return o}}function n(e){r.hasOwnProperty(`O_SYMLINK`)&&e.futimes?(e.lutimes=function(t,n,i,a){e.open(t,r.O_SYMLINK,function(t,r){if(t){a&&a(t);return}e.futimes(r,n,i,function(t){e.close(r,function(e){a&&a(t||e)})})})},e.lutimesSync=function(t,n,i){var a=e.openSync(t,r.O_SYMLINK),o,s=!0;try{o=e.futimesSync(a,n,i),s=!1}finally{if(s)try{e.closeSync(a)}catch{}else e.closeSync(a)}return o}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}function i(t){return t&&function(n,r,i){return t.call(e,n,r,function(e){d(e)&&(e=null),i&&i.apply(this,arguments)})}}function a(t){return t&&function(n,r){try{return t.call(e,n,r)}catch(e){if(!d(e))throw e}}}function s(t){return t&&function(n,r,i,a){return t.call(e,n,r,i,function(e){d(e)&&(e=null),a&&a.apply(this,arguments)})}}function c(t){return t&&function(n,r,i){try{return t.call(e,n,r,i)}catch(e){if(!d(e))throw e}}}function l(t){return t&&function(n,r,i){typeof r==`function`&&(i=r,r=null);function a(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),i&&i.apply(this,arguments)}return r?t.call(e,n,r,a):t.call(e,n,a)}}function u(t){return t&&function(n,r){var i=r?t.call(e,n,r):t.call(e,n);return i&&(i.uid<0&&(i.uid+=4294967296),i.gid<0&&(i.gid+=4294967296)),i}}function d(e){return!e||e.code===`ENOSYS`||(!process.getuid||process.getuid()!==0)&&(e.code===`EINVAL`||e.code===`EPERM`)}}})),Tn=t(((t,n)=>{var r=e(`stream`).Stream;n.exports=i;function i(e){return{ReadStream:t,WriteStream:n};function t(n,i){if(!(this instanceof t))return new t(n,i);r.call(this);var a=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags=`r`,this.mode=438,this.bufferSize=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())}}})),En=t(((e,t)=>{t.exports=r;var n=Object.getPrototypeOf||function(e){return e.__proto__};function r(e){if(typeof e!=`object`||!e)return e;if(e instanceof Object)var t={__proto__:n(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}),t}})),Dn=t(((t,n)=>{var r=e(`fs`),i=wn(),a=Tn(),o=En(),s=e(`util`),c,l;typeof Symbol==`function`&&typeof Symbol.for==`function`?(c=Symbol.for(`graceful-fs.queue`),l=Symbol.for(`graceful-fs.previous`)):(c=`___graceful-fs.queue`,l=`___graceful-fs.previous`);function u(){}function d(e,t){Object.defineProperty(e,c,{get:function(){return t}})}var f=u;s.debuglog?f=s.debuglog(`gfs4`):/\bgfs4\b/i.test(process.env.NODE_DEBUG||``)&&(f=function(){var e=s.format.apply(s,arguments);e=`GFS4: `+e.split(/\n/).join(`
|
|
5
|
-
GFS4: `),console.error(e)}),r[c]||(d(r,global[c]||[]),r.close=(function(e){function t(t,n){return e.call(r,t,function(e){e||g(),typeof n==`function`&&n.apply(this,arguments)})}return Object.defineProperty(t,l,{value:e}),t})(r.close),r.closeSync=(function(e){function t(t){e.apply(r,arguments),g()}return Object.defineProperty(t,l,{value:e}),t})(r.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||``)&&process.on(`exit`,function(){f(r[c]),e(`assert`).equal(r[c].length,0)})),global[c]||d(global,r[c]),n.exports=p(o(r)),process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!r.__patched&&(n.exports=p(r),r.__patched=!0);function p(e){i(e),e.gracefulify=p,e.createReadStream=T,e.createWriteStream=E;var t=e.readFile;e.readFile=n;function n(e,n,r){return typeof n==`function`&&(r=n,n=null),i(e,n,r);function i(e,n,r,a){return t(e,n,function(t){t&&(t.code===`EMFILE`||t.code===`ENFILE`)?m([i,[e,n,r],t,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var r=e.writeFile;e.writeFile=o;function o(e,t,n,i){return typeof n==`function`&&(i=n,n=null),a(e,t,n,i);function a(e,t,n,i,o){return r(e,t,n,function(r){r&&(r.code===`EMFILE`||r.code===`ENFILE`)?m([a,[e,t,n,i],r,o||Date.now(),Date.now()]):typeof i==`function`&&i.apply(this,arguments)})}}var s=e.appendFile;s&&(e.appendFile=c);function c(e,t,n,r){return typeof n==`function`&&(r=n,n=null),i(e,t,n,r);function i(e,t,n,r,a){return s(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var l=e.copyFile;l&&(e.copyFile=u);function u(e,t,n,r){return typeof n==`function`&&(r=n,n=0),i(e,t,n,r);function i(e,t,n,r,a){return l(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var d=e.readdir;e.readdir=h;var f=/^v[0-5]\./;function h(e,t,n){typeof t==`function`&&(n=t,t=null);var r=f.test(process.version)?function(e,t,n,r){return d(e,i(e,t,n,r))}:function(e,t,n,r){return d(e,t,i(e,t,n,r))};return r(e,t,n);function i(e,t,n,i){return function(a,o){a&&(a.code===`EMFILE`||a.code===`ENFILE`)?m([r,[e,t,n],a,i||Date.now(),Date.now()]):(o&&o.sort&&o.sort(),typeof n==`function`&&n.call(this,a,o))}}}if(process.version.substr(0,4)===`v0.8`){var g=a(e);x=g.ReadStream,C=g.WriteStream}var _=e.ReadStream;_&&(x.prototype=Object.create(_.prototype),x.prototype.open=S);var v=e.WriteStream;v&&(C.prototype=Object.create(v.prototype),C.prototype.open=w),Object.defineProperty(e,"ReadStream",{get:function(){return x},set:function(e){x=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return C},set:function(e){C=e},enumerable:!0,configurable:!0});var y=x;Object.defineProperty(e,"FileReadStream",{get:function(){return y},set:function(e){y=e},enumerable:!0,configurable:!0});var b=C;Object.defineProperty(e,"FileWriteStream",{get:function(){return b},set:function(e){b=e},enumerable:!0,configurable:!0});function x(e,t){return this instanceof x?(_.apply(this,arguments),this):x.apply(Object.create(x.prototype),arguments)}function S(){var e=this;D(e.path,e.flags,e.mode,function(t,n){t?(e.autoClose&&e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n),e.read())})}function C(e,t){return this instanceof C?(v.apply(this,arguments),this):C.apply(Object.create(C.prototype),arguments)}function w(){var e=this;D(e.path,e.flags,e.mode,function(t,n){t?(e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n))})}function T(t,n){return new e.ReadStream(t,n)}function E(t,n){return new e.WriteStream(t,n)}var ee=e.open;e.open=D;function D(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 ee(e,t,n,function(o,s){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}return e}function m(e){f(`ENQUEUE`,e[0].name,e[1]),r[c].push(e),_()}var h;function g(){for(var e=Date.now(),t=0;t<r[c].length;++t)r[c][t].length>2&&(r[c][t][3]=e,r[c][t][4]=e);_()}function _(){if(clearTimeout(h),h=void 0,r[c].length!==0){var e=r[c].shift(),t=e[0],n=e[1],i=e[2],a=e[3],o=e[4];if(a===void 0)f(`RETRY`,t.name,n),t.apply(null,n);else if(Date.now()-a>=6e4){f(`TIMEOUT`,t.name,n);var s=n.pop();typeof s==`function`&&s.call(null,i)}else{var l=Date.now()-o,u=Math.max(o-a,1);l>=Math.min(u*1.2,100)?(f(`RETRY`,t.name,n),t.apply(null,n.concat([a]))):r[c].push(e)}h===void 0&&(h=setTimeout(_,0))}}})),On=t(((e,t)=>{function n(e,t){typeof t==`boolean`&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}t.exports=n,n.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},n.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},n.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error(`RetryOperation timeout occurred`)),!1;this._errors.push(e);var n=this._timeouts.shift();if(n===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),n=this._timeouts.shift();else return!1;var r=this,i=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},n);return this._options.unref&&i.unref(),!0},n.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){n._operationTimeoutCb()},n._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},n.prototype.try=function(e){console.log(`Using RetryOperation.try() is deprecated`),this.attempt(e)},n.prototype.start=function(e){console.log(`Using RetryOperation.start() is deprecated`),this.attempt(e)},n.prototype.start=n.prototype.try,n.prototype.errors=function(){return this._errors},n.prototype.attempts=function(){return this._attempts},n.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,n=0,r=0;r<this._errors.length;r++){var i=this._errors[r],a=i.message,o=(e[a]||0)+1;e[a]=o,o>=n&&(t=i,n=o)}return t}})),kn=t((e=>{var t=On();e.operation=function(n){return new t(e.timeouts(n),{forever:n&&n.forever,unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},e.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout: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}}})),An=t(((e,t)=>{t.exports=kn()})),jn=t(((e,t)=>{let n=Symbol();function r(e,t,r){let i=t[n];if(i)return t.stat(e,(e,t)=>{if(e)return r(e);r(null,t.mtime,i)});let a=new Date(Math.ceil(Date.now()/1e3)*1e3+5);t.utimes(e,a,a,i=>{if(i)return r(i);t.stat(e,(e,i)=>{if(e)return r(e);let a=i.mtime.getTime()%1e3==0?`s`:`ms`;Object.defineProperty(t,n,{value:a}),r(null,i.mtime,a)})})}function i(e){let t=Date.now();return e===`s`&&(t=Math.ceil(t/1e3)*1e3),new Date(t)}t.exports.probe=r,t.exports.getMtime=i})),Mn=t(((t,n)=>{let r=e(`path`),i=Dn(),a=An(),o=L(),s=jn(),c={};function l(e,t){return t.lockfilePath||`${e}.lock`}function u(e,t,n){if(!t.realpath)return n(null,r.resolve(e));t.fs.realpath(e,n)}function d(e,t,n){let r=l(e,t);t.fs.mkdir(r,i=>{if(!i)return s.probe(r,t.fs,(e,i,a)=>{if(e)return t.fs.rmdir(r,()=>{}),n(e);n(null,i,a)});if(i.code!==`EEXIST`)return n(i);if(t.stale<=0)return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));t.fs.stat(r,(r,i)=>{if(r)return r.code===`ENOENT`?d(e,{...t,stale:0},n):n(r);if(!f(i,t))return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));p(e,t,r=>{if(r)return n(r);d(e,{...t,stale:0},n)})})})}function f(e,t){return e.mtime.getTime()<Date.now()-t.stale}function p(e,t,n){t.fs.rmdir(l(e,t),e=>{if(e&&e.code!==`ENOENT`)return n(e);n()})}function m(e,t){let n=c[e];n.updateTimeout||(n.updateDelay=n.updateDelay||t.update,n.updateTimeout=setTimeout(()=>{n.updateTimeout=null,t.fs.stat(n.lockfilePath,(r,i)=>{let a=n.lastUpdate+t.stale<Date.now();if(r)return r.code===`ENOENT`||a?h(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,m(e,t));if(n.mtime.getTime()!==i.mtime.getTime())return h(e,n,Object.assign(Error(`Unable to update lock within the stale threshold`),{code:`ECOMPROMISED`}));let o=s.getMtime(n.mtimePrecision);t.fs.utimes(n.lockfilePath,o,o,r=>{let i=n.lastUpdate+t.stale<Date.now();if(!n.released){if(r)return r.code===`ENOENT`||i?h(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,m(e,t));n.mtime=o,n.lastUpdate=Date.now(),n.updateDelay=null,m(e,t)}})})},n.updateDelay),n.updateTimeout.unref&&n.updateTimeout.unref())}function h(e,t,n){t.released=!0,t.updateTimeout&&clearTimeout(t.updateTimeout),c[e]===t&&delete c[e],t.options.onCompromised(n)}function g(e,t,n){t={stale:1e4,update:null,realpath:!0,retries:0,fs:i,onCompromised:e=>{throw e},...t},t.retries=t.retries||0,t.retries=typeof t.retries==`number`?{retries:t.retries}:t.retries,t.stale=Math.max(t.stale||0,2e3),t.update=t.update==null?t.stale/2:t.update||0,t.update=Math.max(Math.min(t.update,t.stale/2),1e3),u(e,t,(e,r)=>{if(e)return n(e);let i=a.operation(t.retries);i.attempt(()=>{d(r,t,(e,a,o)=>{if(i.retry(e))return;if(e)return n(i.mainError());let s=c[r]={lockfilePath:l(r,t),mtime:a,mtimePrecision:o,options:t,lastUpdate:Date.now()};m(r,t),n(null,e=>{if(s.released)return e&&e(Object.assign(Error(`Lock is already released`),{code:`ERELEASED`}));_(r,{...t,realpath:!1},e)})})})})}function _(e,t,n){t={fs:i,realpath:!0,...t},u(e,t,(e,r)=>{if(e)return n(e);let i=c[r];if(!i)return n(Object.assign(Error(`Lock is not acquired/owned by you`),{code:`ENOTACQUIRED`}));i.updateTimeout&&clearTimeout(i.updateTimeout),i.released=!0,delete c[r],p(r,t,n)})}function v(e,t,n){t={stale:1e4,realpath:!0,fs:i,...t},t.stale=Math.max(t.stale||0,2e3),u(e,t,(e,r)=>{if(e)return n(e);t.fs.stat(l(r,t),(e,r)=>e?e.code===`ENOENT`?n(null,!1):n(e):n(null,!f(r,t)))})}function y(){return c}o(()=>{for(let e in c){let t=c[e].options;try{t.fs.rmdirSync(l(e,t))}catch{}}}),n.exports.lock=g,n.exports.unlock=_,n.exports.check=v,n.exports.getLocks=y})),Nn=t(((e,t)=>{let n=Dn();function r(e){let t=[`mkdir`,`realpath`,`stat`,`rmdir`,`utimes`],n={...e};return t.forEach(t=>{n[t]=(...n)=>{let r=n.pop(),i;try{i=e[`${t}Sync`](...n)}catch(e){return r(e)}r(null,i)}}),n}function i(e){return(...t)=>new Promise((n,r)=>{t.push((e,t)=>{e?r(e):n(t)}),e(...t)})}function a(e){return(...t)=>{let n,r;if(t.push((e,t)=>{n=e,r=t}),e(...t),n)throw n;return r}}function o(e){if(e={...e},e.fs=r(e.fs||n),typeof e.retries==`number`&&e.retries>0||e.retries&&typeof e.retries.retries==`number`&&e.retries.retries>0)throw Object.assign(Error(`Cannot use retries with the sync api`),{code:`ESYNC`});return e}t.exports={toPromise:i,toSync:a,toSyncOptions:o}})),Pn=t(((e,t)=>{let n=Mn(),{toPromise:r,toSync:i,toSyncOptions:a}=Nn();async function o(e,t){let i=await r(n.lock)(e,t);return r(i)}function s(e,t){let r=i(n.lock)(e,a(t));return i(r)}function c(e,t){return r(n.unlock)(e,t)}function l(e,t){return i(n.unlock)(e,a(t))}function u(e,t){return r(n.check)(e,t)}function d(e,t){return i(n.check)(e,a(t))}t.exports=o,t.exports.lock=o,t.exports.unlock=c,t.exports.lockSync=s,t.exports.unlockSync=l,t.exports.check=u,t.exports.checkSync=d}))();function Fn(e){return R(`sha256`).update(e).digest(`hex`)}function In(e,t,n){return W(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function Ln(e,t,n){let r=[In(e,t)];n&&r.push(In(e,t,n));for(let e of r)try{return await B.access(e),!0}catch{}return!1}function Rn(e,t,n){return W(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function zn(e,t,n){let r=[Rn(e,t)];n&&r.push(Rn(e,t,n));for(let e of r)try{return await B.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function Bn(e,t,n){return W(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function Vn(e,t,n,r){return H.join(Bn(e,t,r),`${n}.json`)}async function Hn(e,t,n){let r=[Bn(e,t)];n&&r.push(Bn(e,t,n));for(let e of r){let t;try{t=await B.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await G(()=>B.unlink(H.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await B.rmdir(e).catch(()=>{})}}async function Un(e,t,n){let r=await Wn(e,t,n),i=Date.now();if(r.maxId)try{let e=j(r.maxId.replace(/^evnt_/,``));i<=e&&(i=e+1)}catch{}return{eventId:`evnt_${Qn(i)}`,createdAt:new Date(i)}}async function Wn(e,t,n){let r=[];try{r=await B.readdir(H.join(e,`events`))}catch(e){if(e.code!==`ENOENT`)throw e}let i=`${t}-`,a=[],o=null,s=0,c=!1,l=0;for(let e of r){if(!e.startsWith(i)||!e.endsWith(`.json`))continue;let t=e.slice(0,-5);if(!ft(t)&&!(n&&dt(t,n)))continue;let r=ut(t).slice(i.length);l+=1,a.push(r),(!o||r>o)&&(o=r);let u=te(r);u!==null&&(c=!0,u>s&&(s=u))}return{maxId:o,usesSlots:c,maxSlot:s,count:l,ids:a}}function Gn(e,t){return H.join(e,`hooks`,`tokens`,`${Fn(t)}.json`)}const Kn=E({hookId:w().optional(),runId:w(),eventId:w().optional(),tokenRetentionUntil:ue().optional()});async function qn(e){try{return await X(e,Kn)}catch(e){if(e instanceof SyntaxError||e instanceof A)return null;throw e}}async function Jn(e,t,n){let r=Gn(e,t);await B.mkdir(H.dirname(r),{recursive:!0});let i=new AbortController,o;try{o=await(0,Pn.lock)(r,{realpath:!1,stale:3e4,update:1e3,retries:{retries:350,factor:1,minTimeout:100,maxTimeout:100},onCompromised(e){i.abort(new a(`Hook token claim lock was compromised`,{cause:e}))}})}catch(e){throw new a(`Could not acquire Hook token claim lock`,{cause:e})}let s;try{s=await n(i.signal),i.signal.throwIfAborted()}catch(e){throw i.signal.aborted||await o().catch(()=>{}),e}try{await o()}catch(e){throw new a(`Could not release Hook token claim lock`,{cause:e})}return s}function Yn(e,t,n){let r=R(`sha256`).update(`${t}\x00${n}`).digest(`hex`);return H.join(e,`hooks`,`resumes`,`${r}.json`)}async function Xn(e,t,n,r){await Jn(e,t,async i=>{let a=Gn(e,t),o=await qn(a);o&&o.runId===n&&o.hookId===r&&(i.throwIfAborted(),await Z(a))})}function Zn(e,t,n,r){let i=R(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return H.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const Qn=ce(()=>Math.random()),$n=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=ut(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?oe(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:oe(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},er=E({runId:w()}),tr=E({hookId:w(),tag:w().optional()});function nr(e,t){return W(e,`hooks`,`token-index`,Fn(t))}function rr(e,t){return U(`hookId`,t),W(e,`hooks`,`id-index`,t)}function ir(e){return W(e,`hooks`,`by-run`)}function ar(e){let t=ut(e);return t===e?void 0:e.slice(t.length+1)}function or(e,t){return t?ft(e)||dt(e,t):ft(e)}async function sr(e){try{return await X(e,C)}catch(e){if(e instanceof SyntaxError||e instanceof A)return null;throw e}}async function cr(e,t,n,r,i,a){U(`runId`,n),U(`eventId`,i),a!==void 0&&U(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([Q(H.join(nr(e,t),o),s),Q(H.join(rr(e,r),o),s)])}function lr(e,t,n,r){return K(e,`hooks/by-run`,`${t}-${n}`,r)}async function ur(e,t,n,r){await Q(lr(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function dr(e,t,n,r){await Z(lr(e,t,n,r)),r&&await Z(lr(e,t,n))}async function fr(e,t){U(`runId`,t);let n=ir(e),r=`${t}-`,i=[];for(let e of await Ct(n)){if(!e.startsWith(r))continue;let t=null;try{t=await X(H.join(n,`${e}.json`),tr)}catch(e){if(!(e instanceof SyntaxError||e instanceof A))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function pr(e,t){await Z(H.join(ir(e),`${t}.json`))}const mr=new Map;function hr(){mr.clear()}async function gr(e){let t=H.resolve(e),n=mr.get(t);return n||(n=vr(t).catch(e=>{throw mr.delete(t),e}),mr.set(t,n)),n}async function _r(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function vr(e){let t=H.join(e,`hooks`,`.hook-index-complete`);try{await B.access(t);return}catch{}let n=H.join(e,`events`);await _r(await Ct(n),32,async t=>{let r=await sr(H.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 cr(e,i,r.runId,r.correlationId,r.eventId,ar(t))}catch{}});let r=H.join(e,`hooks`);await _r(await Ct(r),32,async t=>{let n=null;try{n=await X(H.join(r,`${t}.json`),M)}catch(e){if(!(e instanceof SyntaxError||e instanceof A))throw e}if(n)try{await ur(e,n.runId,n.hookId,ar(t))}catch{}}),await Q(t,``)}async function yr(e,t,n,r){await gr(e);let i;try{i=t.kind===`token`?nr(e,t.token):rr(e,t.hookId)}catch{return null}let a=(await Ct(i)).filter(e=>or(e,r)).sort((e,t)=>ut(t).localeCompare(ut(e)));for(let t of a){let r=null;try{r=await X(H.join(i,`${t}.json`),er)}catch(e){if(!(e instanceof SyntaxError||e instanceof A))throw e}if(!r)continue;let a=ut(t),o;try{o=K(e,`events`,`${r.runId}-${a}`,ar(t))}catch{continue}let s=await sr(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function br(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function xr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Sr(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function Cr(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function wr(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 Tr(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function Er(e,t,n){let r=await q(e,`runs`,t,v,n);return r?b(r.status):!1}async function Dr(e,t,n,r){let i=await yr(e,t,e=>Tr(e,n),r);if(!i||!Tr(i,n))return null;if(await Er(e,i.runId,r)){let e=i.eventData.tokenRetentionUntil;if(!e||e.getTime()<=Date.now())return null}return await Ln(e,i.correlationId,r)?null:i}async function Or(e,t,n){let r=wr(t);return await Q(Gn(e,r.token),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId,tokenRetentionUntil:t.eventData.tokenRetentionUntil})),await ur(e,r.runId,r.hookId,n),await Q(K(e,`hooks`,r.hookId,n),JSON.stringify(r,J,2)),r}async function kr(e,t,n){let r=await Dr(e,{kind:`token`,token:t},e=>Cr(e)===t,n);return r?Or(e,r,n):null}async function Ar(e,t,n){let r=await Dr(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?Or(e,r,n):null}function jr(e,t){async function n(n){return await Ln(e,n.hookId,t)?!1:n.tokenRetentionUntil&&n.tokenRetentionUntil.getTime()>Date.now()?!0:!await Er(e,n.runId,t)}async function r(r){let i=await qn(Gn(e,r));if(i?.hookId){try{let a=await q(e,`hooks`,i.hookId,M,t);if(a?.token===r){if(!await n(a))throw new o(r);return{...a,isWebhook:a.isWebhook??!0}}}catch(e){if(!it.is(e))throw e}return null}let a=H.join(e,`hooks`),s=await Ct(a);for(let e of s){let t=await X(H.join(a,`${e}.json`),M);if(t?.token===r){if(!await n(t))throw new o(r);return{...t,isWebhook:t.isWebhook??!0}}}return null}async function i(r,i){U(`hookId`,r);let a=await q(e,`hooks`,r,M,t);if(a&&!await n(a))throw new o(r);let s=a??await Ar(e,r,t);if(!s)throw new o(r);let c=i?.resolveData||`all`;return Sr({...s,isWebhook:s.isWebhook??!0},c)}async function a(n){let i=await r(n)??await kr(e,n,t);if(!i)throw new o(n);return i}async function s(t){let r=H.join(e,`hooks`),i=t.resolveData||`all`,a=await Ot({directory:r,schema:M,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:async e=>t.runId&&e.runId!==t.runId?!1:n(e),getCreatedAt:()=>null,getId:e=>e.hookId});return{...a,data:a.data.map(e=>Sr(e,i))}}return{get:i,getByToken:a,list:s}}async function Mr(e,t){await gr(e);for(let n of await fr(e,t)){if(n.hookId){let r=null,i=null;try{i=K(e,`hooks`,n.hookId,n.tag),r=await X(i,M)}catch(e){if(!it.is(e)&&!(e instanceof SyntaxError||e instanceof A))throw e}if(r&&i&&r.runId===t){if(r.tokenRetentionUntil&&r.tokenRetentionUntil.getTime()>Date.now())continue;await Xn(e,r.token,r.runId,r.hookId),await Z(Zn(e,r.token,r.runId,r.hookId)),await Z(i)}}await pr(e,n.fileId)}}async function Nr(e,t,n,i,a,o){if(b(o.status)||await zn(e,t))throw new r(`Workflow run "${t}" is already in a terminal state`);let s=Vn(e,t,n);await Q(s,i);try{if(await zn(e,t)||await St(s,a)!==`linked`)throw new r(`Workflow run "${t}" is already in a terminal state`)}finally{await B.unlink(s).catch(()=>{})}}async function Pr(e,t,n,r,i){U(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await Q(Rn(e,t),``),await Hn(e,t);let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await Y(W(e,`runs`,`${t}.json`),i,{overwrite:!0}),await Mr(e,t),{event:void 0,run:br(i,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${Qn()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:6},c=W(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await Nr(e,t,i,JSON.stringify(s,J,2),c,r):await Y(c,s),{event:N(s,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const Fr=new Map;function Ir(e,t){let n=Fr.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{Fr.get(e)===r.task&&Fr.delete(e)}})();return r.task=i,Fr.set(e,i),i}function Lr(e,t){let r=(async(r,i)=>{U(`runId`,r);let a=await q(e,`runs`,r,v,t);if(!a)throw new n(r);return br(a,i?.resolveData??`all`)});return{get:r,getMany:(async(e,t)=>{let i=[...new Set(e)],a=await Promise.all(i.map(async e=>{try{return await r(e,t)}catch(e){if(e instanceof n)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 Ot({directory:H.join(e,`runs`),schema:v,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:$n(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(r,i,a)=>(U(`runId`,r),Ir(r,async()=>{let o=await q(e,`runs`,r,v,t);if(!o)throw new n(r);try{p(i,{existingKeys:Object.keys(o.attributes??{}),allowReservedAttributes:a?.allowReservedAttributes})}catch(e){throw e instanceof O,e}let s=S(o.attributes,i),c={...o,attributes:s,updatedAt:new Date};return await Y(K(e,`runs`,r,t),c,{overwrite:!0}),{attributes:s}}))}}const Rr=1440*60*1e3;function zr(){let e=Number(process.env.WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS??30);if(!Number.isFinite(e)||e<=0)throw new a(`WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS must be a positive number`,{status:400});return e*Rr}const Br=E({eventId:w()}),Vr=E({runId:w(),resumeId:w(),hookId:w(),eventId:w(),payloadDigest:w().optional()});function Hr(e,t){return e.eventType===`hook_received`&&e.correlationId===t.hookId&&(e.resumeId===void 0||e.resumeId===t.resumeId)}async function Ur(e,t,n,r){let i=await Wn(e,t,r);for(let a of i.ids){let i=await q(e,`events`,`${t}-${a}`,C,r);if(i&&i.resumeId===n.resumeId&&Hr(i,n))return i}return null}async function Wr(e,t,n){if(t.hookId&&await Ln(e,t.hookId,n))return!0;let r=await q(e,`runs`,t.runId,v,n);return r?b(r.status)?!t.tokenRetentionUntil||t.tokenRetentionUntil.getTime()<=Date.now():!1:!0}async function Gr(e){try{return await X(e,Br)}catch(e){if(e instanceof SyntaxError||e instanceof A)return null;throw e}}function Kr(e){return ie(e.eventId)?e.eventId:null}function qr(e,t){let n=ut(t).slice(e.length+1);return ie(n)?n:null}async function Jr(e,t,n){return(await Ot({directory:H.join(e,`events`),schema:C,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:$n(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function Yr(e,t,n,r,i){let a=await q(e,`events`,`${t}-${r}`,C,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await q(e,`hooks`,n,M,i))return;let o=wr(a);await cr(e,o.token,t,n,r,i),await ur(e,t,n,i),await Q(K(e,`hooks`,n,i),JSON.stringify(o,J,2))}async function Xr(e,t,n,r,i){let a=Zn(e,t,n,r);return await Q(a,JSON.stringify({eventId:i}))?i:(await Gr(a))?.eventId??null}function Zr(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 Qr(e,t){let n=H.join(e,`waits`),r=await Ct(n);for(let e of r)e.startsWith(`${t}-`)&&await Z(H.join(n,`${e}.json`))}async function $r(e,t,n,r){return Ir(t,async()=>{let i=await X(K(e,`runs`,t,n),v),a={...r,attributes:i?.attributes??r.attributes};return await Y(K(e,`runs`,t,n),a,{overwrite:!0}),a})}function ei(e,t){let l=zr(),u=4*1024*1024,d=new Map,f=new Map,h=new Map,w=0;function T(e){let t=d.get(e);if(!t)return;d.delete(e),w-=f.get(e)??0,f.delete(e);let n=h.get(t.runId);n?.delete(e),n?.size===0&&h.delete(t.runId)}function E(e){for(let t of h.get(e)??[])T(t)}function O(){d.clear(),f.clear(),h.clear(),w=0,k.clear()}let k=new Map;function A(e){return t?`${e}.${t}`:e}async function j(n,r){let i=`${n}-${ne(r)}`;for(let n of t?[K(e,`events`,i,t),K(e,`events`,i)]:[K(e,`events`,i)])try{return await B.stat(n),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}async function ae(n,r){let i=A(n),a=k.get(i);if(a===void 0||r?.rescan){let r=await Wn(e,n,t);a===void 0?(a=r.count>0&&!r.usesSlots?null:{published:r.maxSlot},k.set(i,a)):a!==null&&(a.published=Math.max(a.published,r.maxSlot))}if(a===null)return null;let o=Math.max(a.published+1,1,r?.atLeast??1);for(;await j(n,o);)a.published=Math.max(a.published,o),o+=1;return o}function se(e,t){let n=te(t);if(n===null)return;let r=k.get(A(e));r&&(r.published=Math.max(r.published,n))}async function ce(e){let t=await ae(e);return t===null?`evnt_${Qn()}`:ne(t)}async function ue(n){let r=await ae(n,{rescan:!0});return r===null?Un(e,n,t):{eventId:ne(r),createdAt:new Date}}function P(e,t,n){if(n>u)return;for(;d.size>0&&(d.size>=1e3||w+n>u);){let e=d.keys().next().value;T(e)}d.set(e,t),f.set(e,n),w+=n;let r=h.get(t.runId)??new Set;r.add(e),h.set(t.runId,r)}function fe(e,t,n){if(y(e.eventType)){E(e.runId);return}let r=Buffer.byteLength(n);if(r>u)return;let i=C.safeParse(JSON.parse(n,vt));i.success&&P(t,i.data,r)}async function pe(n){let r=n;for(let n=0;;n++){let i=K(e,`events`,`${r.runId}-${r.eventId}`,t),a=JSON.stringify(r,J,2),o=te(r.eventId);if(o===null)return await yt(i,a),fe(r,i,a),r;if(await Q(i,a))return se(r.runId,r.eventId),fe(r,i,a),r;let s=await ae(r.runId,{rescan:n>0&&n%8==0,atLeast:o+1});Ae(s!==null),r={...r,eventId:ne(s)}}}let me=(t,n)=>Ot({directory:H.join(e,`events`),schema:C,cachedItems:d,filePrefix:`${t}-`,sortOrder:n.sortOrder??`asc`,limit:n.limit,cursor:n.cursor,getCreatedAt:$n(`evnt`),getId:e=>e.eventId,getSortKey:Kr,getSortKeyFromFileId:e=>qr(t,e)}),F=new Map,I=new Map,L={clearCache:O,async create(u,d,f){if(d.eventType===`hook_created`&&d.eventData.tokenRetentionUntil!==void 0&&d.eventData.tokenRetentionUntil.getTime()>Date.now()+l)throw new a(`Hook minimum retention cannot exceed ${l/Rr} days in the Local World.`,{status:400});if(u!=null&&u!==``&&U(`runId`,u),`correlationId`in d&&typeof d.correlationId==`string`&&U(`correlationId`,d.correlationId),g(d.eventType)&&u&&d.correlationId){let e=t?`${u}-${d.correlationId}.${t}`:`${u}-${d.correlationId}`;return Zr(F,e,h)}if(D(d.eventType)&&u&&d.correlationId){let e=t?`${u}-${d.correlationId}.hook.${t}`:`${u}-${d.correlationId}.hook`;return Zr(I,e,h)}return h();async function h(){let l=``,h=!1,w=null,T=new Date,E;if(d.eventType===`run_created`&&(!u||u===``))E=`wrun_${Qn()}`;else if(u)E=u;else throw Error(`runId is required for non-run_created events`);if(d.eventType===`run_created`&&u&&u!==``){let e=le(E,`wrun_`);if(e)throw new a(e)}let D=d.specVersion??6,O=null;if(d.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(d.eventType)&&(O=await q(e,`runs`,E,v,t),d.eventType===`run_started`&&!O&&`eventData`in d&&d.eventData)){let n=d.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){p(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:E,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:D,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:T,updatedAt:T};if(await Q(K(e,`runs`,E,t),JSON.stringify(r,J))){let e=await ce(E);await pe({eventType:`run_created`,runId:E,eventId:e,createdAt:T,specVersion:D,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),O=r}else O=await q(e,`runs`,E,v,t)}}if(l=await ce(E),!O&&(d.eventType===`run_failed`||d.eventType===`attr_set`||d.eventType===`run_started`))throw new n(E);if(O){if(he(O.specVersion))throw new i(O.specVersion,6);if(ge(O.specVersion))return Pr(e,E,d,O,f)}let k=_(d),A=k&&d.eventType===`step_started`;if(O&&b(O.status)){if(d.eventType===`run_cancelled`&&O.status===`cancelled`)return{event:N(await pe({...d,runId:E,eventId:l,createdAt:T,specVersion:D}),f?.resolveData??`all`),run:O,...O?{maxEvents:de()}:{}};if(d.eventType===`run_started`)throw new r(`Workflow run "${E}" is already in terminal state "${O.status}"`);if(y(d.eventType))throw new s(`Cannot transition run from terminal state "${O.status}"`);if(k)throw new s(`Cannot create new entities on run in terminal state "${O.status}"`);if(d.eventType===`attr_set`)throw new s(`Cannot set attributes on run in terminal state "${O.status}"`)}let j=null;if(g(d.eventType)&&d.eventType!==`step_created`&&d.correlationId){if(j=await q(e,`steps`,`${E}-${d.correlationId}`,re,t),!j&&!A)throw new a(`Step "${d.correlationId}" not found`);if(A&&j)throw new s(`Step "${d.correlationId}" already created`);if(j){if(x(j.status))throw new s(`Cannot modify step in terminal state "${j.status}"`);if(O&&b(O.status)&&j.status!==`running`)throw new r(`Cannot modify non-running step on run in terminal state "${O.status}"`)}}if(ee(d.eventType)&&d.correlationId){if(d.eventType===`hook_received`&&f?.resumeId){let n=await X(Yn(e,E,f.resumeId),Vr);if(n&&n.hookId===d.correlationId&&(!f.resumePayloadDigest||!n.payloadDigest||n.payloadDigest===f.resumePayloadDigest)){let r=await q(e,`events`,`${E}-${n.eventId}`,C,t),i=r&&Hr(r,n)?r:await Ur(e,E,n,t);if(i)return{event:i}}}if(d.eventType===`hook_received`&&await Ln(e,d.correlationId,t)||!await q(e,`hooks`,d.correlationId,M,t))throw new o(d.correlationId);if(d.eventType===`hook_received`&&f?.resumeId){let n=Yn(e,E,f.resumeId),r=async n=>{if(n.hookId!==d.correlationId)throw new s(`hook_received resumeId "${f.resumeId}" already recorded for a different hook`);if(f.resumePayloadDigest&&n.payloadDigest&&n.payloadDigest!==f.resumePayloadDigest)throw new s(`hook_received resumeId "${f.resumeId}" already recorded with a different payload`);let r=await q(e,`events`,`${E}-${n.eventId}`,C,t);if(r&&Hr(r,n))return{event:r};let i=await Ur(e,E,n,t);return i?{event:i}:(w=n.eventId,r||(l=n.eventId,h=!0),null)},i=await X(n,Vr);if(i){let e=await r(i);if(e)return e}else if(h=!ie(l),w=l,!await Q(n,JSON.stringify({runId:E,resumeId:f.resumeId,hookId:d.correlationId,eventId:l,...f.resumePayloadDigest?{payloadDigest:f.resumePayloadDigest}:{}}))){w=null;let e=await X(n,Vr);if(e){let t=await r(e);if(t)return t}}}}let P={...d,runId:E,eventId:l,createdAt:T,specVersion:D,...d.eventType===`hook_received`&&f?.resumeId?{resumeId:f.resumeId}:{}};if(d.eventType===`run_started`&&`eventData`in P&&delete P.eventData,A&&P.eventType===`step_started`&&P.eventData){let{input:e,...t}=P.eventData;P={...P,eventData:t}}let F,I,L,R,_e=!1,ve;if(y(d.eventType)&&O){await Q(Rn(e,E,t),``),await Hn(e,E,t);let n=await ue(E);l=n.eventId,P={...P,eventId:l,createdAt:n.createdAt}}if(d.eventType===`run_created`&&`eventData`in d){let n=d.eventData;if(p(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),F={runId:E,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:D,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:T,updatedAt:T},!await Q(K(e,`runs`,E,t),JSON.stringify(F,J,2)))throw new s(`Workflow run "${E}" already exists`)}else if(d.eventType===`run_started`){if(O){if(O.status===`running`){if(f?.skipPreload)return{run:O,maxEvents:de()};let e=await me(E,{limit:de()});return{run:O,events:e.data,cursor:e.cursor,hasMore:e.hasMore,maxEvents:de()}}F=await $r(e,E,t,{runId:O.runId,deploymentId:O.deploymentId,workflowName:O.workflowName,specVersion:O.specVersion,executionContext:O.executionContext,input:O.input,createdAt:O.createdAt,expiredAt:O.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:O.startedAt??T,updatedAt:T,attributes:O.attributes,encryptionPublicKey:O.encryptionPublicKey})}}else if(d.eventType===`run_completed`&&`eventData`in d){let n=d.eventData;O&&(F=await $r(e,E,t,{runId:O.runId,deploymentId:O.deploymentId,workflowName:O.workflowName,specVersion:O.specVersion,executionContext:O.executionContext,input:O.input,createdAt:O.createdAt,expiredAt:O.expiredAt,startedAt:O.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:T,updatedAt:T,attributes:O.attributes,encryptionPublicKey:O.encryptionPublicKey}),await Promise.all([Mr(e,E),Qr(e,E)]))}else if(d.eventType===`run_failed`&&`eventData`in d){let n=d.eventData;O&&(F=await $r(e,E,t,{runId:O.runId,deploymentId:O.deploymentId,workflowName:O.workflowName,specVersion:O.specVersion,executionContext:O.executionContext,input:O.input,createdAt:O.createdAt,expiredAt:O.expiredAt,startedAt:O.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:T,updatedAt:T,attributes:O.attributes,encryptionPublicKey:O.encryptionPublicKey}),await Promise.all([Mr(e,E),Qr(e,E)]))}else if(d.eventType===`run_cancelled`)O&&(F=await $r(e,E,t,{runId:O.runId,deploymentId:O.deploymentId,workflowName:O.workflowName,specVersion:O.specVersion,executionContext:O.executionContext,input:O.input,createdAt:O.createdAt,expiredAt:O.expiredAt,startedAt:O.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:T,updatedAt:T,attributes:O.attributes,encryptionPublicKey:O.encryptionPublicKey}),await Promise.all([Mr(e,E),Qr(e,E)]));else if(d.eventType===`attr_set`&&O)F=await Ir(E,async()=>{let r=await X(K(e,`runs`,E,t),v);if(!r)throw new n(E);if(p(d.eventData.changes,{existingKeys:Object.keys(r.attributes),allowReservedAttributes:d.eventData.allowReservedAttributes===!0}),d.correlationId&&d.eventData.writer.type===`workflow`&&!await Q(W(e,`.locks`,`attributes`,t?`${E}-${d.correlationId}.created.${t}`:`${E}-${d.correlationId}.created`),``))throw new s(`Attribute event "${d.correlationId}" already exists`);let i={...r,attributes:S(r.attributes,d.eventData.changes),updatedAt:T};return await Y(K(e,`runs`,E,t),i,{overwrite:!0}),i});else if(d.eventType===`step_created`&&`eventData`in d){if(!await Q(W(e,`.locks`,`steps`,t?`${E}-${d.correlationId}.created.${t}`:`${E}-${d.correlationId}.created`),``))throw new s(`Step "${d.correlationId}" already created`);let n=d.eventData;I={runId:E,stepId:d.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:T,updatedAt:T,specVersion:D},await Y(K(e,`steps`,`${E}-${d.correlationId}`,t),I)}else if(d.eventType===`step_started`){if(!j&&A){let n=d.eventData;if(await Q(W(e,`.locks`,`steps`,t?`${E}-${d.correlationId}.created.${t}`:`${E}-${d.correlationId}.created`),``)){let r={runId:E,stepId:d.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:T,updatedAt:T,specVersion:D};await Y(K(e,`steps`,`${E}-${d.correlationId}`,t),r);let i=await ce(E);await pe({eventType:`step_created`,runId:E,eventId:i,createdAt:T,specVersion:D,correlationId:d.correlationId,eventData:{stepName:n.stepName,input:n.input}}),j=r,_e=!0}else throw new s(`Step "${d.correlationId}" already created`)}if(j){if(j.retryAfter&&j.retryAfter.getTime()>Date.now())throw new c(`Cannot start step "${d.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((j.retryAfter.getTime()-Date.now())/1e3)});let n=`${E}-${d.correlationId}`,r=await q(e,`steps`,n,re,t);if(r&&x(r.status))throw new s(`Cannot modify step in terminal state "${r.status}"`);I={...j,status:`running`,startedAt:j.startedAt??T,attempt:j.attempt+1,retryAfter:void 0,updatedAt:T},await Y(K(e,`steps`,n,t),I,{overwrite:!0})}}else if(d.eventType===`step_completed`&&`eventData`in d){let n=d.eventData;if(j){let r=`${E}-${d.correlationId}`;if(!await Q(W(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new s(`Cannot modify step in terminal state`);I={...j,status:`completed`,output:n.result,completedAt:T,updatedAt:T},await Y(K(e,`steps`,r,t),I,{overwrite:!0})}}else if(d.eventType===`step_failed`&&`eventData`in d){let n=d.eventData;if(j){let r=`${E}-${d.correlationId}`;if(!await Q(W(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new s(`Cannot modify step in terminal state`);I={...j,status:`failed`,error:n.error,completedAt:T,updatedAt:T},await Y(K(e,`steps`,r,t),I,{overwrite:!0})}}else if(d.eventType===`step_retrying`&&`eventData`in d){let n=d.eventData;if(j){let r=`${E}-${d.correlationId}`;I={...j,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:T},await Y(K(e,`steps`,r,t),I,{overwrite:!0})}}else if(d.eventType===`hook_created`&&`eventData`in d){let n=d.eventData,r=Gn(e,n.token),i=JSON.stringify({token:n.token,hookId:d.correlationId,runId:E,eventId:l,tokenRetentionUntil:n.tokenRetentionUntil}),a=await Jn(e,n.token,async a=>{let o=await qn(r);return o||=(a.throwIfAborted(),await Z(r),await kr(e,n.token,t),await qn(r)),o?o.runId===E&&o.hookId===d.correlationId?{status:`owned`,claim:o}:await Wr(e,o,t)?(a.throwIfAborted(),await Z(r),o.hookId&&(await Z(K(e,`hooks`,o.hookId,t)),await Z(Zn(e,n.token,o.runId,o.hookId)),await dr(e,o.runId,o.hookId,t)),a.throwIfAborted(),Ae(await Q(r,i)),{status:`claimed`}):{status:`conflict`,claim:o}:(a.throwIfAborted(),Ae(await Q(r,i)),{status:`claimed`})});if(a.status===`owned`){let r=a.claim,i;if(r.eventId)i=r.eventId;else{let r=await Jr(e,E,d.correlationId);if(r!==null)throw await Yr(e,E,d.correlationId,r,t),new s(`Hook "${d.correlationId}" already created`);let a=await Xr(e,n.token,E,d.correlationId,l);if(a===null)throw new s(`Hook "${d.correlationId}" already created`);i=a}l=i,h=!0;let o=oe(l.replace(/^evnt_/,``))??T;P={...d,eventData:{...d.eventData,tokenRetentionUntil:r.tokenRetentionUntil},runId:E,eventId:l,createdAt:o,specVersion:D}}if(a.status===`conflict`){let e=a.claim;return{event:N(await pe({eventType:`hook_conflict`,correlationId:d.correlationId,eventData:{token:n.token,conflictingRunId:e.runId},runId:E,eventId:l,createdAt:T,specVersion:D}),f?.resolveData??`all`),run:F,step:I,hook:void 0}}let o=P.eventData;L={runId:E,hookId:d.correlationId,token:o.token,metadata:o.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:P.createdAt,specVersion:D,isWebhook:o.isWebhook??!1,isSystem:o.isSystem??!1,tokenRetentionUntil:o.tokenRetentionUntil},ve=a.status===`owned`?{overwrite:!0}:void 0,await cr(e,n.token,E,d.correlationId,l,t)}else if(d.eventType===`hook_disposed`){if(!await Q(In(e,d.correlationId,t),``))throw new s(`Hook "${d.correlationId}" already disposed`);let n=K(e,`hooks`,d.correlationId,t),r=await q(e,`hooks`,d.correlationId,M,t);r&&(await Xn(e,r.token,r.runId,r.hookId),await Z(Zn(e,r.token,r.runId,r.hookId))),await Z(n),await dr(e,E,d.correlationId,t)}else if(d.eventType===`wait_created`&&`eventData`in d){let n=`${E}-${d.correlationId}`;if(!await Q(W(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new s(`Wait "${d.correlationId}" already exists`);let r=d.eventData;R={waitId:n,runId:E,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:T,updatedAt:T,specVersion:D},await Y(K(e,`waits`,n,t),R)}else if(d.eventType===`wait_completed`){let n=`${E}-${d.correlationId}`,r=W(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await Q(r,``))throw new s(`Wait "${d.correlationId}" already completed`);let i=await q(e,`waits`,n,m,t);if(!i)throw await B.unlink(r).catch(()=>{}),new a(`Wait "${d.correlationId}" not found`);R={...i,status:`completed`,completedAt:T,updatedAt:T},await Y(K(e,`waits`,n,t),R,{overwrite:!0})}if(d.eventType===`hook_received`&&d.correlationId&&await Ln(e,d.correlationId,t))throw new o(d.correlationId);let z=K(e,`events`,`${E}-${l}`,t),ye=JSON.stringify(P,J,2),be=async n=>{let r=te(l);if(h||r===null)return!1;let i=await ae(E,{rescan:n>0&&n%8==0,atLeast:r+1});return i===null?!1:(l=ne(i),P={...P,eventId:l},z=K(e,`events`,`${E}-${l}`,t),ye=JSON.stringify(P,J,2),!0)},xe=!1;for(let n=0;;n++){if(d.eventType===`hook_received`){let n=await zn(e,E,t),i=n?null:await q(e,`runs`,E,v,t);if(n||i&&b(i.status))throw new r(`Workflow run "${E}" is already in a terminal state`);let o=Vn(e,E,`${l}.${Qn()}`,t);if(!await Q(o,ye))throw new a(`Failed to stage event "${l}" for run "${E}": staging path already exists`);try{if(await zn(e,E,t))throw new r(`Workflow run "${E}" is already in a terminal state`);let n=await St(o,z);if(n===`missing`)throw new r(`Workflow run "${E}" is already in a terminal state`);xe=n===`linked`}finally{await Z(o).catch(()=>{})}}else xe=await Q(z,ye);if(xe){se(E,l);break}if(d.eventType===`hook_received`&&f?.resumeId){let n=await q(e,`events`,`${E}-${l}`,C,t);if(n&&Hr(n,{runId:E,resumeId:f.resumeId,hookId:d.correlationId,eventId:l}))return{event:n}}if(!await be(n))break}if(!xe)throw d.eventType===`hook_created`&&d.correlationId&&await Yr(e,E,d.correlationId,l,t),new s(`Event "${l}" already exists for run "${E}"`);fe(P,z,ye),d.eventType===`hook_received`&&f?.resumeId&&w!==null&&w!==l&&await yt(Yn(e,E,f.resumeId),JSON.stringify({runId:E,resumeId:f.resumeId,hookId:d.correlationId,eventId:l,...f.resumePayloadDigest?{payloadDigest:f.resumePayloadDigest}:{}}),{overwrite:!0}),L&&d.eventType===`hook_created`&&(await ur(e,L.runId,L.hookId,t),await Y(K(e,`hooks`,L.hookId,t),L,ve));let Se=f?.resolveData??`all`,Ce=N(P,Se),V;if(d.eventType===`run_started`&&F&&!f?.skipPreload&&(V=await me(E,{limit:de()})),typeof f?.sinceCursor==`string`){let e=await me(E,{sortOrder:`asc`,cursor:f.sinceCursor});V=Se===`none`?{...e,data:e.data.map(e=>N(e,Se))}:e}let we={event:Ce,run:F,step:I,hook:L,wait:R,..._e?{stepCreated:!0}:{},...F?{maxEvents:de()}:{}};return V?{...we,events:V.data,cursor:V.cursor,hasMore:V.hasMore}:we}},async get(n,r,i){U(`runId`,n),U(`eventId`,r);let a=await q(e,`events`,`${n}-${r}`,C,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return N(a,i?.resolveData??`all`)},async list(e){let{runId:t}=e;U(`runId`,t);let n=e.resolveData??`all`,r=await me(t,{...e.pagination,limit:e.pagination?.limit??de()});return n===`none`?{...r,data:r.data.map(e=>N(e,n))}:r},async listByCorrelationId(t){let n=t.correlationId;U(`correlationId`,n),U(`runId`,t.runId);let r=t.resolveData??`all`,i=await Ot({directory:H.join(e,`events`),schema:C,cachedItems:d,filePrefix:`${t.runId}-`,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$n(`evnt`),getId:e=>e.eventId,getSortKey:Kr,getSortKeyFromFileId:e=>qr(t.runId,e)});return r===`none`?{...i,data:i.data.map(e=>N(e,r))}:i}};async function R(e,t,n){if(!e.event)return e;let r=te(e.event.eventId);if(r===null||t<1||r<=t+1)return e;let i=r-t-1,a=await L.list({runId:e.event.runId,pagination:{cursor:`${Tt}${ne(t)}`,limit:i,sortOrder:`asc`},resolveData:n}),o=e.event.eventId,s=a.data.filter(e=>e.eventId<o);return{...e,events:s,cursor:null,hasMore:s.length<r-t-1}}let _e=(async(e,t,n)=>{if(n?.eventCount===void 0)return L.create(e,t,n);let r=n.resolveData??`all`,i=await L.create(e,t,n);return typeof n.sinceCursor==`string`?i:R(i,n.eventCount,r)});return{...L,create:_e}}function ti(e,t){return{get:(async(n,r,i)=>{U(`runId`,n),U(`stepId`,r);let a=await q(e,`steps`,`${n}-${r}`,re,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return xr(a,i?.resolveData??`all`)}),list:(async t=>{U(`runId`,t.runId);let n=t.resolveData??`all`,r=await Ot({directory:H.join(e,`steps`),schema:re,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$n(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function ni(e,t){let n=Lr(e,t),r=ti(e,t),i=ei(e,t),a=jr(e,t);return{runs:fn(`world.runs`,n),steps:fn(`world.steps`,r),events:fn(`world.events`,i),hooks:fn(`world.hooks`,a),clearCache:()=>i.clearCache()}}const ri=ce(()=>Math.random()),ii=E({streams:h(w())});function ai(e){return e===1}function oi(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function si(e){return ai(e[0])}function ci(e){return{eof:si(e),chunk:Buffer.from(e.subarray(1))}}async function li(e){try{return await B.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function ui(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 di(e,t){return U(`streamName`,t),H.join(e,t)}async function fi(e,t,n){let r=di(e,t),i=await li(r),a=new Map;return ui(a,i,`.json`),ui(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&ui(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function pi(e,t){let n=t?`.${t}`:``,r=new je,i=new Set;async function a(n,r){U(`runId`,n),U(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=K(e,`streams/runs`,n,t),s=(await q(e,`streams/runs`,n,ii,t))?.streams??[];s.includes(r)||(s.push(r),await Y(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_${ri()}`;await a(await t,i);let l=o(s),u=oi({chunk:l,eof:!1});await yt(H.join(di(H.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_${ri()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=oi({chunk:t,eof:!1});return await yt(H.join(di(H.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_${ri()}`;await a(await t,i),await yt(H.join(di(H.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),oi({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return U(`runId`,n),(await q(e,`streams/runs`,n,ii,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await fi(H.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=H.join(c,`${e}${t}`);if(f<l){if(ai(await xt(n))){u=!0;break}f++;continue}if(d.length>=a){ai(await xt(n))?u=!0:f++;break}let r=ci(await bt(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 fi(H.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(ai(await xt(H.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=H.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 fi(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`;ai(await xt(H.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=ci(await bt(H.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 fi(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=ci(await bt(H.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 mi(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Qe.value,...t};Ie(n.dataDir);let r=n.tag,i=Cn(n),{clearCache:a,...o}=ni(n.dataDir,r),s=$e(n);return{specVersion:6,capabilities:{hookRetention:{active:!0},hookResumeDedup:!0},...i,...o,...fn(`world.streams`,{...pi(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Ut(n.dataDir),!s)return;let e=r?e=>dt(e,r):ft;await ae({...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=H.join(e,`hooks`),i=await pt(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-Dk0aQqFO.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await X(H.join(t,n),a);r?.token&&(await Z(H.join(t,`tokens`,`${Fn(r.token)}.json`)),await Z(Zn(e,r.token,r.runId,r.hookId)))})),await Promise.all([`runs`,`steps`,`events`,`hooks`,`hooks/by-run`,`waits`,`streams/runs`].map(async t=>{let n=H.join(e,t),i=await pt(n,r);await Promise.all(i.map(e=>Z(H.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=H.join(e,`hooks`,t),i;try{i=await z.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=H.join(n,e.name),i=await pt(t,r);await Promise.all(i.map(e=>Z(H.join(t,e))))}))}await z.rm(H.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=H.join(e,`streams`,`chunks`),s;try{s=await z.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=H.join(o,e.name),n=await mt(t,r,`.bin`);await Promise.all(n.map(e=>z.unlink(H.join(t,e)).catch(()=>{})))})),ct()}else ct(),hr(),await we(n.dataDir,{recursive:!0,force:!0}),await Ut(n.dataDir)}}}export{Nt as DataDirAccessError,Pt as DataDirVersionError,Me as UnwritableDataDirError,mi as createWorld,zt as ensureDataDir,Ut as initDataDir,Ft as parseVersion};
|
|
1
|
+
import{i as e,t}from"../../_chunks/workflow/rolldown-runtime-8V8biNmG.js";import{t as n}from"../../_chunks/workflow/debug-log-CVPstO1D.js";import{t as r}from"../../_chunks/workflow/global-singleton-BNinwFrL.js";import{D as i,d as a,f as o,k as s,o as c,r as l,v as u}from"../../_chunks/workflow/dist-DjojkP5e.js";import{i as d,n as f,r as p,t as m}from"../../_chunks/workflow/workflow-routes-CwqB063q.js";import{C as h,E as g,Gr as _,H as v,I as y,J as b,K as x,L as S,Mr as C,O as w,Pn as T,R as ee,U as E,W as D,X as te,Y as ne,Z as O,_ as re,a as ie,at as ae,c as oe,ct as se,d as ce,f as le,k as ue,l as de,lt as k,m as fe,n as pe,nt as me,o as A,ot as he,q as ge,r as _e,u as ve,v as ye,wi as j,x as M,y as N}from"../../_chunks/workflow/dist-CgbVZs5l.js";import{i as P,n as F,r as be,t as xe}from"../../_chunks/workflow/undici-DfxNX5og.js";import{t as Se}from"../../_chunks/workflow/signal-exit-o3IPQwwv.js";import{createHash as I}from"node:crypto";import{promisify as Ce}from"node:util";import{fileURLToPath as we}from"node:url";import{promises as L}from"node:fs";import R,{access as Te,constants as z,mkdir as Ee,readFile as De,readdir as Oe,readlink as ke,rm as Ae,unlink as je,writeFile as Me}from"node:fs/promises";import B from"node:path";import{tmpdir as Ne}from"node:os";import{execFile as Pe}from"node:child_process";import{setTimeout as Fe}from"node:timers/promises";import Ie from"node:assert";import{EventEmitter as Le}from"node:events";var Re=class extends 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 ze=new Set([`EROFS`,`EACCES`,`EPERM`]);function Be(e){return e!==void 0&&ze.has(e)}const Ve=r(`@workflow/world-local//buildTargetWarnings`,1,()=>({warnedAboutVercelDeployment:!1}));function He(e){if(Ve.warnedAboutVercelDeployment||!process.env.VERCEL_DEPLOYMENT_ID)return;let t=B.resolve(e),n=Ne();t===n||t.startsWith(`${n}${B.sep}`)||(Ve.warnedAboutVercelDeployment=!0,console.warn(`[workflow] Warning: the local (filesystem) world is running inside a Vercel deployment, writing to ${t}. That filesystem is read-only, so workflow runs will fail before their first step. The world is selected from the environment when the process starts: the Vercel world is used when VERCEL_DEPLOYMENT_ID is set, unless WORKFLOW_TARGET_WORLD says otherwise. Unset WORKFLOW_TARGET_WORLD in this deployment, or set WORKFLOW_TARGET_WORLD=vercel, to use the Vercel world.`))}function Ue(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function We(e,t){let n=[],r=e.trim().split(`
|
|
2
|
+
`);for(let e of r){let r=e.trim().split(/\s+/);if(r.length<5||r[0]?.toUpperCase()!==`TCP`)continue;let[,i,,a,o]=r;if(a?.toUpperCase()!==`LISTENING`||o!==t.toString())continue;let s=i.lastIndexOf(`:`);if(s===-1)continue;let c=Ue(i.slice(s+1));c!==void 0&&n.push(c)}return n}const Ge=Ce(Pe);function Ke(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const qe=((e,t)=>e.join(t))([``,`proc`],`/`);async function Je(e){let t=[`${qe}/net/tcp`,`${qe}/net/tcp6`],n=[],r=new Set,i=`${qe}/${e}/fd`;try{let e=(await Oe(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await ke(`${i}/${e}`)).match(/^socket:\[(\d+)\]$/)?.[1]??null));for(let e of t)e.status===`fulfilled`&&e.value&&(n.push(e.value),r.add(e.value))}catch{return[]}if(n.length===0)return[];let a=new Map;for(let e of t)try{let t=(await De(e,`utf8`)).split(`
|
|
3
|
+
`).slice(1);for(let e of t){if(!e.trim())continue;let t=e.trim().split(/\s+/);if(t.length<10)continue;let n=t[1],i=t[3],o=t[9];if(!n||i!==`0A`||!o||!r.has(o))continue;let s=n.indexOf(`:`);if(s===-1)continue;let c=n.slice(s+1);if(!c)continue;let l=Ke(c,16);l!==void 0&&a.set(o,l)}}catch{}let o=[];for(let e of n){let t=a.get(e);t!==void 0&&o.push(t)}return o}async function Ye(e){try{let{stdout:t}=await Ge(`lsof`,[`-a`,`-i`,`-P`,`-n`,`-p`,e.toString()]),n=[],r=t.split(`
|
|
4
|
+
`);for(let e of r)if(e.includes(`LISTEN`)){let t=e.trim().split(/\s+/)[8];if(t){let e=t.lastIndexOf(`:`);if(e!==-1){let r=Ke(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Xe(e){try{let{stdout:t}=await Ge(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return We(t,e)}catch{return[]}}async function Ze(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Je(e);case`darwin`:return await Ye(e);case`win32`:return await Xe(e);default:return[]}}catch(e){return n(`[getAllPorts] Detection failed:`,e),[]}}const Qe=`${m}/flow?__health`;async function $e(e,t={}){let{endpoint:n=Qe,timeout:r=500}=t,i=new AbortController,a=setTimeout(()=>i.abort(),r);try{return(await fetch(`http://localhost:${e}${n}`,{method:`HEAD`,signal:i.signal})).status===200}catch{return!1}finally{clearTimeout(a)}}async function et(e){let t=await Ze();if(t.length===0)return;if(t.length===1)return t[0];let r=(await Promise.all(t.map(async t=>({port:t,isWorkflow:await $e(t,e)})))).find(e=>e.isWorkflow);return r?r.port:(n(`[getWorkflowPort] Probing failed, falling back to first port:`,t[0]),t[0])}function tt(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const nt=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,rt=()=>process.env.WORKFLOW_LOCAL_BASE_URL,it=tt(()=>({dataDir:nt(),baseUrl:rt()}));function at(e){if(e.recoverActiveRuns!==void 0)return e.recoverActiveRuns;let t=process.env.WORKFLOW_LOCAL_RECOVER_ACTIVE_RUNS?.toLowerCase();return!(t===`0`||t===`false`)}function ot(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??f(`http://localhost`)}async function st(e){if(e.baseUrl)return e.baseUrl;if(process.env.WORKFLOW_LOCAL_BASE_URL)return process.env.WORKFLOW_LOCAL_BASE_URL;if(typeof e.port==`number`)return f(`http://localhost:${e.port}`);if(process.env.PORT)return f(`http://localhost:${process.env.PORT}`);let t=await et({endpoint:p()});if(t)return f(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const V=r(`@workflow/world-local//fs`,1,()=>({ulid:A(()=>Math.random()),createdFilesCache:new Set,createdDirectoriesCache:new Set}));function ct(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var lt=class extends s{constructor(e,t){super(`Unsafe ${e} "${ct(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function H(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new lt(e,t)}function U(e,...t){let n=B.resolve(e),r=B.resolve(e,...t);if(r!==n&&!r.startsWith(n+B.sep))throw new lt(`path`,t.join(`/`));return r}const ut=process.platform===`win32`;async function W(e,t=5){if(!ut)return e();let n=[`EPERM`,`EBUSY`,`EACCES`];for(let r=0;r<=t;r++)try{return await e()}catch(e){if(!(r<t&&n.includes(e.code)))throw e;let i=10*2**r+Math.random()*10;await new Promise(e=>setTimeout(e,i))}throw Error(`Retry loop exited unexpectedly`)}function dt(){V.createdFilesCache.clear(),V.createdDirectoriesCache.clear()}const ft=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function G(e){return e.replace(ft,``)}function pt(e,t){return e.endsWith(`.${t}`)}function mt(e){return!ft.test(e)}function K(e,t,n,r){return H(`fileId`,n),r!==void 0&&H(`tag`,r),U(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function q(e,t,n,r,i){if(H(`fileId`,n),i!==void 0&&H(`tag`,i),i){let a=await X(U(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return X(U(e,t,`${n}.json`),r)}async function ht(e,t){let n=`.${t}.json`;try{return(await L.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function gt(e,t,n){let r=`.${t}${n}`;try{return(await L.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function _t(e){let t=B.resolve(e);if(!V.createdDirectoriesCache.has(t))try{await L.mkdir(t,{recursive:!0}),V.createdDirectoriesCache.add(t)}catch(e){let n=e.code;if(Be(n)&&!await vt(t))throw new Re(t,n)}}async function vt(e){try{return(await L.stat(e)).isDirectory()}catch{return!1}}async function yt(e,t){await _t(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return V.createdDirectoriesCache.delete(B.resolve(e)),await _t(e),t()}}function J(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function bt(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function Y(e,t,n){return xt(e,JSON.stringify(t,J,2),n)}async function xt(e,t,n){if(!n?.overwrite){if(V.createdFilesCache.has(e))throw new l(`File ${e} already exists and 'overwrite' is false`);try{throw await L.access(e),V.createdFilesCache.add(e),new l(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${V.ulid()}`,i=!1;try{await yt(B.dirname(e),async()=>{await L.writeFile(r,t),i=!0,await W(()=>L.rename(r,e))}),V.createdFilesCache.add(e)}catch(e){throw i&&await W(()=>L.unlink(r),3).catch(()=>{}),e}}async function X(e,t){try{let n=await L.readFile(e,`utf-8`);return t.parse(JSON.parse(n,bt))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function St(e){return await L.readFile(e)}async function Ct(e){let t=await L.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function Z(e){try{await W(()=>L.unlink(e))}catch(e){if(e.code!==`ENOENT`)throw e}}async function Q(e,t){let n=`${e}.tmp.${V.ulid()}`,r=!1;try{return await yt(B.dirname(e),async()=>{await L.writeFile(n,t,{flag:`wx`}),r=!0;try{return await W(()=>L.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await W(()=>L.unlink(n),3).catch(()=>{})}}async function wt(e,t){try{return await yt(B.dirname(t),()=>W(()=>L.link(e,t))),`linked`}catch(e){if(e.code===`EEXIST`)return`exists`;if(e.code===`ENOENT`)return`missing`;throw e}}async function Tt(e){return Et(e,`.json`)}async function Et(e,t){try{return(await L.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}const Dt=`key:`;function Ot(e){if(!e)return null;if(e.startsWith(`key:`))return{timestamp:new Date(0),id:null,sortKey:e.slice(4)};let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null,sortKey:null}}function kt(e,t,n){return n?`${Dt}${n}`:t?`${e.toISOString()}|${t}`:e.toISOString()}async function At(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d,getSortKey:f,getSortKeyFromFileId:p}=e;i!==void 0&&H(`filePrefix`,i);let m=B.resolve(t),h=await Tt(m),g=i?h.filter(e=>e.startsWith(i)):h,_=a?g.filter(a):g,v=Ot(l),y=_;if(v?.sortKey&&p){let e=v.sortKey;y=_.filter(t=>{let n=p(t);if(n===null)return!0;let r=n.localeCompare(e);return s===`desc`?r<0:r>0})}else v&&!v.sortKey&&(y=_.filter(e=>{let t=u(`${e}.json`);if(t){let e=v.timestamp.getTime(),n=t.getTime();return v.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let b=[];for(let e=0;e<y.length;e+=32){let t=y.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=B.join(m,`${e}.json`),i;try{let e=r?.get(t);i=e===void 0?await X(t,n):structuredClone(e)}catch(t){if(t instanceof j)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}return i&&o&&!await o(i)?null:i}));for(let e of i){if(!e)continue;let t=f?.(e)??null;if(v?.sortKey){if(t){let e=t.localeCompare(v.sortKey);if(s===`desc`?e>=0:e<=0)continue}b.push(e);continue}if(v){let t=e.createdAt.getTime(),n=v.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&v.id&&d&&d(e)>=v.id)continue}else if(t<n||t===n&&v.id&&d&&d(e)<=v.id)continue}b.push(e)}}b.sort((e,t)=>{if(f){let n=f(e),r=f(t);if(n!==null&&r!==null)return s===`asc`?n.localeCompare(r):r.localeCompare(n)}let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let x=b.length>c,S=x?b.slice(0,c):b;return{data:S,cursor:S.length>0?kt(S[S.length-1].createdAt,d?.(S[S.length-1]),f?.(S[S.length-1])):null,hasMore:x}}const jt=r(`@workflow/world-local//packageInfo`,1,()=>({cached:null}));function Mt(){return typeof import.meta.url==`string`&&import.meta.url?B.dirname(we(import.meta.url)):null}async function Nt(){if(jt.cached)return jt.cached;let e=Mt();if(e)try{let t=await De(B.join(e,`../package.json`),`utf-8`);return jt.cached=JSON.parse(t),jt.cached}catch{}return jt.cached={name:`@workflow/world-local`,version:`5.0.0-beta.41`},jt.cached}const Pt=`version.txt`;var Ft=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},It=class extends Error{oldVersion;newVersion;suggestedVersion;constructor(e,t,n,r){super(e),this.name=`DataDirVersionError`,this.oldVersion=t,this.newVersion=n,this.suggestedVersion=r}};function Lt(e){let t=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);if(!t)throw Error(`Invalid version string: "${e}"`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4],raw:e}}function $(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function Rt(e){let t=e.trim(),n=t.lastIndexOf(`@`);if(n<=0)throw Error(`Invalid version file content: "${e}"`);return{packageName:t.substring(0,n),version:Lt(t.substring(n+1))}}function zt(e,t){return`${e}@${$(t)}`}function Bt(e,t){console.log(`[world-local] Upgrading from version ${$(e)} to ${$(t)}`)}async function Vt(e){let t=B.resolve(e);try{await Ee(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new Ft(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await Te(t,z.R_OK)}catch(e){let n=e;throw new Ft(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=B.join(t,`.workflow-write-test-${Date.now()}`);try{await Me(n,``),await je(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new Ft(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Ht(e){let t=B.join(B.resolve(e),Pt);try{return Rt(await De(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Ut(e,t){await Me(B.join(B.resolve(e),Pt),zt((await Nt()).name,t))}function Wt(e,t){return t||$(e)}async function Gt(e){await Vt(e);let t=await Nt(),n=Lt(t.version),r=await Ht(e);if(r===null){await Ut(e,n);return}let{version:i}=r;if($(i)!==$(n))try{Bt(i,n),await Ut(e,n)}catch(e){let r=Wt(i,e instanceof It?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${$(i)} to ${$(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}const Kt=r(`@workflow/world-local//telemetry`,1,()=>({apiPromise:null,tracerPromise:null}));async function qt(){return Kt.apiPromise||=import(`../../@opentelemetry/api/index.js`).catch(()=>null),Kt.apiPromise}async function Jt(){return Kt.tracerPromise||=qt().then(e=>e?e.trace.getTracer(`workflow`):null),Kt.tracerPromise}async function Yt(e,...t){let[n,r]=await Promise.all([Jt(),qt()]),{fn:i,opts:a}=typeof t[0]==`function`?{fn:t[0],opts:{}}:{fn:t[1],opts:t[0]};if(!i)throw Error(`Function to trace must be provided`);return!n||!r?await i():n.startActiveSpan(e,a,async e=>{try{let t=await i(e);return e.setStatus({code:r.SpanStatusCode.OK}),t}catch(t){throw e.setStatus({code:r.SpanStatusCode.ERROR,message:t.message}),t}finally{e.end()}})}async function Xt(e){let t=await qt();if(t)return t.SpanKind[e]}function Zt(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Qt=Zt(`peer.service`),$t=Zt(`rpc.system`),en=Zt(`rpc.service`),tn=Zt(`rpc.method`),nn=Zt(`workflow.run.id`),rn=Zt(`step.id`),an={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},on={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},sn=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function cn(e){if(e.length>=2&&typeof e[1]==`object`&&e[1]!==null){let t=e[1];if(typeof t.eventType==`string`)return t.eventType}}function ln(e,t){return typeof e[t]==`string`?e[t]:void 0}function un(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function dn(e){if(typeof e!=`object`||!e)return;let t=e;if(typeof t.runId==`string`)return t.runId;for(let e of[`run`,`step`,`hook`,`wait`]){let n=t[e];if(typeof n==`object`&&n){let e=n.runId;if(typeof e==`string`)return e}}}function fn(e,t,n){let r=`${e}.${t}`,i={},a=on[r],o=a===void 0?sn.has(r)?un(n[0]):void 0:ln(n,a);if(o&&Object.assign(i,nn(o)),r===`world.steps.get`){let e=ln(n,1);e&&Object.assign(i,rn(e))}return i}function pn(e,t){let n={};for(let r of Object.keys(t))if(typeof t[r]!=`function`)n[r]=t[r];else{let i=t[r],a=String(r);n[r]=async(...t)=>{let n=`${e}.${a}`;if(e===`world.events`&&a===`create`){let r=cn(t);r&&(n=`${e}.${a} ${r}`)}return Yt(n,{kind:await Xt(`INTERNAL`)},async r=>{r?.setAttributes({...Qt(an.peerService),...$t(an.rpcSystem),...en(an.rpcService),...tn(n),...fn(e,a,t)});let o=await i(...t),s=dn(o);return s&&r?.setAttributes(nn(s)),o})}}return n}var mn=t((t=>{var n=t&&t.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RateLimit=t.Sema=void 0;let r=n(e(`events`));function i(e,t,n,r,i){for(let a=0;a<i;++a)n[a+r]=e[a+t],e[a+t]=void 0}function a(e){return e>>>=0,--e,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,e+1}function o(e){return a(Math.min(Math.max(16,e),1073741824))}var s=class{constructor(e){this._capacity=o(e),this._length=0,this._front=0,this.arr=[]}push(e){let t=this._length;this.checkCapacity(t+1);let n=this._front+t&this._capacity-1;return this.arr[n]=e,this._length=t+1,t+1}pop(){let e=this._length;if(e===0)return;let t=this._front+e-1&this._capacity-1,n=this.arr[t];return this.arr[t]=void 0,this._length=e-1,n}shift(){let e=this._length;if(e===0)return;let t=this._front,n=this.arr[t];return this.arr[t]=void 0,this._front=t+1&this._capacity-1,this._length=e-1,n}get length(){return this._length}checkCapacity(e){this._capacity<e&&this.resizeTo(o(this._capacity*1.5+16))}resizeTo(e){let t=this._capacity;this._capacity=e;let n=this._front,r=this._length;if(n+r>t){let e=n+r&t-1;i(this.arr,0,this.arr,t,e)}}},c=class extends r.default{};function l(e){return typeof e==`function`}function u(){return`1`}var d=class{constructor(e,{initFn:t=u,pauseFn:n,resumeFn:r,capacity:i=10}={}){if(l(n)!==l(r))throw Error(`pauseFn and resumeFn must be both set for pausing`);this.nrTokens=e,this.free=new s(e),this.waiting=new s(i),this.releaseEmitter=new c,this.noTokens=t===u,this.pauseFn=n,this.resumeFn=r,this.paused=!1,this.releaseEmitter.on(`release`,e=>{let t=this.waiting.shift();t?t.resolve(e):(this.resumeFn&&this.paused&&(this.paused=!1,this.resumeFn()),this.free.push(e))});for(let n=0;n<e;n++)this.free.push(t())}tryAcquire(){return this.free.pop()}async acquire(){let e=this.tryAcquire();return e===void 0?new Promise((e,t)=>{this.pauseFn&&!this.paused&&(this.paused=!0,this.pauseFn()),this.waiting.push({resolve:e,reject:t})}):e}release(e){this.releaseEmitter.emit(`release`,this.noTokens?`1`:e)}drain(){let e=Array(this.nrTokens);for(let t=0;t<this.nrTokens;t++)e[t]=this.acquire();return Promise.all(e)}nrWaiting(){return this.waiting.length}};t.Sema=d;function f(e,{timeUnit:t=1e3,uniformDistribution:n=!1}={}){let r=new d(n?1:e),i=n?t/e:t;return async function(){await r.acquire(),setTimeout(()=>r.release(),i)}}t.RateLimit=f}))(),hn=xe(),gn=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,J))}async deserialize(e){let t=[],n=e.getReader();for(;;){let{done:e,value:r}=await n.read();if(e)break;r&&t.push(r)}let r=Buffer.concat(t).toString();return JSON.parse(r,bt)}};const _n=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,vn=2147483647,yn=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3;function bn(e,t){let n=process.env[e];if(n===void 0||n===``)return t;let r=Number.parseInt(n,10);return Number.isFinite(r)&&r>=0?r:t}function xn(){return{bodyTimeout:bn(`WORKFLOW_LOCAL_BODY_TIMEOUT_MS`,3e4),connections:1e3,headersTimeout:bn(`WORKFLOW_LOCAL_HEADERS_TIMEOUT_MS`,3e4),keepAliveTimeout:3e4}}const Sn=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function Cn(e){let t=e,n=new Set;for(;t&&typeof t==`object`&&!n.has(t);){if(n.add(t),`message`in t&&typeof t.message==`string`&&t.message.includes(Sn))return!0;t=`cause`in t?t.cause:void 0}return!1}function wn(e){let t=xn(),r=ye()?F({maxSockets:t.connections,keepAliveMs:t.keepAliveTimeout}):void 0,i=r?void 0:new hn.Agent(t),a=new gn,o=A(),s=new mn.Sema(yn),c=new AbortController,l=c.signal,u=new Map,f=new Map,p=async(c,p,m)=>{let h=[];if(m?.idempotencyKey){let e=u.get(m.idempotencyKey);if(e)return{messageId:e}}let _=a.serialize(p),{prefix:v}=g(c),y=M.parse(`msg_${o()}`),b=p,x=b.runId??void 0,S=b.stepId??void 0;if(m?.idempotencyKey){let e=m.idempotencyKey;u.set(e,y),h.push(()=>{u.delete(e)})}return(async()=>{m?.delaySeconds&&m.delaySeconds>0&&await Fe(Math.min(m.delaySeconds*1e3,vn),void 0,{signal:l}),s.tryAcquire()||(n(`[world-local]: concurrency limit (${yn}) reached, waiting for queue to free up`),await s.acquire());let a=0;try{for(let n=0;n<256;n++){let o={...m?.headers,"content-type":`application/json`,"x-vqs-queue-name":c,"x-vqs-message-id":y,"x-vqs-message-attempt":String(a+1)},s=f.get(v),u,p;try{if(s)u=await s(new Request(d(ot(e),{type:`flow`}),{method:`POST`,headers:o,body:_}));else{let n=d(await st(e),{type:`flow`});u=r?await P(n,{method:`POST`,headers:new Headers(o),body:_,agents:r,signal:l,headersTimeoutMs:t.headersTimeout,bodyTimeoutMs:t.bodyTimeout}):await fetch(n,{method:`POST`,duplex:`half`,dispatcher:i,headers:o,body:_,signal:l})}a++,p=await u.text()}catch(e){let t=e?.name;if(l.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(Cn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${n+1}), retrying`,{queueName:c,messageId:y,...x&&{runId:x},...S&&{stepId:S},error:String(e)}),await Fe(5e3,void 0,{signal:l});continue}if(u.ok){try{let e=Number(JSON.parse(p).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await Fe(Math.min(e*1e3,vn),void 0,{signal:l});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${a}, HTTP ${u.status})`,{queueName:c,messageId:y,...x&&{runId:x},...S&&{stepId:S},handlerError:p}),await Fe(5e3,void 0,{signal:l})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:c,messageId:y,...x&&{runId:x},...S&&{stepId:S}})}finally{s.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(Cn(e)?console.error(`[local world] Queue operation failed: detected "${Sn}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler`,{queueName:c,messageId:y,...x&&{runId:x},...S&&{stepId:S},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of h)e()}),{messageId:y}},m=C({"x-vqs-queue-name":h,"x-vqs-message-id":M,"x-vqs-message-attempt":k()});return{queue:p,createQueueHandler:(e,t)=>async n=>{let r=m.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new gn().deserialize(n.body);try{let e=await t(s,{attempt:o,queueName:i,messageId:a}),n=null;return typeof e?.timeoutSeconds==`number`&&(n=Math.min(e.timeoutSeconds,_n)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await Nt()).version}`,registerHandler(e,t){f.set(e,t)},async close(){l.aborted||(c.abort(),r&&be(r),await i?.close())}}}var Tn=t(((t,n)=>{var r=e(`constants`),i=process.cwd,a=null,o=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return a||=i.call(process),a};try{process.cwd()}catch{}if(typeof process.chdir==`function`){var s=process.chdir;process.chdir=function(e){a=null,s.call(process,e)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,s)}n.exports=c;function c(e){r.hasOwnProperty(`O_SYMLINK`)&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(e),e.lutimes||n(e),e.chown=s(e.chown),e.fchown=s(e.fchown),e.lchown=s(e.lchown),e.chmod=i(e.chmod),e.fchmod=i(e.fchmod),e.lchmod=i(e.lchmod),e.chownSync=c(e.chownSync),e.fchownSync=c(e.fchownSync),e.lchownSync=c(e.lchownSync),e.chmodSync=a(e.chmodSync),e.fchmodSync=a(e.fchmodSync),e.lchmodSync=a(e.lchmodSync),e.stat=l(e.stat),e.fstat=l(e.fstat),e.lstat=l(e.lstat),e.statSync=u(e.statSync),e.fstatSync=u(e.fstatSync),e.lstatSync=u(e.lstatSync),e.chmod&&!e.lchmod&&(e.lchmod=function(e,t,n){n&&process.nextTick(n)},e.lchmodSync=function(){}),e.chown&&!e.lchown&&(e.lchown=function(e,t,n,r){r&&process.nextTick(r)},e.lchownSync=function(){}),o===`win32`&&(e.rename=typeof e.rename==`function`?(function(t){function n(n,r,i){var a=Date.now(),o=0;t(n,r,function s(c){if(c&&(c.code===`EACCES`||c.code===`EPERM`||c.code===`EBUSY`)&&Date.now()-a<6e4){setTimeout(function(){e.stat(r,function(e,a){e&&e.code===`ENOENT`?t(n,r,s):i(c)})},o),o<100&&(o+=10);return}i&&i(c)})}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.rename):e.rename),e.read=typeof e.read==`function`?(function(t){function n(n,r,i,a,o,s){var c;if(s&&typeof s==`function`){var l=0;c=function(u,d,f){if(u&&u.code===`EAGAIN`&&l<10)return l++,t.call(e,n,r,i,a,o,c);s.apply(this,arguments)}}return t.call(e,n,r,i,a,o,c)}return Object.setPrototypeOf&&Object.setPrototypeOf(n,t),n})(e.read):e.read,e.readSync=typeof e.readSync==`function`?(function(t){return function(n,r,i,a,o){for(var s=0;;)try{return t.call(e,n,r,i,a,o)}catch(e){if(e.code===`EAGAIN`&&s<10){s++;continue}throw e}}})(e.readSync):e.readSync;function t(e){e.lchmod=function(t,n,i){e.open(t,r.O_WRONLY|r.O_SYMLINK,n,function(t,r){if(t){i&&i(t);return}e.fchmod(r,n,function(t){e.close(r,function(e){i&&i(t||e)})})})},e.lchmodSync=function(t,n){var i=e.openSync(t,r.O_WRONLY|r.O_SYMLINK,n),a=!0,o;try{o=e.fchmodSync(i,n),a=!1}finally{if(a)try{e.closeSync(i)}catch{}else e.closeSync(i)}return o}}function n(e){r.hasOwnProperty(`O_SYMLINK`)&&e.futimes?(e.lutimes=function(t,n,i,a){e.open(t,r.O_SYMLINK,function(t,r){if(t){a&&a(t);return}e.futimes(r,n,i,function(t){e.close(r,function(e){a&&a(t||e)})})})},e.lutimesSync=function(t,n,i){var a=e.openSync(t,r.O_SYMLINK),o,s=!0;try{o=e.futimesSync(a,n,i),s=!1}finally{if(s)try{e.closeSync(a)}catch{}else e.closeSync(a)}return o}):e.futimes&&(e.lutimes=function(e,t,n,r){r&&process.nextTick(r)},e.lutimesSync=function(){})}function i(t){return t&&function(n,r,i){return t.call(e,n,r,function(e){d(e)&&(e=null),i&&i.apply(this,arguments)})}}function a(t){return t&&function(n,r){try{return t.call(e,n,r)}catch(e){if(!d(e))throw e}}}function s(t){return t&&function(n,r,i,a){return t.call(e,n,r,i,function(e){d(e)&&(e=null),a&&a.apply(this,arguments)})}}function c(t){return t&&function(n,r,i){try{return t.call(e,n,r,i)}catch(e){if(!d(e))throw e}}}function l(t){return t&&function(n,r,i){typeof r==`function`&&(i=r,r=null);function a(e,t){t&&(t.uid<0&&(t.uid+=4294967296),t.gid<0&&(t.gid+=4294967296)),i&&i.apply(this,arguments)}return r?t.call(e,n,r,a):t.call(e,n,a)}}function u(t){return t&&function(n,r){var i=r?t.call(e,n,r):t.call(e,n);return i&&(i.uid<0&&(i.uid+=4294967296),i.gid<0&&(i.gid+=4294967296)),i}}function d(e){return!e||e.code===`ENOSYS`||(!process.getuid||process.getuid()!==0)&&(e.code===`EINVAL`||e.code===`EPERM`)}}})),En=t(((t,n)=>{var r=e(`stream`).Stream;n.exports=i;function i(e){return{ReadStream:t,WriteStream:n};function t(n,i){if(!(this instanceof t))return new t(n,i);r.call(this);var a=this;this.path=n,this.fd=null,this.readable=!0,this.paused=!1,this.flags=`r`,this.mode=438,this.bufferSize=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())}}})),Dn=t(((e,t)=>{t.exports=r;var n=Object.getPrototypeOf||function(e){return e.__proto__};function r(e){if(typeof e!=`object`||!e)return e;if(e instanceof Object)var t={__proto__:n(e)};else var t=Object.create(null);return Object.getOwnPropertyNames(e).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n))}),t}})),On=t(((t,n)=>{var r=e(`fs`),i=Tn(),a=En(),o=Dn(),s=e(`util`),c,l;typeof Symbol==`function`&&typeof Symbol.for==`function`?(c=Symbol.for(`graceful-fs.queue`),l=Symbol.for(`graceful-fs.previous`)):(c=`___graceful-fs.queue`,l=`___graceful-fs.previous`);function u(){}function d(e,t){Object.defineProperty(e,c,{get:function(){return t}})}var f=u;s.debuglog?f=s.debuglog(`gfs4`):/\bgfs4\b/i.test(process.env.NODE_DEBUG||``)&&(f=function(){var e=s.format.apply(s,arguments);e=`GFS4: `+e.split(/\n/).join(`
|
|
5
|
+
GFS4: `),console.error(e)}),r[c]||(d(r,global[c]||[]),r.close=(function(e){function t(t,n){return e.call(r,t,function(e){e||g(),typeof n==`function`&&n.apply(this,arguments)})}return Object.defineProperty(t,l,{value:e}),t})(r.close),r.closeSync=(function(e){function t(t){e.apply(r,arguments),g()}return Object.defineProperty(t,l,{value:e}),t})(r.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||``)&&process.on(`exit`,function(){f(r[c]),e(`assert`).equal(r[c].length,0)})),global[c]||d(global,r[c]),n.exports=p(o(r)),process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!r.__patched&&(n.exports=p(r),r.__patched=!0);function p(e){i(e),e.gracefulify=p,e.createReadStream=T,e.createWriteStream=ee;var t=e.readFile;e.readFile=n;function n(e,n,r){return typeof n==`function`&&(r=n,n=null),i(e,n,r);function i(e,n,r,a){return t(e,n,function(t){t&&(t.code===`EMFILE`||t.code===`ENFILE`)?m([i,[e,n,r],t,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var r=e.writeFile;e.writeFile=o;function o(e,t,n,i){return typeof n==`function`&&(i=n,n=null),a(e,t,n,i);function a(e,t,n,i,o){return r(e,t,n,function(r){r&&(r.code===`EMFILE`||r.code===`ENFILE`)?m([a,[e,t,n,i],r,o||Date.now(),Date.now()]):typeof i==`function`&&i.apply(this,arguments)})}}var s=e.appendFile;s&&(e.appendFile=c);function c(e,t,n,r){return typeof n==`function`&&(r=n,n=null),i(e,t,n,r);function i(e,t,n,r,a){return s(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var l=e.copyFile;l&&(e.copyFile=u);function u(e,t,n,r){return typeof n==`function`&&(r=n,n=0),i(e,t,n,r);function i(e,t,n,r,a){return l(e,t,n,function(o){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}var d=e.readdir;e.readdir=h;var f=/^v[0-5]\./;function h(e,t,n){typeof t==`function`&&(n=t,t=null);var r=f.test(process.version)?function(e,t,n,r){return d(e,i(e,t,n,r))}:function(e,t,n,r){return d(e,t,i(e,t,n,r))};return r(e,t,n);function i(e,t,n,i){return function(a,o){a&&(a.code===`EMFILE`||a.code===`ENFILE`)?m([r,[e,t,n],a,i||Date.now(),Date.now()]):(o&&o.sort&&o.sort(),typeof n==`function`&&n.call(this,a,o))}}}if(process.version.substr(0,4)===`v0.8`){var g=a(e);x=g.ReadStream,C=g.WriteStream}var _=e.ReadStream;_&&(x.prototype=Object.create(_.prototype),x.prototype.open=S);var v=e.WriteStream;v&&(C.prototype=Object.create(v.prototype),C.prototype.open=w),Object.defineProperty(e,"ReadStream",{get:function(){return x},set:function(e){x=e},enumerable:!0,configurable:!0}),Object.defineProperty(e,"WriteStream",{get:function(){return C},set:function(e){C=e},enumerable:!0,configurable:!0});var y=x;Object.defineProperty(e,"FileReadStream",{get:function(){return y},set:function(e){y=e},enumerable:!0,configurable:!0});var b=C;Object.defineProperty(e,"FileWriteStream",{get:function(){return b},set:function(e){b=e},enumerable:!0,configurable:!0});function x(e,t){return this instanceof x?(_.apply(this,arguments),this):x.apply(Object.create(x.prototype),arguments)}function S(){var e=this;D(e.path,e.flags,e.mode,function(t,n){t?(e.autoClose&&e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n),e.read())})}function C(e,t){return this instanceof C?(v.apply(this,arguments),this):C.apply(Object.create(C.prototype),arguments)}function w(){var e=this;D(e.path,e.flags,e.mode,function(t,n){t?(e.destroy(),e.emit(`error`,t)):(e.fd=n,e.emit(`open`,n))})}function T(t,n){return new e.ReadStream(t,n)}function ee(t,n){return new e.WriteStream(t,n)}var E=e.open;e.open=D;function D(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 E(e,t,n,function(o,s){o&&(o.code===`EMFILE`||o.code===`ENFILE`)?m([i,[e,t,n,r],o,a||Date.now(),Date.now()]):typeof r==`function`&&r.apply(this,arguments)})}}return e}function m(e){f(`ENQUEUE`,e[0].name,e[1]),r[c].push(e),_()}var h;function g(){for(var e=Date.now(),t=0;t<r[c].length;++t)r[c][t].length>2&&(r[c][t][3]=e,r[c][t][4]=e);_()}function _(){if(clearTimeout(h),h=void 0,r[c].length!==0){var e=r[c].shift(),t=e[0],n=e[1],i=e[2],a=e[3],o=e[4];if(a===void 0)f(`RETRY`,t.name,n),t.apply(null,n);else if(Date.now()-a>=6e4){f(`TIMEOUT`,t.name,n);var s=n.pop();typeof s==`function`&&s.call(null,i)}else{var l=Date.now()-o,u=Math.max(o-a,1);l>=Math.min(u*1.2,100)?(f(`RETRY`,t.name,n),t.apply(null,n.concat([a]))):r[c].push(e)}h===void 0&&(h=setTimeout(_,0))}}})),kn=t(((e,t)=>{function n(e,t){typeof t==`boolean`&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}t.exports=n,n.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},n.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},n.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=new Date().getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(Error(`RetryOperation timeout occurred`)),!1;this._errors.push(e);var n=this._timeouts.shift();if(n===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),n=this._timeouts.shift();else return!1;var r=this,i=setTimeout(function(){r._attempts++,r._operationTimeoutCb&&(r._timeout=setTimeout(function(){r._operationTimeoutCb(r._attempts)},r._operationTimeout),r._options.unref&&r._timeout.unref()),r._fn(r._attempts)},n);return this._options.unref&&i.unref(),!0},n.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){n._operationTimeoutCb()},n._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)},n.prototype.try=function(e){console.log(`Using RetryOperation.try() is deprecated`),this.attempt(e)},n.prototype.start=function(e){console.log(`Using RetryOperation.start() is deprecated`),this.attempt(e)},n.prototype.start=n.prototype.try,n.prototype.errors=function(){return this._errors},n.prototype.attempts=function(){return this._attempts},n.prototype.mainError=function(){if(this._errors.length===0)return null;for(var e={},t=null,n=0,r=0;r<this._errors.length;r++){var i=this._errors[r],a=i.message,o=(e[a]||0)+1;e[a]=o,o>=n&&(t=i,n=o)}return t}})),An=t((e=>{var t=kn();e.operation=function(n){return new t(e.timeouts(n),{forever:n&&n.forever,unref:n&&n.unref,maxRetryTime:n&&n.maxRetryTime})},e.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout: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}}})),jn=t(((e,t)=>{t.exports=An()})),Mn=t(((e,t)=>{let n=Symbol();function r(e,t,r){let i=t[n];if(i)return t.stat(e,(e,t)=>{if(e)return r(e);r(null,t.mtime,i)});let a=new Date(Math.ceil(Date.now()/1e3)*1e3+5);t.utimes(e,a,a,i=>{if(i)return r(i);t.stat(e,(e,i)=>{if(e)return r(e);let a=i.mtime.getTime()%1e3==0?`s`:`ms`;Object.defineProperty(t,n,{value:a}),r(null,i.mtime,a)})})}function i(e){let t=Date.now();return e===`s`&&(t=Math.ceil(t/1e3)*1e3),new Date(t)}t.exports.probe=r,t.exports.getMtime=i})),Nn=t(((t,n)=>{let r=e(`path`),i=On(),a=jn(),o=Se(),s=Mn(),c={};function l(e,t){return t.lockfilePath||`${e}.lock`}function u(e,t,n){if(!t.realpath)return n(null,r.resolve(e));t.fs.realpath(e,n)}function d(e,t,n){let r=l(e,t);t.fs.mkdir(r,i=>{if(!i)return s.probe(r,t.fs,(e,i,a)=>{if(e)return t.fs.rmdir(r,()=>{}),n(e);n(null,i,a)});if(i.code!==`EEXIST`)return n(i);if(t.stale<=0)return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));t.fs.stat(r,(r,i)=>{if(r)return r.code===`ENOENT`?d(e,{...t,stale:0},n):n(r);if(!f(i,t))return n(Object.assign(Error(`Lock file is already being held`),{code:`ELOCKED`,file:e}));p(e,t,r=>{if(r)return n(r);d(e,{...t,stale:0},n)})})})}function f(e,t){return e.mtime.getTime()<Date.now()-t.stale}function p(e,t,n){t.fs.rmdir(l(e,t),e=>{if(e&&e.code!==`ENOENT`)return n(e);n()})}function m(e,t){let n=c[e];n.updateTimeout||(n.updateDelay=n.updateDelay||t.update,n.updateTimeout=setTimeout(()=>{n.updateTimeout=null,t.fs.stat(n.lockfilePath,(r,i)=>{let a=n.lastUpdate+t.stale<Date.now();if(r)return r.code===`ENOENT`||a?h(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,m(e,t));if(n.mtime.getTime()!==i.mtime.getTime())return h(e,n,Object.assign(Error(`Unable to update lock within the stale threshold`),{code:`ECOMPROMISED`}));let o=s.getMtime(n.mtimePrecision);t.fs.utimes(n.lockfilePath,o,o,r=>{let i=n.lastUpdate+t.stale<Date.now();if(!n.released){if(r)return r.code===`ENOENT`||i?h(e,n,Object.assign(r,{code:`ECOMPROMISED`})):(n.updateDelay=1e3,m(e,t));n.mtime=o,n.lastUpdate=Date.now(),n.updateDelay=null,m(e,t)}})})},n.updateDelay),n.updateTimeout.unref&&n.updateTimeout.unref())}function h(e,t,n){t.released=!0,t.updateTimeout&&clearTimeout(t.updateTimeout),c[e]===t&&delete c[e],t.options.onCompromised(n)}function g(e,t,n){t={stale:1e4,update:null,realpath:!0,retries:0,fs:i,onCompromised:e=>{throw e},...t},t.retries=t.retries||0,t.retries=typeof t.retries==`number`?{retries:t.retries}:t.retries,t.stale=Math.max(t.stale||0,2e3),t.update=t.update==null?t.stale/2:t.update||0,t.update=Math.max(Math.min(t.update,t.stale/2),1e3),u(e,t,(e,r)=>{if(e)return n(e);let i=a.operation(t.retries);i.attempt(()=>{d(r,t,(e,a,o)=>{if(i.retry(e))return;if(e)return n(i.mainError());let s=c[r]={lockfilePath:l(r,t),mtime:a,mtimePrecision:o,options:t,lastUpdate:Date.now()};m(r,t),n(null,e=>{if(s.released)return e&&e(Object.assign(Error(`Lock is already released`),{code:`ERELEASED`}));_(r,{...t,realpath:!1},e)})})})})}function _(e,t,n){t={fs:i,realpath:!0,...t},u(e,t,(e,r)=>{if(e)return n(e);let i=c[r];if(!i)return n(Object.assign(Error(`Lock is not acquired/owned by you`),{code:`ENOTACQUIRED`}));i.updateTimeout&&clearTimeout(i.updateTimeout),i.released=!0,delete c[r],p(r,t,n)})}function v(e,t,n){t={stale:1e4,realpath:!0,fs:i,...t},t.stale=Math.max(t.stale||0,2e3),u(e,t,(e,r)=>{if(e)return n(e);t.fs.stat(l(r,t),(e,r)=>e?e.code===`ENOENT`?n(null,!1):n(e):n(null,!f(r,t)))})}function y(){return c}o(()=>{for(let e in c){let t=c[e].options;try{t.fs.rmdirSync(l(e,t))}catch{}}}),n.exports.lock=g,n.exports.unlock=_,n.exports.check=v,n.exports.getLocks=y})),Pn=t(((e,t)=>{let n=On();function r(e){let t=[`mkdir`,`realpath`,`stat`,`rmdir`,`utimes`],n={...e};return t.forEach(t=>{n[t]=(...n)=>{let r=n.pop(),i;try{i=e[`${t}Sync`](...n)}catch(e){return r(e)}r(null,i)}}),n}function i(e){return(...t)=>new Promise((n,r)=>{t.push((e,t)=>{e?r(e):n(t)}),e(...t)})}function a(e){return(...t)=>{let n,r;if(t.push((e,t)=>{n=e,r=t}),e(...t),n)throw n;return r}}function o(e){if(e={...e},e.fs=r(e.fs||n),typeof e.retries==`number`&&e.retries>0||e.retries&&typeof e.retries.retries==`number`&&e.retries.retries>0)throw Object.assign(Error(`Cannot use retries with the sync api`),{code:`ESYNC`});return e}t.exports={toPromise:i,toSync:a,toSyncOptions:o}})),Fn=t(((e,t)=>{let n=Nn(),{toPromise:r,toSync:i,toSyncOptions:a}=Pn();async function o(e,t){let i=await r(n.lock)(e,t);return r(i)}function s(e,t){let r=i(n.lock)(e,a(t));return i(r)}function c(e,t){return r(n.unlock)(e,t)}function l(e,t){return i(n.unlock)(e,a(t))}function u(e,t){return r(n.check)(e,t)}function d(e,t){return i(n.check)(e,a(t))}t.exports=o,t.exports.lock=o,t.exports.unlock=c,t.exports.lockSync=s,t.exports.unlockSync=l,t.exports.check=u,t.exports.checkSync=d}))();function In(e){return I(`sha256`).update(e).digest(`hex`)}function Ln(e,t,n){return U(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function Rn(e,t,n){let r=[Ln(e,t)];n&&r.push(Ln(e,t,n));for(let e of r)try{return await R.access(e),!0}catch{}return!1}function zn(e,t,n){return U(e,`.locks`,`runs`,n?`${t}.terminal.${n}`:`${t}.terminal`)}async function Bn(e,t,n){let r=[zn(e,t)];n&&r.push(zn(e,t,n));for(let e of r)try{return await R.access(e),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}function Vn(e,t,n){return U(e,`.locks`,`runs`,n?`${t}.pending.${n}`:`${t}.pending`)}function Hn(e,t,n,r){return B.join(Vn(e,t,r),`${n}.json`)}async function Un(e,t,n){let r=[Vn(e,t)];n&&r.push(Vn(e,t,n));for(let e of r){let t;try{t=await R.readdir(e)}catch(e){if(e.code===`ENOENT`)continue;throw e}for(let n of t)try{await W(()=>R.unlink(B.join(e,n)))}catch(e){if(e.code!==`ENOENT`)throw e}await R.rmdir(e).catch(()=>{})}}async function Wn(e,t,n){let r=await Gn(e,t,n),i=Date.now();if(r.maxId)try{let e=ie(r.maxId.replace(/^evnt_/,``));i<=e&&(i=e+1)}catch{}return{eventId:`evnt_${er(i)}`,createdAt:new Date(i)}}async function Gn(e,t,n){let r=[];try{r=await R.readdir(B.join(e,`events`))}catch(e){if(e.code!==`ENOENT`)throw e}let i=`${t}-`,a=[],o=null,s=0,c=!1,l=0;for(let e of r){if(!e.startsWith(i)||!e.endsWith(`.json`))continue;let t=e.slice(0,-5);if(!mt(t)&&!(n&&pt(t,n)))continue;let r=G(t).slice(i.length);l+=1,a.push(r),(!o||r>o)&&(o=r);let u=ce(r);u!==null&&(c=!0,u>s&&(s=u))}return{maxId:o,usesSlots:c,maxSlot:s,count:l,ids:a}}function Kn(e,t){return B.join(e,`hooks`,`tokens`,`${In(t)}.json`)}const qn=C({hookId:_().optional(),runId:_(),eventId:_().optional(),tokenRetentionUntil:se().optional()});async function Jn(e){try{return await X(e,qn)}catch(e){if(e instanceof SyntaxError||e instanceof j)return null;throw e}}async function Yn(e,t,n){let r=Kn(e,t);await R.mkdir(B.dirname(r),{recursive:!0});let i=new AbortController,a;try{a=await(0,Fn.lock)(r,{realpath:!1,stale:3e4,update:1e3,retries:{retries:350,factor:1,minTimeout:100,maxTimeout:100},onCompromised(e){i.abort(new s(`Hook token claim lock was compromised`,{cause:e}))}})}catch(e){throw new s(`Could not acquire Hook token claim lock`,{cause:e})}let o;try{o=await n(i.signal),i.signal.throwIfAborted()}catch(e){throw i.signal.aborted||await a().catch(()=>{}),e}try{await a()}catch(e){throw new s(`Could not release Hook token claim lock`,{cause:e})}return o}function Xn(e,t,n){let r=I(`sha256`).update(`${t}\x00${n}`).digest(`hex`);return B.join(e,`hooks`,`resumes`,`${r}.json`)}async function Zn(e,t,n,r){await Yn(e,t,async i=>{let a=Kn(e,t),o=await Jn(a);o&&o.runId===n&&o.hookId===r&&(i.throwIfAborted(),await Z(a))})}function Qn(e,t,n,r){let i=I(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return B.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const $n=r(`@workflow/world-local//storageMonotonicUlid`,1,()=>({next:A(()=>Math.random())})),er=e=>$n.next(e),tr=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=G(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?pe(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:pe(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},nr=C({runId:_()}),rr=C({hookId:_(),tag:_().optional()});function ir(e,t){return U(e,`hooks`,`token-index`,In(t))}function ar(e,t){return H(`hookId`,t),U(e,`hooks`,`id-index`,t)}function or(e){return U(e,`hooks`,`by-run`)}function sr(e){let t=G(e);return t===e?void 0:e.slice(t.length+1)}function cr(e,t){return t?mt(e)||pt(e,t):mt(e)}async function lr(e){try{return await X(e,D)}catch(e){if(e instanceof SyntaxError||e instanceof j)return null;throw e}}async function ur(e,t,n,r,i,a){H(`runId`,n),H(`eventId`,i),a!==void 0&&H(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([Q(B.join(ir(e,t),o),s),Q(B.join(ar(e,r),o),s)])}function dr(e,t,n,r){return K(e,`hooks/by-run`,`${t}-${n}`,r)}async function fr(e,t,n,r){await Q(dr(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function pr(e,t,n,r){await Z(dr(e,t,n,r)),r&&await Z(dr(e,t,n))}async function mr(e,t){H(`runId`,t);let n=or(e),r=`${t}-`,i=[];for(let e of await Tt(n)){if(!e.startsWith(r))continue;let t=null;try{t=await X(B.join(n,`${e}.json`),rr)}catch(e){if(!(e instanceof SyntaxError||e instanceof j))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function hr(e,t){await Z(B.join(or(e),`${t}.json`))}const gr=r(`@workflow/world-local//hookIndexEnsureCache`,1,()=>({ensuredBasedirs:new Map}));function _r(){gr.ensuredBasedirs.clear()}async function vr(e){let t=B.resolve(e),n=gr.ensuredBasedirs.get(t);return n||(n=br(t).catch(e=>{throw gr.ensuredBasedirs.delete(t),e}),gr.ensuredBasedirs.set(t,n)),n}async function yr(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function br(e){let t=B.join(e,`hooks`,`.hook-index-complete`);try{await R.access(t);return}catch{}let n=B.join(e,`events`);await yr(await Tt(n),32,async t=>{let r=await lr(B.join(n,`${t}.json`));if(!r||r.eventType!==`hook_created`||typeof r.correlationId!=`string`)return;let i=r.eventData?.token;if(typeof i==`string`)try{await ur(e,i,r.runId,r.correlationId,r.eventId,sr(t))}catch{}});let r=B.join(e,`hooks`);await yr(await Tt(r),32,async t=>{let n=null;try{n=await X(B.join(r,`${t}.json`),N)}catch(e){if(!(e instanceof SyntaxError||e instanceof j))throw e}if(n)try{await fr(e,n.runId,n.hookId,sr(t))}catch{}}),await Q(t,``)}async function xr(e,t,n,r){await vr(e);let i;try{i=t.kind===`token`?ir(e,t.token):ar(e,t.hookId)}catch{return null}let a=(await Tt(i)).filter(e=>cr(e,r)).sort((e,t)=>G(t).localeCompare(G(e)));for(let t of a){let r=null;try{r=await X(B.join(i,`${t}.json`),nr)}catch(e){if(!(e instanceof SyntaxError||e instanceof j))throw e}if(!r)continue;let a=G(t),o;try{o=K(e,`events`,`${r.runId}-${a}`,sr(t))}catch{continue}let s=await lr(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function Sr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Cr(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function wr(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function Tr(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function Er(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 Dr(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function Or(e,t,n){let r=await q(e,`runs`,t,v,n);return r?E(r.status):!1}async function kr(e,t,n,r){let i=await xr(e,t,e=>Dr(e,n),r);if(!i||!Dr(i,n))return null;if(await Or(e,i.runId,r)){let e=i.eventData.tokenRetentionUntil;if(!e||e.getTime()<=Date.now())return null}return await Rn(e,i.correlationId,r)?null:i}async function Ar(e,t,n){let r=Er(t);return await Q(Kn(e,r.token),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId,tokenRetentionUntil:t.eventData.tokenRetentionUntil})),await fr(e,r.runId,r.hookId,n),await Q(K(e,`hooks`,r.hookId,n),JSON.stringify(r,J,2)),r}async function jr(e,t,n){let r=await kr(e,{kind:`token`,token:t},e=>Tr(e)===t,n);return r?Ar(e,r,n):null}async function Mr(e,t,n){let r=await kr(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?Ar(e,r,n):null}function Nr(e,t){async function n(n){return await Rn(e,n.hookId,t)?!1:n.tokenRetentionUntil&&n.tokenRetentionUntil.getTime()>Date.now()?!0:!await Or(e,n.runId,t)}async function r(r){let i=await Jn(Kn(e,r));if(i?.hookId){try{let a=await q(e,`hooks`,i.hookId,N,t);if(a?.token===r){if(!await n(a))throw new c(r);return{...a,isWebhook:a.isWebhook??!0}}}catch(e){if(!lt.is(e))throw e}return null}let a=B.join(e,`hooks`),o=await Tt(a);for(let e of o){let t=await X(B.join(a,`${e}.json`),N);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){H(`hookId`,r);let a=await q(e,`hooks`,r,N,t);if(a&&!await n(a))throw new c(r);let o=a??await Mr(e,r,t);if(!o)throw new c(r);let s=i?.resolveData||`all`;return wr({...o,isWebhook:o.isWebhook??!0},s)}async function a(n){let i=await r(n)??await jr(e,n,t);if(!i)throw new c(n);return i}async function o(t){let r=B.join(e,`hooks`),i=t.resolveData||`all`,a=await At({directory:r,schema:N,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=>wr(e,i))}}return{get:i,getByToken:a,list:o}}async function Pr(e,t){await vr(e);for(let n of await mr(e,t)){if(n.hookId){let r=null,i=null;try{i=K(e,`hooks`,n.hookId,n.tag),r=await X(i,N)}catch(e){if(!lt.is(e)&&!(e instanceof SyntaxError||e instanceof j))throw e}if(r&&i&&r.runId===t){if(r.tokenRetentionUntil&&r.tokenRetentionUntil.getTime()>Date.now())continue;await Zn(e,r.token,r.runId,r.hookId),await Z(Qn(e,r.token,r.runId,r.hookId)),await Z(i)}}await hr(e,n.fileId)}}const Fr=new Le;Fr.setMaxListeners(0);function Ir(){return w(`WORKFLOW_LOCAL_RUN_STATUS_POLL_INTERVAL_MS`,100,{integer:!0,min:1})}function Lr(e){Fr.emit(`run:${e}`)}function Rr(e,t,n){return t<=0||n?.aborted?Promise.resolve():new Promise(r=>{let i=`run:${e}`,a=!1,o=()=>{a||(a=!0,clearTimeout(s),Fr.off(i,o),n?.removeEventListener(`abort`,o),r())},s=setTimeout(o,t);Fr.once(i,o),n?.addEventListener(`abort`,o,{once:!0})})}async function zr(e,t,n,r,i,o){if(E(o.status)||await Bn(e,t))throw new a(`Workflow run "${t}" is already in a terminal state`);let s=Hn(e,t,n);await Q(s,r);try{if(await Bn(e,t)||await wt(s,i)!==`linked`)throw new a(`Workflow run "${t}" is already in a terminal state`)}finally{await R.unlink(s).catch(()=>{})}}async function Br(e,t,n,r,i){H(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{await Q(zn(e,t),``),await Un(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 Y(U(e,`runs`,`${t}.json`),i,{overwrite:!0}),Lr(t),await Pr(e,t),{event:void 0,run:Sr(i,a)}}case`wait_completed`:case`hook_received`:{let i=`evnt_${er()}`,o=new Date,s={...n,runId:t,eventId:i,createdAt:o,specVersion:7},c=U(e,`events`,`${`${t}-${i}`}.json`);return n.eventType===`hook_received`?await zr(e,t,i,JSON.stringify(s,J,2),c,r):await Y(c,s),{event:O(s,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const Vr=r(`@workflow/world-local//runFileLocks`,1,()=>({byKey:new Map}));function Hr(e,t){let n=Vr.byKey.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{Vr.byKey.get(e)===r.task&&Vr.byKey.delete(e)}})();return r.task=i,Vr.byKey.set(e,i),i}function Ur(e,t){let n=(async(n,r)=>{H(`runId`,n);let a=await q(e,`runs`,n,v,t);if(!a)throw new i(n);return Sr(a,r?.resolveData??`all`)});return{get:n,waitForTerminalStatus:(async(e,t)=>{let r=Date.now()+(t?.timeoutMs??0);for(;;){let i=await n(e,t);if(E(i.status))return i;let a=r-Date.now();if(a<=0||t?.signal?.aborted)return i;await Rr(e,Math.min(a,Ir()),t?.signal)}}),getMany:(async(e,t)=>{let r=[...new Set(e)],a=await Promise.all(r.map(async e=>{try{return await n(e,t)}catch(e){if(e instanceof i)return null;throw e}})),o=new Map(r.map((e,t)=>[e,a[t]]));return e.map(e=>o.get(e)??null)}),list:(async t=>{let n=t?.resolveData??`all`,r=await At({directory:B.join(e,`runs`),schema:v,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:tr(`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,a)=>(H(`runId`,n),Hr(n,async()=>{let o=await q(e,`runs`,n,v,t);if(!o)throw new i(n);try{he(r,{existingKeys:Object.keys(o.attributes??{}),allowReservedAttributes:a?.allowReservedAttributes})}catch(e){throw e instanceof me,e}let s=ae(o.attributes,r),c={...o,attributes:s,updatedAt:new Date};return await Y(K(e,`runs`,n,t),c,{overwrite:!0}),{attributes:s}}))}}const Wr=1440*60*1e3;function Gr(){let e=Number(process.env.WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS??30);if(!Number.isFinite(e)||e<=0)throw new s(`WORKFLOW_LOCAL_HOOK_RETENTION_LIMIT_DAYS must be a positive number`,{status:400});return e*Wr}const Kr=C({eventId:_()}),qr=C({runId:_(),resumeId:_(),hookId:_(),eventId:_(),payloadDigest:_().optional()});function Jr(e,t){return e.eventType===`hook_received`&&e.correlationId===t.hookId&&(e.resumeId===void 0||e.resumeId===t.resumeId)}async function Yr(e,t,n,r){let i=await Gn(e,t,r);for(let a of i.ids){let i=await q(e,`events`,`${t}-${a}`,D,r);if(i&&i.resumeId===n.resumeId&&Jr(i,n))return i}return null}async function Xr(e,t,n){if(t.hookId&&await Rn(e,t.hookId,n))return!0;let r=await q(e,`runs`,t.runId,v,n);return r?E(r.status)?!t.tokenRetentionUntil||t.tokenRetentionUntil.getTime()<=Date.now():!1:!0}async function Zr(e){try{return await X(e,Kr)}catch(e){if(e instanceof SyntaxError||e instanceof j)return null;throw e}}function Qr(e){return le(e.eventId)?e.eventId:null}function $r(e,t){let n=G(t).slice(e.length+1);return le(n)?n:null}async function ei(e,t,n){return(await At({directory:B.join(e,`events`),schema:D,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:tr(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function ti(e,t,n,r,i){let a=await q(e,`events`,`${t}-${r}`,D,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await q(e,`hooks`,n,N,i))return;let o=Er(a);await ur(e,o.token,t,n,r,i),await fr(e,t,n,i),await Q(K(e,`hooks`,n,i),JSON.stringify(o,J,2))}async function ni(e,t,n,r,i){let a=Qn(e,t,n,r);return await Q(a,JSON.stringify({eventId:i}))?i:(await Zr(a))?.eventId??null}function ri(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 ii(e,t){let n=B.join(e,`waits`),r=await Tt(n);for(let e of r)e.startsWith(`${t}-`)&&await Z(B.join(n,`${e}.json`))}async function ai(e,t,n,r){return Hr(t,async()=>{let i=await X(K(e,`runs`,t,n),v),a={...r,attributes:i?.attributes??r.attributes};return await Y(K(e,`runs`,t,n),a,{overwrite:!0}),E(a.status)&&Lr(t),a})}function oi(e,t){let n=Gr(),r=4*1024*1024,d=new Map,f=new Map,p=new Map,m=0;function h(e){let t=d.get(e);if(!t)return;d.delete(e),m-=f.get(e)??0,f.delete(e);let n=p.get(t.runId);n?.delete(e),n?.size===0&&p.delete(t.runId)}function g(e){for(let t of p.get(e)??[])h(t)}function _(){d.clear(),f.clear(),p.clear(),m=0,C.clear()}let C=new Map;function w(e){return t?`${e}.${t}`:e}async function T(n,r){let i=`${n}-${fe(r)}`;for(let n of t?[K(e,`events`,i,t),K(e,`events`,i)]:[K(e,`events`,i)])try{return await R.stat(n),!0}catch(e){if(e.code!==`ENOENT`)throw e}return!1}async function re(n,r){let i=w(n),a=C.get(i);if(a===void 0||r?.rescan){let r=await Gn(e,n,t);a===void 0?(a=r.count>0&&!r.usesSlots?null:{published:r.maxSlot},C.set(i,a)):a!==null&&(a.published=Math.max(a.published,r.maxSlot))}if(a===null)return null;let o=Math.max(a.published+1,1,r?.atLeast??1);for(;await T(n,o);)a.published=Math.max(a.published,o),o+=1;return o}function ie(e,t){let n=ce(t);if(n===null)return;let r=C.get(w(e));r&&(r.published=Math.max(r.published,n))}async function se(e){let t=await re(e);return t===null?`evnt_${er()}`:fe(t)}async function de(n){let r=await re(n,{rescan:!0});return r===null?Wn(e,n,t):{eventId:fe(r),createdAt:new Date}}function k(e,t,n){if(n>r)return;for(;d.size>0&&(d.size>=1e3||m+n>r);){let e=d.keys().next().value;h(e)}d.set(e,t),f.set(e,n),m+=n;let i=p.get(t.runId)??new Set;i.add(e),p.set(t.runId,i)}function me(e,t,n){if(te(e.eventType)){g(e.runId);return}let i=Buffer.byteLength(n);if(i>r)return;let a=D.safeParse(JSON.parse(n,bt));a.success&&k(t,a.data,i)}async function A(n){let r=n;for(let n=0;;n++){let i=K(e,`events`,`${r.runId}-${r.eventId}`,t),a=JSON.stringify(r,J,2),o=ce(r.eventId);if(o===null)return await xt(i,a),me(r,i,a),r;if(await Q(i,a))return ie(r.runId,r.eventId),me(r,i,a),r;let s=await re(r.runId,{rescan:n>0&&n%8==0,atLeast:o+1});Ie(s!==null),r={...r,eventId:fe(s)}}}let ye=(t,n)=>At({directory:B.join(e,`events`),schema:D,cachedItems:d,filePrefix:`${t}-`,sortOrder:n.sortOrder??`asc`,limit:n.limit,cursor:n.cursor,getCreatedAt:tr(`evnt`),getId:e=>e.eventId,getSortKey:Qr,getSortKeyFromFileId:e=>$r(t,e)}),j=new Map,M=new Map,P={clearCache:_,async create(r,d,f){if(d.eventType===`hook_created`&&d.eventData.tokenRetentionUntil!==void 0&&d.eventData.tokenRetentionUntil.getTime()>Date.now()+n)throw new s(`Hook minimum retention cannot exceed ${n/Wr} days in the Local World.`,{status:400});if(r!=null&&r!==``&&H(`runId`,r),`correlationId`in d&&typeof d.correlationId==`string`&&H(`correlationId`,d.correlationId),ne(d.eventType)&&r&&d.correlationId){let e=t?`${r}-${d.correlationId}.${t}`:`${r}-${d.correlationId}`;return ri(j,e,p)}if(b(d.eventType)&&r&&d.correlationId){let e=t?`${r}-${d.correlationId}.hook.${t}`:`${r}-${d.correlationId}.hook`;return ri(M,e,p)}return p();async function p(){let n=``,p=!1,m=null,h=new Date,g;if(d.eventType===`run_created`&&(!r||r===``))g=`wrun_${er()}`;else if(r)g=r;else throw Error(`runId is required for non-run_created events`);if(d.eventType===`run_created`&&r&&r!==``){let e=_e(g,`wrun_`);if(e)throw new s(e)}let _=d.specVersion??7,b=null;if(d.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(d.eventType)&&(b=await q(e,`runs`,g,v,t),d.eventType===`run_started`&&!b&&`eventData`in d&&d.eventData)){let n=d.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){he(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:g,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:_,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:h,updatedAt:h};if(await Q(K(e,`runs`,g,t),JSON.stringify(r,J))){let e=await se(g);await A({eventType:`run_created`,runId:g,eventId:e,createdAt:h,specVersion:_,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes,encryptionPublicKey:n.encryptionPublicKey}}),b=r}else b=await q(e,`runs`,g,v,t)}}if(n=await se(g),!b&&(d.eventType===`run_failed`||d.eventType===`attr_set`||d.eventType===`run_started`))throw new i(g);if(b){if(ve(b.specVersion))throw new o(b.specVersion,7);if(oe(b.specVersion))return Br(e,g,d,b,f)}let C=x(d),w=C&&d.eventType===`step_started`;if(b&&E(b.status)){if(d.eventType===`run_cancelled`&&b.status===`cancelled`)return{event:O(await A({...d,runId:g,eventId:n,createdAt:h,specVersion:_}),f?.resolveData??`all`),run:b,...b?{maxEvents:ue()}:{}};if(d.eventType===`run_started`)throw new a(`Workflow run "${g}" is already in terminal state "${b.status}"`);if(te(d.eventType))throw new l(`Cannot transition run from terminal state "${b.status}"`);if(C)throw new l(`Cannot create new entities on run in terminal state "${b.status}"`);if(d.eventType===`attr_set`)throw new l(`Cannot set attributes on run in terminal state "${b.status}"`)}let T=null;if(ne(d.eventType)&&d.eventType!==`step_created`&&d.correlationId){if(T=await q(e,`steps`,`${g}-${d.correlationId}`,S,t),!T&&!w)throw new s(`Step "${d.correlationId}" not found`);if(w&&T)throw new l(`Step "${d.correlationId}" already created`);if(T){if(ee(T.status))throw new l(`Cannot modify step in terminal state "${T.status}"`);if(b&&E(b.status)&&T.status!==`running`)throw new a(`Cannot modify non-running step on run in terminal state "${b.status}"`)}}if(ge(d.eventType)&&d.correlationId){if(d.eventType===`hook_received`&&f?.resumeId){let n=await X(Xn(e,g,f.resumeId),qr);if(n&&n.hookId===d.correlationId&&(!f.resumePayloadDigest||!n.payloadDigest||n.payloadDigest===f.resumePayloadDigest)){let r=await q(e,`events`,`${g}-${n.eventId}`,D,t),i=r&&Jr(r,n)?r:await Yr(e,g,n,t);if(i)return{event:i}}}if(d.eventType===`hook_received`&&await Rn(e,d.correlationId,t)||!await q(e,`hooks`,d.correlationId,N,t))throw new c(d.correlationId);if(d.eventType===`hook_received`&&f?.resumeId){let r=Xn(e,g,f.resumeId),i=async r=>{if(r.hookId!==d.correlationId)throw new l(`hook_received resumeId "${f.resumeId}" already recorded for a different hook`);if(f.resumePayloadDigest&&r.payloadDigest&&r.payloadDigest!==f.resumePayloadDigest)throw new l(`hook_received resumeId "${f.resumeId}" already recorded with a different payload`);let i=await q(e,`events`,`${g}-${r.eventId}`,D,t);if(i&&Jr(i,r))return{event:i};let a=await Yr(e,g,r,t);return a?{event:a}:(m=r.eventId,i||(n=r.eventId,p=!0),null)},a=await X(r,qr);if(a){let e=await i(a);if(e)return e}else if(p=!le(n),m=n,!await Q(r,JSON.stringify({runId:g,resumeId:f.resumeId,hookId:d.correlationId,eventId:n,...f.resumePayloadDigest?{payloadDigest:f.resumePayloadDigest}:{}}))){m=null;let e=await X(r,qr);if(e){let t=await i(e);if(t)return t}}}}let k={...d,runId:g,eventId:n,createdAt:h,specVersion:_,...d.eventType===`hook_received`&&f?.resumeId?{resumeId:f.resumeId}:{}};if(d.eventType===`run_started`&&`eventData`in k&&delete k.eventData,w&&k.eventType===`step_started`&&k.eventData){let{input:e,...t}=k.eventData;k={...k,eventData:t}}let j,M,P,F,be=!1,xe;if(te(d.eventType)&&b){await Q(zn(e,g,t),``),await Un(e,g,t);let r=await de(g);n=r.eventId,k={...k,eventId:n,createdAt:r.createdAt}}if(d.eventType===`run_created`&&`eventData`in d){let n=d.eventData;if(he(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),j={runId:g,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:_,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:h,updatedAt:h},!await Q(K(e,`runs`,g,t),JSON.stringify(j,J,2)))throw new l(`Workflow run "${g}" already exists`)}else if(d.eventType===`run_started`){if(b){if(b.status===`running`){if(f?.skipPreload)return{run:b,maxEvents:ue()};let e=await ye(g,{limit:ue()});return{run:b,events:e.data,cursor:e.cursor,hasMore:e.hasMore,maxEvents:ue()}}j=await ai(e,g,t,{runId:b.runId,deploymentId:b.deploymentId,workflowName:b.workflowName,specVersion:b.specVersion,executionContext:b.executionContext,input:b.input,createdAt:b.createdAt,expiredAt:b.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:b.startedAt??h,updatedAt:h,attributes:b.attributes,encryptionPublicKey:b.encryptionPublicKey})}}else if(d.eventType===`run_completed`&&`eventData`in d){let n=d.eventData;b&&(j=await ai(e,g,t,{runId:b.runId,deploymentId:b.deploymentId,workflowName:b.workflowName,specVersion:b.specVersion,executionContext:b.executionContext,input:b.input,createdAt:b.createdAt,expiredAt:b.expiredAt,startedAt:b.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:h,updatedAt:h,attributes:b.attributes,encryptionPublicKey:b.encryptionPublicKey}),await Promise.all([Pr(e,g),ii(e,g)]))}else if(d.eventType===`run_failed`&&`eventData`in d){let n=d.eventData;b&&(j=await ai(e,g,t,{runId:b.runId,deploymentId:b.deploymentId,workflowName:b.workflowName,specVersion:b.specVersion,executionContext:b.executionContext,input:b.input,createdAt:b.createdAt,expiredAt:b.expiredAt,startedAt:b.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:h,updatedAt:h,attributes:b.attributes,encryptionPublicKey:b.encryptionPublicKey}),await Promise.all([Pr(e,g),ii(e,g)]))}else if(d.eventType===`run_cancelled`)b&&(j=await ai(e,g,t,{runId:b.runId,deploymentId:b.deploymentId,workflowName:b.workflowName,specVersion:b.specVersion,executionContext:b.executionContext,input:b.input,createdAt:b.createdAt,expiredAt:b.expiredAt,startedAt:b.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:h,updatedAt:h,attributes:b.attributes,encryptionPublicKey:b.encryptionPublicKey}),await Promise.all([Pr(e,g),ii(e,g)]));else if(d.eventType===`attr_set`&&b)j=await Hr(g,async()=>{let n=await X(K(e,`runs`,g,t),v);if(!n)throw new i(g);if(he(d.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:d.eventData.allowReservedAttributes===!0}),d.correlationId&&d.eventData.writer.type===`workflow`&&!await Q(U(e,`.locks`,`attributes`,t?`${g}-${d.correlationId}.created.${t}`:`${g}-${d.correlationId}.created`),``))throw new l(`Attribute event "${d.correlationId}" already exists`);let r={...n,attributes:ae(n.attributes,d.eventData.changes),updatedAt:h};return await Y(K(e,`runs`,g,t),r,{overwrite:!0}),r});else if(d.eventType===`step_created`&&`eventData`in d){if(!await Q(U(e,`.locks`,`steps`,t?`${g}-${d.correlationId}.created.${t}`:`${g}-${d.correlationId}.created`),``))throw new l(`Step "${d.correlationId}" already created`);let n=d.eventData;M={runId:g,stepId:d.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:h,updatedAt:h,specVersion:_},await Y(K(e,`steps`,`${g}-${d.correlationId}`,t),M)}else if(d.eventType===`step_started`){if(!T&&w){let n=d.eventData;if(await Q(U(e,`.locks`,`steps`,t?`${g}-${d.correlationId}.created.${t}`:`${g}-${d.correlationId}.created`),``)){let r={runId:g,stepId:d.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:h,updatedAt:h,specVersion:_};await Y(K(e,`steps`,`${g}-${d.correlationId}`,t),r);let i=await se(g);await A({eventType:`step_created`,runId:g,eventId:i,createdAt:h,specVersion:_,correlationId:d.correlationId,eventData:{stepName:n.stepName,input:n.input}}),T=r,be=!0}else throw new l(`Step "${d.correlationId}" already created`)}if(T){if(T.retryAfter&&T.retryAfter.getTime()>Date.now())throw new u(`Cannot start step "${d.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((T.retryAfter.getTime()-Date.now())/1e3)});let n=`${g}-${d.correlationId}`,r=await q(e,`steps`,n,S,t);if(r&&ee(r.status))throw new l(`Cannot modify step in terminal state "${r.status}"`);M={...T,status:`running`,startedAt:T.startedAt??h,attempt:T.attempt+1,retryAfter:void 0,updatedAt:h},await Y(K(e,`steps`,n,t),M,{overwrite:!0})}}else if(d.eventType===`step_completed`&&`eventData`in d){let n=d.eventData;if(T){let r=`${g}-${d.correlationId}`;if(!await Q(U(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new l(`Cannot modify step in terminal state`);M={...T,status:`completed`,output:n.result,completedAt:h,updatedAt:h},await Y(K(e,`steps`,r,t),M,{overwrite:!0})}}else if(d.eventType===`step_failed`&&`eventData`in d){let n=d.eventData;if(T){let r=`${g}-${d.correlationId}`;if(!await Q(U(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new l(`Cannot modify step in terminal state`);M={...T,status:`failed`,error:n.error,completedAt:h,updatedAt:h},await Y(K(e,`steps`,r,t),M,{overwrite:!0})}}else if(d.eventType===`step_retrying`&&`eventData`in d){let n=d.eventData;if(T){let r=`${g}-${d.correlationId}`;M={...T,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:h},await Y(K(e,`steps`,r,t),M,{overwrite:!0})}}else if(d.eventType===`hook_created`&&`eventData`in d){let r=d.eventData,i=Kn(e,r.token),a=JSON.stringify({token:r.token,hookId:d.correlationId,runId:g,eventId:n,tokenRetentionUntil:r.tokenRetentionUntil}),o=await Yn(e,r.token,async n=>{let o=await Jn(i);return o||=(n.throwIfAborted(),await Z(i),await jr(e,r.token,t),await Jn(i)),o?o.runId===g&&o.hookId===d.correlationId?{status:`owned`,claim:o}:await Xr(e,o,t)?(n.throwIfAborted(),await Z(i),o.hookId&&(await Z(K(e,`hooks`,o.hookId,t)),await Z(Qn(e,r.token,o.runId,o.hookId)),await pr(e,o.runId,o.hookId,t)),n.throwIfAborted(),Ie(await Q(i,a)),{status:`claimed`}):{status:`conflict`,claim:o}:(n.throwIfAborted(),Ie(await Q(i,a)),{status:`claimed`})});if(o.status===`owned`){let i=o.claim,a;if(i.eventId)a=i.eventId;else{let i=await ei(e,g,d.correlationId);if(i!==null)throw await ti(e,g,d.correlationId,i,t),new l(`Hook "${d.correlationId}" already created`);let o=await ni(e,r.token,g,d.correlationId,n);if(o===null)throw new l(`Hook "${d.correlationId}" already created`);a=o}n=a,p=!0;let s=pe(n.replace(/^evnt_/,``))??h;k={...d,eventData:{...d.eventData,tokenRetentionUntil:i.tokenRetentionUntil},runId:g,eventId:n,createdAt:s,specVersion:_}}if(o.status===`conflict`){let e=o.claim;return{event:O(await A({eventType:`hook_conflict`,correlationId:d.correlationId,eventData:{token:r.token,conflictingRunId:e.runId},runId:g,eventId:n,createdAt:h,specVersion:_}),f?.resolveData??`all`),run:j,step:M,hook:void 0}}let s=k.eventData;P={runId:g,hookId:d.correlationId,token:s.token,metadata:s.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:k.createdAt,specVersion:_,isWebhook:s.isWebhook??!1,isSystem:s.isSystem??!1,tokenRetentionUntil:s.tokenRetentionUntil},xe=o.status===`owned`?{overwrite:!0}:void 0,await ur(e,r.token,g,d.correlationId,n,t)}else if(d.eventType===`hook_disposed`){if(!await Q(Ln(e,d.correlationId,t),``))throw new l(`Hook "${d.correlationId}" already disposed`);let n=K(e,`hooks`,d.correlationId,t),r=await q(e,`hooks`,d.correlationId,N,t);r&&(await Zn(e,r.token,r.runId,r.hookId),await Z(Qn(e,r.token,r.runId,r.hookId))),await Z(n),await pr(e,g,d.correlationId,t)}else if(d.eventType===`wait_created`&&`eventData`in d){let n=`${g}-${d.correlationId}`;if(!await Q(U(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new l(`Wait "${d.correlationId}" already exists`);let r=d.eventData;F={waitId:n,runId:g,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:h,updatedAt:h,specVersion:_},await Y(K(e,`waits`,n,t),F)}else if(d.eventType===`wait_completed`){let n=`${g}-${d.correlationId}`,r=U(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await Q(r,``))throw new l(`Wait "${d.correlationId}" already completed`);let i=await q(e,`waits`,n,y,t);if(!i)throw await R.unlink(r).catch(()=>{}),new s(`Wait "${d.correlationId}" not found`);F={...i,status:`completed`,completedAt:h,updatedAt:h},await Y(K(e,`waits`,n,t),F,{overwrite:!0})}if(d.eventType===`hook_received`&&d.correlationId&&await Rn(e,d.correlationId,t))throw new c(d.correlationId);let Se=K(e,`events`,`${g}-${n}`,t),I=JSON.stringify(k,J,2),Ce=async r=>{let i=ce(n);if(p||i===null)return!1;let a=await re(g,{rescan:r>0&&r%8==0,atLeast:i+1});return a===null?!1:(n=fe(a),k={...k,eventId:n},Se=K(e,`events`,`${g}-${n}`,t),I=JSON.stringify(k,J,2),!0)},we=!1;for(let r=0;;r++){if(d.eventType===`hook_received`){let r=await Bn(e,g,t),i=r?null:await q(e,`runs`,g,v,t);if(r||i&&E(i.status))throw new a(`Workflow run "${g}" is already in a terminal state`);let o=Hn(e,g,`${n}.${er()}`,t);if(!await Q(o,I))throw new s(`Failed to stage event "${n}" for run "${g}": staging path already exists`);try{if(await Bn(e,g,t))throw new a(`Workflow run "${g}" is already in a terminal state`);let n=await wt(o,Se);if(n===`missing`)throw new a(`Workflow run "${g}" is already in a terminal state`);we=n===`linked`}finally{await Z(o).catch(()=>{})}}else we=await Q(Se,I);if(we){ie(g,n);break}if(d.eventType===`hook_received`&&f?.resumeId){let r=await q(e,`events`,`${g}-${n}`,D,t);if(r&&Jr(r,{runId:g,resumeId:f.resumeId,hookId:d.correlationId,eventId:n}))return{event:r}}if(!await Ce(r))break}if(!we)throw d.eventType===`hook_created`&&d.correlationId&&await ti(e,g,d.correlationId,n,t),new l(`Event "${n}" already exists for run "${g}"`);me(k,Se,I),d.eventType===`hook_received`&&f?.resumeId&&m!==null&&m!==n&&await xt(Xn(e,g,f.resumeId),JSON.stringify({runId:g,resumeId:f.resumeId,hookId:d.correlationId,eventId:n,...f.resumePayloadDigest?{payloadDigest:f.resumePayloadDigest}:{}}),{overwrite:!0}),P&&d.eventType===`hook_created`&&(await fr(e,P.runId,P.hookId,t),await Y(K(e,`hooks`,P.hookId,t),P,xe));let L=f?.resolveData??`all`,Te=O(k,L),z;if(d.eventType===`run_started`&&j&&!f?.skipPreload&&(z=await ye(g,{limit:ue()})),typeof f?.sinceCursor==`string`){let e=await ye(g,{sortOrder:`asc`,cursor:f.sinceCursor});z=L===`none`?{...e,data:e.data.map(e=>O(e,L))}:e}let Ee={event:Te,run:j,step:M,hook:P,wait:F,...be?{stepCreated:!0}:{},...j?{maxEvents:ue()}:{}};return z?{...Ee,events:z.data,cursor:z.cursor,hasMore:z.hasMore}:Ee}},async get(n,r,i){H(`runId`,n),H(`eventId`,r);let a=await q(e,`events`,`${n}-${r}`,D,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return O(a,i?.resolveData??`all`)},async list(e){let{runId:t}=e;H(`runId`,t);let n=e.resolveData??`all`,r=await ye(t,{...e.pagination,limit:e.pagination?.limit??ue()});return n===`none`?{...r,data:r.data.map(e=>O(e,n))}:r},async listByCorrelationId(t){let n=t.correlationId;H(`correlationId`,n),H(`runId`,t.runId);let r=t.resolveData??`all`,i=await At({directory:B.join(e,`events`),schema:D,cachedItems:d,filePrefix:`${t.runId}-`,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:tr(`evnt`),getId:e=>e.eventId,getSortKey:Qr,getSortKeyFromFileId:e=>$r(t.runId,e)});return r===`none`?{...i,data:i.data.map(e=>O(e,r))}:i}};async function F(e,t,n){if(!e.event)return e;let r=ce(e.event.eventId);if(r===null||t<1||r<=t+1)return e;let i=r-t-1,a=await P.list({runId:e.event.runId,pagination:{cursor:`${Dt}${fe(t)}`,limit:i,sortOrder:`asc`},resolveData:n}),o=e.event.eventId,s=a.data.filter(e=>e.eventId<o);return{...e,events:s,cursor:null,hasMore:s.length<r-t-1}}let be=(async(e,t,n)=>{if(n?.eventCount===void 0)return P.create(e,t,n);let r=n.resolveData??`all`,i=await P.create(e,t,n);return typeof n.sinceCursor==`string`?i:F(i,n.eventCount,r)});return{...P,create:be}}function si(e,t){return{get:(async(n,r,i)=>{H(`runId`,n),H(`stepId`,r);let a=await q(e,`steps`,`${n}-${r}`,S,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return Cr(a,i?.resolveData??`all`)}),list:(async t=>{H(`runId`,t.runId);let n=t.resolveData??`all`,r=await At({directory:B.join(e,`steps`),schema:S,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:tr(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function ci(e,t){let n=Ur(e,t),r=si(e,t),i=oi(e,t),a=Nr(e,t);return{runs:pn(`world.runs`,n),steps:pn(`world.steps`,r),events:pn(`world.events`,i),hooks:pn(`world.hooks`,a),clearCache:()=>i.clearCache()}}const li=r(`@workflow/world-local//streamerMonotonicUlid`,1,()=>({next:A(()=>Math.random())})),ui=e=>li.next(e),di=C({streams:T(_())});function fi(e){return e===1}function pi(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function mi(e){return fi(e[0])}function hi(e){return{eof:mi(e),chunk:Buffer.from(e.subarray(1))}}async function gi(e){try{return await R.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function _i(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 vi(e,t){return H(`streamName`,t),B.join(e,t)}async function yi(e,t,n){let r=vi(e,t),i=await gi(r),a=new Map;return _i(a,i,`.json`),_i(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&_i(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function bi(e,t){let n=t?`.${t}`:``,r=new Le,i=new Set;async function a(n,r){H(`runId`,n),H(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=K(e,`streams/runs`,n,t),s=(await q(e,`streams/runs`,n,di,t))?.streams??[];s.includes(r)||(s.push(r),await Y(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_${ui()}`;await a(await t,i);let l=o(s),u=pi({chunk:l,eof:!1});await xt(B.join(vi(B.join(e,`streams`,`chunks`),i),`${c}${n}.bin`),u);let d=Uint8Array.from(l);r.emit(`chunk:${i}`,{streamName:i,chunkData:d,chunkId:c})},async writeMulti(t,i,s){if(s.length===0)return;let c=s.map(()=>`chnk_${ui()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=pi({chunk:t,eof:!1});return await xt(B.join(vi(B.join(e,`streams`,`chunks`),i),`${a}${n}.bin`),o),{chunkId:a,chunkData:Uint8Array.from(t)}});for(let e of l){let{chunkId:t,chunkData:n}=await e;r.emit(`chunk:${i}`,{streamName:i,chunkData:n,chunkId:t})}},async close(t,i){let o=`chnk_${ui()}`;await a(await t,i),await xt(B.join(vi(B.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),pi({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return H(`runId`,n),(await q(e,`streams/runs`,n,di,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await yi(B.join(e,`streams`,`chunks`),r,t),l=0;if(i?.cursor)try{l=JSON.parse(Buffer.from(i.cursor,`base64`).toString(`utf-8`)).i}catch{l=0}let u=!1,d=[],f=0;for(let e of o){let t=s.get(e)??`.bin`,n=B.join(c,`${e}${t}`);if(f<l){if(fi(await Ct(n))){u=!0;break}f++;continue}if(d.length>=a){fi(await Ct(n))?u=!0:f++;break}let r=hi(await St(n));if(r.eof){u=!0;break}d.push({index:f,data:Uint8Array.from(r.chunk)}),f++}let p=!u&&f>l+d.length,m=l+d.length;return{data:d,cursor:p?Buffer.from(JSON.stringify({i:m})).toString(`base64`):null,hasMore:p,done:u}},async getInfo(n,r){let{files:i,extMap:a,dir:o}=await yi(B.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(fi(await Ct(B.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=B.join(e,`streams`,`chunks`),s=()=>{},c=null,l=!1;return new ReadableStream({async start(e){let n=new Set,u=[],d=!0,f=!1,p=t=>{if(t.chunkData.byteLength===0){n.add(t.chunkId);return}d?(n.add(t.chunkId),u.push({chunkId:t.chunkId,chunkData:Uint8Array.from(t.chunkData)})):n.has(t.chunkId)||(n.add(t.chunkId),e.enqueue(Uint8Array.from(t.chunkData)))},m=()=>{if(d){f=!0;return}l=!0,s();try{e.close()}catch{}};s=()=>{r.off(`chunk:${i}`,p),r.off(`close:${i}`,m),c&&=(clearInterval(c),null)},r.on(`chunk:${i}`,p),r.on(`close:${i}`,m);let{files:h,extMap:g,dir:_}=await yi(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`;fi(await Ct(B.join(_,`${e}${t}`)))&&v--}let y=typeof a==`number`&&a<0?Math.max(0,v+a):a,b=!1;for(let t=y;t<h.length;t++){let r=h[t],i=r;if(n.has(i))continue;let a=g.get(r)??`.bin`,o=hi(await St(B.join(_,`${r}${a}`)));if(o?.eof===!0){b=!0;break}n.add(i),o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}d=!1,u.sort((e,t)=>e.chunkId.localeCompare(t.chunkId));for(let t of u)e.enqueue(Uint8Array.from(t.chunkData));if(b){l=!0,s();try{e.close()}catch{}return}if(f){l=!0,s();try{e.close()}catch{}return}for(let e=0;e<y&&e<h.length;e++)n.add(h[e]);if(l){s();return}let x=!1;c=setInterval(async()=>{if(!x){x=!0;try{let{files:r,extMap:a}=await yi(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=hi(await St(B.join(_,`${t}${i}`)));if(o?.eof===!0){l=!0,s();try{e.close()}catch{}return}if(l)return;o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}}catch(e){e instanceof Error&&`code`in e||console.error(`[world-local] Unexpected polling error:`,e)}finally{x=!1}}},100)},cancel(){l=!0,s()}})}}}}function xi(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...it.value,...t};He(n.dataDir);let r=n.tag,i=wn(n),{clearCache:a,...o}=ci(n.dataDir,r),s=at(n);return{specVersion:de(),capabilities:{hookRetention:{active:!0},hookResumeDedup:!0},...i,...o,...pn(`world.streams`,{...bi(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Gt(n.dataDir),!s)return;let e=r?e=>pt(e,r):mt;await re({...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=B.join(e,`hooks`),i=await ht(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-CgbVZs5l.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await X(B.join(t,n),a);r?.token&&(await Z(B.join(t,`tokens`,`${In(r.token)}.json`)),await Z(Qn(e,r.token,r.runId,r.hookId)))})),await Promise.all([`runs`,`steps`,`events`,`hooks`,`hooks/by-run`,`waits`,`streams/runs`].map(async t=>{let n=B.join(e,t),i=await ht(n,r);await Promise.all(i.map(e=>Z(B.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=B.join(e,`hooks`,t),i;try{i=await L.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=B.join(n,e.name),i=await ht(t,r);await Promise.all(i.map(e=>Z(B.join(t,e))))}))}await L.rm(B.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=B.join(e,`streams`,`chunks`),s;try{s=await L.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=B.join(o,e.name),n=await gt(t,r,`.bin`);await Promise.all(n.map(e=>L.unlink(B.join(t,e)).catch(()=>{})))})),dt()}else dt(),_r(),await Ae(n.dataDir,{recursive:!0,force:!0}),await Gt(n.dataDir)}}}export{Ft as DataDirAccessError,It as DataDirVersionError,Re as UnwritableDataDirError,xi as createWorld,Vt as ensureDataDir,Gt as initDataDir,Lt as parseVersion};
|