eve 0.24.4 → 0.24.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/src/channel/cancel.d.ts +8 -0
  3. package/dist/src/channel/cancel.js +1 -0
  4. package/dist/src/channel/routes.d.ts +25 -4
  5. package/dist/src/channel/session.d.ts +10 -1
  6. package/dist/src/channel/session.js +1 -1
  7. package/dist/src/channel/types.d.ts +21 -0
  8. package/dist/src/chunks/{use-eve-agent-Dwa2j1wE.js → use-eve-agent-6BO9gFVq.js} +61 -6
  9. package/dist/src/chunks/{use-eve-agent-BP9FpQsJ.js → use-eve-agent-B1MJNRE-.js} +61 -6
  10. package/dist/src/cli/commands/build.d.ts +14 -0
  11. package/dist/src/cli/commands/build.js +1 -0
  12. package/dist/src/cli/commands/channels.js +1 -1
  13. package/dist/src/cli/commands/link.d.ts +6 -5
  14. package/dist/src/cli/commands/link.js +1 -1
  15. package/dist/src/cli/run.d.ts +3 -2
  16. package/dist/src/cli/run.js +1 -1
  17. package/dist/src/client/index.d.ts +1 -1
  18. package/dist/src/client/ndjson.js +1 -1
  19. package/dist/src/client/open-stream.d.ts +3 -2
  20. package/dist/src/client/open-stream.js +1 -1
  21. package/dist/src/client/session.d.ts +19 -3
  22. package/dist/src/client/session.js +1 -1
  23. package/dist/src/client/types.d.ts +8 -0
  24. package/dist/src/compiled/.vendor-stamp.json +5 -5
  25. package/dist/src/compiled/@workflow/core/index.js +2 -2
  26. package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +55 -0
  27. package/dist/src/compiled/@workflow/core/runtime/run-id-time.d.ts +9 -0
  28. package/dist/src/compiled/@workflow/core/runtime/step-executor.d.ts +2 -0
  29. package/dist/src/compiled/@workflow/core/runtime/step-latency.d.ts +70 -4
  30. package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +10 -1
  31. package/dist/src/compiled/@workflow/core/runtime.js +3 -3
  32. package/dist/src/compiled/@workflow/core/step/context-storage.d.ts +6 -0
  33. package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +25 -0
  34. package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
  35. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  36. package/dist/src/compiled/@workflow/errors/index.d.ts +16 -0
  37. package/dist/src/compiled/@workflow/errors/index.js +1 -1
  38. package/dist/src/compiled/@workflow/world/attributes.d.ts +7 -0
  39. package/dist/src/compiled/@workflow/world/events.d.ts +16 -0
  40. package/dist/src/compiled/@workflow/world/index.d.ts +1 -1
  41. package/dist/src/compiled/@workflow/world-local/index.js +3 -3
  42. package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
  43. package/dist/src/compiled/_chunks/workflow/attribute-changes-DXbmITuI.js +20 -0
  44. package/dist/src/compiled/_chunks/workflow/{dist-DpDDcpTl.js → dist-BYo8Gno2.js} +1 -1
  45. package/dist/src/compiled/_chunks/workflow/{dist-Blxnyb7-.js → dist-CSfKNxQW.js} +1 -1
  46. package/dist/src/compiled/_chunks/workflow/resume-hook-DvvgYsRt.js +1 -0
  47. package/dist/src/compiled/_chunks/workflow/run-BdvQmV5a.js +1 -0
  48. package/dist/src/compiled/_chunks/workflow/run-id-BdE0MZz9.js +1 -0
  49. package/dist/src/compiled/_chunks/workflow/sleep-DzxrwWTs.js +1 -0
  50. package/dist/src/evals/assertions/run.d.ts +3 -3
  51. package/dist/src/evals/context.js +1 -1
  52. package/dist/src/evals/index.d.ts +2 -1
  53. package/dist/src/evals/match.d.ts +4 -0
  54. package/dist/src/evals/match.js +1 -1
  55. package/dist/src/evals/runner/derive-run-facts.js +1 -1
  56. package/dist/src/evals/session.d.ts +10 -2
  57. package/dist/src/evals/session.js +1 -1
  58. package/dist/src/evals/target.js +1 -1
  59. package/dist/src/evals/types.d.ts +52 -2
  60. package/dist/src/execution/cancel-descendant-turns-step.d.ts +6 -0
  61. package/dist/src/execution/cancel-descendant-turns-step.js +1 -0
  62. package/dist/src/execution/create-session-step.js +1 -1
  63. package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
  64. package/dist/src/execution/dispatch-workflow-runtime-actions-step.js +1 -1
  65. package/dist/src/execution/node-step.js +1 -1
  66. package/dist/src/execution/remote-agent-dispatch.d.ts +6 -0
  67. package/dist/src/execution/remote-agent-dispatch.js +1 -1
  68. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  69. package/dist/src/execution/subagent-event-proxy-step.js +1 -1
  70. package/dist/src/execution/turn-cancellation-control.d.ts +0 -13
  71. package/dist/src/execution/turn-cancellation-control.js +1 -1
  72. package/dist/src/execution/turn-cancellation-token.d.ts +9 -0
  73. package/dist/src/execution/turn-cancellation-token.js +1 -0
  74. package/dist/src/execution/turn-workflow.js +1 -1
  75. package/dist/src/execution/workflow-runtime.d.ts +3 -1
  76. package/dist/src/execution/workflow-runtime.js +1 -1
  77. package/dist/src/execution/workflow-steps.js +1 -1
  78. package/dist/src/harness/advertised-tools.js +1 -1
  79. package/dist/src/harness/execute-tool.d.ts +0 -1
  80. package/dist/src/harness/runtime-actions.d.ts +16 -12
  81. package/dist/src/harness/runtime-actions.js +1 -1
  82. package/dist/src/internal/application/build-profile.d.ts +64 -0
  83. package/dist/src/internal/application/build-profile.js +1 -0
  84. package/dist/src/internal/application/package.js +1 -1
  85. package/dist/src/internal/authored-module-loader.d.ts +10 -0
  86. package/dist/src/internal/authored-module-loader.js +2 -2
  87. package/dist/src/internal/authored-module-map-loader.js +1 -1
  88. package/dist/src/internal/materialized-authored-modules.d.ts +2 -4
  89. package/dist/src/internal/materialized-authored-modules.js +1 -1
  90. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  91. package/dist/src/internal/nitro/host/build-application.js +1 -1
  92. package/dist/src/internal/nitro/host/types.d.ts +2 -0
  93. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.js +1 -1
  94. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +7 -1
  95. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  96. package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
  97. package/dist/src/internal/nitro/routes/channel-route-context.d.ts +3 -0
  98. package/dist/src/internal/nitro/routes/channel-route-context.js +1 -1
  99. package/dist/src/internal/nitro/routes/runtime-stack.js +1 -1
  100. package/dist/src/internal/nitro/routes/schedule-task.js +1 -1
  101. package/dist/src/protocol/cancel-turn.d.ts +11 -0
  102. package/dist/src/protocol/cancel-turn.js +1 -0
  103. package/dist/src/protocol/routes.d.ts +10 -0
  104. package/dist/src/protocol/routes.js +1 -1
  105. package/dist/src/public/channels/eve.d.ts +2 -1
  106. package/dist/src/public/channels/eve.js +1 -1
  107. package/dist/src/public/channels/index.d.ts +1 -1
  108. package/dist/src/public/channels/linear/api.d.ts +0 -1
  109. package/dist/src/public/channels/linear/api.js +17 -22
  110. package/dist/src/public/channels/linear/linearChannel.js +1 -1
  111. package/dist/src/public/definitions/channel.d.ts +21 -11
  112. package/dist/src/public/next/index.js +1 -1
  113. package/dist/src/public/next/resolve-eve-binary.d.ts +12 -0
  114. package/dist/src/public/next/resolve-eve-binary.js +1 -0
  115. package/dist/src/runtime/agent/mock-model-adapter.js +1 -1
  116. package/dist/src/runtime/framework-tools/agent.d.ts +13 -0
  117. package/dist/src/runtime/framework-tools/agent.js +1 -0
  118. package/dist/src/runtime/framework-tools/index.d.ts +7 -2
  119. package/dist/src/runtime/framework-tools/index.js +1 -1
  120. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  121. package/dist/src/runtime/types.d.ts +2 -1
  122. package/dist/src/setup/boxes/reconcile-host-framework-preset.d.ts +26 -0
  123. package/dist/src/setup/boxes/reconcile-host-framework-preset.js +1 -0
  124. package/dist/src/setup/boxes/resolve-provisioning.js +1 -1
  125. package/dist/src/setup/index.js +1 -1
  126. package/dist/src/setup/scaffold/create/add-to-project.js +1 -1
  127. package/dist/src/setup/scaffold/create/project.js +2 -2
  128. package/dist/src/setup/scaffold/create/web-template.d.ts +1 -1
  129. package/dist/src/setup/scaffold/create/web-template.js +1 -0
  130. package/dist/src/setup/scaffold/index.d.ts +1 -1
  131. package/dist/src/setup/scaffold/index.js +1 -1
  132. package/dist/src/setup/scaffold/update/channels.d.ts +7 -1
  133. package/dist/src/setup/scaffold/update/channels.js +2 -2
  134. package/dist/src/setup/scaffold/update/connections.js +3 -3
  135. package/dist/src/setup/vercel-project-framework.d.ts +12 -0
  136. package/dist/src/setup/vercel-project-framework.js +1 -1
  137. package/dist/src/svelte/index.js +1 -1
  138. package/dist/src/svelte/use-eve-agent.js +1 -1
  139. package/dist/src/vue/index.js +1 -1
  140. package/dist/src/vue/use-eve-agent.js +1 -1
  141. package/docs/channels/custom.mdx +32 -2
  142. package/docs/channels/eve.mdx +11 -1
  143. package/docs/concepts/default-harness.md +2 -0
  144. package/docs/concepts/sessions-runs-and-streaming.md +13 -0
  145. package/docs/evals/assertions.mdx +2 -2
  146. package/docs/evals/cases.mdx +31 -0
  147. package/docs/evals/overview.mdx +1 -1
  148. package/docs/evals/targets.mdx +2 -1
  149. package/docs/guides/client/continuations.mdx +2 -0
  150. package/docs/guides/client/streaming.mdx +17 -1
  151. package/docs/guides/frontend/overview.mdx +4 -2
  152. package/docs/guides/frontend/use-eve-agent-svelte.mdx +2 -2
  153. package/docs/guides/frontend/use-eve-agent-vue.mdx +2 -2
  154. package/docs/guides/remote-agents.md +2 -0
  155. package/docs/reference/cli.md +15 -2
  156. package/docs/subagents.mdx +10 -0
  157. package/package.json +7 -7
  158. package/dist/src/compiled/_chunks/workflow/attribute-changes-MGTOG_uX.js +0 -20
  159. package/dist/src/compiled/_chunks/workflow/resume-hook-DHP5ql3-.js +0 -1
  160. package/dist/src/compiled/_chunks/workflow/run-D8hv1ptT.js +0 -1
  161. package/dist/src/compiled/_chunks/workflow/sleep-uA9pS-PT.js +0 -1
@@ -1,7 +1,7 @@
1
1
  export type * from './analytics.js';
2
2
  export { AnalyticsAttributeKeySchema, AnalyticsEventSchema, AnalyticsHookSchema, AnalyticsRunSchema, AnalyticsStepSchema, AnalyticsWaitSchema, } from './analytics.js';
3
3
  export type * from './attributes.js';
4
- export { ATTRIBUTE_KEY_MAX_LENGTH, ATTRIBUTE_MAX_PER_RUN, ATTRIBUTE_VALUE_MAX_BYTES, AttributeChangeSchema, AttributeChangesSchema, AttributeValidationError, applyAttributeChanges, RESERVED_ATTRIBUTE_KEY_PREFIX, validateAttributeChanges, validateAttributeKey, validateAttributeValue, } from './attributes.js';
4
+ export { ATTRIBUTE_KEY_MAX_LENGTH, ATTRIBUTE_MAX_PER_RUN, ATTRIBUTE_VALUE_MAX_BYTES, AttributeChangeSchema, AttributeChangesSchema, AttributeValidationError, applyAttributeChanges, PARENT_RUN_ID_ATTRIBUTE, RESERVED_ATTRIBUTE_KEY_PREFIX, ROOT_RUN_ID_ATTRIBUTE, validateAttributeChanges, validateAttributeKey, validateAttributeValue, } from './attributes.js';
5
5
  export { _resetEnvWarnCacheForTests, type EnvNumberOptions, envNumber, } from './env-config.js';
6
6
  export type * from './events.js';
7
7
  export { BaseEventSchema, CHILD_ENTITY_CREATION_EVENT_TYPES, CreateEventSchema, EVENT_DATA_PAYLOAD_FIELD_BY_EVENT_TYPE, EVENT_DATA_REF_FIELDS, EventSchema, EventTypeSchema, getEventDataPayloadField, getEventDataRefFields, HOOK_EVENTS_REQUIRING_EXISTENCE, HOOK_LIFECYCLE_EVENT_TYPES, HookCreatedEventSchema, isChildEntityCreationEvent, isChildEntityCreationEventType, isHookEventRequiringExistence, isHookLifecycleEventType, isRunEventType, isStepEventType, isTerminalRunEventType, isTerminalStepEventType, isWaitEventType, RUN_EVENT_TYPES, STEP_EVENT_TYPES, stripEventDataRefs, TERMINAL_RUN_EVENT_TYPES, TERMINAL_STEP_EVENT_TYPES, TerminalRunEventTypeSchema, WAIT_EVENT_TYPES, } from './events.js';
