@enfyra/kernel 1.1.53 → 1.1.55

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/README.md CHANGED
@@ -30,15 +30,22 @@ container.register({
30
30
 
31
31
  ## Executor lane tuning
32
32
 
33
- The executor selects up to two runner processes and sizes isolate lanes from the
34
- effective CPU and memory limits. CPU establishes a baseline of two lanes per
35
- effective CPU and a flexible ceiling of four lanes per effective CPU. Available
36
- RAM can raise the target from the baseline toward that ceiling. The memory bound
37
- uses its raw safe lane count, reserving at most 25% of effective memory for
38
- isolate limits, with an absolute ceiling of 128 lanes per runner.
39
-
40
- Run `yarn bench:executor-lanes` on the target hardware to sweep candidate lane
41
- counts using I/O-bound and CPU-bound scripts, while also verifying that
42
- cancelling one task does not interrupt a sibling lane. Use the smallest count
43
- whose I/O p95 has plateaued and whose CPU p95, runner RSS, and heap ratio remain
33
+ The executor selects up to two runner processes and sizes physical isolate lanes
34
+ from the effective CPU and memory limits. CPU establishes a baseline of two
35
+ lanes per effective CPU and a flexible ceiling of four lanes per effective CPU.
36
+ Available RAM can raise the target from the baseline toward that ceiling. The
37
+ memory bound uses its raw safe lane count, reserving at most 25% of effective
38
+ memory for isolate limits, with an absolute ceiling of 128 lanes per runner.
39
+
40
+ Each physical isolate admits up to six concurrent task contexts. This bounded
41
+ multiplexing raises I/O throughput without recreating the old all-or-nothing
42
+ worker failure domain: cancellation, native execution timeout, or isolate OOM
43
+ disposes the affected isolate and fails only its sibling tasks with
44
+ `ERR_EXECUTOR_ISOLATE_LOST`. The runner stays available for new work. This is a
45
+ kernel policy, not a deployment environment setting.
46
+
47
+ Run `yarn bench:executor-lanes --tasks-per-isolate 1,2,4,8` on the target
48
+ hardware to sweep physical lane counts and task fan-in using I/O-bound and
49
+ CPU-bound scripts. Use the smallest fan-in whose I/O queue wait has materially
50
+ improved while CPU p95, runner RSS, and the isolate failure blast radius remain
44
51
  within the deployment budget.
@@ -1,4 +1,4 @@
1
- "use strict";var ee=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ne=ee((Qe,te)=>{"use strict";var{fork:be}=require("child_process"),Pe=require("path");function xe({workerDir:e,activeTaskContexts:t}){let a=new Map,r=new Map,n=new Map,l=new Map,s=null,y=0,p=1e3;function k(c){return Math.max(1,Math.trunc(Number(c)||3e4))}function w(c,o,i){let f=new Error(c);return f.code=o,f.details=i,f}function P(c,o){for(let[i,f]of r)f.child===c&&(clearTimeout(f.timer),r.delete(i),n.delete(i),f.reject(o))}function u(c){for(let[o,i]of l)i.child===c&&(clearTimeout(i.timer),l.delete(o))}function d(c,o){if(!c.connected)return;let i=`cancel_${++y}`,f=setTimeout(()=>{l.delete(i);try{c.kill()}catch{}},p);f.unref?.(),l.set(i,{child:c,timer:f});try{c.send({op:"cancelTask",taskId:o,id:i})}catch{clearTimeout(f),l.delete(i);try{c.kill()}catch{}}}function v(c){let o=typeof c=="string"?JSON.parse(c):c;if(o?.error)throw new Error(o.error);return o?.value}async function h(c){let o=t.get(c.taskId);if(!o)throw new Error(`Package callback context not found: ${c.taskId}`);let i=JSON.stringify(c.callbackId),f=JSON.stringify(c.argsJson||"[]"),m=await o.evalClosure(`return __invokeRuntimeCallback(${i}, ${f});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}});return v(m)}function b(){if(s&&s.connected)return s;let c=Pe.join(e,"package-runtime.child.js"),o=be(c,[],{stdio:["ignore","ignore","ignore","ipc"],env:{PATH:process.env.PATH||"",HOME:process.env.HOME||"",NODE_ENV:process.env.NODE_ENV||"production",TMPDIR:process.env.TMPDIR||"",LANG:process.env.LANG||""}});return s=o,o.on("message",i=>{if(!i||!i.id)return;if(i.type==="pkgStreamChunk"){let m=n.get(i.id);if(!m)return;m.onChunk(Buffer.from(i.chunk||"","base64")).then(()=>{try{o.send({type:"pkgStreamAck",ackId:i.ackId})}catch{}}).catch(I=>{try{o.send({type:"pkgStreamError",ackId:i.ackId,error:{message:I.message,stack:I.stack}})}catch{}});return}if(i.type==="taskCancelled"){let m=l.get(i.id);if(!m||m.child!==o)return;clearTimeout(m.timer),l.delete(i.id);return}if(i.type==="pkgCallbackCall"){h(i).then(m=>{try{o.send({type:"pkgCallbackResult",id:i.id,value:m})}catch{}}).catch(m=>{try{o.send({type:"pkgCallbackError",id:i.id,error:{message:m.message,stack:m.stack}})}catch{}});return}let f=r.get(i.id);if(f)if(clearTimeout(f.timer),r.delete(i.id),n.delete(i.id),i.ok)f.resolve(i.value);else{i.error?.code==="ERR_PACKAGE_RUNTIME_TIMEOUT"&&d(o,f.taskId);let m=w(i.error?.message||"Package runtime call failed",i.error?.code,i.error?.details);m.stack=i.error?.stack||m.stack,f.reject(m)}}),o.on("exit",(i,f)=>{s===o&&(s=null),u(o),P(o,w(`Package runtime exited${f?` with signal ${f}`:` with code ${i}`}`,"ERR_PACKAGE_RUNTIME_LOST",{outcome:"unknown_outcome",retryable:!1}))}),o.on("error",i=>{s===o&&(s=null),u(o),P(o,w(i.message,"ERR_PACKAGE_RUNTIME_LOST",{outcome:"unknown_outcome",retryable:!1}))}),o}function R(c){return new Promise((o,i)=>{let f=b(),m=`pkg_${++y}`,I=k(c.timeoutMs),N=setTimeout(()=>{r.delete(m),n.delete(m),d(f,c.taskId),i(w(`Package runtime call timed out after ${I}ms`,"ERR_PACKAGE_RUNTIME_TIMEOUT",{outcome:"unknown_outcome",retryable:!1}))},I);r.set(m,{child:f,taskId:c.taskId,resolve:o,reject:i,timer:N});try{f.send({...c,id:m},E=>{E&&(clearTimeout(N),r.delete(m),i(E))})}catch(E){clearTimeout(N),r.delete(m),i(E)}})}function S(c,o,i,f=[],m=3e4){return new Promise((I,N)=>{let E=b(),T=`pkg_${++y}`,Y=k(m),Z=setTimeout(()=>{r.delete(T),n.delete(T),d(E,c),N(w(`Package runtime stream timed out after ${Y}ms`,"ERR_PACKAGE_RUNTIME_TIMEOUT",{outcome:"unknown_outcome",retryable:!1}))},Y);r.set(T,{child:E,taskId:c,resolve:I,reject:N,timer:Z}),n.set(T,{onChunk:i});try{E.send({op:"streamHandle",taskId:c,handleId:o,path:f,id:T,timeoutMs:Y},G=>{G&&(clearTimeout(Z),r.delete(T),n.delete(T),N(G))})}catch(G){clearTimeout(Z),r.delete(T),n.delete(T),N(G)}})}function _(c){try{if(!s||!s.connected)return;s.send({...c,id:`pkg_${++y}`,fire:!0})}catch{}}function O(c){try{if(!s||!s.connected)return;d(s,c)}catch{}}async function g(c,o){let i=a.get(c);if(!i)throw new Error("Package context is not available");if(o.handleId)return R({op:o.kind==="get"?"handleGet":"handleCall",taskId:c,handleId:o.handleId,path:o.path||[],argsJson:o.argsJson||"[]",timeoutMs:o.timeoutMs});let f=i.get(o.packageName);if(!f)throw new Error(`Package "${o.packageName}" is not available`);return R({op:o.kind==="construct"?"construct":"call",taskId:c,packageName:o.packageName,package:{name:f.name,fileUrl:f.fileUrl},path:o.path||[],argsJson:o.argsJson||"[]",timeoutMs:o.timeoutMs})}function x(c,o){a.set(c,o)}function $(c){a.delete(c),_({op:"releaseTask",taskId:c})}function J(){if(s){try{s.kill()}catch{}s=null}}return{cleanupTaskPackages:$,cancelTask:O,executePackageRuntimeCall:g,setTaskPackages:x,streamPackageHandle:S,shutdownPackageRuntime:J}}te.exports={createPackageRuntimeBridge:xe}});var ae=ee((et,re)=>{"use strict";var Se=`
1
+ "use strict";var ne=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ae=ne((et,re)=>{"use strict";var{fork:Pe}=require("child_process"),xe=require("path");function Ce({workerDir:e,activeTaskContexts:t}){let a=new Map,n=new Map,r=new Map,o=new Map,i=null,h=0,_=1e3;function m(l){return Math.max(1,Math.trunc(Number(l)||3e4))}function v(l,s,c){let f=new Error(l);return f.code=s,f.details=c,f}function R(l,s){for(let[c,f]of n)f.child===l&&(clearTimeout(f.timer),n.delete(c),r.delete(c),f.reject(s))}function d(l){for(let[s,c]of o)c.child===l&&(clearTimeout(c.timer),o.delete(s))}function u(l,s){if(!l.connected)return;let c=`cancel_${++h}`,f=setTimeout(()=>{o.delete(c);try{l.kill()}catch{}},_);f.unref?.(),o.set(c,{child:l,timer:f});try{l.send({op:"cancelTask",taskId:s,id:c})}catch{clearTimeout(f),o.delete(c);try{l.kill()}catch{}}}function k(l){let s=typeof l=="string"?JSON.parse(l):l;if(s?.error)throw new Error(s.error);return s?.value}async function b(l){let s=t.get(l.taskId);if(!s)throw new Error(`Package callback context not found: ${l.taskId}`);let c=JSON.stringify(l.callbackId),f=JSON.stringify(l.argsJson||"[]"),y=await s.evalClosure(`return __invokeRuntimeCallback(${c}, ${f});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}});return k(y)}function w(){if(i&&i.connected)return i;let l=xe.join(e,"package-runtime.child.js"),s=Pe(l,[],{stdio:["ignore","ignore","ignore","ipc"],env:{PATH:process.env.PATH||"",HOME:process.env.HOME||"",NODE_ENV:process.env.NODE_ENV||"production",TMPDIR:process.env.TMPDIR||"",LANG:process.env.LANG||""}});return i=s,s.on("message",c=>{if(!c||!c.id)return;if(c.type==="pkgStreamChunk"){let y=r.get(c.id);if(!y)return;y.onChunk(Buffer.from(c.chunk||"","base64")).then(()=>{try{s.send({type:"pkgStreamAck",ackId:c.ackId})}catch{}}).catch(T=>{try{s.send({type:"pkgStreamError",ackId:c.ackId,error:{message:T.message,stack:T.stack}})}catch{}});return}if(c.type==="taskCancelled"){let y=o.get(c.id);if(!y||y.child!==s)return;clearTimeout(y.timer),o.delete(c.id);return}if(c.type==="pkgCallbackCall"){b(c).then(y=>{try{s.send({type:"pkgCallbackResult",id:c.id,value:y})}catch{}}).catch(y=>{try{s.send({type:"pkgCallbackError",id:c.id,error:{message:y.message,stack:y.stack}})}catch{}});return}let f=n.get(c.id);if(f)if(clearTimeout(f.timer),n.delete(c.id),r.delete(c.id),c.ok)f.resolve(c.value);else{c.error?.code==="ERR_PACKAGE_RUNTIME_TIMEOUT"&&u(s,f.taskId);let y=v(c.error?.message||"Package runtime call failed",c.error?.code,c.error?.details);y.stack=c.error?.stack||y.stack,f.reject(y)}}),s.on("exit",(c,f)=>{i===s&&(i=null),d(s),R(s,v(`Package runtime exited${f?` with signal ${f}`:` with code ${c}`}`,"ERR_PACKAGE_RUNTIME_LOST",{outcome:"unknown_outcome",retryable:!1}))}),s.on("error",c=>{i===s&&(i=null),d(s),R(s,v(c.message,"ERR_PACKAGE_RUNTIME_LOST",{outcome:"unknown_outcome",retryable:!1}))}),s}function x(l){return new Promise((s,c)=>{let f=w(),y=`pkg_${++h}`,T=m(l.timeoutMs),E=setTimeout(()=>{n.delete(y),r.delete(y),u(f,l.taskId),c(v(`Package runtime call timed out after ${T}ms`,"ERR_PACKAGE_RUNTIME_TIMEOUT",{outcome:"unknown_outcome",retryable:!1}))},T);n.set(y,{child:f,taskId:l.taskId,resolve:s,reject:c,timer:E});try{f.send({...l,id:y},O=>{O&&(clearTimeout(E),n.delete(y),c(O))})}catch(O){clearTimeout(E),n.delete(y),c(O)}})}function C(l,s,c,f=[],y=3e4){return new Promise((T,E)=>{let O=w(),N=`pkg_${++h}`,Q=m(y),ee=setTimeout(()=>{n.delete(N),r.delete(N),u(O,l),E(v(`Package runtime stream timed out after ${Q}ms`,"ERR_PACKAGE_RUNTIME_TIMEOUT",{outcome:"unknown_outcome",retryable:!1}))},Q);n.set(N,{child:O,taskId:l,resolve:T,reject:E,timer:ee}),r.set(N,{onChunk:c});try{O.send({op:"streamHandle",taskId:l,handleId:s,path:f,id:N,timeoutMs:Q},W=>{W&&(clearTimeout(ee),n.delete(N),r.delete(N),E(W))})}catch(W){clearTimeout(ee),n.delete(N),r.delete(N),E(W)}})}function D(l){try{if(!i||!i.connected)return;i.send({...l,id:`pkg_${++h}`,fire:!0})}catch{}}function p(l){try{if(!i||!i.connected)return;u(i,l)}catch{}}async function H(l,s){let c=a.get(l);if(!c)throw new Error("Package context is not available");if(s.handleId)return x({op:s.kind==="get"?"handleGet":"handleCall",taskId:l,handleId:s.handleId,path:s.path||[],argsJson:s.argsJson||"[]",timeoutMs:s.timeoutMs});let f=c.get(s.packageName);if(!f)throw new Error(`Package "${s.packageName}" is not available`);return x({op:s.kind==="construct"?"construct":"call",taskId:l,packageName:s.packageName,package:{name:f.name,fileUrl:f.fileUrl},path:s.path||[],argsJson:s.argsJson||"[]",timeoutMs:s.timeoutMs})}function g(l,s){a.set(l,s)}function P(l){a.delete(l),D({op:"releaseTask",taskId:l})}function $(){if(i){try{i.kill()}catch{}i=null}}return{cleanupTaskPackages:P,cancelTask:p,executePackageRuntimeCall:H,setTaskPackages:g,streamPackageHandle:C,shutdownPackageRuntime:$}}re.exports={createPackageRuntimeBridge:Ce}});var oe=ne((tt,se)=>{"use strict";var Se=`
2
2
  "use strict";
3
3
  let $ctx = {};
4
4
  let $pkgs = {};
@@ -949,48 +949,48 @@ function __cleanupTask() {
949
949
  __pendingRuntimeTasks = [];
950
950
  return true;
951
951
  }
952
- `;function Ce(e){return Se.replace("%%PKG_SETUP%%",e)}re.exports={buildSetupCode:Ce}});var{parentPort:Re}=require("worker_threads"),C=Re||{on(e,t){e==="message"&&process.on("message",t)},postMessage(e){process.send?.(e)}},se=require("fs"),{fileURLToPath:$e}=require("url"),{createPackageRuntimeBridge:Me}=ne(),{buildSetupCode:Te}=ae(),V;try{V=require("isolated-vm")}catch(e){C.postMessage({type:"error",message:"isolated-vm not available: "+e.message}),process.exit(1)}var q=new Map,de=0,D=new Map,H=new Map,L=new Map,F=Me({workerDir:__dirname,activeTaskContexts:D}),Ae=500,Ne=5e3,Ee=1,oe=new WeakMap,fe=new WeakMap,pe=new WeakMap,K={created:0,reused:0,released:0,evicted:0,scrubFailed:0};function B(e){let t=L.get(e);return Math.max(1,Math.ceil((t??Date.now()+3e4)-Date.now()))}var M=null,ie=0,ce=0,le=0;async function Oe(){let e=Date.now();if(e-ce<Ne)return le;if(ce=e,!M)return 0;let t=0;for(let a of M){let r=a?.isolate;if(!(!r||r.isDisposed))try{let n=await r.getHeapStatistics(),l=n.heap_size_limit||1,s=n.used_heap_size/l;s>t&&(t=s)}catch{}}return le=t,t}async function U(e){e.heapRatio=await Oe(),e.runnerRssBytes=process.memoryUsage().rss,e.contextStats=Je(),C.postMessage(e)}function Je(){let e=0;if(M)for(let t of M)e+=t?.idleContexts?.length||0;return{...K,idle:e}}function _e(e,t){if(!M){let a=Math.max(1,Math.trunc(Number(t)||8));M=new Array(a).fill(null)}for(let a=0;a<M.length;a++){let r=(ie+a)%M.length,n=M[r];if((!n||!n.isolate||n.isolate.isDisposed)&&(n={isolate:new V.Isolate({memoryLimit:e}),idleContexts:[],taskId:null},M[r]=n),n.taskId==null)return ie=(r+1)%M.length,n}throw new Error("No isolate lane is available")}function Ie(e){F.cancelTask(e);let t=H.get(e);if(!t){C.postMessage({type:"taskCancelled",id:e});return}H.delete(e),D.delete(e),L.delete(e),t.taskId=null,t.idleContexts.length=0;try{t.isolate.dispose()}catch{}X(e),C.postMessage({type:"taskCancelled",id:e})}function ge(e,t){D.delete(e),H.delete(e),L.delete(e),t.taskId=null,X(e),C.postMessage({type:"taskReleased",id:e})}async function A(e,t,a){let r=oe.get(e);r||(r=new Map,oe.set(e,r));let n=r.get(t);if(n)return n;let l;try{l=await e.compileScript(t,{filename:a})}catch(s){throw s&&typeof s=="object"&&(s.executionStage="compile"),s}if(r.set(t,l),r.size>Ae){let s=r.keys().next().value;r.delete(s)}return l}C.on("message",async e=>{if(e.type==="execute")ze(e).catch(async t=>{await U({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="executeBatch")Xe(e).catch(async t=>{await U({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="invokeRuntimeCallback")je(e).catch(t=>{C.postMessage({type:"runtimeCallbackResult",callId:e.callId,error:t?.message||String(t)})});else if(e.type==="callResult"){let t=q.get(e.callId);t&&(q.delete(e.callId),t.resolve(e.result))}else if(e.type==="callError"){let t=q.get(e.callId);t&&(q.delete(e.callId),t.reject(new Error(e.error)))}else e.type==="cancelTask"&&Ie(e.id)});async function je(e){let t=D.get(e.id);if(!t){C.postMessage({type:"runtimeCallbackResult",callId:e.callId,error:`Runtime callback context not found: ${e.id}`});return}let a=await t.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(e.callbackId)}, ${JSON.stringify(e.argsJson||"[]")});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),r=JSON.parse(a);C.postMessage({type:"runtimeCallbackResult",callId:e.callId,...r})}function j(e,t,a){return new Promise((r,n)=>{let l=`cb_${++de}`;q.set(l,{resolve:r,reject:n}),C.postMessage({type:t,id:e,callId:l,...a})})}function Ue(e,t,a){C.postMessage({type:t,id:e,callId:`f_${++de}`,...a})}async function He(e,t){if(t?.method!=="stream")return j(e,"resCall",t);let a=JSON.parse(t.argsJson||"[]"),r=a[0],n=a[1]||{},l=r?.__pkgHandleArg;if(!l)return j(e,"resCall",t);let s=n.observer&&typeof n.observer=="object"?n.observer.__fnRef:null,y=n.transform&&typeof n.transform=="object"?n.transform.__fnRef:null,p=s||y?new TextDecoder("utf-8"):null;delete n.observer,delete n.transform;let k={...n};await j(e,"resCall",{method:"streamStart",argsJson:JSON.stringify([null,k])});let w=async(d,v,h)=>{if(!d)return;let b=D.get(e);if(!b)return;let R=await b.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(d)}, ${JSON.stringify(JSON.stringify([v,h]))});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),S=JSON.parse(R);if(S?.error)throw new Error(S.error);if(S?.value?.__e!=="u")return S?.value},P=async(d,v)=>{if(s)try{await w(s,d,v)}catch{}},u=async(d,v,h)=>{let b=d;if(y){let S=await w(y,h,v);if(S===null)return;S!==void 0&&(b=Buffer.from(String(S)))}let R=Buffer.from(b);R.length!==0&&await j(e,"resCall",{method:"streamChunk",chunk:R.toString("base64")})};try{await F.streamPackageHandle(e,l,async v=>{let h="";try{h=p?p.decode(Buffer.from(v),{stream:!0}):""}catch{}await P(h,"chunk"),await u(v,"chunk",h)},[],B(e));let d="";try{d=p?p.decode():""}catch{}await P(d,"end"),await u("","end",d),await j(e,"resCall",{method:"streamEnd"})}catch(d){try{await j(e,"resCall",{method:"streamError",error:{message:d.message,stack:d.stack}})}catch{}throw await P("","error"),d}return JSON.stringify({__e:"u"})}function Le(e){if(typeof e.sourceCode=="string"&&e.sourceCode.length>0)return e.sourceCode;let t=e.filePath;return!t&&typeof e.fileUrl=="string"&&e.fileUrl.startsWith("file://")&&(t=$e(e.fileUrl)),!t||!se.existsSync(t)?null:se.readFileSync(t,"utf8")}async function Fe(e,t,a){try{let r=Le(a);if(!r)return null;let n=await e.compileModule(r,{filename:`pkg:${a.safeName}`});await n.instantiate(t,s=>{throw new Error(`Unresolved import in package ${a.safeName}: ${s}`)}),await n.evaluate({timeout:1e4});let l=await n.namespace.get("default");return l!==void 0&&l.typeof!=="undefined"?l.derefInto({release:!1}):n.namespace.derefInto({release:!1})}catch{return null}}function ye(e,t){let a=n=>{let l=2166136261;for(let s=0;s<n.length;s++)l^=n.charCodeAt(s),l=Math.imul(l,16777619);return(l>>>0).toString(36)},r=new Set(t||[]);return e.map(n=>{let l=n.cacheKey||`${n.filePath||""}:${n.fileUrl||""}:${n.mtimeMs||""}:${n.size||""}:${a(n.sourceCode||"")}`,s=r.has(n.name)?"isolate":"proxy";return`${n.name}:${n.version||""}:${l}:${s}`}).join("|")}function he(e,t){let a=new Set(t.map(p=>p.name)),r=new Set,n=String(e||""),l=/\b(?:\$ctx\.)?\$pkgs\s*\[\s*(['"`])([^'"`]+)\1\s*\]/g,s=/\brequire\s*\(\s*(['"`])([^'"`]+)\1\s*\)/g,y=/\b(?:\$ctx\.)?\$pkgs\.([A-Za-z_$][\w$]*)/g;for(let p of[l,s])for(let k of n.matchAll(p)){let w=k[2];a.has(w)&&r.add(w)}for(let p of n.matchAll(y)){let k=p[1];a.has(k)&&r.add(k)}return r}async function De(e,t,a,r){let n=await e.createContext(),l=n.global;await l.set("global",l.derefInto());let s=[],y=[],p=new Map;for(let u of a){p.set(u.name,u);let d=r.has(u.name)?await Fe(e,n,u):null;d!==null?(await l.set(`__pkg_${u.safeName}`,d),s.push(u)):y.push(u)}F.setTaskPackages(t,p),await l.set("__callRef",new V.Reference(async(u,d,v)=>{let h=JSON.parse(v);if(d==="pkgCall")try{return JSON.stringify(await F.executePackageRuntimeCall(u,h))}catch(b){throw new Error(JSON.stringify({__userThrow:!0,message:b.message,code:b.code,details:b.details}))}return d==="resCall"?He(u,h):j(u,d,h)})),await l.set("__fireRef",new V.Reference((u,d,v)=>{let h=JSON.parse(v);Ue(u,d,h)}));let k=s.map(u=>`$pkgs[${JSON.stringify(u.name)}] = __pkg_${u.safeName};`).concat(y.map(u=>`$pkgs[${JSON.stringify(u.name)}] = __createPkgProxy(${JSON.stringify(u.name)}, []);`)).join(`
953
- `),w=Te(k);return await(await A(e,w,"setup.js")).run(n,{timeout:B(t)}),fe.set(n,ye(a,r)),pe.set(n,p),n}async function me(e,t,a,r,n,l,s){let y=e.isolate,p=ye(a,n),k=null;for(let u=e.idleContexts.length-1;u>=0;u--){let d=e.idleContexts[u];if(e.idleContexts.splice(u,1),fe.get(d)===p){k=d,K.reused++;break}try{d.release()}catch{}}k||(k=await De(y,t,a,n),K.created++),F.setTaskPackages(t,pe.get(k)||new Map);let w=k.global;return await w.set("__snapshot",new V.ExternalCopy(r).copyInto()),await w.set("__nextTaskId",t),await w.set("__nextTaskTimeoutMs",l),await w.set("__nextTaskDeadlineMs",s),await(await A(y,"__resetTask(__snapshot, __nextTaskId, __nextTaskTimeoutMs, __nextTaskDeadlineMs);","reset-task.js")).run(k,{timeout:B(t)}),k}async function ke(e,t){if(!(!t||e.isolate.isDisposed)){try{await(await A(e.isolate,"__cleanupTask();","cleanup-task.js")).run(t,{timeout:5e3})}catch{K.scrubFailed++;try{t.release()}catch{}return}if(e.idleContexts.length>=Ee){try{t.release()}catch{}K.evicted++;return}e.idleContexts.push(t),K.released++}}function Ke(e){try{let t=JSON.parse(e.message);if(t&&t.__userThrow)return{...t,message:t.message??e.message}}catch{}return null}var Be=3,qe=["setup.js","extract.js","extract-error-ctx.js","set-status.js","populate-error.js"];function Ve(e){if(!e)return null;let t=e.split(`
954
- `);for(let a of t){let r=a.match(/at\s+(.+\.js):(\d+):(\d+)/);if(!r)continue;let n=r[1].trim();if(qe.includes(n)||n!=="handler.js"&&!n.startsWith("preHook #")&&!n.startsWith("postHook #"))continue;let s=parseInt(r[2])-Be;if(!(s<=0))return{line:s,column:parseInt(r[3]),phase:n.replace(".js","")}}return null}function Ge(e,t,a){if(!e||!t)return;let r=String(e).split(/\r?\n/),n=Math.max(1,t-1),l=Math.min(r.length,t+1),s=String(l).length,y=[];for(let p=n;p<=l;p++){let k=p===t?">":" ";y.push(`${k} ${String(p).padStart(s," ")}. ${r[p-1]??""}`),p===t&&a&&a>0&&y.push(` ${" ".repeat(s)} ${" ".repeat(Math.max(0,a-1))}^`)}return y.join(`
955
- `)}function We(e,t){if(!(!e||!t)){if(t[e.phase])return t[e.phase];if(e.phase?.startsWith("preHook"))return t.preHook;if(e.phase?.startsWith("postHook"))return t.postHook}}function Q(e,t){let a=Ke(e);if(a)return{message:a.message,statusCode:a.statusCode,errorPath:a.errorPath,code:a.code,details:a.details};let r=Ve(e.stack),n=e.message||"Unknown error",l=r?`${n} (${r.phase}, line ${r.line})`:n,s=We(r,t),y=r?Ge(s,r.line,r.column):void 0;return{message:l,statusCode:e.statusCode||null,details:{errorName:e.name||null,executionStage:e.executionStage||"runtime",...r?{...r,codeFrame:y}:{}}}}function W(e){return e?.message==="Script execution timed out."}function we(e){return e?.message==="Isolate was disposed during execution due to memory limit"}function ve(e){W(e)&&e?.code==null&&(e.code="ERR_SCRIPT_EXECUTION_TIMEOUT"),we(e)&&e?.code==null&&(e.code="ERR_ISOLATE_MEMORY_LIMIT",e.details={outcome:"unknown_outcome",retryable:!1})}async function z(e,t,a){ve(t);let r=Q(t,a);t.details&&(r.details={...r.details,...t.details}),await U({type:"result",id:e,success:!1,error:{...r,stack:t.stack,code:r.code??t.code}})}async function ze(e){let{id:t,code:a,pkgSources:r,snapshot:n,memoryLimitMb:l,isolatePoolSize:s}=e,y={handler:e.sourceCode||a||""},p=r||[],k=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),w=Date.now()+k;L.set(t,w);let P=he(a,p),u=_e(l,s);u.taskId=t,H.set(t,u);let d=u.isolate,v;try{v=await me(u,t,p,n,P,k,w)}catch(h){L.delete(t),H.delete(t),u.taskId=null,X(t),await z(t,h,y),C.postMessage({type:"taskReleased",id:t});return}D.set(t,v);try{let h=`
952
+ `;function Re(e){return Se.replace("%%PKG_SETUP%%",e)}se.exports={buildSetupCode:Re}});var{parentPort:$e}=require("worker_threads"),S=$e||{on(e,t){e==="message"&&process.on("message",t)},postMessage(e){process.send?.(e)}},ie=require("fs"),{fileURLToPath:Me}=require("url"),{createPackageRuntimeBridge:Te}=ae(),{buildSetupCode:Ne}=oe(),V;try{V=require("isolated-vm")}catch(e){S.postMessage({type:"error",message:"isolated-vm not available: "+e.message}),process.exit(1)}var q=new Map,_e=0,U=new Map,J=new Map,I=new Map,j=Te({workerDir:__dirname,activeTaskContexts:U}),Ae=500,Ee=5e3,Oe=1,ce=new WeakMap,pe=new WeakMap,ge=new WeakMap,K={created:0,reused:0,released:0,evicted:0,scrubFailed:0};function B(e){let t=I.get(e);return Math.max(1,Math.ceil((t??Date.now()+3e4)-Date.now()))}var M=null,le=0,ue=0,de=0;async function Je(){let e=Date.now();if(e-ue<Ee)return de;if(ue=e,!M)return 0;let t=0;for(let a of M){let n=a?.isolate;if(!(!n||n.isDisposed))try{let r=await n.getHeapStatistics(),o=r.heap_size_limit||1,i=r.used_heap_size/o;i>t&&(t=i)}catch{}}return de=t,t}async function F(e){e.heapRatio=await Je(),e.runnerRssBytes=process.memoryUsage().rss,e.contextStats=Ie(),S.postMessage(e)}function Ie(){let e=0;if(M)for(let t of M)e+=t?.idleContexts?.length||0;return{...K,idle:e}}function ye(e,t,a){if(!M){let n=Math.max(1,Math.trunc(Number(t)||8));M=new Array(n).fill(null)}for(let n=0;n<M.length;n++){let r=(le+n)%M.length,o=M[r];if((!o||!o.isolate||o.isolate.isDisposed)&&(o={isolate:new V.Isolate({memoryLimit:e}),idleContexts:[],taskIds:new Set,contextCapacity:a},M[r]=o),o.taskIds.size<a)return le=(r+1)%M.length,o}throw new Error("No isolate lane is available")}function z(e,t,a){for(let n of[...e.taskIds])n!==t&&(e.taskIds.delete(n),J.delete(n),U.delete(n),I.delete(n),j.cancelTask(n),G(n),S.postMessage({type:"result",id:n,success:!1,error:{message:"Isolate was disposed because a sibling task could not continue",code:"ERR_EXECUTOR_ISOLATE_LOST",details:{outcome:"unknown_outcome",retryable:!1,reason:a}}}),S.postMessage({type:"taskReleased",id:n}));e.idleContexts.length=0;try{e.isolate.dispose()}catch{}}function je(e){let t=J.get(e);if(!t){S.postMessage({type:"taskCancelled",id:e});return}z(t,e,"sibling_cancelled"),j.cancelTask(e),J.delete(e),U.delete(e),I.delete(e),t.taskIds.delete(e),G(e),S.postMessage({type:"taskCancelled",id:e})}function he(e,t){t.taskIds.delete(e)&&(U.delete(e),J.delete(e),I.delete(e),G(e),S.postMessage({type:"taskReleased",id:e}))}async function A(e,t,a){let n=ce.get(e);n||(n=new Map,ce.set(e,n));let r=n.get(t);if(r)return r;let o;try{o=await e.compileScript(t,{filename:a})}catch(i){throw i&&typeof i=="object"&&(i.executionStage="compile"),i}if(n.set(t,o),n.size>Ae){let i=n.keys().next().value;n.delete(i)}return o}S.on("message",async e=>{if(e.type==="execute")Xe(e).catch(async t=>{await F({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="executeBatch")Ye(e).catch(async t=>{await F({type:"result",id:e.id,success:!1,error:{message:t.message,stack:t.stack}})});else if(e.type==="invokeRuntimeCallback")Ue(e).catch(t=>{S.postMessage({type:"runtimeCallbackResult",callId:e.callId,error:t?.message||String(t)})});else if(e.type==="callResult"){let t=q.get(e.callId);t&&(q.delete(e.callId),t.resolve(e.result))}else if(e.type==="callError"){let t=q.get(e.callId);t&&(q.delete(e.callId),t.reject(new Error(e.error)))}else e.type==="cancelTask"&&je(e.id)});async function Ue(e){let t=U.get(e.id);if(!t){S.postMessage({type:"runtimeCallbackResult",callId:e.callId,error:`Runtime callback context not found: ${e.id}`});return}let a=await t.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(e.callbackId)}, ${JSON.stringify(e.argsJson||"[]")});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),n=JSON.parse(a);S.postMessage({type:"runtimeCallbackResult",callId:e.callId,...n})}function L(e,t,a){return new Promise((n,r)=>{let o=`cb_${++_e}`;q.set(o,{resolve:n,reject:r}),S.postMessage({type:t,id:e,callId:o,...a})})}function He(e,t,a){S.postMessage({type:t,id:e,callId:`f_${++_e}`,...a})}async function Le(e,t){if(t?.method!=="stream")return L(e,"resCall",t);let a=JSON.parse(t.argsJson||"[]"),n=a[0],r=a[1]||{},o=n?.__pkgHandleArg;if(!o)return L(e,"resCall",t);let i=r.observer&&typeof r.observer=="object"?r.observer.__fnRef:null,h=r.transform&&typeof r.transform=="object"?r.transform.__fnRef:null,_=i||h?new TextDecoder("utf-8"):null;delete r.observer,delete r.transform;let m={...r};await L(e,"resCall",{method:"streamStart",argsJson:JSON.stringify([null,m])});let v=async(u,k,b)=>{if(!u)return;let w=U.get(e);if(!w)return;let x=await w.evalClosure(`return __invokeRuntimeCallback(${JSON.stringify(u)}, ${JSON.stringify(JSON.stringify([k,b]))});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}}),C=JSON.parse(x);if(C?.error)throw new Error(C.error);if(C?.value?.__e!=="u")return C?.value},R=async(u,k)=>{if(i)try{await v(i,u,k)}catch{}},d=async(u,k,b)=>{let w=u;if(h){let C=await v(h,b,k);if(C===null)return;C!==void 0&&(w=Buffer.from(String(C)))}let x=Buffer.from(w);x.length!==0&&await L(e,"resCall",{method:"streamChunk",chunk:x.toString("base64")})};try{await j.streamPackageHandle(e,o,async k=>{let b="";try{b=_?_.decode(Buffer.from(k),{stream:!0}):""}catch{}await R(b,"chunk"),await d(k,"chunk",b)},[],B(e));let u="";try{u=_?_.decode():""}catch{}await R(u,"end"),await d("","end",u),await L(e,"resCall",{method:"streamEnd"})}catch(u){try{await L(e,"resCall",{method:"streamError",error:{message:u.message,stack:u.stack}})}catch{}throw await R("","error"),u}return JSON.stringify({__e:"u"})}function Fe(e){if(typeof e.sourceCode=="string"&&e.sourceCode.length>0)return e.sourceCode;let t=e.filePath;return!t&&typeof e.fileUrl=="string"&&e.fileUrl.startsWith("file://")&&(t=Me(e.fileUrl)),!t||!ie.existsSync(t)?null:ie.readFileSync(t,"utf8")}async function De(e,t,a){try{let n=Fe(a);if(!n)return null;let r=await e.compileModule(n,{filename:`pkg:${a.safeName}`});await r.instantiate(t,i=>{throw new Error(`Unresolved import in package ${a.safeName}: ${i}`)}),await r.evaluate({timeout:1e4});let o=await r.namespace.get("default");return o!==void 0&&o.typeof!=="undefined"?o.derefInto({release:!1}):r.namespace.derefInto({release:!1})}catch{return null}}function me(e,t){let a=r=>{let o=2166136261;for(let i=0;i<r.length;i++)o^=r.charCodeAt(i),o=Math.imul(o,16777619);return(o>>>0).toString(36)},n=new Set(t||[]);return e.map(r=>{let o=r.cacheKey||`${r.filePath||""}:${r.fileUrl||""}:${r.mtimeMs||""}:${r.size||""}:${a(r.sourceCode||"")}`,i=n.has(r.name)?"isolate":"proxy";return`${r.name}:${r.version||""}:${o}:${i}`}).join("|")}function ke(e,t){let a=new Set(t.map(_=>_.name)),n=new Set,r=String(e||""),o=/\b(?:\$ctx\.)?\$pkgs\s*\[\s*(['"`])([^'"`]+)\1\s*\]/g,i=/\brequire\s*\(\s*(['"`])([^'"`]+)\1\s*\)/g,h=/\b(?:\$ctx\.)?\$pkgs\.([A-Za-z_$][\w$]*)/g;for(let _ of[o,i])for(let m of r.matchAll(_)){let v=m[2];a.has(v)&&n.add(v)}for(let _ of r.matchAll(h)){let m=_[1];a.has(m)&&n.add(m)}return n}async function Ke(e,t,a,n){let r=await e.createContext(),o=r.global;await o.set("global",o.derefInto());let i=[],h=[],_=new Map;for(let d of a){_.set(d.name,d);let u=n.has(d.name)?await De(e,r,d):null;u!==null?(await o.set(`__pkg_${d.safeName}`,u),i.push(d)):h.push(d)}j.setTaskPackages(t,_),await o.set("__callRef",new V.Reference(async(d,u,k)=>{let b=JSON.parse(k);if(u==="pkgCall")try{return JSON.stringify(await j.executePackageRuntimeCall(d,b))}catch(w){throw new Error(JSON.stringify({__userThrow:!0,message:w.message,code:w.code,details:w.details}))}return u==="resCall"?Le(d,b):L(d,u,b)})),await o.set("__fireRef",new V.Reference((d,u,k)=>{let b=JSON.parse(k);He(d,u,b)}));let m=i.map(d=>`$pkgs[${JSON.stringify(d.name)}] = __pkg_${d.safeName};`).concat(h.map(d=>`$pkgs[${JSON.stringify(d.name)}] = __createPkgProxy(${JSON.stringify(d.name)}, []);`)).join(`
953
+ `),v=Ne(m);return await(await A(e,v,"setup.js")).run(r,{timeout:B(t)}),pe.set(r,me(a,n)),ge.set(r,_),r}async function we(e,t,a,n,r,o,i){let h=e.isolate,_=me(a,r),m=null;for(let d=e.idleContexts.length-1;d>=0;d--){let u=e.idleContexts[d];if(e.idleContexts.splice(d,1),pe.get(u)===_){m=u,K.reused++;break}try{u.release()}catch{}}m||(m=await Ke(h,t,a,r),K.created++),j.setTaskPackages(t,ge.get(m)||new Map);let v=m.global;return await v.set("__snapshot",new V.ExternalCopy(n).copyInto()),await v.set("__nextTaskId",t),await v.set("__nextTaskTimeoutMs",o),await v.set("__nextTaskDeadlineMs",i),await(await A(h,"__resetTask(__snapshot, __nextTaskId, __nextTaskTimeoutMs, __nextTaskDeadlineMs);","reset-task.js")).run(m,{timeout:B(t)}),m}async function ve(e,t){if(!t||e.isolate.isDisposed)return;try{await(await A(e.isolate,"__cleanupTask();","cleanup-task.js")).run(t,{timeout:5e3})}catch{K.scrubFailed++;try{t.release()}catch{}return}let a=Math.max(1,Math.trunc(Number(e.contextCapacity)||Oe));if(e.idleContexts.length>=a){try{t.release()}catch{}K.evicted++;return}e.idleContexts.push(t),K.released++}function Be(e){try{let t=JSON.parse(e.message);if(t&&t.__userThrow)return{...t,message:t.message??e.message}}catch{}return null}var qe=3,Ve=["setup.js","extract.js","extract-error-ctx.js","set-status.js","populate-error.js"];function Ge(e){if(!e)return null;let t=e.split(`
954
+ `);for(let a of t){let n=a.match(/at\s+(.+\.js):(\d+):(\d+)/);if(!n)continue;let r=n[1].trim();if(Ve.includes(r)||r!=="handler.js"&&!r.startsWith("preHook #")&&!r.startsWith("postHook #"))continue;let i=parseInt(n[2])-qe;if(!(i<=0))return{line:i,column:parseInt(n[3]),phase:r.replace(".js","")}}return null}function We(e,t,a){if(!e||!t)return;let n=String(e).split(/\r?\n/),r=Math.max(1,t-1),o=Math.min(n.length,t+1),i=String(o).length,h=[];for(let _=r;_<=o;_++){let m=_===t?">":" ";h.push(`${m} ${String(_).padStart(i," ")}. ${n[_-1]??""}`),_===t&&a&&a>0&&h.push(` ${" ".repeat(i)} ${" ".repeat(Math.max(0,a-1))}^`)}return h.join(`
955
+ `)}function ze(e,t){if(!(!e||!t)){if(t[e.phase])return t[e.phase];if(e.phase?.startsWith("preHook"))return t.preHook;if(e.phase?.startsWith("postHook"))return t.postHook}}function te(e,t){let a=Be(e);if(a)return{message:a.message,statusCode:a.statusCode,errorPath:a.errorPath,code:a.code??(Number.isInteger(a.statusCode)?`HTTP_${a.statusCode}`:void 0),details:a.details};let n=Ge(e.stack),r=e.message||"Unknown error",o=n?`${r} (${n.phase}, line ${n.line})`:r,i=ze(n,t),h=n?We(i,n.line,n.column):void 0;return{message:o,statusCode:e.statusCode||null,details:{errorName:e.name||null,executionStage:e.executionStage||"runtime",...n?{...n,codeFrame:h}:{}}}}function X(e){return e?.message==="Script execution timed out."}function Y(e){return e?.message==="Isolate was disposed during execution due to memory limit"}function be(e){X(e)&&e?.code==null&&(e.code="ERR_SCRIPT_EXECUTION_TIMEOUT"),Y(e)&&e?.code==null&&(e.code="ERR_ISOLATE_MEMORY_LIMIT",e.details={outcome:"unknown_outcome",retryable:!1})}async function Z(e,t,a){be(t);let n=te(t,a);t.details&&(n.details={...n.details,...t.details}),await F({type:"result",id:e,success:!1,error:{...n,stack:t.stack,code:n.code??t.code}})}async function Xe(e){let{id:t,code:a,pkgSources:n,snapshot:r,memoryLimitMb:o,isolatePoolSize:i,tasksPerIsolate:h}=e,_={handler:e.sourceCode||a||""},m=n||[],v=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),R=Date.now()+v;I.set(t,R);let d=ke(a,m),u=ye(o,i,Math.max(1,Math.trunc(Number(h)||1)));u.taskIds.add(t),J.set(t,u);let k=u.isolate,b;try{b=await we(u,t,m,r,d,v,R)}catch(w){I.delete(t),J.delete(t),u.taskIds.delete(t),G(t),await Z(t,w,_),S.postMessage({type:"taskReleased",id:t});return}U.set(t,b);try{let w=`
956
956
  (async () => {
957
957
  "use strict";
958
958
  ${a}
959
959
  })().then((__result) => __extractResult(__result, __result === undefined));
960
- `,R=await(await A(d,h,"handler.js")).run(v,{timeout:B(t),promise:!0}),S=JSON.parse(R);await U({type:"result",id:t,success:!0,...S})}catch(h){if(await z(t,h,y),W(h))try{d.dispose()}catch{}}finally{await ke(u,v),ge(t,u)}}async function Xe(e){let{id:t,codeBlocks:a,pkgSources:r,snapshot:n,memoryLimitMb:l,isolatePoolSize:s}=e,y=r||[],p=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),k=Date.now()+p;L.set(t,k);let w=he((a||[]).map(_=>_.code||"").join(`
961
- `),y),P=_e(l,s);P.taskId=t,H.set(t,P);let u=P.isolate,d;try{d=await me(P,t,y,n,w,p,k)}catch(_){L.delete(t),H.delete(t),P.taskId=null,X(t),await z(t,_),C.postMessage({type:"taskReleased",id:t});return}D.set(t,d);let v=[],h=[],b={},R=0,S=0;for(let _ of a){let O=_.type||"handler",g=_.sourceCode||_.code||"";O==="postHook"?(S++,b[`postHook #${S}`]=g,b.postHook=g,h.push(_)):(O==="handler"?b.handler=g:(R++,b[`${O} #${R}`]=g,b.preHook=g),v.push(_))}try{let _=null;for(let g=0;g<v.length;g++){let x=v[g],$=x.type||"handler",J=$==="handler"?"handler":`${$} #${g+1}`,c;$==="preHook"?c=`
960
+ `,C=await(await A(k,w,"handler.js")).run(b,{timeout:B(t),promise:!0}),D=JSON.parse(C);await F({type:"result",id:t,success:!0,...D})}catch(w){u.taskIds.has(t)&&(await Z(t,w,_),(X(w)||Y(w))&&z(u,t,"sibling_execution_failure"))}finally{await ve(u,b),he(t,u)}}async function Ye(e){let{id:t,codeBlocks:a,pkgSources:n,snapshot:r,memoryLimitMb:o,isolatePoolSize:i,tasksPerIsolate:h}=e,_=n||[],m=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),v=Date.now()+m;I.set(t,v);let R=ke((a||[]).map(p=>p.code||"").join(`
961
+ `),_),d=ye(o,i,Math.max(1,Math.trunc(Number(h)||1)));d.taskIds.add(t),J.set(t,d);let u=d.isolate,k;try{k=await we(d,t,_,r,R,m,v)}catch(p){I.delete(t),J.delete(t),d.taskIds.delete(t),G(t),await Z(t,p),S.postMessage({type:"taskReleased",id:t});return}U.set(t,k);let b=[],w=[],x={},C=0,D=0;for(let p of a){let H=p.type||"handler",g=p.sourceCode||p.code||"";H==="postHook"?(D++,x[`postHook #${D}`]=g,x.postHook=g,w.push(p)):(H==="handler"?x.handler=g:(C++,x[`${H} #${C}`]=g,x.preHook=g),b.push(p))}try{let p=null;for(let g=0;g<b.length;g++){let P=b[g],$=P.type||"handler",l=$==="handler"?"handler":`${$} #${g+1}`,s;$==="preHook"?s=`
962
962
  (async () => {
963
963
  "use strict";
964
- ${x.code}
964
+ ${P.code}
965
965
  })().then((__r) => {
966
966
  if (__r !== undefined) return JSON.stringify({ __shortCircuit: true, value: __r });
967
967
  return JSON.stringify({ __shortCircuit: false });
968
- });`:c=`
968
+ });`:s=`
969
969
  (async () => {
970
970
  "use strict";
971
- ${x.code}
971
+ ${P.code}
972
972
  })().then((__r) => {
973
973
  $ctx.$data = __r;
974
974
  return "__handler_done__";
975
- });`;try{let i=await(await A(u,c,`${J}.js`)).run(d,{timeout:B(t),promise:!0});if($==="preHook"&&typeof i=="string"){let f=JSON.parse(i);if(f.__shortCircuit){let m=await ue(u,d,f.value);await U({type:"result",id:t,success:!0,...m,shortCircuit:!0});return}}}catch(o){_=o;break}}if(!_&&h.length>0&&await(await A(u,'$ctx.$statusCode = 200; "__status_set__";',"set-status.js")).run(d,{timeout:5e3}),_&&h.length>0){let g=Q(_,b),x={message:g.message||"Unknown error",name:_.constructor?.name||"Error",stack:_.stack||"",statusCode:g.statusCode||500,details:g.details||{},timestamp:new Date().toISOString()},$=`
976
- $ctx.$error = ${JSON.stringify(x)};
975
+ });`;try{let f=await(await A(u,s,`${l}.js`)).run(k,{timeout:B(t),promise:!0});if($==="preHook"&&typeof f=="string"){let y=JSON.parse(f);if(y.__shortCircuit){let T=await fe(u,k,y.value);await F({type:"result",id:t,success:!0,...T,shortCircuit:!0});return}}}catch(c){p=c;break}}if(!p&&w.length>0&&await(await A(u,'$ctx.$statusCode = 200; "__status_set__";',"set-status.js")).run(k,{timeout:5e3}),p&&w.length>0){let g=te(p,x),P={message:g.message||"Unknown error",name:p.constructor?.name||"Error",stack:p.stack||"",statusCode:g.statusCode||500,details:g.details||{},timestamp:new Date().toISOString()},$=`
976
+ $ctx.$error = ${JSON.stringify(P)};
977
977
  $ctx.$data = null;
978
- $ctx.$statusCode = ${x.statusCode};
978
+ $ctx.$statusCode = ${P.statusCode};
979
979
  if ($ctx.$api) {
980
- $ctx.$api.error = ${JSON.stringify(x)};
980
+ $ctx.$api.error = ${JSON.stringify(P)};
981
981
  $ctx.$api.response = {
982
- statusCode: ${x.statusCode},
982
+ statusCode: ${P.statusCode},
983
983
  responseTime: $ctx.$api.request && $ctx.$api.request.timestamp
984
984
  ? Date.now() - new Date($ctx.$api.request.timestamp).getTime()
985
985
  : 0,
986
- timestamp: ${JSON.stringify(x.timestamp)},
986
+ timestamp: ${JSON.stringify(P.timestamp)},
987
987
  };
988
988
  }
989
- "__error_populated__";`;await(await u.compileScript($,{filename:"populate-error.js"})).run(d,{timeout:5e3})}for(let g=0;g<h.length;g++){let x=h[g],$=`postHook #${g+1}`,J=`
989
+ "__error_populated__";`;await(await u.compileScript($,{filename:"populate-error.js"})).run(k,{timeout:5e3})}for(let g=0;g<w.length;g++){let P=w[g],$=`postHook #${g+1}`,l=`
990
990
  (async () => {
991
991
  "use strict";
992
- ${x.code}
992
+ ${P.code}
993
993
  })().then((__r) => {
994
994
  if (__r !== undefined) $ctx.$data = __r;
995
995
  return "__posthook_done__";
996
- });`;try{await(await A(u,J,`${$}.js`)).run(d,{timeout:B(t),promise:!0})}catch{}}if(_){ve(_);let g=Q(_,b);_.details&&(g.details={...g.details,..._.details});let x;try{let c=await(await A(u,"(async () => JSON.stringify(await __extractCtxChanges()))()","extract-error-ctx.js")).run(d,{timeout:5e3,promise:!0});x=JSON.parse(c)}catch{}if(await U({type:"result",id:t,success:!1,error:{message:g.message,statusCode:g.statusCode,errorPath:g.errorPath,stack:_.stack,code:g.code??_.code,details:g.details},ctxChanges:x}),W(_)||we(_))try{u.dispose()}catch{}return}let O=await ue(u,d);await U({type:"result",id:t,success:!0,...O})}catch(_){if(await z(t,_),W(_))try{u.dispose()}catch{}}finally{await ke(P,d),ge(t,P)}}function X(e){F.cleanupTaskPackages(e)}function Ye(){F.shutdownPackageRuntime()}process.on("exit",Ye);async function ue(e,t,a){if(a!==void 0){let s=`__extractResult(${JSON.stringify(a)}, false)`,p=await(await e.compileScript(s,{filename:"extract.js"})).run(t,{timeout:5e3,promise:!0});return JSON.parse(p)}let l=await(await A(e,"__extractResult($ctx.$data, $ctx.$data === undefined)","extract.js")).run(t,{timeout:5e3,promise:!0});return JSON.parse(l)}
996
+ });`;try{await(await A(u,l,`${$}.js`)).run(k,{timeout:B(t),promise:!0})}catch{}}if(p){be(p);let g=te(p,x);p.details&&(g.details={...g.details,...p.details});let P;try{let s=await(await A(u,"(async () => JSON.stringify(await __extractCtxChanges()))()","extract-error-ctx.js")).run(k,{timeout:5e3,promise:!0});P=JSON.parse(s)}catch{}await F({type:"result",id:t,success:!1,error:{message:g.message,statusCode:g.statusCode,errorPath:g.errorPath,stack:p.stack,code:g.code??p.code,details:g.details},ctxChanges:P}),(X(p)||Y(p))&&z(d,t,"sibling_execution_failure");return}let H=await fe(u,k);await F({type:"result",id:t,success:!0,...H})}catch(p){d.taskIds.has(t)&&(await Z(t,p),(X(p)||Y(p))&&z(d,t,"sibling_execution_failure"))}finally{await ve(d,k),he(t,d)}}function G(e){j.cleanupTaskPackages(e)}function Ze(){j.shutdownPackageRuntime()}process.on("exit",Ze);async function fe(e,t,a){if(a!==void 0){let i=`__extractResult(${JSON.stringify(a)}, false)`,_=await(await e.compileScript(i,{filename:"extract.js"})).run(t,{timeout:5e3,promise:!0});return JSON.parse(_)}let o=await(await A(e,"__extractResult($ctx.$data, $ctx.$data === undefined)","extract.js")).run(t,{timeout:5e3,promise:!0});return JSON.parse(o)}