@enfyra/kernel 1.1.58 → 1.1.60

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.
@@ -1,10 +1,11 @@
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=`
1
+ "use strict";var ne=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ae=ne((et,re)=>{"use strict";var{fork:xe}=require("child_process"),Pe=require("path");function Se({workerDir:e,activeTaskContexts:t}){let a=new Map,n=new Map,r=new Map,i=new Map,s=null,y=0,_=1e3;function m(l){return Math.max(1,Math.trunc(Number(l)||3e4))}function v(l,o,c){let f=new Error(l);return f.code=o,f.details=c,f}function R(l,o){for(let[c,f]of n)f.child===l&&(clearTimeout(f.timer),n.delete(c),r.delete(c),f.reject(o))}function d(l){for(let[o,c]of i)c.child===l&&(clearTimeout(c.timer),i.delete(o))}function u(l,o){if(!l.connected)return;let c=`cancel_${++y}`,f=setTimeout(()=>{i.delete(c);try{l.kill()}catch{}},_);f.unref?.(),i.set(c,{child:l,timer:f});try{l.send({op:"cancelTask",taskId:o,id:c})}catch{clearTimeout(f),i.delete(c);try{l.kill()}catch{}}}function k(l){let o=typeof l=="string"?JSON.parse(l):l;if(o?.error)throw new Error(o.error);return o?.value}async function b(l){let o=t.get(l.taskId);if(!o)throw new Error(`Package callback context not found: ${l.taskId}`);let c=JSON.stringify(l.callbackId),f=JSON.stringify(l.argsJson||"[]"),h=await o.evalClosure(`return __invokeRuntimeCallback(${c}, ${f});`,[],{arguments:{copy:!0},result:{promise:!0,copy:!0}});return k(h)}function w(){if(s&&s.connected)return s;let l=Pe.join(e,"package-runtime.child.js"),o=xe(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 s=o,o.on("message",c=>{if(!c||!c.id)return;if(c.type==="pkgStreamChunk"){let h=r.get(c.id);if(!h)return;h.onChunk(Buffer.from(c.chunk||"","base64")).then(()=>{try{o.send({type:"pkgStreamAck",ackId:c.ackId})}catch{}}).catch(N=>{try{o.send({type:"pkgStreamError",ackId:c.ackId,error:{message:N.message,stack:N.stack}})}catch{}});return}if(c.type==="taskCancelled"){let h=i.get(c.id);if(!h||h.child!==o)return;clearTimeout(h.timer),i.delete(c.id);return}if(c.type==="pkgCallbackCall"){b(c).then(h=>{try{o.send({type:"pkgCallbackResult",id:c.id,value:h})}catch{}}).catch(h=>{try{o.send({type:"pkgCallbackError",id:c.id,error:{message:h.message,stack:h.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(o,f.taskId);let h=v(c.error?.message||"Package runtime call failed",c.error?.code,c.error?.details);h.stack=c.error?.stack||h.stack,f.reject(h)}}),o.on("exit",(c,f)=>{s===o&&(s=null),d(o),R(o,v(`Package runtime exited${f?` with signal ${f}`:` with code ${c}`}`,"ERR_PACKAGE_RUNTIME_LOST",{outcome:"unknown_outcome",retryable:!1}))}),o.on("error",c=>{s===o&&(s=null),d(o),R(o,v(c.message,"ERR_PACKAGE_RUNTIME_LOST",{outcome:"unknown_outcome",retryable:!1}))}),o}function P(l){return new Promise((o,c)=>{let f=w(),h=`pkg_${++y}`,N=m(l.timeoutMs),J=setTimeout(()=>{n.delete(h),r.delete(h),u(f,l.taskId),c(v(`Package runtime call timed out after ${N}ms`,"ERR_PACKAGE_RUNTIME_TIMEOUT",{outcome:"unknown_outcome",retryable:!1}))},N);n.set(h,{child:f,taskId:l.taskId,resolve:o,reject:c,timer:J});try{f.send({...l,id:h},I=>{I&&(clearTimeout(J),n.delete(h),c(I))})}catch(I){clearTimeout(J),n.delete(h),c(I)}})}function C(l,o,c,f=[],h=3e4){return new Promise((N,J)=>{let I=w(),A=`pkg_${++y}`,Q=m(h),ee=setTimeout(()=>{n.delete(A),r.delete(A),u(I,l),J(v(`Package runtime stream timed out after ${Q}ms`,"ERR_PACKAGE_RUNTIME_TIMEOUT",{outcome:"unknown_outcome",retryable:!1}))},Q);n.set(A,{child:I,taskId:l,resolve:N,reject:J,timer:ee}),r.set(A,{onChunk:c});try{I.send({op:"streamHandle",taskId:l,handleId:o,path:f,id:A,timeoutMs:Q},W=>{W&&(clearTimeout(ee),n.delete(A),r.delete(A),J(W))})}catch(W){clearTimeout(ee),n.delete(A),r.delete(A),J(W)}})}function D(l){try{if(!s||!s.connected)return;s.send({...l,id:`pkg_${++y}`,fire:!0})}catch{}}function p(l){try{if(!s||!s.connected)return;u(s,l)}catch{}}async function H(l,o){let c=a.get(l);if(!c)throw new Error("Package context is not available");if(o.handleId)return P({op:o.kind==="get"?"handleGet":"handleCall",taskId:l,handleId:o.handleId,path:o.path||[],argsJson:o.argsJson||"[]",timeoutMs:o.timeoutMs});let f=c.get(o.packageName);if(!f)throw new Error(`Package "${o.packageName}" is not available`);return P({op:o.kind==="construct"?"construct":"call",taskId:l,packageName:o.packageName,package:{name:f.name,fileUrl:f.fileUrl},path:o.path||[],argsJson:o.argsJson||"[]",timeoutMs:o.timeoutMs})}function g(l,o){a.set(l,o)}function x(l){a.delete(l),D({op:"releaseTask",taskId:l})}function $(){if(s){try{s.kill()}catch{}s=null}}return{cleanupTaskPackages:x,cancelTask:p,executePackageRuntimeCall:H,setTaskPackages:g,streamPackageHandle:C,shutdownPackageRuntime:$}}re.exports={createPackageRuntimeBridge:Se}});var oe=ne((tt,se)=>{"use strict";var Ce=`
2
2
  "use strict";