@@ -1,4 +1,4 @@
1
- import{a as e,i as t,t as n}from"../../_chunks/workflow/chunk-BHKSVoKr.js";import{i as r,n as i,r as a,t as o}from"../../_chunks/workflow/dist-CttsoN4D.js";import{C as s,T as c,h as l,l as u,o as d,r as f,u as p}from"../../_chunks/workflow/dist-DpDDcpTl.js";import{B as m,D as h,G as g,H as _,K as v,L as y,M as b,N as x,O as ee,Q as S,R as te,U as C,V as ne,Y as w,_ as T,at as E,c as re,f as ie,j as D,k as ae,m as oe,n as se,o as O,q as ce,r as le,rt as k,s as ue,tt as A,u as j,y as M,z as N}from"../../_chunks/workflow/dist-Blxnyb7-.js";import{t as P}from"../../_chunks/workflow/undici-fb54XL8i.js";import{createHash as F}from"node:crypto";import{promisify as de}from"node:util";import{fileURLToPath as fe}from"node:url";import{promises as I}from"node:fs";import pe,{access as me,constants as he,mkdir as ge,readFile as L,readdir as _e,readlink as ve,rm as ye,unlink as be,writeFile as xe}from"node:fs/promises";import R from"node:path";import{execFile as Se}from"node:child_process";import{setTimeout as Ce}from"node:timers/promises";import{EventEmitter as we}from"node:events";function Te(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function Ee(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=Te(i.slice(s+1));c!==void 0&&n.push(c)}return n}const De=de(Se);function Oe(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const ke=((e,t)=>e.join(t))([``,`proc`],`/`);async function Ae(e){let t=[`${ke}/net/tcp`,`${ke}/net/tcp6`],n=[],r=new Set,i=`${ke}/${e}/fd`;try{let e=(await _e(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await ve(`${i}/${e}`)).match(/^socket:\[(\d+)\]$/)?.[1]??null));for(let e of t)e.status===`fulfilled`&&e.value&&(n.push(e.value),r.add(e.value))}catch{return[]}if(n.length===0)return[];let a=new Map;for(let e of t)try{let t=(await L(e,`utf8`)).split(`
1
+ import{a as e,i as t,t as n}from"../../_chunks/workflow/chunk-BHKSVoKr.js";import{i as r,n as i,r as a,t as o}from"../../_chunks/workflow/dist-CttsoN4D.js";import{E as s,d as c,g as l,o as u,r as d,u as f,w as p}from"../../_chunks/workflow/dist-BYo8Gno2.js";import{B as m,D as h,G as g,H as _,J as v,L as y,M as b,N as x,O as ee,R as te,U as S,V as ne,Y as re,Z as C,_ as w,at as T,c as ie,et as ae,f as oe,j as E,k as se,m as ce,n as le,o as D,r as ue,rt as O,s as de,st as k,u as A,y as j,z as M}from"../../_chunks/workflow/dist-CSfKNxQW.js";import{t as N}from"../../_chunks/workflow/undici-fb54XL8i.js";import{createHash as P}from"node:crypto";import{promisify as fe}from"node:util";import{fileURLToPath as pe}from"node:url";import{promises as F}from"node:fs";import I,{access as me,constants as he,mkdir as ge,readFile as L,readdir as _e,readlink as ve,rm as ye,unlink as be,writeFile as xe}from"node:fs/promises";import R from"node:path";import{execFile as Se}from"node:child_process";import{setTimeout as Ce}from"node:timers/promises";import{EventEmitter as we}from"node:events";function Te(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}function Ee(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=Te(i.slice(s+1));c!==void 0&&n.push(c)}return n}const De=fe(Se);function Oe(e,t=10){let n=parseInt(e,t);if(!Number.isNaN(n)&&n>=0&&n<=65535)return n}const ke=((e,t)=>e.join(t))([``,`proc`],`/`);async function Ae(e){let t=[`${ke}/net/tcp`,`${ke}/net/tcp6`],n=[],r=new Set,i=`${ke}/${e}/fd`;try{let e=(await _e(i)).sort((e,t)=>Number.parseInt(e,10)-Number.parseInt(t,10)),t=await Promise.allSettled(e.map(async e=>(await ve(`${i}/${e}`)).match(/^socket:\[(\d+)\]$/)?.[1]??null));for(let e of t)e.status===`fulfilled`&&e.value&&(n.push(e.value),r.add(e.value))}catch{return[]}if(n.length===0)return[];let a=new Map;for(let e of t)try{let t=(await L(e,`utf8`)).split(`
3
3
  `).slice(1);for(let e of t){if(!e.trim())continue;let t=e.trim().split(/\s+/);if(t.length<10)continue;let n=t[1],i=t[3],o=t[9];if(!n||i!==`0A`||!o||!r.has(o))continue;let s=n.indexOf(`:`);if(s===-1)continue;let c=n.slice(s+1);if(!c)continue;let l=Oe(c,16);l!==void 0&&a.set(o,l)}}catch{}let o=[];for(let e of n){let t=a.get(e);t!==void 0&&o.push(t)}return o}async function je(e){try{let{stdout:t}=await De(`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=Oe(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Me(e){try{let{stdout:t}=await De(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Ee(t,e)}catch{return[]}}async function Ne(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Ae(e);case`darwin`:return await je(e);case`win32`:return await Me(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const Pe=`${o}/flow?__health`;async function Fe(e,t={}){let{endpoint:n=Pe,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 Ie(e){let t=await Ne();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 Fe(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 Le(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Re=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,ze=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Be=Le(()=>({dataDir:Re(),baseUrl:ze()}));function Ve(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??i(`http://localhost`)}async function He(e){if(e.baseUrl)return e.baseUrl;if(process.env.WORKFLOW_LOCAL_BASE_URL)return process.env.WORKFLOW_LOCAL_BASE_URL;if(typeof e.port==`number`)return i(`http://localhost:${e.port}`);if(process.env.PORT)return i(`http://localhost:${process.env.PORT}`);let t=await Ie({endpoint:a()});if(t)return i(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const Ue=O(()=>Math.random());function We(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var Ge=class extends c{constructor(e,t){super(`Unsafe ${e} "${We(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function z(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new Ge(e,t)}function B(e,...t){let n=R.resolve(e),r=R.resolve(e,...t);if(r!==n&&!r.startsWith(n+R.sep))throw new Ge(`path`,t.join(`/`));return r}const Ke=process.platform===`win32`;async function qe(e,t=5){if(!Ke)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 Je=new Set,Ye=new Set;function Xe(){Je.clear(),Ye.clear()}const Ze=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function Qe(e){return e.replace(Ze,``)}function $e(e,t){return e.endsWith(`.${t}`)}function et(e){return!Ze.test(e)}function V(e,t,n,r){return z(`fileId`,n),r!==void 0&&z(`tag`,r),B(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function H(e,t,n,r,i){if(z(`fileId`,n),i!==void 0&&z(`tag`,i),i){let a=await G(B(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return G(B(e,t,`${n}.json`),r)}async function tt(e,t){let n=`.${t}.json`;try{return(await I.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function nt(e,t,n){let r=`.${t}${n}`;try{return(await I.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function rt(e){let t=R.resolve(e);if(!Ye.has(t))try{await I.mkdir(t,{recursive:!0}),Ye.add(t)}catch{}}async function it(e,t){await rt(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return Ye.delete(R.resolve(e)),await rt(e),t()}}function U(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function at(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function W(e,t,n){return ot(e,JSON.stringify(t,U,2),n)}async function ot(e,t,n){if(!n?.overwrite){if(Je.has(e))throw new f(`File ${e} already exists and 'overwrite' is false`);try{throw await I.access(e),Je.add(e),new f(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${Ue()}`,i=!1;try{await it(R.dirname(e),async()=>{await I.writeFile(r,t),i=!0,await qe(()=>I.rename(r,e))}),Je.add(e)}catch(e){throw i&&await qe(()=>I.unlink(r),3).catch(()=>{}),e}}async function G(e,t){try{let n=await I.readFile(e,`utf-8`);return t.parse(JSON.parse(n,at))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function st(e){return await I.readFile(e)}async function ct(e){let t=await I.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function K(e){try{await I.unlink(e)}catch(e){if(e.code!==`ENOENT`)throw e}}async function q(e,t){let n=`${e}.tmp.${Ue()}`,r=!1;try{return await it(R.dirname(e),async()=>{await I.writeFile(n,t,{flag:`wx`}),r=!0;try{return await qe(()=>I.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await qe(()=>I.unlink(n),3).catch(()=>{})}}async function J(e){return lt(e,`.json`)}async function lt(e,t){try{return(await I.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}function ut(e){if(!e)return null;let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null}}function dt(e,t){return t?`${e.toISOString()}|${t}`:e.toISOString()}async function Y(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d}=e;i!==void 0&&z(`filePrefix`,i);let f=R.resolve(t),p=await J(f),m=i?p.filter(e=>e.startsWith(i)):p,h=a?m.filter(a):m,g=ut(l),_=h;g&&(_=h.filter(e=>{let t=u(`${e}.json`);if(t){let e=g.timestamp.getTime(),n=t.getTime();return g.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let v=[];for(let e=0;e<_.length;e+=32){let t=_.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=R.join(f,`${e}.json`);try{let e=r?.get(t);return e===void 0?await G(t,n):structuredClone(e)}catch(t){if(t instanceof E)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}}));for(let e of i)if(e&&!(o&&!o(e))){if(g){let t=e.createdAt.getTime(),n=g.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&g.id&&d&&d(e)>=g.id)continue}else if(t<n||t===n&&g.id&&d&&d(e)<=g.id)continue}v.push(e)}}v.sort((e,t)=>{let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let y=v.length>c,b=y?v.slice(0,c):v;return{data:b,cursor:b.length>0?dt(b[b.length-1].createdAt,d?.(b[b.length-1])):null,hasMore:y}}let X=null;function ft(){return typeof import.meta.url==`string`&&import.meta.url?R.dirname(fe(import.meta.url)):null}async function pt(){if(X)return X;let e=ft();if(e)try{let t=await L(R.join(e,`../package.json`),`utf-8`);return X=JSON.parse(t),X}catch{}return X={name:`@workflow/world-local`,version:`5.0.0-beta.28`},X}const mt=`version.txt`;var ht=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},gt=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 _t(e){let t=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);if(!t)throw Error(`Invalid version string: "${e}"`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4],raw:e}}function Z(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function vt(e){let t=e.trim(),n=t.lastIndexOf(`@`);if(n<=0)throw Error(`Invalid version file content: "${e}"`);return{packageName:t.substring(0,n),version:_t(t.substring(n+1))}}function yt(e,t){return`${e}@${Z(t)}`}function bt(e,t){console.log(`[world-local] Upgrading from version ${Z(e)} to ${Z(t)}`)}async function xt(e){let t=R.resolve(e);try{await ge(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new ht(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await me(t,he.R_OK)}catch(e){let n=e;throw new ht(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=R.join(t,`.workflow-write-test-${Date.now()}`);try{await xe(n,``),await be(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new ht(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function St(e){let t=R.join(R.resolve(e),mt);try{return vt(await L(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function Ct(e,t){await xe(R.join(R.resolve(e),mt),yt((await pt()).name,t))}function wt(e,t){return t||Z(e)}async function Tt(e){await xt(e);let t=await pt(),n=_t(t.version),r=await St(e);if(r===null){await Ct(e,n);return}let{version:i}=r;if(Z(i)!==Z(n))try{bt(i,n),await Ct(e,n)}catch(e){let r=wt(i,e instanceof gt?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Z(i)} to ${Z(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let Et=null;async function Dt(){return Et||=import(`../../_chunks/workflow/src-CQuMexnO.js`).then(t=>e(t.t(),1)).catch(()=>null),Et}let Ot=null;async function kt(){return Ot||=Dt().then(e=>e?e.trace.getTracer(`workflow`):null),Ot}async function At(e,...t){let[n,r]=await Promise.all([kt(),Dt()]),{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 jt(e){let t=await Dt();if(t)return t.SpanKind[e]}function Q(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Mt=Q(`peer.service`),Nt=Q(`rpc.system`),Pt=Q(`rpc.service`),Ft=Q(`rpc.method`),It=Q(`workflow.run.id`),Lt=Q(`step.id`),Rt={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},zt={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},Bt=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function Vt(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 Ht(e,t){return typeof e[t]==`string`?e[t]:void 0}function Ut(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function Wt(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 Gt(e,t,n){let r=`${e}.${t}`,i={},a=zt[r],o=a===void 0?Bt.has(r)?Ut(n[0]):void 0:Ht(n,a);if(o&&Object.assign(i,It(o)),r===`world.steps.get`){let e=Ht(n,1);e&&Object.assign(i,Lt(e))}return i}function Kt(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=Vt(t);r&&(n=`${e}.${a} ${r}`)}return At(n,{kind:await jt(`INTERNAL`)},async r=>{r?.setAttributes({...Mt(Rt.peerService),...Nt(Rt.rpcSystem),...Pt(Rt.rpcService),...Ft(n),...Gt(e,a,t)});let o=await i(...t),s=Wt(o);return s&&r?.setAttributes(It(s)),o})}}return n}var qt=n((e=>{var n=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.RateLimit=e.Sema=void 0;let r=n(t(`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}};e.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)}}e.RateLimit=f}))(),Jt=P(),Yt=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,U))}async deserialize(e){let t=[],n=e.getReader();for(;;){let{done:e,value:r}=await n.read();if(e)break;r&&t.push(r)}let r=Buffer.concat(t).toString();return JSON.parse(r,at)}};const Xt=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,Zt=2147483647,Qt=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3,$t=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function en(e){let t=e,n=new Set;for(;t&&typeof t==`object`&&!n.has(t);){if(n.add(t),`message`in t&&typeof t.message==`string`&&t.message.includes($t))return!0;t=`cause`in t?t.cause:void 0}return!1}function tn(e){let{kind:t,prefix:n}=T(e);return{pathname:t===`workflow`?`flow`:`step`,prefix:n}}function nn(e){let t=new Jt.Agent({headersTimeout:0,connections:1e3,keepAliveTimeout:3e4}),n=new Yt,i=O(),a=new qt.Sema(Qt),o=new AbortController,s=o.signal,c=new Map,l=new Map,u=async(o,u,d)=>{let f=[];if(d?.idempotencyKey){let e=c.get(d.idempotencyKey);if(e)return{messageId:e}}let p=n.serialize(u),{pathname:m,prefix:h}=tn(o),g=ie.parse(`msg_${i()}`),_=u,v=_.runId??_.workflowRunId??void 0,y=_.stepId??void 0;if(d?.idempotencyKey){let e=d.idempotencyKey;c.set(e,g),f.push(()=>{c.delete(e)})}return(async()=>{d?.delaySeconds&&d.delaySeconds>0&&await Ce(Math.min(d.delaySeconds*1e3,Zt),void 0,{signal:s}),a.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${Qt}) reached, waiting for queue to free up`),await a.acquire());let n=0;try{for(let i=0;i<256;i++){let a={...d?.headers,"content-type":`application/json`,"x-vqs-queue-name":o,"x-vqs-message-id":g,"x-vqs-message-attempt":String(n+1)},c=l.get(h),u;try{if(c)u=await c(new Request(r(Ve(e),{type:m}),{method:`POST`,headers:a,body:p}));else{let n=await He(e);u=await fetch(r(n,{type:m}),{method:`POST`,duplex:`half`,dispatcher:t,headers:a,body:p})}}catch(e){let t=e?.name;if(s.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(en(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${i+1}), retrying`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},error:String(e)}),await Ce(5e3,void 0,{signal:s});continue}n++;let f=await u.text();if(u.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await Ce(Math.min(e*1e3,Zt),void 0,{signal:s});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${n}, HTTP ${u.status})`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},handlerError:f}),await Ce(5e3,void 0,{signal:s})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y}})}finally{a.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(en(e)?console.error(`[local world] Queue operation failed: detected "${$t}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of f)e()}),{messageId:g}},d=A({"x-vqs-queue-name":oe,"x-vqs-message-id":ie,"x-vqs-message-attempt":w()});return{queue:u,createQueueHandler:(e,t)=>async n=>{let r=d.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new Yt().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,Xt)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await pt()).version}`,registerHandler(e,t){l.set(e,t)},async close(){s.aborted||(o.abort(),await t.close())}}}function rn(e){return F(`sha256`).update(e).digest(`hex`)}function an(e,t,n){return B(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function on(e,t,n){let r=[an(e,t)];n&&r.push(an(e,t,n));for(let e of r)try{return await pe.access(e),!0}catch{}return!1}function sn(e,t){return R.join(e,`hooks`,`tokens`,`${rn(t)}.json`)}async function cn(e,t,n,r){let i=sn(e,t),a;try{a=JSON.parse(await pe.readFile(i,`utf8`))}catch{return}a.runId!==n||a.hookId!==r||await pe.unlink(i).catch(()=>{})}function ln(e,t,n,r){let i=F(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return R.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const un=O(()=>Math.random()),$=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=Qe(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?se(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:se(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},dn=A({runId:k()}),fn=A({hookId:k(),tag:k().optional()});function pn(e,t){return B(e,`hooks`,`token-index`,rn(t))}function mn(e,t){return z(`hookId`,t),B(e,`hooks`,`id-index`,t)}function hn(e){return B(e,`hooks`,`by-run`)}function gn(e){let t=Qe(e);return t===e?void 0:e.slice(t.length+1)}function _n(e,t){return t?et(e)||$e(e,t):et(e)}async function vn(e){try{return await G(e,x)}catch(e){if(e instanceof SyntaxError||e instanceof E)return null;throw e}}async function yn(e,t,n,r,i,a){z(`runId`,n),z(`eventId`,i),a!==void 0&&z(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([q(R.join(pn(e,t),o),s),q(R.join(mn(e,r),o),s)])}function bn(e,t,n,r){return V(e,`hooks/by-run`,`${t}-${n}`,r)}async function xn(e,t,n,r){await q(bn(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function Sn(e,t,n,r){await K(bn(e,t,n,r)),r&&await K(bn(e,t,n))}async function Cn(e,t){z(`runId`,t);let n=hn(e),r=`${t}-`,i=[];for(let e of await J(n)){if(!e.startsWith(r))continue;let t=null;try{t=await G(R.join(n,`${e}.json`),fn)}catch(e){if(!(e instanceof SyntaxError||e instanceof E))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function wn(e,t){await K(R.join(hn(e),`${t}.json`))}const Tn=new Map;function En(){Tn.clear()}async function Dn(e){let t=R.resolve(e),n=Tn.get(t);return n||(n=kn(t).catch(e=>{throw Tn.delete(t),e}),Tn.set(t,n)),n}async function On(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function kn(e){let t=R.join(e,`hooks`,`.hook-index-complete`);try{await pe.access(t);return}catch{}let n=R.join(e,`events`);await On(await J(n),32,async t=>{let r=await vn(R.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 yn(e,i,r.runId,r.correlationId,r.eventId,gn(t))}catch{}});let r=R.join(e,`hooks`);await On(await J(r),32,async t=>{let n=null;try{n=await G(R.join(r,`${t}.json`),M)}catch(e){if(!(e instanceof SyntaxError||e instanceof E))throw e}if(n)try{await xn(e,n.runId,n.hookId,gn(t))}catch{}}),await q(t,``)}async function An(e,t,n,r){await Dn(e);let i;try{i=t.kind===`token`?pn(e,t.token):mn(e,t.hookId)}catch{return null}let a=(await J(i)).filter(e=>_n(e,r)).sort((e,t)=>Qe(t).localeCompare(Qe(e)));for(let t of a){let r=null;try{r=await G(R.join(i,`${t}.json`),dn)}catch(e){if(!(e instanceof SyntaxError||e instanceof E))throw e}if(!r)continue;let a=Qe(t),o;try{o=V(e,`events`,`${r.runId}-${a}`,gn(t))}catch{continue}let s=await vn(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function jn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Mn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Nn(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function Pn(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function Fn(e){let{token:t,metadata:n,isWebhook:r,isSystem:i}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1}}function In(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function Ln(e,t,n){let r=await H(e,`runs`,t,D,n);return r?b(r.status):!1}async function Rn(e,t,n,r){let i=await An(e,t,e=>In(e,n),r);return!i||!In(i,n)||await Ln(e,i.runId,r)||await on(e,i.correlationId,r)?null:i}async function zn(e,t,n){let r=Fn(t);return await q(R.join(e,`hooks`,`tokens`,`${rn(r.token)}.json`),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId})),await xn(e,r.runId,r.hookId,n),await q(V(e,`hooks`,r.hookId,n),JSON.stringify(r,U,2)),r}async function Bn(e,t,n){let r=await Rn(e,{kind:`token`,token:t},e=>Pn(e)===t,n);return r?zn(e,r,n):null}async function Vn(e,t,n){let r=await Rn(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?zn(e,r,n):null}function Hn(e,t){let n=A({hookId:k().optional()});async function r(r){let i=null;try{i=await G(sn(e,r),n)}catch(e){if(!(e instanceof SyntaxError||e instanceof E))throw e}if(i?.hookId)try{let n=await H(e,`hooks`,i.hookId,M,t);if(n&&n.token===r)return{...n,isWebhook:n.isWebhook??!0}}catch(e){if(!Ge.is(e))throw e}let a=R.join(e,`hooks`),o=await J(a);for(let e of o){let t=await G(R.join(a,`${e}.json`),M);if(t&&t.token===r)return{...t,isWebhook:t.isWebhook??!0}}return null}async function i(n,r){z(`hookId`,n);let i=await H(e,`hooks`,n,M,t);if(!i){let i=await Vn(e,n,t);if(!i)throw new d(n);let a=r?.resolveData||`all`;return Nn({...i,isWebhook:i.isWebhook??!0},a)}let a=r?.resolveData||`all`;return Nn({...i,isWebhook:i.isWebhook??!0},a)}async function a(n){let i=await r(n)??await Bn(e,n,t);if(!i)throw new d(n);return i}async function o(t){let n=R.join(e,`hooks`),r=t.resolveData||`all`,i=await Y({directory:n,schema:M,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:e=>!(t.runId&&e.runId!==t.runId),getCreatedAt:()=>null,getId:e=>e.hookId});return{...i,data:i.data.map(e=>Nn(e,r))}}return{get:i,getByToken:a,list:o}}async function Un(e,t){await Dn(e);for(let n of await Cn(e,t)){if(n.hookId){let r=null,i=null;try{i=V(e,`hooks`,n.hookId,n.tag),r=await G(i,M)}catch(e){if(!Ge.is(e)&&!(e instanceof SyntaxError||e instanceof E))throw e}r&&i&&r.runId===t&&(await cn(e,r.token,r.runId,r.hookId),await K(ln(e,r.token,r.runId,r.hookId)),await K(i))}await wn(e,n.fileId)}}async function Wn(e,t,n,r,i){z(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await W(B(e,`runs`,`${t}.json`),i,{overwrite:!0}),await Un(e,t),{event:void 0,run:jn(i,a)}}case`wait_completed`:case`hook_received`:{let r=`evnt_${un()}`,i=new Date,o={...n,runId:t,eventId:r,createdAt:i,specVersion:5};return await W(B(e,`events`,`${`${t}-${r}`}.json`),o),{event:C(o,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const Gn=new Map;function Kn(e,t){let n=Gn.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{Gn.get(e)===r.task&&Gn.delete(e)}})();return r.task=i,Gn.set(e,i),i}function qn(e,t){return{get:(async(n,r)=>{z(`runId`,n);let i=await H(e,`runs`,n,D,t);if(!i)throw new s(n);return jn(i,r?.resolveData??`all`)}),list:(async t=>{let n=t?.resolveData??`all`,r=await Y({directory:R.join(e,`runs`),schema:D,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:$(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(n,r,i)=>(z(`runId`,n),Kn(n,async()=>{let a=await H(e,`runs`,n,D,t);if(!a)throw new s(n);try{ce(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof g,e}let o=v(a.attributes,r),c={...a,attributes:o,updatedAt:new Date};return await W(V(e,`runs`,n,t),c,{overwrite:!0}),{attributes:o}}))}}const Jn=A({hookId:k().optional(),runId:k(),eventId:k().optional()}),Yn=A({eventId:k()});async function Xn(e){try{return await G(e,Jn)}catch(e){if(e instanceof SyntaxError||e instanceof E)return null;throw e}}async function Zn(e,t,n){if(t.hookId&&await on(e,t.hookId,n))return!0;let r=await H(e,`runs`,t.runId,D,n);return r?b(r.status):!0}async function Qn(e){try{return await G(e,Yn)}catch(e){if(e instanceof SyntaxError||e instanceof E)return null;throw e}}async function $n(e,t,n){return(await Y({directory:R.join(e,`events`),schema:x,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:$(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function er(e,t,n,r,i){let a=await H(e,`events`,`${t}-${r}`,x,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await H(e,`hooks`,n,M,i))return;let o=a.eventData??{};if(typeof o.token!=`string`)return;let s={runId:t,hookId:n,token:o.token,metadata:o.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:a.createdAt,specVersion:a.specVersion,isWebhook:o.isWebhook??!0,isSystem:o.isSystem??!1};await yn(e,o.token,t,n,r,i),await xn(e,t,n,i),await q(V(e,`hooks`,n,i),JSON.stringify(s,U,2))}async function tr(e,t,n,r,i){let a=ln(e,t,n,r);return await q(a,JSON.stringify({eventId:i}))?i:(await Qn(a))?.eventId??null}function nr(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 rr(e,t){let n=R.join(e,`waits`),r=await J(n);for(let e of r)e.startsWith(`${t}-`)&&await K(R.join(n,`${e}.json`))}async function ir(e,t,n,r){return Kn(t,async()=>{let i=await G(V(e,`runs`,t,n),D),a={...r,attributes:i?.attributes??r.attributes};return await W(V(e,`runs`,t,n),a,{overwrite:!0}),a})}function ar(e,t){let n=4*1024*1024,r=new Map,i=new Map,a=new Map,o=0;function g(e){let t=r.get(e);if(!t)return;r.delete(e),o-=i.get(e)??0,i.delete(e);let n=a.get(t.runId);n?.delete(e),n?.size===0&&a.delete(t.runId)}function S(e){for(let t of a.get(e)??[])g(t)}function w(){r.clear(),i.clear(),a.clear(),o=0}function T(e,t,s){if(s>n)return;for(;r.size>0&&(r.size>=1e3||o+s>n);){let e=r.keys().next().value;g(e)}r.set(e,t),i.set(e,s),o+=s;let c=a.get(t.runId)??new Set;c.add(e),a.set(t.runId,c)}function E(e,t,r){if(ne(e.eventType)){S(e.runId);return}let i=Buffer.byteLength(r);if(i>n)return;let a=x.safeParse(JSON.parse(r,at));a.success&&T(t,a.data,i)}async function ie(n){let r=V(e,`events`,`${n.runId}-${n.eventId}`,t),i=JSON.stringify(n,U,2);await ot(r,i),E(n,r,i)}let oe=new Map,O=new Map;return{clearCache:w,async create(n,i,a){if(n!=null&&n!==``&&z(`runId`,n),`correlationId`in i&&typeof i.correlationId==`string`&&z(`correlationId`,i.correlationId),m(i.eventType)&&n&&i.correlationId)return nr(oe,t?`${n}-${i.correlationId}.${t}`:`${n}-${i.correlationId}`,()=>o());if(N(i.eventType)&&n&&i.correlationId)return nr(O,t?`${n}-${i.correlationId}.hook.${t}`:`${n}-${i.correlationId}.hook`,()=>o());return o();async function o(){let o=`evnt_${un()}`,g=new Date,S;if(i.eventType===`run_created`&&(!n||n===``))S=`wrun_${un()}`;else if(n)S=n;else throw Error(`runId is required for non-run_created events`);if(i.eventType===`run_created`&&n&&n!==``){let e=le(S,`wrun_`);if(e)throw new c(e)}let w=i.specVersion??5,T=null;if(i.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(i.eventType)&&(T=await H(e,`runs`,S,D,t),i.eventType===`run_started`&&!T&&`eventData`in i&&i.eventData)){let n=i.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){ce(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:S,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},createdAt:g,updatedAt:g};if(await q(V(e,`runs`,S,t),JSON.stringify(r,U))){let e=`evnt_${un()}`;await ie({eventType:`run_created`,runId:S,eventId:e,createdAt:g,specVersion:w,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes}}),T=r}else T=await H(e,`runs`,S,D,t)}}if(i.eventType===`run_failed`&&!T||i.eventType===`attr_set`&&!T)throw new s(S);if(T){if(re(T.specVersion))throw new p(T.specVersion,5);if(ue(T.specVersion))return Wn(e,S,i,T,a)}let oe=y(i),O=oe&&i.eventType===`step_started`;if(T&&b(T.status)){if(i.eventType===`run_cancelled`&&T.status===`cancelled`){let e={...i,runId:S,eventId:o,createdAt:g,specVersion:w};return await ie(e),{event:C(e,a?.resolveData??`all`),run:T}}if(i.eventType===`run_started`)throw new u(`Workflow run "${S}" is already in terminal state "${T.status}"`);if(ne(i.eventType))throw new f(`Cannot transition run from terminal state "${T.status}"`);if(oe)throw new f(`Cannot create new entities on run in terminal state "${T.status}"`);if(i.eventType===`attr_set`)throw new f(`Cannot set attributes on run in terminal state "${T.status}"`)}let k=null;if(m(i.eventType)&&i.eventType!==`step_created`&&i.correlationId){if(k=await H(e,`steps`,`${S}-${i.correlationId}`,ee,t),!k&&!O)throw new c(`Step "${i.correlationId}" not found`);if(O&&k)throw new f(`Step "${i.correlationId}" already created`);if(k){if(ae(k.status))throw new f(`Cannot modify step in terminal state "${k.status}"`);if(T&&b(T.status)&&k.status!==`running`)throw new u(`Cannot modify non-running step on run in terminal state "${T.status}"`)}}if(te(i.eventType)&&i.correlationId&&(i.eventType===`hook_received`&&await on(e,i.correlationId,t)||!await H(e,`hooks`,i.correlationId,M,t)))throw new d(i.correlationId);let A={...i,runId:S,eventId:o,createdAt:g,specVersion:w};if(i.eventType===`run_started`&&`eventData`in A&&delete A.eventData,O&&A.eventType===`step_started`&&A.eventData){let{input:e,...t}=A.eventData;A={...A,eventData:t}}let j,N,P,F,de=!1,fe;if(i.eventType===`run_created`&&`eventData`in i){let n=i.eventData;if(ce(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),j={runId:S,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},createdAt:g,updatedAt:g},!await q(V(e,`runs`,S,t),JSON.stringify(j,U,2)))throw new f(`Workflow run "${S}" already exists`)}else if(i.eventType===`run_started`){if(T){if(T.status===`running`)return{run:T};j=await ir(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:T.startedAt??g,updatedAt:g,attributes:T.attributes})}}else if(i.eventType===`run_completed`&&`eventData`in i){let n=i.eventData;T&&(j=await ir(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:g,updatedAt:g,attributes:T.attributes}),await Promise.all([Un(e,S),rr(e,S)]))}else if(i.eventType===`run_failed`&&`eventData`in i){let n=i.eventData;T&&(j=await ir(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:g,updatedAt:g,attributes:T.attributes}),await Promise.all([Un(e,S),rr(e,S)]))}else if(i.eventType===`run_cancelled`)T&&(j=await ir(e,S,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:g,updatedAt:g,attributes:T.attributes}),await Promise.all([Un(e,S),rr(e,S)]));else if(i.eventType===`attr_set`&&T)j=await Kn(S,async()=>{let n=await G(V(e,`runs`,S,t),D);if(!n)throw new s(S);if(ce(i.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:i.eventData.allowReservedAttributes===!0}),i.correlationId&&i.eventData.writer.type===`workflow`&&!await q(B(e,`.locks`,`attributes`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``))throw new f(`Attribute event "${i.correlationId}" already exists`);let r={...n,attributes:v(n.attributes,i.eventData.changes),updatedAt:g};return await W(V(e,`runs`,S,t),r,{overwrite:!0}),r});else if(i.eventType===`step_created`&&`eventData`in i){if(!await q(B(e,`.locks`,`steps`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``))throw new f(`Step "${i.correlationId}" already created`);let n=i.eventData;N={runId:S,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:g,updatedAt:g,specVersion:w},await W(V(e,`steps`,`${S}-${i.correlationId}`,t),N)}else if(i.eventType===`step_started`){if(!k&&O){let n=i.eventData;if(await q(B(e,`.locks`,`steps`,t?`${S}-${i.correlationId}.created.${t}`:`${S}-${i.correlationId}.created`),``)){let r={runId:S,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:g,updatedAt:g,specVersion:w};await W(V(e,`steps`,`${S}-${i.correlationId}`,t),r);let a=`evnt_${un()}`,o={eventType:`step_created`,runId:S,eventId:a,createdAt:g,specVersion:w,correlationId:i.correlationId,eventData:{stepName:n.stepName,input:n.input}};await W(V(e,`events`,`${S}-${a}`,t),o),k=r,de=!0}else throw new f(`Step "${i.correlationId}" already created`)}if(k){if(k.retryAfter&&k.retryAfter.getTime()>Date.now())throw new l(`Cannot start step "${i.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((k.retryAfter.getTime()-Date.now())/1e3)});let n=`${S}-${i.correlationId}`,r=await H(e,`steps`,n,ee,t);if(r&&ae(r.status))throw new f(`Cannot modify step in terminal state "${r.status}"`);N={...k,status:`running`,startedAt:k.startedAt??g,attempt:k.attempt+1,retryAfter:void 0,updatedAt:g},await W(V(e,`steps`,n,t),N,{overwrite:!0})}}else if(i.eventType===`step_completed`&&`eventData`in i){let n=i.eventData;if(k){let r=`${S}-${i.correlationId}`;if(!await q(B(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new f(`Cannot modify step in terminal state`);N={...k,status:`completed`,output:n.result,completedAt:g,updatedAt:g},await W(V(e,`steps`,r,t),N,{overwrite:!0})}}else if(i.eventType===`step_failed`&&`eventData`in i){let n=i.eventData;if(k){let r=`${S}-${i.correlationId}`;if(!await q(B(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new f(`Cannot modify step in terminal state`);N={...k,status:`failed`,error:n.error,completedAt:g,updatedAt:g},await W(V(e,`steps`,r,t),N,{overwrite:!0})}}else if(i.eventType===`step_retrying`&&`eventData`in i){let n=i.eventData;if(k){let r=`${S}-${i.correlationId}`;N={...k,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:g},await W(V(e,`steps`,r,t),N,{overwrite:!0})}}else if(i.eventType===`hook_created`&&`eventData`in i){let n=i.eventData,r=sn(e,n.token),s=JSON.stringify({token:n.token,hookId:i.correlationId,runId:S,eventId:o}),c=!1,l=null,u=0,d=0;for(let a=0;a<10&&(await Xn(r)||await Bn(e,n.token,t),c=await q(r,s),!c);a++){if(l=await Xn(r),!l){d++,d>=3&&await K(r);continue}if(l.runId===S&&l.hookId===i.correlationId||!await Zn(e,l,t))break;u++,u<3?await new Promise(e=>setTimeout(e,10)):(await K(r),l.hookId&&(await K(V(e,`hooks`,l.hookId,t)),await K(ln(e,n.token,l.runId,l.hookId)))),l=null}let p=!1;if(!c)if(l?.runId===S&&l.hookId===i.correlationId){let r;if(l.eventId)r=l.eventId;else{let a=await $n(e,S,i.correlationId);if(a!==null)throw await er(e,S,i.correlationId,a,t),new f(`Hook "${i.correlationId}" already created`);let s=await tr(e,n.token,S,i.correlationId,o);if(s===null)throw new f(`Hook "${i.correlationId}" already created`);r=s}o=r;let a=se(o.replace(/^evnt_/,``))??g;A={...i,runId:S,eventId:o,createdAt:a,specVersion:w},p=!0}else{let e={eventType:`hook_conflict`,correlationId:i.correlationId,eventData:{token:n.token,...l?{conflictingRunId:l.runId}:{}},runId:S,eventId:o,createdAt:g,specVersion:w};return await ie(e),{event:C(e,a?.resolveData??`all`),run:j,step:N,hook:void 0}}P={runId:S,hookId:i.correlationId,token:n.token,metadata:n.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:A.createdAt,specVersion:w,isWebhook:n.isWebhook??!1,isSystem:n.isSystem??!1},fe=p?{overwrite:!0}:void 0,await yn(e,n.token,S,i.correlationId,o,t)}else if(i.eventType===`hook_disposed`){if(!await q(an(e,i.correlationId,t),``))throw new f(`Hook "${i.correlationId}" already disposed`);let n=V(e,`hooks`,i.correlationId,t),r=await H(e,`hooks`,i.correlationId,M,t);r&&(await cn(e,r.token,r.runId,r.hookId),await K(ln(e,r.token,r.runId,r.hookId))),await K(n),await Sn(e,S,i.correlationId,t)}else if(i.eventType===`wait_created`&&`eventData`in i){let n=`${S}-${i.correlationId}`;if(!await q(B(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new f(`Wait "${i.correlationId}" already exists`);let r=i.eventData;F={waitId:n,runId:S,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:g,updatedAt:g,specVersion:w},await W(V(e,`waits`,n,t),F)}else if(i.eventType===`wait_completed`){let n=`${S}-${i.correlationId}`,r=B(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await q(r,``))throw new f(`Wait "${i.correlationId}" already completed`);let a=await H(e,`waits`,n,h,t);if(!a)throw await pe.unlink(r).catch(()=>{}),new c(`Wait "${i.correlationId}" not found`);F={...a,status:`completed`,completedAt:g,updatedAt:g},await W(V(e,`waits`,n,t),F,{overwrite:!0})}if(i.eventType===`hook_received`&&i.correlationId&&await on(e,i.correlationId,t))throw new d(i.correlationId);let I=V(e,`events`,`${S}-${o}`,t),me=JSON.stringify(A,U,2);if(!await q(I,me))throw i.eventType===`hook_created`&&i.correlationId&&await er(e,S,i.correlationId,o,t),new f(`Event "${o}" already exists for run "${S}"`);E(A,I,me),P&&i.eventType===`hook_created`&&(await xn(e,P.runId,P.hookId,t),await W(V(e,`hooks`,P.hookId,t),P,fe));let he=a?.resolveData??`all`,ge=C(A,he),L,_e,ve;if(i.eventType===`run_started`&&j){let t=await Y({directory:R.join(e,`events`),schema:x,cachedItems:r,filePrefix:`${S}-`,sortOrder:`asc`,limit:1e3,getCreatedAt:$(`evnt`),getId:e=>e.eventId});L=t.data,_e=t.cursor,ve=t.hasMore}if(_(i.eventType)&&typeof a?.sinceCursor==`string`){let t=await Y({directory:R.join(e,`events`),schema:x,filePrefix:`${S}-`,sortOrder:`asc`,cursor:a.sinceCursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});L=he===`none`?t.data.map(e=>C(e,he)):t.data,_e=t.cursor,ve=t.hasMore}return{event:ge,run:j,step:N,hook:P,wait:F,events:L,cursor:_e,hasMore:ve,...de?{stepCreated:!0}:{}}}},async get(n,r,i){z(`runId`,n),z(`eventId`,r);let a=await H(e,`events`,`${n}-${r}`,x,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return C(a,i?.resolveData??`all`)},async list(t){let{runId:n}=t;z(`runId`,n);let i=t.resolveData??`all`,a=await Y({directory:R.join(e,`events`),schema:x,cachedItems:r,filePrefix:`${n}-`,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>C(e,i))}:a},async listByCorrelationId(t){let n=t.correlationId;z(`correlationId`,n);let i=t.resolveData??`all`,a=await Y({directory:R.join(e,`events`),schema:x,cachedItems:r,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>C(e,i))}:a}}}function or(e,t){return{get:(async(n,r,i)=>{z(`runId`,n),z(`stepId`,r);let a=await H(e,`steps`,`${n}-${r}`,ee,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return Mn(a,i?.resolveData??`all`)}),list:(async t=>{z(`runId`,t.runId);let n=t.resolveData??`all`,r=await Y({directory:R.join(e,`steps`),schema:ee,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function sr(e,t){let n=qn(e,t),r=or(e,t),i=ar(e,t),a=Hn(e,t);return{runs:Kt(`world.runs`,n),steps:Kt(`world.steps`,r),events:Kt(`world.events`,i),hooks:Kt(`world.hooks`,a),clearCache:()=>i.clearCache()}}const cr=O(()=>Math.random()),lr=A({streams:S(k())});function ur(e){return e===1}function dr(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function fr(e){return ur(e[0])}function pr(e){return{eof:fr(e),chunk:Buffer.from(e.subarray(1))}}async function mr(e){try{return await pe.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function hr(e,t,n,r=n,i=()=>!0){for(let a of t){if(!a.endsWith(n))continue;let t=a.slice(0,-n.length);i(t)&&e.set(t,r)}}function gr(e,t){return z(`streamName`,t),R.join(e,t)}async function _r(e,t,n){let r=gr(e,t),i=await mr(r),a=new Map;return hr(a,i,`.json`),hr(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&hr(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function vr(e,t){let n=t?`.${t}`:``,r=new we,i=new Set;async function a(n,r){z(`runId`,n),z(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=V(e,`streams/runs`,n,t),s=(await H(e,`streams/runs`,n,lr,t))?.streams??[];s.includes(r)||(s.push(r),await W(o,{streams:s},{overwrite:!0})),i.add(a)}function o(e){return typeof e==`string`?Buffer.from(new TextEncoder().encode(e)):e instanceof Buffer?e:Buffer.from(e)}return{streams:{async write(t,i,s){let c=`chnk_${cr()}`;await a(await t,i);let l=o(s),u=dr({chunk:l,eof:!1});await ot(R.join(gr(R.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_${cr()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=dr({chunk:t,eof:!1});return await ot(R.join(gr(R.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_${cr()}`;await a(await t,i),await ot(R.join(gr(R.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),dr({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return z(`runId`,n),(await H(e,`streams/runs`,n,lr,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await _r(R.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=R.join(c,`${e}${t}`);if(f<l){if(ur(await ct(n))){u=!0;break}f++;continue}if(d.length>=a){ur(await ct(n))?u=!0:f++;break}let r=pr(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 _r(R.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(ur(await ct(R.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=R.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 _r(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`;ur(await ct(R.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=pr(await st(R.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 _r(o,i,t);for(let t of r){let r=t;if(n.has(r))continue;n.add(r);let i=a.get(t)??`.bin`,o=pr(await st(R.join(_,`${t}${i}`)));if(o?.eof===!0){l=!0,s();try{e.close()}catch{}return}if(l)return;o.chunk.byteLength&&e.enqueue(Uint8Array.from(o.chunk))}}catch(e){e instanceof Error&&`code`in e||console.error(`[world-local] Unexpected polling error:`,e)}finally{x=!1}}},100)},cancel(){l=!0,s()}})}}}}function yr(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Be.value,...t},r=n.tag,i=nn(n),{clearCache:a,...o}=sr(n.dataDir,r),s=n.recoverActiveRuns??!0;return{specVersion:5,...i,...o,...Kt(`world.streams`,{...vr(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Tt(n.dataDir),!s)return;let e=r?e=>$e(e,r):et;await j({...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=R.join(e,`hooks`),i=await tt(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-Blxnyb7-.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await G(R.join(t,n),a);r?.token&&(await K(R.join(t,`tokens`,`${rn(r.token)}.json`)),await K(ln(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=R.join(e,t),i=await tt(n,r);await Promise.all(i.map(e=>K(R.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=R.join(e,`hooks`,t),i;try{i=await I.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=R.join(n,e.name),i=await tt(t,r);await Promise.all(i.map(e=>K(R.join(t,e))))}))}await I.rm(R.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=R.join(e,`streams`,`chunks`),s;try{s=await I.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=R.join(o,e.name),n=await nt(t,r,`.bin`);await Promise.all(n.map(e=>I.unlink(R.join(t,e)).catch(()=>{})))})),Xe()}else Xe(),En(),await ye(n.dataDir,{recursive:!0,force:!0}),await Tt(n.dataDir)}}}function br(e){return yr(e)}export{ht as DataDirAccessError,gt as DataDirVersionError,br as createLocalWorld,yr as createWorld,xt as ensureDataDir,Tt as initDataDir,_t as parseVersion};
4
+ `);for(let e of r)if(e.includes(`LISTEN`)){let t=e.trim().split(/\s+/)[8];if(t){let e=t.lastIndexOf(`:`);if(e!==-1){let r=Oe(t.slice(e+1));r!==void 0&&n.push(r)}}}return n}catch{return[]}}async function Me(e){try{let{stdout:t}=await De(`cmd`,[`/c`,`netstat -ano -p tcp | findstr LISTENING`]);return Ee(t,e)}catch{return[]}}async function Ne(){let{pid:e,platform:t}=process;try{switch(t){case`linux`:return await Ae(e);case`darwin`:return await je(e);case`win32`:return await Me(e);default:return[]}}catch(e){return process.env.NODE_ENV===`development`&&console.debug(`[getAllPorts] Detection failed:`,e),[]}}const Pe=`${o}/flow?__health`;async function Fe(e,t={}){let{endpoint:n=Pe,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 Ie(e){let t=await Ne();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 Fe(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 Le(e){let t={get value(){let n=e();return Object.defineProperty(t,"value",{value:n}),n}};return t}const Re=()=>process.env.WORKFLOW_LOCAL_DATA_DIR||`.workflow-data`,ze=()=>process.env.WORKFLOW_LOCAL_BASE_URL,Be=Le(()=>({dataDir:Re(),baseUrl:ze()}));function Ve(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 He(e){return e.baseUrl??process.env.WORKFLOW_LOCAL_BASE_URL??i(`http://localhost`)}async function Ue(e){if(e.baseUrl)return e.baseUrl;if(process.env.WORKFLOW_LOCAL_BASE_URL)return process.env.WORKFLOW_LOCAL_BASE_URL;if(typeof e.port==`number`)return i(`http://localhost:${e.port}`);if(process.env.PORT)return i(`http://localhost:${process.env.PORT}`);let t=await Ie({endpoint:a()});if(t)return i(`http://localhost:${t}`);throw Error(`Unable to resolve base URL for workflow queue.`)}const We=D(()=>Math.random());function Ge(e){let t=typeof e==`string`?e:String(e);return t.length>48?`${t.slice(0,48)}…`:t}var Ke=class extends s{constructor(e,t){super(`Unsafe ${e} "${Ge(t)}": must not be empty, contain ".", "/", "\\", or null bytes`),this.name=`UnsafeEntityIdError`}static is(e){return e instanceof Error&&e.name===`UnsafeEntityIdError`}};function z(e,t){if(t.length===0||t.startsWith(`.`)||t.includes(`/`)||t.includes(`\\`)||t.includes(`\0`)||t.includes(`.`))throw new Ke(e,t)}function B(e,...t){let n=R.resolve(e),r=R.resolve(e,...t);if(r!==n&&!r.startsWith(n+R.sep))throw new Ke(`path`,t.join(`/`));return r}const qe=process.platform===`win32`;async function Je(e,t=5){if(!qe)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 Ye=new Set,Xe=new Set;function Ze(){Ye.clear(),Xe.clear()}const Qe=/\.[a-zA-Z][a-zA-Z0-9-]*$/;function $e(e){return e.replace(Qe,``)}function et(e,t){return e.endsWith(`.${t}`)}function tt(e){return!Qe.test(e)}function V(e,t,n,r){return z(`fileId`,n),r!==void 0&&z(`tag`,r),B(e,t,r?`${n}.${r}.json`:`${n}.json`)}async function H(e,t,n,r,i){if(z(`fileId`,n),i!==void 0&&z(`tag`,i),i){let a=await G(B(e,t,`${n}.${i}.json`),r);if(a!==null)return a}return G(B(e,t,`${n}.json`),r)}async function nt(e,t){let n=`.${t}.json`;try{return(await F.readdir(e)).filter(e=>e.endsWith(n))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function rt(e,t,n){let r=`.${t}${n}`;try{return(await F.readdir(e)).filter(e=>e.endsWith(r))}catch(e){if(e.code===`ENOENT`)return[];throw e}}async function it(e){let t=R.resolve(e);if(!Xe.has(t))try{await F.mkdir(t,{recursive:!0}),Xe.add(t)}catch{}}async function at(e,t){await it(e);try{return await t()}catch(n){if(n.code!==`ENOENT`)throw n;return Xe.delete(R.resolve(e)),await it(e),t()}}function U(e,t){return t instanceof Uint8Array?{__type:`Uint8Array`,data:Buffer.from(t).toString(`base64`)}:t}function ot(e,t){return typeof t==`object`&&t&&t.__type===`Uint8Array`&&typeof t.data==`string`?new Uint8Array(Buffer.from(t.data,`base64`)):t}async function W(e,t,n){return st(e,JSON.stringify(t,U,2),n)}async function st(e,t,n){if(!n?.overwrite){if(Ye.has(e))throw new d(`File ${e} already exists and 'overwrite' is false`);try{throw await F.access(e),Ye.add(e),new d(`File ${e} already exists and 'overwrite' is false`)}catch(e){if(e.code!==`ENOENT`)throw e}}let r=`${e}.tmp.${We()}`,i=!1;try{await at(R.dirname(e),async()=>{await F.writeFile(r,t),i=!0,await Je(()=>F.rename(r,e))}),Ye.add(e)}catch(e){throw i&&await Je(()=>F.unlink(r),3).catch(()=>{}),e}}async function G(e,t){try{let n=await F.readFile(e,`utf-8`);return t.parse(JSON.parse(n,ot))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function ct(e){return await F.readFile(e)}async function lt(e){let t=await F.open(e,`r`);try{let e=Buffer.allocUnsafe(1),{bytesRead:n}=await t.read(e,0,1,0);return n===0?void 0:e[0]}finally{await t.close()}}async function K(e){try{await F.unlink(e)}catch(e){if(e.code!==`ENOENT`)throw e}}async function q(e,t){let n=`${e}.tmp.${We()}`,r=!1;try{return await at(R.dirname(e),async()=>{await F.writeFile(n,t,{flag:`wx`}),r=!0;try{return await Je(()=>F.link(n,e)),!0}catch(e){if(e.code===`EEXIST`)return!1;throw e}})}finally{r&&await Je(()=>F.unlink(n),3).catch(()=>{})}}async function J(e){return ut(e,`.json`)}async function ut(e,t){try{return(await F.readdir(e)).filter(e=>e.endsWith(t)).map(e=>e.slice(0,-t.length))}catch(e){if(e.code===`ENOENT`)return[];throw e}}function dt(e){if(!e)return null;let t=e.split(`|`);return{timestamp:new Date(t[0]),id:t[1]||null}}function ft(e,t){return t?`${e.toISOString()}|${t}`:e.toISOString()}async function Y(e){let{directory:t,schema:n,cachedItems:r,filePrefix:i,fileIdFilter:a,filter:o,sortOrder:s=`desc`,limit:c=20,cursor:l,getCreatedAt:u,getId:d}=e;i!==void 0&&z(`filePrefix`,i);let f=R.resolve(t),p=await J(f),m=i?p.filter(e=>e.startsWith(i)):p,h=a?m.filter(a):m,g=dt(l),_=h;g&&(_=h.filter(e=>{let t=u(`${e}.json`);if(t){let e=g.timestamp.getTime(),n=t.getTime();return g.id?s===`desc`?n<=e:n>=e:s===`desc`?n<e:n>e}return!0}));let v=[];for(let e=0;e<_.length;e+=32){let t=_.slice(e,e+32),i=await Promise.all(t.map(async e=>{let t=R.join(f,`${e}.json`);try{let e=r?.get(t);return e===void 0?await G(t,n):structuredClone(e)}catch(t){if(t instanceof k)return console.warn(`Skipping item ${e} due to malformed JSON: ${t.message}`),null;throw t}}));for(let e of i)if(e&&!(o&&!o(e))){if(g){let t=e.createdAt.getTime(),n=g.timestamp.getTime();if(s===`desc`){if(t>n||t===n&&g.id&&d&&d(e)>=g.id)continue}else if(t<n||t===n&&g.id&&d&&d(e)<=g.id)continue}v.push(e)}}v.sort((e,t)=>{let n=e.createdAt.getTime(),r=t.createdAt.getTime(),i=s===`asc`?n-r:r-n;if(i===0&&d){let n=d(e),r=d(t);return s===`asc`?n.localeCompare(r):r.localeCompare(n)}return i});let y=v.length>c,b=y?v.slice(0,c):v;return{data:b,cursor:b.length>0?ft(b[b.length-1].createdAt,d?.(b[b.length-1])):null,hasMore:y}}let X=null;function pt(){return typeof import.meta.url==`string`&&import.meta.url?R.dirname(pe(import.meta.url)):null}async function mt(){if(X)return X;let e=pt();if(e)try{let t=await L(R.join(e,`../package.json`),`utf-8`);return X=JSON.parse(t),X}catch{}return X={name:`@workflow/world-local`,version:`5.0.0-beta.29`},X}const ht=`version.txt`;var gt=class extends Error{dataDir;code;constructor(e,t,n){super(e),this.name=`DataDirAccessError`,this.dataDir=t,this.code=n}},_t=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 vt(e){let t=e.match(/^(\d+)\.(\d+)\.(\d+)(?:-(.+))?$/);if(!t)throw Error(`Invalid version string: "${e}"`);return{major:parseInt(t[1],10),minor:parseInt(t[2],10),patch:parseInt(t[3],10),prerelease:t[4],raw:e}}function Z(e){let t=`${e.major}.${e.minor}.${e.patch}`;return e.prerelease?`${t}-${e.prerelease}`:t}function yt(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:vt(t.substring(n+1))}}function bt(e,t){return`${e}@${Z(t)}`}function xt(e,t){console.log(`[world-local] Upgrading from version ${Z(e)} to ${Z(t)}`)}async function St(e){let t=R.resolve(e);try{await ge(t,{recursive:!0})}catch(e){let n=e;if(n.code!==`EEXIST`)throw new gt(`Failed to create data directory "${t}": ${n.message}`,t,n.code)}try{await me(t,he.R_OK)}catch(e){let n=e;throw new gt(`Data directory "${t}" is not readable: ${n.message}`,t,n.code)}let n=R.join(t,`.workflow-write-test-${Date.now()}`);try{await xe(n,``),await be(n).catch(e=>{if(e.code!==`ENOENT`)throw e})}catch(e){let n=e;throw new gt(`Data directory "${t}" is not writable: ${n.message}`,t,n.code)}}async function Ct(e){let t=R.join(R.resolve(e),ht);try{return yt(await L(t,`utf-8`))}catch(e){if(e.code===`ENOENT`)return null;throw e}}async function wt(e,t){await xe(R.join(R.resolve(e),ht),bt((await mt()).name,t))}function Tt(e,t){return t||Z(e)}async function Et(e){await St(e);let t=await mt(),n=vt(t.version),r=await Ct(e);if(r===null){await wt(e,n);return}let{version:i}=r;if(Z(i)!==Z(n))try{xt(i,n),await wt(e,n)}catch(e){let r=Tt(i,e instanceof _t?e.suggestedVersion:void 0);throw console.error(`[world-local] Failed to upgrade data directory from version ${Z(i)} to ${Z(n)}:`,e instanceof Error?e.message:e),console.error(`[world-local] Data is not compatible with the current version. Please downgrade to ${t.name}@${r}`),e}}let Dt=null;async function Ot(){return Dt||=import(`../../_chunks/workflow/src-CQuMexnO.js`).then(t=>e(t.t(),1)).catch(()=>null),Dt}let kt=null;async function At(){return kt||=Ot().then(e=>e?e.trace.getTracer(`workflow`):null),kt}async function jt(e,...t){let[n,r]=await Promise.all([At(),Ot()]),{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 Mt(e){let t=await Ot();if(t)return t.SpanKind[e]}function Q(...e){return t=>Object.fromEntries(e.map(e=>[e,t]))}const Nt=Q(`peer.service`),Pt=Q(`rpc.system`),Ft=Q(`rpc.service`),It=Q(`rpc.method`),Lt=Q(`workflow.run.id`),Rt=Q(`step.id`),zt={peerService:`world-local`,rpcSystem:`local`,rpcService:`world-local`},Bt={"world.runs.get":0,"world.runs.experimentalSetAttributes":0,"world.steps.get":0,"world.events.create":0,"world.events.get":0},Vt=new Set([`world.steps.list`,`world.events.list`,`world.hooks.list`]);function Ht(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 Ut(e,t){return typeof e[t]==`string`?e[t]:void 0}function Wt(e){if(typeof e!=`object`||!e)return;let t=e.runId;return typeof t==`string`?t:void 0}function Gt(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 Kt(e,t,n){let r=`${e}.${t}`,i={},a=Bt[r],o=a===void 0?Vt.has(r)?Wt(n[0]):void 0:Ut(n,a);if(o&&Object.assign(i,Lt(o)),r===`world.steps.get`){let e=Ut(n,1);e&&Object.assign(i,Rt(e))}return i}function qt(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=Ht(t);r&&(n=`${e}.${a} ${r}`)}return jt(n,{kind:await Mt(`INTERNAL`)},async r=>{r?.setAttributes({...Nt(zt.peerService),...Pt(zt.rpcSystem),...Ft(zt.rpcService),...It(n),...Kt(e,a,t)});let o=await i(...t),s=Gt(o);return s&&r?.setAttributes(Lt(s)),o})}}return n}var Jt=n((e=>{var n=e&&e.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(e,"__esModule",{value:!0}),e.RateLimit=e.Sema=void 0;let r=n(t(`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}};e.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)}}e.RateLimit=f}))(),Yt=N(),Xt=class{contentType=`application/json`;serialize(e){return Buffer.from(JSON.stringify(e,U))}async deserialize(e){let t=[],n=e.getReader();for(;;){let{done:e,value:r}=await n.read();if(e)break;r&&t.push(r)}let r=Buffer.concat(t).toString();return JSON.parse(r,ot)}};const Zt=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_MAX_VISIBILITY??`0`,10)||1/0,Qt=2147483647,$t=parseInt(process.env.WORKFLOW_LOCAL_QUEUE_CONCURRENCY??`0`,10)||1e3,en=`Cannot perform ArrayBuffer.prototype.slice on a detached ArrayBuffer`;function tn(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(en))return!0;t=`cause`in t?t.cause:void 0}return!1}function nn(e){let{kind:t,prefix:n}=w(e);return{pathname:t===`workflow`?`flow`:`step`,prefix:n}}function rn(e){let t=new Yt.Agent({headersTimeout:0,connections:1e3,keepAliveTimeout:3e4}),n=new Xt,i=D(),a=new Jt.Sema($t),o=new AbortController,s=o.signal,c=new Map,l=new Map,u=async(o,u,d)=>{let f=[];if(d?.idempotencyKey){let e=c.get(d.idempotencyKey);if(e)return{messageId:e}}let p=n.serialize(u),{pathname:m,prefix:h}=nn(o),g=oe.parse(`msg_${i()}`),_=u,v=_.runId??_.workflowRunId??void 0,y=_.stepId??void 0;if(d?.idempotencyKey){let e=d.idempotencyKey;c.set(e,g),f.push(()=>{c.delete(e)})}return(async()=>{d?.delaySeconds&&d.delaySeconds>0&&await Ce(Math.min(d.delaySeconds*1e3,Qt),void 0,{signal:s}),a.tryAcquire()||(console.warn(`[world-local]: concurrency limit (${$t}) reached, waiting for queue to free up`),await a.acquire());let n=0;try{for(let i=0;i<256;i++){let a={...d?.headers,"content-type":`application/json`,"x-vqs-queue-name":o,"x-vqs-message-id":g,"x-vqs-message-attempt":String(n+1)},c=l.get(h),u;try{if(c)u=await c(new Request(r(He(e),{type:m}),{method:`POST`,headers:a,body:p}));else{let n=await Ue(e);u=await fetch(r(n,{type:m}),{method:`POST`,duplex:`half`,dispatcher:t,headers:a,body:p})}}catch(e){let t=e?.name;if(s.aborted||t===`AbortError`||t===`ResponseAborted`)return;if(tn(e))throw e;console.error(`[world-local] Queue delivery failed at the transport (loop ${i+1}), retrying`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},error:String(e)}),await Ce(5e3,void 0,{signal:s});continue}n++;let f=await u.text();if(u.ok){try{let e=Number(JSON.parse(f).timeoutSeconds);if(Number.isFinite(e)&&e>=0){e>0&&await Ce(Math.min(e*1e3,Qt),void 0,{signal:s});continue}}catch{}return}console.error(`[world-local] Queue message failed (attempt ${n}, HTTP ${u.status})`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},handlerError:f}),await Ce(5e3,void 0,{signal:s})}console.error(`[world-local] Queue message exhausted safety limit (256 attempts)`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y}})}finally{a.release()}})().catch(e=>{e?.name===`AbortError`||e?.name===`ResponseAborted`||(tn(e)?console.error(`[local world] Queue operation failed: detected "${en}". This usually means a Next.js proxy/middleware consumed Workflow's internal request before the executor could read it. Exclude \`/.well-known/workflow/*\` from your matcher. See https://workflow-sdk.dev/docs/getting-started/next#configure-proxy-handler`,{queueName:o,messageId:g,...v&&{runId:v},...y&&{stepId:y},originalError:e}):console.error(`[local world] Queue operation failed:`,e))}).finally(()=>{for(let e of f)e()}),{messageId:g}},d=O({"x-vqs-queue-name":ce,"x-vqs-message-id":oe,"x-vqs-message-attempt":C()});return{queue:u,createQueueHandler:(e,t)=>async n=>{let r=d.safeParse(Object.fromEntries(n.headers));if(!r.success||!n.body)return Response.json({error:n.body?`Missing required headers`:`Missing request body`},{status:400});let i=r.data[`x-vqs-queue-name`],a=r.data[`x-vqs-message-id`],o=r.data[`x-vqs-message-attempt`];if(!i.startsWith(e))return Response.json({error:`Unhandled queue`},{status:400});let s=await new Xt().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,Zt)),n==null?Response.json({ok:!0}):Response.json({timeoutSeconds:n})}catch(e){return Response.json(String(e),{status:500})}},getDeploymentId:async()=>`dpl_local@${(await mt()).version}`,registerHandler(e,t){l.set(e,t)},async close(){s.aborted||(o.abort(),await t.close())}}}function an(e){return P(`sha256`).update(e).digest(`hex`)}function on(e,t,n){return B(e,`.locks`,`hooks`,n?`${t}.disposed.${n}`:`${t}.disposed`)}async function sn(e,t,n){let r=[on(e,t)];n&&r.push(on(e,t,n));for(let e of r)try{return await I.access(e),!0}catch{}return!1}function cn(e,t){return R.join(e,`hooks`,`tokens`,`${an(t)}.json`)}async function ln(e,t,n,r){let i=cn(e,t),a;try{a=JSON.parse(await I.readFile(i,`utf8`))}catch{return}a.runId!==n||a.hookId!==r||await I.unlink(i).catch(()=>{})}function un(e,t,n,r){let i=P(`sha256`).update(`${t}\x00${n}\x00${r}`).digest(`hex`);return R.join(e,`hooks`,`tokens`,`${i}.recovery.json`)}const dn=D(()=>Math.random()),$=e=>{let t=RegExp(`^${e}_`,`g`);return n=>{let r=$e(n.replace(/\.json$/,``))+`.json`,i=r.indexOf(`-`);return i===-1?le(r.replace(/\.json$/,``).replace(t,``)):e===`step`?null:le(r.substring(i+1).replace(/\.json$/,``).replace(t,``))}},fn=O({runId:T()}),pn=O({hookId:T(),tag:T().optional()});function mn(e,t){return B(e,`hooks`,`token-index`,an(t))}function hn(e,t){return z(`hookId`,t),B(e,`hooks`,`id-index`,t)}function gn(e){return B(e,`hooks`,`by-run`)}function _n(e){let t=$e(e);return t===e?void 0:e.slice(t.length+1)}function vn(e,t){return t?tt(e)||et(e,t):tt(e)}async function yn(e){try{return await G(e,x)}catch(e){if(e instanceof SyntaxError||e instanceof k)return null;throw e}}async function bn(e,t,n,r,i,a){z(`runId`,n),z(`eventId`,i),a!==void 0&&z(`tag`,a);let o=a?`${i}.${a}.json`:`${i}.json`,s=JSON.stringify({runId:n});await Promise.all([q(R.join(mn(e,t),o),s),q(R.join(hn(e,r),o),s)])}function xn(e,t,n,r){return V(e,`hooks/by-run`,`${t}-${n}`,r)}async function Sn(e,t,n,r){await q(xn(e,t,n,r),JSON.stringify(r?{hookId:n,tag:r}:{hookId:n}))}async function Cn(e,t,n,r){await K(xn(e,t,n,r)),r&&await K(xn(e,t,n))}async function wn(e,t){z(`runId`,t);let n=gn(e),r=`${t}-`,i=[];for(let e of await J(n)){if(!e.startsWith(r))continue;let t=null;try{t=await G(R.join(n,`${e}.json`),pn)}catch(e){if(!(e instanceof SyntaxError||e instanceof k))throw e}i.push({fileId:e,hookId:t?.hookId??null,tag:t?.tag})}return i}async function Tn(e,t){await K(R.join(gn(e),`${t}.json`))}const En=new Map;function Dn(){En.clear()}async function On(e){let t=R.resolve(e),n=En.get(t);return n||(n=An(t).catch(e=>{throw En.delete(t),e}),En.set(t,n)),n}async function kn(e,t,n){for(let r=0;r<e.length;r+=t)await Promise.all(e.slice(r,r+t).map(n))}async function An(e){let t=R.join(e,`hooks`,`.hook-index-complete`);try{await I.access(t);return}catch{}let n=R.join(e,`events`);await kn(await J(n),32,async t=>{let r=await yn(R.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 bn(e,i,r.runId,r.correlationId,r.eventId,_n(t))}catch{}});let r=R.join(e,`hooks`);await kn(await J(r),32,async t=>{let n=null;try{n=await G(R.join(r,`${t}.json`),j)}catch(e){if(!(e instanceof SyntaxError||e instanceof k))throw e}if(n)try{await Sn(e,n.runId,n.hookId,_n(t))}catch{}}),await q(t,``)}async function jn(e,t,n,r){await On(e);let i;try{i=t.kind===`token`?mn(e,t.token):hn(e,t.hookId)}catch{return null}let a=(await J(i)).filter(e=>vn(e,r)).sort((e,t)=>$e(t).localeCompare($e(e)));for(let t of a){let r=null;try{r=await G(R.join(i,`${t}.json`),fn)}catch(e){if(!(e instanceof SyntaxError||e instanceof k))throw e}if(!r)continue;let a=$e(t),o;try{o=V(e,`events`,`${r.runId}-${a}`,_n(t))}catch{continue}let s=await yn(o);if(s&&s.eventType===`hook_created`&&typeof s.correlationId==`string`&&n(s))return s}return null}function Mn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Nn(e,t){return t===`none`?{...e,input:void 0,output:void 0}:e}function Pn(e,t){if(t===`none`){let{metadata:t,...n}=e;return n}return e}function Fn(e){if(e.eventType!==`hook_created`)return;let t=e.eventData.token;return typeof t==`string`?t:void 0}function In(e){let{token:t,metadata:n,isWebhook:r,isSystem:i}=e.eventData;return{runId:e.runId,hookId:e.correlationId,token:t,metadata:n,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:e.createdAt,specVersion:e.specVersion,isWebhook:r??!0,isSystem:i??!1}}function Ln(e,t){return e.eventType===`hook_created`&&typeof e.correlationId==`string`&&t(e)}async function Rn(e,t,n){let r=await H(e,`runs`,t,E,n);return r?b(r.status):!1}async function zn(e,t,n,r){let i=await jn(e,t,e=>Ln(e,n),r);return!i||!Ln(i,n)||await Rn(e,i.runId,r)||await sn(e,i.correlationId,r)?null:i}async function Bn(e,t,n){let r=In(t);return await q(R.join(e,`hooks`,`tokens`,`${an(r.token)}.json`),JSON.stringify({token:r.token,hookId:r.hookId,runId:r.runId,eventId:t.eventId})),await Sn(e,r.runId,r.hookId,n),await q(V(e,`hooks`,r.hookId,n),JSON.stringify(r,U,2)),r}async function Vn(e,t,n){let r=await zn(e,{kind:`token`,token:t},e=>Fn(e)===t,n);return r?Bn(e,r,n):null}async function Hn(e,t,n){let r=await zn(e,{kind:`id`,hookId:t},e=>e.correlationId===t,n);return r?Bn(e,r,n):null}function Un(e,t){let n=O({hookId:T().optional()});async function r(r){let i=null;try{i=await G(cn(e,r),n)}catch(e){if(!(e instanceof SyntaxError||e instanceof k))throw e}if(i?.hookId)try{let n=await H(e,`hooks`,i.hookId,j,t);if(n&&n.token===r)return{...n,isWebhook:n.isWebhook??!0}}catch(e){if(!Ke.is(e))throw e}let a=R.join(e,`hooks`),o=await J(a);for(let e of o){let t=await G(R.join(a,`${e}.json`),j);if(t&&t.token===r)return{...t,isWebhook:t.isWebhook??!0}}return null}async function i(n,r){z(`hookId`,n);let i=await H(e,`hooks`,n,j,t);if(!i){let i=await Hn(e,n,t);if(!i)throw new u(n);let a=r?.resolveData||`all`;return Pn({...i,isWebhook:i.isWebhook??!0},a)}let a=r?.resolveData||`all`;return Pn({...i,isWebhook:i.isWebhook??!0},a)}async function a(n){let i=await r(n)??await Vn(e,n,t);if(!i)throw new u(n);return i}async function o(t){let n=R.join(e,`hooks`),r=t.resolveData||`all`,i=await Y({directory:n,schema:j,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,filePrefix:void 0,filter:e=>!(t.runId&&e.runId!==t.runId),getCreatedAt:()=>null,getId:e=>e.hookId});return{...i,data:i.data.map(e=>Pn(e,r))}}return{get:i,getByToken:a,list:o}}async function Wn(e,t){await On(e);for(let n of await wn(e,t)){if(n.hookId){let r=null,i=null;try{i=V(e,`hooks`,n.hookId,n.tag),r=await G(i,j)}catch(e){if(!Ke.is(e)&&!(e instanceof SyntaxError||e instanceof k))throw e}r&&i&&r.runId===t&&(await ln(e,r.token,r.runId,r.hookId),await K(un(e,r.token,r.runId,r.hookId)),await K(i))}await Tn(e,n.fileId)}}async function Gn(e,t,n,r,i){z(`runId`,t);let a=i?.resolveData??`all`;switch(n.eventType){case`run_cancelled`:{let n=new Date,i={runId:r.runId,deploymentId:r.deploymentId,workflowName:r.workflowName,specVersion:r.specVersion,executionContext:r.executionContext,input:r.input,createdAt:r.createdAt,expiredAt:r.expiredAt,startedAt:r.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:n,updatedAt:n,attributes:r.attributes};return await W(B(e,`runs`,`${t}.json`),i,{overwrite:!0}),await Wn(e,t),{event:void 0,run:Mn(i,a)}}case`wait_completed`:case`hook_received`:{let r=`evnt_${dn()}`,i=new Date,o={...n,runId:t,eventId:r,createdAt:i,specVersion:5};return await W(B(e,`events`,`${`${t}-${r}`}.json`),o),{event:S(o,a)}}default:throw Error(`Event type '${n.eventType}' not supported for legacy runs (specVersion: ${r.specVersion||`undefined`}). Please upgrade 'workflow' package.`)}}const Kn=new Map;function qn(e,t){let n=Kn.get(e),r={},i=(async()=>{n&&await n.catch(()=>void 0);try{return await t()}finally{Kn.get(e)===r.task&&Kn.delete(e)}})();return r.task=i,Kn.set(e,i),i}function Jn(e,t){return{get:(async(n,r)=>{z(`runId`,n);let i=await H(e,`runs`,n,E,t);if(!i)throw new p(n);return Mn(i,r?.resolveData??`all`)}),list:(async t=>{let n=t?.resolveData??`all`,r=await Y({directory:R.join(e,`runs`),schema:E,fileIdFilter:t?.fileIdFilter,filter:e=>!(t?.workflowName&&e.workflowName!==t.workflowName||t?.status&&e.status!==t.status),sortOrder:t?.pagination?.sortOrder??`desc`,limit:t?.pagination?.limit??200,cursor:t?.pagination?.cursor,getCreatedAt:$(`wrun`),getId:e=>e.runId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r}),experimentalSetAttributes:async(n,r,i)=>(z(`runId`,n),qn(n,async()=>{let a=await H(e,`runs`,n,E,t);if(!a)throw new p(n);try{re(r,{existingKeys:Object.keys(a.attributes??{}),allowReservedAttributes:i?.allowReservedAttributes})}catch(e){throw e instanceof g,e}let o=v(a.attributes,r),s={...a,attributes:o,updatedAt:new Date};return await W(V(e,`runs`,n,t),s,{overwrite:!0}),{attributes:o}}))}}const Yn=O({hookId:T().optional(),runId:T(),eventId:T().optional()}),Xn=O({eventId:T()});async function Zn(e){try{return await G(e,Yn)}catch(e){if(e instanceof SyntaxError||e instanceof k)return null;throw e}}async function Qn(e,t,n){if(t.hookId&&await sn(e,t.hookId,n))return!0;let r=await H(e,`runs`,t.runId,E,n);return r?b(r.status):!0}async function $n(e){try{return await G(e,Xn)}catch(e){if(e instanceof SyntaxError||e instanceof k)return null;throw e}}async function er(e,t,n){return(await Y({directory:R.join(e,`events`),schema:x,filePrefix:`${t}-`,filter:e=>e.eventType===`hook_created`&&e.correlationId===n,limit:1,getCreatedAt:$(`evnt`),getId:e=>e.eventId})).data[0]?.eventId??null}async function tr(e,t,n,r,i){let a=await H(e,`events`,`${t}-${r}`,x,i);if(!a||a.eventType!==`hook_created`||a.correlationId!==n||await H(e,`hooks`,n,j,i))return;let o=a.eventData??{};if(typeof o.token!=`string`)return;let s={runId:t,hookId:n,token:o.token,metadata:o.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:a.createdAt,specVersion:a.specVersion,isWebhook:o.isWebhook??!0,isSystem:o.isSystem??!1};await bn(e,o.token,t,n,r,i),await Sn(e,t,n,i),await q(V(e,`hooks`,n,i),JSON.stringify(s,U,2))}async function nr(e,t,n,r,i){let a=un(e,t,n,r);return await q(a,JSON.stringify({eventId:i}))?i:(await $n(a))?.eventId??null}function rr(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 ir(e,t){let n=R.join(e,`waits`),r=await J(n);for(let e of r)e.startsWith(`${t}-`)&&await K(R.join(n,`${e}.json`))}async function ar(e,t,n,r){return qn(t,async()=>{let i=await G(V(e,`runs`,t,n),E),a={...r,attributes:i?.attributes??r.attributes};return await W(V(e,`runs`,t,n),a,{overwrite:!0}),a})}function or(e,t){let n=4*1024*1024,r=new Map,i=new Map,a=new Map,o=0;function g(e){let t=r.get(e);if(!t)return;r.delete(e),o-=i.get(e)??0,i.delete(e);let n=a.get(t.runId);n?.delete(e),n?.size===0&&a.delete(t.runId)}function C(e){for(let t of a.get(e)??[])g(t)}function w(){r.clear(),i.clear(),a.clear(),o=0}function T(e,t,s){if(s>n)return;for(;r.size>0&&(r.size>=1e3||o+s>n);){let e=r.keys().next().value;g(e)}r.set(e,t),i.set(e,s),o+=s;let c=a.get(t.runId)??new Set;c.add(e),a.set(t.runId,c)}function ae(e,t,r){if(ne(e.eventType)){C(e.runId);return}let i=Buffer.byteLength(r);if(i>n)return;let a=x.safeParse(JSON.parse(r,ot));a.success&&T(t,a.data,i)}async function oe(n){let r=V(e,`events`,`${n.runId}-${n.eventId}`,t),i=JSON.stringify(n,U,2);await st(r,i),ae(n,r,i)}let ce=new Map,D=new Map;return{clearCache:w,async create(n,i,a){if(n!=null&&n!==``&&z(`runId`,n),`correlationId`in i&&typeof i.correlationId==`string`&&z(`correlationId`,i.correlationId),m(i.eventType)&&n&&i.correlationId)return rr(ce,t?`${n}-${i.correlationId}.${t}`:`${n}-${i.correlationId}`,()=>o());if(M(i.eventType)&&n&&i.correlationId)return rr(D,t?`${n}-${i.correlationId}.hook.${t}`:`${n}-${i.correlationId}.hook`,()=>o());return o();async function o(){let o=`evnt_${dn()}`,g=new Date,C;if(i.eventType===`run_created`&&(!n||n===``))C=`wrun_${dn()}`;else if(n)C=n;else throw Error(`runId is required for non-run_created events`);if(i.eventType===`run_created`&&n&&n!==``){let e=ue(C,`wrun_`);if(e)throw new s(e)}let w=i.specVersion??5,T=null;if(i.eventType!==`run_created`&&![`step_completed`,`step_retrying`].includes(i.eventType)&&(T=await H(e,`runs`,C,E,t),i.eventType===`run_started`&&!T&&`eventData`in i&&i.eventData)){let n=i.eventData;if(n.deploymentId&&n.workflowName&&n.input!==void 0){re(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0});let r={runId:C,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},createdAt:g,updatedAt:g};if(await q(V(e,`runs`,C,t),JSON.stringify(r,U))){let e=`evnt_${dn()}`;await oe({eventType:`run_created`,runId:C,eventId:e,createdAt:g,specVersion:w,eventData:{deploymentId:n.deploymentId,workflowName:n.workflowName,input:n.input,executionContext:n.executionContext,attributes:n.attributes,allowReservedAttributes:n.allowReservedAttributes}}),T=r}else T=await H(e,`runs`,C,E,t)}}if(i.eventType===`run_failed`&&!T||i.eventType===`attr_set`&&!T)throw new p(C);if(T){if(ie(T.specVersion))throw new c(T.specVersion,5);if(de(T.specVersion))return Gn(e,C,i,T,a)}let ce=y(i),D=ce&&i.eventType===`step_started`;if(T&&b(T.status)){if(i.eventType===`run_cancelled`&&T.status===`cancelled`){let e={...i,runId:C,eventId:o,createdAt:g,specVersion:w};return await oe(e),{event:S(e,a?.resolveData??`all`),run:T}}if(i.eventType===`run_started`)throw new f(`Workflow run "${C}" is already in terminal state "${T.status}"`);if(ne(i.eventType))throw new d(`Cannot transition run from terminal state "${T.status}"`);if(ce)throw new d(`Cannot create new entities on run in terminal state "${T.status}"`);if(i.eventType===`attr_set`)throw new d(`Cannot set attributes on run in terminal state "${T.status}"`)}let O=null;if(m(i.eventType)&&i.eventType!==`step_created`&&i.correlationId){if(O=await H(e,`steps`,`${C}-${i.correlationId}`,ee,t),!O&&!D)throw new s(`Step "${i.correlationId}" not found`);if(D&&O)throw new d(`Step "${i.correlationId}" already created`);if(O){if(se(O.status))throw new d(`Cannot modify step in terminal state "${O.status}"`);if(T&&b(T.status)&&O.status!==`running`)throw new f(`Cannot modify non-running step on run in terminal state "${T.status}"`)}}if(te(i.eventType)&&i.correlationId&&(i.eventType===`hook_received`&&await sn(e,i.correlationId,t)||!await H(e,`hooks`,i.correlationId,j,t)))throw new u(i.correlationId);let k={...i,runId:C,eventId:o,createdAt:g,specVersion:w};if(i.eventType===`run_started`&&`eventData`in k&&delete k.eventData,D&&k.eventType===`step_started`&&k.eventData){let{input:e,...t}=k.eventData;k={...k,eventData:t}}let A,M,N,P,fe=!1,pe;if(i.eventType===`run_created`&&`eventData`in i){let n=i.eventData;if(re(Object.entries(n.attributes??{}).map(([e,t])=>({key:e,value:t})),{allowReservedAttributes:n.allowReservedAttributes===!0}),A={runId:C,deploymentId:n.deploymentId,status:`pending`,workflowName:n.workflowName,specVersion:w,executionContext:n.executionContext,input:n.input,output:void 0,error:void 0,startedAt:void 0,completedAt:void 0,attributes:n.attributes??{},createdAt:g,updatedAt:g},!await q(V(e,`runs`,C,t),JSON.stringify(A,U,2)))throw new d(`Workflow run "${C}" already exists`)}else if(i.eventType===`run_started`){if(T){if(T.status===`running`)return{run:T};A=await ar(e,C,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,status:`running`,output:void 0,error:void 0,completedAt:void 0,startedAt:T.startedAt??g,updatedAt:g,attributes:T.attributes})}}else if(i.eventType===`run_completed`&&`eventData`in i){let n=i.eventData;T&&(A=await ar(e,C,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`completed`,output:n.output,error:void 0,completedAt:g,updatedAt:g,attributes:T.attributes}),await Promise.all([Wn(e,C),ir(e,C)]))}else if(i.eventType===`run_failed`&&`eventData`in i){let n=i.eventData;T&&(A=await ar(e,C,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`failed`,output:void 0,error:n.error,errorCode:n.errorCode,completedAt:g,updatedAt:g,attributes:T.attributes}),await Promise.all([Wn(e,C),ir(e,C)]))}else if(i.eventType===`run_cancelled`)T&&(A=await ar(e,C,t,{runId:T.runId,deploymentId:T.deploymentId,workflowName:T.workflowName,specVersion:T.specVersion,executionContext:T.executionContext,input:T.input,createdAt:T.createdAt,expiredAt:T.expiredAt,startedAt:T.startedAt,status:`cancelled`,output:void 0,error:void 0,completedAt:g,updatedAt:g,attributes:T.attributes}),await Promise.all([Wn(e,C),ir(e,C)]));else if(i.eventType===`attr_set`&&T)A=await qn(C,async()=>{let n=await G(V(e,`runs`,C,t),E);if(!n)throw new p(C);if(re(i.eventData.changes,{existingKeys:Object.keys(n.attributes),allowReservedAttributes:i.eventData.allowReservedAttributes===!0}),i.correlationId&&i.eventData.writer.type===`workflow`&&!await q(B(e,`.locks`,`attributes`,t?`${C}-${i.correlationId}.created.${t}`:`${C}-${i.correlationId}.created`),``))throw new d(`Attribute event "${i.correlationId}" already exists`);let r={...n,attributes:v(n.attributes,i.eventData.changes),updatedAt:g};return await W(V(e,`runs`,C,t),r,{overwrite:!0}),r});else if(i.eventType===`step_created`&&`eventData`in i){if(!await q(B(e,`.locks`,`steps`,t?`${C}-${i.correlationId}.created.${t}`:`${C}-${i.correlationId}.created`),``))throw new d(`Step "${i.correlationId}" already created`);let n=i.eventData;M={runId:C,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:g,updatedAt:g,specVersion:w},await W(V(e,`steps`,`${C}-${i.correlationId}`,t),M)}else if(i.eventType===`step_started`){if(!O&&D){let n=i.eventData;if(await q(B(e,`.locks`,`steps`,t?`${C}-${i.correlationId}.created.${t}`:`${C}-${i.correlationId}.created`),``)){let r={runId:C,stepId:i.correlationId,stepName:n.stepName,status:`pending`,input:n.input,output:void 0,error:void 0,attempt:0,startedAt:void 0,completedAt:void 0,createdAt:g,updatedAt:g,specVersion:w};await W(V(e,`steps`,`${C}-${i.correlationId}`,t),r);let a=`evnt_${dn()}`,o={eventType:`step_created`,runId:C,eventId:a,createdAt:g,specVersion:w,correlationId:i.correlationId,eventData:{stepName:n.stepName,input:n.input}};await W(V(e,`events`,`${C}-${a}`,t),o),O=r,fe=!0}else throw new d(`Step "${i.correlationId}" already created`)}if(O){if(O.retryAfter&&O.retryAfter.getTime()>Date.now())throw new l(`Cannot start step "${i.correlationId}": retryAfter timestamp has not been reached yet`,{retryAfter:Math.ceil((O.retryAfter.getTime()-Date.now())/1e3)});let n=`${C}-${i.correlationId}`,r=await H(e,`steps`,n,ee,t);if(r&&se(r.status))throw new d(`Cannot modify step in terminal state "${r.status}"`);M={...O,status:`running`,startedAt:O.startedAt??g,attempt:O.attempt+1,retryAfter:void 0,updatedAt:g},await W(V(e,`steps`,n,t),M,{overwrite:!0})}}else if(i.eventType===`step_completed`&&`eventData`in i){let n=i.eventData;if(O){let r=`${C}-${i.correlationId}`;if(!await q(B(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new d(`Cannot modify step in terminal state`);M={...O,status:`completed`,output:n.result,completedAt:g,updatedAt:g},await W(V(e,`steps`,r,t),M,{overwrite:!0})}}else if(i.eventType===`step_failed`&&`eventData`in i){let n=i.eventData;if(O){let r=`${C}-${i.correlationId}`;if(!await q(B(e,`.locks`,`steps`,t?`${r}.terminal.${t}`:`${r}.terminal`),``))throw new d(`Cannot modify step in terminal state`);M={...O,status:`failed`,error:n.error,completedAt:g,updatedAt:g},await W(V(e,`steps`,r,t),M,{overwrite:!0})}}else if(i.eventType===`step_retrying`&&`eventData`in i){let n=i.eventData;if(O){let r=`${C}-${i.correlationId}`;M={...O,status:`pending`,error:n.error,retryAfter:n.retryAfter,updatedAt:g},await W(V(e,`steps`,r,t),M,{overwrite:!0})}}else if(i.eventType===`hook_created`&&`eventData`in i){let n=i.eventData,r=cn(e,n.token),s=JSON.stringify({token:n.token,hookId:i.correlationId,runId:C,eventId:o}),c=!1,l=null,u=0,f=0;for(let a=0;a<10&&(await Zn(r)||await Vn(e,n.token,t),c=await q(r,s),!c);a++){if(l=await Zn(r),!l){f++,f>=3&&await K(r);continue}if(l.runId===C&&l.hookId===i.correlationId||!await Qn(e,l,t))break;u++,u<3?await new Promise(e=>setTimeout(e,10)):(await K(r),l.hookId&&(await K(V(e,`hooks`,l.hookId,t)),await K(un(e,n.token,l.runId,l.hookId)))),l=null}let p=!1;if(!c)if(l?.runId===C&&l.hookId===i.correlationId){let r;if(l.eventId)r=l.eventId;else{let a=await er(e,C,i.correlationId);if(a!==null)throw await tr(e,C,i.correlationId,a,t),new d(`Hook "${i.correlationId}" already created`);let s=await nr(e,n.token,C,i.correlationId,o);if(s===null)throw new d(`Hook "${i.correlationId}" already created`);r=s}o=r;let a=le(o.replace(/^evnt_/,``))??g;k={...i,runId:C,eventId:o,createdAt:a,specVersion:w},p=!0}else{let e={eventType:`hook_conflict`,correlationId:i.correlationId,eventData:{token:n.token,...l?{conflictingRunId:l.runId}:{}},runId:C,eventId:o,createdAt:g,specVersion:w};return await oe(e),{event:S(e,a?.resolveData??`all`),run:A,step:M,hook:void 0}}N={runId:C,hookId:i.correlationId,token:n.token,metadata:n.metadata,ownerId:`local-owner`,projectId:`local-project`,environment:`local`,createdAt:k.createdAt,specVersion:w,isWebhook:n.isWebhook??!1,isSystem:n.isSystem??!1},pe=p?{overwrite:!0}:void 0,await bn(e,n.token,C,i.correlationId,o,t)}else if(i.eventType===`hook_disposed`){if(!await q(on(e,i.correlationId,t),``))throw new d(`Hook "${i.correlationId}" already disposed`);let n=V(e,`hooks`,i.correlationId,t),r=await H(e,`hooks`,i.correlationId,j,t);r&&(await ln(e,r.token,r.runId,r.hookId),await K(un(e,r.token,r.runId,r.hookId))),await K(n),await Cn(e,C,i.correlationId,t)}else if(i.eventType===`wait_created`&&`eventData`in i){let n=`${C}-${i.correlationId}`;if(!await q(B(e,`.locks`,`waits`,t?`${n}.created.${t}`:`${n}.created`),``))throw new d(`Wait "${i.correlationId}" already exists`);let r=i.eventData;P={waitId:n,runId:C,status:`waiting`,resumeAt:r.resumeAt,completedAt:void 0,createdAt:g,updatedAt:g,specVersion:w},await W(V(e,`waits`,n,t),P)}else if(i.eventType===`wait_completed`){let n=`${C}-${i.correlationId}`,r=B(e,`.locks`,`waits`,t?`${n}.completed.${t}`:`${n}.completed`);if(!await q(r,``))throw new d(`Wait "${i.correlationId}" already completed`);let a=await H(e,`waits`,n,h,t);if(!a)throw await I.unlink(r).catch(()=>{}),new s(`Wait "${i.correlationId}" not found`);P={...a,status:`completed`,completedAt:g,updatedAt:g},await W(V(e,`waits`,n,t),P,{overwrite:!0})}if(i.eventType===`hook_received`&&i.correlationId&&await sn(e,i.correlationId,t))throw new u(i.correlationId);let F=V(e,`events`,`${C}-${o}`,t),me=JSON.stringify(k,U,2);if(!await q(F,me))throw i.eventType===`hook_created`&&i.correlationId&&await tr(e,C,i.correlationId,o,t),new d(`Event "${o}" already exists for run "${C}"`);ae(k,F,me),N&&i.eventType===`hook_created`&&(await Sn(e,N.runId,N.hookId,t),await W(V(e,`hooks`,N.hookId,t),N,pe));let he=a?.resolveData??`all`,ge=S(k,he),L,_e,ve;if(i.eventType===`run_started`&&A){let t=await Y({directory:R.join(e,`events`),schema:x,cachedItems:r,filePrefix:`${C}-`,sortOrder:`asc`,limit:1e3,getCreatedAt:$(`evnt`),getId:e=>e.eventId});L=t.data,_e=t.cursor,ve=t.hasMore}if(_(i.eventType)&&typeof a?.sinceCursor==`string`){let t=await Y({directory:R.join(e,`events`),schema:x,filePrefix:`${C}-`,sortOrder:`asc`,cursor:a.sinceCursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});L=he===`none`?t.data.map(e=>S(e,he)):t.data,_e=t.cursor,ve=t.hasMore}return{event:ge,run:A,step:M,hook:N,wait:P,events:L,cursor:_e,hasMore:ve,...fe?{stepCreated:!0}:{}}}},async get(n,r,i){z(`runId`,n),z(`eventId`,r);let a=await H(e,`events`,`${n}-${r}`,x,t);if(!a)throw Error(`Event ${r} in run ${n} not found`);return S(a,i?.resolveData??`all`)},async list(t){let{runId:n}=t;z(`runId`,n);let i=t.resolveData??`all`,a=await Y({directory:R.join(e,`events`),schema:x,cachedItems:r,filePrefix:`${n}-`,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>S(e,i))}:a},async listByCorrelationId(t){let n=t.correlationId;z(`correlationId`,n);let i=t.resolveData??`all`,a=await Y({directory:R.join(e,`events`),schema:x,cachedItems:r,filter:e=>e.correlationId===n,sortOrder:t.pagination?.sortOrder??`asc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`evnt`),getId:e=>e.eventId});return i===`none`?{...a,data:a.data.map(e=>S(e,i))}:a}}}function sr(e,t){return{get:(async(n,r,i)=>{z(`runId`,n),z(`stepId`,r);let a=await H(e,`steps`,`${n}-${r}`,ee,t);if(!a)throw Error(`Step ${r} in run ${n} not found`);return Nn(a,i?.resolveData??`all`)}),list:(async t=>{z(`runId`,t.runId);let n=t.resolveData??`all`,r=await Y({directory:R.join(e,`steps`),schema:ee,filePrefix:`${t.runId}-`,sortOrder:t.pagination?.sortOrder??`desc`,limit:t.pagination?.limit,cursor:t.pagination?.cursor,getCreatedAt:$(`step`),getId:e=>e.stepId});return n===`none`?{...r,data:r.data.map(e=>({...e,input:void 0,output:void 0}))}:r})}}function cr(e,t){let n=Jn(e,t),r=sr(e,t),i=or(e,t),a=Un(e,t);return{runs:qt(`world.runs`,n),steps:qt(`world.steps`,r),events:qt(`world.events`,i),hooks:qt(`world.hooks`,a),clearCache:()=>i.clearCache()}}const lr=D(()=>Math.random()),ur=O({streams:ae(T())});function dr(e){return e===1}function fr(e){let t=Buffer.from([+!!e.eof]);return Buffer.concat([t,e.chunk])}function pr(e){return dr(e[0])}function mr(e){return{eof:pr(e),chunk:Buffer.from(e.subarray(1))}}async function hr(e){try{return await I.readdir(e)}catch(e){if(e.code===`ENOENT`)return[];throw e}}function gr(e,t,n,r=n,i=()=>!0){for(let a of t){if(!a.endsWith(n))continue;let t=a.slice(0,-n.length);i(t)&&e.set(t,r)}}function _r(e,t){return z(`streamName`,t),R.join(e,t)}async function vr(e,t,n){let r=_r(e,t),i=await hr(r),a=new Map;return gr(a,i,`.json`),gr(a,i,`.bin`,`.bin`,n?e=>!e.endsWith(`.${n}`):void 0),n&&gr(a,i,`.${n}.bin`),{files:[...a.keys()].sort(),extMap:a,dir:r}}function yr(e,t){let n=t?`.${t}`:``,r=new we,i=new Set;async function a(n,r){z(`runId`,n),z(`streamName`,r);let a=`${n}:${r}`;if(i.has(a))return;let o=V(e,`streams/runs`,n,t),s=(await H(e,`streams/runs`,n,ur,t))?.streams??[];s.includes(r)||(s.push(r),await W(o,{streams:s},{overwrite:!0})),i.add(a)}function o(e){return typeof e==`string`?Buffer.from(new TextEncoder().encode(e)):e instanceof Buffer?e:Buffer.from(e)}return{streams:{async write(t,i,s){let c=`chnk_${lr()}`;await a(await t,i);let l=o(s),u=fr({chunk:l,eof:!1});await st(R.join(_r(R.join(e,`streams`,`chunks`),i),`${c}${n}.bin`),u);let d=Uint8Array.from(l);r.emit(`chunk:${i}`,{streamName:i,chunkData:d,chunkId:c})},async writeMulti(t,i,s){if(s.length===0)return;let c=s.map(()=>`chnk_${lr()}`);await a(await t,i);let l=s.map(e=>o(e)).map(async(t,r)=>{let a=c[r],o=fr({chunk:t,eof:!1});return await st(R.join(_r(R.join(e,`streams`,`chunks`),i),`${a}${n}.bin`),o),{chunkId:a,chunkData:Uint8Array.from(t)}});for(let e of l){let{chunkId:t,chunkData:n}=await e;r.emit(`chunk:${i}`,{streamName:i,chunkData:n,chunkId:t})}},async close(t,i){let o=`chnk_${lr()}`;await a(await t,i),await st(R.join(_r(R.join(e,`streams`,`chunks`),i),`${o}${n}.bin`),fr({chunk:Buffer.from([]),eof:!0})),r.emit(`close:${i}`,{streamName:i})},async list(n){return z(`runId`,n),(await H(e,`streams/runs`,n,ur,t))?.streams??[]},async getChunks(n,r,i){let a=i?.limit??100,{files:o,extMap:s,dir:c}=await vr(R.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=R.join(c,`${e}${t}`);if(f<l){if(dr(await lt(n))){u=!0;break}f++;continue}if(d.length>=a){dr(await lt(n))?u=!0:f++;break}let r=mr(await ct(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 vr(R.join(e,`streams`,`chunks`),r,t),s=!1,c=0;for(let e of i){let t=a.get(e)??`.bin`;if(dr(await lt(R.join(o,`${e}${t}`)))){s=!0;break}c++}return{tailIndex:c-1,done:s}},async get(n,i,a=0){let o=R.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 vr(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`;dr(await lt(R.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=mr(await ct(R.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 vr(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=mr(await ct(R.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 br(e){let t=e?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):{},n={...Be.value,...t},r=n.tag,i=rn(n),{clearCache:a,...o}=cr(n.dataDir,r),s=Ve(n);return{specVersion:5,...i,...o,...qt(`world.streams`,{...yr(n.dataDir,r),...n.streamFlushIntervalMs!==void 0&&{streamFlushIntervalMs:n.streamFlushIntervalMs}}),async start(){if(await Et(n.dataDir),!s)return;let e=r?e=>et(e,r):tt;await A({...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=R.join(e,`hooks`),i=await nt(t,r),{HookSchema:a}=await import(`../../_chunks/workflow/dist-CSfKNxQW.js`).then(e=>e.t);await Promise.all(i.map(async n=>{let r=await G(R.join(t,n),a);r?.token&&(await K(R.join(t,`tokens`,`${an(r.token)}.json`)),await K(un(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=R.join(e,t),i=await nt(n,r);await Promise.all(i.map(e=>K(R.join(n,e))))}));for(let t of[`token-index`,`id-index`]){let n=R.join(e,`hooks`,t),i;try{i=await F.readdir(n,{withFileTypes:!0})}catch{i=[]}await Promise.all(i.filter(e=>e.isDirectory()).map(async e=>{let t=R.join(n,e.name),i=await nt(t,r);await Promise.all(i.map(e=>K(R.join(t,e))))}))}await F.rm(R.join(e,`.locks`),{recursive:!0,force:!0}).catch(()=>{});let o=R.join(e,`streams`,`chunks`),s;try{s=await F.readdir(o,{withFileTypes:!0})}catch{s=[]}await Promise.all(s.filter(e=>e.isDirectory()).map(async e=>{let t=R.join(o,e.name),n=await rt(t,r,`.bin`);await Promise.all(n.map(e=>F.unlink(R.join(t,e)).catch(()=>{})))})),Ze()}else Ze(),Dn(),await ye(n.dataDir,{recursive:!0,force:!0}),await Et(n.dataDir)}}}function xr(e){return br(e)}export{gt as DataDirAccessError,_t as DataDirVersionError,xr as createLocalWorld,br as createWorld,St as ensureDataDir,Et as initDataDir,vt as parseVersion};