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