3
3
  let $ctx = {};
4
4
  let $pkgs = {};
5
5
  let __taskId = null;
6
6
  let __taskDeadlineMs = 0;
7
7
  let __logs = [];
8
+ let __logBytes = 0;
8
9
  let __runtimeCallbackCounter = 0;
9
10
  let __runtimeCallbacks = new Map();
10
11
  let __pendingRuntimeTasks = [];
@@ -796,6 +797,7 @@ function __resetTask(snapshot, taskId, timeoutMs, deadlineMs) {
796
797
  ? providedDeadlineMs
797
798
  : Date.now() + Math.max(1, Math.trunc(Number(timeoutMs) || 30000));
798
799
  __logs = [];
800
+ __logBytes = 0;
799
801
  __runtimeCallbackCounter = 0;
800
802
  __runtimeCallbacks = new Map();
801
803
  __pendingRuntimeTasks = [];
@@ -916,8 +918,13 @@ function __resetTask(snapshot, taskId, timeoutMs, deadlineMs) {
916
918
  });
917
919
  $ctx.$logs = (...args) => {
918
920
  for (const a of args) {
919
- try { __logs.push(JSON.parse(JSON.stringify(a))); }
920
- catch { __logs.push(String(a)); }
921
+ if (__logs.length >= 200 || __logBytes >= 40000) { $ctx.$share.$logsTruncated = true; break; }
922
+ let text;
923
+ try { text = JSON.stringify(a); } catch { text = String(a); }
924
+ text = text === undefined ? String(a) : text;
925
+ if (text.length > 8192) { text = JSON.stringify(text.slice(0, 8192) + '[Truncated]'); $ctx.$share.$logsTruncated = true; }
926
+ __logBytes += text.length;
927
+ try { __logs.push(JSON.parse(text)); } catch { __logs.push(text); }
921
928
  }
922
929
  };
923
930
  }
@@ -949,48 +956,48 @@ function __cleanupTask() {
949
956
  __pendingRuntimeTasks = [];
950
957
  return true;
951
958
  }
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=`
959
+ `;function Re(e){return Ce.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,O=new Map,E=new Map,j=new Map,U=Te({workerDir:__dirname,activeTaskContexts:O}),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=j.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(),i=r.heap_size_limit||1,s=r.used_heap_size/i;s>t&&(t=s)}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,i=M[r];if((!i||!i.isolate||i.isolate.isDisposed)&&(i={isolate:new V.Isolate({memoryLimit:e}),idleContexts:[],taskIds:new Set,contextCapacity:a},M[r]=i),i.taskIds.size<a)return le=(r+1)%M.length,i}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),E.delete(n),O.delete(n),j.delete(n),U.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=E.get(e);if(!t){S.postMessage({type:"taskCancelled",id:e});return}z(t,e,"sibling_cancelled"),U.cancelTask(e),E.delete(e),O.delete(e),j.delete(e),t.taskIds.delete(e),G(e),S.postMessage({type:"taskCancelled",id:e})}function he(e,t){t.taskIds.delete(e)&&(O.delete(e),E.delete(e),j.delete(e),G(e),S.postMessage({type:"taskReleased",id:e}))}async function T(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 i;try{i=await e.compileScript(t,{filename:a})}catch(s){throw s&&typeof s=="object"&&(s.executionStage="compile"),s}if(n.set(t,i),n.size>Ae){let s=n.keys().next().value;n.delete(s)}return i}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=O.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 i=`cb_${++_e}`;q.set(i,{resolve:n,reject:r}),S.postMessage({type:t,id:e,callId:i,...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]||{},i=n?.__pkgHandleArg;if(!i)return L(e,"resCall",t);let s=r.observer&&typeof r.observer=="object"?r.observer.__fnRef:null,y=r.transform&&typeof r.transform=="object"?r.transform.__fnRef:null,_=s||y?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=O.get(e);if(!w)return;let P=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(P);if(C?.error)throw new Error(C.error);if(C?.value?.__e!=="u")return C?.value},R=async(u,k)=>{if(s)try{await v(s,u,k)}catch{}},d=async(u,k,b)=>{let w=u;if(y){let C=await v(y,b,k);if(C===null)return;C!==void 0&&(w=Buffer.from(String(C)))}let P=Buffer.from(w);P.length!==0&&await L(e,"resCall",{method:"streamChunk",chunk:P.toString("base64")})};try{await U.streamPackageHandle(e,i,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,s=>{throw new Error(`Unresolved import in package ${a.safeName}: ${s}`)}),await r.evaluate({timeout:1e4});let i=await r.namespace.get("default");return i!==void 0&&i.typeof!=="undefined"?i.derefInto({release:!1}):r.namespace.derefInto({release:!1})}catch{return null}}function me(e,t){let a=r=>{let i=2166136261;for(let s=0;s<r.length;s++)i^=r.charCodeAt(s),i=Math.imul(i,16777619);return(i>>>0).toString(36)},n=new Set(t||[]);return e.map(r=>{let i=r.cacheKey||`${r.filePath||""}:${r.fileUrl||""}:${r.mtimeMs||""}:${r.size||""}:${a(r.sourceCode||"")}`,s=n.has(r.name)?"isolate":"proxy";return`${r.name}:${r.version||""}:${i}:${s}`}).join("|")}function ke(e,t){let a=new Set(t.map(_=>_.name)),n=new Set,r=String(e||""),i=/\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 _ of[i,s])for(let m of r.matchAll(_)){let v=m[2];a.has(v)&&n.add(v)}for(let _ of r.matchAll(y)){let m=_[1];a.has(m)&&n.add(m)}return n}async function Ke(e,t,a,n){let r=await e.createContext(),i=r.global;await i.set("global",i.derefInto());let s=[],y=[],_=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 i.set(`__pkg_${d.safeName}`,u),s.push(d)):y.push(d)}U.setTaskPackages(t,_),await i.set("__callRef",new V.Reference(async(d,u,k)=>{let b=JSON.parse(k);if(u==="pkgCall")try{return JSON.stringify(await U.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 i.set("__fireRef",new V.Reference((d,u,k)=>{let b=JSON.parse(k);He(d,u,b)}));let m=s.map(d=>`$pkgs[${JSON.stringify(d.name)}] = __pkg_${d.safeName};`).concat(y.map(d=>`$pkgs[${JSON.stringify(d.name)}] = __createPkgProxy(${JSON.stringify(d.name)}, []);`)).join(`
960
+ `),v=Ne(m);return await(await T(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,i,s){let y=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(y,t,a,r),K.created++),U.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",i),await v.set("__nextTaskDeadlineMs",s),await(await T(y,"__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 T(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(`
961
+ `);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 s=parseInt(n[2])-qe;if(!(s<=0))return{line:s,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),i=Math.min(n.length,t+1),s=String(i).length,y=[];for(let _=r;_<=i;_++){let m=_===t?">":" ";y.push(`${m} ${String(_).padStart(s," ")}. ${n[_-1]??""}`),_===t&&a&&a>0&&y.push(` ${" ".repeat(s)} ${" ".repeat(Math.max(0,a-1))}^`)}return y.join(`
962
+ `)}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",i=n?`${r} (${n.phase}, line ${n.line})`:r,s=ze(n,t),y=n?We(s,n.line,n.column):void 0;return{message:i,statusCode:e.statusCode||null,details:{errorName:e.name||null,executionStage:e.executionStage||"runtime",...n?{...n,codeFrame:y}:{}}}}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});let r,i=O.get(e),s=E.get(e);if(i&&s&&!s.isolate.isDisposed)try{let y=await T(s.isolate,"JSON.stringify({logs: __logs, truncated: $ctx.$share.$logsTruncated === true})","extract-diagnostic-logs.js");r=JSON.parse(await y.run(i,{timeout:100}))}catch{}await F({type:"result",id:e,success:!1,diagnosticLogs:r,error:{...n,stack:t.stack,code:n.code??t.code}})}async function Xe(e){let{id:t,code:a,pkgSources:n,snapshot:r,memoryLimitMb:i,isolatePoolSize:s,tasksPerIsolate:y}=e,_={handler:e.sourceCode||a||""},m=n||[],v=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),R=Date.now()+v;j.set(t,R);let d=ke(a,m),u=ye(i,s,Math.max(1,Math.trunc(Number(y)||1)));u.taskIds.add(t),E.set(t,u);let k=u.isolate,b;try{b=await we(u,t,m,r,d,v,R)}catch(w){j.delete(t),E.delete(t),u.taskIds.delete(t),G(t),await Z(t,w,_),S.postMessage({type:"taskReleased",id:t});return}O.set(t,b);try{let w=`
956
963
  (async () => {
957
964
  "use strict";
958
965
  ${a}
959
966
  })().then((__result) => __extractResult(__result, __result === undefined));
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=`
967
+ `,C=await(await T(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:i,isolatePoolSize:s,tasksPerIsolate:y}=e,_=n||[],m=Math.max(1,Math.trunc(Number(e.timeoutMs)||3e4)),v=Date.now()+m;j.set(t,v);let R=ke((a||[]).map(p=>p.code||"").join(`
968
+ `),_),d=ye(i,s,Math.max(1,Math.trunc(Number(y)||1)));d.taskIds.add(t),E.set(t,d);let u=d.isolate,k;try{k=await we(d,t,_,r,R,m,v)}catch(p){j.delete(t),E.delete(t),d.taskIds.delete(t),G(t),await Z(t,p),S.postMessage({type:"taskReleased",id:t});return}O.set(t,k);let b=[],w=[],P={},C=0,D=0;for(let p of a){let H=p.type||"handler",g=p.sourceCode||p.code||"";H==="postHook"?(D++,P[`postHook #${D}`]=g,P.postHook=g,w.push(p)):(H==="handler"?P.handler=g:(C++,P[`${H} #${C}`]=g,P.preHook=g),b.push(p))}try{let p=null;for(let g=0;g<b.length;g++){let x=b[g],$=x.type||"handler",l=$==="handler"?"handler":`${$} #${g+1}`,o;$==="preHook"?o=`
962
969
  (async () => {
963
970
  "use strict";
964
- ${P.code}
971
+ ${x.code}
965
972
  })().then((__r) => {
966
973
  if (__r !== undefined) return JSON.stringify({ __shortCircuit: true, value: __r });
967
974
  return JSON.stringify({ __shortCircuit: false });
968
- });`:s=`
975
+ });`:o=`
969
976
  (async () => {
970
977
  "use strict";
971
- ${P.code}
978
+ ${x.code}
972
979
  })().then((__r) => {
973
980
  $ctx.$data = __r;
974
981
  return "__handler_done__";
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)};
982
+ });`;try{let f=await(await T(u,o,`${l}.js`)).run(k,{timeout:B(t),promise:!0});if($==="preHook"&&typeof f=="string"){let h=JSON.parse(f);if(h.__shortCircuit){let N=await fe(u,k,h.value);await F({type:"result",id:t,success:!0,...N,shortCircuit:!0});return}}}catch(c){p=c;break}}if(!p&&w.length>0&&await(await T(u,'$ctx.$statusCode = 200; "__status_set__";',"set-status.js")).run(k,{timeout:5e3}),p&&w.length>0){let g=te(p,P),x={message:g.message||"Unknown error",name:p.constructor?.name||"Error",stack:p.stack||"",statusCode:g.statusCode||500,details:g.details||{},timestamp:new Date().toISOString()},$=`
983
+ $ctx.$error = ${JSON.stringify(x)};
977
984
  $ctx.$data = null;
978
- $ctx.$statusCode = ${P.statusCode};
985
+ $ctx.$statusCode = ${x.statusCode};
979
986
  if ($ctx.$api) {
980
- $ctx.$api.error = ${JSON.stringify(P)};
987
+ $ctx.$api.error = ${JSON.stringify(x)};
981
988
  $ctx.$api.response = {
982
- statusCode: ${P.statusCode},
989
+ statusCode: ${x.statusCode},
983
990
  responseTime: $ctx.$api.request && $ctx.$api.request.timestamp
984
991
  ? Date.now() - new Date($ctx.$api.request.timestamp).getTime()
985
992
  : 0,
986
- timestamp: ${JSON.stringify(P.timestamp)},
993
+ timestamp: ${JSON.stringify(x.timestamp)},
987
994
  };
988
995
  }
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=`
996
+ "__error_populated__";`;await(await u.compileScript($,{filename:"populate-error.js"})).run(k,{timeout:5e3})}for(let g=0;g<w.length;g++){let x=w[g],$=`postHook #${g+1}`,l=`
990
997
  (async () => {
991
998
  "use strict";
992
- ${P.code}
999
+ ${x.code}
993
1000
  })().then((__r) => {
994
1001
  if (__r !== undefined) $ctx.$data = __r;
995
1002
  return "__posthook_done__";
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)}
1003
+ });`;try{await(await T(u,l,`${$}.js`)).run(k,{timeout:B(t),promise:!0})}catch(o){S.postMessage({type:"executionError",id:t,sourceKind:"postHook",scriptId:x.scriptId,error:{message:o.message,stack:o.stack,code:o.code}})}}if(p){be(p);let g=te(p,P);p.details&&(g.details={...g.details,...p.details});let x;try{let o=await(await T(u,"(async () => JSON.stringify(await __extractCtxChanges()))()","extract-error-ctx.js")).run(k,{timeout:5e3,promise:!0});x=JSON.parse(o)}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:x}),(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){U.cleanupTaskPackages(e)}function Ze(){U.shutdownPackageRuntime()}process.on("exit",Ze);async function fe(e,t,a){if(a!==void 0){let s=`__extractResult(${JSON.stringify(a)}, false)`,_=await(await e.compileScript(s,{filename:"extract.js"})).run(t,{timeout:5e3,promise:!0});return JSON.parse(_)}let i=await(await T(e,"__extractResult($ctx.$data, $ctx.$data === undefined)","extract.js")).run(t,{timeout:5e3,promise:!0});return JSON.parse(i)}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,40 @@
1
+ export interface ExecutorWorkerTaskDiagnostics {
2
+ correlationId?: string;
3
+ timeoutMs: number;
4
+ isolateMemoryLimitMb: number;
5
+ isolatePoolSize: number;
6
+ tasksPerIsolate: number;
7
+ scriptBlocks: Array<{
8
+ type: string;
9
+ scriptId?: string;
10
+ }>;
11
+ }
12
+
13
+ export interface ExecutorWorkerCrashInfo {
14
+ terminationReason?: string;
15
+ entryId: number;
16
+ pid?: number;
17
+ exitCode: number | null;
18
+ exitSignal: string | null;
19
+ lastError?: string;
20
+ lastHeapRatio?: number;
21
+ lastRssBytes?: number;
22
+ activeTasks: ExecutorWorkerTaskDiagnostics[];
23
+ }
24
+
25
+ export interface ExecutorWorkerCrashRecord extends ExecutorWorkerCrashInfo {
26
+ event: 'executor_worker_crashed';
27
+ occurredAt: string;
28
+ }
29
+
30
+ export interface ExecutorExecutionRecord {
31
+ diagnostics: ExecutorWorkerTaskDiagnostics;
32
+ logs: unknown[];
33
+ logsTruncated: boolean;
34
+ statusCode?: number;
35
+ error?: { message?: string; code?: string; stack?: string };
36
+ }
37
+
1
38
  export interface EnfyraKernelDependencies {
2
39
  knexService?: any;
3
40
  mongoService?: any;
@@ -11,6 +48,8 @@ export interface EnfyraKernelDependencies {
11
48
  packageCdnLoaderService?: any;
12
49
  getPackageCacheService?: () => any;
13
50
  getPackageCdnLoaderService?: () => any;
51
+ onExecutorWorkerCrash?: (record: ExecutorWorkerCrashRecord) => void;
52
+ onExecutionFinished?: (record: ExecutorExecutionRecord) => void;
14
53
  }
15
54
 
16
55
  export interface EnfyraKernel {