tjs-lang 0.5.3 → 0.5.4
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/CLAUDE.md +1 -1
- package/demo/docs.json +6 -6
- package/demo/src/demo-nav.ts +51 -143
- package/demo/src/index.ts +35 -68
- package/demo/src/ts-playground.ts +18 -8
- package/dist/index.js +126 -112
- package/dist/index.js.map +11 -11
- package/dist/src/lang/emitters/js.d.ts +2 -2
- package/dist/src/lang/inference.d.ts +2 -2
- package/dist/src/test-examples.d.ts +41 -0
- package/dist/tjs-full.js +126 -112
- package/dist/tjs-full.js.map +11 -11
- package/dist/tjs-transpiler.js +102 -88
- package/dist/tjs-transpiler.js.map +8 -8
- package/dist/tjs-vm.js +18 -18
- package/dist/tjs-vm.js.map +5 -5
- package/package.json +1 -1
- package/src/lang/codegen.test.ts +69 -17
- package/src/lang/emitters/from-ts.ts +7 -32
- package/src/lang/emitters/js.ts +97 -7
- package/src/lang/from-ts.test.ts +3 -3
- package/src/lang/inference.ts +34 -20
- package/src/lang/parser.test.ts +4 -4
- package/src/lang/transpiler.test.ts +5 -3
- package/src/lang/typescript-syntax.test.ts +20 -17
- package/src/test-examples.test.ts +4 -12
- package/src/test-examples.ts +3 -1
package/dist/tjs-full.js
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
var
|
|
2
|
-
`)
|
|
3
|
-
`)}}class
|
|
4
|
-
`)Y="normal";K++;continue;case"block-comment":if(
|
|
5
|
-
`){Q=!1
|
|
6
|
-
`),H=[];for(let Y=0;Y<Q.length;Y++){let G=Q[Y],z=Y>0?Q[Y-1]:"";if(Y>0
|
|
7
|
-
`)}function
|
|
8
|
-
`)K="normal"
|
|
9
|
-
`,Y);if(G===-1)G=Z.length;let z=Z.slice(Y,G).trim();if(z){let W=
|
|
10
|
-
`||Z[K-1]===";"||Z[K-1]==="}"){let A=Q.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}
|
|
11
|
-
`),
|
|
12
|
-
${
|
|
1
|
+
var D8=Object.defineProperty;var R8=(Z,X)=>()=>(X||Z((X={exports:{}}).exports,X),X.exports);var B8=(Z,X)=>{for(var $ in X)D8(Z,$,{get:X[$],enumerable:!0,configurable:!0,set:(K)=>X[$]=()=>K})};var I8=(Z,X)=>()=>(Z&&(X=Z(Z=0)),X);var F4=((Z)=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(Z,{get:(X,$)=>(typeof require<"u"?require:X)[$]}):Z)(function(Z){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+Z+'" is not supported')});var K7=R8((xK,fZ)=>{fZ.exports={name:"tjs-lang",version:"0.5.4",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",exports:{".":{bun:"./src/index.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",default:"./dist/lang/eval.js"},"./lang":{bun:"./src/lang/index.ts",default:"./dist/lang/index.js"},"./lang/eval":{bun:"./src/lang/eval.ts",default:"./dist/lang/eval.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",default:"./dist/lang/emitters/from-ts.js"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-javascript":"^6.2.4","@codemirror/state":"^6.5.3","@codemirror/view":"^6.39.9","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","@typescript-eslint/eslint-plugin":"^5.62.0","@typescript-eslint/parser":"^5.62.0","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",eslint:"^8.57.1","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.2.0","tosijs-ui":"^1.2.0",typescript:"^5.6.2",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"firebase deploy --only hosting",deploy:"npm run build:demo && npm run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-markdown":"^6.5.0","@codemirror/theme-one-dark":"^6.1.3",acorn:"^8.15.0",firebase:"^10.12.0","tosijs-schema":"^1.2.0"}}});var K6={};B8(K6,{sep:()=>r7,resolve:()=>q4,relative:()=>i7,posix:()=>e7,parse:()=>a7,normalize:()=>X6,join:()=>l7,isAbsolute:()=>m7,format:()=>s7,extname:()=>o7,dirname:()=>n7,delimiter:()=>t7,default:()=>y$,basename:()=>c7,_makeLong:()=>p7});function A1(Z){if(typeof Z!=="string")throw TypeError("Path must be a string. Received "+JSON.stringify(Z))}function d7(Z,X){var $="",K=0,Q=-1,H=0,Y;for(var G=0;G<=Z.length;++G){if(G<Z.length)Y=Z.charCodeAt(G);else if(Y===47)break;else Y=47;if(Y===47){if(Q===G-1||H===1);else if(Q!==G-1&&H===2){if($.length<2||K!==2||$.charCodeAt($.length-1)!==46||$.charCodeAt($.length-2)!==46){if($.length>2){var z=$.lastIndexOf("/");if(z!==$.length-1){if(z===-1)$="",K=0;else $=$.slice(0,z),K=$.length-1-$.lastIndexOf("/");Q=G,H=0;continue}}else if($.length===2||$.length===1){$="",K=0,Q=G,H=0;continue}}if(X){if($.length>0)$+="/..";else $="..";K=2}}else{if($.length>0)$+="/"+Z.slice(Q+1,G);else $=Z.slice(Q+1,G);K=G-Q-1}Q=G,H=0}else if(Y===46&&H!==-1)++H;else H=-1}return $}function f$(Z,X){var $=X.dir||X.root,K=X.base||(X.name||"")+(X.ext||"");if(!$)return K;if($===X.root)return $+K;return $+Z+K}function q4(){var Z="",X=!1,$;for(var K=arguments.length-1;K>=-1&&!X;K--){var Q;if(K>=0)Q=arguments[K];else{if($===void 0)$=process.cwd();Q=$}if(A1(Q),Q.length===0)continue;Z=Q+"/"+Z,X=Q.charCodeAt(0)===47}if(Z=d7(Z,!X),X)if(Z.length>0)return"/"+Z;else return"/";else if(Z.length>0)return Z;else return"."}function X6(Z){if(A1(Z),Z.length===0)return".";var X=Z.charCodeAt(0)===47,$=Z.charCodeAt(Z.length-1)===47;if(Z=d7(Z,!X),Z.length===0&&!X)Z=".";if(Z.length>0&&$)Z+="/";if(X)return"/"+Z;return Z}function m7(Z){return A1(Z),Z.length>0&&Z.charCodeAt(0)===47}function l7(){if(arguments.length===0)return".";var Z;for(var X=0;X<arguments.length;++X){var $=arguments[X];if(A1($),$.length>0)if(Z===void 0)Z=$;else Z+="/"+$}if(Z===void 0)return".";return X6(Z)}function i7(Z,X){if(A1(Z),A1(X),Z===X)return"";if(Z=q4(Z),X=q4(X),Z===X)return"";var $=1;for(;$<Z.length;++$)if(Z.charCodeAt($)!==47)break;var K=Z.length,Q=K-$,H=1;for(;H<X.length;++H)if(X.charCodeAt(H)!==47)break;var Y=X.length,G=Y-H,z=Q<G?Q:G,W=-1,J=0;for(;J<=z;++J){if(J===z){if(G>z){if(X.charCodeAt(H+J)===47)return X.slice(H+J+1);else if(J===0)return X.slice(H+J)}else if(Q>z){if(Z.charCodeAt($+J)===47)W=J;else if(J===0)W=0}break}var L=Z.charCodeAt($+J),_=X.charCodeAt(H+J);if(L!==_)break;else if(L===47)W=J}var U="";for(J=$+W+1;J<=K;++J)if(J===K||Z.charCodeAt(J)===47)if(U.length===0)U+="..";else U+="/..";if(U.length>0)return U+X.slice(H+W);else{if(H+=W,X.charCodeAt(H)===47)++H;return X.slice(H)}}function p7(Z){return Z}function n7(Z){if(A1(Z),Z.length===0)return".";var X=Z.charCodeAt(0),$=X===47,K=-1,Q=!0;for(var H=Z.length-1;H>=1;--H)if(X=Z.charCodeAt(H),X===47){if(!Q){K=H;break}}else Q=!1;if(K===-1)return $?"/":".";if($&&K===1)return"//";return Z.slice(0,K)}function c7(Z,X){if(X!==void 0&&typeof X!=="string")throw TypeError('"ext" argument must be a string');A1(Z);var $=0,K=-1,Q=!0,H;if(X!==void 0&&X.length>0&&X.length<=Z.length){if(X.length===Z.length&&X===Z)return"";var Y=X.length-1,G=-1;for(H=Z.length-1;H>=0;--H){var z=Z.charCodeAt(H);if(z===47){if(!Q){$=H+1;break}}else{if(G===-1)Q=!1,G=H+1;if(Y>=0)if(z===X.charCodeAt(Y)){if(--Y===-1)K=H}else Y=-1,K=G}}if($===K)K=G;else if(K===-1)K=Z.length;return Z.slice($,K)}else{for(H=Z.length-1;H>=0;--H)if(Z.charCodeAt(H)===47){if(!Q){$=H+1;break}}else if(K===-1)Q=!1,K=H+1;if(K===-1)return"";return Z.slice($,K)}}function o7(Z){A1(Z);var X=-1,$=0,K=-1,Q=!0,H=0;for(var Y=Z.length-1;Y>=0;--Y){var G=Z.charCodeAt(Y);if(G===47){if(!Q){$=Y+1;break}continue}if(K===-1)Q=!1,K=Y+1;if(G===46){if(X===-1)X=Y;else if(H!==1)H=1}else if(X!==-1)H=-1}if(X===-1||K===-1||H===0||H===1&&X===K-1&&X===$+1)return"";return Z.slice(X,K)}function s7(Z){if(Z===null||typeof Z!=="object")throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof Z);return f$("/",Z)}function a7(Z){A1(Z);var X={root:"",dir:"",base:"",ext:"",name:""};if(Z.length===0)return X;var $=Z.charCodeAt(0),K=$===47,Q;if(K)X.root="/",Q=1;else Q=0;var H=-1,Y=0,G=-1,z=!0,W=Z.length-1,J=0;for(;W>=Q;--W){if($=Z.charCodeAt(W),$===47){if(!z){Y=W+1;break}continue}if(G===-1)z=!1,G=W+1;if($===46){if(H===-1)H=W;else if(J!==1)J=1}else if(H!==-1)J=-1}if(H===-1||G===-1||J===0||J===1&&H===G-1&&H===Y+1){if(G!==-1)if(Y===0&&K)X.base=X.name=Z.slice(1,G);else X.base=X.name=Z.slice(Y,G)}else{if(Y===0&&K)X.name=Z.slice(1,H),X.base=Z.slice(1,G);else X.name=Z.slice(Y,H),X.base=Z.slice(Y,G);X.ext=Z.slice(H,G)}if(Y>0)X.dir=Z.slice(0,Y-1);else if(K)X.dir="/";return X}var r7="/",t7=":",e7,y$;var Q6=I8(()=>{e7=((Z)=>(Z.posix=Z,Z))({resolve:q4,normalize:X6,isAbsolute:m7,join:l7,relative:i7,_makeLong:p7,dirname:n7,basename:c7,extname:o7,format:s7,parse:a7,sep:r7,delimiter:t7,win32:null,posix:null}),y$=e7});import*as x6 from"acorn";class u extends Error{line;column;source;filename;constructor(Z,X,$,K){let Q=`${K||"<source>"}:${X.line}:${X.column}`;super(`${Z} at ${Q}`);this.name="TranspileError",this.line=X.line,this.column=X.column,this.source=$,this.filename=K}}class K1 extends u{constructor(Z,X,$,K){super(Z,X,$,K);this.name="SyntaxError"}formatWithContext(Z=2){if(!this.source)return this.message;let X=this.source.split(`
|
|
2
|
+
`),$=this.line-1,K=Math.max(0,$-Z),Q=Math.min(X.length-1,$+Z),H=[],Y=String(Q+1).length;for(let G=K;G<=Q;G++){let z=String(G+1).padStart(Y),W=G===$?">":" ";if(H.push(`${W} ${z} | ${X[G]}`),G===$){let J=" ".repeat(Y+4+this.column);H.push(`${J}^ ${this.message.split(" at ")[0]}`)}}return H.join(`
|
|
3
|
+
`)}}class A8 extends u{expected;received;suggestion;constructor(Z,X,$){super(Z,X,$?.source,$?.filename);this.name="TypeError",this.expected=$?.expected,this.received=$?.received,this.suggestion=$?.suggestion}}function z1(Z){return{depth:Z.depth+1,locals:new Map,parent:Z,parameters:Z.parameters,atoms:Z.atoms,warnings:Z.warnings,source:Z.source,filename:Z.filename,options:Z.options}}function F8(Z,X){if(X.locals.has(Z))return X.locals.get(Z);if(X.parameters.has(Z))return X.parameters.get(Z)?.type;if(X.parent)return F8(Z,X.parent);return}function d(Z){if(Z.loc)return{line:Z.loc.start.line,column:Z.loc.start.column};return{line:1,column:0}}function P0(Z,X){let $="",K=0,Q,H,Y="normal",G=[],z=[{type:"top-level",braceDepth:0}],W=0,J=()=>z[z.length-1]?.type||"top-level",L=()=>{let _=z[z.length-1];return _?.type==="class-body"&&W===_.braceDepth+1};while(K<Z.length){let _=Z[K],U=Z[K+1];switch(Y){case"single-string":if($+=_,_==="\\"&&K+1<Z.length){$+=U,K+=2;continue}if(_==="'")Y="normal";K++;continue;case"double-string":if($+=_,_==="\\"&&K+1<Z.length){$+=U,K+=2;continue}if(_==='"')Y="normal";K++;continue;case"template-string":if($+=_,_==="\\"&&K+1<Z.length){$+=U,K+=2;continue}if(_==="$"&&U==="{"){$+=U,K+=2,G.push(1),Y="normal";continue}if(_==="`")Y="normal";K++;continue;case"line-comment":if($+=_,_===`
|
|
4
|
+
`)Y="normal";K++;continue;case"block-comment":if($+=_,_==="*"&&U==="/"){$+=U,K+=2,Y="normal";continue}K++;continue;case"regex":if($+=_,_==="\\"&&K+1<Z.length){$+=U,K+=2;continue}if(_==="["){K++;while(K<Z.length&&Z[K]!=="]")if($+=Z[K],Z[K]==="\\"&&K+1<Z.length)$+=Z[K+1],K+=2;else K++;if(K<Z.length)$+=Z[K],K++;continue}if(_==="/"){K++;while(K<Z.length&&/[gimsuy]/.test(Z[K]))$+=Z[K],K++;Y="normal";continue}K++;continue;case"normal":if(G.length>0){if(_==="{")G[G.length-1]++;else if(_==="}"){if(G[G.length-1]--,G[G.length-1]===0){G.pop(),$+=_,K++,Y="template-string";continue}}}if(_==="'"){$+=_,K++,Y="single-string";continue}if(_==='"'){$+=_,K++,Y="double-string";continue}if(_==="`"){$+=_,K++,Y="template-string";continue}if(_==="/"&&U==="/"){$+=_+U,K+=2,Y="line-comment";continue}if(_==="/"&&U==="*"){$+=_+U,K+=2,Y="block-comment";continue}if(_==="/"){let I=$.trimEnd();if(!I[I.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(I)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(I)){$+=_,K++,Y="regex";continue}}break}if(_==="{"){W++,$+=_,K++;continue}if(_==="}"){W--;let I=z[z.length-1];if(I&&W===I.braceDepth)z.pop();$+=_,K++;continue}let R=Z.slice(K).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(R){let I=R[0].slice(0,-1);$+=I,K+=I.length,z.push({type:"class-body",braceDepth:W});continue}let M=Z.slice(K).match(/^function\s+(\w+)\s*\(/);if(M){let I=M[1],V=M[0].length,A=Z[K+V],B=null,P=K+V;if(A==="?"||A==="!")if(B=A,P++,B==="!")X.unsafeFunctions.add(I);else X.safeFunctions.add(I);$+=`function ${I}(`,K=P;let j=M0(Z,K,"(",")");if(!j){$+=Z[K],K++;continue}let{content:C,endPos:E}=j;K=E;let T=M4(C,X,!0);$+=T+")";let g=K;while(g<Z.length&&/\s/.test(Z[g]))g++;let b=Z.slice(g,g+2);if(b==="->"||b==="-?"||b==="-!"){g+=2;while(g<Z.length&&/\s/.test(Z[g]))g++;let c=F0(Z,g);if(c){let{type:a,endPos:v}=c;if(Q===void 0){if(Q=a,b==="-?")H="safe";else if(b==="-!")H="unsafe"}K=v}}continue}let w=Z.slice(K).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/);if(w&&L()){let I=w[1],V=w[0].length,A=K+V;$+=I+"(",K=A;let B=M0(Z,K,"(",")");if(!B){$+=Z[K],K++;continue}let{content:P,endPos:j}=B;K=j;let C=M4(P,X,!0);$+=C+")";let E=K;while(E<Z.length&&/\s/.test(Z[E]))E++;if(Z.slice(E,E+2)==="->"){E+=2;while(E<Z.length&&/\s/.test(Z[E]))E++;let g=F0(Z,E);if(g)K=g.endPos}else if(Z[E]===":"){E++;while(E<Z.length&&/\s/.test(Z[E]))E++;let g=F0(Z,E);if(g)K=g.endPos}continue}if(Z[K]==="("){let I=M0(Z,K+1,"(",")");if(!I){$+=Z[K],K++;continue}let{content:V,endPos:A}=I,B=A;while(B<Z.length&&/\s/.test(Z[B]))B++;let P,j=Z.slice(B,B+2);if(j==="->"||j==="-?"||j==="-!"){B+=2;while(B<Z.length&&/\s/.test(Z[B]))B++;let C=F0(Z,B);if(C){P=C.type,B=C.endPos;while(B<Z.length&&/\s/.test(Z[B]))B++}}if(Z.slice(B,B+2)==="=>"){let C=null,E=V,T=V.trimStart();if(T.startsWith("?")&&(T.length===1||/\s/.test(T[1])))C="?",E=T.slice(1);else if(T.startsWith("!")&&(T.length===1||/\s/.test(T[1])))C="!",E=T.slice(1);let g=M4(E,X,!1);$+=`(${C==="?"?"/* safe */ ":C==="!"?"/* unsafe */ ":""}${g})`,K=A;while(K<B&&/\s/.test(Z[K]))$+=Z[K],K++;if(P)K=B}else{let C=P0(V,X);$+=`(${C.source})`,K=A}continue}$+=Z[K],K++}return{source:$,returnType:Q,returnSafety:H}}function M0(Z,X,$,K){let Q=1,H=X,Y=!1,G="";while(H<Z.length&&Q>0){let z=Z[H];if(!Y&&(z==="'"||z==='"'||z==="`"))Y=!0,G=z;else if(Y&&z===G&&Z[H-1]!=="\\")Y=!1;else if(!Y){if(z===$)Q++;else if(z===K)Q--}H++}if(Q!==0)return null;return{content:Z.slice(X,H-1),endPos:H}}function B6(Z,X){let $=X;while($<Z.length&&/\s/.test(Z[$]))$++;if($>=Z.length)return null;let K=$,Q=Z[$];if(Q==="{"||Q==="["){let Y=Q==="{"?"}":"]",G=M0(Z,$+1,Q,Y);if(!G)return null;return{value:Z.slice(K,G.endPos),endPos:G.endPos}}if(Q==="'"||Q==='"'||Q==="`"){$++;while($<Z.length){if(Z[$]===Q&&Z[$-1]!=="\\")return $++,{value:Z.slice(K,$),endPos:$};$++}return null}if(/[-+\d]/.test(Q)){while($<Z.length&&/[\d.eE+-]/.test(Z[$]))$++;return{value:Z.slice(K,$),endPos:$}}let H=Z.slice($).match(/^(true|false|null|undefined)\b/);if(H)return{value:H[1],endPos:$+H[1].length};return null}function a1(Z){return Z.replace(/(?<!\|)\|(?!\|)/g," || ")}function F0(Z,X){let $=X,K=0,Q=!1,H="",Y=!1,G=(z)=>({type:a1(Z.slice(X,z).trim()),endPos:z});while($<Z.length){let z=Z[$];if(!Q&&(z==="'"||z==='"'||z==="`")){Q=!0,H=z,Y=!0,$++;continue}if(Q){if(z===H&&Z[$-1]!=="\\"){if(Q=!1,$++,K===0){let W=$;while(W<Z.length&&/\s/.test(Z[W]))W++;if(Z[W]==="{"){if(!Z.slice(W+1).match(/^\s*(\w+)\s*:/))return G($)}if(Z[W]!=="|"&&Z[W]!=="&")return G($)}continue}$++;continue}if(z==="{"||z==="["||z==="("){K++,Y=!0,$++;continue}if(z==="}"||z==="]"||z===")"){if(K--,K===0){$++;let W=$;while(W<Z.length&&/\s/.test(Z[W]))W++;if(Z[W]==="|"||Z[W]==="&")continue;return G($)}$++;continue}if(K===0&&z==="{"){if(Y)return G($);if(Z.slice($+1).match(/^\s*(\w+)\s*:/)){K++,Y=!0,$++;continue}return G($)}if(K===0&&(z==="|"||z==="&")){if($++,$<Z.length&&Z[$]==="|")$++;while($<Z.length&&/\s/.test(Z[$]))$++;continue}if(K===0&&(/\d/.test(z)||z==="-"&&/\d/.test(Z[$+1]))){let W=$;if(Z[W]==="-")W++;while(W<Z.length&&/\d/.test(Z[W]))W++;if(W<Z.length&&Z[W]==="."&&/\d/.test(Z[W+1])){W++;while(W<Z.length&&/\d/.test(Z[W]))W++}if(W<Z.length&&(Z[W]==="e"||Z[W]==="E")){if(W++,W<Z.length&&(Z[W]==="+"||Z[W]==="-"))W++;while(W<Z.length&&/\d/.test(Z[W]))W++}Y=!0,$=W;while($<Z.length&&/\s/.test(Z[$]))$++;if($<Z.length&&Z[$]==="{")return{type:a1(Z.slice(X,W).trim()),endPos:W};if(Z[$]!=="|"&&Z[$]!=="&")return{type:a1(Z.slice(X,W).trim()),endPos:W};continue}if(K===0&&/[a-zA-Z_]/.test(z)){let W=$;while(W<Z.length&&/\w/.test(Z[W]))W++;Y=!0,$=W;while($<Z.length&&/\s/.test(Z[$]))$++;if($<Z.length&&Z[$]==="{"){if(!Z.slice($+1).match(/^\s*(\w+)\s*:/)){let L=W;while(L>X&&/\s/.test(Z[L-1]))L--;return{type:a1(Z.slice(X,L).trim()),endPos:W}}}if(Z[$]!=="|"&&Z[$]!=="&")return{type:a1(Z.slice(X,W).trim()),endPos:W};continue}$++}if(Y)return G($);return null}function V0(Z){let X=[],$="",K=0,Q=!1,H=!1,Y=0;while(Y<Z.length){let G=Z[Y],z=Z[Y+1];if(!H&&G==="/"&&z==="/"){Q=!0,$+="//",Y+=2;continue}if(!Q&&G==="/"&&z==="*"){H=!0,$+="/*",Y+=2;continue}if(Q&&G===`
|
|
5
|
+
`){Q=!1,$+=G,Y++;continue}if(H&&G==="*"&&z==="/"){H=!1,$+="*/",Y+=2;continue}if(Q||H){$+=G,Y++;continue}if(G==="("||G==="{"||G==="[")K++,$+=G;else if(G===")"||G==="}"||G==="]")K--,$+=G;else if(G===","&&K===0)X.push($),$="";else $+=G;Y++}if($.trim())X.push($);return X}function M4(Z,X,$){let K=P0(Z,{originalSource:Z,requiredParams:X.requiredParams,unsafeFunctions:X.unsafeFunctions,safeFunctions:X.safeFunctions}).source,Q=V0(K),H=!1,Y=new Set,G=(W)=>{if($&&/^\w+$/.test(W)){if(Y.has(W))throw Error(`Duplicate parameter name '${W}'`);Y.add(W)}};return Q.map((W)=>{let J=W.trim();if(!J)return W;if($&&J.startsWith("{")&&J.endsWith("}")){let U=J.slice(1,-1);return`{ ${R6(U,X)} }`}if($&&J.startsWith("[")&&J.endsWith("]")){let U=J.slice(1,-1);return`[ ${R6(U,X)} ]`}let L=J.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(L){let[,U,R]=L;return G(U),H=!0,`${U} = ${R}`}if(!M8(J)){let U=J.match(/^(\w+)\s*=/);if(U)G(U[1]);return H=!0,W}let _=w8(J);if(_!==-1){let U=J.slice(0,_).trim(),R=J.slice(_+1).trim();if(G(U),H&&$&&/^\w+$/.test(U))throw Error(`Required parameter '${U}' cannot follow optional parameter`);if($&&/^\w+$/.test(U))X.requiredParams.add(U);return`${U} = ${R}`}return W}).join(",")}function R6(Z,X){return V0(Z).map((Q)=>{let H=Q.trim();if(!H)return Q;let Y=H.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(Y){let[,W,J]=Y;X.requiredParams.add(W);let L=w0(J);return`${W} = ${L}`}let G=H.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(G){let[,W,J]=G;X.requiredParams.add(W);let L=j0(J);return`${W} = ${L}`}let z=H.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(z){let[,W,J]=z;return X.requiredParams.add(W),`${W} = ${J}`}return Q}).join(", ")}function w0(Z){let X=Z.slice(1,-1).trim();return`{ ${V0(X).map((Q)=>{let H=Q.trim();if(!H)return Q;let Y=H.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(Y){let[,L,_]=Y;return`${L}: ${w0(_)}`}let G=H.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(G){let[,L,_]=G;return`${L}: ${w0(_)}`}let z=H.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(z){let[,L,_]=z;return`${L}: ${j0(_)}`}let W=H.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(W){let[,L,_]=W;return`${L}: ${j0(_)}`}let J=H.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(J){let[,L,_]=J;return`${L}: ${_}`}return Q}).join(", ")} }`}function j0(Z){let X=Z.slice(1,-1).trim();return`[ ${V0(X).map((Q)=>{let H=Q.trim();if(!H)return Q;if(H.startsWith("{")&&H.endsWith("}"))return w0(H);if(H.startsWith("[")&&H.endsWith("]"))return j0(H);return Q}).join(", ")} ]`}function M8(Z){let X=0,$=!1,K=!1,Q=!1,H="";for(let Y=0;Y<Z.length;Y++){let G=Z[Y];if(!Q&&(G==="'"||G==='"'||G==="`")){Q=!0,H=G;continue}if(Q){if(G===H&&Z[Y-1]!=="\\")Q=!1;continue}if(G==="("||G==="{"||G==="[")X++;else if(G===")"||G==="}"||G==="]")X--;else if(X===0){if(G===":")$=!0;if(G==="="&&Z[Y+1]!==">")K=!0}}return $&&!K}function w8(Z){let X=0,$=!1,K="";for(let Q=0;Q<Z.length;Q++){let H=Z[Q];if(!$&&(H==="'"||H==='"'||H==="`")){$=!0,K=H;continue}if($){if(H===K&&Z[Q-1]!=="\\")$=!1;continue}if(H==="("||H==="{"||H==="[")X++;else if(H===")"||H==="}"||H==="]")X--;else if(X===0&&H===":")return Q}return-1}function M6(Z){let X="",$=0;while($<Z.length){let K=Z.slice($).match(/^\btry\s*\{/);if(K){let H=$+K[0].length-1+1,Y=1,G=H;while(G<Z.length&&Y>0){let W=Z[G];if(W==="{")Y++;else if(W==="}")Y--;G++}if(Y!==0){X+=Z[$],$++;continue}if(Z.slice(G).match(/^\s*(catch|finally)\b/))X+=Z.slice($,G),$=G;else{let W=Z.slice(H,G-1);X+=`try {${W}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,$=G}}else X+=Z[$],$++}return X}function w6(Z){let X=[],$="",K=0,Q=0;while(K<Z.length){let H=Z.slice(K).match(/^\bwasm\s*\{/);if(H){let Y=K,G=K+H[0].length,z=1,W=G;while(W<Z.length&&z>0){let j=Z[W];if(j==="{")z++;else if(j==="}")z--;W++}if(z!==0){$+=Z[K],K++;continue}let J=Z.slice(G,W-1),L,_=W,U=Z.slice(W).match(/^\s*fallback\s*\{/);if(U){let j=W+U[0].length;z=1;let C=j;while(C<Z.length&&z>0){let E=Z[C];if(E==="{")z++;else if(E==="}")z--;C++}if(z===0)L=Z.slice(j,C-1),_=C}let M=P8(J).map((j)=>{let C=V8(Z,Y,j);return C?`${j}: ${C}`:j}),w={id:`__tjs_wasm_${Q}`,body:J,fallback:L,captures:M,start:Y,end:_};X.push(w);let I=L??J,V=M.map((j)=>j.split(":")[0].trim()),A=V.length>0?V.join(", "):"",B=V.length>0?`globalThis.${w.id}(${A})`:`globalThis.${w.id}()`,P=`(globalThis.${w.id} ? ${B} : (() => {${I}})())`;$+=P,K=_,Q++}else $+=Z[K],K++}return{source:$,blocks:X}}function j8(Z){return Z.startsWith("f32x4_")||Z.startsWith("v128_")}function P8(Z){let X=Z.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),$=new Set,K=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,Q;while((Q=K.exec(X))!==null)$.add(Q[1]);let H=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,Y=new Set;while((Q=H.exec(X))!==null)Y.add(Q[1]);for(let _ of $){if(!Y.has(_))continue;let U=new RegExp(`(?<!\\.)\\b${_}\\b`,"g"),R=new RegExp(`\\.${_}\\b`,"g"),M=X.match(U)?.length||0,w=X.match(R)?.length||0;if(M<=w)Y.delete(_)}let G=new Set,z=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;while((Q=z.exec(X))!==null)G.add(Q[1]);let W=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;while((Q=W.exec(X))!==null)G.add(Q[1]);let J=new Set(["if","else","for","while","do","switch","case","break","continue","return","function","let","const","var","new","this","true","false","null","undefined","typeof","instanceof","in","of","try","catch","finally","throw","async","await","class","extends","super","import","export","default","from","as","static","get","set","yield","console","Math","Array","Object","String","Number","Boolean","Date","JSON","Promise","Map","Set","WeakMap","WeakSet","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","ArrayBuffer","DataView","Error","TypeError","RangeError","length","push","pop","shift","unshift","slice","splice","map","filter","reduce","forEach","find","findIndex","indexOf","includes","globalThis","window","document","Infinity","NaN","isNaN","isFinite","parseInt","parseFloat","encodeURI","decodeURI","eval","wasmBuffer"]),L=[];for(let _ of Y)if(!G.has(_)&&!J.has(_)&&!j8(_))L.push(_);return L.sort()}function V8(Z,X,$){let K=Z.slice(0,X),Q=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,H=K.match(Q);if(!H){let Y=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,G=K.match(Y);if(!G)return;return I6(G[1],$)}return I6(H[1],$)}function I6(Z,X){let $=Z.split(",").map((K)=>K.trim());for(let K of $){let Q=K.match(new RegExp(`^${X}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(Q)return Q[1];let H=K.match(new RegExp(`^${X}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(H)return H[1]}return}function j6(Z){let $=new RegExp(`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")\\s+IsNot\\s+([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,"g");Z=Z.replace($,"IsNot($1, $2)");let K=new RegExp(`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")\\s+Is\\s+([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,"g");return Z=Z.replace(K,"Is($1, $2)"),Z}function P6(Z){let X=/^[\s]*[([/+\-`]/,$=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,K=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,Q=Z.split(`
|
|
6
|
+
`),H=[];for(let Y=0;Y<Q.length;Y++){let G=Q[Y],z=Y>0?Q[Y-1]:"";if(Y>0&&X.test(G)){let W=z.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!$.test(W)&&!K.test(W)){let J=G.match(/^(\s*)/),L=J?J[1]:"",_=G.slice(L.length);H.push(L+";"+_);continue}}H.push(G)}return H.join(`
|
|
7
|
+
`)}function V6(Z){let X=[],$=0,K="normal",Q=[];while($<Z.length){let Y=Z[$],G=Z[$+1];switch(K){case"single-string":if(Y==="\\"&&$+1<Z.length){$+=2;continue}if(Y==="'")K="normal";$++;continue;case"double-string":if(Y==="\\"&&$+1<Z.length){$+=2;continue}if(Y==='"')K="normal";$++;continue;case"template-string":if(Y==="\\"&&$+1<Z.length){$+=2;continue}if(Y==="$"&&G==="{"){$+=2,Q.push(1),K="normal";continue}if(Y==="`")K="normal";$++;continue;case"line-comment":if(Y===`
|
|
8
|
+
`)K="normal";$++;continue;case"block-comment":if(Y==="*"&&G==="/"){$+=2,K="normal";continue}$++;continue;case"regex":if(Y==="\\"&&$+1<Z.length){$+=2;continue}if(Y==="["){$++;while($<Z.length&&Z[$]!=="]")if(Z[$]==="\\"&&$+1<Z.length)$+=2;else $++;if($<Z.length)$++;continue}if(Y==="/"){$++;while($<Z.length&&/[gimsuy]/.test(Z[$]))$++;K="normal";continue}$++;continue;case"normal":if(Q.length>0){if(Y==="{")Q[Q.length-1]++;else if(Y==="}"){if(Q[Q.length-1]--,Q[Q.length-1]===0){Q.pop(),$++,K="template-string";continue}}}if(Y==="'"){$++,K="single-string";continue}if(Y==='"'){$++,K="double-string";continue}if(Y==="`"){$++,K="template-string";continue}if(Y==="/"&&G==="/"){$+=2,K="line-comment";continue}if(Y==="/"&&G==="*"){$+=2,K="block-comment";continue}if(Y==="/"){let z=$-1;while(z>=0&&/\s/.test(Z[z]))z--;let W=z>=0?Z[z]:"";if(!W||/[=(!,;:{[&|?+\-*%<>~^]/.test(W)||z>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(Z.slice(Math.max(0,z-10),z+1))){$++,K="regex";continue}}if(Y==="="&&G==="="&&Z[$+2]!=="="&&Z[$-1]!=="!"){X.push({pos:$,op:"=="}),$+=2;continue}if(Y==="!"&&G==="="&&Z[$+2]!=="="){X.push({pos:$,op:"!="}),$+=2;continue}break}$++}if(X.length===0)return Z;let H=Z;for(let Y=X.length-1;Y>=0;Y--){let{pos:G,op:z}=X[Y],W=z==="=="?"Is":"IsNot",J=C8(H,G),L=O8(H,G+2),_=H.slice(J,G).trim(),U=H.slice(G+2,L).trim();if(_&&U){let R=H.slice(0,J),M=H.slice(L),I=/[a-zA-Z0-9_$]$/.test(R)?" ":"";H=`${R}${I}${W}(${_}, ${U})${M}`}}return H}function C8(Z,X){let $=X-1;while($>=0&&/\s/.test(Z[$]))$--;if($<0)return 0;let K=0,Q=!1,H="";while($>=0){let Y=Z[$],G=$>0?Z[$-1]:"";if(Q){if(Y===H&&G!=="\\")Q=!1;$--;continue}if((Y==='"'||Y==="'"||Y==="`")&&G!=="\\"){Q=!0,H=Y,$--;continue}if(Y===")"||Y==="]"){K++,$--;continue}if(Y==="("||Y==="["){if(K>0){K--,$--;continue}return $+1}if(K>0){$--;continue}if(Y===";"||Y==="{"||Y==="}")return $+1;if(/[a-z]/.test(Y)){let z=$+1,W=$;while(W>0&&/[a-z]/i.test(Z[W-1]))W--;let J=Z.slice(W,z),L=W>0?Z[W-1]:"";if(!/[a-zA-Z0-9_$]/.test(L)){if(["return","throw","case","typeof","void","delete","await","yield","new"].includes(J))return z}}if(Y===">"&&G==="=")return $+1;if(Y==="="&&G!=="="&&G!=="!"&&G!=="<"&&G!==">")return $+1;if(Y==="&"&&G==="&")return $+1;if(Y==="|"&&G==="|")return $+1;if(Y==="?"||Y===":")return $+1;if(Y===",")return $+1;$--}return 0}function O8(Z,X){let $=X;while($<Z.length&&/\s/.test(Z[$]))$++;if($>=Z.length)return Z.length;let K=0,Q=!1,H="";while($<Z.length){let Y=Z[$],G=$+1<Z.length?Z[$+1]:"";if(Q){if(Y===H&&Z[$-1]!=="\\")Q=!1;$++;continue}if((Y==='"'||Y==="'"||Y==="`")&&Z[$-1]!=="\\"){Q=!0,H=Y,$++;continue}if(Y==="("||Y==="["||Y==="{"){K++,$++;continue}if(Y===")"||Y==="]"||Y==="}"){if(K>0){K--,$++;continue}return $}if(K>0){$++;continue}if(Y===";")return $;if(Y==="&"&&G==="&")return $;if(Y==="|"&&G==="|")return $;if(Y==="?")return $;if(Y===":")return $;if(Y===",")return $;if((Y==="="||Y==="!")&&G==="="&&Z[$+2]!=="=")return $;$++}return Z.length}function C6(Z){let X="",$=0;while($<Z.length){let K=Z.slice($).match(/^\bType\s+([A-Z][a-zA-Z0-9_]*)\s*/);if(K){let Q=K[1],H=$+K[0].length,Y=Q,G=!1,z=Z.slice(H).match(/^(['"`])([^]*?)\1\s*/);if(z){let _=H+z[0].length,U=Z[_],R=U===void 0||_>=Z.length||U!=="="&&U!=="{";if(U==="="||U==="{")Y=z[2],G=!0,H=_;else if(R){let M=z[0].trim(),w=z[0].slice(M.length);X+=`const ${Q} = Type('${Q}', ${M})${w}`,$=_;continue}}let W,J=H,L=Z.slice(H).match(/^=\s*/);if(L){H+=L[0].length;let _=Z.slice(H).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(_){W=_[0],H+=_[0].length,J=H;let U=Z.slice(H).match(/^\s*/);if(U)H+=U[0].length}}if(Z[H]==="{"){let _=H+1,U=1,R=_;while(R<Z.length&&U>0){let P=Z[R];if(P==="{")U++;else if(P==="}")U--;R++}if(U!==0){X+=Z[$],$++;continue}let M=Z.slice(_,R-1).trim(),w=R,I=M.match(/description\s*:\s*(['"`])([^]*?)\1/);if(I&&!G)Y=I[2];let V,A=M.match(/example\s*:\s*/);if(A){let P=A.index+A[0].length,j=B6(M,P);if(j)V=j.value.trim()}let B=M.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(B&&V){let P=B[1].trim(),j=B[2].trim(),C=W?`, ${W}`:"";X+=`const ${Q} = Type('${Y}', (${P}) => { if (!globalThis.__tjs?.validate(${P}, globalThis.__tjs?.infer(${V}))) return false; ${j} }, ${V}${C})`}else if(B){let P=B[1].trim(),j=B[2].trim(),C=W?`, undefined, ${W}`:"";X+=`const ${Q} = Type('${Y}', (${P}) => { ${j} }${C})`}else if(V){let P=W?`, ${W}`:"";X+=`const ${Q} = Type('${Y}', undefined, ${V}${P})`}else if(W)X+=`const ${Q} = Type('${Y}', ${W})`;else X+=`const ${Q} = Type('${Y}')`;$=w;continue}else if(W){X+=`const ${Q} = Type('${Y}', ${W})`,$=J;continue}else if(!z){let _=Z.slice(H).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(_){let U=_[0];X+=`const ${Q} = Type('${Q}', ${U})`,$=H+_[0].length;continue}}}X+=Z[$],$++}return X}function O6(Z){let X="",$=0;while($<Z.length){let K=Z.slice($).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(K){let Q=K[1],H=K[2],G=$+K[0].length-1+1,z=1,W=G;while(W<Z.length&&z>0){let w=Z[W];if(w==="{")z++;else if(w==="}")z--;W++}if(z!==0){X+=Z[$],$++;continue}let J=Z.slice(G,W-1).trim(),L=W,_=H.split(",").map((w)=>{let I=w.trim().split("=").map((V)=>V.trim());if(I.length===2)return`['${I[0]}', ${I[1]}]`;return`'${I[0]}'`}),U=J.match(/description\s*:\s*(['"`])([^]*?)\1/),R=J.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),M=U?U[2]:Q;if(R){let w=R[1].trim().split(",").map((P)=>P.trim()),I=R[2].trim(),V=w[0]||"x",A=w.slice(1),B=A.map((P)=>`check${P}`);A.forEach((P,j)=>{I=I.replace(new RegExp(`\\b${P}\\s*\\(`,"g"),`${B[j]}(`)}),X+=`const ${Q} = Generic([${_.join(", ")}], (${V}, ${B.join(", ")}) => { ${I} }, '${M}')`}else X+=`const ${Q} = Generic([${_.join(", ")}], () => true, '${M}')`;$=L;continue}X+=Z[$],$++}return X}function N6(Z){let X="",$=0;while($<Z.length){let K=Z.slice($).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(K){let Q=K[1],H=K[3],Y=$+K[0].length;if(Z[Y]==="{"){let G=Y+1,z=1,W=G;while(W<Z.length&&z>0){let U=Z[W];if(U==="{")z++;else if(U==="}")z--;W++}if(z!==0){X+=Z[$],$++;continue}let J=Z.slice(G,W-1).trim(),L=W,_=A6(J);X+=`const ${Q} = Union('${H}', [${_.join(", ")}])`,$=L;continue}else{let G=Z.indexOf(`
|
|
9
|
+
`,Y);if(G===-1)G=Z.length;let z=Z.slice(Y,G).trim();if(z){let W=A6(z);X+=`const ${Q} = Union('${H}', [${W.join(", ")}])`,$=G;continue}}}X+=Z[$],$++}return X}function A6(Z){let X=[],$=Z.split("|").map((K)=>K.trim());for(let K of $){if(!K)continue;X.push(K)}return X}function E6(Z){let X="",$=0;while($<Z.length){let K=Z.slice($).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(K){let Q=K[1],H=K[3],G=$+K[0].length-1+1,z=1,W=G;while(W<Z.length&&z>0){let R=Z[W];if(R==="{")z++;else if(R==="}")z--;W++}if(z!==0){X+=Z[$],$++;continue}let J=Z.slice(G,W-1).trim(),L=W,U=N8(J).map(([R,M])=>`${R}: ${M}`).join(", ");X+=`const ${Q} = Enum('${H}', { ${U} })`,$=L;continue}X+=Z[$],$++}return X}function N8(Z){let X=[],$=0,K=Z.split(/[\n,]/).map((Q)=>Q.trim()).filter((Q)=>Q&&!Q.startsWith("//"));for(let Q of K){let H=Q.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*(?:=\s*(.+))?$/);if(H){let Y=H[1],G=H[2]?.trim();if(G!==void 0){X.push([Y,G]);let z=Number(G);if(!isNaN(z))$=z+1}else X.push([Y,String($)]),$++}}return X}function T6(Z){let X=new Map,$="",K=0;while(K<Z.length){let Q=Z.slice(K),H=Q.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/);if(!H){if(K===0||Z[K-1]===`
|
|
10
|
+
`||Z[K-1]===";"||Z[K-1]==="}"){let A=Q.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}$+=Z[K],K++;continue}let Y=H[1],G=H[2],z=K+H[0].length-1,W=t1(Z,z),J=Z.slice(z+1,W-1).trim(),L=[],_=0,U=Z.slice(z+1,W-1);while(_<U.length){let A=U.slice(_).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!A){_++;continue}let B=A[1],P=!!A[2],j=A[3],C=_+A[0].length-1,E=1,T=C+1;while(T<U.length&&E>0){if(U[T]==="(")E++;if(U[T]===")")E--;T++}let g=U.slice(C+1,T-1),b=T;while(b<U.length&&/\s/.test(U[b]))b++;if(U[b]==="="&&U[b+1]===">"){let o=r1(Z,z+1+_);throw new K1(`Arrow functions are not allowed in extend blocks (method '${j}' in extend ${G}). Use regular function syntax instead, as extension methods need 'this' binding.`,o)}if(U[b]!=="{"){_++;continue}let c=t1(U,b),a=U.slice(_,c).trim(),v=g.split(",").map((o)=>o.trim()).filter((o)=>o.length>0).map((o)=>{let D1=o.match(/^(\w+)\s*:\s*(.+)$/);if(D1)return`${D1[1]} = ${D1[2]}`;return o}).join(", "),y=P?"async ":"",Z1=U.slice(b+1,c-1);L.push({name:j,isAsync:P,fullText:`${j}: ${y}function(${v}) {${Z1}}`}),_=c}let R=!X.has(G);if(R)X.set(G,new Set);let M=X.get(G);for(let V of L)M.add(V.name);let w=L.map((V)=>` ${V.fullText}`).join(`,
|
|
11
|
+
`),I;if(R)I=`${Y}const __ext_${G} = {
|
|
12
|
+
${w}
|
|
13
13
|
${Y}}
|
|
14
|
-
`;else
|
|
15
|
-
${
|
|
14
|
+
`;else I=`${Y}Object.assign(__ext_${G}, {
|
|
15
|
+
${w}
|
|
16
16
|
${Y}})
|
|
17
|
-
`;for(let
|
|
18
|
-
|
|
19
|
-
`)
|
|
20
|
-
`)H=!1;K++;continue}if(Y){if(G==="*"&&z==="/"){Y=!1,K+=2;continue}K++;continue}if(Q){if(G==="\\"){K+=2;continue}if(G===Q)Q=!1;K++;continue}if(G==="/"&&z==="/"){H=!0,K+=2;continue}if(G==="/"&&z==="*"){Y=!0,K+=2;continue}if(G==="'"||G==='"'||G==="`"){Q=G,K++;continue}if(G==="{")
|
|
21
|
-
${
|
|
22
|
-
${
|
|
17
|
+
`;for(let V of L)I+=`${Y}if (__tjs?.registerExtension) { __tjs.registerExtension('${G}', '${V.name}', __ext_${G}.${V.name}) }
|
|
18
|
+
`;$+=I,K=W}if(K<=Z.length&&$.length<Z.length);return{source:$,extensions:X}}function e1(Z,X){if(X.size===0)return Z;let $=new Map;for(let[Q,H]of X)for(let Y of H){if(!$.has(Y))$.set(Y,[]);$.get(Y).push(Q)}let K=Z;for(let[Q,H]of $){if(!H.includes("String"))continue;let Y=new RegExp(`('(?:[^'\\\\]|\\\\.)*')\\.(${Q})\\((\\))?`,"g");K=K.replace(Y,(W,J,L,_)=>{return _?`__ext_String.${L}.call(${J})`:`__ext_String.${L}.call(${J}, `});let G=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${Q})\\((\\))?`,"g");K=K.replace(G,(W,J,L,_)=>{return _?`__ext_String.${L}.call(${J})`:`__ext_String.${L}.call(${J}, `});let z=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+Q+"\\((\\))?","g");K=K.replace(z,(W,J,L)=>{return L?`__ext_String.${Q}.call(${J})`:`__ext_String.${Q}.call(${J}, `})}for(let[Q,H]of $){if(!H.includes("Array"))continue;let Y=`].${Q}(`,G=0,z;while((z=K.indexOf(Y,G))!==-1){let W=1,J=z-1,L=!1;while(J>=0&&W>0){let _=K[J];if(L){if(_===L&&(J===0||K[J-1]!=="\\"))L=!1}else{if(_==="]")W++;if(_==="[")W--;if(_==="'"||_==='"'||_==="`")L=_}J--}if(W===0){let _=K.slice(J+1,z+1),U=K.slice(0,J+1),R=K.slice(z+Y.length);if(R[0]===")")K=`${U}__ext_Array.${Q}.call(${_})${R.slice(1)}`;else K=`${U}__ext_Array.${Q}.call(${_}, ${R}`}G=z+1}}for(let[Q,H]of $){if(!H.includes("Number"))continue;let Y=new RegExp(`(\\d+(?:\\.\\d+)?)\\.(${Q})\\((\\))?`,"g");K=K.replace(Y,(G,z,W,J)=>{return J?`__ext_Number.${W}.call(${z})`:`__ext_Number.${W}.call(${z}, `})}return K}function r1(Z,X){let $=1,K=0;for(let Q=0;Q<X&&Q<Z.length;Q++)if(Z[Q]===`
|
|
19
|
+
`)$++,K=0;else K++;return{line:$,column:K}}function S6(Z,X){let $=X.trim();if(/^['"`]/.test($))return`typeof ${Z} === 'string'`;if($==="true"||$==="false")return`typeof ${Z} === 'boolean'`;if($==="null")return`${Z} === null`;if($==="undefined")return`${Z} === undefined`;if($.startsWith("["))return`Array.isArray(${Z})`;if($.startsWith("{"))return`(typeof ${Z} === 'object' && ${Z} !== null && !Array.isArray(${Z}))`;if(/^\+\d+/.test($))return`(typeof ${Z} === 'number' && Number.isInteger(${Z}) && ${Z} >= 0)`;if(/^-?\d+\.\d+/.test($))return`typeof ${Z} === 'number'`;if(/^-?\d+$/.test($))return`(typeof ${Z} === 'number' && Number.isInteger(${Z}))`;return"true"}function C0(Z){let X=Z.trim();if(/^['"`]/.test(X))return"string";if(X==="true"||X==="false")return"boolean";if(X==="null")return"null";if(X==="undefined")return"undefined";if(X.startsWith("["))return"array";if(X.startsWith("{"))return"object";if(/^\+\d+/.test(X))return"non-negative-integer";if(/^-?\d+\.\d+/.test(X))return"number";if(/^-?\d+$/.test(X))return"integer";return"any"}function w4(Z,X){let $=[],K=0,Q="",H=!1;for(let G=0;G<Z.length;G++){let z=Z[G];if(!H&&(z==="'"||z==='"'||z==="`")){H=z,Q+=z;continue}if(H){if(Q+=z,z==="\\"){if(G++,G<Z.length)Q+=Z[G];continue}if(z===H)H=!1;continue}if(z==="("||z==="["||z==="{"){K++,Q+=z;continue}if(z===")"||z==="]"||z==="}"){K--,Q+=z;continue}if(z===","&&K===0){let W=F6(Q.trim(),X);if(W)$.push(W);Q="";continue}Q+=z}let Y=Q.trim();if(Y){let G=F6(Y,X);if(G)$.push(G)}return $}function F6(Z,X){let $=Z.replace(/^\/\*\s*unsafe\s*\*\/\s*/,"");if($.startsWith("..."))return null;let K=$.indexOf("=");if(K===-1)return{name:$.trim(),defaultValue:"",required:!0};let Q=$.slice(0,K).trim(),H=$.slice(K+1).trim();return{name:Q,defaultValue:H,required:X.has(Q)}}function t1(Z,X){let $=1,K=X+1,Q=!1,H=!1,Y=!1;while(K<Z.length&&$>0){let G=Z[K],z=K+1<Z.length?Z[K+1]:"";if(H){if(G===`
|
|
20
|
+
`)H=!1;K++;continue}if(Y){if(G==="*"&&z==="/"){Y=!1,K+=2;continue}K++;continue}if(Q){if(G==="\\"){K+=2;continue}if(G===Q)Q=!1;K++;continue}if(G==="/"&&z==="/"){H=!0,K+=2;continue}if(G==="/"&&z==="*"){Y=!0,K+=2;continue}if(G==="'"||G==='"'||G==="`"){Q=G,K++;continue}if(G==="{")$++;if(G==="}")$--;K++}return K}function k6(Z,X){let $=new Set,K=/(?:^|(?<=[\n;{}]))\s*(export\s+)?(async\s+)?function\s+(\w+)\s*\(/gm,Q=new Map,H,Y=[];while((H=K.exec(Z))!==null){let L=!!H[1],_=!!H[2],U=H[3],R=H.index,M=R,I=H[0].indexOf("function");if(I>=0)M=R+I;Y.push({name:U,fullMatchStart:R,funcKeywordStart:M,exported:L,isAsync:_})}for(let L of Y)if(!Q.has(L.name))Q.set(L.name,[]);let G=new Map;for(let L of Y)G.set(L.name,(G.get(L.name)||0)+1);let z=new Set;for(let[L,_]of G)if(_>1)z.add(L);if(z.size===0)return{source:Z,polymorphicNames:$};for(let L of Y){if(!z.has(L.name))continue;let _=Z.indexOf("(",L.funcKeywordStart);if(_===-1)continue;let U=1,R=_+1;while(R<Z.length&&U>0){if(Z[R]==="(")U++;if(Z[R]===")")U--;R++}let M=R-1,w=Z.slice(_+1,M),I=R;while(I<Z.length&&Z[I]!=="{")I++;if(I>=Z.length)continue;let V=t1(Z,I),A=L.fullMatchStart;while(A>0&&Z[A-1]===" ")A--;let B=Q.get(L.name),P=w4(w,X);if(w.includes("...")){let C=r1(Z,L.funcKeywordStart);throw new K1(`Rest parameters are not supported in polymorphic function '${L.name}'. Use separate function names instead.`,C)}B.push({index:B.length+1,start:A,end:V,text:Z.slice(A,V),exported:L.exported,isAsync:L.isAsync,params:P})}for(let[L,_]of Q){if(_.length<2)continue;let U=_.filter((R)=>R.isAsync).length;if(U>0&&U<_.length){let R=r1(Z,_[0].start);throw new K1(`Polymorphic function '${L}': all variants must be either sync or async, not mixed.`,R)}for(let R=0;R<_.length;R++)for(let M=R+1;M<_.length;M++){let w=_[R],I=_[M];if(w.params.length!==I.params.length)continue;let V=!0;for(let A=0;A<w.params.length;A++){let B=w.params[A].defaultValue?C0(w.params[A].defaultValue):"any",P=I.params[A].defaultValue?C0(I.params[A].defaultValue):"any";if(B!==P){V=!1;break}}if(V){let A=r1(Z,I.start);throw new K1(`Polymorphic function '${L}': variants ${R+1} and ${M+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,A)}}}let W=[];for(let[L,_]of Q){if(_.length<2)continue;for(let U of _)W.push({name:L,variant:U})}W.sort((L,_)=>_.variant.start-L.variant.start);let J=Z;for(let{name:L,variant:_}of W){let U=_.isAsync?"async ":"",R=_.text.replace(new RegExp(`(?:export\\s+)?${U?U.replace(/\s+$/,"\\s+"):""}function\\s+${L}\\s*\\(`),`${U}function ${L}$$${_.index}(`);J=J.slice(0,_.start)+R+J.slice(_.end)}for(let[L,_]of Q){if(_.length<2)continue;$.add(L);let U=_[0].isAsync,R=_.some((B)=>B.exported),M=U?"async ":"",w=R?"export ":"",I=[..._].sort((B,P)=>{if(B.params.length!==P.params.length)return 0;let j=0,C=0;for(let E of B.params){let T=E.defaultValue?C0(E.defaultValue):"any";if(T==="non-negative-integer")j+=3;else if(T==="integer")j+=2;else if(T!=="any")j+=1}for(let E of P.params){let T=E.defaultValue?C0(E.defaultValue):"any";if(T==="non-negative-integer")C+=3;else if(T==="integer")C+=2;else if(T!=="any")C+=1}return C-j}),V=[];for(let B of I){let P=[`__args.length === ${B.params.length}`],j=[];for(let C=0;C<B.params.length;C++){let E=B.params[C];if(j.push(`__args[${C}]`),E.defaultValue){let T=S6(`__args[${C}]`,E.defaultValue);if(T!=="true")P.push(T)}}V.push(` if (${P.join(" && ")}) return ${L}$${B.index}(${j.join(", ")})`)}let A=`
|
|
21
|
+
${w}${M}function ${L}(...__args) {
|
|
22
|
+
${V.join(`
|
|
23
23
|
`)}
|
|
24
24
|
return __tjs.typeError('${L}', 'no matching overload', __args)
|
|
25
25
|
}
|
|
26
|
-
`;J+=A}return{source:J,polymorphicNames
|
|
27
|
-
${A.message||A}`)}let
|
|
28
|
-
`.repeat(
|
|
29
|
-
`)T--;A=A.slice(0,T)+A.slice(
|
|
30
|
-
function ${z}$ctor$${
|
|
31
|
-
const __obj = Object.create(${z}.prototype)`,
|
|
32
|
-
;(function() {${
|
|
33
|
-
return __obj`,
|
|
26
|
+
`;J+=A}return{source:J,polymorphicNames:$}}function g6(Z){return Z.replace(/(?<=^|[;\n{])\s*([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(X,$)=>{return X.replace($,`const ${$}`)})}function b6(Z,X=!1){let $=[],K=[],Q="",H=0;while(H<Z.length){let Y=Z.slice(H).match(/^\btest\s+/);if(Y){let G=H,z=H+Y[0].length,W,J=Z.slice(z).match(/^(['"`])([^]*?)\1\s*/);if(J)W=J[2],z+=J[0].length;if(Z[z]==="{"){let L=z+1,_=1,U=L;while(U<Z.length&&_>0){let R=Z[U];if(R==="{")_++;else if(R==="}")_--;U++}if(_===0){let R=Z.slice(L,U-1).trim(),M=U,w=(Z.slice(0,G).match(/\n/g)||[]).length+1;if($.push({description:W,body:R,start:G,end:M,line:w}),!X)try{Function(R)()}catch(A){let B=W||`test at line ${w}`;K.push(`Test failed: ${B} (line ${w})
|
|
27
|
+
${A.message||A}`)}let V=(Z.slice(G,M).match(/\n/g)||[]).length;Q+=`
|
|
28
|
+
`.repeat(V),H=M;continue}}}Q+=Z[H],H++}return{source:Q,tests:$,errors:K}}function v6(Z,X){let $=new Set,K=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,Q,H=[];while((Q=K.exec(Z))!==null){let G=Q[1],z=Q[2]?.trim()||"",W=Q.index+Q[0].length-1,J=t1(Z,W),L=Z.slice(W,J);H.push({className:G,extendsClause:z,bodyStart:W,bodyEnd:J,body:L})}let Y=Z;for(let G=H.length-1;G>=0;G--){let{className:z,extendsClause:W,bodyStart:J,bodyEnd:L,body:_}=H[G],U=/\bconstructor\s*\(/g,R,M=[];while((R=U.exec(_))!==null)M.push(R.index);if(M.length<2)continue;$.add(z);let w=[];for(let C=0;C<M.length;C++){let E=M[C],T=_.indexOf("(",E),g=1,b=T+1;while(b<_.length&&g>0){if(_[b]==="(")g++;if(_[b]===")")g--;b++}let c=_.slice(T+1,b-1),a=b;while(a<_.length&&_[a]!=="{")a++;let v=t1(_,a),y=_.slice(a+1,v-1);w.push({index:C+1,paramStr:c,bodyText:y,fullStart:E,fullEnd:v})}let I=_.slice(0,w[0].fullEnd),V=w[w.length-1].fullEnd;I+=_.slice(V);let A=_;for(let C=w.length-1;C>=1;C--){let E=w[C],T=E.fullStart;while(T>0&&A[T-1]===" ")T--;if(T>0&&A[T-1]===`
|
|
29
|
+
`)T--;A=A.slice(0,T)+A.slice(E.fullEnd)}let B="";for(let C=1;C<w.length;C++){let E=w[C],T=w4(E.paramStr,X);if(E.paramStr.includes("...")){let b=r1(Z,J+E.fullStart);throw new K1(`Rest parameters are not supported in polymorphic constructors for '${z}'.`,b)}B+=`
|
|
30
|
+
function ${z}$ctor$${E.index}(${E.paramStr}) {`,B+=`
|
|
31
|
+
const __obj = Object.create(${z}.prototype)`,B+=`
|
|
32
|
+
;(function() {${E.bodyText}}).call(__obj)`,B+=`
|
|
33
|
+
return __obj`,B+=`
|
|
34
34
|
}
|
|
35
|
-
`}let
|
|
35
|
+
`}let P=[];for(let C=0;C<w.length;C++){let E=w[C],T=w4(E.paramStr,X),g=[`a.length === ${T.length}`];for(let b=0;b<T.length;b++){let c=T[b];if(c.defaultValue){let a=S6(`a[${b}]`,c.defaultValue);if(a!=="true")g.push(a)}}if(C===0)P.push(` if (${g.join(" && ")}) return Reflect.construct(t, a)`);else{let b=T.map((c,a)=>`a[${a}]`).join(", ");P.push(` if (${g.join(" && ")}) return ${z}$ctor$${E.index}(${b})`)}}B+=`
|
|
36
36
|
function ${z}$dispatch(t, a) {
|
|
37
|
-
`,
|
|
37
|
+
`,B+=P.join(`
|
|
38
38
|
`)+`
|
|
39
|
-
`,
|
|
40
|
-
`,
|
|
41
|
-
`,Y=Y.slice(0,J)+A+Y.slice(L);let
|
|
42
|
-
`),
|
|
43
|
-
`);return X.description=_.trim(),X}}let H=K.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!H)return X;let Y=H[0],G=Y.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);if(G)X.description=G[1].trim();let z=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,W;while((W=z.exec(Y))!==null)X.params[W[1]]=W[2].trim();return X}import{parseExpressionAt as M8}from"acorn";function Q1(Z){switch(Z.type){case"Literal":{let $=Z.value;if($===null)return{kind:"null"};if(typeof $==="string")return{kind:"string"};if(typeof $==="number"){let X=Z.raw;if(X&&X.includes("."))return{kind:"number"};return{kind:"integer"}}if(typeof $==="boolean")return{kind:"boolean"};return{kind:"any"}}case"ArrayExpression":{let $=Z.elements;if($.length===0)return{kind:"array",items:{kind:"any"}};return{kind:"array",items:Q1($[0])}}case"ObjectExpression":{let $=Z.properties,X={};for(let K of $)if(K.type==="Property"&&K.key.type==="Identifier"){let Q=K.key.name;X[Q]=Q1(K.value)}return{kind:"object",shape:X}}case"LogicalExpression":{let{operator:$,left:X,right:K}=Z;if($==="||"){let Q=Q1(X),H=Q1(K);if(H.kind==="null")return{...Q,nullable:!0};if(Q.kind==="null")return{...H,nullable:!0};return{kind:"union",members:[Q,H]}}if($==="&&")return Q1(K);if($==="??")return Q1(K);return{kind:"any"}}case"Identifier":{if(Z.name==="undefined")return{kind:"undefined"};return{kind:"any"}}case"UnaryExpression":{let{operator:$,argument:X}=Z;if($==="+"&&X.type==="Literal"){if(typeof X.value==="number")return{kind:"non-negative-integer"}}if($==="-"&&X.type==="Literal"){if(typeof X.value==="number"){let Q=X.raw;if(Q&&Q.includes("."))return{kind:"number"};return{kind:"integer"}}}return{kind:"any"}}default:return{kind:"any"}}}function B1(Z,$){if(Z.type==="Identifier")return{name:Z.name,type:{kind:"any"},required:!0};if(Z.type==="AssignmentPattern"){let{left:X,right:K}=Z;if(X.type!=="Identifier")throw new x("Only simple parameter names are supported",u(Z));let Q=X.name,H=$?.has(Q)??!1,Y=Q1(K),G=q1(K);return{name:Q,type:Y,required:H,default:H?null:G,example:G,loc:{start:Z.start,end:Z.end}}}if(Z.type==="ObjectPattern"){let X=Z.properties,K={},Q={};for(let H of X)if(H.type==="Property"){let Y=H.key.type==="Identifier"?H.key.name:String(H.key.value);if(H.value.type==="Identifier")K[Y]={kind:"any"},Q[Y]={name:Y,type:{kind:"any"},required:!0};else if(H.value.type==="AssignmentPattern"){let G=B1(H.value,$),z=$?.has(Y)??!1;K[Y]=G.type,Q[Y]={name:Y,type:G.type,required:z,default:z?null:G.example,example:G.example}}}return{name:"__destructured__",type:{kind:"object",shape:K,destructuredParams:Q},required:!0}}throw new x(`Unsupported parameter pattern: ${Z.type}`,u(Z))}function q1(Z){switch(Z.type){case"Literal":return Z.value;case"ArrayExpression":return Z.elements.map(($)=>$?q1($):null);case"ObjectExpression":{let $={};for(let X of Z.properties)if(X.type==="Property"&&X.key.type==="Identifier")$[X.key.name]=q1(X.value);return $}case"UnaryExpression":if(Z.operator==="-"){let $=q1(Z.argument);return typeof $==="number"?-$:void 0}if(Z.operator==="+"){let $=q1(Z.argument);return typeof $==="number"?+$:void 0}return;case"LogicalExpression":{let{operator:$,left:X,right:K}=Z;if($==="&&"){if(X.type==="Literal"&&X.value===null)return null}if($==="||")return q1(X)??q1(K);if($==="??")return q1(X)??q1(K);return}default:return}}function g6(Z){try{let $=M8(Z,0,{ecmaVersion:2022});return Q1($)}catch{return{kind:"any"}}}function A4(Z){switch(Z.kind){case"string":return Z.nullable?"string | null":"string";case"number":return Z.nullable?"number | null":"number";case"integer":return Z.nullable?"integer | null":"integer";case"non-negative-integer":return Z.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return Z.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let $=Z.items?A4(Z.items):"any";return Z.nullable?`${$}[] | null`:`${$}[]`}case"object":{if(!Z.shape||Object.keys(Z.shape).length===0)return Z.nullable?"object | null":"object";let $=Object.entries(Z.shape).map(([X,K])=>`${X}: ${A4(K)}`).join(", ");return Z.nullable?`{ ${$} } | null`:`{ ${$} }`}case"union":return Z.members?.map(A4).join(" | ")||"any";default:return"any"}}function C0(Z){switch(Z.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":return{};case"undefined":return{};case"any":return{};case"array":return{type:"array",items:Z.items?C0(Z.items):{}};case"object":if(Z.shape){let $={};for(let[X,K]of Object.entries(Z.shape))$[X]=C0(K);return{type:"object",properties:$,additionalProperties:!1}}return{type:"object"};case"union":if(Z.members)return{oneOf:Z.members.map(C0)};return{};default:return{}}}function w8(Z){let $={},X=[];for(let[K,Q]of Object.entries(Z))if($[K]=C0(Q.type),Q.required)X.push(K);return{type:"object",properties:$,required:X.length>0?X:void 0,additionalProperties:!1}}function e1(Z,$,X,K={},Q){let H=a1($,Z),Y=new Map;for(let j of Z.params){let B=B1(j,Q);if(B.name==="__destructured__"&&B.type.kind==="object"&&B.type.destructuredParams)for(let[P,A]of Object.entries(B.type.destructuredParams))Y.set(P,{...A,description:H.params[P]});else B.description=H.params[B.name],Y.set(B.name,B)}let G;if(X)G=g6(X);let z={depth:0,locals:new Map,parameters:Y,atoms:new Set(Object.keys(K.atoms||{})),warnings:[],source:$,filename:K.filename||"<source>",options:K},W=J1(Z.body,z),J=[],L=[],_=[];for(let[j,B]of Y.entries())if(B.required)L.push(j);else if(B.default!==void 0)_.push({name:j,defaultValue:B.default});else L.push(j);if(L.length>0)J.push({op:"varsImport",keys:L});for(let{name:j,defaultValue:B}of _)J.push({op:"varsImport",keys:[j]}),J.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:j},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:j,value:B}]});J.push(...W);let U=Object.fromEntries(Y),I={name:Z.id?.name||"anonymous",description:H.description,parameters:U,returns:G},w=w8(U);return{ast:{op:"seq",steps:J,inputSchema:w},signature:I,warnings:z.warnings}}function J1(Z,$){let X=[];for(let K of Z.body){let Q=r1(K,$);if(Q)if(Array.isArray(Q))X.push(...Q);else X.push(Q)}return X}function r1(Z,$){switch(Z.type){case"VariableDeclaration":return F8(Z,$);case"ExpressionStatement":return j8(Z,$);case"IfStatement":return V8(Z,$);case"WhileStatement":return C8(Z,$);case"ForOfStatement":return O8(Z,$);case"TryStatement":return N8(Z,$);case"ReturnStatement":return E8(Z,$);case"ThrowStatement":throw new x("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",u(Z),$.source,$.filename);case"BlockStatement":return{op:"scope",steps:J1(Z,K1($))};case"EmptyStatement":return null;default:throw new x(`Unsupported statement type: ${Z.type}`,u(Z),$.source,$.filename)}}function F8(Z,$){let X=[],K=Z.kind==="const",Q=K?"constSet":"varSet";for(let H of Z.declarations){if(H.id.type!=="Identifier")throw new x("Only simple variable names are supported",u(H),$.source,$.filename);let Y=H.id.name;if(H.init){let{step:G,resultVar:z}=V1(H.init,$,Y,K);if(G)X.push(G);else if(z!==Y)X.push({op:Q,key:Y,value:z});let W=Q1(H.init);$.locals.set(Y,W)}else{if(K)throw new x("const declarations must be initialized",u(H),$.source,$.filename);X.push({op:"varSet",key:Y,value:null}),$.locals.set(Y,{kind:"any",nullable:!0})}}return X}function j8(Z,$){let X=Z.expression;if(X.type==="AssignmentExpression")return P8(X,$);if(X.type==="CallExpression"){let{step:K,resultVar:Q}=V1(X,$);if(K)return K;if(Q)return{op:"varSet",key:"_",value:Q};return null}return $.warnings.push({message:"Expression statement has no effect",line:u(Z).line,column:u(Z).column}),null}function P8(Z,$){if(Z.left.type!=="Identifier")throw new x("Only simple variable assignment is supported",u(Z),$.source,$.filename);let X=Z.left.name,{step:K,resultVar:Q}=V1(Z.right,$,X);if(K)return K;return{op:"varSet",key:X,value:Q}}function V8(Z,$){let X=h(Z.test,$),K=Z.consequent.type==="BlockStatement"?J1(Z.consequent,K1($)):[r1(Z.consequent,$)].filter(Boolean),Q;if(Z.alternate)Q=Z.alternate.type==="BlockStatement"?J1(Z.alternate,K1($)):[r1(Z.alternate,$)].filter(Boolean);return{op:"if",condition:X,then:K,...Q&&{else:Q}}}function C8(Z,$){let X=h(Z.test,$),K=Z.body.type==="BlockStatement"?J1(Z.body,K1($)):[r1(Z.body,$)].filter(Boolean);return{op:"while",condition:X,body:K}}function O8(Z,$){let X;if(Z.left.type==="VariableDeclaration"){let Y=Z.left.declarations[0];if(Y.id.type!=="Identifier")throw new x("Only simple variable names are supported in for...of",u(Z.left),$.source,$.filename);X=Y.id.name}else if(Z.left.type==="Identifier")X=Z.left.name;else throw new x("Unsupported for...of left-hand side",u(Z.left),$.source,$.filename);let K=c(Z.right,$),Q=K1($);Q.locals.set(X,{kind:"any"});let H=Z.body.type==="BlockStatement"?J1(Z.body,Q):[r1(Z.body,Q)].filter(Boolean);return{op:"map",items:K,as:X,steps:H}}function N8(Z,$){let X=J1(Z.block,K1($)),K,Q;if(Z.handler){let H=K1($);if(Z.handler.param?.type==="Identifier")Q=Z.handler.param.name,H.locals.set(Q,{kind:"any"});K=J1(Z.handler.body,H)}return{op:"try",try:X,...K&&{catch:K},...Q&&{catchParam:Q}}}function E8(Z,$){if(!Z.argument)return{op:"return",value:{}};let{step:X,resultVar:K}=V1(Z.argument,$,"__returnVal__");if(X)return[X,{op:"return",value:K}];return{op:"return",value:c(Z.argument,$)}}var v6=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),T8=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),t1=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),S8=new Set(["toUpperCase","toLowerCase","trim","trimStart","trimEnd","charAt","charCodeAt","codePointAt","concat","includes","indexOf","lastIndexOf","startsWith","endsWith","slice","substring","substr","replace","replaceAll","match","search","padStart","padEnd","repeat","normalize","localeCompare","toString","valueOf","at","reverse","sort","fill","copyWithin","flat","flatMap","every","some","forEach","add","remove","has","clear","toArray","union","intersection","diff","format","isBefore","isAfter"]);function k8(Z){if(Z.callee.type==="Identifier"){let $=Z.callee.name;return T8.has($)||t1.has($)}if(Z.callee.type==="MemberExpression"){let $=Z.callee;if($.object.type==="Identifier"){let X=$.object.name;if(v6.has(X)||t1.has(X))return!0}if($.property.type==="Identifier"){let X=$.property.name;if(S8.has(X))return!0}}return!1}function g8(Z){if(Z.object.type==="Identifier"){let $=Z.object.name;return v6.has($)||t1.has($)}return!1}var b6={RegExp:"RegExp is not available. Use string methods or the regexMatch atom.",Promise:"Promise is not needed. All operations are implicitly async.",Map:"Map is not available. Use plain objects instead.",WeakSet:"WeakSet is not available.",WeakMap:"WeakMap is not available.",Symbol:"Symbol is not available.",Proxy:"Proxy is not available.",Reflect:"Reflect is not available.",Function:"Function constructor is not available. Define functions normally.",eval:"eval is not available. Code is compiled, not evaluated.",setTimeout:"setTimeout is not available. Use the delay atom.",setInterval:"setInterval is not available. Use while loops with delay.",fetch:"fetch is not available. Use the httpFetch atom.",require:"require is not available. Atoms must be registered with the VM.",import:"import is not available. Atoms must be registered with the VM.",process:"process is not available. AsyncJS runs in a sandboxed environment.",window:"window is not available. AsyncJS runs in a sandboxed environment.",document:"document is not available. AsyncJS runs in a sandboxed environment.",global:"global is not available. AsyncJS runs in a sandboxed environment.",globalThis:"globalThis is not available. Use builtins directly."};function b8(Z){if(Z.callee.type==="Identifier"){let $=Z.callee.name;if(t1.has($))return b6[$]||`${$} is not available in AsyncJS.`}if(Z.callee.type==="MemberExpression"){let $=Z.callee;if($.object.type==="Identifier"){let X=$.object.name;if(t1.has(X))return b6[X]||`${X} is not available in AsyncJS.`}}return null}function f6(Z){return{Date:" Use Date() or Date('2024-01-15') instead - no 'new' needed.",Set:" Use Set([items]) instead - no 'new' needed.",Map:" Use plain objects instead of Map.",Array:" Use array literals like [1, 2, 3] instead.",Object:" Use object literals like { key: value } instead.",Error:" Return an error object like { error: 'message' } instead.",RegExp:" Use string methods or the regexMatch atom.",Promise:" Not needed - all operations are implicitly async.",WeakSet:" WeakSet is not available.",WeakMap:" WeakMap is not available."}[Z]||" Use factory functions or object literals instead."}function V1(Z,$,X,K){let Q=K?"constSet":"varSet";if(Z.type==="ChainExpression")return V1(Z.expression,$,X,K);if(Z.type==="NewExpression"){let Y=Z,G="constructor";if(Y.callee.type==="Identifier")G=Y.callee.name;let z=f6(G);throw new x(`The 'new' keyword is not supported in AsyncJS.${z}`,u(Z),$.source,$.filename)}if(Z.type==="CallExpression"){let Y=b8(Z);if(Y)throw new x(Y,u(Z),$.source,$.filename)}if(Z.type==="CallExpression"&&k8(Z)){let Y=h(Z,$);if(X)return{step:{op:Q,key:X,value:Y},resultVar:X};return{step:null,resultVar:Y}}if(Z.type==="MemberExpression"&&g8(Z)){let Y=h(Z,$);if(X)return{step:{op:Q,key:X,value:Y},resultVar:X};return{step:null,resultVar:Y}}if(Z.type==="CallExpression")return v8(Z,$,X,K);if(Z.type==="TemplateLiteral")return y8(Z,$,X,K);if(Z.type==="BinaryExpression"||Z.type==="LogicalExpression"||Z.type==="UnaryExpression"){let Y=h(Z,$);if(X)return{step:{op:Q,key:X,value:Y},resultVar:X};return{step:null,resultVar:Y}}return{step:null,resultVar:c(Z,$)}}function v8(Z,$,X,K){let Q,H=!1,Y;if(Z.callee.type==="Identifier")Q=Z.callee.name;else if(Z.callee.type==="MemberExpression"){let z=Z.callee;if(z.property.type==="Identifier")Q=z.property.name,H=!0,Y=c(z.object,$);else throw new x("Computed method names are not supported",u(Z),$.source,$.filename)}else throw new x("Only named function calls are supported",u(Z),$.source,$.filename);if(H)return f8(Q,Y,Z.arguments,$,X,K);if(Q==="console"&&Z.callee.type==="MemberExpression");let G=h8(Z,$);return{step:{op:Q,...G,...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X}}function f8(Z,$,X,K,Q,H){switch(Z){case"map":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let Y=X[0],G=Y.params[0],z=G?.type==="Identifier"?G.name:"item",W=K1(K);W.locals.set(z,{kind:"any"});let J;if(Y.body.type==="BlockStatement")J=J1(Y.body,W);else{let{step:L,resultVar:_}=V1(Y.body,W,"result");J=L?[L]:[{op:"varSet",key:"result",value:_}]}return{step:{op:"map",items:$,as:z,steps:J,...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}break;case"filter":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let Y=X[0],G=Y.params[0],z=G?.type==="Identifier"?G.name:"item",W=K1(K);W.locals.set(z,{kind:"any"});let J;if(Y.body.type==="BlockStatement")throw new x("filter callback must be an expression, not a block",u(X[0]),K.source,K.filename);else J=h(Y.body,W);return{step:{op:"filter",items:$,as:z,condition:J,...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}break;case"find":if(X.length>0&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let Y=X[0],G=Y.params[0],z=G?.type==="Identifier"?G.name:"item",W=K1(K);W.locals.set(z,{kind:"any"});let J;if(Y.body.type==="BlockStatement")throw new x("find callback must be an expression, not a block",u(X[0]),K.source,K.filename);else J=h(Y.body,W);return{step:{op:"find",items:$,as:z,condition:J,...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}break;case"reduce":if(X.length>=2&&(X[0].type==="ArrowFunctionExpression"||X[0].type==="FunctionExpression")){let Y=X[0],G=Y.params[0],z=Y.params[1],W=G?.type==="Identifier"?G.name:"acc",J=z?.type==="Identifier"?z.name:"item",L=K1(K);L.locals.set(W,{kind:"any"}),L.locals.set(J,{kind:"any"});let _;if(Y.body.type==="BlockStatement")_=J1(Y.body,L);else{let{step:I,resultVar:w}=V1(Y.body,L,"result");_=I?[I]:[{op:"varSet",key:"result",value:w}]}let U=c(X[1],K);return{step:{op:"reduce",items:$,as:J,accumulator:W,initial:U,steps:_,...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}break;case"slice":break;case"push":return{step:{op:"push",list:$,item:c(X[0],K),...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q};case"join":return{step:{op:"join",list:$,sep:X.length>0?c(X[0],K):"",...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q};case"split":return{step:{op:"split",str:$,sep:X.length>0?c(X[0],K):"",...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}return K.warnings.push({message:`Unknown method '${Z}' - treating as atom call`,line:0,column:0}),{step:{op:Z,receiver:$,args:X.map((Y)=>c(Y,K)),...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}function y8(Z,$,X,K){let Q="",H={};for(let Y=0;Y<Z.quasis.length;Y++)if(Q+=Z.quasis[Y].value.cooked||Z.quasis[Y].value.raw,Y<Z.expressions.length){let G=Z.expressions[Y],z=`_${Y}`;H[z]=c(G,$),Q+=`{{${z}}}`}return{step:{op:"template",tmpl:Q,vars:H,...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X}}function h(Z,$){switch(Z.type){case"Literal":return{$expr:"literal",value:Z.value};case"Identifier":return{$expr:"ident",name:Z.name};case"MemberExpression":{let X=Z,K=h(X.object,$),Q=X.optional===!0;if(X.computed){let Y=X.property;if(Y.type==="Literal")return{$expr:"member",object:K,property:String(Y.value),computed:!0,...Q&&{optional:!0}};throw new x("Computed member access with variables not yet supported",u(Z),$.source,$.filename)}let H=X.property.name;return{$expr:"member",object:K,property:H,...Q&&{optional:!0}}}case"ChainExpression":return h(Z.expression,$);case"BinaryExpression":{let X=Z;return{$expr:"binary",op:X.operator,left:h(X.left,$),right:h(X.right,$)}}case"LogicalExpression":{let X=Z;return{$expr:"logical",op:X.operator,left:h(X.left,$),right:h(X.right,$)}}case"UnaryExpression":{let X=Z;return{$expr:"unary",op:X.operator,argument:h(X.argument,$)}}case"ConditionalExpression":{let X=Z;return{$expr:"conditional",test:h(X.test,$),consequent:h(X.consequent,$),alternate:h(X.alternate,$)}}case"ArrayExpression":return{$expr:"array",elements:Z.elements.filter((K)=>K!==null).map((K)=>h(K,$))};case"ObjectExpression":{let X=Z,K=[];for(let Q of X.properties)if(Q.type==="Property"){let H=Q.key.type==="Identifier"?Q.key.name:String(Q.key.value);K.push({key:H,value:h(Q.value,$)})}return{$expr:"object",properties:K}}case"CallExpression":{let X=Z;if(X.callee.type==="MemberExpression"){let K=X.callee,Q=K.property.type==="Identifier"?K.property.name:String(K.property.value),H=K.optional===!0||X.optional===!0;return{$expr:"methodCall",object:h(K.object,$),method:Q,arguments:X.arguments.map((Y)=>h(Y,$)),...H&&{optional:!0}}}if(X.callee.type==="Identifier")return{$expr:"call",callee:X.callee.name,arguments:X.arguments.map((Q)=>h(Q,$))};throw new x("Complex function calls in expressions should be lifted to statements",u(Z),$.source,$.filename)}case"NewExpression":{let X=Z,K="constructor";if(X.callee.type==="Identifier")K=X.callee.name;let Q=f6(K);throw new x(`The 'new' keyword is not supported in AsyncJS.${Q}`,u(Z),$.source,$.filename)}case"TemplateLiteral":throw new x("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",u(Z),$.source,$.filename);default:throw new x(`Unsupported expression type in condition: ${Z.type}`,u(Z),$.source,$.filename)}}function c(Z,$){switch(Z.type){case"Literal":return Z.value;case"Identifier":return Z.name;case"MemberExpression":{let X=Z;if(X.optional===!0)return h(Z,$);let Q=c(X.object,$);if(Q&&typeof Q==="object"&&Q.$expr){let Y=X.computed?String(X.property.value):X.property.name;return{$expr:"member",object:Q,property:Y,...X.computed&&{computed:!0}}}if(X.computed)return`${Q}[${c(X.property,$)}]`;let H=X.property.name;if(typeof Q==="string")return`${Q}.${H}`;if(Q&&Q.$kind==="arg")return{$kind:"arg",path:`${Q.path}.${H}`};return`${Q}.${H}`}case"ChainExpression":return c(Z.expression,$);case"ArrayExpression":return Z.elements.map((X)=>X?c(X,$):null);case"ObjectExpression":{let X={};for(let K of Z.properties)if(K.type==="Property"){let Q=K.key.type==="Identifier"?K.key.name:String(K.key.value);X[Q]=c(K.value,$)}return X}case"TemplateLiteral":return h(Z,$);case"CallExpression":return h(Z,$);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return h(Z,$);default:return null}}function h8(Z,$){if(Z.arguments.length===1&&Z.arguments[0].type==="ObjectExpression"){let X=Z.arguments[0],K={};for(let Q of X.properties)if(Q.type==="Property"){let H=Q.key.type==="Identifier"?Q.key.name:String(Q.key.value);K[H]=c(Q.value,$)}return K}return{args:Z.arguments.map((X)=>c(X,$))}}import{parseExpressionAt as UZ}from"acorn";function x8(Z,$){let X=$;while(X>0&&Z[X-1]!==`
|
|
44
|
-
`)
|
|
39
|
+
`,B+=` return __tjs.typeError('${z}', 'no matching constructor', a)
|
|
40
|
+
`,B+=`}
|
|
41
|
+
`,Y=Y.slice(0,J)+A+Y.slice(L);let j=J+A.length;Y=Y.slice(0,j)+B+Y.slice(j)}return{source:Y,polyCtorClasses:$}}function f6(Z,X=new Set){let $=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,K="",Q=0,H;while((H=$.exec(Z))!==null){let Y=H[1],G=H[2]||"",z=H.index,W=z+H[0].length-1,J=1,L=W+1;while(L<Z.length&&J>0){let _=Z[L];if(_==="{")J++;else if(_==="}")J--;L++}if(J===0){let _=L,U=Z.slice(W,_);if(K+=Z.slice(Q,z),K+=`let ${Y} = class ${Y}${G} ${U}; `,X.has(Y))K+=`${Y} = new Proxy(${Y}, { apply(t, _, a) { return ${Y}$dispatch(t, a) }, construct(t, a) { return ${Y}$dispatch(t, a) } });`;else K+=`${Y} = new Proxy(${Y}, { apply(t, _, a) { return Reflect.construct(t, a) } });`;Q=_}}return K+=Z.slice(Q),K}function y6(Z){let X=[{pattern:/\bnew\s+Date\b/,message:"new Date() is not allowed in TjsDate mode. Use Timestamp.now() or Timestamp.from()"},{pattern:/\bDate\.now\b/,message:"Date.now() is not allowed in TjsDate mode. Use Timestamp.now()"},{pattern:/\bDate\.parse\b/,message:"Date.parse() is not allowed in TjsDate mode. Use Timestamp.parse()"},{pattern:/\bDate\.UTC\b/,message:"Date.UTC() is not allowed in TjsDate mode. Use Timestamp.from()"}];for(let{pattern:$,message:K}of X)if($.test(Z))throw Error(K);return Z}function h6(Z){if(/(?<![A-Za-z_$])\beval\s*\(/.test(Z))throw Error("eval() is not allowed in TjsNoeval mode. Use Eval() from TJS runtime for safe evaluation.");if(/\bnew\s+Function\s*\(/.test(Z))throw Error("new Function() is not allowed in TjsNoeval mode. Use SafeFunction() from TJS runtime.");return Z}function O0(Z,X={}){let $=Z,K,Q=new Set,H=new Set,Y=new Set,G={tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1},z=Z.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);if(z)K=z[2],Z=Z.replace(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\s*/,"$1");let W=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsStandard|TjsSafeEval)\b/,J;while(J=Z.match(W)){let A=J[2];if(A==="TjsStrict")G.tjsEquals=!0,G.tjsClass=!0,G.tjsDate=!0,G.tjsNoeval=!0,G.tjsStandard=!0;else if(A==="TjsEquals")G.tjsEquals=!0;else if(A==="TjsClass")G.tjsClass=!0;else if(A==="TjsDate")G.tjsDate=!0;else if(A==="TjsNoeval")G.tjsNoeval=!0;else if(A==="TjsStandard")G.tjsStandard=!0;else if(A==="TjsSafeEval")G.tjsSafeEval=!0;Z=Z.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${A}\\s*`),"$1")}if(G.tjsStandard)Z=P6(Z);if(Z=j6(Z),G.tjsEquals&&!X.vmTarget)Z=V6(Z);Z=C6(Z),Z=O6(Z),Z=N6(Z),Z=E6(Z),Z=g6(Z);let{source:L,returnType:_,returnSafety:U}=P0(Z,{originalSource:$,requiredParams:Q,unsafeFunctions:H,safeFunctions:Y});Z=L;let R=T6(Z);Z=R.source,Z=M6(Z);let M=k6(Z,Q);Z=M.source;let w=w6(Z);Z=w.source;let I=b6(Z,X.dangerouslySkipTests);Z=I.source;let V=v6(Z,Q);Z=V.source;for(let A of V.polyCtorClasses)H.add(`${A}$dispatch`);if(G.tjsClass)Z=f6(Z,V.polyCtorClasses);if(G.tjsDate)Z=y6(Z);if(G.tjsNoeval)Z=h6(Z);return Z=e1(Z,R.extensions),{source:Z,returnType:_,returnSafety:U,moduleSafety:K,tjsModes:G,originalSource:$,requiredParams:Q,unsafeFunctions:H,safeFunctions:Y,wasmBlocks:w.blocks,tests:I.tests,testErrors:I.errors,polymorphicNames:M.polymorphicNames,extensions:R.extensions}}function F1(Z,X={}){let{filename:$="<source>",colonShorthand:K=!0,vmTarget:Q=!1}=X,{source:H,returnType:Y,returnSafety:G,moduleSafety:z,originalSource:W,requiredParams:J,unsafeFunctions:L,safeFunctions:_,wasmBlocks:U,tests:R,testErrors:M}=K?O0(Z,{vmTarget:Q}):{source:Z,returnType:void 0,returnSafety:void 0,moduleSafety:void 0,originalSource:Z,requiredParams:new Set,unsafeFunctions:new Set,safeFunctions:new Set,wasmBlocks:[],tests:[],testErrors:[]};try{return{ast:x6.parse(H,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:Y,returnSafety:G,moduleSafety:z,originalSource:W,requiredParams:J,unsafeFunctions:L,safeFunctions:_,wasmBlocks:U,tests:R,testErrors:M}}catch(w){let I=w.loc||{line:1,column:0};throw new K1(w.message.replace(/\s*\(\d+:\d+\)$/,""),I,W,$)}}function N0(Z,X){for(let K of Z.body){if(K.type==="ImportDeclaration")throw new K1("Imports are not supported. All atoms must be registered with the VM.",K.loc?.start||{line:1,column:0},void 0,X);if(K.type==="ExportNamedDeclaration"||K.type==="ExportDefaultDeclaration")throw new K1("Exports are not supported. The function is automatically exported.",K.loc?.start||{line:1,column:0},void 0,X);if(K.type==="ClassDeclaration")throw new K1("Classes are not supported. Agent99 uses functional composition.",K.loc?.start||{line:1,column:0},void 0,X)}let $=Z.body.filter((K)=>K.type==="FunctionDeclaration");if($.length===0)throw new K1("Source must contain a function declaration",{line:1,column:0},void 0,X);if($.length>1){let K=$[1];throw new K1("Only a single function per agent is allowed",K.loc?.start||{line:1,column:0},void 0,X)}return $[0]}function Z0(Z,X){let $={params:{}};if(!X.loc)return $;let K=Z.substring(0,X.start),Q=[...K.matchAll(/\/\*#([\s\S]*?)\*\//g)];if(Q.length>0){let J=Q[Q.length-1],L=K.substring(J.index+J[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(L)){let _=J[1],U=_.split(`
|
|
42
|
+
`),R=U.filter((M)=>M.trim().length>0).reduce((M,w)=>{let I=w.match(/^(\s*)/)?.[1].length||0;return Math.min(M,I)},1/0);if(R>0&&R<1/0)_=U.map((M)=>M.slice(R)).join(`
|
|
43
|
+
`);return $.description=_.trim(),$}}let H=K.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!H)return $;let Y=H[0],G=Y.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);if(G)$.description=G[1].trim();let z=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,W;while((W=z.exec(Y))!==null)$.params[W[1]]=W[2].trim();return $}import{parseExpressionAt as E8}from"acorn";function G1(Z){switch(Z.type){case"Literal":{let X=Z.value;if(X===null)return{kind:"null"};if(typeof X==="string")return{kind:"string"};if(typeof X==="number"){let $=Z.raw;if($&&$.includes("."))return{kind:"number"};return{kind:"integer"}}if(typeof X==="boolean")return{kind:"boolean"};return{kind:"any"}}case"ArrayExpression":{let X=Z.elements;if(X.length===0)return{kind:"array",items:{kind:"any"}};return{kind:"array",items:G1(X[0])}}case"ObjectExpression":{let X=Z.properties,$={};for(let K of X)if(K.type==="Property"&&K.key.type==="Identifier"){let Q=K.key.name;$[Q]=G1(K.value)}return{kind:"object",shape:$}}case"LogicalExpression":{let{operator:X,left:$,right:K}=Z;if(X==="||")return G1($);if(X==="&&")return G1(K);if(X==="??")return G1(K);return{kind:"any"}}case"BinaryExpression":{let{operator:X,left:$,right:K}=Z;if(X==="|"){let Q=G1($),H=G1(K);if(H.kind==="null")return{...Q,nullable:!0};if(Q.kind==="null")return{...H,nullable:!0};return{kind:"union",members:[Q,H]}}return{kind:"any"}}case"Identifier":{if(Z.name==="undefined")return{kind:"undefined"};return{kind:"any"}}case"UnaryExpression":{let{operator:X,argument:$}=Z;if(X==="+"&&$.type==="Literal"){if(typeof $.value==="number")return{kind:"non-negative-integer"}}if(X==="-"&&$.type==="Literal"){if(typeof $.value==="number"){let Q=$.raw;if(Q&&Q.includes("."))return{kind:"number"};return{kind:"integer"}}}return{kind:"any"}}default:return{kind:"any"}}}function P1(Z,X){if(Z.type==="Identifier")return{name:Z.name,type:{kind:"any"},required:!0};if(Z.type==="AssignmentPattern"){let{left:$,right:K}=Z;if($.type!=="Identifier")throw new u("Only simple parameter names are supported",d(Z));let Q=$.name,H=X?.has(Q)??!1,Y=G1(K),G=R1(K);return{name:Q,type:Y,required:H,default:H?null:G,example:G,loc:{start:Z.start,end:Z.end}}}if(Z.type==="ObjectPattern"){let $=Z.properties,K={},Q={};for(let H of $)if(H.type==="Property"){let Y=H.key.type==="Identifier"?H.key.name:String(H.key.value);if(H.value.type==="Identifier")K[Y]={kind:"any"},Q[Y]={name:Y,type:{kind:"any"},required:!0};else if(H.value.type==="AssignmentPattern"){let G=P1(H.value,X),z=X?.has(Y)??!1;K[Y]=G.type,Q[Y]={name:Y,type:G.type,required:z,default:z?null:G.example,example:G.example}}}return{name:"__destructured__",type:{kind:"object",shape:K,destructuredParams:Q},required:!0}}throw new u(`Unsupported parameter pattern: ${Z.type}`,d(Z))}function R1(Z){switch(Z.type){case"Literal":return Z.value;case"ArrayExpression":return Z.elements.map((X)=>X?R1(X):null);case"ObjectExpression":{let X={};for(let $ of Z.properties)if($.type==="Property"&&$.key.type==="Identifier")X[$.key.name]=R1($.value);return X}case"UnaryExpression":if(Z.operator==="-"){let X=R1(Z.argument);return typeof X==="number"?-X:void 0}if(Z.operator==="+"){let X=R1(Z.argument);return typeof X==="number"?+X:void 0}return;case"BinaryExpression":{let{operator:X,left:$}=Z;if(X==="|")return R1($);return}case"LogicalExpression":{let{operator:X,left:$,right:K}=Z;if(X==="&&"){if($.type==="Literal"&&$.value===null)return null}if(X==="||")return R1($)??R1(K);if(X==="??")return R1($)??R1(K);return}default:return}}function u6(Z){try{let X=E8(Z,0,{ecmaVersion:2022});return G1(X)}catch{return{kind:"any"}}}function j4(Z){switch(Z.kind){case"string":return Z.nullable?"string | null":"string";case"number":return Z.nullable?"number | null":"number";case"integer":return Z.nullable?"integer | null":"integer";case"non-negative-integer":return Z.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return Z.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let X=Z.items?j4(Z.items):"any";return Z.nullable?`${X}[] | null`:`${X}[]`}case"object":{if(!Z.shape||Object.keys(Z.shape).length===0)return Z.nullable?"object | null":"object";let X=Object.entries(Z.shape).map(([$,K])=>`${$}: ${j4(K)}`).join(", ");return Z.nullable?`{ ${X} } | null`:`{ ${X} }`}case"union":return Z.members?.map(j4).join(" | ")||"any";default:return"any"}}function E0(Z){switch(Z.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":return{};case"undefined":return{};case"any":return{};case"array":return{type:"array",items:Z.items?E0(Z.items):{}};case"object":if(Z.shape){let X={};for(let[$,K]of Object.entries(Z.shape))X[$]=E0(K);return{type:"object",properties:X,additionalProperties:!1}}return{type:"object"};case"union":if(Z.members)return{oneOf:Z.members.map(E0)};return{};default:return{}}}function T8(Z){let X={},$=[];for(let[K,Q]of Object.entries(Z))if(X[K]=E0(Q.type),Q.required)$.push(K);return{type:"object",properties:X,required:$.length>0?$:void 0,additionalProperties:!1}}function K0(Z,X,$,K={},Q){let H=Z0(X,Z),Y=new Map;for(let w of Z.params){let I=P1(w,Q);if(I.name==="__destructured__"&&I.type.kind==="object"&&I.type.destructuredParams)for(let[V,A]of Object.entries(I.type.destructuredParams))Y.set(V,{...A,description:H.params[V]});else I.description=H.params[I.name],Y.set(I.name,I)}let G;if($)G=u6($);let z={depth:0,locals:new Map,parameters:Y,atoms:new Set(Object.keys(K.atoms||{})),warnings:[],source:X,filename:K.filename||"<source>",options:K},W=B1(Z.body,z),J=[],L=[],_=[];for(let[w,I]of Y.entries())if(I.required)L.push(w);else if(I.default!==void 0)_.push({name:w,defaultValue:I.default});else L.push(w);if(L.length>0)J.push({op:"varsImport",keys:L});for(let{name:w,defaultValue:I}of _)J.push({op:"varsImport",keys:[w]}),J.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:w},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:w,value:I}]});J.push(...W);let U=Object.fromEntries(Y),R={name:Z.id?.name||"anonymous",description:H.description,parameters:U,returns:G},M=T8(U);return{ast:{op:"seq",steps:J,inputSchema:M},signature:R,warnings:z.warnings}}function B1(Z,X){let $=[];for(let K of Z.body){let Q=$0(K,X);if(Q)if(Array.isArray(Q))$.push(...Q);else $.push(Q)}return $}function $0(Z,X){switch(Z.type){case"VariableDeclaration":return S8(Z,X);case"ExpressionStatement":return k8(Z,X);case"IfStatement":return b8(Z,X);case"WhileStatement":return v8(Z,X);case"ForOfStatement":return f8(Z,X);case"TryStatement":return y8(Z,X);case"ReturnStatement":return h8(Z,X);case"ThrowStatement":throw new u("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",d(Z),X.source,X.filename);case"BlockStatement":return{op:"scope",steps:B1(Z,z1(X))};case"EmptyStatement":return null;default:throw new u(`Unsupported statement type: ${Z.type}`,d(Z),X.source,X.filename)}}function S8(Z,X){let $=[],K=Z.kind==="const",Q=K?"constSet":"varSet";for(let H of Z.declarations){if(H.id.type!=="Identifier")throw new u("Only simple variable names are supported",d(H),X.source,X.filename);let Y=H.id.name;if(H.init){let{step:G,resultVar:z}=S1(H.init,X,Y,K);if(G)$.push(G);else if(z!==Y)$.push({op:Q,key:Y,value:z});let W=G1(H.init);X.locals.set(Y,W)}else{if(K)throw new u("const declarations must be initialized",d(H),X.source,X.filename);$.push({op:"varSet",key:Y,value:null}),X.locals.set(Y,{kind:"any",nullable:!0})}}return $}function k8(Z,X){let $=Z.expression;if($.type==="AssignmentExpression")return g8($,X);if($.type==="CallExpression"){let{step:K,resultVar:Q}=S1($,X);if(K)return K;if(Q)return{op:"varSet",key:"_",value:Q};return null}return X.warnings.push({message:"Expression statement has no effect",line:d(Z).line,column:d(Z).column}),null}function g8(Z,X){if(Z.left.type!=="Identifier")throw new u("Only simple variable assignment is supported",d(Z),X.source,X.filename);let $=Z.left.name,{step:K,resultVar:Q}=S1(Z.right,X,$);if(K)return K;return{op:"varSet",key:$,value:Q}}function b8(Z,X){let $=x(Z.test,X),K=Z.consequent.type==="BlockStatement"?B1(Z.consequent,z1(X)):[$0(Z.consequent,X)].filter(Boolean),Q;if(Z.alternate)Q=Z.alternate.type==="BlockStatement"?B1(Z.alternate,z1(X)):[$0(Z.alternate,X)].filter(Boolean);return{op:"if",condition:$,then:K,...Q&&{else:Q}}}function v8(Z,X){let $=x(Z.test,X),K=Z.body.type==="BlockStatement"?B1(Z.body,z1(X)):[$0(Z.body,X)].filter(Boolean);return{op:"while",condition:$,body:K}}function f8(Z,X){let $;if(Z.left.type==="VariableDeclaration"){let Y=Z.left.declarations[0];if(Y.id.type!=="Identifier")throw new u("Only simple variable names are supported in for...of",d(Z.left),X.source,X.filename);$=Y.id.name}else if(Z.left.type==="Identifier")$=Z.left.name;else throw new u("Unsupported for...of left-hand side",d(Z.left),X.source,X.filename);let K=r(Z.right,X),Q=z1(X);Q.locals.set($,{kind:"any"});let H=Z.body.type==="BlockStatement"?B1(Z.body,Q):[$0(Z.body,Q)].filter(Boolean);return{op:"map",items:K,as:$,steps:H}}function y8(Z,X){let $=B1(Z.block,z1(X)),K,Q;if(Z.handler){let H=z1(X);if(Z.handler.param?.type==="Identifier")Q=Z.handler.param.name,H.locals.set(Q,{kind:"any"});K=B1(Z.handler.body,H)}return{op:"try",try:$,...K&&{catch:K},...Q&&{catchParam:Q}}}function h8(Z,X){if(!Z.argument)return{op:"return",value:{}};let{step:$,resultVar:K}=S1(Z.argument,X,"__returnVal__");if($)return[$,{op:"return",value:K}];return{op:"return",value:r(Z.argument,X)}}var m6=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),x8=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),X0=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),u8=new Set(["toUpperCase","toLowerCase","trim","trimStart","trimEnd","charAt","charCodeAt","codePointAt","concat","includes","indexOf","lastIndexOf","startsWith","endsWith","slice","substring","substr","replace","replaceAll","match","search","padStart","padEnd","repeat","normalize","localeCompare","toString","valueOf","at","reverse","sort","fill","copyWithin","flat","flatMap","every","some","forEach","add","remove","has","clear","toArray","union","intersection","diff","format","isBefore","isAfter"]);function d8(Z){if(Z.callee.type==="Identifier"){let X=Z.callee.name;return x8.has(X)||X0.has(X)}if(Z.callee.type==="MemberExpression"){let X=Z.callee;if(X.object.type==="Identifier"){let $=X.object.name;if(m6.has($)||X0.has($))return!0}if(X.property.type==="Identifier"){let $=X.property.name;if(u8.has($))return!0}}return!1}function m8(Z){if(Z.object.type==="Identifier"){let X=Z.object.name;return m6.has(X)||X0.has(X)}return!1}var d6={RegExp:"RegExp is not available. Use string methods or the regexMatch atom.",Promise:"Promise is not needed. All operations are implicitly async.",Map:"Map is not available. Use plain objects instead.",WeakSet:"WeakSet is not available.",WeakMap:"WeakMap is not available.",Symbol:"Symbol is not available.",Proxy:"Proxy is not available.",Reflect:"Reflect is not available.",Function:"Function constructor is not available. Define functions normally.",eval:"eval is not available. Code is compiled, not evaluated.",setTimeout:"setTimeout is not available. Use the delay atom.",setInterval:"setInterval is not available. Use while loops with delay.",fetch:"fetch is not available. Use the httpFetch atom.",require:"require is not available. Atoms must be registered with the VM.",import:"import is not available. Atoms must be registered with the VM.",process:"process is not available. AsyncJS runs in a sandboxed environment.",window:"window is not available. AsyncJS runs in a sandboxed environment.",document:"document is not available. AsyncJS runs in a sandboxed environment.",global:"global is not available. AsyncJS runs in a sandboxed environment.",globalThis:"globalThis is not available. Use builtins directly."};function l8(Z){if(Z.callee.type==="Identifier"){let X=Z.callee.name;if(X0.has(X))return d6[X]||`${X} is not available in AsyncJS.`}if(Z.callee.type==="MemberExpression"){let X=Z.callee;if(X.object.type==="Identifier"){let $=X.object.name;if(X0.has($))return d6[$]||`${$} is not available in AsyncJS.`}}return null}function l6(Z){return{Date:" Use Date() or Date('2024-01-15') instead - no 'new' needed.",Set:" Use Set([items]) instead - no 'new' needed.",Map:" Use plain objects instead of Map.",Array:" Use array literals like [1, 2, 3] instead.",Object:" Use object literals like { key: value } instead.",Error:" Return an error object like { error: 'message' } instead.",RegExp:" Use string methods or the regexMatch atom.",Promise:" Not needed - all operations are implicitly async.",WeakSet:" WeakSet is not available.",WeakMap:" WeakMap is not available."}[Z]||" Use factory functions or object literals instead."}function S1(Z,X,$,K){let Q=K?"constSet":"varSet";if(Z.type==="ChainExpression")return S1(Z.expression,X,$,K);if(Z.type==="NewExpression"){let Y=Z,G="constructor";if(Y.callee.type==="Identifier")G=Y.callee.name;let z=l6(G);throw new u(`The 'new' keyword is not supported in AsyncJS.${z}`,d(Z),X.source,X.filename)}if(Z.type==="CallExpression"){let Y=l8(Z);if(Y)throw new u(Y,d(Z),X.source,X.filename)}if(Z.type==="CallExpression"&&d8(Z)){let Y=x(Z,X);if($)return{step:{op:Q,key:$,value:Y},resultVar:$};return{step:null,resultVar:Y}}if(Z.type==="MemberExpression"&&m8(Z)){let Y=x(Z,X);if($)return{step:{op:Q,key:$,value:Y},resultVar:$};return{step:null,resultVar:Y}}if(Z.type==="CallExpression")return i8(Z,X,$,K);if(Z.type==="TemplateLiteral")return n8(Z,X,$,K);if(Z.type==="BinaryExpression"||Z.type==="LogicalExpression"||Z.type==="UnaryExpression"){let Y=x(Z,X);if($)return{step:{op:Q,key:$,value:Y},resultVar:$};return{step:null,resultVar:Y}}return{step:null,resultVar:r(Z,X)}}function i8(Z,X,$,K){let Q,H=!1,Y;if(Z.callee.type==="Identifier")Q=Z.callee.name;else if(Z.callee.type==="MemberExpression"){let z=Z.callee;if(z.property.type==="Identifier")Q=z.property.name,H=!0,Y=r(z.object,X);else throw new u("Computed method names are not supported",d(Z),X.source,X.filename)}else throw new u("Only named function calls are supported",d(Z),X.source,X.filename);if(H)return p8(Q,Y,Z.arguments,X,$,K);if(Q==="console"&&Z.callee.type==="MemberExpression");let G=c8(Z,X);return{step:{op:Q,...G,...$&&{result:$},...$&&K&&{resultConst:!0}},resultVar:$}}function p8(Z,X,$,K,Q,H){switch(Z){case"map":if($.length>0&&($[0].type==="ArrowFunctionExpression"||$[0].type==="FunctionExpression")){let Y=$[0],G=Y.params[0],z=G?.type==="Identifier"?G.name:"item",W=z1(K);W.locals.set(z,{kind:"any"});let J;if(Y.body.type==="BlockStatement")J=B1(Y.body,W);else{let{step:L,resultVar:_}=S1(Y.body,W,"result");J=L?[L]:[{op:"varSet",key:"result",value:_}]}return{step:{op:"map",items:X,as:z,steps:J,...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}break;case"filter":if($.length>0&&($[0].type==="ArrowFunctionExpression"||$[0].type==="FunctionExpression")){let Y=$[0],G=Y.params[0],z=G?.type==="Identifier"?G.name:"item",W=z1(K);W.locals.set(z,{kind:"any"});let J;if(Y.body.type==="BlockStatement")throw new u("filter callback must be an expression, not a block",d($[0]),K.source,K.filename);else J=x(Y.body,W);return{step:{op:"filter",items:X,as:z,condition:J,...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}break;case"find":if($.length>0&&($[0].type==="ArrowFunctionExpression"||$[0].type==="FunctionExpression")){let Y=$[0],G=Y.params[0],z=G?.type==="Identifier"?G.name:"item",W=z1(K);W.locals.set(z,{kind:"any"});let J;if(Y.body.type==="BlockStatement")throw new u("find callback must be an expression, not a block",d($[0]),K.source,K.filename);else J=x(Y.body,W);return{step:{op:"find",items:X,as:z,condition:J,...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}break;case"reduce":if($.length>=2&&($[0].type==="ArrowFunctionExpression"||$[0].type==="FunctionExpression")){let Y=$[0],G=Y.params[0],z=Y.params[1],W=G?.type==="Identifier"?G.name:"acc",J=z?.type==="Identifier"?z.name:"item",L=z1(K);L.locals.set(W,{kind:"any"}),L.locals.set(J,{kind:"any"});let _;if(Y.body.type==="BlockStatement")_=B1(Y.body,L);else{let{step:R,resultVar:M}=S1(Y.body,L,"result");_=R?[R]:[{op:"varSet",key:"result",value:M}]}let U=r($[1],K);return{step:{op:"reduce",items:X,as:J,accumulator:W,initial:U,steps:_,...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}break;case"slice":break;case"push":return{step:{op:"push",list:X,item:r($[0],K),...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q};case"join":return{step:{op:"join",list:X,sep:$.length>0?r($[0],K):"",...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q};case"split":return{step:{op:"split",str:X,sep:$.length>0?r($[0],K):"",...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}return K.warnings.push({message:`Unknown method '${Z}' - treating as atom call`,line:0,column:0}),{step:{op:Z,receiver:X,args:$.map((Y)=>r(Y,K)),...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}function n8(Z,X,$,K){let Q="",H={};for(let Y=0;Y<Z.quasis.length;Y++)if(Q+=Z.quasis[Y].value.cooked||Z.quasis[Y].value.raw,Y<Z.expressions.length){let G=Z.expressions[Y],z=`_${Y}`;H[z]=r(G,X),Q+=`{{${z}}}`}return{step:{op:"template",tmpl:Q,vars:H,...$&&{result:$},...$&&K&&{resultConst:!0}},resultVar:$}}function x(Z,X){switch(Z.type){case"Literal":return{$expr:"literal",value:Z.value};case"Identifier":return{$expr:"ident",name:Z.name};case"MemberExpression":{let $=Z,K=x($.object,X),Q=$.optional===!0;if($.computed){let Y=$.property;if(Y.type==="Literal")return{$expr:"member",object:K,property:String(Y.value),computed:!0,...Q&&{optional:!0}};throw new u("Computed member access with variables not yet supported",d(Z),X.source,X.filename)}let H=$.property.name;return{$expr:"member",object:K,property:H,...Q&&{optional:!0}}}case"ChainExpression":return x(Z.expression,X);case"BinaryExpression":{let $=Z;return{$expr:"binary",op:$.operator,left:x($.left,X),right:x($.right,X)}}case"LogicalExpression":{let $=Z;return{$expr:"logical",op:$.operator,left:x($.left,X),right:x($.right,X)}}case"UnaryExpression":{let $=Z;return{$expr:"unary",op:$.operator,argument:x($.argument,X)}}case"ConditionalExpression":{let $=Z;return{$expr:"conditional",test:x($.test,X),consequent:x($.consequent,X),alternate:x($.alternate,X)}}case"ArrayExpression":return{$expr:"array",elements:Z.elements.filter((K)=>K!==null).map((K)=>x(K,X))};case"ObjectExpression":{let $=Z,K=[];for(let Q of $.properties)if(Q.type==="Property"){let H=Q.key.type==="Identifier"?Q.key.name:String(Q.key.value);K.push({key:H,value:x(Q.value,X)})}return{$expr:"object",properties:K}}case"CallExpression":{let $=Z;if($.callee.type==="MemberExpression"){let K=$.callee,Q=K.property.type==="Identifier"?K.property.name:String(K.property.value),H=K.optional===!0||$.optional===!0;return{$expr:"methodCall",object:x(K.object,X),method:Q,arguments:$.arguments.map((Y)=>x(Y,X)),...H&&{optional:!0}}}if($.callee.type==="Identifier")return{$expr:"call",callee:$.callee.name,arguments:$.arguments.map((Q)=>x(Q,X))};throw new u("Complex function calls in expressions should be lifted to statements",d(Z),X.source,X.filename)}case"NewExpression":{let $=Z,K="constructor";if($.callee.type==="Identifier")K=$.callee.name;let Q=l6(K);throw new u(`The 'new' keyword is not supported in AsyncJS.${Q}`,d(Z),X.source,X.filename)}case"TemplateLiteral":throw new u("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",d(Z),X.source,X.filename);default:throw new u(`Unsupported expression type in condition: ${Z.type}`,d(Z),X.source,X.filename)}}function r(Z,X){switch(Z.type){case"Literal":return Z.value;case"Identifier":return Z.name;case"MemberExpression":{let $=Z;if($.optional===!0)return x(Z,X);let Q=r($.object,X);if(Q&&typeof Q==="object"&&Q.$expr){let Y=$.computed?String($.property.value):$.property.name;return{$expr:"member",object:Q,property:Y,...$.computed&&{computed:!0}}}if($.computed)return`${Q}[${r($.property,X)}]`;let H=$.property.name;if(typeof Q==="string")return`${Q}.${H}`;if(Q&&Q.$kind==="arg")return{$kind:"arg",path:`${Q.path}.${H}`};return`${Q}.${H}`}case"ChainExpression":return r(Z.expression,X);case"ArrayExpression":return Z.elements.map(($)=>$?r($,X):null);case"ObjectExpression":{let $={};for(let K of Z.properties)if(K.type==="Property"){let Q=K.key.type==="Identifier"?K.key.name:String(K.key.value);$[Q]=r(K.value,X)}return $}case"TemplateLiteral":return x(Z,X);case"CallExpression":return x(Z,X);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return x(Z,X);default:return null}}function c8(Z,X){if(Z.arguments.length===1&&Z.arguments[0].type==="ObjectExpression"){let $=Z.arguments[0],K={};for(let Q of $.properties)if(Q.type==="Property"){let H=Q.key.type==="Identifier"?Q.key.name:String(Q.key.value);K[H]=r(Q.value,X)}return K}return{args:Z.arguments.map(($)=>r($,X))}}import{parseExpressionAt as jZ}from"acorn";function o8(Z,X){let $=X;while($>0&&Z[$-1]!==`
|
|
44
|
+
`)$--;if(Z.slice($,X).includes("//"))return!0;let Q=0,H=!1;while(Q<X)if(!H&&Z.slice(Q,Q+2)==="/*")H=!0,Q+=2;else if(H&&Z.slice(Q,Q+2)==="*/")H=!1,Q+=2;else Q++;return H}function s8(Z){let X=[],$=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,K;while((K=$.exec(Z))!==null){let Q=K[2]||`embedded test ${X.length+1}`,H=(K[3]||K[4]||"").trim();X.push({description:Q,body:H,line:P4(Z,K.index)})}return X}function V4(Z){let X=[],$=[],K=s8(Z);X.push(...K);let Q=/test\s+(['"`])([^'"`]*)\1\s*\{|test\s*\(\s*(['"`])([^'"`]*)\3\s*\)\s*\{|test\s*\{/g,H=/mock\s*\{/g,Y=Z,G,z=[];while((G=Q.exec(Z))!==null){let _=G.index;if(o8(Z,_))continue;let U=G[2]||G[4]||`test ${X.length+1}`,R=G.index+G[0].length,M=i6(Z,R-1);if(M===-1)continue;let w=Z.slice(R,M).trim();X.push({description:U,body:w,line:P4(Z,_)}),z.push({start:_,end:M+1,desc:U})}let W=[];while((G=H.exec(Z))!==null){let _=G.index,U=G.index+G[0].length,R=i6(Z,U-1);if(R===-1)continue;let M=Z.slice(U,R).trim();$.push({body:M,line:P4(Z,_)}),W.push({start:_,end:R+1})}let J=[...z,...W].sort((_,U)=>U.start-_.start);for(let _ of J)Y=Y.slice(0,_.start)+Y.slice(_.end);Y=Y.replace(/\n\s*\n\s*\n/g,`
|
|
45
45
|
|
|
46
|
-
`).trim();let L=
|
|
47
|
-
`).length}function
|
|
46
|
+
`).trim();let L=a8(X,$);return{code:Y,tests:X,mocks:$,testRunner:L}}function i6(Z,X){let $=0,K=null,Q=!1;for(let H=X;H<Z.length;H++){let Y=Z[H];if(Q){Q=!1;continue}if(Y==="\\"){Q=!0;continue}if(!K&&(Y==='"'||Y==="'"||Y==="`")){K=Y;continue}if(K===Y){K=null;continue}if(K)continue;if(Y==="{")$++;if(Y==="}"){if($--,$===0)return H}}return-1}function P4(Z,X){return Z.slice(0,X).split(`
|
|
47
|
+
`).length}function a8(Z,X){if(Z.length===0)return"// No tests defined";let $=X.map((Q)=>Q.body).join(`
|
|
48
48
|
`);return`(async () => {
|
|
49
49
|
const __results = []
|
|
50
50
|
|
|
51
51
|
${Z.map((Q,H)=>`
|
|
52
52
|
// Test ${H+1}: ${Q.description}
|
|
53
53
|
try {
|
|
54
|
-
${
|
|
54
|
+
${$}
|
|
55
55
|
await (async () => {
|
|
56
56
|
${Q.body}
|
|
57
57
|
})()
|
|
@@ -67,13 +67,13 @@ const __failed = __results.filter(r => !r.passed).length
|
|
|
67
67
|
|
|
68
68
|
// Return summary
|
|
69
69
|
return { passed: __passed, failed: __failed, results: __results }
|
|
70
|
-
})()`.trim()}var
|
|
70
|
+
})()`.trim()}var p6=`
|
|
71
71
|
function assert(condition, message) {
|
|
72
72
|
if (!condition) {
|
|
73
73
|
throw new Error(message || 'Assertion failed')
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
|
-
`,
|
|
76
|
+
`,n6=`
|
|
77
77
|
function expect(actual) {
|
|
78
78
|
const deepEqual = (a, b) => {
|
|
79
79
|
if (a === b) return true
|
|
@@ -164,44 +164,49 @@ function expect(actual) {
|
|
|
164
164
|
}
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
`,
|
|
168
|
-
`+
|
|
169
|
-
`),G
|
|
167
|
+
`,r8=p6+`
|
|
168
|
+
`+n6;function t8(Z,X,$=0.000000001){if(Z===X)return!0;if(typeof Z==="number"&&typeof X==="number"){if(!Number.isInteger(Z)||!Number.isInteger(X)){let K=Math.abs(Z-X),Q=Math.max(Math.abs(Z),Math.abs(X),1);return K/Q<$}}return!1}function C4(Z,X){if(Z===X)return!0;if(typeof Z==="number"&&typeof X==="number"&&Number.isNaN(Z)&&Number.isNaN(X))return!0;if(t8(Z,X))return!0;if(Z===null||X===null)return Z===X;if(Z===void 0||X===void 0)return Z===X;if(typeof Z!==typeof X)return!1;if(typeof Z!=="object")return!1;if(Array.isArray(Z)&&Array.isArray(X)){if(Z.length!==X.length)return!1;return Z.every((Q,H)=>C4(Q,X[H]))}if(Array.isArray(Z)!==Array.isArray(X))return!1;let $=Object.keys(Z),K=Object.keys(X);if($.length!==K.length)return!1;return $.every((Q)=>C4(Z[Q],X[Q]))}function O4(Z,X,$=""){if(X===null){if(Z===null)return{matches:!0};return{matches:!1,error:`Expected null at '${$}', got ${k1(Z)}`}}if(X===void 0){if(Z===void 0)return{matches:!0};return{matches:!1,error:`Expected undefined at '${$}', got ${k1(Z)}`}}if(typeof X==="number"){if(typeof Z==="number")return{matches:!0};return{matches:!1,error:`Expected number at '${$}', got ${k1(Z)}`}}if(typeof X==="string"){if(typeof Z==="string")return{matches:!0};return{matches:!1,error:`Expected string at '${$}', got ${k1(Z)}`}}if(typeof X==="boolean"){if(typeof Z==="boolean")return{matches:!0};return{matches:!1,error:`Expected boolean at '${$}', got ${k1(Z)}`}}if(Array.isArray(X)){if(!Array.isArray(Z))return{matches:!1,error:`Expected array at '${$}', got ${k1(Z)}`};if(X.length===0)return{matches:!0};let K=X[0];for(let Q=0;Q<Z.length;Q++){let H=O4(Z[Q],K,`${$}[${Q}]`);if(!H.matches)return H}return{matches:!0}}if(typeof X==="object"&&X!==null){if(typeof Z!=="object"||Z===null||Array.isArray(Z))return{matches:!1,error:`Expected object at '${$}', got ${k1(Z)}`};for(let K of Object.keys(X)){let Q=$?`${$}.${K}`:K;if(!(K in Z))return{matches:!1,error:`Missing property '${Q}'`};let H=O4(Z[K],X[K],Q);if(!H.matches)return H}return{matches:!0}}if(Z===X)return{matches:!0};return{matches:!1,error:`Type mismatch at '${$}'`}}function k1(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";return typeof Z}function Q0(Z,X=0){if(Z===null)return"null";if(Z===void 0)return"undefined";if(typeof Z==="string")return JSON.stringify(Z);if(typeof Z==="number")return String(Z);if(typeof Z==="boolean")return String(Z);if(Array.isArray(Z)){if(Z.length===0)return"[]";if(Z.length<=3)return`[${Z.map(($)=>Q0($,X)).join(", ")}]`;return`[${Z.slice(0,3).map(($)=>Q0($,X)).join(", ")}, ...]`}if(typeof Z==="object"){let $=Object.entries(Z);if($.length===0)return"{}";let K=(z)=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(z)?z:JSON.stringify(z);if($.length<=2)return`{${$.map(([W,J])=>`${K(W)}: ${Q0(J,X)}`).join(", ")}}`;let Q=" ".repeat(X+1),H=" ".repeat(X),Y=$.slice(0,8).map(([z,W])=>`${Q}${K(z)}: ${Q0(W,X+1)}`).join(`,
|
|
169
|
+
`),G=$.length>8?`,
|
|
170
170
|
${Q}...`:"";return`{
|
|
171
171
|
${Y}${G}
|
|
172
|
-
${H}}`}return String(Z)}function
|
|
172
|
+
${H}}`}return String(Z)}function e8(Z){let X=Z.replace(/\/\*[\s\S]*?\*\//g,($)=>{let K=$.split(`
|
|
173
173
|
`).length-1;return`
|
|
174
|
-
`.repeat(K)});return
|
|
175
|
-
`)}function
|
|
176
|
-
`).length;if(z==="-!")continue;let J
|
|
177
|
-
`),_=Z.map((A,
|
|
178
|
-
// Test ${
|
|
174
|
+
`.repeat(K)});return X=X.replace(/\/\/[^\n]*/g,""),X}function T0(Z){let X=Z.replace(/^import\s+.*?from\s+['"][^'"]+['"];?\s*$/gm,"");return X=X.replace(/^import\s+['"][^'"]+['"];?\s*$/gm,""),X=X.replace(/^export\s+default\s+/gm,""),X=X.replace(/^export\s+/gm,""),X=X.replace(/^(\s*)((?:const|let|var)\s+\w+\s*=\s*)?await\s+.+$/gm,"$1/* top-level await removed for test execution */"),X}function S0(Z){let X=Z.replace(/^const __tjs = globalThis\.__tjs\?\.createRuntime\?\.\(\) \?\? globalThis\.__tjs;\n?/m,"");return X=X.replace(/^const \{ (?:Is|IsNot|Is, IsNot) \} = __tjs \?\? \{\};\n?/m,""),X}function ZZ(Z){if(Object.keys(Z).length===0)return"";let X=[];for(let[$,K]of Object.entries(Z)){let Q=T0(K);Q=S0(Q),X.push(`// Resolved import: ${$}`),X.push(Q)}return X.join(`
|
|
175
|
+
`)}function $Z(Z){let X={},$=Z.trim();if(!$.startsWith("{")||!$.includes("="))try{return{pattern:Function(`return ${Z}`)(),defaults:X}}catch{return null}let K="",Q=0,H=0;while(H<$.length){let Y=$[H];if(Y==="{"||Y==="["||Y==="(")Q++,K+=Y,H++;else if(Y==="}"||Y==="]"||Y===")")Q--,K+=Y,H++;else if(Y==="'"||Y==='"'||Y==="`"){let G=Y;K+=Y,H++;while(H<$.length&&$[H]!==G){if($[H]==="\\")K+=$[H++];K+=$[H++]}if(H<$.length)K+=$[H++]}else if(Q===1&&Y==="="){let W=(K.slice(K.lastIndexOf("{")+1).split(",").pop()||"").match(/\s*(\w+)\s*$/);if(W){let J=H+1;while(J<$.length&&/\s/.test($[J]))J++;let L="",_=0;while(J<$.length){let U=$[J];if(U==="{"||U==="["||U==="(")_++;else if(U==="}"||U==="]"||U===")"){if(_===0)break;_--}else if(U===","&&_===0)break;L+=U,J++}try{X[W[1]]=Function(`return ${L.trim()}`)()}catch{}K+=":",H++;continue}K+=Y,H++}else K+=Y,H++}try{return{pattern:Function(`return ${K}`)(),defaults:X}}catch{return null}}function c6(Z){let X=[],$=e8(Z),K=/(async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(-[>?])\s*/g,Q;while((Q=K.exec($))!==null){let H=!!Q[1],Y=Q[2],G=Q[3],z=Q[4],W=$.slice(0,Q.index).split(`
|
|
176
|
+
`).length;if(z==="-!")continue;let J=$.slice(Q.index+Q[0].length),L=N4(J);if(!L)continue;let _=XZ(G);if(G.trim()&&_.length===0)continue;try{let U=$Z(L);if(!U)continue;let R=_.map((M)=>Function(`return ${M}`)());X.push({funcName:Y,args:R,expected:U.pattern,defaults:Object.keys(U.defaults).length>0?U.defaults:void 0,line:W,isAsync:H})}catch{}}return X}function o6(Z,X,$,K,Q={},H=new Map){let Y=[];if(Z.length===0&&$.length===0)return Y;let G=K.match(/^import\s+.*?from\s+['"]([^'"]+)['"];?\s*$/gm)||[],z=G.length>0&&G.some((A)=>{let B=A.match(/from\s+['"]([^'"]+)['"]/);return B&&!(B[1]in Q)}),W=T0(K);W=S0(W);let J=ZZ(Q),L=X.map((A)=>A.body).join(`
|
|
177
|
+
`),_=Z.map((A,B)=>{let P=H.size>0?e1(A.body,H):A.body;return`
|
|
178
|
+
// Test ${B}: ${A.description}
|
|
179
179
|
try {
|
|
180
|
-
${
|
|
181
|
-
__testResults.push({ idx: ${
|
|
180
|
+
${P}
|
|
181
|
+
__testResults.push({ idx: ${B}, passed: true });
|
|
182
182
|
} catch (e) {
|
|
183
|
-
__testResults.push({ idx: ${
|
|
183
|
+
__testResults.push({ idx: ${B}, passed: false, error: e.message || String(e) });
|
|
184
184
|
}
|
|
185
185
|
`}).join(`
|
|
186
|
-
`),U
|
|
187
|
-
// Signature test ${
|
|
186
|
+
`),U=$.filter((A)=>!A.isAsync),R=$.filter((A)=>A.isAsync),M=U.map((A,B)=>`
|
|
187
|
+
// Signature test ${B}: ${A.funcName}
|
|
188
188
|
try {
|
|
189
|
-
let __actual = ${A.funcName}(${A.args.map((
|
|
189
|
+
let __actual = ${A.funcName}(${A.args.map((P)=>JSON.stringify(P)).join(", ")});
|
|
190
190
|
const __expected = ${JSON.stringify(A.expected)};${A.defaults?`
|
|
191
191
|
const __defaults = ${JSON.stringify(A.defaults)};
|
|
192
192
|
if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`:""}
|
|
193
193
|
const __typeResult = __typeMatches(__actual, __expected, '${A.funcName}');
|
|
194
194
|
if (__typeResult.matches) {
|
|
195
|
-
__sigTestResults.push({ idx: ${
|
|
195
|
+
__sigTestResults.push({ idx: ${B}, passed: true });
|
|
196
196
|
} else {
|
|
197
|
-
__sigTestResults.push({ idx: ${
|
|
197
|
+
__sigTestResults.push({ idx: ${B}, passed: false, error: __typeResult.error || 'Type mismatch: got ' + __format(__actual) });
|
|
198
198
|
}
|
|
199
199
|
} catch (e) {
|
|
200
|
-
__sigTestResults.push({ idx: ${
|
|
200
|
+
__sigTestResults.push({ idx: ${B}, passed: false, error: e.message || String(e) });
|
|
201
201
|
}
|
|
202
202
|
`).join(`
|
|
203
|
-
`),
|
|
204
|
-
${
|
|
203
|
+
`),V=`
|
|
204
|
+
${`
|
|
205
|
+
const __saved_tjs = globalThis.__tjs;
|
|
206
|
+
class __MonadicError extends Error { constructor(m,p,e,a,c){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;} }
|
|
207
|
+
const __stub_tjs = { version: '0.0.0', MonadicError: __MonadicError, pushStack: () => {}, popStack: () => {}, getStack: () => [], typeError: (path, expected, value) => new __MonadicError(\`Type error at \${path}: expected \${expected}\`, path, expected, typeof value), createRuntime: function() { return this; } };
|
|
208
|
+
globalThis.__tjs = __stub_tjs;
|
|
209
|
+
`}
|
|
205
210
|
const __testResults = [];
|
|
206
211
|
const __sigTestResults = [];
|
|
207
212
|
try {
|
|
@@ -276,104 +281,113 @@ ${H}}`}return String(Z)}function i8(Z){let $=Z.replace(/\/\*[\s\S]*?\*\//g,(X)=>
|
|
|
276
281
|
${_}
|
|
277
282
|
|
|
278
283
|
// Run signature tests
|
|
279
|
-
${
|
|
284
|
+
${M}
|
|
280
285
|
|
|
281
286
|
} finally {
|
|
282
287
|
${"globalThis.__tjs = __saved_tjs;"}
|
|
283
288
|
}
|
|
284
289
|
return { testResults: __testResults, sigTestResults: __sigTestResults };
|
|
285
|
-
`;try{let A=Function("__deepEqual","__format","__typeMatches",
|
|
286
|
-
`)}var T0={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:D.i32_load8_s,storeOp:D.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:D.i32_load8_u,storeOp:D.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:D.i32_load8_u,storeOp:D.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:D.i32_load16_s,storeOp:D.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:D.i32_load16_u,storeOp:D.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:D.i32_load,storeOp:D.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:D.i32_load,storeOp:D.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:D.f32_load,storeOp:D.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:D.f64_load,storeOp:D.f64_store}};function e8(Z){let $={params:Z,locals:new Map,nextLocalIndex:Z.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1};return Z.forEach((X,K)=>{$.locals.set(X.name,{index:K,type:X.type})}),$}function E0(Z,$,X){if(Z.locals.has($))return Z.errors.push(`Duplicate local declaration: ${$}`),Z.locals.get($).index;let K=Z.nextLocalIndex++;return Z.locals.set($,{index:K,type:X}),Z.localTypes.push(X),K}function O1(Z,$){return Z.locals.get($)}function y1(Z,$){switch(Z.type){case"ExpressionStatement":{let X=Z.expression;return[...p(X,$),D.drop]}case"ReturnStatement":{let X=Z;if($.hasReturn=!0,!X.argument)return[D.return];let K=p(X.argument,$),Q=o(X.argument,$);if(Q==="i32")K.push(D.f64_convert_i32_s);else if(Q==="f32")K.push(D.f64_promote_f32);return K.push(D.return),K}case"VariableDeclaration":{let X=Z,K=[];for(let Q of X.declarations){if(Q.id.type!=="Identifier"){$.errors.push("Destructuring not supported in WASM blocks");continue}let H=Q.id.name,Y="f64";if(Q.init)Y=o(Q.init,$);let G=E0($,H,Y);if(Q.init)K.push(...p(Q.init,$)),K.push(D.local_set,...y(G))}return K}case"ForStatement":return ZZ(Z,$);case"IfStatement":return XZ(Z,$);case"BlockStatement":{let X=Z,K=[];for(let Q of X.body)K.push(...y1(Q,$));return K}default:return $.errors.push(`Unsupported statement type: ${Z.type}`),[]}}function ZZ(Z,$){let X=[];if(Z.init)if(Z.init.type==="VariableDeclaration")X.push(...y1(Z.init,$));else X.push(...p(Z.init,$));if(X.push(D.block,G1.void),X.push(D.loop,G1.void),Z.test)X.push(...p(Z.test,$)),X.push(D.i32_eqz),X.push(D.br_if,1);if($.loopDepth++,Z.body)X.push(...y1(Z.body,$));if($.loopDepth--,Z.update)X.push(...p(Z.update,$)),X.push(D.drop);return X.push(D.br,0),X.push(D.end),X.push(D.end),X}function XZ(Z,$){let X=[];if(X.push(...p(Z.test,$)),X.push(D.if,G1.void),X.push(...y1(Z.consequent,$)),Z.alternate)X.push(D.else),X.push(...y1(Z.alternate,$));return X.push(D.end),X}function o(Z,$){switch(Z.type){case"Literal":{let X=Z;if(typeof X.value==="number"){if(X.raw&&(X.raw.includes(".")||X.raw.includes("e")))return"f64";if(Number.isInteger(X.value)&&X.value>=-2147483648&&X.value<=2147483647)return"i32";return"f64"}return"f64"}case"Identifier":return O1($,Z.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let X=Z;if(["<",">","<=",">=","==","!=","===","!=="].includes(X.operator))return"i32";if(["|","&","^","<<",">>",">>>"].includes(X.operator))return"i32";let K=o(X.left,$),Q=o(X.right,$);if(K==="f64"||Q==="f64")return"f64";if(K==="f32"||Q==="f32")return"f32";return"i32"}case"UnaryExpression":{let X=Z;if(X.operator==="!")return"i32";return o(X.argument,$)}case"MemberExpression":{let X=Z;if(X.object.type==="Identifier"){if(O1($,X.object.name)){let Q=$.params.find((H)=>H.name===X.object.name);if(Q?.arrayType){let H=T0[Q.arrayType];if(H)return H.elementType}}}return"f64"}case"CallExpression":{let X=Z;if(X.callee.type==="MemberExpression"){let K=X.callee;if(K.object.type==="Identifier"&&K.object.name==="Math")return"f64"}return"f64"}default:return"f64"}}function p(Z,$){switch(Z.type){case"Literal":{let X=Z;if(typeof X.value==="number"){let K=o(Z,$);if(K==="i32")return[D.i32_const,...Q0(X.value|0)];else if(K==="f32")return[D.f32_const,...a8(X.value)];else return[D.f64_const,...z1(X.value)]}return $.errors.push(`Unsupported literal type: ${typeof X.value}`),[D.f64_const,...z1(0)]}case"Identifier":{let X=Z.name,K=O1($,X);if(K)return[D.local_get,...y(K.index)];return $.errors.push(`Unknown identifier: ${X}`),[D.f64_const,...z1(0)]}case"BinaryExpression":return $Z(Z,$);case"UnaryExpression":return KZ(Z,$);case"AssignmentExpression":return QZ(Z,$);case"UpdateExpression":return HZ(Z,$);case"MemberExpression":return YZ(Z,$);case"CallExpression":return zZ(Z,$);case"SequenceExpression":{let X=Z,K=[];for(let Q=0;Q<X.expressions.length;Q++)if(K.push(...p(X.expressions[Q],$)),Q<X.expressions.length-1)K.push(D.drop);return K}default:return $.errors.push(`Unsupported expression type: ${Z.type}`),[D.f64_const,...z1(0)]}}function $Z(Z,$){let X=p(Z.left,$),K=p(Z.right,$),Q=o(Z,$),H=o(Z.left,$),Y=o(Z.right,$),G=["<",">","<=",">=","==","===","!=","!=="].includes(Z.operator),z;if(H==="f64"||Y==="f64")z="f64";else if(H==="f32"||Y==="f32")z="f32";else z="i32";if(!G&&Q==="f64")z="f64";let W=X,J=K;if(z==="f64"){if(H==="i32")W=[...X,D.f64_convert_i32_s];else if(H==="f32")W=[...X,D.f64_promote_f32];if(Y==="i32")J=[...K,D.f64_convert_i32_s];else if(Y==="f32")J=[...K,D.f64_promote_f32]}else if(z==="f32"){if(H==="i32")W=[...X,D.f32_convert_i32_s];if(Y==="i32")J=[...K,D.f32_convert_i32_s]}let _={"+":{i32:D.i32_add,f32:D.f32_add,f64:D.f64_add},"-":{i32:D.i32_sub,f32:D.f32_sub,f64:D.f64_sub},"*":{i32:D.i32_mul,f32:D.f32_mul,f64:D.f64_mul},"/":{i32:D.i32_div_s,f32:D.f32_div,f64:D.f64_div},"%":{i32:D.i32_rem_s},"<":{i32:D.i32_lt_s,f32:D.f32_lt,f64:D.f64_lt},">":{i32:D.i32_gt_s,f32:D.f32_gt,f64:D.f64_gt},"<=":{i32:D.i32_le_s,f32:D.f32_le,f64:D.f64_le},">=":{i32:D.i32_ge_s,f32:D.f32_ge,f64:D.f64_ge},"==":{i32:D.i32_eq,f32:D.f32_eq,f64:D.f64_eq},"===":{i32:D.i32_eq,f32:D.f32_eq,f64:D.f64_eq},"!=":{i32:D.i32_ne,f32:D.f32_ne,f64:D.f64_ne},"!==":{i32:D.i32_ne,f32:D.f32_ne,f64:D.f64_ne},"|":{i32:D.i32_or},"&":{i32:D.i32_and},"^":{i32:D.i32_xor},"<<":{i32:D.i32_shl},">>":{i32:D.i32_shr_s},">>>":{i32:D.i32_shr_u}}[Z.operator];if(!_)return $.errors.push(`Unsupported operator: ${Z.operator}`),[D.f64_const,...z1(0)];let U=_[z]??_.f64??_.i32;if(U===void 0)return $.errors.push(`Operator ${Z.operator} not supported for type ${z}`),[D.f64_const,...z1(0)];return[...W,...J,U]}function KZ(Z,$){let X=p(Z.argument,$),K=o(Z.argument,$);switch(Z.operator){case"-":if(K==="i32")return[D.i32_const,0,...X,D.i32_sub];else if(K==="f32")return[...X,D.f32_neg];else return[...X,D.f64_neg];case"!":return[...X,D.i32_eqz];case"~":return[...X,D.i32_const,...Q0(-1),D.i32_xor];default:return $.errors.push(`Unsupported unary operator: ${Z.operator}`),X}}function QZ(Z,$){if(Z.left.type==="MemberExpression")return GZ(Z.left,Z.right,Z.operator,$);if(Z.left.type!=="Identifier")return $.errors.push("Assignment target must be identifier or array element"),[];let X=Z.left.name,K=O1($,X);if(!K)return $.errors.push(`Unknown variable: ${X}`),[];let Q=[];if(Z.operator==="="){Q.push(...p(Z.right,$));let H=o(Z.right,$);if(K.type==="f64"&&H==="i32")Q.push(D.f64_convert_i32_s);else if(K.type==="f64"&&H==="f32")Q.push(D.f64_promote_f32);else if(K.type==="i32"&&H==="f64")Q.push(D.i32_trunc_f64_s);else if(K.type==="i32"&&H==="f32")Q.push(D.i32_trunc_f32_s);else if(K.type==="f32"&&H==="i32")Q.push(D.f32_convert_i32_s);else if(K.type==="f32"&&H==="f64")Q.push(D.f32_demote_f64)}else{let H=o(Z.right,$),Y=K.type;if(H==="f64"||K.type==="f64")Y="f64";else if(H==="f32"||K.type==="f32")Y="f32";if(Q.push(D.local_get,...y(K.index)),Y==="f64"&&K.type==="i32")Q.push(D.f64_convert_i32_s);else if(Y==="f64"&&K.type==="f32")Q.push(D.f64_promote_f32);else if(Y==="f32"&&K.type==="i32")Q.push(D.f32_convert_i32_s);if(Q.push(...p(Z.right,$)),Y==="f64"&&H==="i32")Q.push(D.f64_convert_i32_s);else if(Y==="f64"&&H==="f32")Q.push(D.f64_promote_f32);else if(Y==="f32"&&H==="i32")Q.push(D.f32_convert_i32_s);let G=Z.operator.slice(0,-1),W={"+":{i32:D.i32_add,f32:D.f32_add,f64:D.f64_add},"-":{i32:D.i32_sub,f32:D.f32_sub,f64:D.f64_sub},"*":{i32:D.i32_mul,f32:D.f32_mul,f64:D.f64_mul},"/":{i32:D.i32_div_s,f32:D.f32_div,f64:D.f64_div}}[G]?.[Y];if(!W)return $.errors.push(`Unsupported compound assignment: ${Z.operator}`),[];if(Q.push(W),K.type==="i32"&&Y==="f64")Q.push(D.i32_trunc_f64_s);else if(K.type==="i32"&&Y==="f32")Q.push(D.i32_trunc_f32_s);else if(K.type==="f32"&&Y==="f64")Q.push(D.f32_demote_f64)}return Q.push(D.local_tee,...y(K.index)),Q}function HZ(Z,$){if(Z.argument.type!=="Identifier")return $.errors.push("Update expression argument must be identifier"),[];let X=Z.argument.name,K=O1($,X);if(!K)return $.errors.push(`Unknown variable: ${X}`),[];let Q=[],H=K.type==="i32";if(Z.prefix){if(Q.push(D.local_get,...y(K.index)),H)Q.push(D.i32_const,1),Q.push(Z.operator==="++"?D.i32_add:D.i32_sub);else Q.push(D.f64_const,...z1(1)),Q.push(Z.operator==="++"?D.f64_add:D.f64_sub);Q.push(D.local_tee,...y(K.index))}else{if(Q.push(D.local_get,...y(K.index)),Q.push(D.local_get,...y(K.index)),H)Q.push(D.i32_const,1),Q.push(Z.operator==="++"?D.i32_add:D.i32_sub);else Q.push(D.f64_const,...z1(1)),Q.push(Z.operator==="++"?D.f64_add:D.f64_sub);Q.push(D.local_set,...y(K.index))}return Q}function YZ(Z,$){if(Z.object.type!=="Identifier")return $.errors.push("Array access requires identifier"),[];let X=Z.object.name,K=$.params.find((W)=>W.name===X);if(!K?.isArray||!K.arrayType)return $.errors.push(`${X} is not a typed array parameter`),[];let Q=T0[K.arrayType];if(!Q)return $.errors.push(`Unknown array type: ${K.arrayType}`),[];$.needsMemory=!0;let H=[],Y=O1($,X);if(!Y)return $.errors.push(`Unknown array: ${X}`),[];if(H.push(D.local_get,...y(Y.index)),!Z.computed||!Z.property)return $.errors.push("Array access requires computed index"),[];let G=p(Z.property,$),z=o(Z.property,$);if(H.push(...G),z==="f64")H.push(D.i32_trunc_f64_s);if(Q.bytesPerElement>1)H.push(D.i32_const,...Q0(Q.bytesPerElement)),H.push(D.i32_mul);return H.push(D.i32_add),H.push(Q.loadOp,0,0),H}function GZ(Z,$,X,K){if(Z.object.type!=="Identifier")return K.errors.push("Array store requires identifier"),[];let Q=Z.object.name,H=K.params.find((I)=>I.name===Q);if(!H?.isArray||!H.arrayType)return K.errors.push(`${Q} is not a typed array parameter`),[];let Y=T0[H.arrayType];if(!Y)return K.errors.push(`Unknown array type: ${H.arrayType}`),[];K.needsMemory=!0;let G=[],z=O1(K,Q);if(!z)return[];if(!Z.computed||!Z.property)return K.errors.push("Array store requires computed index"),[];let W=p(Z.property,K),J=o(Z.property,K),L=()=>{let I=[];if(I.push(D.local_get,...y(z.index)),I.push(...W),J==="f64")I.push(D.i32_trunc_f64_s);if(Y.bytesPerElement>1)I.push(D.i32_const,...Q0(Y.bytesPerElement)),I.push(D.i32_mul);return I.push(D.i32_add),I};if(X==="=")G.push(...p($,K));else{let I=E0(K,`__addr_${K.nextLocalIndex}`,"i32");G.push(...L()),G.push(D.local_tee,...y(I)),G.push(Y.loadOp,0,0),G.push(...p($,K));let w=o($,K);if(Y.elementType==="f32"&&w==="f64")G.push(D.f32_demote_f64);else if(Y.elementType==="f64"&&w==="f32")G.push(D.f64_promote_f32);else if(Y.elementType==="f32"&&w==="i32")G.push(D.f32_convert_i32_s);else if(Y.elementType==="f64"&&w==="i32")G.push(D.f64_convert_i32_s);else if(Y.elementType==="i32"&&w==="f64")G.push(D.i32_trunc_f64_s);else if(Y.elementType==="i32"&&w==="f32")G.push(D.i32_trunc_f32_s);let j=X.slice(0,-1),B={"+":Y.elementType==="i32"?D.i32_add:Y.elementType==="f32"?D.f32_add:D.f64_add,"-":Y.elementType==="i32"?D.i32_sub:Y.elementType==="f32"?D.f32_sub:D.f64_sub,"*":Y.elementType==="i32"?D.i32_mul:Y.elementType==="f32"?D.f32_mul:D.f64_mul};G.push(B[j]??D.f64_add);let P=E0(K,`__val_${K.nextLocalIndex}`,Y.elementType);return G.push(D.local_set,...y(P)),G.push(D.local_get,...y(I)),G.push(D.local_get,...y(P)),G.push(Y.storeOp,0,0),G.push(D.local_get,...y(P)),G}let _=o($,K);if(Y.elementType==="f32"&&_==="f64")G.push(D.f32_demote_f64);else if(Y.elementType==="f64"&&_==="f32")G.push(D.f64_promote_f32);else if(Y.elementType==="i32"&&_==="f64")G.push(D.i32_trunc_f64_s);let U=E0(K,`__tmp_${K.nextLocalIndex}`,Y.elementType);if(G.push(D.local_set,...y(U)),G.push(D.local_get,...y(z.index)),G.push(...W),J==="f64")G.push(D.i32_trunc_f64_s);if(Y.bytesPerElement>1)G.push(D.i32_const,...Q0(Y.bytesPerElement)),G.push(D.i32_mul);return G.push(D.i32_add),G.push(D.local_get,...y(U)),G.push(Y.storeOp,0,0),G.push(D.local_get,...y(U)),G}function zZ(Z,$){if(Z.callee.type==="MemberExpression"){let X=Z.callee;if(X.object.type==="Identifier"&&X.object.name==="Math"&&X.property.type==="Identifier"){let K=X.property.name;return WZ(K,Z.arguments,$)}}return $.errors.push(`Unsupported function call: ${Z.callee.type}`),[D.f64_const,...z1(0)]}function WZ(Z,$,X){let K=[];for(let G of $){K.push(...p(G,X));let z=o(G,X);if(z==="i32")K.push(D.f64_convert_i32_s);else if(z==="f32")K.push(D.f64_promote_f32)}let H={abs:D.f64_abs,ceil:D.f64_ceil,floor:D.f64_floor,trunc:D.f64_trunc,sqrt:D.f64_sqrt,min:D.f64_min,max:D.f64_max}[Z];if(H!==void 0)return K.push(H),K;if(["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(Z))return X.needsMathImports.add(Z),X.errors.push(`Math.${Z} requires JS import (not yet implemented)`),[D.f64_const,...z1(0)];return X.errors.push(`Unknown Math method: ${Z}`),[D.f64_const,...z1(0)]}function l6(Z){let $=Z.split(":").map((H)=>H.trim()),X=$[0];if($.length===1)return{name:X,type:"f64"};let K=$[1];if(T0[K])return{name:X,type:"i32",isArray:!0,arrayType:K};return{name:X,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[K]??"f64"}}function JZ(Z,$,X,K,Q){let H=[0,97,115,109,1,0,0,0],Y=Z.map((P)=>G1[P.type]),G=Q?[1,G1.f64]:[0],z=$0(X0.type,[1,96,...y(Z.length),...Y,...G]),W=[],J=[];if(K)J=$0(X0.import,[1,...V4("env"),...V4("memory"),2,0,1]);let L=$0(X0.function,[1,0]),_=$0(X0.export,[1,...V4("compute"),0,0]),U=[];if(X.length>0){let P=X[0],A=1;for(let R=1;R<X.length;R++)if(X[R]===P)A++;else U.push([...y(A),G1[P]]),P=X[R],A=1;U.push([...y(A),G1[P]])}let w=[...[...y(U.length),...U.flat()],...$,D.end],j=$0(X0.code,[1,...y(w.length),...w]),B=[...H,...z];if(J.length>0)B.push(...J);return B.push(...L,..._,...j),B}function S0(Z){try{let $=Z.captures.map(l6),X;try{let W=`function __wasm__(${$.map((J)=>J.name).join(", ")}) { ${Z.body} }`;X=m6.parse(W,{ecmaVersion:2022})}catch(W){return{bytes:new Uint8Array,warnings:[],success:!1,error:`Parse error: ${W.message}`}}let Q=X.body[0].body.body,H=e8($),Y=[];for(let W of Q)Y.push(...y1(W,H));if(H.errors.length>0)return{bytes:new Uint8Array,warnings:H.warnings,success:!1,error:H.errors.join("; ")};let G=JZ($,Y,H.localTypes,H.needsMemory,H.hasReturn),z=t8(Y,$,H.localTypes);return{bytes:new Uint8Array(G),warnings:H.warnings,success:!0,needsMemory:H.needsMemory,wat:z}}catch($){return{bytes:new Uint8Array,warnings:[],success:!1,error:$.message}}}async function i6(Z,$){let X={};if($)X.env={memory:$};let K=await WebAssembly.compile(Z);return WebAssembly.instantiate(K,X)}async function _Z(Z){let $=S0(Z);if(!$.success)return{fn:()=>0,success:!1,error:$.error};try{let X;if($.needsMemory)X=new WebAssembly.Memory({initial:256});let Q=(await i6($.bytes,X)).exports.compute,H=Z.captures.map(l6);if(!H.some((z)=>z.isArray))return{fn:Q,memory:X,success:!0};return{fn:(...z)=>{if(!X)throw Error("Memory not initialized");let W=new Uint8Array(X.buffer),J=0,L=[];for(let U=0;U<H.length;U++){let I=H[U],w=z[U];if(I.isArray&&w instanceof Object&&"buffer"in w){let j=w,B=new Uint8Array(j.buffer,j.byteOffset,j.byteLength);W.set(B,J),L.push(J),J+=B.length,J=J+7&-8}else L.push(w)}let _=Q(...L);J=0;for(let U=0;U<H.length;U++){let I=H[U],w=z[U];if(I.isArray&&w instanceof Object&&"buffer"in w){let j=w,B=new Uint8Array(j.buffer,j.byteOffset,j.byteLength);B.set(W.slice(J,J+B.length)),J+=B.length,J=J+7&-8}}return _},memory:X,success:!0}}catch(X){return{fn:()=>0,success:!1,error:X.message}}}async function p6(Z){let $=await _Z(Z);if(!$.success)return console.warn(`WASM compilation failed for ${Z.id}:`,$.error),!1;return globalThis[Z.id]=$.fn,!0}async function LZ(Z){let $=0,X=0,K=[];for(let Q of Z)if(await p6(Q))$++;else X++,K.push(`Failed to compile ${Q.id}`);return{compiled:$,failed:X,errors:K}}function n6(Z){let $=[],X=[];for(let Y of Z){let G=S0(Y);if(G.success){let z=btoa(String.fromCharCode(...G.bytes));X.push({id:Y.id,base64:z,captures:Y.captures,needsMemory:G.needsMemory??!1,wat:G.wat??""}),$.push({id:Y.id,success:!0,byteLength:G.bytes.length})}else $.push({id:Y.id,success:!1,error:G.error})}if(X.length===0)return{code:"",results:$};let K=X.map((Y)=>{let G=Y.wat.split(`
|
|
287
|
-
`).map((
|
|
288
|
-
* WASM: ${
|
|
289
|
-
${
|
|
290
|
+
`;try{let A=Function("__deepEqual","__format","__typeMatches",V),{testResults:B,sigTestResults:P}=A(C4,Q0,O4);for(let j of B){let C=Z[j.idx],E=z&&!j.passed&&j.error&&/is not defined$/.test(j.error);Y.push({description:C.description,passed:E?!0:j.passed,error:E?void 0:j.error,line:C.line})}for(let j of P){let C=U[j.idx],E=z&&!j.passed&&j.error&&/is not defined$/.test(j.error);Y.push({description:`${C.funcName} signature example`,passed:E?!0:j.passed,error:E?void 0:j.error,isSignatureTest:!0,line:C.line})}}catch(A){let B=z&&A instanceof ReferenceError;for(let P of Z)Y.push({description:P.description,passed:B,error:B?void 0:`Module execution failed: ${A.message}`,line:P.line});for(let P of U)Y.push({description:`${P.funcName} signature example`,passed:B,error:B?void 0:`Module execution failed: ${A.message}`,isSignatureTest:!0,line:P.line})}for(let A of R)Y.push({description:`${A.funcName} signature example`,passed:!0,isSignatureTest:!0,line:A.line});return Y}function N4(Z){let X="",$=0,K=!1;for(let H=0;H<Z.length;H++){let Y=Z[H];if(Y==="{"||Y==="["||Y==="("){if(Y==="{"&&$===0&&K)break;$++,X+=Y,K=!0}else if(Y==="}"||Y==="]"||Y===")")$--,X+=Y;else if(!/\s/.test(Y))X+=Y,K=!0;else X+=Y}return X.trim()||null}function XZ(Z){if(!Z.trim())return[];let X=[],$=KZ(Z);for(let K of $){let Q=K.match(/(?:\(\s*[?!]\s*)?(\w+)\s*[:=]\s*(.+?)(?:\))?$/);if(Q)X.push(Q[2].trim());else return[]}return X}function KZ(Z){let X=[],$="",K=0;for(let Q of Z){if(Q==="("||Q==="["||Q==="{")K++;else if(Q===")"||Q==="]"||Q==="}")K--;else if(Q===","&&K===0){X.push($.trim()),$="";continue}$+=Q}if($.trim())X.push($.trim());return X}import*as a6 from"acorn";var q1={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},H0={custom:0,type:1,import:2,function:3,table:4,memory:5,global:6,export:7,start:8,element:9,code:10,data:11},q={unreachable:0,nop:1,block:2,loop:3,if:4,else:5,end:11,br:12,br_if:13,br_table:14,return:15,call:16,call_indirect:17,drop:26,select:27,local_get:32,local_set:33,local_tee:34,global_get:35,global_set:36,i32_load:40,i64_load:41,f32_load:42,f64_load:43,i32_load8_s:44,i32_load8_u:45,i32_load16_s:46,i32_load16_u:47,i32_store:54,i64_store:55,f32_store:56,f64_store:57,i32_store8:58,i32_store16:59,memory_size:63,memory_grow:64,i32_const:65,i64_const:66,f32_const:67,f64_const:68,i32_eqz:69,i32_eq:70,i32_ne:71,i32_lt_s:72,i32_lt_u:73,i32_gt_s:74,i32_gt_u:75,i32_le_s:76,i32_le_u:77,i32_ge_s:78,i32_ge_u:79,i64_eqz:80,i64_eq:81,i64_ne:82,i64_lt_s:83,i64_lt_u:84,i64_gt_s:85,i64_gt_u:86,i64_le_s:87,i64_le_u:88,i64_ge_s:89,i64_ge_u:90,f32_eq:91,f32_ne:92,f32_lt:93,f32_gt:94,f32_le:95,f32_ge:96,f64_eq:97,f64_ne:98,f64_lt:99,f64_gt:100,f64_le:101,f64_ge:102,i32_clz:103,i32_ctz:104,i32_popcnt:105,i32_add:106,i32_sub:107,i32_mul:108,i32_div_s:109,i32_div_u:110,i32_rem_s:111,i32_rem_u:112,i32_and:113,i32_or:114,i32_xor:115,i32_shl:116,i32_shr_s:117,i32_shr_u:118,i32_rotl:119,i32_rotr:120,i64_add:124,i64_sub:125,i64_mul:126,i64_div_s:127,f32_abs:139,f32_neg:140,f32_ceil:141,f32_floor:142,f32_trunc:143,f32_nearest:144,f32_sqrt:145,f32_add:146,f32_sub:147,f32_mul:148,f32_div:149,f32_min:150,f32_max:151,f32_copysign:152,f64_abs:153,f64_neg:154,f64_ceil:155,f64_floor:156,f64_trunc:157,f64_nearest:158,f64_sqrt:159,f64_add:160,f64_sub:161,f64_mul:162,f64_div:163,f64_min:164,f64_max:165,f64_copysign:166,i32_wrap_i64:167,i32_trunc_f32_s:168,i32_trunc_f32_u:169,i32_trunc_f64_s:170,i32_trunc_f64_u:171,i64_extend_i32_s:172,i64_extend_i32_u:173,f32_convert_i32_s:178,f32_convert_i32_u:179,f32_convert_i64_s:180,f32_demote_f64:182,f64_convert_i32_s:183,f64_convert_i32_u:184,f64_convert_i64_s:185,f64_promote_f32:187,i32_reinterpret_f32:188,f32_reinterpret_i32:190,f64_reinterpret_i64:191,i32_extend8_s:192,i32_extend16_s:193},QZ=Object.fromEntries(Object.entries(q).map(([Z,X])=>[X,Z.replace(/_/g,".")])),G0=253,t={v128_load:0,v128_store:11,v128_const:12,f32x4_splat:19,f32x4_extract_lane:31,f32x4_replace_lane:32,f32x4_neg:225,f32x4_sqrt:227,f32x4_add:228,f32x4_sub:229,f32x4_mul:230,f32x4_div:231},HZ=Object.fromEntries(Object.entries(t).map(([Z,X])=>[X,Z.replace(/_/g,".")]));function E4(Z){return[G0,...f(Z)]}function s6(Z,X,$){return[G0,...f(Z),...f(X),...f($)]}function f(Z){let X=[];do{let $=Z&127;if(Z>>>=7,Z!==0)$|=128;X.push($)}while(Z!==0);return X}function z0(Z){let X=[],$=!0;while($){let K=Z&127;if(Z>>=7,Z===0&&(K&64)===0||Z===-1&&(K&64)!==0)$=!1;else K|=128;X.push(K)}return X}function S4(Z){let X=new ArrayBuffer(4);return new Float32Array(X)[0]=Z,[...new Uint8Array(X)]}function W1(Z){let X=new ArrayBuffer(8);return new Float64Array(X)[0]=Z,[...new Uint8Array(X)]}function T4(Z){let X=new TextEncoder().encode(Z);return[...f(X.length),...X]}function Y0(Z,X){return[Z,...f(X.length),...X]}function V1(Z,X){let $=0,K=0,Q=X;while(Q<Z.length){let H=Z[Q];if($|=(H&127)<<K,Q++,(H&128)===0)break;K+=7}return[$,Q-X]}function YZ(Z,X){let $=new ArrayBuffer(8),K=new Uint8Array($);for(let Q=0;Q<8;Q++)K[Q]=Z[X+Q];return new Float64Array($)[0]}function GZ(Z,X,$){let K=[],Q=1,H=()=>" ".repeat(Q),Y=X.map((W,J)=>`(param $${W.name} ${W.type})`).join(" "),G=$.map((W,J)=>`(local $L${X.length+J} ${W})`).join(" ");if(K.push(`(func (export "compute") ${Y} (result f64)`),G)K.push(` ${G}`);let z=0;while(z<Z.length){let W=Z[z],J=QZ[W]||`unknown(0x${W.toString(16)})`;if(z++,W===q.local_get||W===q.local_set||W===q.local_tee){let[L,_]=V1(Z,z);z+=_;let U=L<X.length?`$${X[L].name}`:`$L${L}`;K.push(`${H()}${J} ${U}`)}else if(W===q.br||W===q.br_if){let[L,_]=V1(Z,z);z+=_,K.push(`${H()}${J} ${L}`)}else if(W===q.i32_const){let[L,_]=V1(Z,z);z+=_,K.push(`${H()}i32.const ${L}`)}else if(W===q.f32_const){let L=new ArrayBuffer(4),_=new Uint8Array(L);for(let R=0;R<4;R++)_[R]=Z[z+R];let U=new Float32Array(L)[0];z+=4,K.push(`${H()}f32.const ${U}`)}else if(W===q.f64_const){let L=YZ(Z,z);z+=8,K.push(`${H()}f64.const ${L}`)}else if(W===q.block||W===q.loop){let L=Z[z];z++,K.push(`${H()}${J}${L===q1.void?"":` (result ${L===q1.f64?"f64":"i32"})`}`),Q++}else if(W===q.if){let L=Z[z];z++,K.push(`${H()}if${L===q1.void?"":` (result ${L===q1.f64?"f64":"i32"})`}`),Q++}else if(W===q.else)Q--,K.push(`${H()}else`),Q++;else if(W===q.end)Q=Math.max(1,Q-1),K.push(`${H()}end`);else if(W===q.f64_load||W===q.f64_store||W===q.f32_load||W===q.f32_store||W===q.i32_load||W===q.i32_store){let[L,_]=V1(Z,z);z+=_;let[U,R]=V1(Z,z);z+=R,K.push(`${H()}${J}${U?` offset=${U}`:""}`)}else if(W===G0){let[L,_]=V1(Z,z);z+=_;let U=HZ[L]||`simd.unknown(0x${L.toString(16)})`;if(L===t.v128_load||L===t.v128_store){let[R,M]=V1(Z,z);z+=M;let[w,I]=V1(Z,z);z+=I,K.push(`${H()}${U}${w?` offset=${w}`:""}`)}else if(L===t.v128_const){let R=Z.slice(z,z+16);z+=16,K.push(`${H()}v128.const ${R.map((M)=>"0x"+M.toString(16).padStart(2,"0")).join(" ")}`)}else if(L===t.f32x4_extract_lane||L===t.f32x4_replace_lane){let R=Z[z];z++,K.push(`${H()}${U} ${R}`)}else K.push(`${H()}${U}`)}else K.push(`${H()}${J}`)}return K.push(")"),K.join(`
|
|
291
|
+
`)}var g0={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:q.i32_load8_s,storeOp:q.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:q.i32_load8_u,storeOp:q.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:q.i32_load8_u,storeOp:q.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:q.i32_load16_s,storeOp:q.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:q.i32_load16_u,storeOp:q.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:q.i32_load,storeOp:q.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:q.i32_load,storeOp:q.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:q.f32_load,storeOp:q.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:q.f64_load,storeOp:q.f64_store}};function zZ(Z){let X={params:Z,locals:new Map,nextLocalIndex:Z.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1};return Z.forEach(($,K)=>{X.locals.set($.name,{index:K,type:$.type})}),X}function k0(Z,X,$){if(Z.locals.has(X))return Z.errors.push(`Duplicate local declaration: ${X}`),Z.locals.get(X).index;let K=Z.nextLocalIndex++;return Z.locals.set(X,{index:K,type:$}),Z.localTypes.push($),K}function g1(Z,X){return Z.locals.get(X)}function d1(Z,X){switch(Z.type){case"ExpressionStatement":{let $=Z.expression;return[...h($,X),q.drop]}case"ReturnStatement":{let $=Z;if(X.hasReturn=!0,!$.argument)return[q.return];let K=h($.argument,X),Q=m($.argument,X);if(Q==="i32")K.push(q.f64_convert_i32_s);else if(Q==="f32")K.push(q.f64_promote_f32);return K.push(q.return),K}case"VariableDeclaration":{let $=Z,K=[];for(let Q of $.declarations){if(Q.id.type!=="Identifier"){X.errors.push("Destructuring not supported in WASM blocks");continue}let H=Q.id.name,Y="f64";if(Q.init)Y=m(Q.init,X);let G=k0(X,H,Y);if(Q.init)K.push(...h(Q.init,X)),K.push(q.local_set,...f(G))}return K}case"ForStatement":return WZ(Z,X);case"IfStatement":return JZ(Z,X);case"BlockStatement":{let $=Z,K=[];for(let Q of $.body)K.push(...d1(Q,X));return K}default:return X.errors.push(`Unsupported statement type: ${Z.type}`),[]}}function WZ(Z,X){let $=[];if(Z.init)if(Z.init.type==="VariableDeclaration")$.push(...d1(Z.init,X));else $.push(...h(Z.init,X));if($.push(q.block,q1.void),$.push(q.loop,q1.void),Z.test)$.push(...h(Z.test,X)),$.push(q.i32_eqz),$.push(q.br_if,1);if(X.loopDepth++,Z.body)$.push(...d1(Z.body,X));if(X.loopDepth--,Z.update)$.push(...h(Z.update,X)),$.push(q.drop);return $.push(q.br,0),$.push(q.end),$.push(q.end),$}function JZ(Z,X){let $=[];if($.push(...h(Z.test,X)),$.push(q.if,q1.void),$.push(...d1(Z.consequent,X)),Z.alternate)$.push(q.else),$.push(...d1(Z.alternate,X));return $.push(q.end),$}function m(Z,X){switch(Z.type){case"Literal":{let $=Z;if(typeof $.value==="number"){if($.raw&&($.raw.includes(".")||$.raw.includes("e")))return"f64";if(Number.isInteger($.value)&&$.value>=-2147483648&&$.value<=2147483647)return"i32";return"f64"}return"f64"}case"Identifier":return g1(X,Z.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let $=Z;if(["<",">","<=",">=","==","!=","===","!=="].includes($.operator))return"i32";if(["|","&","^","<<",">>",">>>"].includes($.operator))return"i32";let K=m($.left,X),Q=m($.right,X);if(K==="v128"||Q==="v128")return"v128";if(K==="f64"||Q==="f64")return"f64";if(K==="f32"||Q==="f32")return"f32";return"i32"}case"UnaryExpression":{let $=Z;if($.operator==="!")return"i32";return m($.argument,X)}case"MemberExpression":{let $=Z;if($.object.type==="Identifier"){if(g1(X,$.object.name)){let Q=X.params.find((H)=>H.name===$.object.name);if(Q?.arrayType){let H=g0[Q.arrayType];if(H)return H.elementType}}}return"f64"}case"CallExpression":{let $=Z;if($.callee.type==="MemberExpression"){let K=$.callee;if(K.object.type==="Identifier"&&K.object.name==="Math")return"f64"}if($.callee.type==="Identifier"){let K=$.callee.name;if(K==="f32x4_extract_lane")return"f32";if(K.startsWith("f32x4_")||K==="v128_load")return"v128"}return"f64"}default:return"f64"}}function h(Z,X){switch(Z.type){case"Literal":{let $=Z;if(typeof $.value==="number"){let K=m(Z,X);if(K==="i32")return[q.i32_const,...z0($.value|0)];else if(K==="f32")return[q.f32_const,...S4($.value)];else return[q.f64_const,...W1($.value)]}return X.errors.push(`Unsupported literal type: ${typeof $.value}`),[q.f64_const,...W1(0)]}case"Identifier":{let $=Z.name,K=g1(X,$);if(K)return[q.local_get,...f(K.index)];return X.errors.push(`Unknown identifier: ${$}`),[q.f64_const,...W1(0)]}case"BinaryExpression":return _Z(Z,X);case"UnaryExpression":return LZ(Z,X);case"AssignmentExpression":return UZ(Z,X);case"UpdateExpression":return qZ(Z,X);case"MemberExpression":return DZ(Z,X);case"CallExpression":return BZ(Z,X);case"SequenceExpression":{let $=Z,K=[];for(let Q=0;Q<$.expressions.length;Q++)if(K.push(...h($.expressions[Q],X)),Q<$.expressions.length-1)K.push(q.drop);return K}default:return X.errors.push(`Unsupported expression type: ${Z.type}`),[q.f64_const,...W1(0)]}}function _Z(Z,X){let $=h(Z.left,X),K=h(Z.right,X),Q=m(Z,X),H=m(Z.left,X),Y=m(Z.right,X),G=["<",">","<=",">=","==","===","!=","!=="].includes(Z.operator),z;if(H==="f64"||Y==="f64")z="f64";else if(H==="f32"||Y==="f32")z="f32";else z="i32";if(!G&&Q==="f64")z="f64";let W=$,J=K;if(z==="f64"){if(H==="i32")W=[...$,q.f64_convert_i32_s];else if(H==="f32")W=[...$,q.f64_promote_f32];if(Y==="i32")J=[...K,q.f64_convert_i32_s];else if(Y==="f32")J=[...K,q.f64_promote_f32]}else if(z==="f32"){if(H==="i32")W=[...$,q.f32_convert_i32_s];if(Y==="i32")J=[...K,q.f32_convert_i32_s]}let _={"+":{i32:q.i32_add,f32:q.f32_add,f64:q.f64_add},"-":{i32:q.i32_sub,f32:q.f32_sub,f64:q.f64_sub},"*":{i32:q.i32_mul,f32:q.f32_mul,f64:q.f64_mul},"/":{i32:q.i32_div_s,f32:q.f32_div,f64:q.f64_div},"%":{i32:q.i32_rem_s},"<":{i32:q.i32_lt_s,f32:q.f32_lt,f64:q.f64_lt},">":{i32:q.i32_gt_s,f32:q.f32_gt,f64:q.f64_gt},"<=":{i32:q.i32_le_s,f32:q.f32_le,f64:q.f64_le},">=":{i32:q.i32_ge_s,f32:q.f32_ge,f64:q.f64_ge},"==":{i32:q.i32_eq,f32:q.f32_eq,f64:q.f64_eq},"===":{i32:q.i32_eq,f32:q.f32_eq,f64:q.f64_eq},"!=":{i32:q.i32_ne,f32:q.f32_ne,f64:q.f64_ne},"!==":{i32:q.i32_ne,f32:q.f32_ne,f64:q.f64_ne},"|":{i32:q.i32_or},"&":{i32:q.i32_and},"^":{i32:q.i32_xor},"<<":{i32:q.i32_shl},">>":{i32:q.i32_shr_s},">>>":{i32:q.i32_shr_u}}[Z.operator];if(!_)return X.errors.push(`Unsupported operator: ${Z.operator}`),[q.f64_const,...W1(0)];let U=_[z]??_.f64??_.i32;if(U===void 0)return X.errors.push(`Operator ${Z.operator} not supported for type ${z}`),[q.f64_const,...W1(0)];return[...W,...J,U]}function LZ(Z,X){let $=h(Z.argument,X),K=m(Z.argument,X);switch(Z.operator){case"-":if(K==="i32")return[q.i32_const,0,...$,q.i32_sub];else if(K==="f32")return[...$,q.f32_neg];else return[...$,q.f64_neg];case"!":return[...$,q.i32_eqz];case"~":return[...$,q.i32_const,...z0(-1),q.i32_xor];default:return X.errors.push(`Unsupported unary operator: ${Z.operator}`),$}}function UZ(Z,X){if(Z.left.type==="MemberExpression")return RZ(Z.left,Z.right,Z.operator,X);if(Z.left.type!=="Identifier")return X.errors.push("Assignment target must be identifier or array element"),[];let $=Z.left.name,K=g1(X,$);if(!K)return X.errors.push(`Unknown variable: ${$}`),[];let Q=[];if(Z.operator==="="){Q.push(...h(Z.right,X));let H=m(Z.right,X);if(K.type==="f64"&&H==="i32")Q.push(q.f64_convert_i32_s);else if(K.type==="f64"&&H==="f32")Q.push(q.f64_promote_f32);else if(K.type==="i32"&&H==="f64")Q.push(q.i32_trunc_f64_s);else if(K.type==="i32"&&H==="f32")Q.push(q.i32_trunc_f32_s);else if(K.type==="f32"&&H==="i32")Q.push(q.f32_convert_i32_s);else if(K.type==="f32"&&H==="f64")Q.push(q.f32_demote_f64)}else{let H=m(Z.right,X),Y=K.type;if(H==="f64"||K.type==="f64")Y="f64";else if(H==="f32"||K.type==="f32")Y="f32";if(Q.push(q.local_get,...f(K.index)),Y==="f64"&&K.type==="i32")Q.push(q.f64_convert_i32_s);else if(Y==="f64"&&K.type==="f32")Q.push(q.f64_promote_f32);else if(Y==="f32"&&K.type==="i32")Q.push(q.f32_convert_i32_s);if(Q.push(...h(Z.right,X)),Y==="f64"&&H==="i32")Q.push(q.f64_convert_i32_s);else if(Y==="f64"&&H==="f32")Q.push(q.f64_promote_f32);else if(Y==="f32"&&H==="i32")Q.push(q.f32_convert_i32_s);let G=Z.operator.slice(0,-1),W={"+":{i32:q.i32_add,f32:q.f32_add,f64:q.f64_add},"-":{i32:q.i32_sub,f32:q.f32_sub,f64:q.f64_sub},"*":{i32:q.i32_mul,f32:q.f32_mul,f64:q.f64_mul},"/":{i32:q.i32_div_s,f32:q.f32_div,f64:q.f64_div}}[G]?.[Y];if(!W)return X.errors.push(`Unsupported compound assignment: ${Z.operator}`),[];if(Q.push(W),K.type==="i32"&&Y==="f64")Q.push(q.i32_trunc_f64_s);else if(K.type==="i32"&&Y==="f32")Q.push(q.i32_trunc_f32_s);else if(K.type==="f32"&&Y==="f64")Q.push(q.f32_demote_f64)}return Q.push(q.local_tee,...f(K.index)),Q}function qZ(Z,X){if(Z.argument.type!=="Identifier")return X.errors.push("Update expression argument must be identifier"),[];let $=Z.argument.name,K=g1(X,$);if(!K)return X.errors.push(`Unknown variable: ${$}`),[];let Q=[],H=K.type==="i32";if(Z.prefix){if(Q.push(q.local_get,...f(K.index)),H)Q.push(q.i32_const,1),Q.push(Z.operator==="++"?q.i32_add:q.i32_sub);else Q.push(q.f64_const,...W1(1)),Q.push(Z.operator==="++"?q.f64_add:q.f64_sub);Q.push(q.local_tee,...f(K.index))}else{if(Q.push(q.local_get,...f(K.index)),Q.push(q.local_get,...f(K.index)),H)Q.push(q.i32_const,1),Q.push(Z.operator==="++"?q.i32_add:q.i32_sub);else Q.push(q.f64_const,...W1(1)),Q.push(Z.operator==="++"?q.f64_add:q.f64_sub);Q.push(q.local_set,...f(K.index))}return Q}function DZ(Z,X){if(Z.object.type!=="Identifier")return X.errors.push("Array access requires identifier"),[];let $=Z.object.name,K=X.params.find((W)=>W.name===$);if(!K?.isArray||!K.arrayType)return X.errors.push(`${$} is not a typed array parameter`),[];let Q=g0[K.arrayType];if(!Q)return X.errors.push(`Unknown array type: ${K.arrayType}`),[];X.needsMemory=!0;let H=[],Y=g1(X,$);if(!Y)return X.errors.push(`Unknown array: ${$}`),[];if(H.push(q.local_get,...f(Y.index)),!Z.computed||!Z.property)return X.errors.push("Array access requires computed index"),[];let G=h(Z.property,X),z=m(Z.property,X);if(H.push(...G),z==="f64")H.push(q.i32_trunc_f64_s);if(Q.bytesPerElement>1)H.push(q.i32_const,...z0(Q.bytesPerElement)),H.push(q.i32_mul);return H.push(q.i32_add),H.push(Q.loadOp,0,0),H}function RZ(Z,X,$,K){if(Z.object.type!=="Identifier")return K.errors.push("Array store requires identifier"),[];let Q=Z.object.name,H=K.params.find((R)=>R.name===Q);if(!H?.isArray||!H.arrayType)return K.errors.push(`${Q} is not a typed array parameter`),[];let Y=g0[H.arrayType];if(!Y)return K.errors.push(`Unknown array type: ${H.arrayType}`),[];K.needsMemory=!0;let G=[],z=g1(K,Q);if(!z)return[];if(!Z.computed||!Z.property)return K.errors.push("Array store requires computed index"),[];let W=h(Z.property,K),J=m(Z.property,K),L=()=>{let R=[];if(R.push(q.local_get,...f(z.index)),R.push(...W),J==="f64")R.push(q.i32_trunc_f64_s);if(Y.bytesPerElement>1)R.push(q.i32_const,...z0(Y.bytesPerElement)),R.push(q.i32_mul);return R.push(q.i32_add),R};if($==="=")G.push(...h(X,K));else{let R=k0(K,`__addr_${K.nextLocalIndex}`,"i32");G.push(...L()),G.push(q.local_tee,...f(R)),G.push(Y.loadOp,0,0),G.push(...h(X,K));let M=m(X,K);if(Y.elementType==="f32"&&M==="f64")G.push(q.f32_demote_f64);else if(Y.elementType==="f64"&&M==="f32")G.push(q.f64_promote_f32);else if(Y.elementType==="f32"&&M==="i32")G.push(q.f32_convert_i32_s);else if(Y.elementType==="f64"&&M==="i32")G.push(q.f64_convert_i32_s);else if(Y.elementType==="i32"&&M==="f64")G.push(q.i32_trunc_f64_s);else if(Y.elementType==="i32"&&M==="f32")G.push(q.i32_trunc_f32_s);let w=$.slice(0,-1),I={"+":Y.elementType==="i32"?q.i32_add:Y.elementType==="f32"?q.f32_add:q.f64_add,"-":Y.elementType==="i32"?q.i32_sub:Y.elementType==="f32"?q.f32_sub:q.f64_sub,"*":Y.elementType==="i32"?q.i32_mul:Y.elementType==="f32"?q.f32_mul:q.f64_mul};G.push(I[w]??q.f64_add);let V=k0(K,`__val_${K.nextLocalIndex}`,Y.elementType);return G.push(q.local_set,...f(V)),G.push(q.local_get,...f(R)),G.push(q.local_get,...f(V)),G.push(Y.storeOp,0,0),G.push(q.local_get,...f(V)),G}let _=m(X,K);if(Y.elementType==="f32"&&_==="f64")G.push(q.f32_demote_f64);else if(Y.elementType==="f64"&&_==="f32")G.push(q.f64_promote_f32);else if(Y.elementType==="i32"&&_==="f64")G.push(q.i32_trunc_f64_s);let U=k0(K,`__tmp_${K.nextLocalIndex}`,Y.elementType);if(G.push(q.local_set,...f(U)),G.push(q.local_get,...f(z.index)),G.push(...W),J==="f64")G.push(q.i32_trunc_f64_s);if(Y.bytesPerElement>1)G.push(q.i32_const,...z0(Y.bytesPerElement)),G.push(q.i32_mul);return G.push(q.i32_add),G.push(q.local_get,...f(U)),G.push(Y.storeOp,0,0),G.push(q.local_get,...f(U)),G}function BZ(Z,X){if(Z.callee.type==="MemberExpression"){let $=Z.callee;if($.object.type==="Identifier"&&$.object.name==="Math"&&$.property.type==="Identifier"){let K=$.property.name;return AZ(K,Z.arguments,X)}}if(Z.callee.type==="Identifier"){let $=Z.callee.name;if($.startsWith("f32x4_")||$.startsWith("v128_"))return IZ($,Z.arguments,X)}return X.errors.push(`Unsupported function call: ${Z.callee.type}`),[q.f64_const,...W1(0)]}function IZ(Z,X,$){$.needsMemory=!0;let K=[];switch(Z){case"v128_load":case"f32x4_load":{if(K.push(...h(X[0],$)),m(X[0],$)==="f64")K.push(q.i32_trunc_f64_s);K.push(...h(X[1],$));let H=m(X[1],$);if(H==="f64")K.push(q.i32_trunc_f64_s);else if(H==="f32")K.push(q.i32_trunc_f32_s);return K.push(q.i32_add),K.push(...s6(t.v128_load,2,0)),K}case"v128_store":case"f32x4_store":{if(K.push(...h(X[0],$)),m(X[0],$)==="f64")K.push(q.i32_trunc_f64_s);K.push(...h(X[1],$));let H=m(X[1],$);if(H==="f64")K.push(q.i32_trunc_f64_s);else if(H==="f32")K.push(q.i32_trunc_f32_s);return K.push(q.i32_add),K.push(...h(X[2],$)),K.push(...s6(t.v128_store,2,0)),K.push(q.i32_const,0),K}case"f32x4_splat":{K.push(...h(X[0],$));let Q=m(X[0],$);if(Q==="i32")K.push(q.f32_convert_i32_s);else if(Q==="f64")K.push(q.f32_demote_f64);return K.push(...E4(t.f32x4_splat)),K}case"f32x4_extract_lane":{K.push(...h(X[0],$));let Q=X[1].value;if(!Number.isInteger(Q)||Q<0||Q>3)return $.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${Q}`),[q.f32_const,...S4(0)];return K.push(G0,...f(t.f32x4_extract_lane),Q),K}case"f32x4_replace_lane":{K.push(...h(X[0],$));let Q=X[1].value;if(!Number.isInteger(Q)||Q<0||Q>3)return $.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${Q}`),[q.f32_const,...S4(0)];K.push(...h(X[2],$));let H=m(X[2],$);if(H==="i32")K.push(q.f32_convert_i32_s);else if(H==="f64")K.push(q.f32_demote_f64);return K.push(G0,...f(t.f32x4_replace_lane),Q),K}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{K.push(...h(X[0],$)),K.push(...h(X[1],$));let Q={f32x4_add:t.f32x4_add,f32x4_sub:t.f32x4_sub,f32x4_mul:t.f32x4_mul,f32x4_div:t.f32x4_div};return K.push(...E4(Q[Z])),K}case"f32x4_neg":case"f32x4_sqrt":{K.push(...h(X[0],$));let Q={f32x4_neg:t.f32x4_neg,f32x4_sqrt:t.f32x4_sqrt};return K.push(...E4(Q[Z])),K}default:return $.errors.push(`Unknown SIMD intrinsic: ${Z}`),[q.f64_const,...W1(0)]}}function AZ(Z,X,$){let K=[];for(let G of X){K.push(...h(G,$));let z=m(G,$);if(z==="i32")K.push(q.f64_convert_i32_s);else if(z==="f32")K.push(q.f64_promote_f32)}let H={abs:q.f64_abs,ceil:q.f64_ceil,floor:q.f64_floor,trunc:q.f64_trunc,sqrt:q.f64_sqrt,min:q.f64_min,max:q.f64_max}[Z];if(H!==void 0)return K.push(H),K;if(["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(Z))return $.needsMathImports.add(Z),$.errors.push(`Math.${Z} requires JS import (not yet implemented)`),[q.f64_const,...W1(0)];return $.errors.push(`Unknown Math method: ${Z}`),[q.f64_const,...W1(0)]}function r6(Z){let X=Z.split(":").map((H)=>H.trim()),$=X[0];if(X.length===1)return{name:$,type:"f64"};let K=X[1];if(g0[K])return{name:$,type:"i32",isArray:!0,arrayType:K};return{name:$,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[K]??"f64"}}function FZ(Z,X,$,K,Q){let H=[0,97,115,109,1,0,0,0],Y=Z.map((V)=>q1[V.type]),G=Q?[1,q1.f64]:[0],z=Y0(H0.type,[1,96,...f(Z.length),...Y,...G]),W=[],J=[];if(K)J=Y0(H0.import,[1,...T4("env"),...T4("memory"),2,0,1]);let L=Y0(H0.function,[1,0]),_=Y0(H0.export,[1,...T4("compute"),0,0]),U=[];if($.length>0){let V=$[0],A=1;for(let B=1;B<$.length;B++)if($[B]===V)A++;else U.push([...f(A),q1[V]]),V=$[B],A=1;U.push([...f(A),q1[V]])}let M=[...[...f(U.length),...U.flat()],...X,q.end],w=Y0(H0.code,[1,...f(M.length),...M]),I=[...H,...z];if(J.length>0)I.push(...J);return I.push(...L,..._,...w),I}function b0(Z){try{let X=Z.captures.map(r6),$;try{let W=`function __wasm__(${X.map((J)=>J.name).join(", ")}) { ${Z.body} }`;$=a6.parse(W,{ecmaVersion:2022})}catch(W){return{bytes:new Uint8Array,warnings:[],success:!1,error:`Parse error: ${W.message}`}}let Q=$.body[0].body.body,H=zZ(X),Y=[];for(let W of Q)Y.push(...d1(W,H));if(H.errors.length>0)return{bytes:new Uint8Array,warnings:H.warnings,success:!1,error:H.errors.join("; ")};let G=FZ(X,Y,H.localTypes,H.needsMemory,H.hasReturn),z=GZ(Y,X,H.localTypes);return{bytes:new Uint8Array(G),warnings:H.warnings,success:!0,needsMemory:H.needsMemory,wat:z}}catch(X){return{bytes:new Uint8Array,warnings:[],success:!1,error:X.message}}}async function t6(Z,X){let $={};if(X)$.env={memory:X};let K=await WebAssembly.compile(Z);return WebAssembly.instantiate(K,$)}async function MZ(Z){let X=b0(Z);if(!X.success)return{fn:()=>0,success:!1,error:X.error};try{let $;if(X.needsMemory)$=new WebAssembly.Memory({initial:256});let Q=(await t6(X.bytes,$)).exports.compute,H=Z.captures.map(r6);if(!H.some((z)=>z.isArray))return{fn:Q,memory:$,success:!0};return{fn:(...z)=>{if(!$)throw Error("Memory not initialized");let W=new Uint8Array($.buffer),J=0,L=[];for(let U=0;U<H.length;U++){let R=H[U],M=z[U];if(R.isArray&&M instanceof Object&&"buffer"in M){let w=M,I=new Uint8Array(w.buffer,w.byteOffset,w.byteLength);W.set(I,J),L.push(J),J+=I.length,J=J+15&-16}else L.push(M)}let _=Q(...L);J=0;for(let U=0;U<H.length;U++){let R=H[U],M=z[U];if(R.isArray&&M instanceof Object&&"buffer"in M){let w=M,I=new Uint8Array(w.buffer,w.byteOffset,w.byteLength);I.set(W.slice(J,J+I.length)),J+=I.length,J=J+15&-16}}return _},memory:$,success:!0}}catch($){return{fn:()=>0,success:!1,error:$.message}}}async function e6(Z){let X=await MZ(Z);if(!X.success)return console.warn(`WASM compilation failed for ${Z.id}:`,X.error),!1;return globalThis[Z.id]=X.fn,!0}async function wZ(Z){let X=0,$=0,K=[];for(let Q of Z)if(await e6(Q))X++;else $++,K.push(`Failed to compile ${Q.id}`);return{compiled:X,failed:$,errors:K}}function Z7(Z){let X=[],$=[];for(let G of Z){let z=b0(G);if(z.success){let W=btoa(String.fromCharCode(...z.bytes));$.push({id:G.id,base64:W,captures:G.captures,needsMemory:z.needsMemory??!1,wat:z.wat??""}),X.push({id:G.id,success:!0,byteLength:z.bytes.length})}else X.push({id:G.id,success:!1,error:z.error})}if($.length===0)return{code:"",results:X};let K=$.map((G)=>{let z=G.wat.split(`
|
|
292
|
+
`).map((W)=>` * ${W}`);return`/**
|
|
293
|
+
* WASM: ${G.id}
|
|
294
|
+
${z.join(`
|
|
290
295
|
`)}
|
|
291
296
|
*/`}).join(`
|
|
292
|
-
`),Q
|
|
297
|
+
`),Q=$.map((G)=>`{id:${JSON.stringify(G.id)},b64:${JSON.stringify(G.base64)},c:${JSON.stringify(G.captures)},m:${G.needsMemory}}`).join(","),H=$.some((G)=>G.needsMemory);return{code:`${K}
|
|
293
298
|
;(async()=>{
|
|
294
299
|
const __wasmBlocks=[${Q}];
|
|
295
300
|
const __b64ToBytes=s=>{const b=atob(s),a=new Uint8Array(b.length);for(let i=0;i<b.length;i++)a[i]=b.charCodeAt(i);return a};
|
|
296
301
|
const __parseType=c=>{const m=c.match(/^(\\w+)\\s*:\\s*(\\w+)$/);if(!m)return{n:c,t:'f64',a:false};const[,n,ts]=m;const at={Float32Array:'f32',Float64Array:'f64',Int32Array:'i32',Uint8Array:'i32'};if(at[ts])return{n,t:'i32',a:true,at:ts};return{n,t:'f64',a:false}};
|
|
302
|
+
${H?`const __wasmMem=new WebAssembly.Memory({initial:1024});
|
|
303
|
+
let __woff=0;
|
|
304
|
+
globalThis.wasmBuffer=function(Ctor,len){const bytes=len*Ctor.BYTES_PER_ELEMENT;const align=Math.max(Ctor.BYTES_PER_ELEMENT,16);__woff=(__woff+align-1)&~(align-1);const arr=new Ctor(__wasmMem.buffer,__woff,len);__woff+=bytes;return arr};`:""}
|
|
297
305
|
for(const{id,b64,c,m}of __wasmBlocks){
|
|
298
306
|
const bytes=__b64ToBytes(b64);
|
|
299
307
|
const params=c.map(__parseType);
|
|
300
308
|
const hasArrays=params.some(p=>p.a);
|
|
301
|
-
|
|
309
|
+
const mem=m?__wasmMem:null;
|
|
302
310
|
const imp=mem?{env:{memory:mem}}:{};
|
|
303
311
|
const inst=await WebAssembly.instantiate(await WebAssembly.compile(bytes),imp);
|
|
304
312
|
const compute=inst.exports.compute;
|
|
305
313
|
if(!hasArrays){globalThis[id]=compute;continue}
|
|
306
314
|
globalThis[id]=function(...args){
|
|
307
|
-
const mv=new Uint8Array(mem.buffer);let off=
|
|
315
|
+
const mv=new Uint8Array(mem.buffer);let off=__woff;const ptrs=[];
|
|
308
316
|
for(let i=0;i<params.length;i++){const p=params[i],a=args[i];
|
|
309
|
-
if(p.a&&a?.buffer){
|
|
310
|
-
|
|
311
|
-
|
|
317
|
+
if(p.a&&a?.buffer){
|
|
318
|
+
if(a.buffer===mem.buffer){ptrs.push(a.byteOffset)}
|
|
319
|
+
else{const ab=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);off=(off+15)&~15;mv.set(ab,off);ptrs.push(off);off+=ab.length}
|
|
320
|
+
} else ptrs.push(a)}
|
|
321
|
+
const r=compute(...ptrs);off=__woff;
|
|
312
322
|
for(let i=0;i<params.length;i++){const p=params[i],a=args[i];
|
|
313
|
-
if(p.a&&a?.buffer){
|
|
323
|
+
if(p.a&&a?.buffer){
|
|
324
|
+
if(a.buffer===mem.buffer) continue;
|
|
325
|
+
const ab=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);off=(off+15)&~15;ab.set(mv.slice(off,off+ab.length));off+=ab.length}}
|
|
314
326
|
return r};
|
|
315
327
|
}})();
|
|
316
|
-
`.trim(),results
|
|
317
|
-
`):
|
|
318
|
-
`):
|
|
319
|
-
${
|
|
320
|
-
${
|
|
321
|
-
`})
|
|
322
|
-
|
|
323
|
-
`}
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
${
|
|
328
|
-
|
|
329
|
-
`+F;b=v.results}return{code:F,types:A,metadata:A,warnings:Y.length>0?Y:void 0,testRunner:J.length>0?_:void 0,testCount:J.length>0?J.length:void 0,testResults:k,wasmCompiled:b}}function MZ(Z){let $=[];for(let X of Z.body)if(X.type==="FunctionDeclaration")$.push(X);else if(X.type==="ExportNamedDeclaration"&&X.declaration?.type==="FunctionDeclaration")$.push(X.declaration);else if(X.type==="ExportDefaultDeclaration"&&X.declaration?.type==="FunctionDeclaration")$.push(X.declaration);return $}function H0(Z){let $={kind:Z.kind};if(Z.nullable)$.nullable=!0;if(Z.items)$.items=H0(Z.items);if(Z.shape)$.shape=Object.fromEntries(Object.entries(Z.shape).map(([X,K])=>[X,H0(K)]));if(Z.members)$.members=Z.members.map(H0);return $}function wZ(Z,$,X={},K={}){let Q={};for(let[Y,G]of Object.entries($.params)){if(Q[Y]={type:H0(G.type),required:G.required},G.default!==void 0)Q[Y].default=G.default;if(G.description)Q[Y].description=G.description}let H={params:Q};if($.returns){if(H.returns={type:H0($.returns)},K.returnDefaults)H.returns.defaults=K.returnDefaults;if(X.returnSafety==="safe")H.safeReturn=!0;else if(X.returnSafety==="unsafe")H.unsafeReturn=!0}if($.description)H.description=$.description;if(X.unsafe)H.unsafe=!0;if(X.safe)H.safe=!0;if(K.source){let{file:Y,line:G}=K.source;H.source=`${Y}:${G}`}return`${Z}.__tjs = ${JSON.stringify(H,null,2)}`}function c6(Z,$){switch($.kind){case"string":return`typeof ${Z} !== 'string'`;case"number":return`typeof ${Z} !== 'number'`;case"integer":return`(typeof ${Z} !== 'number' || !Number.isInteger(${Z}))`;case"non-negative-integer":return`(typeof ${Z} !== 'number' || !Number.isInteger(${Z}) || ${Z} < 0)`;case"boolean":return`typeof ${Z} !== 'boolean'`;case"null":return`${Z} !== null`;case"undefined":return`${Z} !== undefined`;case"array":return`!Array.isArray(${Z})`;case"object":return`(typeof ${Z} !== 'object' || ${Z} === null || Array.isArray(${Z}))`;case"any":return null;default:return null}}import M from"typescript";import{validate as r6,s as a0}from"tosijs-schema";import{validate as C4,s as k0}from"tosijs-schema";function A1(Z){return Z!==null&&typeof Z==="object"&&"__runtimeType"in Z&&Z.__runtimeType===!0}function s6(Z){return Z!==null&&typeof Z==="object"&&"schema"in Z&&typeof Z.schema==="object"}function FZ(Z){return Z!==null&&typeof Z==="object"&&"type"in Z&&typeof Z.type==="string"}function l(Z,$,X,K){let Q,H,Y,G=X,z=K;if(typeof Z==="string")if(Q=Z,typeof $==="function"){if(H=$,G!==void 0)Y=k0.infer(G)}else if($===void 0&&G!==void 0)Y=k0.infer(G);else if(s6($))Y=$;else if(FZ($))Y=$;else if($!==void 0)G=$,z=G,Y=k0.infer(G);else throw Error("Type(description) requires a predicate, schema, or example");else{if(s6(Z))Y=Z;else Y=Z;Q=jZ(Y)}let W;if(Y){let L=Y?.schema??Y;if(L&&typeof L==="object"&&Array.isArray(L.examples))W=L.examples}if(G===void 0&&W&&W.length>0)G=W[0];return{description:Q,check:(L)=>{if(H)return H(L);if(Y)return C4(L,Y);return!1},schema:Y,predicate:H,example:G,examples:W,default:z,__runtimeType:!0}}function jZ(Z){let $=Z?.schema??Z;if($&&typeof $==="object"&&"type"in $){let X=$;switch(X.type){case"string":if(X.format)return`string (${X.format})`;if(X.pattern)return`string matching ${X.pattern}`;if(X.minLength!==void 0&&X.maxLength!==void 0)return`string (${X.minLength}-${X.maxLength} chars)`;return"string";case"number":case"integer":if(X.minimum!==void 0&&X.maximum!==void 0)return`${X.type} (${X.minimum}-${X.maximum})`;if(X.minimum!==void 0)return`${X.type} >= ${X.minimum}`;if(X.maximum!==void 0)return`${X.type} <= ${X.maximum}`;return X.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var g0=l("string",(Z)=>typeof Z==="string"),b0=l("number",(Z)=>typeof Z==="number"),v0=l("boolean",(Z)=>typeof Z==="boolean"),f0=l("integer",(Z)=>typeof Z==="number"&&Number.isInteger(Z)),y0=l("positive integer",(Z)=>typeof Z==="number"&&Number.isInteger(Z)&&Z>0),h0=l("non-empty string",(Z)=>typeof Z==="string"&&Z.length>0),x0=l("email address",(Z)=>typeof Z==="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(Z)),O4=(Z)=>{try{return new URL(Z),!0}catch{return!1}},u0=l("URL",(Z)=>typeof Z==="string"&&O4(Z)),d0=l("UUID",(Z)=>typeof Z==="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(Z)),N4=(Z)=>{let $=new Date(Z);return!isNaN($.getTime())&&Z.includes("T")},E4=(Z)=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(Z))return!1;let $=new Date(Z+"T00:00:00Z");return!isNaN($.getTime())},T4=l("ISO 8601 timestamp",(Z)=>typeof Z==="string"&&N4(Z)),S4=l("date (YYYY-MM-DD)",(Z)=>typeof Z==="string"&&E4(Z));function m0(Z){return l(`${Z.description} or null`,($)=>$===null||Z.check($))}function l0(Z){return l(`${Z.description} (optional)`,($)=>$===null||$===void 0||Z.check($))}function i0(Z,$,...X){if(typeof Z==="string"&&Array.isArray($)){let H=Z,Y=$,G=new Set(Y);return{description:H,check:(W)=>G.has(W),__runtimeType:!0,values:Y}}let K=[];if(A1(Z))K.push(Z);if(A1($))K.push($);K.push(...X);let Q=K.map((H)=>H.description).join(" | ");return l(Q,(H)=>K.some((Y)=>Y.check(H)))}function p0(Z){return l(`array of ${Z.description}`,($)=>Array.isArray($)&&$.every((X)=>Z.check(X)))}function PZ(Z){if(A1(Z))return(X)=>Z.check(X);if(Z&&typeof Z==="object"&&"schema"in Z)return(X)=>C4(X,Z);let $=k0.infer(Z);return(X)=>C4(X,$)}function h1(Z,$,X){let K=[],Q=[];for(let Y of Z)if(typeof Y==="string")K.push(Y),Q.push(void 0);else K.push(Y[0]),Q.push(Y[1]);let H=(...Y)=>{let G=K.map((W,J)=>{let L=J<Y.length?Y[J]:Q[J];if(L===void 0)return()=>!0;return PZ(L)}),z=X;return K.forEach((W,J)=>{let L=J<Y.length?Y[J]:Q[J],_="any";if(A1(L))_=L.description;else if(L!==void 0)_=typeof L==="string"?"string":JSON.stringify(L);z=z.replace(new RegExp(`\\b${W}\\b`,"g"),_)}),l(z,(W)=>$(W,...G))};return H.params=K,H.description=X,H}var n0=h1(["T","U"],(Z,$,X)=>Array.isArray(Z)&&Z.length===2&&$(Z[0])&&X(Z[1]),"Pair<T, U>"),c0=h1(["V"],(Z,$)=>typeof Z==="object"&&Z!==null&&!Array.isArray(Z)&&Object.values(Z).every($),"Record<string, V>");function o0(Z,$){let X=Object.values($),K=new Set(X),Q=Object.keys($),H={};for(let[G,z]of Object.entries($))H[z]=G;return{description:Z,check:(G)=>K.has(G),__runtimeType:!0,members:$,names:H,values:X,keys:Q}}var CZ=a6(),r=CZ.version,G0=Symbol.for("tjs.equals");function r0(Z){let[$=0,X=0,K=0]=Z.split(".").map(Number);return{major:$,minor:X,patch:K}}function k4(Z,$){let X=r0(Z),K=r0($);if(X.major!==K.major)return X.major<K.major?-1:1;if(X.minor!==K.minor)return X.minor<K.minor?-1:1;if(X.patch!==K.patch)return X.patch<K.patch?-1:1;return 0}function g4(Z,$){let X=r0(Z),K=r0($);return X.major===K.major}class T1 extends Error{path;expected;actual;callStack;constructor(Z,$,X,K,Q){super(Z);if(this.name="MonadicError",this.path=$,this.expected=X,this.actual=K,this.callStack=Q,Error.captureStackTrace)Error.captureStackTrace(this,T1)}}function OZ(Z,$,X){let K=X===null?"null":typeof X,Q=Z1.debug?Z7():void 0;return new T1(`Expected ${$} for '${Z}', got ${K}`,Z,$,K,Q)}function t6(Z){return Z instanceof T1}var b4={debug:!1,safety:"inputs",requireReturnTypes:!1,maxStackSize:100},Z1={...b4},I1=[],u1=0;function NZ(){u1++}function EZ(){if(u1>0)u1--}function TZ(){return u1>0}function SZ(Z){Z1={...Z1,...Z}}function kZ(){return{...Z1}}function e6(Z){if(Z1.debug&&Z){I1.push(Z);let $=Z1.maxStackSize??100;while(I1.length>$)I1.shift()}}function s0(){if(Z1.debug)I1.pop()}function Z7(){return[...I1]}function gZ(){Z1={...b4},I1.length=0,u1=0}function z0(Z,$){if(Z!==null&&typeof Z==="object"&&typeof Z[G0]==="function")return Z[G0]($);if($!==null&&typeof $==="object"&&typeof $[G0]==="function")return $[G0](Z);if(Z!==null&&typeof Z==="object"&&typeof Z.Equals==="function")return Z.Equals($);if($!==null&&typeof $==="object"&&typeof $.Equals==="function")return $.Equals(Z);if(Z===$)return!0;if((Z===null||Z===void 0)&&($===null||$===void 0))return!0;if(Z===null||Z===void 0||$===null||$===void 0)return!1;if(typeof Z!==typeof $)return!1;if(typeof Z!=="object")return!1;if(Array.isArray(Z)&&Array.isArray($)){if(Z.length!==$.length)return!1;return Z.every((Q,H)=>z0(Q,$[H]))}if(Array.isArray(Z)!==Array.isArray($))return!1;let X=Object.keys(Z),K=Object.keys($);if(X.length!==K.length)return!1;return X.every((Q)=>z0(Z[Q],$[Q]))}function X7(Z,$){return!z0(Z,$)}function D1(Z){return Z!==null&&typeof Z==="object"&&Z.$error===!0}function _1(Z,$){let X={$error:!0,message:Z,...$};if(Z1.debug&&I1.length>0){let K=$?.path?[...I1,$.path]:[...I1];X.stack=K}return X}function v4(Z,$){if(Z.length===0)return _1("Unknown error");if(Z.length===1)return Z[0];let X=Z.map((Q)=>{if(Q.path){let H=Q.path.split(".");return H[H.length-1]}return"unknown"}).join(", "),K=`Multiple parameter errors in ${$||"function"}: ${X}`;return _1(K,{path:$,errors:Z})}function x1(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";let $=typeof Z;if($!=="object")return $;let X=Z.constructor?.name;if(X&&X!=="Object")return X;return"object"}function $7(Z,$){if(Z===null||Z===void 0)return!1;if(typeof Z!=="object"&&typeof Z!=="function")return!1;let X=Z;while(X!==null){if(X.constructor?.name===$)return!0;X=Object.getPrototypeOf(X)}return!1}function E1(Z,$,X){if(D1(Z))return Z;if(typeof $==="object"&&$!==null&&"check"in $){if($.check(Z))return null;return _1(`Expected ${$.description} but got ${x1(Z)}`,{path:X,expected:$.description,actual:x1(Z)})}let K=x1(Z);if($==="any")return null;if($===K)return null;if($==="number"&&K==="number")return null;if($==="integer"&&K==="number"&&Number.isInteger(Z))return null;if($==="non-negative-integer"&&K==="number"&&Number.isInteger(Z)&&Z>=0)return null;if($==="object"&&K==="object")return null;return _1(`Expected ${$} but got ${K}`,{path:X,expected:$,actual:K})}function f4(Z,$,X){for(let[K,Q]of Object.entries($.params)){let H=Z[K];if(D1(H))return H;if(Q.required&&H===void 0){let G=typeof Q.type==="string"?Q.type:Q.type.description;return _1(`Missing required parameter '${K}'`,{path:X?`${X}.${K}`:K,expected:G,actual:"undefined",loc:Q.loc})}if(H===void 0)continue;let Y=E1(H,Q.type,X?`${X}.${K}`:K);if(Y){if(Q.loc)Y.loc=Q.loc;return Y}}return null}function y4(Z,$){if(Z.__tjs=$,!(!$.polymorphic&&($.safe||$.safeReturn||Z1.safety!=="none"&&!$.unsafe||$.returns&&Z1.safety==="all"&&!$.unsafeReturn)))return Z;let K=!!$.returns,Q=!!$.unsafe,H=!!$.safe,Y=!!$.unsafeReturn,G=!!$.safeReturn,z=$.returns?.defaults,W=Object.entries($.params),J=W.length,L=Z.name||$.name||"anonymous",_=function(...U){if(u1>0)return Z.apply(this,U);let I=H||!Q&&Z1.safety!=="none",w=K&&(G||!Y&&Z1.safety==="all");if(!I&&!w)return Z.apply(this,U);if(U.length>0&&D1(U[0]))return U[0];if(I){let j=U.length===1&&typeof U[0]==="object"&&U[0]!==null&&!Array.isArray(U[0]),B=[];if(!j)for(let P=0;P<J;P++){let[A,R]=W[P],F=U[P];if(D1(F)){B.push(F);continue}if(R.required&&F===void 0){B.push(_1(`Missing required parameter '${A}'`,{path:`${L}.${A}`,expected:typeof R.type==="string"?R.type:R.type?.description||"value",actual:"undefined",loc:R.loc}));continue}if(F!==void 0){let C=E1(F,R.type,`${L}.${A}`);if(C){if(R.loc)C.loc=R.loc;B.push(C)}}}else{let P=U[0];for(let A=0;A<J;A++){let[R,F]=W[A],C=P[R];if(D1(C)){B.push(C);continue}if(F.required&&C===void 0){B.push(_1(`Missing required parameter '${R}'`,{path:`${L}.${R}`,expected:typeof F.type==="string"?F.type:F.type?.description||"value",actual:"undefined",loc:F.loc}));continue}if(C!==void 0){let V=E1(C,F.type,`${L}.${R}`);if(V){if(F.loc)V.loc=F.loc;B.push(V)}}}}if(B.length>0)return v4(B,L)}e6(L);try{let j=Z.apply(this,U);if(w&&$.returns&&!D1(j)){let B=z&&typeof j==="object"&&j!==null?Object.assign({},z,j):j,P=E1(B,$.returns.type,`${L}()`);if(P)return s0(),P}return s0(),j}catch(j){return s0(),_1(j.message||String(j),{path:L,cause:j})}};return Object.defineProperty(_,"name",{value:Z.name}),_.__tjs=$,_}function K7(Z){let $=new Proxy(Z,{construct(X,K,Q){return Reflect.construct(X,K,Q)},apply(X,K,Q){return Reflect.construct(X,Q)}});Object.defineProperty($,"name",{value:Z.name});for(let X of Object.getOwnPropertyNames(Z))if(X!=="length"&&X!=="name"&&X!=="prototype")Object.defineProperty($,X,Object.getOwnPropertyDescriptor(Z,X));return $}function bZ(){let Z={...Z1},$=[],X=0;function K(B){Z={...Z,...B}}function Q(){return{...Z}}function H(B){if(Z.debug&&B){$.push(B);let P=Z.maxStackSize??100;while($.length>P)$.shift()}}function Y(){if(Z.debug)$.pop()}function G(){return[...$]}function z(){Z={...b4},$.length=0,X=0}function W(){X++}function J(){if(X>0)X--}function L(){return X>0}let _=new Map;function U(B,P,A){if(!_.has(B))_.set(B,new Map);_.get(B).set(P,A)}function I(B,P){let A=typeof B,R;if(B===null||B===void 0)return;if(A==="string")R="String";else if(A==="number")R="Number";else if(A==="boolean")R="Boolean";else if(Array.isArray(B))R="Array";else if(A==="object")R=B.constructor?.name||"Object";else return;let F=R;while(F){let V=_.get(F);if(V?.has(P))return V.get(P);if(A==="object"&&!Array.isArray(B)){if(F=Object.getPrototypeOf(F===R?B:Object.getPrototypeOf(B))?.constructor?.name,F==="Object"||F===R)break}else break}let C=_.get("Object");if(C?.has(P))return C.get(P);return}function w(B,P,A){let R=A===null?"null":typeof A,F=Z.debug?G():void 0;return new T1(`Expected ${P} for '${B}', got ${R}`,B,P,R,F)}function j(B,P){let A={$error:!0,message:B,...P};if(Z.debug&&$.length>0){let R=P?.path?[...$,P.path]:[...$];A.stack=R}return A}return{version:r,MonadicError:T1,typeError:w,isMonadicError:t6,isError:D1,error:j,composeErrors:v4,typeOf:x1,isNativeType:$7,checkType:E1,validateArgs:f4,wrap:y4,wrapClass:K7,compareVersions:k4,versionsCompatible:g4,configure:K,getConfig:Q,pushStack:H,popStack:Y,getStack:G,resetRuntime:z,enterUnsafe:W,exitUnsafe:J,isUnsafeMode:L,validate:r6,infer:a0.infer.bind(a0),Type:l,isRuntimeType:A1,Union:i0,Generic:h1,Enum:o0,Nullable:m0,Optional:l0,TArray:p0,TString:g0,TNumber:b0,TBoolean:v0,TInteger:f0,TPositiveInt:y0,TNonEmptyString:h0,TEmail:x0,TUrl:u0,TUuid:d0,TPair:n0,TRecord:c0,Is:z0,IsNot:X7,tjsEquals:G0,registerExtension:U,resolveExtension:I}}var N1={version:r,MonadicError:T1,typeError:OZ,isMonadicError:t6,isError:D1,error:_1,composeErrors:v4,typeOf:x1,isNativeType:$7,checkType:E1,validateArgs:f4,wrap:y4,wrapClass:K7,compareVersions:k4,versionsCompatible:g4,configure:SZ,getConfig:kZ,pushStack:e6,popStack:s0,getStack:Z7,resetRuntime:gZ,enterUnsafe:NZ,exitUnsafe:EZ,isUnsafeMode:TZ,createRuntime:bZ,validate:r6,infer:a0.infer.bind(a0),Type:l,isRuntimeType:A1,Union:i0,Generic:h1,Enum:o0,Nullable:m0,Optional:l0,TArray:p0,TString:g0,TNumber:b0,TBoolean:v0,TInteger:f0,TPositiveInt:y0,TNonEmptyString:h0,TEmail:x0,TUrl:u0,TUuid:d0,Timestamp:T4,LegalDate:S4,TPair:n0,TRecord:c0,Is:z0,IsNot:X7};function vZ(){let Z=globalThis;if(Z.__tjs){let $=Z.__tjs.version;if(typeof $!=="string")return Z.__tjs=N1,N1;let X=k4(r,$);if(X===0)return Z.__tjs;if(g4(r,$))if(X>0)console.info(`TJS runtime: upgrading ${$} → ${r}`),Z.__tjs=N1;else console.info(`TJS runtime: keeping ${$} (newer than ${r})`);else if(console.warn(`TJS runtime version conflict: ${$} vs ${r} (major version mismatch)`),X>0)console.warn(`Upgrading to ${r} - check for breaking changes`),Z.__tjs=N1;return Z.__tjs}return Z.__tjs=N1,N1}function fZ(Z){return`
|
|
328
|
+
`.trim(),results:X}}function PZ(Z,X,$){if(!Z||!X)return!1;let K=new RegExp(`function\\s+${X}\\s*\\([^)]*?\\b${$}\\s*([=:])`,"s"),Q=Z.match(K);if(!Q)return!1;return Q[1]===":"}function VZ(Z,X,$,K,Q){let H=[],Y=Z0(X,Z),G={},z=!1,W,J;if(Z.params.length===1&&(Z.params[0].type==="ObjectPattern"||Z.params[0].type==="AssignmentPattern"&&Z.params[0].left.type==="ObjectPattern")){z=!0;let U=Z.params[0],R=U.type==="ObjectPattern"?U:U.left,M=P1(R,$);if(M.type.kind==="object"&&M.type.destructuredParams){W={},J=new Set;for(let[w,I]of Object.entries(M.type.destructuredParams))if(G[w]={...I,description:Y.params[w]},W[w]=I.type,I.required)J.add(w)}}else for(let U of Z.params)if(U.type==="Identifier"){let R=P1(U,$);G[U.name]={...R,required:$.has(U.name),description:Y.params[U.name]}}else if(U.type==="AssignmentPattern"&&U.left.type==="Identifier"){let R=P1(U,$),M=PZ(Q||"",Z.id?.name||"",U.left.name);G[U.left.name]={...R,required:M,default:M?null:R.example??R.default,description:Y.params[U.left.name]}}else if(U.type==="ObjectPattern"){let R=P1(U,$);if(R.type.kind==="object"&&R.type.destructuredParams)for(let[M,w]of Object.entries(R.type.destructuredParams))G[M]={...w,description:Y.params[M]}}let L;if(K)try{let U=K.includes("=")?$7(K):K,R=jZ(U,0,{ecmaVersion:2022});L=G1(R)}catch{L={kind:"any"},H.push(`Could not parse return type: ${K}`)}return{types:{name:Z.id?.name||"anonymous",params:G,returns:L,description:Y.description,isDestructuredParam:z,destructuredShape:W,destructuredRequired:J},warnings:H}}function CZ(Z,X,$){let K=[],Q=$?`${$}:`:"",H=$?`${$}:${Z}`:Z;if(X.isDestructuredParam&&X.destructuredShape){let G=X.destructuredShape,z=X.destructuredRequired||new Set,W=Object.keys(G);if(W.length===0)return null;for(let J of W)K.push(`if (${J} instanceof Error) return ${J};`);for(let[J,L]of Object.entries(G)){let _=z.has(J),U=`${Q}${Z}.${J}`,R=k4(J,L);if(R){let M=L.kind;if(_)K.push(`if (${R}) return __tjs.typeError('${U}', '${M}', ${J});`);else K.push(`if (${J} !== undefined && ${R}) return __tjs.typeError('${U}', '${M}', ${J});`)}}if(K.length===0)return null;return K.unshift(`__tjs.pushStack('${H}');`),K.unshift("try {"),{preamble:K.join(`
|
|
329
|
+
`),suffix:"} finally { __tjs.popStack(); }"}}let Y=Object.entries(X.params);if(Y.length===0)return null;for(let[G]of Y)K.push(`if (${G} instanceof Error) return ${G};`);for(let[G,z]of Y){let W=`${Q}${Z}.${G}`,J=k4(G,z.type);if(J){let L=z.type.kind==="union"?z.type.members.map((_)=>_.kind).join(" | "):z.type.kind;if(z.required)K.push(`if (${J}) return __tjs.typeError('${W}', '${L}', ${G});`);else K.push(`if (${G} !== undefined && ${J}) return __tjs.typeError('${W}', '${L}', ${G});`)}}if(K.length===0)return null;return K.unshift(`__tjs.pushStack('${H}');`),K.unshift("try {"),{preamble:K.join(`
|
|
330
|
+
`),suffix:"} finally { __tjs.popStack(); }"}}function $7(Z){let X="",$=0;for(let K=0;K<Z.length;K++){let Q=Z[K];if(Q==="{"||Q==="["||Q==="(")$++,X+=Q;else if(Q==="}"||Q==="]"||Q===")")$--,X+=Q;else if(Q==="'"||Q==='"'||Q==="`"){X+=Q,K++;while(K<Z.length&&Z[K]!==Q){if(Z[K]==="\\")X+=Z[K++];X+=Z[K++]}if(K<Z.length)X+=Z[K]}else if($===1&&Q==="="&&Z[K-1]!=="!"&&Z[K+1]!=="=")X+=":";else X+=Q}return X}function OZ(Z,X){let K=new RegExp(`function\\s+${X}\\s*\\([^)]*\\)\\s*(-[>?!])\\s*`,"g").exec(Z);if(!K)return null;let Q=Z.slice(K.index+K[0].length);return N4(Q)}function NZ(Z,X){let K=new RegExp(`function\\s+${X}\\s*\\([^)]*\\)\\s*-([>?!])`,"g").exec(Z);if(!K)return;let Q=K[1];if(Q==="?")return"safe";if(Q==="!")return"unsafe";return}function EZ(Z){let X=Z.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return X?X[1].trim():void 0}function TZ(Z,X){let $=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${X}\\s*\\(`,"m"),K=Z.match($);return K?parseInt(K[1],10):void 0}function J0(Z,X={}){let{filename:$="<source>",runTests:K=!0,debug:Q=!1,resolvedImports:H={}}=X,Y=[],z=EZ(Z)||$,{code:W,tests:J,mocks:L,testRunner:_}=V4(Z),{ast:U,originalSource:R,requiredParams:M,unsafeFunctions:w}=F1(W,{filename:$,colonShorthand:!0}),I=SZ(U),V=O0(W),A={},B=[],P=[];for(let v of I){let y=v.id?.name||"anonymous",Z1=OZ(W,y),o;if(Z1&&Z1.includes("="))try{let Y1=Z1.matchAll(/(\w+)\s*=\s*/g),L1=$7(Z1),T1=Function(`return ${L1}`)(),U1={};for(let q8 of Y1){let A4=q8[1];if(A4 in T1)U1[A4]=T1[A4]}if(Object.keys(U1).length>0)o=U1}catch{}let{types:D1,warnings:W8}=VZ(v,R,M,Z1,W);Y.push(...W8),A[y]=D1;for(let Y1 of v.params)if(Y1.type==="AssignmentPattern"){let L1=Y1.left?.name||Y1.left?.value,T1=L1?D1.params[L1]:null;if(T1?.required&&T1.default===null)P.push({start:Y1.left.end,end:Y1.right.end});else{let U1=Y1.right;if(U1.type==="BinaryExpression"&&U1.operator==="|")P.push({start:U1.left.end,end:U1.end})}}let q6=V.moduleSafety==="none"||w.has(y),J8=V.safeFunctions.has(y),_8=NZ(W,y),L8=TZ(Z,y),u1={file:z,line:L8??v.loc?.start.line??0,column:v.loc?.start.column??0},U8={unsafe:q6,safe:J8,returnSafety:_8},D6=V.polymorphicNames.has(y),I4;if(D6){let Y1=[];for(let T1 of I){let U1=T1.id?.name||"";if(U1.startsWith(y+"$"))Y1.push(U1)}let L1={polymorphic:!0,variants:Y1};if(u1)L1.source=`${u1.file}:${u1.line}`;I4=`${y}.__tjs = ${JSON.stringify(L1,null,2)}`}else I4=kZ(y,D1,U8,{debug:Q,source:u1,returnDefaults:o});if(B.push({position:v.end,text:`
|
|
331
|
+
${I4}`}),!q6&&!D6){let Y1=`${u1.file}:${u1.line}`,L1=CZ(y,D1,Y1);if(L1&&v.body&&v.body.start!==void 0)B.push({position:v.body.start+1,text:`
|
|
332
|
+
${L1.preamble}
|
|
333
|
+
`}),B.push({position:v.body.end-1,text:`
|
|
334
|
+
${L1.suffix}
|
|
335
|
+
`})}}P.sort((v,y)=>y.start-v.start);let j=V.source;for(let{start:v,end:y}of P)j=j.slice(0,v)+j.slice(y);for(let v of B){let y=0;for(let Z1 of P)if(Z1.start<v.position)y+=Z1.end-Z1.start;v.position-=y}B.sort((v,y)=>y.position-v.position);for(let{position:v,text:y}of B)j=j.slice(0,v)+y+j.slice(v);let C=j.includes("__tjs.typeError("),E=j.includes("__tjs.pushStack("),T=j.includes("Is("),g=j.includes("IsNot("),b=V.tjsModes.tjsSafeEval;if(C||E||T||g||b){let v=`const __tjs = globalThis.__tjs?.createRuntime?.() ?? globalThis.__tjs;
|
|
336
|
+
`;if(T||g){let y=[T&&"Is",g&&"IsNot"].filter(Boolean).join(", ");v+=`const { ${y} } = __tjs ?? {};
|
|
337
|
+
`}j=v+j}if(b)j=`import { Eval, SafeFunction } from 'tjs-lang';
|
|
338
|
+
`+j;let c;if(K){let v=c6(Z);c=o6(J,L,v,j,H,V.extensions);let y=c.filter((Z1)=>!Z1.passed);if(y.length>0&&K===!0){let Z1=y.map((o)=>{if(o.isSignatureTest)return` Function signature example is inconsistent:
|
|
339
|
+
${o.error}`;let D1=o.line?` (line ${o.line})`:"";return` Test '${o.description}'${D1} failed:
|
|
340
|
+
${o.error}`});throw Error(`Transpile-time test failures:
|
|
341
|
+
${Z1.join(`
|
|
342
|
+
`)}`)}}if(K==="only")return{code:"",types:A,metadata:A,testResults:c,testCount:c?.length};let a;if(V.wasmBlocks.length>0){a=[];let v=Z7(V.wasmBlocks);if(v.code)j=v.code+`
|
|
343
|
+
`+j;a=v.results}return{code:j,types:A,metadata:A,warnings:Y.length>0?Y:void 0,testRunner:J.length>0?_:void 0,testCount:J.length>0?J.length:void 0,testResults:c,wasmCompiled:a}}function SZ(Z){let X=[];for(let $ of Z.body)if($.type==="FunctionDeclaration")X.push($);else if($.type==="ExportNamedDeclaration"&&$.declaration?.type==="FunctionDeclaration")X.push($.declaration);else if($.type==="ExportDefaultDeclaration"&&$.declaration?.type==="FunctionDeclaration")X.push($.declaration);return X}function W0(Z){let X={kind:Z.kind};if(Z.nullable)X.nullable=!0;if(Z.items)X.items=W0(Z.items);if(Z.shape)X.shape=Object.fromEntries(Object.entries(Z.shape).map(([$,K])=>[$,W0(K)]));if(Z.members)X.members=Z.members.map(W0);return X}function kZ(Z,X,$={},K={}){let Q={};for(let[Y,G]of Object.entries(X.params)){if(Q[Y]={type:W0(G.type),required:G.required},G.default!==void 0)Q[Y].default=G.default;if(G.description)Q[Y].description=G.description}let H={params:Q};if(X.returns){if(H.returns={type:W0(X.returns)},K.returnDefaults)H.returns.defaults=K.returnDefaults;if($.returnSafety==="safe")H.safeReturn=!0;else if($.returnSafety==="unsafe")H.unsafeReturn=!0}if(X.description)H.description=X.description;if($.unsafe)H.unsafe=!0;if($.safe)H.safe=!0;if(K.source){let{file:Y,line:G}=K.source;H.source=`${Y}:${G}`}return`${Z}.__tjs = ${JSON.stringify(H,null,2)}`}function k4(Z,X){switch(X.kind){case"string":return`typeof ${Z} !== 'string'`;case"number":return`typeof ${Z} !== 'number'`;case"integer":return`(typeof ${Z} !== 'number' || !Number.isInteger(${Z}))`;case"non-negative-integer":return`(typeof ${Z} !== 'number' || !Number.isInteger(${Z}) || ${Z} < 0)`;case"boolean":return`typeof ${Z} !== 'boolean'`;case"null":return`${Z} !== null`;case"undefined":return`${Z} !== undefined`;case"array":return`!Array.isArray(${Z})`;case"object":return`(typeof ${Z} !== 'object' || ${Z} === null || Array.isArray(${Z}))`;case"union":{let $=X.members.map((K)=>k4(Z,K)).filter((K)=>K!==null);if($.length===0)return null;return`(${$.join(" && ")})`}case"any":return null;default:return null}}import F from"typescript";import{validate as Q7,s as e0}from"tosijs-schema";import{validate as g4,s as v0}from"tosijs-schema";function C1(Z){return Z!==null&&typeof Z==="object"&&"__runtimeType"in Z&&Z.__runtimeType===!0}function X7(Z){return Z!==null&&typeof Z==="object"&&"schema"in Z&&typeof Z.schema==="object"}function gZ(Z){return Z!==null&&typeof Z==="object"&&"type"in Z&&typeof Z.type==="string"}function p(Z,X,$,K){let Q,H,Y,G=$,z=K;if(typeof Z==="string")if(Q=Z,typeof X==="function"){if(H=X,G!==void 0)Y=v0.infer(G)}else if(X===void 0&&G!==void 0)Y=v0.infer(G);else if(X7(X))Y=X;else if(gZ(X))Y=X;else if(X!==void 0)G=X,z=G,Y=v0.infer(G);else throw Error("Type(description) requires a predicate, schema, or example");else{if(X7(Z))Y=Z;else Y=Z;Q=bZ(Y)}let W;if(Y){let L=Y?.schema??Y;if(L&&typeof L==="object"&&Array.isArray(L.examples))W=L.examples}if(G===void 0&&W&&W.length>0)G=W[0];return{description:Q,check:(L)=>{if(H)return H(L);if(Y)return g4(L,Y);return!1},schema:Y,predicate:H,example:G,examples:W,default:z,__runtimeType:!0}}function bZ(Z){let X=Z?.schema??Z;if(X&&typeof X==="object"&&"type"in X){let $=X;switch($.type){case"string":if($.format)return`string (${$.format})`;if($.pattern)return`string matching ${$.pattern}`;if($.minLength!==void 0&&$.maxLength!==void 0)return`string (${$.minLength}-${$.maxLength} chars)`;return"string";case"number":case"integer":if($.minimum!==void 0&&$.maximum!==void 0)return`${$.type} (${$.minimum}-${$.maximum})`;if($.minimum!==void 0)return`${$.type} >= ${$.minimum}`;if($.maximum!==void 0)return`${$.type} <= ${$.maximum}`;return $.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var f0=p("string",(Z)=>typeof Z==="string"),y0=p("number",(Z)=>typeof Z==="number"),h0=p("boolean",(Z)=>typeof Z==="boolean"),x0=p("integer",(Z)=>typeof Z==="number"&&Number.isInteger(Z)),u0=p("positive integer",(Z)=>typeof Z==="number"&&Number.isInteger(Z)&&Z>0),d0=p("non-empty string",(Z)=>typeof Z==="string"&&Z.length>0),m0=p("email address",(Z)=>typeof Z==="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(Z)),b4=(Z)=>{try{return new URL(Z),!0}catch{return!1}},l0=p("URL",(Z)=>typeof Z==="string"&&b4(Z)),i0=p("UUID",(Z)=>typeof Z==="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(Z)),v4=(Z)=>{let X=new Date(Z);return!isNaN(X.getTime())&&Z.includes("T")},f4=(Z)=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(Z))return!1;let X=new Date(Z+"T00:00:00Z");return!isNaN(X.getTime())},y4=p("ISO 8601 timestamp",(Z)=>typeof Z==="string"&&v4(Z)),h4=p("date (YYYY-MM-DD)",(Z)=>typeof Z==="string"&&f4(Z));function p0(Z){return p(`${Z.description} or null`,(X)=>X===null||Z.check(X))}function n0(Z){return p(`${Z.description} (optional)`,(X)=>X===null||X===void 0||Z.check(X))}function c0(Z,X,...$){if(typeof Z==="string"&&Array.isArray(X)){let H=Z,Y=X,G=new Set(Y);return{description:H,check:(W)=>G.has(W),__runtimeType:!0,values:Y}}let K=[];if(C1(Z))K.push(Z);if(C1(X))K.push(X);K.push(...$);let Q=K.map((H)=>H.description).join(" | ");return p(Q,(H)=>K.some((Y)=>Y.check(H)))}function o0(Z){return p(`array of ${Z.description}`,(X)=>Array.isArray(X)&&X.every(($)=>Z.check($)))}function vZ(Z){if(C1(Z))return($)=>Z.check($);if(Z&&typeof Z==="object"&&"schema"in Z)return($)=>g4($,Z);let X=v0.infer(Z);return($)=>g4($,X)}function m1(Z,X,$){let K=[],Q=[];for(let Y of Z)if(typeof Y==="string")K.push(Y),Q.push(void 0);else K.push(Y[0]),Q.push(Y[1]);let H=(...Y)=>{let G=K.map((W,J)=>{let L=J<Y.length?Y[J]:Q[J];if(L===void 0)return()=>!0;return vZ(L)}),z=$;return K.forEach((W,J)=>{let L=J<Y.length?Y[J]:Q[J],_="any";if(C1(L))_=L.description;else if(L!==void 0)_=typeof L==="string"?"string":JSON.stringify(L);z=z.replace(new RegExp(`\\b${W}\\b`,"g"),_)}),p(z,(W)=>X(W,...G))};return H.params=K,H.description=$,H}var s0=m1(["T","U"],(Z,X,$)=>Array.isArray(Z)&&Z.length===2&&X(Z[0])&&$(Z[1]),"Pair<T, U>"),a0=m1(["V"],(Z,X)=>typeof Z==="object"&&Z!==null&&!Array.isArray(Z)&&Object.values(Z).every(X),"Record<string, V>");function r0(Z,X){let $=Object.values(X),K=new Set($),Q=Object.keys(X),H={};for(let[G,z]of Object.entries(X))H[z]=G;return{description:Z,check:(G)=>K.has(G),__runtimeType:!0,members:X,names:H,values:$,keys:Q}}var yZ=K7(),$1=yZ.version,_0=Symbol.for("tjs.equals");function Z4(Z){let[X=0,$=0,K=0]=Z.split(".").map(Number);return{major:X,minor:$,patch:K}}function x4(Z,X){let $=Z4(Z),K=Z4(X);if($.major!==K.major)return $.major<K.major?-1:1;if($.minor!==K.minor)return $.minor<K.minor?-1:1;if($.patch!==K.patch)return $.patch<K.patch?-1:1;return 0}function u4(Z,X){let $=Z4(Z),K=Z4(X);return $.major===K.major}class f1 extends Error{path;expected;actual;callStack;constructor(Z,X,$,K,Q){super(Z);if(this.name="MonadicError",this.path=X,this.expected=$,this.actual=K,this.callStack=Q,Error.captureStackTrace)Error.captureStackTrace(this,f1)}}function hZ(Z,X,$){let K=$===null?"null":typeof $,Q=Q1.debug?G7():void 0;return new f1(`Expected ${X} for '${Z}', got ${K}`,Z,X,K,Q)}function H7(Z){return Z instanceof f1}var d4={debug:!1,safety:"inputs",requireReturnTypes:!1,maxStackSize:100},Q1={...d4},w1=[],i1=0;function xZ(){i1++}function uZ(){if(i1>0)i1--}function dZ(){return i1>0}function mZ(Z){Q1={...Q1,...Z}}function lZ(){return{...Q1}}function Y7(Z){if(Q1.debug&&Z){w1.push(Z);let X=Q1.maxStackSize??100;while(w1.length>X)w1.shift()}}function t0(){if(Q1.debug)w1.pop()}function G7(){return[...w1]}function iZ(){Q1={...d4},w1.length=0,i1=0}function L0(Z,X){if(Z!==null&&typeof Z==="object"&&typeof Z[_0]==="function")return Z[_0](X);if(X!==null&&typeof X==="object"&&typeof X[_0]==="function")return X[_0](Z);if(Z!==null&&typeof Z==="object"&&typeof Z.Equals==="function")return Z.Equals(X);if(X!==null&&typeof X==="object"&&typeof X.Equals==="function")return X.Equals(Z);if(Z===X)return!0;if((Z===null||Z===void 0)&&(X===null||X===void 0))return!0;if(Z===null||Z===void 0||X===null||X===void 0)return!1;if(typeof Z!==typeof X)return!1;if(typeof Z!=="object")return!1;if(Array.isArray(Z)&&Array.isArray(X)){if(Z.length!==X.length)return!1;return Z.every((Q,H)=>L0(Q,X[H]))}if(Array.isArray(Z)!==Array.isArray(X))return!1;let $=Object.keys(Z),K=Object.keys(X);if($.length!==K.length)return!1;return $.every((Q)=>L0(Z[Q],X[Q]))}function z7(Z,X){return!L0(Z,X)}function M1(Z){return Z!==null&&typeof Z==="object"&&Z.$error===!0}function I1(Z,X){let $={$error:!0,message:Z,...X};if(Q1.debug&&w1.length>0){let K=X?.path?[...w1,X.path]:[...w1];$.stack=K}return $}function m4(Z,X){if(Z.length===0)return I1("Unknown error");if(Z.length===1)return Z[0];let $=Z.map((Q)=>{if(Q.path){let H=Q.path.split(".");return H[H.length-1]}return"unknown"}).join(", "),K=`Multiple parameter errors in ${X||"function"}: ${$}`;return I1(K,{path:X,errors:Z})}function l1(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";let X=typeof Z;if(X!=="object")return X;let $=Z.constructor?.name;if($&&$!=="Object")return $;return"object"}function W7(Z,X){if(Z===null||Z===void 0)return!1;if(typeof Z!=="object"&&typeof Z!=="function")return!1;let $=Z;while($!==null){if($.constructor?.name===X)return!0;$=Object.getPrototypeOf($)}return!1}function v1(Z,X,$){if(M1(Z))return Z;if(typeof X==="object"&&X!==null&&"check"in X){if(X.check(Z))return null;return I1(`Expected ${X.description} but got ${l1(Z)}`,{path:$,expected:X.description,actual:l1(Z)})}let K=l1(Z);if(X==="any")return null;if(X===K)return null;if(X==="number"&&K==="number")return null;if(X==="integer"&&K==="number"&&Number.isInteger(Z))return null;if(X==="non-negative-integer"&&K==="number"&&Number.isInteger(Z)&&Z>=0)return null;if(X==="object"&&K==="object")return null;return I1(`Expected ${X} but got ${K}`,{path:$,expected:X,actual:K})}function l4(Z,X,$){for(let[K,Q]of Object.entries(X.params)){let H=Z[K];if(M1(H))return H;if(Q.required&&H===void 0){let G=typeof Q.type==="string"?Q.type:Q.type.description;return I1(`Missing required parameter '${K}'`,{path:$?`${$}.${K}`:K,expected:G,actual:"undefined",loc:Q.loc})}if(H===void 0)continue;let Y=v1(H,Q.type,$?`${$}.${K}`:K);if(Y){if(Q.loc)Y.loc=Q.loc;return Y}}return null}function i4(Z,X){if(Z.__tjs=X,!(!X.polymorphic&&(X.safe||X.safeReturn||Q1.safety!=="none"&&!X.unsafe||X.returns&&Q1.safety==="all"&&!X.unsafeReturn)))return Z;let K=!!X.returns,Q=!!X.unsafe,H=!!X.safe,Y=!!X.unsafeReturn,G=!!X.safeReturn,z=X.returns?.defaults,W=Object.entries(X.params),J=W.length,L=Z.name||X.name||"anonymous",_=function(...U){if(i1>0)return Z.apply(this,U);let R=H||!Q&&Q1.safety!=="none",M=K&&(G||!Y&&Q1.safety==="all");if(!R&&!M)return Z.apply(this,U);if(U.length>0&&M1(U[0]))return U[0];if(R){let w=U.length===1&&typeof U[0]==="object"&&U[0]!==null&&!Array.isArray(U[0]),I=[];if(!w)for(let V=0;V<J;V++){let[A,B]=W[V],P=U[V];if(M1(P)){I.push(P);continue}if(B.required&&P===void 0){I.push(I1(`Missing required parameter '${A}'`,{path:`${L}.${A}`,expected:typeof B.type==="string"?B.type:B.type?.description||"value",actual:"undefined",loc:B.loc}));continue}if(P!==void 0){let j=v1(P,B.type,`${L}.${A}`);if(j){if(B.loc)j.loc=B.loc;I.push(j)}}}else{let V=U[0];for(let A=0;A<J;A++){let[B,P]=W[A],j=V[B];if(M1(j)){I.push(j);continue}if(P.required&&j===void 0){I.push(I1(`Missing required parameter '${B}'`,{path:`${L}.${B}`,expected:typeof P.type==="string"?P.type:P.type?.description||"value",actual:"undefined",loc:P.loc}));continue}if(j!==void 0){let C=v1(j,P.type,`${L}.${B}`);if(C){if(P.loc)C.loc=P.loc;I.push(C)}}}}if(I.length>0)return m4(I,L)}Y7(L);try{let w=Z.apply(this,U);if(M&&X.returns&&!M1(w)){let I=z&&typeof w==="object"&&w!==null?Object.assign({},z,w):w,V=v1(I,X.returns.type,`${L}()`);if(V)return t0(),V}return t0(),w}catch(w){return t0(),I1(w.message||String(w),{path:L,cause:w})}};return Object.defineProperty(_,"name",{value:Z.name}),_.__tjs=X,_}function J7(Z){let X=new Proxy(Z,{construct($,K,Q){return Reflect.construct($,K,Q)},apply($,K,Q){return Reflect.construct($,Q)}});Object.defineProperty(X,"name",{value:Z.name});for(let $ of Object.getOwnPropertyNames(Z))if($!=="length"&&$!=="name"&&$!=="prototype")Object.defineProperty(X,$,Object.getOwnPropertyDescriptor(Z,$));return X}function pZ(){let Z={...Q1},X=[],$=0;function K(I){Z={...Z,...I}}function Q(){return{...Z}}function H(I){if(Z.debug&&I){X.push(I);let V=Z.maxStackSize??100;while(X.length>V)X.shift()}}function Y(){if(Z.debug)X.pop()}function G(){return[...X]}function z(){Z={...d4},X.length=0,$=0}function W(){$++}function J(){if($>0)$--}function L(){return $>0}let _=new Map;function U(I,V,A){if(!_.has(I))_.set(I,new Map);_.get(I).set(V,A)}function R(I,V){let A=typeof I,B;if(I===null||I===void 0)return;if(A==="string")B="String";else if(A==="number")B="Number";else if(A==="boolean")B="Boolean";else if(Array.isArray(I))B="Array";else if(A==="object")B=I.constructor?.name||"Object";else return;let P=B;while(P){let C=_.get(P);if(C?.has(V))return C.get(V);if(A==="object"&&!Array.isArray(I)){if(P=Object.getPrototypeOf(P===B?I:Object.getPrototypeOf(I))?.constructor?.name,P==="Object"||P===B)break}else break}let j=_.get("Object");if(j?.has(V))return j.get(V);return}function M(I,V,A){let B=A===null?"null":typeof A,P=Z.debug?G():void 0;return new f1(`Expected ${V} for '${I}', got ${B}`,I,V,B,P)}function w(I,V){let A={$error:!0,message:I,...V};if(Z.debug&&X.length>0){let B=V?.path?[...X,V.path]:[...X];A.stack=B}return A}return{version:$1,MonadicError:f1,typeError:M,isMonadicError:H7,isError:M1,error:w,composeErrors:m4,typeOf:l1,isNativeType:W7,checkType:v1,validateArgs:l4,wrap:i4,wrapClass:J7,compareVersions:x4,versionsCompatible:u4,configure:K,getConfig:Q,pushStack:H,popStack:Y,getStack:G,resetRuntime:z,enterUnsafe:W,exitUnsafe:J,isUnsafeMode:L,validate:Q7,infer:e0.infer.bind(e0),Type:p,isRuntimeType:C1,Union:c0,Generic:m1,Enum:r0,Nullable:p0,Optional:n0,TArray:o0,TString:f0,TNumber:y0,TBoolean:h0,TInteger:x0,TPositiveInt:u0,TNonEmptyString:d0,TEmail:m0,TUrl:l0,TUuid:i0,TPair:s0,TRecord:a0,Is:L0,IsNot:z7,tjsEquals:_0,registerExtension:U,resolveExtension:R}}var b1={version:$1,MonadicError:f1,typeError:hZ,isMonadicError:H7,isError:M1,error:I1,composeErrors:m4,typeOf:l1,isNativeType:W7,checkType:v1,validateArgs:l4,wrap:i4,wrapClass:J7,compareVersions:x4,versionsCompatible:u4,configure:mZ,getConfig:lZ,pushStack:Y7,popStack:t0,getStack:G7,resetRuntime:iZ,enterUnsafe:xZ,exitUnsafe:uZ,isUnsafeMode:dZ,createRuntime:pZ,validate:Q7,infer:e0.infer.bind(e0),Type:p,isRuntimeType:C1,Union:c0,Generic:m1,Enum:r0,Nullable:p0,Optional:n0,TArray:o0,TString:f0,TNumber:y0,TBoolean:h0,TInteger:x0,TPositiveInt:u0,TNonEmptyString:d0,TEmail:m0,TUrl:l0,TUuid:i0,Timestamp:y4,LegalDate:h4,TPair:s0,TRecord:a0,Is:L0,IsNot:z7};function nZ(){let Z=globalThis;if(Z.__tjs){let X=Z.__tjs.version;if(typeof X!=="string")return Z.__tjs=b1,b1;let $=x4($1,X);if($===0)return Z.__tjs;if(u4($1,X))if($>0)console.info(`TJS runtime: upgrading ${X} → ${$1}`),Z.__tjs=b1;else console.info(`TJS runtime: keeping ${X} (newer than ${$1})`);else if(console.warn(`TJS runtime version conflict: ${X} vs ${$1} (major version mismatch)`),$>0)console.warn(`Upgrading to ${$1} - check for breaking changes`),Z.__tjs=b1;return Z.__tjs}return Z.__tjs=b1,b1}function cZ(Z){return`
|
|
330
344
|
// TJS runtime wrapper (skips unsafe functions)
|
|
331
345
|
if (typeof ${Z}.__tjs === 'object' && !${Z}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
|
|
332
346
|
${Z} = globalThis.__tjs.wrap(${Z}, ${Z}.__tjs)
|
|
333
347
|
}
|
|
334
|
-
`.trim()}function
|
|
348
|
+
`.trim()}function _7(Z){return`
|
|
335
349
|
// TJS: callable without new
|
|
336
350
|
${Z} = new Proxy(${Z}, { apply(t, _, a) { return Reflect.construct(t, a) } });
|
|
337
|
-
`.trim()}function
|
|
351
|
+
`.trim()}function l(Z,X,$,K){if(!Z)return"undefined";switch(Z.kind){case F.SyntaxKind.StringKeyword:return"''";case F.SyntaxKind.NumberKeyword:return"0.0";case F.SyntaxKind.BooleanKeyword:return"false";case F.SyntaxKind.NullKeyword:return"null";case F.SyntaxKind.UndefinedKeyword:return"undefined";case F.SyntaxKind.VoidKeyword:return"undefined";case F.SyntaxKind.AnyKeyword:return"any";case F.SyntaxKind.UnknownKeyword:return"any";case F.SyntaxKind.NeverKeyword:return"null";case F.SyntaxKind.ArrayType:{let H=l(Z.elementType,X);if(H==="any")H="null";return`[${H}]`}case F.SyntaxKind.TypeReference:{let Q=Z,H=Q.typeName.getText();if(H==="Array"&&Q.typeArguments?.length)return`[${l(Q.typeArguments[0],X,$,K)}]`;if(H==="Promise"){if(Q.typeArguments?.length)return l(Q.typeArguments[0],X,$,K);return"undefined"}if(H==="Record")return"{}";if(H==="Map")return"new Map()";if(H==="Set")return"new Set()";if(K?.typeAliases?.has(H)){let Y=K.visited??new Set;if(Y.has(H))return $?.push(`Circular type reference '${H}' - using 'any'`),"any";Y.add(H);let G=K.typeAliases.get(H);return l(G,X,$,{...K,visited:Y})}if(K?.interfaces?.has(H)){let Y=K.visited??new Set;if(Y.has(H))return $?.push(`Circular type reference '${H}' - using 'any'`),"any";Y.add(H);let G=K.interfaces.get(H),z=[];for(let W of G.members)if(F.isPropertySignature(W)&&W.name){let J=W.name.getText(K.sourceFile),L=l(W.type,X,$,{...K,visited:Y});if(!!W.questionToken)z.push(`${J} = ${L}`);else z.push(`${J}: ${L}`)}return`{ ${z.join(", ")} }`}if(/^[A-Z]$/.test(H)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(H))return $?.push(`Generic type parameter '${H}' converted to 'any' - consider specializing`),"any";return $?.push(`Unknown type '${H}' converted to 'any' - may need manual review`),"any"}case F.SyntaxKind.TypeLiteral:{let Q=Z,H=[];for(let Y of Q.members)if(F.isPropertySignature(Y)&&Y.name){let G=Y.name.getText(),z=l(Y.type,X);if(z==="any")z="null";H.push(`${G}: ${z}`)}return`{ ${H.join(", ")} }`}case F.SyntaxKind.UnionType:{let Q=Z,H=(J)=>J.kind===F.SyntaxKind.NullKeyword||F.isLiteralTypeNode(J)&&J.literal.kind===F.SyntaxKind.NullKeyword,Y=(J)=>J.kind===F.SyntaxKind.UndefinedKeyword||F.isLiteralTypeNode(J)&&J.literal.kind===F.SyntaxKind.UndefinedKeyword,G=Q.types.filter((J)=>!H(J)&&!Y(J)),z=Q.types.some(H),W=Q.types.some(Y);if(G.length===1&&(z||W)){let J=l(G[0],X);if(z)return`${J} | null`;if(W)return`${J} | undefined`}if(Q.types.length>0)return l(Q.types[0],X);return"undefined"}case F.SyntaxKind.LiteralType:{let Q=Z;if(F.isStringLiteral(Q.literal))return`'${Q.literal.text}'`;if(F.isNumericLiteral(Q.literal))return Q.literal.text;if(Q.literal.kind===F.SyntaxKind.TrueKeyword)return"true";if(Q.literal.kind===F.SyntaxKind.FalseKeyword)return"false";if(Q.literal.kind===F.SyntaxKind.NullKeyword)return"null";return"undefined"}case F.SyntaxKind.ParenthesizedType:return l(Z.type,X);case F.SyntaxKind.FunctionType:return"undefined";case F.SyntaxKind.TupleType:return`[${Z.elements.map((Y)=>{if(F.isNamedTupleMember(Y))return l(Y.type,X);return l(Y,X)}).join(", ")}]`;default:return"undefined"}}function n(Z,X){if(!Z)return{kind:"any"};switch(Z.kind){case F.SyntaxKind.StringKeyword:return{kind:"string"};case F.SyntaxKind.NumberKeyword:return{kind:"number"};case F.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case F.SyntaxKind.NullKeyword:return{kind:"null"};case F.SyntaxKind.UndefinedKeyword:case F.SyntaxKind.VoidKeyword:return{kind:"undefined"};case F.SyntaxKind.ArrayType:return{kind:"array",items:n(Z.elementType,X)};case F.SyntaxKind.TypeLiteral:{let $=Z,K={};for(let Q of $.members)if(F.isPropertySignature(Q)&&Q.name){let H=Q.name.getText();K[H]=n(Q.type,X)}return{kind:"object",shape:K}}case F.SyntaxKind.UnionType:{let $=Z,K=$.types.filter((H)=>H.kind!==F.SyntaxKind.NullKeyword&&H.kind!==F.SyntaxKind.UndefinedKeyword),Q=$.types.some((H)=>H.kind===F.SyntaxKind.NullKeyword);if(K.length===1&&Q)return{...n(K[0],X),nullable:!0};return{kind:"union",members:$.types.map((H)=>n(H,X))}}case F.SyntaxKind.IntersectionType:{let $=Z,K={};for(let Q of $.types){let H=n(Q,X);if(H.kind==="object"&&H.shape)Object.assign(K,H.shape)}if(Object.keys(K).length>0)return{kind:"object",shape:K};return{kind:"any"}}case F.SyntaxKind.TupleType:{let $=Z,K=[];for(let Q of $.elements)if(F.isNamedTupleMember(Q))K.push(n(Q.type,X));else K.push(n(Q,X));return{kind:"tuple",elements:K}}case F.SyntaxKind.TypeReference:{let $=Z,K=$.typeName.getText();if(K==="Array"&&$.typeArguments?.length)return{kind:"array",items:n($.typeArguments[0],X)};if(K==="Promise"&&$.typeArguments?.length)return n($.typeArguments[0],X);if($.typeArguments?.length){let Q=n($.typeArguments[0],X);if(K==="Partial")return Q;if(K==="Required")return Q;if(K==="Readonly")return Q;if(K==="Record"&&$.typeArguments.length>=2)return{kind:"object",shape:{"[key]":n($.typeArguments[1],X)}};if(K==="Pick"||K==="Omit")return Q;if(K==="NonNullable"){if(Q.nullable)return{...Q,nullable:!1};return Q}if(["ReturnType","Parameters","ConstructorParameters"].includes(K))return{kind:"any"}}if(X?.typeAliases?.has(K)){let Q=X.visited??new Set;if(Q.has(K))return{kind:"any"};Q.add(K);let H=X.typeAliases.get(K);return n(H,{...X,visited:Q})}if(X?.interfaces?.has(K)){let Q=X.visited??new Set;if(Q.has(K))return{kind:"any"};Q.add(K);let H=X.interfaces.get(K),Y={};if(H.heritageClauses){for(let G of H.heritageClauses)if(G.token===F.SyntaxKind.ExtendsKeyword)for(let z of G.types){let W=z.expression.getText(X.sourceFile);if(X.interfaces?.has(W)&&!Q.has(W)){let J={kind:F.SyntaxKind.TypeReference,typeName:{getText:()=>W}},L=n(J,{...X,visited:Q});if(L.kind==="object"&&L.shape)Object.assign(Y,L.shape)}}}for(let G of H.members)if(F.isPropertySignature(G)&&G.name){let z=G.name.getText(X.sourceFile);Y[z]=n(G.type,{...X,visited:Q})}return{kind:"object",shape:Y}}return{kind:"any"}}default:return{kind:"any"}}}function oZ(Z,X){if(!Z.typeParameters||Z.typeParameters.length===0)return;let $={};for(let K of Z.typeParameters){let Q=K.name.getText(),H={};if(K.constraint){let Y=l(K.constraint,void 0,X);if(Y.startsWith("{"))try{H.constraint=Y}catch{H.constraint=Y}else H.constraint=Y}if(K.default){let Y=l(K.default,void 0,X);H.default=Y}$[Q]=H}return Object.keys($).length>0?$:void 0}function sZ(Z,X,$){let K=Z.name.getText(X);if(Z.typeParameters&&Z.typeParameters.length>0)return aZ(Z,X,$);let Q=[];for(let H of Z.members)if(F.isPropertySignature(H)&&H.name){let Y=H.name.getText(X),G=l(H.type,void 0,$);if(G==="any")G="null";Q.push(`${Y}: ${G}`)}if(Q.length===0)return`Type ${K} {}`;return`Type ${K} {
|
|
338
352
|
example: { ${Q.join(", ")} }
|
|
339
|
-
}`}function
|
|
353
|
+
}`}function aZ(Z,X,$){let K=Z.name.getText(X),Q=[];for(let z of Z.typeParameters||[]){let W=z.name.getText(X);if(z.default){let J=l(z.default,void 0,$);Q.push(`${W} = ${J}`)}else Q.push(W)}let H=(Z.typeParameters||[]).map((z)=>z.name.getText(X)),Y=["typeof x === 'object'","x !== null"];for(let z of Z.members)if(F.isPropertySignature(z)&&z.name){let W=z.name.getText(X);if(Y.push(`'${W}' in x`),z.type&&F.isTypeReferenceNode(z.type)){let J=z.type.typeName.getText(X);if(H.includes(J))Y.push(`${J}(x.${W})`)}}let G=["x",...H].join(", ");return`Generic ${K}<${Q.join(", ")}> {
|
|
340
354
|
description: '${K}'
|
|
341
355
|
predicate(${G}) { return ${Y.join(" && ")} }
|
|
342
|
-
}`}function
|
|
356
|
+
}`}function rZ(Z,X){if(!F.isUnionTypeNode(Z))return null;let $=[];for(let K of Z.types)if(F.isLiteralTypeNode(K))if(F.isStringLiteral(K.literal))$.push(`'${K.literal.text}'`);else if(F.isNumericLiteral(K.literal))$.push(K.literal.text);else if(K.literal.kind===F.SyntaxKind.TrueKeyword)$.push("true");else if(K.literal.kind===F.SyntaxKind.FalseKeyword)$.push("false");else if(K.literal.kind===F.SyntaxKind.NullKeyword)$.push("null");else return null;else if(K.kind===F.SyntaxKind.NullKeyword)$.push("null");else if(K.kind===F.SyntaxKind.UndefinedKeyword)$.push("undefined");else return null;return $.length>0?$:null}function tZ(Z,X,$){let K=Z.name.getText(X),Q=[],H=0;for(let Y of Z.members){let G=Y.name.getText(X);if(Y.initializer)if(F.isStringLiteral(Y.initializer))Q.push(` ${G} = '${Y.initializer.text}'`);else if(F.isNumericLiteral(Y.initializer)){let z=parseInt(Y.initializer.text,10);Q.push(` ${G} = ${z}`),H=z+1}else if(F.isPrefixUnaryExpression(Y.initializer)&&Y.initializer.operator===F.SyntaxKind.MinusToken){let z=Y.initializer.operand;if(F.isNumericLiteral(z)){let W=-parseInt(z.text,10);Q.push(` ${G} = ${W}`),H=W+1}}else Q.push(` ${G} = ${Y.initializer.getText(X)}`);else Q.push(` ${G} = ${H}`),H++}return`Enum ${K} '${K}' {
|
|
343
357
|
${Q.join(`
|
|
344
358
|
`)}
|
|
345
|
-
}`}function
|
|
359
|
+
}`}function eZ(Z,X,$){let K=Z.name.getText(X);if(Z.typeParameters&&Z.typeParameters.length>0)return Z5(Z,X,$);let Q=rZ(Z.type,X);if(Q)return`Union ${K} '${K}' ${Q.join(" | ")}`;let H=l(Z.type,void 0,$);if(H==="''"||H==="0"||H==="true"||H==="null")return`Type ${K} ${H}`;return`Type ${K} {
|
|
346
360
|
example: ${H}
|
|
347
|
-
}`}function
|
|
361
|
+
}`}function Z5(Z,X,$){let K=Z.name.getText(X),Q=[];for(let G of Z.typeParameters||[]){let z=G.name.getText(X);if(G.default){let W=l(G.default,void 0,$);Q.push(`${z} = ${W}`)}else Q.push(z)}let Y=["x",...(Z.typeParameters||[]).map((G)=>G.name.getText(X))].join(", ");return`Generic ${K}<${Q.join(", ")}> {
|
|
348
362
|
description: '${K}'
|
|
349
363
|
predicate(${Y}) { return true }
|
|
350
|
-
}`}function
|
|
351
|
-
`:""
|
|
364
|
+
}`}function L7(Z,X,$,K,Q){let H=$4(Z.parameters,X,K),{line:Y}=X.getLineAndCharacterOfPosition(Z.getStart(X)),G=Q?`/* line ${Y+1} */
|
|
365
|
+
`:"",z=$||(F.isFunctionDeclaration(Z)&&Z.name?Z.name.getText(X):""),W=Z.type?l(Z.type,void 0,K):"",J=W&&W!=="undefined"&&W!=="any"?` -! ${W}`:"",L="";if(Z.body){let R=F.isBlock(Z.body)?Z.body.getText(X):`{ return ${Z.body.getText(X)} }`;L=F.transpileModule(R,{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}else L="{ }";let U=Z.modifiers?.some((R)=>R.kind===F.SyntaxKind.AsyncKeyword)?"async ":"";return`${G}${U}function ${z}(${H.join(", ")})${J} ${L}`}function $5(Z,X,$){let K=Z.name?.getText(X)||"Anonymous",Q=Z.heritageClauses?.find((W)=>W.token===F.SyntaxKind.ExtendsKeyword)?.types[0]?.getText(X),H=new Map;for(let W of Z.members)if(F.isPropertyDeclaration(W)&&W.name){let J=W.name.getText(X);if(W.modifiers?.some((_)=>_.kind===F.SyntaxKind.PrivateKeyword)&&!J.startsWith("#"))H.set(J,`#${J}`)}let Y=(W)=>{let J=W;for(let[L,_]of H)J=J.replace(new RegExp(`this\\.${L}\\b`,"g"),`this.${_}`);return J},G=[];for(let W of Z.members){if(F.isConstructorDeclaration(W)){let J=$4(W.parameters,X,$),L="{ }";if(W.body){let _=F.transpileModule(W.body.getText(X),{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}});L=Y(_.outputText.trim())}G.push(` constructor(${J.join(", ")}) ${L}`)}if(F.isMethodDeclaration(W)&&W.name){let J=W.name.getText(X),L=W.modifiers?.some((A)=>A.kind===F.SyntaxKind.StaticKeyword),_=W.modifiers?.some((A)=>A.kind===F.SyntaxKind.AsyncKeyword),U=$4(W.parameters,X,$),R=W.type?l(W.type,void 0,$):"",M=R&&R!=="undefined"&&R!=="any"?` -! ${R}`:"",w="{ }";if(W.body){let A=F.transpileModule(W.body.getText(X),{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}});w=Y(A.outputText.trim())}let I=L?"static ":"",V=_?"async ":"";G.push(` ${I}${V}${J}(${U.join(", ")})${M} ${w}`)}if(F.isGetAccessorDeclaration(W)&&W.name){let J=W.name.getText(X),L=W.type?l(W.type,void 0,$):"",_=L&&L!=="undefined"&&L!=="any"?` -! ${L}`:"",U="{ }";if(W.body){let R=F.transpileModule(W.body.getText(X),{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}});U=Y(R.outputText.trim())}G.push(` get ${J}()${_} ${U}`)}if(F.isSetAccessorDeclaration(W)&&W.name){let J=W.name.getText(X),L=$4(W.parameters,X,$),_="{ }";if(W.body){let U=F.transpileModule(W.body.getText(X),{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}});_=Y(U.outputText.trim())}G.push(` set ${J}(${L.join(", ")}) ${_}`)}if(F.isPropertyDeclaration(W)&&W.name){let J=W.name.getText(X),_=W.modifiers?.some((R)=>R.kind===F.SyntaxKind.StaticKeyword)?"static ":"",U=H.get(J)||J;if(W.initializer){let R=F.transpileModule(W.initializer.getText(X),{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}});G.push(` ${_}${U} = ${R.outputText.trim()}`)}else G.push(` ${_}${U}`)}}let z=Q?` extends ${Q}`:"";return`class ${K}${z} {
|
|
352
366
|
${G.join(`
|
|
353
367
|
`)}
|
|
354
|
-
}`}function
|
|
368
|
+
}`}function $4(Z,X,$){let K=[];for(let Q of Z){let H=Q.name.getText(X),Y=!!Q.questionToken||!!Q.initializer,G=l(Q.type,void 0,$);if(Q.initializer){let z=Q.initializer.getText(X);K.push(`${H} = ${z}`)}else if(G==="any"||G==="undefined")K.push(H);else if(Y)K.push(`${H}: ${G} | undefined`);else K.push(`${H}: ${G}`)}return K}function U7(Z,X,$,K){let Q=F.isFunctionDeclaration(Z)&&Z.name?Z.name.getText(X):"anonymous",H={};for(let z of Z.parameters){let W=z.name.getText(X),J=!!z.questionToken||!!z.initializer,L=void 0;if(z.initializer){let _=z.initializer.getText(X);try{L=JSON.parse(_)}catch{L=_}}H[W]={type:n(z.type,K),required:!J,default:L}}let Y={name:Q,params:H,returns:Z.type?n(Z.type,K):void 0},G=oZ(Z,$);if(G)Y.typeParams=G;return Y}function X5(Z,X,$,K){let Q=Z.name?.getText(X)||"anonymous",H={},Y={},G;for(let W of Z.members){if(F.isConstructorDeclaration(W)){let J={};for(let L of W.parameters){let _=L.name.getText(X),U=!!L.questionToken||!!L.initializer,R=void 0;if(L.initializer){let M=L.initializer.getText(X);try{R=JSON.parse(M)}catch{R=M}}J[_]={type:n(L.type,K),required:!U,default:R}}G={params:J}}if(F.isMethodDeclaration(W)&&W.name){let J=W.name.getText(X),L=W.modifiers?.some((R)=>R.kind===F.SyntaxKind.StaticKeyword),_={};for(let R of W.parameters){let M=R.name.getText(X),w=!!R.questionToken||!!R.initializer,I=void 0;if(R.initializer){let V=R.initializer.getText(X);try{I=JSON.parse(V)}catch{I=V}}_[M]={type:n(R.type,K),required:!w,default:I}}let U={name:J,params:_,returns:W.type?n(W.type,K):void 0};if(L)Y[J]=U;else H[J]=U}}let z={name:Q,methods:H,staticMethods:Y,constructor:G};if(Z.typeParameters&&Z.typeParameters.length>0){let W={};for(let J of Z.typeParameters){let L=J.name.getText(X),_={};if(J.constraint)_.constraint=l(J.constraint,void 0,$,K);if(J.default)_.default=l(J.default,void 0,$,K);W[L]=_}z.typeParams=W}return z}function K5(Z){let X=[],$=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{[\s\S]*?\}\s*\*\/|\/\*test\s*\{[\s\S]*?\}\s*\*\//g,K;while((K=$.exec(Z))!==null)X.push(K[0]);return X}function Q5(Z){let X=[],$=/\/\*#[\s\S]*?\*\//g,K=0,Q=null,H=[];for(let G=0;G<Z.length;G++){let z=Z[G],W=G>0?Z[G-1]:"";if(!Q&&(z==='"'||z==="'"||z==="`"))Q=z;else if(Q&&z===Q&&W!=="\\")Q=null;if(!Q){if(z==="{")K++;if(z==="}")K--}H[G]=K}let Y;while((Y=$.exec(Z))!==null)if(H[Y.index]===0)X.push({content:Y[0],index:Y.index});return X}function H5(Z,X={}){let{emitTJS:$=!1,filename:K="input.ts"}=X,Q=[],H=K5(Z),Y=$?Q5(Z):[],G=F.createSourceFile(K,Z,F.ScriptTarget.Latest,!0),z=[],W=new Set,J={},L={},_=new Set,U=(B)=>{for(let P=0;P<Y.length;P++){let j=Y[P];if(!_.has(P)&&j.index<B)z.push(j.content),_.add(P)}},R=new Map,M=new Map;function w(B){if(F.isTypeAliasDeclaration(B))R.set(B.name.getText(G),B.type);if(F.isInterfaceDeclaration(B))M.set(B.name.getText(G),B);F.forEachChild(B,w)}w(G);let I={typeAliases:R,interfaces:M,sourceFile:G,warnings:Q};for(let B of G.statements){let P=!1;if($)U(B.getStart(G));if(F.isFunctionDeclaration(B)&&B.name){let j=B.name.getText(G);if(P=!0,$)z.push(L7(B,G,void 0,Q,!0));else J[j]=U7(B,G,Q,I)}if(F.isVariableStatement(B)){let j=!1;for(let C of B.declarationList.declarations)if(F.isIdentifier(C.name)&&C.initializer&&(F.isArrowFunction(C.initializer)||F.isFunctionExpression(C.initializer))){j=!0;let E=C.name.getText(G),T=C.initializer;if($)z.push(L7(T,G,E,Q,!0));else{let g=U7(T,G,Q,I);g.name=E,J[E]=g}}if(!j&&$){let C=F.transpileModule(B.getText(G),{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}});z.push(C.outputText.trim())}P=!0}if(F.isInterfaceDeclaration(B)){if(P=!0,$){let j=B.name.getText(G);if(!W.has(j)){W.add(j);let C=sZ(B,G,Q);if(C)z.push(C)}}}if(F.isTypeAliasDeclaration(B)){if(P=!0,$){let j=B.name.getText(G);if(!W.has(j)){W.add(j);let C=eZ(B,G,Q);if(C)z.push(C)}}}if(F.isEnumDeclaration(B)){if(P=!0,$){let j=B.name.getText(G);if(!W.has(j)){W.add(j);let C=tZ(B,G,Q);if(C)z.push(C)}}}if(F.isClassDeclaration(B)&&B.name){let j=B.name.getText(G);if(P=!0,$){let C=$5(B,G,Q);z.push(C)}else L[j]=X5(B,G,Q,I)}if(F.isImportDeclaration(B)){if(P=!0,$){if(!(B.importClause?.isTypeOnly||B.importClause?.namedBindings&&F.isNamedImports(B.importClause.namedBindings)&&B.importClause.namedBindings.elements.every((C)=>C.isTypeOnly))){let E=F.transpileModule(B.getText(G),{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();if(E)z.push(E)}}}if(F.isExportDeclaration(B)||F.isExportAssignment(B)){if(P=!0,$){let C=F.transpileModule(B.getText(G),{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();if(C)z.push(C)}}if(!P&&$){let C=F.transpileModule(B.getText(G),{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();if(C)z.push(C)}}if($){U(1/0);let P=`/* tjs <- ${K||"unknown"} */
|
|
355
369
|
|
|
356
|
-
`,
|
|
370
|
+
`,j=H.length>0?`
|
|
357
371
|
|
|
358
372
|
`+H.join(`
|
|
359
373
|
|
|
360
|
-
`):"";return{code:
|
|
374
|
+
`):"";return{code:P+z.join(`
|
|
361
375
|
|
|
362
|
-
`)+
|
|
363
|
-
${
|
|
364
|
-
`}for(let[
|
|
365
|
-
${
|
|
376
|
+
`)+j,warnings:Q.length>0?Q:void 0}}let A=F.transpileModule(Z,{compilerOptions:{target:F.ScriptTarget.ESNext,module:F.ModuleKind.ESNext,removeComments:!1}}).outputText;for(let[B,P]of Object.entries(J)){let j={params:Object.fromEntries(Object.entries(P.params).map(([E,T])=>[E,{type:T.type.kind,required:T.required,default:T.default}])),returns:P.returns?{type:P.returns.kind}:void 0};if(P.typeParams)j.typeParams=P.typeParams;let C=JSON.stringify(j,null,2);A+=`
|
|
377
|
+
${B}.__tjs = ${C};
|
|
378
|
+
`}for(let[B,P]of Object.entries(L)){let j={constructor:P.constructor?{params:Object.fromEntries(Object.entries(P.constructor.params??{}).map(([E,T])=>[E,{type:T.type.kind,required:T.required,default:T.default}]))}:void 0,methods:Object.fromEntries(Object.entries(P.methods??{}).map(([E,T])=>[E,{params:Object.fromEntries(Object.entries(T.params??{}).map(([g,b])=>[g,{type:b.type.kind,required:b.required}])),returns:T.returns?{type:T.returns.kind}:void 0}])),staticMethods:Object.fromEntries(Object.entries(P.staticMethods??{}).map(([E,T])=>[E,{params:Object.fromEntries(Object.entries(T.params??{}).map(([g,b])=>[g,{type:b.type.kind,required:b.required}])),returns:T.returns?{type:T.returns.kind}:void 0}]))};if(P.typeParams)j.typeParams=P.typeParams;let C=JSON.stringify(j,null,2);A+=`
|
|
379
|
+
${B}.__tjs = ${C};
|
|
366
380
|
`,A+=`
|
|
367
|
-
${
|
|
368
|
-
`}return{code:A,types:J,classes:Object.keys(L).length>0?L:void 0,warnings:Q.length>0?Q:void 0}}import{s as G7}from"tosijs-schema";function z7(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";return typeof Z}function t0(Z){return G7.infer(Z)}function x4(Z){return t0(Z)}x4.type=z7;x4.infer=t0;var sZ=new Proxy(x4,{get(Z,$){if($==="type")return z7;if($==="infer")return t0;return G7[$]},apply(Z,$,X){return t0(X[0])}});async function e0(Z){let $=`${r}:${Z}`;if(typeof crypto<"u"&&crypto.subtle){let Q=new TextEncoder().encode($),H=await crypto.subtle.digest("SHA-256",Q);return Array.from(new Uint8Array(H)).map((G)=>G.toString(16).padStart(2,"0")).join("")}let X=5381;for(let K=0;K<$.length;K++)X=(X<<5)+X+$.charCodeAt(K)>>>0;return X.toString(16)}function aZ(Z){let $=`${r}:${Z}`,X=5381;for(let K=0;K<$.length;K++)X=(X<<5)+X+$.charCodeAt(K)>>>0;return X.toString(16)}var rZ="tjs-metadata-cache",tZ=1,n="modules";class u4{db=null;stats={hits:0,misses:0};pendingOpen=null;async open(){if(this.db)return;if(this.pendingOpen)return this.pendingOpen;this.pendingOpen=this._open(),await this.pendingOpen,this.pendingOpen=null}async _open(){return new Promise((Z,$)=>{if(typeof indexedDB>"u"){Z();return}let X=indexedDB.open(rZ,tZ);X.onerror=()=>{console.warn("MetadataCache: Failed to open IndexedDB",X.error),Z()},X.onsuccess=()=>{this.db=X.result,Z()},X.onupgradeneeded=(K)=>{let Q=K.target.result;if(!Q.objectStoreNames.contains(n)){let H=Q.createObjectStore(n,{keyPath:"hash"});H.createIndex("timestamp","timestamp"),H.createIndex("version","version")}}})}async get(Z){if(!this.db){this.stats.misses++;return}let $=await e0(Z);return new Promise((X)=>{let H=this.db.transaction(n,"readonly").objectStore(n).get($);H.onerror=()=>{this.stats.misses++,X(void 0)},H.onsuccess=()=>{let Y=H.result;if(Y&&Y.version!==r){this.stats.misses++,X(void 0);return}if(Y)this.stats.hits++;else this.stats.misses++;X(Y)}})}async getTranspile(Z){return(await this.get(Z))?.transpile}async getTJS(Z){return(await this.get(Z))?.tjs}async setTranspile(Z,$){await this._set(Z,{transpile:$})}async setTJS(Z,$){await this._set(Z,{tjs:$})}async _set(Z,$){if(!this.db)return;let X=await e0(Z);return new Promise((K,Q)=>{let Y=this.db.transaction(n,"readwrite").objectStore(n),G=Y.get(X);G.onsuccess=()=>{let z=G.result,W={hash:X,version:r,timestamp:Date.now(),transpile:$.transpile??z?.transpile,tjs:$.tjs??z?.tjs},J=Y.put(W);J.onerror=()=>Q(J.error),J.onsuccess=()=>K()},G.onerror=()=>Q(G.error)})}async delete(Z){if(!this.db)return;let $=await e0(Z);return new Promise((X,K)=>{let Y=this.db.transaction(n,"readwrite").objectStore(n).delete($);Y.onerror=()=>K(Y.error),Y.onsuccess=()=>X()})}async clear(){if(!this.db)return;return new Promise((Z,$)=>{let Q=this.db.transaction(n,"readwrite").objectStore(n).clear();Q.onerror=()=>$(Q.error),Q.onsuccess=()=>{this.stats={hits:0,misses:0},Z()}})}async prune(Z){if(!this.db)return 0;let $=Date.now()-Z;return new Promise((X,K)=>{let Y=this.db.transaction(n,"readwrite").objectStore(n).index("timestamp"),G=IDBKeyRange.upperBound($),z=0,W=Y.openCursor(G);W.onsuccess=(J)=>{let L=J.target.result;if(L)L.delete(),z++,L.continue();else X(z)},W.onerror=()=>K(W.error)})}async pruneOldVersions(){if(!this.db)return 0;return new Promise((Z,$)=>{let K=this.db.transaction(n,"readwrite").objectStore(n),Q=0,H=K.openCursor();H.onsuccess=(Y)=>{let G=Y.target.result;if(G){if(G.value.version!==r)G.delete(),Q++;G.continue()}else Z(Q)},H.onerror=()=>$(H.error)})}async getStats(){let Z=await this.count(),$=await this.estimateSize(),X=this.stats.hits+this.stats.misses,K=X>0?this.stats.hits/X:0;return{entries:Z,bytes:$,hits:this.stats.hits,misses:this.stats.misses,hitRate:K}}async count(){if(!this.db)return 0;return new Promise((Z,$)=>{let Q=this.db.transaction(n,"readonly").objectStore(n).count();Q.onerror=()=>$(Q.error),Q.onsuccess=()=>Z(Q.result)})}async estimateSize(){if(!this.db)return 0;if(typeof navigator<"u"&&navigator.storage?.estimate)try{return(await navigator.storage.estimate()).usage??0}catch{}return new Promise((Z,$)=>{let K=this.db.transaction(n,"readonly").objectStore(n),Q=0,H=K.openCursor();H.onsuccess=(Y)=>{let G=Y.target.result;if(G)Q+=JSON.stringify(G.value).length*2,G.continue();else Z(Q)},H.onerror=()=>$(H.error)})}close(){if(this.db)this.db.close(),this.db=null}isAvailable(){return this.db!==null}resetStats(){this.stats={hits:0,misses:0}}}var W0=null;async function Z4(){if(!W0)W0=new u4,await W0.open();return W0}function eZ(Z){W0=Z}function X4(Z,$,X,K,Q){if(!X)X=E;(function H(Y,G,z){var W=z||Y.type;if(X[W](Y,G,H),$[W])$[W](Y,G)})(Z,K,Q)}function W7(Z,$,X,K,Q){var H=[];if(!X)X=E;(function Y(G,z,W){var J=W||G.type,L=G!==H[H.length-1];if(L)H.push(G);if(X[J](G,z,Y),$[J])$[J](G,z||H,H);if(L)H.pop()})(Z,K,Q)}function d4(Z,$,X){X(Z,$)}function S1(Z,$,X){}var E={};E.Program=E.BlockStatement=E.StaticBlock=function(Z,$,X){for(var K=0,Q=Z.body;K<Q.length;K+=1){var H=Q[K];X(H,$,"Statement")}};E.Statement=d4;E.EmptyStatement=S1;E.ExpressionStatement=E.ParenthesizedExpression=E.ChainExpression=function(Z,$,X){return X(Z.expression,$,"Expression")};E.IfStatement=function(Z,$,X){if(X(Z.test,$,"Expression"),X(Z.consequent,$,"Statement"),Z.alternate)X(Z.alternate,$,"Statement")};E.LabeledStatement=function(Z,$,X){return X(Z.body,$,"Statement")};E.BreakStatement=E.ContinueStatement=S1;E.WithStatement=function(Z,$,X){X(Z.object,$,"Expression"),X(Z.body,$,"Statement")};E.SwitchStatement=function(Z,$,X){X(Z.discriminant,$,"Expression");for(var K=0,Q=Z.cases;K<Q.length;K+=1){var H=Q[K];X(H,$)}};E.SwitchCase=function(Z,$,X){if(Z.test)X(Z.test,$,"Expression");for(var K=0,Q=Z.consequent;K<Q.length;K+=1){var H=Q[K];X(H,$,"Statement")}};E.ReturnStatement=E.YieldExpression=E.AwaitExpression=function(Z,$,X){if(Z.argument)X(Z.argument,$,"Expression")};E.ThrowStatement=E.SpreadElement=function(Z,$,X){return X(Z.argument,$,"Expression")};E.TryStatement=function(Z,$,X){if(X(Z.block,$,"Statement"),Z.handler)X(Z.handler,$);if(Z.finalizer)X(Z.finalizer,$,"Statement")};E.CatchClause=function(Z,$,X){if(Z.param)X(Z.param,$,"Pattern");X(Z.body,$,"Statement")};E.WhileStatement=E.DoWhileStatement=function(Z,$,X){X(Z.test,$,"Expression"),X(Z.body,$,"Statement")};E.ForStatement=function(Z,$,X){if(Z.init)X(Z.init,$,"ForInit");if(Z.test)X(Z.test,$,"Expression");if(Z.update)X(Z.update,$,"Expression");X(Z.body,$,"Statement")};E.ForInStatement=E.ForOfStatement=function(Z,$,X){X(Z.left,$,"ForInit"),X(Z.right,$,"Expression"),X(Z.body,$,"Statement")};E.ForInit=function(Z,$,X){if(Z.type==="VariableDeclaration")X(Z,$);else X(Z,$,"Expression")};E.DebuggerStatement=S1;E.FunctionDeclaration=function(Z,$,X){return X(Z,$,"Function")};E.VariableDeclaration=function(Z,$,X){for(var K=0,Q=Z.declarations;K<Q.length;K+=1){var H=Q[K];X(H,$)}};E.VariableDeclarator=function(Z,$,X){if(X(Z.id,$,"Pattern"),Z.init)X(Z.init,$,"Expression")};E.Function=function(Z,$,X){if(Z.id)X(Z.id,$,"Pattern");for(var K=0,Q=Z.params;K<Q.length;K+=1){var H=Q[K];X(H,$,"Pattern")}X(Z.body,$,Z.expression?"Expression":"Statement")};E.Pattern=function(Z,$,X){if(Z.type==="Identifier")X(Z,$,"VariablePattern");else if(Z.type==="MemberExpression")X(Z,$,"MemberPattern");else X(Z,$)};E.VariablePattern=S1;E.MemberPattern=d4;E.RestElement=function(Z,$,X){return X(Z.argument,$,"Pattern")};E.ArrayPattern=function(Z,$,X){for(var K=0,Q=Z.elements;K<Q.length;K+=1){var H=Q[K];if(H)X(H,$,"Pattern")}};E.ObjectPattern=function(Z,$,X){for(var K=0,Q=Z.properties;K<Q.length;K+=1){var H=Q[K];if(H.type==="Property"){if(H.computed)X(H.key,$,"Expression");X(H.value,$,"Pattern")}else if(H.type==="RestElement")X(H.argument,$,"Pattern")}};E.Expression=d4;E.ThisExpression=E.Super=E.MetaProperty=S1;E.ArrayExpression=function(Z,$,X){for(var K=0,Q=Z.elements;K<Q.length;K+=1){var H=Q[K];if(H)X(H,$,"Expression")}};E.ObjectExpression=function(Z,$,X){for(var K=0,Q=Z.properties;K<Q.length;K+=1){var H=Q[K];X(H,$)}};E.FunctionExpression=E.ArrowFunctionExpression=E.FunctionDeclaration;E.SequenceExpression=function(Z,$,X){for(var K=0,Q=Z.expressions;K<Q.length;K+=1){var H=Q[K];X(H,$,"Expression")}};E.TemplateLiteral=function(Z,$,X){for(var K=0,Q=Z.quasis;K<Q.length;K+=1){var H=Q[K];X(H,$)}for(var Y=0,G=Z.expressions;Y<G.length;Y+=1){var z=G[Y];X(z,$,"Expression")}};E.TemplateElement=S1;E.UnaryExpression=E.UpdateExpression=function(Z,$,X){X(Z.argument,$,"Expression")};E.BinaryExpression=E.LogicalExpression=function(Z,$,X){X(Z.left,$,"Expression"),X(Z.right,$,"Expression")};E.AssignmentExpression=E.AssignmentPattern=function(Z,$,X){X(Z.left,$,"Pattern"),X(Z.right,$,"Expression")};E.ConditionalExpression=function(Z,$,X){X(Z.test,$,"Expression"),X(Z.consequent,$,"Expression"),X(Z.alternate,$,"Expression")};E.NewExpression=E.CallExpression=function(Z,$,X){if(X(Z.callee,$,"Expression"),Z.arguments)for(var K=0,Q=Z.arguments;K<Q.length;K+=1){var H=Q[K];X(H,$,"Expression")}};E.MemberExpression=function(Z,$,X){if(X(Z.object,$,"Expression"),Z.computed)X(Z.property,$,"Expression")};E.ExportNamedDeclaration=E.ExportDefaultDeclaration=function(Z,$,X){if(Z.declaration)X(Z.declaration,$,Z.type==="ExportNamedDeclaration"||Z.declaration.id?"Statement":"Expression");if(Z.source)X(Z.source,$,"Expression")};E.ExportAllDeclaration=function(Z,$,X){if(Z.exported)X(Z.exported,$);X(Z.source,$,"Expression")};E.ImportDeclaration=function(Z,$,X){for(var K=0,Q=Z.specifiers;K<Q.length;K+=1){var H=Q[K];X(H,$)}X(Z.source,$,"Expression")};E.ImportExpression=function(Z,$,X){X(Z.source,$,"Expression")};E.ImportSpecifier=E.ImportDefaultSpecifier=E.ImportNamespaceSpecifier=E.Identifier=E.PrivateIdentifier=E.Literal=S1;E.TaggedTemplateExpression=function(Z,$,X){X(Z.tag,$,"Expression"),X(Z.quasi,$,"Expression")};E.ClassDeclaration=E.ClassExpression=function(Z,$,X){return X(Z,$,"Class")};E.Class=function(Z,$,X){if(Z.id)X(Z.id,$,"Pattern");if(Z.superClass)X(Z.superClass,$,"Expression");X(Z.body,$)};E.ClassBody=function(Z,$,X){for(var K=0,Q=Z.body;K<Q.length;K+=1){var H=Q[K];X(H,$)}};E.MethodDefinition=E.PropertyDefinition=E.Property=function(Z,$,X){if(Z.computed)X(Z.key,$,"Expression");if(Z.value)X(Z.value,$,"Expression")};var X5={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function $5(Z,$={}){let X={...X5,...$},K=[],Q;try{Q=U1(Z,{filename:X.filename,colonShorthand:!0}).ast}catch(Y){return{diagnostics:[{severity:"error",message:Y.message,line:Y.loc?.line,column:Y.loc?.column,rule:"parse-error"}],valid:!1}}let H=[J7()];if(W7(Q,{FunctionDeclaration(Y,G,z){let W=J7();H.push(W);for(let J of Y.params)K5(W,J,"parameter");if(Y.id)(H[H.length-2]||H[0]).declarations.set(Y.id.name,{node:Y.id,kind:"function",used:!1})},VariableDeclaration(Y){let G=H[H.length-1];for(let z of Y.declarations)if(z.id.type==="Identifier")G.declarations.set(z.id.name,{node:z.id,kind:Y.kind,used:!1})}}),X4(Q,{Identifier(Y){for(let G=H.length-1;G>=0;G--){let z=H[G].declarations.get(Y.name);if(z){z.used=!0;break}}}}),X.unusedVariables)for(let Y of H)for(let[G,z]of Y.declarations){if(G.startsWith("_"))continue;if(!z.used&&z.kind!=="function")K.push({severity:"warning",message:`'${G}' is declared but never used`,line:z.node.loc?.start?.line,column:z.node.loc?.start?.column,rule:"no-unused-vars"})}if(X.unreachableCode)X4(Q,{BlockStatement(Y){let G=!1;for(let z of Y.body){if(G){K.push({severity:"warning",message:"Unreachable code after return statement",line:z.loc?.start?.line,column:z.loc?.start?.column,rule:"no-unreachable"});break}if(z.type==="ReturnStatement")G=!0}}});if(X.noExplicitNew)X4(Q,{NewExpression(Y){let G="class";if(Y.callee.type==="Identifier")G=Y.callee.name;else if(Y.callee.type==="MemberExpression"){if(Y.callee.property.type==="Identifier")G=Y.callee.property.name}K.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${G}(...) instead of new ${G}(...)`,line:Y.loc?.start?.line,column:Y.loc?.start?.column,rule:"no-explicit-new"})}});return{diagnostics:K,valid:K.filter((Y)=>Y.severity==="error").length===0}}function J7(){return{declarations:new Map}}function K5(Z,$,X){if($.type==="Identifier")Z.declarations.set($.name,{node:$,kind:X,used:!1});else if($.type==="AssignmentPattern"&&$.left.type==="Identifier")Z.declarations.set($.left.name,{node:$.left,kind:X,used:!1})}function Q5(Z){let $=[],X=0,K=null;for(let Q=0;Q<Z.length;Q++){let H=Z[Q],Y=Q>0?Z[Q-1]:"";if(!K&&(H==='"'||H==="'"||H==="`"))K=H;else if(K&&H===K&&Y!=="\\")K=null;if(!K){if(H==="{")X++;if(H==="}")X--}$[Q]=X}return $}function _7(Z){let $=[],X=Q5(Z),K=/\/\*#([\s\S]*?)\*\//g,Q=/function\s+(\w+)\s*\(([^)]*)\)\s*(?:(-[>?!])\s*('[^']*'|"[^"]*"|[^\s{]+)|:\s*(\w+))?\s*\{/g,H=[],Y;while((Y=K.exec(Z))!==null){if(X[Y.index]!==0)continue;let z=Y[1],W=z.split(`
|
|
381
|
+
${_7(B)}
|
|
382
|
+
`}return{code:A,types:J,classes:Object.keys(L).length>0?L:void 0,warnings:Q.length>0?Q:void 0}}import{s as q7}from"tosijs-schema";function D7(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";return typeof Z}function X4(Z){return q7.infer(Z)}function p4(Z){return X4(Z)}p4.type=D7;p4.infer=X4;var Y5=new Proxy(p4,{get(Z,X){if(X==="type")return D7;if(X==="infer")return X4;return q7[X]},apply(Z,X,$){return X4($[0])}});async function K4(Z){let X=`${$1}:${Z}`;if(typeof crypto<"u"&&crypto.subtle){let Q=new TextEncoder().encode(X),H=await crypto.subtle.digest("SHA-256",Q);return Array.from(new Uint8Array(H)).map((G)=>G.toString(16).padStart(2,"0")).join("")}let $=5381;for(let K=0;K<X.length;K++)$=($<<5)+$+X.charCodeAt(K)>>>0;return $.toString(16)}function G5(Z){let X=`${$1}:${Z}`,$=5381;for(let K=0;K<X.length;K++)$=($<<5)+$+X.charCodeAt(K)>>>0;return $.toString(16)}var z5="tjs-metadata-cache",W5=1,s="modules";class n4{db=null;stats={hits:0,misses:0};pendingOpen=null;async open(){if(this.db)return;if(this.pendingOpen)return this.pendingOpen;this.pendingOpen=this._open(),await this.pendingOpen,this.pendingOpen=null}async _open(){return new Promise((Z,X)=>{if(typeof indexedDB>"u"){Z();return}let $=indexedDB.open(z5,W5);$.onerror=()=>{console.warn("MetadataCache: Failed to open IndexedDB",$.error),Z()},$.onsuccess=()=>{this.db=$.result,Z()},$.onupgradeneeded=(K)=>{let Q=K.target.result;if(!Q.objectStoreNames.contains(s)){let H=Q.createObjectStore(s,{keyPath:"hash"});H.createIndex("timestamp","timestamp"),H.createIndex("version","version")}}})}async get(Z){if(!this.db){this.stats.misses++;return}let X=await K4(Z);return new Promise(($)=>{let H=this.db.transaction(s,"readonly").objectStore(s).get(X);H.onerror=()=>{this.stats.misses++,$(void 0)},H.onsuccess=()=>{let Y=H.result;if(Y&&Y.version!==$1){this.stats.misses++,$(void 0);return}if(Y)this.stats.hits++;else this.stats.misses++;$(Y)}})}async getTranspile(Z){return(await this.get(Z))?.transpile}async getTJS(Z){return(await this.get(Z))?.tjs}async setTranspile(Z,X){await this._set(Z,{transpile:X})}async setTJS(Z,X){await this._set(Z,{tjs:X})}async _set(Z,X){if(!this.db)return;let $=await K4(Z);return new Promise((K,Q)=>{let Y=this.db.transaction(s,"readwrite").objectStore(s),G=Y.get($);G.onsuccess=()=>{let z=G.result,W={hash:$,version:$1,timestamp:Date.now(),transpile:X.transpile??z?.transpile,tjs:X.tjs??z?.tjs},J=Y.put(W);J.onerror=()=>Q(J.error),J.onsuccess=()=>K()},G.onerror=()=>Q(G.error)})}async delete(Z){if(!this.db)return;let X=await K4(Z);return new Promise(($,K)=>{let Y=this.db.transaction(s,"readwrite").objectStore(s).delete(X);Y.onerror=()=>K(Y.error),Y.onsuccess=()=>$()})}async clear(){if(!this.db)return;return new Promise((Z,X)=>{let Q=this.db.transaction(s,"readwrite").objectStore(s).clear();Q.onerror=()=>X(Q.error),Q.onsuccess=()=>{this.stats={hits:0,misses:0},Z()}})}async prune(Z){if(!this.db)return 0;let X=Date.now()-Z;return new Promise(($,K)=>{let Y=this.db.transaction(s,"readwrite").objectStore(s).index("timestamp"),G=IDBKeyRange.upperBound(X),z=0,W=Y.openCursor(G);W.onsuccess=(J)=>{let L=J.target.result;if(L)L.delete(),z++,L.continue();else $(z)},W.onerror=()=>K(W.error)})}async pruneOldVersions(){if(!this.db)return 0;return new Promise((Z,X)=>{let K=this.db.transaction(s,"readwrite").objectStore(s),Q=0,H=K.openCursor();H.onsuccess=(Y)=>{let G=Y.target.result;if(G){if(G.value.version!==$1)G.delete(),Q++;G.continue()}else Z(Q)},H.onerror=()=>X(H.error)})}async getStats(){let Z=await this.count(),X=await this.estimateSize(),$=this.stats.hits+this.stats.misses,K=$>0?this.stats.hits/$:0;return{entries:Z,bytes:X,hits:this.stats.hits,misses:this.stats.misses,hitRate:K}}async count(){if(!this.db)return 0;return new Promise((Z,X)=>{let Q=this.db.transaction(s,"readonly").objectStore(s).count();Q.onerror=()=>X(Q.error),Q.onsuccess=()=>Z(Q.result)})}async estimateSize(){if(!this.db)return 0;if(typeof navigator<"u"&&navigator.storage?.estimate)try{return(await navigator.storage.estimate()).usage??0}catch{}return new Promise((Z,X)=>{let K=this.db.transaction(s,"readonly").objectStore(s),Q=0,H=K.openCursor();H.onsuccess=(Y)=>{let G=Y.target.result;if(G)Q+=JSON.stringify(G.value).length*2,G.continue();else Z(Q)},H.onerror=()=>X(H.error)})}close(){if(this.db)this.db.close(),this.db=null}isAvailable(){return this.db!==null}resetStats(){this.stats={hits:0,misses:0}}}var U0=null;async function Q4(){if(!U0)U0=new n4,await U0.open();return U0}function J5(Z){U0=Z}function H4(Z,X,$,K,Q){if(!$)$=N;(function H(Y,G,z){var W=z||Y.type;if($[W](Y,G,H),X[W])X[W](Y,G)})(Z,K,Q)}function R7(Z,X,$,K,Q){var H=[];if(!$)$=N;(function Y(G,z,W){var J=W||G.type,L=G!==H[H.length-1];if(L)H.push(G);if($[J](G,z,Y),X[J])X[J](G,z||H,H);if(L)H.pop()})(Z,K,Q)}function c4(Z,X,$){$(Z,X)}function y1(Z,X,$){}var N={};N.Program=N.BlockStatement=N.StaticBlock=function(Z,X,$){for(var K=0,Q=Z.body;K<Q.length;K+=1){var H=Q[K];$(H,X,"Statement")}};N.Statement=c4;N.EmptyStatement=y1;N.ExpressionStatement=N.ParenthesizedExpression=N.ChainExpression=function(Z,X,$){return $(Z.expression,X,"Expression")};N.IfStatement=function(Z,X,$){if($(Z.test,X,"Expression"),$(Z.consequent,X,"Statement"),Z.alternate)$(Z.alternate,X,"Statement")};N.LabeledStatement=function(Z,X,$){return $(Z.body,X,"Statement")};N.BreakStatement=N.ContinueStatement=y1;N.WithStatement=function(Z,X,$){$(Z.object,X,"Expression"),$(Z.body,X,"Statement")};N.SwitchStatement=function(Z,X,$){$(Z.discriminant,X,"Expression");for(var K=0,Q=Z.cases;K<Q.length;K+=1){var H=Q[K];$(H,X)}};N.SwitchCase=function(Z,X,$){if(Z.test)$(Z.test,X,"Expression");for(var K=0,Q=Z.consequent;K<Q.length;K+=1){var H=Q[K];$(H,X,"Statement")}};N.ReturnStatement=N.YieldExpression=N.AwaitExpression=function(Z,X,$){if(Z.argument)$(Z.argument,X,"Expression")};N.ThrowStatement=N.SpreadElement=function(Z,X,$){return $(Z.argument,X,"Expression")};N.TryStatement=function(Z,X,$){if($(Z.block,X,"Statement"),Z.handler)$(Z.handler,X);if(Z.finalizer)$(Z.finalizer,X,"Statement")};N.CatchClause=function(Z,X,$){if(Z.param)$(Z.param,X,"Pattern");$(Z.body,X,"Statement")};N.WhileStatement=N.DoWhileStatement=function(Z,X,$){$(Z.test,X,"Expression"),$(Z.body,X,"Statement")};N.ForStatement=function(Z,X,$){if(Z.init)$(Z.init,X,"ForInit");if(Z.test)$(Z.test,X,"Expression");if(Z.update)$(Z.update,X,"Expression");$(Z.body,X,"Statement")};N.ForInStatement=N.ForOfStatement=function(Z,X,$){$(Z.left,X,"ForInit"),$(Z.right,X,"Expression"),$(Z.body,X,"Statement")};N.ForInit=function(Z,X,$){if(Z.type==="VariableDeclaration")$(Z,X);else $(Z,X,"Expression")};N.DebuggerStatement=y1;N.FunctionDeclaration=function(Z,X,$){return $(Z,X,"Function")};N.VariableDeclaration=function(Z,X,$){for(var K=0,Q=Z.declarations;K<Q.length;K+=1){var H=Q[K];$(H,X)}};N.VariableDeclarator=function(Z,X,$){if($(Z.id,X,"Pattern"),Z.init)$(Z.init,X,"Expression")};N.Function=function(Z,X,$){if(Z.id)$(Z.id,X,"Pattern");for(var K=0,Q=Z.params;K<Q.length;K+=1){var H=Q[K];$(H,X,"Pattern")}$(Z.body,X,Z.expression?"Expression":"Statement")};N.Pattern=function(Z,X,$){if(Z.type==="Identifier")$(Z,X,"VariablePattern");else if(Z.type==="MemberExpression")$(Z,X,"MemberPattern");else $(Z,X)};N.VariablePattern=y1;N.MemberPattern=c4;N.RestElement=function(Z,X,$){return $(Z.argument,X,"Pattern")};N.ArrayPattern=function(Z,X,$){for(var K=0,Q=Z.elements;K<Q.length;K+=1){var H=Q[K];if(H)$(H,X,"Pattern")}};N.ObjectPattern=function(Z,X,$){for(var K=0,Q=Z.properties;K<Q.length;K+=1){var H=Q[K];if(H.type==="Property"){if(H.computed)$(H.key,X,"Expression");$(H.value,X,"Pattern")}else if(H.type==="RestElement")$(H.argument,X,"Pattern")}};N.Expression=c4;N.ThisExpression=N.Super=N.MetaProperty=y1;N.ArrayExpression=function(Z,X,$){for(var K=0,Q=Z.elements;K<Q.length;K+=1){var H=Q[K];if(H)$(H,X,"Expression")}};N.ObjectExpression=function(Z,X,$){for(var K=0,Q=Z.properties;K<Q.length;K+=1){var H=Q[K];$(H,X)}};N.FunctionExpression=N.ArrowFunctionExpression=N.FunctionDeclaration;N.SequenceExpression=function(Z,X,$){for(var K=0,Q=Z.expressions;K<Q.length;K+=1){var H=Q[K];$(H,X,"Expression")}};N.TemplateLiteral=function(Z,X,$){for(var K=0,Q=Z.quasis;K<Q.length;K+=1){var H=Q[K];$(H,X)}for(var Y=0,G=Z.expressions;Y<G.length;Y+=1){var z=G[Y];$(z,X,"Expression")}};N.TemplateElement=y1;N.UnaryExpression=N.UpdateExpression=function(Z,X,$){$(Z.argument,X,"Expression")};N.BinaryExpression=N.LogicalExpression=function(Z,X,$){$(Z.left,X,"Expression"),$(Z.right,X,"Expression")};N.AssignmentExpression=N.AssignmentPattern=function(Z,X,$){$(Z.left,X,"Pattern"),$(Z.right,X,"Expression")};N.ConditionalExpression=function(Z,X,$){$(Z.test,X,"Expression"),$(Z.consequent,X,"Expression"),$(Z.alternate,X,"Expression")};N.NewExpression=N.CallExpression=function(Z,X,$){if($(Z.callee,X,"Expression"),Z.arguments)for(var K=0,Q=Z.arguments;K<Q.length;K+=1){var H=Q[K];$(H,X,"Expression")}};N.MemberExpression=function(Z,X,$){if($(Z.object,X,"Expression"),Z.computed)$(Z.property,X,"Expression")};N.ExportNamedDeclaration=N.ExportDefaultDeclaration=function(Z,X,$){if(Z.declaration)$(Z.declaration,X,Z.type==="ExportNamedDeclaration"||Z.declaration.id?"Statement":"Expression");if(Z.source)$(Z.source,X,"Expression")};N.ExportAllDeclaration=function(Z,X,$){if(Z.exported)$(Z.exported,X);$(Z.source,X,"Expression")};N.ImportDeclaration=function(Z,X,$){for(var K=0,Q=Z.specifiers;K<Q.length;K+=1){var H=Q[K];$(H,X)}$(Z.source,X,"Expression")};N.ImportExpression=function(Z,X,$){$(Z.source,X,"Expression")};N.ImportSpecifier=N.ImportDefaultSpecifier=N.ImportNamespaceSpecifier=N.Identifier=N.PrivateIdentifier=N.Literal=y1;N.TaggedTemplateExpression=function(Z,X,$){$(Z.tag,X,"Expression"),$(Z.quasi,X,"Expression")};N.ClassDeclaration=N.ClassExpression=function(Z,X,$){return $(Z,X,"Class")};N.Class=function(Z,X,$){if(Z.id)$(Z.id,X,"Pattern");if(Z.superClass)$(Z.superClass,X,"Expression");$(Z.body,X)};N.ClassBody=function(Z,X,$){for(var K=0,Q=Z.body;K<Q.length;K+=1){var H=Q[K];$(H,X)}};N.MethodDefinition=N.PropertyDefinition=N.Property=function(Z,X,$){if(Z.computed)$(Z.key,X,"Expression");if(Z.value)$(Z.value,X,"Expression")};var L5={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function U5(Z,X={}){let $={...L5,...X},K=[],Q;try{Q=F1(Z,{filename:$.filename,colonShorthand:!0}).ast}catch(Y){return{diagnostics:[{severity:"error",message:Y.message,line:Y.loc?.line,column:Y.loc?.column,rule:"parse-error"}],valid:!1}}let H=[B7()];if(R7(Q,{FunctionDeclaration(Y,G,z){let W=B7();H.push(W);for(let J of Y.params)q5(W,J,"parameter");if(Y.id)(H[H.length-2]||H[0]).declarations.set(Y.id.name,{node:Y.id,kind:"function",used:!1})},VariableDeclaration(Y){let G=H[H.length-1];for(let z of Y.declarations)if(z.id.type==="Identifier")G.declarations.set(z.id.name,{node:z.id,kind:Y.kind,used:!1})}}),H4(Q,{Identifier(Y){for(let G=H.length-1;G>=0;G--){let z=H[G].declarations.get(Y.name);if(z){z.used=!0;break}}}}),$.unusedVariables)for(let Y of H)for(let[G,z]of Y.declarations){if(G.startsWith("_"))continue;if(!z.used&&z.kind!=="function")K.push({severity:"warning",message:`'${G}' is declared but never used`,line:z.node.loc?.start?.line,column:z.node.loc?.start?.column,rule:"no-unused-vars"})}if($.unreachableCode)H4(Q,{BlockStatement(Y){let G=!1;for(let z of Y.body){if(G){K.push({severity:"warning",message:"Unreachable code after return statement",line:z.loc?.start?.line,column:z.loc?.start?.column,rule:"no-unreachable"});break}if(z.type==="ReturnStatement")G=!0}}});if($.noExplicitNew)H4(Q,{NewExpression(Y){let G="class";if(Y.callee.type==="Identifier")G=Y.callee.name;else if(Y.callee.type==="MemberExpression"){if(Y.callee.property.type==="Identifier")G=Y.callee.property.name}K.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${G}(...) instead of new ${G}(...)`,line:Y.loc?.start?.line,column:Y.loc?.start?.column,rule:"no-explicit-new"})}});return{diagnostics:K,valid:K.filter((Y)=>Y.severity==="error").length===0}}function B7(){return{declarations:new Map}}function q5(Z,X,$){if(X.type==="Identifier")Z.declarations.set(X.name,{node:X,kind:$,used:!1});else if(X.type==="AssignmentPattern"&&X.left.type==="Identifier")Z.declarations.set(X.left.name,{node:X.left,kind:$,used:!1})}function D5(Z){let X=[],$=0,K=null;for(let Q=0;Q<Z.length;Q++){let H=Z[Q],Y=Q>0?Z[Q-1]:"";if(!K&&(H==='"'||H==="'"||H==="`"))K=H;else if(K&&H===K&&Y!=="\\")K=null;if(!K){if(H==="{")$++;if(H==="}")$--}X[Q]=$}return X}function I7(Z){let X=[],$=D5(Z),K=/\/\*#([\s\S]*?)\*\//g,Q=/function\s+(\w+)\s*\(([^)]*)\)\s*(?:(-[>?!])\s*('[^']*'|"[^"]*"|[^\s{]+)|:\s*(\w+))?\s*\{/g,H=[],Y;while((Y=K.exec(Z))!==null){if($[Y.index]!==0)continue;let z=Y[1],W=z.split(`
|
|
369
383
|
`),J=W.filter((L)=>L.trim().length>0).reduce((L,_)=>{let U=_.match(/^(\s*)/)?.[1].length||0;return Math.min(L,U)},1/0);if(J>0&&J<1/0)z=W.map((L)=>L.slice(J)).join(`
|
|
370
|
-
`);H.push({type:"doc",index:Y.index,data:z.trim()})}while((Y=Q.exec(Z))!==null){let z=Y[1],W=Y[2],J=Y[3]||"",L=Y[4]||"",_=Y[5]||"",U=`function ${z}(${W})`;if(J)U+=` ${J} ${L}`;else if(_)U+=`: ${_}`;H.push({type:"function",index:Y.index,data:{name:z,signature:U}})}H.sort((z,W)=>z.index-W.index);for(let z of H)if(z.type==="doc")
|
|
384
|
+
`);H.push({type:"doc",index:Y.index,data:z.trim()})}while((Y=Q.exec(Z))!==null){let z=Y[1],W=Y[2],J=Y[3]||"",L=Y[4]||"",_=Y[5]||"",U=`function ${z}(${W})`;if(J)U+=` ${J} ${L}`;else if(_)U+=`: ${_}`;H.push({type:"function",index:Y.index,data:{name:z,signature:U}})}H.sort((z,W)=>z.index-W.index);for(let z of H)if(z.type==="doc")X.push({type:"doc",content:z.data});else X.push({type:"function",name:z.data.name,signature:z.data.signature});let G=X.map((z)=>{if(z.type==="doc")return z.content;else return`\`\`\`tjs
|
|
371
385
|
${z.signature}
|
|
372
386
|
\`\`\``}).join(`
|
|
373
387
|
|
|
374
|
-
`);return{items
|
|
388
|
+
`);return{items:X,markdown:G}}function R5(Z,X){let $=I7(Z),K="";for(let Q of $.items)if(Q.type==="doc")K+=Q.content+`
|
|
375
389
|
|
|
376
|
-
`;else if(Q.type==="function"){let H
|
|
390
|
+
`;else if(Q.type==="function"){let H=X?.[Q.name];if(K+=`## ${Q.name}
|
|
377
391
|
|
|
378
392
|
`,K+=`\`\`\`tjs
|
|
379
393
|
${Q.signature}
|
|
@@ -384,8 +398,8 @@ ${Q.signature}
|
|
|
384
398
|
`}K+=`
|
|
385
399
|
`}if(H?.returns)K+=`**Returns:** ${H.returns.kind||"void"}
|
|
386
400
|
|
|
387
|
-
`}return K.trim()||"*No documentation available*"}import{s as q,validate as m4,filter as B7}from"tosijs-schema";var $4=Symbol.for("tjs.equals");function Q4(Z,$){if(Z!==null&&typeof Z==="object"&&typeof Z[$4]==="function")return Z[$4]($);if($!==null&&typeof $==="object"&&typeof $[$4]==="function")return $[$4](Z);if(Z!==null&&typeof Z==="object"&&typeof Z.Equals==="function")return Z.Equals($);if($!==null&&typeof $==="object"&&typeof $.Equals==="function")return $.Equals(Z);if(Z===$)return!0;if((Z===null||Z===void 0)&&($===null||$===void 0))return!0;if(Z===null||Z===void 0||$===null||$===void 0)return!1;if(typeof Z!==typeof $)return!1;if(typeof Z!=="object")return!1;if(Array.isArray(Z)&&Array.isArray($)){if(Z.length!==$.length)return!1;return Z.every((Q,H)=>Q4(Q,$[H]))}if(Array.isArray(Z)!==Array.isArray($))return!1;let X=Object.keys(Z),K=Object.keys($);if(X.length!==K.length)return!1;return X.every((Q)=>Q4(Z[Q],$[Q]))}class $1{$error=!0;message;op;cause;constructor(Z,$,X){this.message=Z,this.op=$,this.cause=X}toString(){return`AgentError[${this.op}]: ${this.message}`}toJSON(){return{$error:!0,message:this.message,op:this.op}}}function mK(Z){return Z instanceof $1||Z&&Z.$error===!0}var m1=new Map,Y5=3600000,G5=102400,l4="proc_";function i4(Z){return typeof Z==="string"&&Z.startsWith(l4)}function p4(Z){let $=m1.get(Z);if(!$)throw Error(`Procedure not found: ${Z}`);if(Date.now()>$.expiresAt)throw m1.delete(Z),Error(`Procedure expired: ${Z}`);return $.ast}function z5(){if(typeof crypto<"u"&&crypto.randomUUID)return l4+crypto.randomUUID();return l4+Math.random().toString(36).slice(2)+Date.now().toString(36)}var A7=new Set(["__proto__","constructor","prototype"]);function L7(Z){if(A7.has(Z))throw Error(`Security Error: Access to '${Z}' is forbidden`)}var W5=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function J5(Z){try{let $=new URL(Z);if($.protocol!=="http:"&&$.protocol!=="https:")return!0;let X=$.hostname.toLowerCase();if(W5.has(X))return!0;if(X.endsWith(".internal")||X.endsWith(".local"))return!0;if(X==="169.254.169.254")return!0;if(/^10\./.test(X)||/^192\.168\./.test(X)||/^172\.(1[6-9]|2\d|3[01])\./.test(X))return!0;return!1}catch{return!0}}function _5(Z){if(/\([^)]*[+*][^)]*\)[+*]/.test(Z))return!0;if(/\(([^|)]+)\|\1\)[+*]/.test(Z))return!0;if(/\(\.\*\)\+/.test(Z))return!0;if(/\(\.\+\)\+/.test(Z))return!0;if(/\(\[.*\]\+\)\+/.test(Z))return!0;return!1}function M1(Z){return{...Z,state:Object.create(Z.state)}}function L5(Z,$){let X={},K=new Set([...Object.keys(Z),...Object.keys($)]);for(let Q of K){let H=Z[Q],Y=$[Q];if(Y!==H)X[Q]=Y}return X}function O(Z,$){if(Z&&typeof Z==="object"&&Z.$kind==="arg")return $.args[Z.path];if(Z&&typeof Z==="object"&&Z.$expr)return m(Z,$);if(typeof Z==="string"){if(Z.startsWith("args.")&&!("args"in $.state))return $.args[Z.replace("args.","")];if(Z.includes(".")){let X=Z.split(".");for(let Q of X)if(A7.has(Q))throw Error(`Security Error: Access to '${Q}' is forbidden`);let K=$.state[X[0]];if(K!==void 0){for(let Q=1;Q<X.length;Q++)K=K?.[X[Q]];return K}}if(Z in $.state)return $.state[Z];return Z}if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Z.constructor===Object){let X={};for(let K of Object.keys(Z))X[K]=O(Z[K],$);return X}if(Array.isArray(Z))return Z.map((X)=>O(X,$));return Z}function k1(Z,$,X){return new Proxy($,{get(K,Q){if(Q in K)return K[Q];let H=X?.[Q];if(H)throw Error(`${Z}.${Q} is not available. ${H}`);throw Error(`${Z}.${Q} is not supported in AsyncJS. Check docs for available ${Z} methods.`)}})}function d1(Z){if(Z===null)return{type:"null"};if(Z===void 0)return{};if(typeof Z==="object"&&Z!==null&&"type"in Z&&typeof Z.type==="string")return Z;if(typeof Z==="object"&&Z!==null&&"schema"in Z&&typeof Z.schema==="object")return Z.schema;let $=typeof Z;if($==="string")return{type:"string"};if($==="number")return Number.isInteger(Z)?{type:"integer"}:{type:"number"};if($==="boolean")return{type:"boolean"};if(Array.isArray(Z)){if(Z.length===0)return{type:"array"};return{type:"array",items:d1(Z[0])}}if($==="object"){let X={},K=[];for(let[Q,H]of Object.entries(Z))X[Q]=d1(H),K.push(Q);return{type:"object",properties:X,required:K}}return{}}var R1={Math:k1("Math",{PI:Math.PI,E:Math.E,LN2:Math.LN2,LN10:Math.LN10,LOG2E:Math.LOG2E,LOG10E:Math.LOG10E,SQRT2:Math.SQRT2,SQRT1_2:Math.SQRT1_2,abs:Math.abs,ceil:Math.ceil,floor:Math.floor,round:Math.round,trunc:Math.trunc,sign:Math.sign,sqrt:Math.sqrt,cbrt:Math.cbrt,pow:Math.pow,exp:Math.exp,expm1:Math.expm1,log:Math.log,log2:Math.log2,log10:Math.log10,log1p:Math.log1p,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:Math.atan2,sinh:Math.sinh,cosh:Math.cosh,tanh:Math.tanh,asinh:Math.asinh,acosh:Math.acosh,atanh:Math.atanh,hypot:Math.hypot,min:Math.min,max:Math.max,clz32:Math.clz32,imul:Math.imul,fround:Math.fround,random:()=>{if(typeof crypto<"u"&&crypto.getRandomValues){let Z=new Uint32Array(1);return crypto.getRandomValues(Z),Z[0]/4294967296}return Math.random()}}),JSON:k1("JSON",{parse:(Z)=>JSON.parse(Z),stringify:(Z,$,X)=>JSON.stringify(Z,$,X)}),console:k1("console",{log:(...Z)=>{return},warn:(...Z)=>{return},error:(...Z)=>{return},info:(...Z)=>{return}},{table:"Use console.log with JSON.stringify for structured data.",dir:"Use console.log instead.",trace:"Stack traces are not available in AsyncJS."}),Array:k1("Array",{isArray:(Z)=>Array.isArray(Z),from:(Z,$,X)=>Array.from(Z,$,X),of:(...Z)=>Array.of(...Z)},{prototype:"Prototype access is not allowed."}),Object:k1("Object",{keys:(Z)=>Object.keys(Z),values:(Z)=>Object.values(Z),entries:(Z)=>Object.entries(Z),fromEntries:(Z)=>Object.fromEntries(Z),assign:(Z,...$)=>Object.assign({},Z,...$),hasOwn:(Z,$)=>Object.hasOwn(Z,$)},{prototype:"Prototype access is not allowed.",create:"Use object literals instead.",defineProperty:"Property descriptors are not supported.",getPrototypeOf:"Prototype access is not allowed.",setPrototypeOf:"Prototype modification is not allowed."}),String:k1("String",{fromCharCode:(...Z)=>String.fromCharCode(...Z),fromCodePoint:(...Z)=>String.fromCodePoint(...Z)}),Number:k1("Number",{isNaN:Number.isNaN,isFinite:Number.isFinite,isInteger:Number.isInteger,isSafeInteger:Number.isSafeInteger,parseFloat,parseInt,MAX_VALUE:Number.MAX_VALUE,MIN_VALUE:Number.MIN_VALUE,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,MIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,POSITIVE_INFINITY:Number.POSITIVE_INFINITY,NEGATIVE_INFINITY:Number.NEGATIVE_INFINITY,NaN:Number.NaN,EPSILON:Number.EPSILON}),parseInt,parseFloat,isNaN,isFinite,encodeURI,decodeURI,encodeURIComponent,decodeURIComponent,undefined:void 0,null:null,NaN:NaN,Infinity:1/0,filter:(Z,$)=>{let X=d1($),K=B7(Z,X);if(K instanceof Error)throw K;return K},Schema:{...q,response:(Z,$)=>{let X=$?.schema!=null?$.schema:d1($);return{type:"json_schema",json_schema:{name:Z,strict:!0,schema:X}}},fromExample:(Z)=>d1(Z),isValid:(Z,$)=>{if($?.schema!=null)return m4(Z,$);return m4(Z,d1($))}},Set:(Z=[])=>{let $=[...new globalThis.Set(Z)];return{add(X){if(!$.includes(X))$.push(X);return this},remove(X){let K=$.indexOf(X);if(K!==-1)$.splice(K,1);return this},clear(){return $.length=0,this},has(X){return $.includes(X)},get size(){return $.length},toArray(){return[...$]},union(X){let K=X?.toArray?.()??X??[];return R1.Set([...$,...K])},intersection(X){let K=X?.toArray?.()??X??[];return R1.Set($.filter((Q)=>K.includes(Q)))},diff(X){let K=X?.toArray?.()??X??[];return R1.Set($.filter((Q)=>!K.includes(Q)))},forEach(X){$.forEach(X)},map(X){return R1.Set($.map(X))},filter(X){return R1.Set($.filter(X))},toJSON(){return[...$]}}},Date:(()=>{let Z=(X)=>({get value(){return X.toISOString()},get timestamp(){return X.getTime()},get year(){return X.getFullYear()},get month(){return X.getMonth()+1},get day(){return X.getDate()},get hours(){return X.getHours()},get minutes(){return X.getMinutes()},get seconds(){return X.getSeconds()},get dayOfWeek(){return X.getDay()},add({years:K=0,months:Q=0,days:H=0,hours:Y=0,minutes:G=0,seconds:z=0,ms:W=0}={}){let J=new globalThis.Date(X.getTime());if(K)J.setFullYear(J.getFullYear()+K);if(Q)J.setMonth(J.getMonth()+Q);if(H)J.setDate(J.getDate()+H);if(Y)J.setHours(J.getHours()+Y);if(G)J.setMinutes(J.getMinutes()+G);if(z)J.setSeconds(J.getSeconds()+z);if(W)J.setMilliseconds(J.getMilliseconds()+W);return Z(J)},diff(K,Q="ms"){let H=typeof K==="object"&&K.timestamp?K.timestamp:new globalThis.Date(K).getTime(),Y=X.getTime()-H;switch(Q){case"seconds":return Y/1000;case"minutes":return Y/60000;case"hours":return Y/3600000;case"days":return Y/86400000;default:return Y}},format(K="ISO"){if(K==="ISO")return X.toISOString();if(K==="date")return X.toISOString().split("T")[0];if(K==="time")return X.toISOString().split("T")[1].split(".")[0];return K.replace("YYYY",String(X.getFullYear())).replace("MM",String(X.getMonth()+1).padStart(2,"0")).replace("DD",String(X.getDate()).padStart(2,"0")).replace("HH",String(X.getHours()).padStart(2,"0")).replace("mm",String(X.getMinutes()).padStart(2,"0")).replace("ss",String(X.getSeconds()).padStart(2,"0"))},isBefore(K){let Q=typeof K==="object"&&K.timestamp?K.timestamp:new globalThis.Date(K).getTime();return X.getTime()<Q},isAfter(K){let Q=typeof K==="object"&&K.timestamp?K.timestamp:new globalThis.Date(K).getTime();return X.getTime()>Q},toString(){return X.toISOString()},toJSON(){return X.toISOString()}}),$=(X)=>{let K=X!==void 0?new globalThis.Date(X):new globalThis.Date;if(isNaN(K.getTime()))throw Error(`Invalid date: ${X}`);return Z(K)};return $.now=()=>globalThis.Date.now(),$.parse=(X)=>Z(new globalThis.Date(X)),$})()},K4={RegExp:"RegExp is not available. Use string methods or the regexMatch atom.",Promise:"Promise is not needed. All operations are implicitly async.",Map:"Map is not available. Use plain objects instead.",WeakSet:"WeakSet is not available.",WeakMap:"WeakMap is not available.",Symbol:"Symbol is not available.",Proxy:"Proxy is not available.",Reflect:"Reflect is not available.",Function:"Function constructor is not available. Define functions normally.",eval:"eval is not available. Code is compiled, not evaluated.",setTimeout:"setTimeout is not available. Use the delay atom.",setInterval:"setInterval is not available. Use while loops with delay.",fetch:"fetch is not available. Use the httpFetch atom.",require:"require is not available. Atoms must be registered with the VM.",import:"import is not available. Atoms must be registered with the VM.",process:"process is not available. AsyncJS runs in a sandboxed environment.",window:"window is not available. AsyncJS runs in a sandboxed environment.",document:"document is not available. AsyncJS runs in a sandboxed environment.",global:"global is not available. AsyncJS runs in a sandboxed environment.",globalThis:"globalThis is not available. Use builtins directly."},U5=0.01,U7=0.0001,q7=0.001,q5=new Set(["concat","slice","map","filter","flatMap","flat","toReversed","toSorted","toSpliced","repeat","padStart","padEnd","split","join","replace","replaceAll","substring","substr","trim","trimStart","trimEnd","toLowerCase","toUpperCase","match","matchAll","parse","stringify"]);function m(Z,$){if(Z===null||Z===void 0)return Z;if(typeof Z!=="object"||!("$expr"in Z))return Z;if($.fuel){if($.fuel.current-=U5,$.fuel.current<=0)throw Error("Out of Fuel")}switch(Z.$expr){case"literal":return Z.value;case"ident":{if(Z.name in $.state)return $.state[Z.name];if(Z.name in $.args)return $.args[Z.name];if(Z.name in R1)return R1[Z.name];if(Z.name in K4)throw Error(K4[Z.name]);return}case"member":{let X=m(Z.object,$);if(Z.optional&&(X===null||X===void 0))return;let K=Z.property;return L7(K),X?.[K]}case"binary":{let X=m(Z.left,$),K=m(Z.right,$);switch(Z.op){case"+":{let Q=X+K;if(typeof Q==="string"&&$.fuel){if($.fuel.current-=Q.length*U7,$.fuel.current<=0){$.error=new $1("Out of Fuel","expr.concat");return}}return Q}case"-":return X-K;case"*":return X*K;case"/":return X/K;case"%":return X%K;case"**":return X**K;case">":return X>K;case"<":return X<K;case">=":return X>=K;case"<=":return X<=K;case"==":return Q4(X,K);case"!=":return!Q4(X,K);case"===":return X===K;case"!==":return X!==K;default:throw Error(`Unknown binary operator: ${Z.op}`)}}case"unary":{let X=m(Z.argument,$);switch(Z.op){case"!":return!X;case"-":return-X;case"+":return+X;case"typeof":return typeof X;default:throw Error(`Unknown unary operator: ${Z.op}`)}}case"logical":{let X=m(Z.left,$);if(Z.op==="&&")return X?m(Z.right,$):X;else if(Z.op==="??")return X??m(Z.right,$);else return X?X:m(Z.right,$)}case"conditional":return m(Z.test,$)?m(Z.consequent,$):m(Z.alternate,$);case"array":return Z.elements.map((X)=>m(X,$));case"object":{let X={};for(let K of Z.properties)X[K.key]=m(K.value,$);return X}case"call":{if(Z.callee==="Error"){let K=Z.arguments.map((H)=>m(H,$)),Q=typeof K[0]==="string"?K[0]:"Error";$.error=new $1(Q,"Error");return}if(Z.callee in R1){let K=R1[Z.callee];if(typeof K==="function"){let Q=Z.arguments.map((H)=>m(H,$));return K(...Q)}}if(!$.resolver(Z.callee)){if(Z.callee in K4)throw Error(K4[Z.callee]);throw Error(`Unknown function: ${Z.callee}`)}throw Error(`Atom calls in expressions not yet supported: ${Z.callee}`)}case"methodCall":{let X=m(Z.object,$);if(Z.optional&&(X===null||X===void 0))return;let K=Z.method;if(L7(K),X===null||X===void 0)throw Error(`Cannot call method '${K}' on ${X}`);let Q=X[K];if(typeof Q!=="function")throw Error(`'${K}' is not a function`);let H=Z.arguments.map((G)=>m(G,$)),Y=Q.apply(X,H);if($.fuel&&q5.has(K)){let G=0;if(typeof Y==="string")G=Y.length*U7;else if(Array.isArray(Y))G=Y.length*q7;else if(typeof Y==="object"&&Y!==null)G=Object.keys(Y).length*q7;if($.fuel.current-=G,$.fuel.current<=0){$.error=new $1("Out of Fuel",`expr.${K}`);return}}return Y}default:throw Error(`Unknown expression type: ${Z.$expr}`)}}function S(Z,$,X,K,Q={}){let{docs:H="",timeoutMs:Y=1000,cost:G=1}=typeof Q==="string"?{docs:Q}:Q;return{op:Z,inputSchema:$,outputSchema:X,exec:async(W,J)=>{let{op:L,result:_,...U}=W;if(J.error)return;let I=J.trace?{...J.state}:null,w=J.fuel.current,j,B;try{let P=J.costOverrides?.[Z],A=P!==void 0?P:G,R=typeof A==="function"?A(U,J):A;if((J.fuel.current-=R)<=0){J.error=new $1("Out of Fuel",Z);return}let F,C=async()=>K(W,J);if(j=Y>0?await Promise.race([C(),new Promise((V,N)=>{F=setTimeout(()=>N(Error(`Atom '${Z}' timed out`)),Y)})]).finally(()=>clearTimeout(F)):await C(),W.result){if(J.consts.has(W.result))throw Error(`Cannot reassign const variable '${W.result}'`);if(j!==void 0&&X&&!m4(j,X)){J.error=new $1(`Output validation failed for '${Z}'`,Z);return}if(J.state[W.result]=j,W.resultConst)J.consts.add(W.result)}}catch(P){B=P.message||String(P),J.error=new $1(B,Z,P)}finally{if(J.trace&&I){let P=L5(I,J.state);J.trace.push({op:Z,input:U,stateDiff:P,result:j,error:B,fuelBefore:w,fuelAfter:J.fuel.current,timestamp:new Date().toISOString()})}}},docs:H,timeoutMs:Y,cost:G,create:(W)=>({op:Z,...W})}}var H1=S("seq",q.object({steps:q.array(q.any)}),void 0,async({steps:Z},$)=>{for(let X of Z){if($.output!==void 0)return;if($.error)return;let K=$.resolver(X.op);if(!K)throw Error(`Unknown Atom: ${X.op}`);await K.exec(X,$)}},{docs:"Sequence",timeoutMs:0,cost:0.1}),D5=S("if",q.object({condition:q.any,then:q.array(q.any),else:q.array(q.any).optional}),void 0,async(Z,$)=>{if(m(Z.condition,$))await H1.exec({op:"seq",steps:Z.then},$);else if(Z.else)await H1.exec({op:"seq",steps:Z.else},$)},{docs:"If/Else",timeoutMs:0,cost:0.1}),I5=S("while",q.object({condition:q.any,body:q.array(q.any)}),void 0,async(Z,$)=>{while(m(Z.condition,$)){if($.signal?.aborted)throw Error("Execution aborted");if(($.fuel.current-=0.1)<=0)throw Error("Out of Fuel");if(await H1.exec({op:"seq",steps:Z.body},$),$.output!==void 0)return}},{docs:"While Loop",timeoutMs:0,cost:0.1}),R5=S("return",void 0,q.any,async(Z,$)=>{if($.error)return $.output=$.error,$.error;if("value"in Z){let K=O(Z.value,$);return $.output=K,K}let X={};if(Z.schema?.properties){for(let K of Object.keys(Z.schema.properties))X[K]=$.state[K];if(Z.filter!==!1){let K=B7(X,Z.schema);if(!(K instanceof Error))X=K}}return $.output=X,X},{docs:"Return",cost:0.1}),B5=S("try",q.object({try:q.array(q.any),catch:q.array(q.any).optional,catchParam:q.string.optional}),void 0,async(Z,$)=>{if(await H1.exec({op:"seq",steps:Z.try},$),$.error&&Z.catch){let X=Z.catchParam||"error";$.state[X]=$.error.message,$.state.errorOp=$.error.op,$.error=void 0,await H1.exec({op:"seq",steps:Z.catch},$)}},{docs:"Try/Catch",timeoutMs:0,cost:0.1}),A5=S("Error",q.object({args:q.array(q.any).optional}),void 0,async(Z,$)=>{let X=Z.args?.[0]??"Error";$.error=new $1(String(X),"Error")},{docs:"Trigger error flow",cost:0.1}),M5=S("varSet",q.object({key:q.string,value:q.any}),void 0,async({key:Z,value:$},X)=>{if(X.consts.has(Z))throw Error(`Cannot reassign const variable '${Z}'`);X.state[Z]=O($,X)},{docs:"Set Variable",cost:0.1}),w5=S("constSet",q.object({key:q.string,value:q.any}),void 0,async({key:Z,value:$},X)=>{if(X.consts.has(Z))throw Error(`Cannot reassign const variable '${Z}'`);if(Z in X.state)throw Error(`Cannot redeclare variable '${Z}' as const`);X.state[Z]=O($,X),X.consts.add(Z)},{docs:"Set Const Variable (immutable)",cost:0.1}),F5=S("varGet",q.object({key:q.string}),q.any,async({key:Z},$)=>{return O(Z,$)},{docs:"Get Variable",cost:0.1}),j5=S("varsImport",q.object({keys:q.union([q.array(q.string),q.record(q.string)])}),void 0,async({keys:Z},$)=>{if(Array.isArray(Z))for(let X of Z)$.state[X]=O({$kind:"arg",path:X},$);else for(let[X,K]of Object.entries(Z))$.state[X]=O({$kind:"arg",path:K},$)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:0.2}),P5=S("varsLet",q.record(q.any),void 0,async(Z,$)=>{for(let X of Object.keys(Z)){if(X==="op"||X==="result")continue;$.state[X]=O(Z[X],$)}},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:0.1}),V5=S("varsExport",q.object({keys:q.union([q.array(q.string),q.record(q.string)])}),q.record(q.any),async({keys:Z},$)=>{let X={};if(Array.isArray(Z))for(let K of Z)X[K]=O(K,$);else for(let[K,Q]of Object.entries(Z))X[K]=O(Q,$);return X},{docs:"Export variables from the current scope, with optional renaming.",cost:0.2}),C5=S("scope",q.object({steps:q.array(q.any)}),void 0,async({steps:Z},$)=>{let X=M1($);if(await H1.exec({op:"seq",steps:Z},X),X.output!==void 0)$.output=X.output},{docs:"Create new scope",timeoutMs:0,cost:0.1}),O5=S("map",q.object({items:q.array(q.any),as:q.string,steps:q.array(q.any)}),q.array(q.any),async({items:Z,as:$,steps:X},K)=>{let Q=[],H=O(Z,K);if(!Array.isArray(H))throw Error("map: items is not an array");for(let Y of H){if(K.signal?.aborted)throw Error("Execution aborted");let G=M1(K);G.state[$]=Y,await H1.exec({op:"seq",steps:X},G),Q.push(G.state.result??null)}return Q},{docs:"Map Array",timeoutMs:0,cost:1}),N5=S("filter",q.object({items:q.array(q.any),as:q.string,condition:q.any}),q.array(q.any),async({items:Z,as:$,condition:X},K)=>{let Q=[],H=O(Z,K);if(!Array.isArray(H))throw Error("filter: items is not an array");for(let Y of H){if(K.signal?.aborted)throw Error("Execution aborted");let G=M1(K);if(G.state[$]=Y,m(X,G))Q.push(Y)}return Q},{docs:"Filter Array",timeoutMs:0,cost:1}),E5=S("reduce",q.object({items:q.array(q.any),as:q.string,accumulator:q.string,initial:q.any,steps:q.array(q.any)}),q.any,async({items:Z,as:$,accumulator:X,initial:K,steps:Q},H)=>{let Y=O(Z,H),G=O(K,H);if(!Array.isArray(Y))throw Error("reduce: items is not an array");let z=G;for(let W of Y){if(H.signal?.aborted)throw Error("Execution aborted");let J=M1(H);J.state[$]=W,J.state[X]=z,await H1.exec({op:"seq",steps:Q},J),z=J.state.result??z}return z},{docs:"Reduce Array",timeoutMs:0,cost:1}),T5=S("find",q.object({items:q.array(q.any),as:q.string,condition:q.any}),q.any,async({items:Z,as:$,condition:X},K)=>{let Q=O(Z,K);if(!Array.isArray(Q))throw Error("find: items is not an array");for(let H of Q){if(K.signal?.aborted)throw Error("Execution aborted");let Y=M1(K);if(Y.state[$]=H,m(X,Y))return H}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),S5=S("push",q.object({list:q.array(q.any),item:q.any}),q.array(q.any),async({list:Z,item:$},X)=>{let K=O(Z,X),Q=O($,X);if(Array.isArray(K))K.push(Q);return K},{docs:"Push to Array",cost:1}),k5=S("len",q.object({list:q.any}),q.number,async({list:Z},$)=>{let X=O(Z,$);return Array.isArray(X)||typeof X==="string"?X.length:0},{docs:"Length",cost:1}),g5=S("split",q.object({str:q.string,sep:q.string}),q.array(q.string),async({str:Z,sep:$},X)=>O(Z,X).split(O($,X)),{docs:"Split String",cost:1}),b5=S("join",q.object({list:q.array(q.string),sep:q.string}),q.string,async({list:Z,sep:$},X)=>O(Z,X).join(O($,X)),{docs:"Join String",cost:1}),v5=S("template",q.object({tmpl:q.string,vars:q.record(q.any)}),q.string,async({tmpl:Z,vars:$},X)=>{return O(Z,X).replace(/\{\{(\w+)\}\}/g,(Q,H)=>String(O($[H],X)??""))},{docs:"String Template",cost:1}),f5=S("regexMatch",q.object({pattern:q.string,value:q.any}),q.boolean,async({pattern:Z,value:$},X)=>{if(_5(Z))throw Error(`Suspicious regex pattern rejected (potential ReDoS): ${Z}`);let K=O($,X);return new RegExp(Z).test(K)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),y5=S("pick",q.object({obj:q.record(q.any),keys:q.array(q.string)}),q.record(q.any),async({obj:Z,keys:$},X)=>{let K=O(Z,X),Q=O($,X),H={};if(K&&Array.isArray(Q))Q.forEach((Y)=>H[Y]=K[Y]);return H},{docs:"Pick Keys",cost:1}),h5=S("omit",q.object({obj:q.record(q.any),keys:q.array(q.string)}),q.record(q.any),async({obj:Z,keys:$},X)=>{let K=O(Z,X),Q=new Set(O($,X)),H={};if(K)Object.keys(K).forEach((Y)=>{if(!Q.has(Y))H[Y]=K[Y]});return H},{docs:"Omit Keys",cost:1}),x5=S("merge",q.object({a:q.record(q.any),b:q.record(q.any)}),q.record(q.any),async({a:Z,b:$},X)=>({...O(Z,X),...O($,X)}),{docs:"Merge Objects",cost:1}),u5=S("keys",q.object({obj:q.record(q.any)}),q.array(q.string),async({obj:Z},$)=>Object.keys(O(Z,$)??{}),{docs:"Object Keys",cost:1}),D7=10,I7="X-Agent-Depth";function d5(Z,$){try{let K=new URL(Z).hostname.toLowerCase();for(let Q of $){let H=Q.toLowerCase();if(H.startsWith("*.")){let Y=H.slice(1);if(K.endsWith(Y)||K===H.slice(2))return!0}else if(K===H)return!0}return!1}catch{return!1}}var m5=S("httpFetch",q.object({url:q.string,method:q.string.optional,headers:q.record(q.string).optional,body:q.any.optional,responseType:q.string.optional}),q.any,async(Z,$)=>{let X=O(Z.url,$),K=O(Z.method,$),Q=O(Z.headers,$)||{},H=O(Z.body,$),Y=O(Z.responseType,$),G=$.context?.requestDepth??0;if(G>=D7)throw Error(`Agent request depth exceeded (max ${D7}). This prevents recursive agent loops.`);if($.capabilities.fetch)return $.capabilities.fetch(X,{method:K,headers:{...Q,[I7]:String(G+1)},body:H,signal:$.signal,responseType:Y});let z=$.context?.allowedFetchDomains;if(z){if(!d5(X,z))throw Error(`Fetch blocked: domain not in allowlist. Allowed: ${z.join(", ")}`)}else{if(J5(X))throw Error("Blocked URL: private/internal addresses not allowed in default fetch");try{let J=new URL(X).hostname.toLowerCase();if(J!=="localhost"&&J!=="127.0.0.1"&&J!=="[::1]")throw Error("Fetch blocked: no allowedFetchDomains configured. Set ctx.context.allowedFetchDomains or provide a custom fetch capability.")}catch(W){if(W.message.includes("allowedFetchDomains"))throw W;throw Error(`Invalid URL: ${X}`)}}if(typeof globalThis.fetch==="function"){let W=await globalThis.fetch(X,{method:K,headers:{...Q,[I7]:String(G+1)},body:H?JSON.stringify(H):void 0,signal:$.signal});if(Y==="dataUrl"){let L=await W.arrayBuffer(),_=new Uint8Array(L),U="";for(let j=0;j<_.length;j++)U+=String.fromCharCode(_[j]);let I=btoa(U);return`data:${W.headers.get("content-type")||"application/octet-stream"};base64,${I}`}let J=W.headers.get("content-type");if(Y==="json"||J&&J.includes("application/json"))return W.json();return W.text()}throw Error("Capability 'fetch' missing and no global fetch available")},{docs:"HTTP Fetch",timeoutMs:30000,cost:5}),l5=S("storeGet",q.object({key:q.string}),q.any,async({key:Z},$)=>{let X=O(Z,$);return $.capabilities.store?.get(X)},{docs:"Store Get",cost:5}),i5=S("storeSet",q.object({key:q.string,value:q.any}),void 0,async({key:Z,value:$},X)=>{let K=O(Z,X),Q=O($,X);return X.capabilities.store?.set(K,Q)},{docs:"Store Set",cost:5}),p5=S("storeQuery",q.object({query:q.any}),q.array(q.any),async({query:Z},$)=>$.capabilities.store?.query?.(O(Z,$))??[],{docs:"Store Query",cost:5}),n5=S("storeVectorSearch",q.object({collection:q.string.optional,vector:q.array(q.number),k:q.number.optional}),q.array(q.any),async({collection:Z,vector:$,k:X},K)=>K.capabilities.store?.vectorSearch?.(O(Z,K),O($,K),O(X,K))??[],{docs:"Vector Search",cost:(Z,$)=>5+(O(Z.k,$)??5)}),c5=S("llmPredict",q.object({prompt:q.string,options:q.any.optional}),q.string,async({prompt:Z,options:$},X)=>{if(!X.capabilities.llm?.predict)throw Error("Capability 'llm.predict' missing");return X.capabilities.llm.predict(O(Z,X),O($,X))},{docs:"LLM Predict",timeoutMs:120000,cost:100}),o5=S("agentRun",q.object({agentId:q.any,input:q.any}),q.any,async({agentId:Z,input:$},X)=>{let K=O(Z,X),Q=O($,X),H=Q;if(Q&&typeof Q==="object"&&!Array.isArray(Q)){H={};for(let G in Q)H[G]=O(Q[G],X)}if(i4(K)){let G=p4(K),z={...X,args:H,state:{},consts:new Set,output:void 0,error:void 0},W=X.resolver("seq");if(!W)throw Error("seq atom not found");if(await W.exec(G,z),z.error)throw Error(z.error.message||"Sub-agent failed");return z.output}if(K&&typeof K==="object"&&"op"in K){let G={...X,args:H,state:{},consts:new Set,output:void 0,error:void 0},z=X.resolver("seq");if(!z)throw Error("seq atom not found");if(await z.exec(K,G),G.error)throw Error(G.error.message||"Sub-agent failed");return G.output}if(!X.capabilities.agent?.run)throw Error("Capability 'agent.run' missing");let Y=await X.capabilities.agent.run(K,H);if(Y&&typeof Y==="object"&&"fuelUsed"in Y&&typeof Y.fuelUsed==="number"){if(Y.error)throw Error(Y.error.message||"Sub-agent failed");return Y.result}return Y},{docs:"Run Sub-Agent (accepts procedure token, AST, or agent ID)",cost:1}),s5=S("transpileCode",q.object({code:q.string}),q.any,async({code:Z},$)=>{if(!$.capabilities.code?.transpile)throw Error("Capability 'code.transpile' missing. Enable code transpilation by providing the code capability.");let X=O(Z,$);try{return $.capabilities.code.transpile(X)}catch(K){throw Error(`Code transpilation failed: ${K.message}`)}},{docs:"Transpile AsyncJS code to AST",cost:1}),R7=10,a5=S("runCode",q.object({code:q.string,args:q.record(q.any).optional}),q.any,async({code:Z,args:$},X)=>{let K=X.runCodeDepth??0;if(K>=R7)throw Error(`runCode recursion limit exceeded (max ${R7}). This prevents infinite loops from dynamically generated code calling runCode.`);if(!X.capabilities.code?.transpile)throw Error("Capability 'code.transpile' missing. Enable dynamic code execution by providing the code capability.");let Q=O(Z,X),H=$?O($,X):{},Y;try{Y=X.capabilities.code.transpile(Q)}catch(z){throw Error(`Code transpilation failed: ${z.message}`)}if(Y.op!=="seq")throw Error("Transpiled code must be a seq node");let G=M1(X);if(G.args=H,G.output=void 0,G.runCodeDepth=K+1,await H1.exec(Y,G),G.error){X.error=G.error;return}return G.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),r5=S("jsonParse",q.object({str:q.string}),q.any,async({str:Z},$)=>JSON.parse(O(Z,$)),{docs:"Parse JSON",cost:1}),t5=S("jsonStringify",q.object({value:q.any}),q.string,async({value:Z},$)=>JSON.stringify(O(Z,$)),{docs:"Stringify JSON",cost:1}),e5=S("xmlParse",q.object({str:q.string}),q.any,async({str:Z},$)=>{if(!$.capabilities.xml?.parse)throw Error("Capability 'xml.parse' missing");return $.capabilities.xml.parse(O(Z,$))},{docs:"Parse XML",cost:1}),ZX=S("memoize",q.object({key:q.string.optional,steps:q.array(q.any)}),q.any,async({key:Z,steps:$},X)=>{if(!X.memo)X.memo=new Map;let K=O(Z,X)??await n4.exec({value:$,algorithm:"SHA-256"},X);if(X.memo.has(K))return X.memo.get(K);let Q=M1(X);await H1.exec({op:"seq",steps:$},Q);let H=Q.output??Q.state.result;return X.memo.set(K,H),H},{docs:"Memoize steps result in memory",cost:1}),XX=S("cache",q.object({key:q.string.optional,steps:q.array(q.any),ttlMs:q.number.optional}),q.any,async({key:Z,steps:$,ttlMs:X},K)=>{if(!K.capabilities.store)throw Error("Capability 'store' missing for caching");let H=`cache:${O(Z,K)??await n4.exec({value:$,algorithm:"SHA-256"},K)}`,Y=await K.capabilities.store.get(H);if(Y)if(typeof Y==="object"&&Y._exp){if(Date.now()<Y._exp)return Y.val}else return Y;let G=M1(K);await H1.exec({op:"seq",steps:$},G);let z=G.output??G.state.result,W=Date.now()+(X??86400000);if((K.fuel.current-=5)<=0)throw Error("Out of Fuel");return await K.capabilities.store.set(H,{val:z,_exp:W}),z},{docs:"Cache steps result in store with TTL",cost:5}),$X=S("random",q.object({min:q.number.optional,max:q.number.optional,format:q.string.optional,length:q.number.optional}),q.any,async({min:Z,max:$,format:X,length:K},Q)=>{let H=O(X,Q)??"float",Y=O(K,Q)??10,G=O(Z,Q)??0,z=O($,Q)??1;if(H==="base36"){let U="";if(typeof crypto<"u"&&crypto.getRandomValues){let I=new Uint8Array(Y);crypto.getRandomValues(I);for(let w=0;w<Y;w++)U+="0123456789abcdefghijklmnopqrstuvwxyz"[I[w]%36]}else for(let I=0;I<Y;I++)U+="0123456789abcdefghijklmnopqrstuvwxyz".charAt(Math.floor(Math.random()*36));return U}let W;if(typeof crypto<"u"&&crypto.getRandomValues){let _=new Uint32Array(1);crypto.getRandomValues(_),W=_[0]/4294967296}else W=Math.random();let J=z-G,L=W*J+G;if(H==="integer")return Math.floor(L);return L},{docs:"Generate Random",cost:1}),KX=S("uuid",void 0,q.string,async()=>{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();if(typeof crypto<"u"&&crypto.getRandomValues){let Z=new Uint8Array(16);crypto.getRandomValues(Z),Z[6]=Z[6]&15|64,Z[8]=Z[8]&63|128;let $=Array.from(Z,(X)=>X.toString(16).padStart(2,"0")).join("");return`${$.slice(0,8)}-${$.slice(8,12)}-${$.slice(12,16)}-${$.slice(16,20)}-${$.slice(20)}`}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(Z)=>{let $=Math.random()*16|0;return(Z==="x"?$:$&3|8).toString(16)})},{docs:"Generate UUID",cost:1}),n4=S("hash",q.object({value:q.any,algorithm:q.string.optional}),q.string,async({value:Z,algorithm:$},X)=>{let K=typeof Z==="string"?Z:JSON.stringify(O(Z,X)),Q=O($,X)||"SHA-256";if(typeof crypto<"u"&&crypto.subtle){let G=new TextEncoder().encode(K),z=await crypto.subtle.digest(Q,G);return Array.from(new Uint8Array(z)).map((J)=>J.toString(16).padStart(2,"0")).join("")}let H=0;for(let Y=0;Y<K.length;Y++){let G=K.charCodeAt(Y);H=(H<<5)-H+G,H|=0}return String(H)},{docs:"Hash a value",cost:1}),QX=S("consoleLog",q.object({message:q.any}),void 0,async({message:Z},$)=>{let X=O(Z,$);if($.trace)$.trace.push({op:"console.log",input:{message:X},stateDiff:{},result:X,fuelBefore:$.fuel.current,fuelAfter:$.fuel.current,timestamp:new Date().toISOString()})},{docs:"Log to trace",cost:0.1}),HX=S("consoleWarn",q.object({message:q.any}),void 0,async({message:Z},$)=>{let X=O(Z,$),K=typeof X==="string"?X:JSON.stringify(X);if(!$.warnings)$.warnings=[];if($.warnings.push(K),$.trace)$.trace.push({op:"console.warn",input:{message:X},stateDiff:{},result:X,fuelBefore:$.fuel.current,fuelAfter:$.fuel.current,timestamp:new Date().toISOString()})},{docs:"Add warning",cost:0.1}),YX=S("consoleError",q.object({message:q.any}),void 0,async({message:Z},$)=>{let X=O(Z,$),K=typeof X==="string"?X:JSON.stringify(X);$.error=new $1(K,"console.error")},{docs:"Emit error and stop",cost:0.1}),GX=S("storeProcedure",q.object({ast:q.any,ttl:q.number.optional,maxSize:q.number.optional}),q.string,async({ast:Z,ttl:$,maxSize:X},K)=>{let Q=O(Z,K),H=$?O($,K):Y5,Y=X?O(X,K):G5;if(!Q||typeof Q!=="object"||!Q.op)throw Error('Invalid AST: must be an object with an "op" property');let G=JSON.stringify(Q);if(G.length>Y)throw Error(`AST too large: ${G.length} bytes exceeds limit of ${Y} bytes. Consider reducing AST size or using a shorter TTL.`);let z=z5(),W=Date.now();return m1.set(z,{ast:Q,createdAt:W,expiresAt:W+H}),z},{docs:"Store an AST and return a token for later execution",cost:1}),zX=S("releaseProcedure",q.object({token:q.string}),q.boolean,async({token:Z},$)=>{let X=O(Z,$);return m1.delete(X)},{docs:"Release a stored procedure by token",cost:0.1}),WX=S("clearExpiredProcedures",void 0,q.number,async()=>{let Z=Date.now(),$=0;for(let[X,K]of m1)if(Z>K.expiresAt)m1.delete(X),$++;return $},{docs:"Clear all expired procedures and return count",cost:0.5}),H4={seq:H1,if:D5,while:I5,return:R5,try:B5,Error:A5,varSet:M5,constSet:w5,varGet:F5,varsImport:j5,varsLet:P5,varsExport:V5,scope:C5,map:O5,filter:N5,reduce:E5,find:T5,push:S5,len:k5,split:g5,join:b5,template:v5,regexMatch:f5,pick:y5,omit:h5,merge:x5,keys:u5,httpFetch:m5,storeGet:l5,storeSet:i5,storeQuery:p5,storeVectorSearch:n5,llmPredict:c5,agentRun:o5,transpileCode:s5,runCode:a5,jsonParse:r5,jsonStringify:t5,xmlParse:e5,memoize:ZX,cache:XX,random:$X,uuid:KX,hash:n4,consoleLog:QX,consoleWarn:HX,consoleError:YX,storeProcedure:GX,releaseProcedure:zX,clearExpiredProcedures:WX};var JX=new Set(["true","false","null","undefined","and","or","not"]);function _X(Z,$){let X=Z.replace(/"[^"]*"/g,'""').replace(/'[^']*'/g,"''"),K=[],Q=/(?<![.])\b([a-zA-Z_][a-zA-Z0-9_]*)\b/g,H;while((H=Q.exec(X))!==null)K.push(H[1]);let G=[...new Set(K)].filter((z)=>!JX.has(z)&&!(z in $)&&!new RegExp(`\\b${z}\\s*\\(`).test(X));if(G.length>0)console.warn(`[Agent99 Builder] Condition "${Z}" references variables not in vars mapping: ${G.join(", ")}. Add them to vars or use AsyncJS syntax (ajs\`...\`) which handles this automatically.`)}function Y4(Z,$){_X(Z,$);let X=LX(Z),K=P7(X,0,$);if(K.pos<X.length){let Q=X.slice(K.pos).join(" ");throw Error(`Unsupported condition syntax near '${Q}' in: ${Z}
|
|
388
|
-
Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return K.node}function LX(Z){let $=[],X=0;while(X<Z.length){while(X<Z.length&&/\s/.test(Z[X]))X++;if(X>=Z.length)break;if(Z[X]==='"'||Z[X]==="'"){let K=Z[X++],Q="";while(X<Z.length&&Z[X]!==K)if(Z[X]==="\\"&&X+1<Z.length)X++,Q+=Z[X++];else Q+=Z[X++];X++,$.push(JSON.stringify(Q));continue}if(Z.slice(X,X+2).match(/^(&&|\|\||==|!=|>=|<=)$/)){$.push(Z.slice(X,X+2)),X+=2;continue}if("+-*/%><!().?:[]".includes(Z[X])){$.push(Z[X]),X++;continue}if(/\d/.test(Z[X])){let K="";while(X<Z.length&&/[\d.]/.test(Z[X]))K+=Z[X++];$.push(K);continue}if(/[a-zA-Z_]/.test(Z[X])){let K="";while(X<Z.length&&/[a-zA-Z0-9_]/.test(Z[X]))K+=Z[X++];$.push(K);continue}X++}return $}function P7(Z,$,X){return UX(Z,$,X)}function UX(Z,$,X){let{node:K,pos:Q}=M7(Z,$,X);while(Z[Q]==="||"){Q++;let{node:H,pos:Y}=M7(Z,Q,X);K={$expr:"logical",op:"||",left:K,right:H},Q=Y}return{node:K,pos:Q}}function M7(Z,$,X){let{node:K,pos:Q}=w7(Z,$,X);while(Z[Q]==="&&"){Q++;let{node:H,pos:Y}=w7(Z,Q,X);K={$expr:"logical",op:"&&",left:K,right:H},Q=Y}return{node:K,pos:Q}}function w7(Z,$,X){let{node:K,pos:Q}=F7(Z,$,X),H=["==","!=",">","<",">=","<="];while(H.includes(Z[Q])){let Y=Z[Q++],{node:G,pos:z}=F7(Z,Q,X);K={$expr:"binary",op:Y,left:K,right:G},Q=z}return{node:K,pos:Q}}function F7(Z,$,X){let{node:K,pos:Q}=j7(Z,$,X);while(Z[Q]==="+"||Z[Q]==="-"){let H=Z[Q++],{node:Y,pos:G}=j7(Z,Q,X);K={$expr:"binary",op:H,left:K,right:Y},Q=G}return{node:K,pos:Q}}function j7(Z,$,X){let{node:K,pos:Q}=c4(Z,$,X);while(Z[Q]==="*"||Z[Q]==="/"||Z[Q]==="%"){let H=Z[Q++],{node:Y,pos:G}=c4(Z,Q,X);K={$expr:"binary",op:H,left:K,right:Y},Q=G}return{node:K,pos:Q}}function c4(Z,$,X){if(Z[$]==="!"||Z[$]==="-"){let K=Z[$++],{node:Q,pos:H}=c4(Z,$,X);return{node:{$expr:"unary",op:K,argument:Q},pos:H}}return qX(Z,$,X)}function qX(Z,$,X){let K=Z[$];if(K==="("){let{node:Q,pos:H}=P7(Z,$+1,X);return{node:Q,pos:H+1}}if(K&&K.startsWith('"'))return{node:{$expr:"literal",value:JSON.parse(K)},pos:$+1};if(K&&/^\d/.test(K))return{node:{$expr:"literal",value:parseFloat(K)},pos:$+1};if(K==="true")return{node:{$expr:"literal",value:!0},pos:$+1};if(K==="false")return{node:{$expr:"literal",value:!1},pos:$+1};if(K==="null")return{node:{$expr:"literal",value:null},pos:$+1};if(K&&/^[a-zA-Z_]/.test(K)){let Q={$expr:"ident",name:K},H=$+1;while(Z[H]==="."){H++;let Y=Z[H++];Q={$expr:"member",object:Q,property:Y}}return{node:Q,pos:H}}return{node:{$expr:"literal",value:null},pos:$+1}}class a{steps=[];atoms;proxy;constructor(Z){return this.atoms=Z,this.proxy=new Proxy(this,{get:($,X,K)=>{if(X in $)return $[X];if(typeof X==="string"&&X in $.atoms)return(Q)=>{let H=$.atoms[X];return $.add(H.create(Q)),K};return}}),this.proxy}add(Z){return this.steps.push(Z),this.proxy}as(Z){if(this.steps.length===0)throw Error("No step to capture");let $=this.steps[this.steps.length-1];return $.result=Z,this.proxy}step(Z){return this.add(Z)}return(Z){let $=this.atoms.return;if(!$)throw Error("Atom 'return' not found");let X=Z.schema??Z;return this.add($.create({schema:X}))}toJSON(){return{op:"seq",steps:[...this.steps]}}varsImport(Z){return this.add(this.atoms.varsImport.create({keys:Z}))}varsExport(Z){return this.add(this.atoms.varsExport.create({keys:Z}))}if(Z,$,X,K){let Q=new a(this.atoms);X(Q);let H;if(K){let z=new a(this.atoms);K(z),H=z.steps}let Y=Y4(Z,$),G=this.atoms.if;return this.add(G.create({condition:Y,then:Q.steps,else:H}))}while(Z,$,X){let K=new a(this.atoms);X(K);let Q=Y4(Z,$),H=this.atoms.while;return this.add(H.create({condition:Q,body:K.steps}))}scope(Z){let $=new a(this.atoms);Z($);let X=this.atoms.scope;return this.add(X.create({steps:$.steps}))}map(Z,$,X){let K=new a(this.atoms);X(K);let Q=this.atoms.map;return this.add(Q.create({items:Z,as:$,steps:K.steps}))}filter(Z,$,X,K={}){let Q=Y4(X,K),H=this.atoms.filter;return this.add(H.create({items:Z,as:$,condition:Q}))}find(Z,$,X,K={}){let Q=Y4(X,K),H=this.atoms.find;return this.add(H.create({items:Z,as:$,condition:Q}))}reduce(Z,$,X,K,Q){let H=new a(this.atoms);Q(H);let Y=this.atoms.reduce;return this.add(Y.create({items:Z,as:$,accumulator:X,initial:K,steps:H.steps}))}memoize(Z,$){let X=new a(this.atoms);Z(X);let K=this.atoms.memoize;return this.add(K.create({key:$,steps:X.steps}))}cache(Z,$,X){let K=new a(this.atoms);Z(K);let Q=this.atoms.cache;return this.add(Q.create({key:$,steps:K.steps,ttlMs:X}))}try(Z){let $=new a(this.atoms);Z.try($);let X;if(Z.catch){let Q=new a(this.atoms);Z.catch(Q),X=Q.steps}let K=this.atoms.try;return this.add(K.create({try:$.steps,catch:X}))}}var DX={take(Z){return new a(H4)},custom(Z){return new a(Z)},args(Z){return{$kind:"arg",path:Z}},val(Z){return Z}},pK=DX;import{validate as IX}from"tosijs-schema";function J0(Z,$={}){let{ast:X,returnType:K,originalSource:Q,requiredParams:H}=U1(Z,{filename:$.filename,colonShorthand:!0,vmTarget:!0}),Y=V0(X,$.filename),{ast:G,signature:z,warnings:W}=e1(Y,Q,K,$,H);return{ast:G,signature:z,warnings:W}}var RX=10;class o4{atoms;constructor(Z={}){this.atoms={...H4,...Z}}get builder(){return new a(this.atoms)}get Agent(){return new a(this.atoms)}get A99(){return this.Agent}resolve(Z){return this.atoms[Z]}getTools(Z="all"){let $=Object.values(this.atoms);if(Array.isArray(Z))$=$.filter((X)=>Z.includes(X.op));else if(Z==="flow"){let X=["seq","if","while","return","try","varSet","varGet","scope"];$=$.filter((K)=>X.includes(K.op))}return $.map((X)=>({type:"function",function:{name:X.op,description:X.docs,parameters:X.inputSchema?.schema??{}}}))}async run(Z,$={},X={}){let K;if(typeof Z==="string")if(i4(Z))K=p4(Z);else try{K=J0(Z).ast}catch(U){throw Error(`AJS transpilation failed: ${U.message}`)}else K=Z;let Q=X.fuel??1000,H=X.timeoutMs??Q*RX,Y=X.capabilities??{},G=[];if(!Y.store){let U=new Map,I=!1;Y.store={get:async(w)=>{if(!I)I=!0,G.push("Using default in-memory store (not suitable for production)");return U.get(w)},set:async(w,j)=>{if(!I)I=!0,G.push("Using default in-memory store (not suitable for production)");U.set(w,j)}}}let z=new AbortController,W=setTimeout(()=>z.abort(),H);if(X.signal)X.signal.addEventListener("abort",()=>z.abort());let J={fuel:{current:Q},args:$,state:{},consts:new Set,capabilities:Y,resolver:(U)=>this.resolve(U),output:void 0,signal:z.signal,costOverrides:X.costOverrides,context:X.context,warnings:G};if(X.trace)J.trace=[];if(K.op!=="seq")throw Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let L=K.inputSchema;if(L&&!IX($,L)){let U=new $1("Input validation failed: args do not match expected schema","vm.run");return{result:U,error:U,fuelUsed:0,trace:J.trace,warnings:G.length>0?G:void 0}}try{await Promise.race([this.resolve("seq")?.exec(K,J),new Promise((U,I)=>{if(z.signal.addEventListener("abort",()=>{I(Error(`Execution timeout after ${H}ms (fuel: ${Q}). Consider increasing fuel or optimizing your agent.`))}),z.signal.aborted)I(Error(`Execution timeout after ${H}ms (fuel: ${Q}). Consider increasing fuel or optimizing your agent.`))})])}catch(U){if(U.message?.includes("timeout")||U.message?.includes("aborted")||z.signal.aborted)J.error=new $1(`Execution timeout after ${H}ms (fuel: ${Q}). Consider increasing fuel or optimizing your agent.`,"vm.run");else throw U}finally{clearTimeout(W)}if(J.error&&J.output===void 0)J.output=J.error;let _=[...G,...J.warnings??[]];return{result:J.output,error:J.error,fuelUsed:Q-J.fuel.current,trace:J.trace,warnings:_.length>0?_:void 0}}}var BX=null,V7=()=>BX??=new o4;async function AX(Z){let{code:$,context:X={},fuel:K=1000,timeoutMs:Q,capabilities:H={}}=Z,Y=V7(),z=/\breturn\b/.test($)?`function __eval() { ${$} }`:`function __eval() { return (${$}) }`;try{let{ast:W}=J0(z),J=await Y.run(W,X,{fuel:K,timeoutMs:Q,capabilities:H});return{result:J.result,fuelUsed:J.fuelUsed,error:J.error?{message:J.error.message||String(J.error)}:void 0}}catch(W){return{result:void 0,fuelUsed:K,error:{message:W.message||String(W)}}}}async function MX(Z){let{body:$,params:X=[],fuel:K=1000,timeoutMs:Q,capabilities:H={}}=Z,Y=V7(),z=`function __safeFn(${X.join(", ")}) { ${$} }`,{ast:W}=J0(z);return async(...J)=>{let L={};for(let _=0;_<X.length;_++)L[X[_]]=J[_];try{let _=await Y.run(W,L,{fuel:K,timeoutMs:Q,capabilities:H});return{result:_.result,fuelUsed:_.fuelUsed,error:_.error?{message:_.error.message||String(_.error)}:void 0}}catch(_){return{result:void 0,fuelUsed:K,error:{message:_.message||String(_)}}}}}function z4(Z,$={}){let{ast:X,returnType:K,originalSource:Q,requiredParams:H}=U1(Z,{filename:$.filename,colonShorthand:!0,vmTarget:!0}),Y=V0(X,$.filename),{ast:G,signature:z,warnings:W}=e1(Y,Q,K,$,H);return{ast:G,signature:z,warnings:W}}function WQ(Z,...$){if(typeof Z==="string")return z4(Z).ast;let X=Z.reduce((K,Q,H)=>K+Q+($[H]!==void 0?String($[H]):""),"");return z4(X).ast}function _Q(Z,$,...X){if(typeof Z==="string")return Y0(Z,$);let K=$!==void 0?[$,...X]:X,Q=Z.reduce((H,Y,G)=>H+Y+(K[G]!==void 0?String(K[G]):""),"");return Y0(Q)}async function LQ(Z,$={},X){let K=X??await Z4(),Q=await K.getTranspile(Z);if(Q)return{ast:Q.ast,signature:Q.signature,warnings:Q.warnings};let H=z4(Z,$);return K.setTranspile(Z,{ast:H.ast,signature:H.signature,warnings:H.warnings}),H}async function UQ(Z,$={},X){let K=X??await Z4(),Q=await K.getTJS(Z);if(Q)return{code:Q.code,types:Q.types,metadata:Q.types,testRunner:Q.testRunner,testCount:Q.testCount,warnings:Q.warnings};let H=Y0(Z,$);return K.setTJS(Z,{code:H.code,types:H.types,testRunner:H.testRunner,testCount:H.testCount,warnings:H.warnings}),H}function qQ(Z,$,X){let{ast:K,signature:Q}=z4(Z),H=async(Y)=>{return(await $.run(K,Y,X)).result};return H.signature=Q,H.ast=K,H}function DQ(Z){return Object.entries(Z).map(([$,X])=>{let K=X.signature,Q={},H=[];for(let[Y,G]of Object.entries(K.parameters)){if(Q[Y]=G4(G.type),G.description)Q[Y].description=G.description;if(G.required)H.push(Y)}return{type:"function",function:{name:K.name||$,description:K.description,parameters:{type:"object",properties:Q,required:H}}}})}function G4(Z){switch(Z.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"array":return{type:"array",items:Z.items?G4(Z.items):{}};case"object":if(!Z.shape)return{type:"object"};return{type:"object",properties:Object.fromEntries(Object.entries(Z.shape).map(([$,X])=>[$,G4(X)]))};case"union":if(!Z.members)return{};return{anyOf:Z.members.map(G4)};case"any":default:return{}}}import{s as g}from"tosijs-schema";var C7=S("storeVectorize",g.object({text:g.string,model:g.string.optional}),g.array(g.number),async({text:Z},$)=>{let X=$.capabilities.vector;if(!X)throw Error("Capability 'vector' missing. Ensure vector battery is loaded.");let K=O(Z,$);return X.embed(K)},{docs:"Generate embeddings using vector battery",cost:20}),O7=S("storeCreateCollection",g.object({collection:g.string,dimension:g.number.optional}),void 0,async({collection:Z,dimension:$},X)=>{let K=X.capabilities.store;if(!K?.createCollection)throw Error("Capability 'store' missing or does not support createCollection.");let Q=O(Z,X),H=O($,X);return K.createCollection(Q,void 0,H)},{docs:"Create a vector store collection",cost:5}),N7=S("storeVectorAdd",g.object({collection:g.string,doc:g.any}),void 0,async({collection:Z,doc:$},X)=>{let K=X.capabilities.store;if(!K?.vectorAdd)throw Error("Capability 'store' missing or does not support vectorAdd.");let Q=O(Z,X),H=O($,X);return K.vectorAdd(Q,H)},{docs:"Add a document to a vector store collection",cost:5}),E7=S("storeSearch",g.object({collection:g.string,queryVector:g.array(g.number),k:g.number.optional,filter:g.record(g.any).optional}),g.array(g.any),async({collection:Z,queryVector:$,k:X,filter:K},Q)=>{let H=Q.capabilities.store;if(!H?.vectorSearch)throw Error("Capability 'store' missing or does not support vectorSearch.");let Y=O(Z,Q),G=O($,Q),z=O(X,Q)??5,W=O(K,Q);return H.vectorSearch(Y,G,z,W)},{docs:"Search vector store",cost:(Z,$)=>5+(O(Z.k,$)??5)}),T7=S("llmPredictBattery",g.object({system:g.string.optional,user:g.string,tools:g.array(g.any).optional,responseFormat:g.any.optional}),g.object({role:g.string.optional,content:g.string.optional,tool_calls:g.array(g.any).optional}),async({system:Z,user:$,tools:X,responseFormat:K},Q)=>{let H=Q.capabilities.llmBattery;if(!H?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let Y=O(Z,Q)??"You are a helpful agent.",G=O($,Q),z=O(X,Q),W=O(K,Q);return H.predict(Y,G,z,W)},{docs:"Generate completion using LLM battery",cost:100}),S7=S("llmVision",g.object({system:g.string.optional,prompt:g.string,images:g.array(g.string),responseFormat:g.any.optional}),g.object({role:g.string.optional,content:g.string.optional,tool_calls:g.array(g.any).optional}),async({system:Z,prompt:$,images:X,responseFormat:K},Q)=>{let H=Q.capabilities.llmBattery;if(!H?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let Y=O(Z,Q)??"You analyze images accurately and concisely.",G=O($,Q),z=O(X,Q)??[],W=O(K,Q);return H.predict(Y,{text:G,images:z},void 0,W)},{docs:"Analyze images using a vision model",timeoutMs:120000,cost:150});var fQ={storeCreateCollection:O7,storeSearch:E7,storeVectorAdd:N7,storeVectorize:C7,llmPredictBattery:T7,llmVision:S7};var k7=new Map,W4=new Map;function wX(Z,$){if(Z.length!==$.length)throw Error("Vectors must have the same length for cosine similarity.");let X=0,K=0,Q=0;for(let H=0;H<Z.length;H++)X+=Z[H]*$[H],K+=Z[H]*Z[H],Q+=$[H]*$[H];if(K=Math.sqrt(K),Q=Math.sqrt(Q),K===0||Q===0)return 0;return X/(K*Q)}function s4(){return{async get(Z){return k7.get(Z)},async set(Z,$){k7.set(Z,$)},async createCollection(Z,$,X){if(W4.has(Z))console.warn(`Collection '${Z}' already exists. Overwriting.`);W4.set(Z,[])},async vectorAdd(Z,$){let X=W4.get(Z);if(!X)throw Error(`Collection '${Z}' not found. Create it first.`);if(!$.embedding||!Array.isArray($.embedding))throw Error("Document must have an 'embedding' property that is an array of numbers.");X.push($)},async vectorSearch(Z,$,X=5){let K=W4.get(Z);if(!K)throw Error(`Collection '${Z}' not found. Create it first.`);let Q=K.map((H)=>({doc:H,score:wX($,H.embedding)}));return Q.sort((H,Y)=>Y.score-H.score),Q.slice(0,X).map((H)=>H.doc)}}}function FX(Z){if(typeof Z==="string")return{role:"user",content:Z};let $=[{type:"text",text:Z.text}];for(let X of Z.images||[])$.push({type:"image_url",image_url:{url:X}});return{role:"user",content:$}}var jX="http://localhost:1234/v1";function g7(Z,$=jX){return{async predict(X,K,Q,H){try{let Y=H?Z.getStructuredLLM():Z.getLLM(),G=[{role:"system",content:X},FX(K)],z=await fetch(`${$}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Y.id,messages:G,temperature:0.7,tools:Q,response_format:H})});if(!z.ok)throw Error(`LLM Error: ${z.status} ${z.statusText}`);return(await z.json()).choices[0]?.message??{content:""}}catch(Y){if(Y.cause?.code==="ECONNREFUSED")throw Error("No LLM provider configured. Please start LM Studio or provide an API key.");throw Y}},async embed(X){try{let K=Z.getEmbedding(),Q=await fetch(`${$}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:K.id,input:X})});if(!Q.ok)throw Error(`Embedding Error: ${Q.status}`);return(await Q.json()).data[0]?.embedding??[]}catch(K){if(K.cause?.code==="ECONNREFUSED")throw Error("No LLM provider configured. Please start LM Studio or provide an API key.");throw K}}}}var _0=typeof window<"u"&&typeof window.localStorage<"u";async function CX(Z){try{if(_0){let $=window.localStorage.getItem(".models.cache.json");if(!$)return null;let X=JSON.parse($);if(X.baseUrl!==Z)return null;if(Date.now()-X.timestamp>86400000)return null;return X.models}else{let $=await import("node:fs/promises"),K=(await Promise.resolve().then(() => (t4(),r4))).join(process.cwd(),".models.cache.json");try{let Q=await $.readFile(K,"utf-8"),H=JSON.parse(Q);if(H.baseUrl!==Z)return null;if(Date.now()-H.timestamp>86400000)return null;return H.models}catch{return null}}}catch($){return console.warn("⚠️ Error reading model cache:",$),null}}async function OX(Z,$){let X={timestamp:Date.now(),baseUrl:Z,models:$};try{if(_0)window.localStorage.setItem(".models.cache.json",JSON.stringify(X));else{let K=await import("node:fs/promises"),H=(await Promise.resolve().then(() => (t4(),r4))).join(process.cwd(),".models.cache.json");await K.writeFile(H,JSON.stringify(X,null,2))}}catch(K){console.error("❌ Error writing model cache:",K)}}var L0=async(Z,$)=>{let X=new AbortController,K=setTimeout(()=>X.abort(),60000);try{let Q=await fetch(Z,{...$,signal:X.signal});return clearTimeout(K),Q}catch(Q){throw clearTimeout(K),Q}};async function NX(Z,$){try{let X={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},K=await L0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,messages:[{role:"system",content:"You respond in JSON."},{role:"user",content:'Return JSON: {"status": "ok"}'}],response_format:X,max_tokens:20})});if(!K.ok){if(K.status===400)return EX(Z,$);return{ok:!1,msg:`HTTP ${K.status}`}}let Q=await K.json();return JSON.parse(Q.choices[0].message.content),{ok:!0,msg:"OK (Schema)"}}catch(X){return{ok:!1,msg:X.message||"Error"}}}async function EX(Z,$){try{if((await L0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,messages:[{role:"user",content:'JSON: {"a":1}'}],response_format:{type:"json_object"},max_tokens:10})})).ok)return{ok:!0,msg:"OK (Legacy Mode)"};return{ok:!1,msg:"Not Supported"}}catch{return{ok:!1,msg:"Legacy Fail"}}}async function TX(Z,$){try{return(await L0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,messages:[{role:"user",content:"hi"}],max_tokens:1})})).ok}catch{return!1}}async function SX(Z,$){try{let X=await L0(`${Z}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,input:"test"})});if(!X.ok)return null;return(await X.json()).data[0]?.embedding?.length??null}catch{return null}}var kX="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";async function gX(Z,$){try{return(await L0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:$,messages:[{role:"user",content:[{type:"text",text:"What color is this?"},{type:"image_url",image_url:{url:kX}}]}],max_tokens:10})})).ok}catch{return!1}}async function c7(Z){let $=await CX(Z),X=[];try{let Y=await fetch(`${Z}/models`);if(!Y.ok)throw Error("Could not connect");X=(await Y.json()).data.map((z)=>z.id).sort()}catch(Y){if($)return console.log("⚠️ LM Studio unavailable, using cached model audit."),$;return console.error("❌ Failed to connect to LM Studio."),[]}if($){let Y=$.map((G)=>G.id).sort();if(JSON.stringify(X)===JSON.stringify(Y))return console.log("✅ Using cached model audit."),$;console.log("\uD83D\uDD0D Model list changed. Re-running audit...")}console.log("\uD83D\uDD0D Scanning models (this may take a moment)...");let K=[],Q=X.map((Y)=>({id:Y})),H;if(!_0)H=await import("node:readline");for(let Y of Q){if(!_0&&H)H.cursorTo(process.stdout,0),process.stdout.write(`\uD83D\uDC49 Testing: ${Y.id}...`),H.clearLine(process.stdout,1);let G="Unknown",z=!1,W=!1,J="",L=void 0,_=await TX(Z,Y.id),U=await SX(Z,Y.id);if(U)L=U;if(_){G="LLM";let I=await NX(Z,Y.id);if(z=I.ok,W=await gX(Z,Y.id),J=z?I.msg:`Fail: ${I.msg}`,W)J+=" +Vision"}else if(U)G="Embedding",J=`OK (Dim: ${U})`;else J="LLM Fail";K.push({id:Y.id,type:G,structuredOutput:z,vision:W,dimension:L,status:J})}if(!_0&&H)H.cursorTo(process.stdout,0),H.clearLine(process.stdout,0);return console.log(`
|
|
389
|
-
`),console.table(K),await OX(Z,K),console.log("\uD83D\uDCDD Audit results saved to cache."),K}var bX="http://localhost:1234/v1";class e4{baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;constructor(Z=bX){this.baseUrl=Z}async audit(){this.models=await c7(this.baseUrl),this.selectDefaults()}selectDefaults(){if(this.defaultEmbedding=this.models.find((Z)=>Z.type==="Embedding")||null,this.defaultLLM=this.models.find((Z)=>Z.type==="LLM")||null,this.defaultStructuredLLM=this.models.find((Z)=>Z.type==="LLM"&&Z.structuredOutput)||null,!this.defaultEmbedding)console.warn("⚠️ No embedding model found.");if(!this.defaultLLM)console.warn("⚠️ No LLM found.");if(!this.defaultStructuredLLM)console.warn("⚠️ No LLM with structured output support found.")}getModels(){return this.models}_setDefaultModel(Z,$,X,K){let Q=this.models.find((H)=>H.id===Z&&X(H));if(!Q)throw Error(`Model '${Z}' not found or is not ${K}.`);this[$]=Q}setDefaultLLM(Z){this._setDefaultModel(Z,"defaultLLM",($)=>$.type==="LLM","an LLM")}setDefaultEmbedding(Z){this._setDefaultModel(Z,"defaultEmbedding",($)=>$.dimension!==void 0,"an embedding model")}setDefaultStructuredLLM(Z){this._setDefaultModel(Z,"defaultStructuredLLM",($)=>$.type==="LLM"&&$.structuredOutput,"a structured-output LLM")}getLLM(){if(!this.defaultLLM)throw Error("No LLM available.");return this.defaultLLM}getEmbedding(){if(!this.defaultEmbedding)throw Error("No embedding model available.");return this.defaultEmbedding}getStructuredLLM(){if(!this.defaultStructuredLLM)throw Error("No structured-output LLM available.");return this.defaultStructuredLLM}}var vX=typeof window<"u",fX=vX&&window.location.protocol==="https:",U0=null,Z6=null,o7=!1;async function yX(){if(o7)return{localModels:U0,llm:Z6};if(o7=!0,fX)return console.log("\uD83D\uDCE1 HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{U0=new e4,await U0.audit(),Z6=g7(U0)}catch(Z){console.warn("⚠️ Could not connect to local LLM:",Z)}return{localModels:U0,llm:Z6}}async function hX(){let{localModels:Z,llm:$}=await yX();return{vector:$?{embed:$.embed}:void 0,store:s4(),llmBattery:$,models:Z}}async function nQ(){return hX()}var cQ={store:s4(),llmBattery:null,vector:void 0,models:null};function xX(Z){if(typeof Z!=="string")return!1;let $=new Date(Z);return!isNaN($.getTime())&&Z.includes("T")}function uX(){return new Date().toISOString()}function l1(Z,$,X,K=0,Q=0,H=0,Y=0){return new Date(Date.UTC(Z,$-1,X,K,Q,H,Y)).toISOString()}function s7(Z){let $=new Date(Z);if(isNaN($.getTime()))throw Error(`Invalid date string: ${Z}`);return $.toISOString()}function dX(Z){try{return s7(Z)}catch{return null}}function q0(Z,$){let X=new Date(Z);return X.setTime(X.getTime()+$),X.toISOString()}function mX(Z,$){return q0(Z,$*1000)}function lX(Z,$){return q0(Z,$*60*1000)}function iX(Z,$){return q0(Z,$*60*60*1000)}function a7(Z,$){return q0(Z,$*24*60*60*1000)}function pX(Z,$){return a7(Z,$*7)}function nX(Z,$){let X=new Date(Z),K=X.getUTCMonth()+$;if(X.setUTCMonth(K),X.getUTCMonth()!==(K%12+12)%12)X.setUTCDate(0);return X.toISOString()}function cX(Z,$){let X=new Date(Z),K=X.getUTCDate();if(X.setUTCFullYear(X.getUTCFullYear()+$),X.getUTCDate()!==K)X.setUTCDate(0);return X.toISOString()}function w1(Z,$){return new Date(Z).getTime()-new Date($).getTime()}function oX(Z,$){return Math.floor(w1(Z,$)/1000)}function sX(Z,$){return Math.floor(w1(Z,$)/60000)}function aX(Z,$){return Math.floor(w1(Z,$)/3600000)}function rX(Z,$){return Math.floor(w1(Z,$)/86400000)}function i1(Z){return new Date(Z).getUTCFullYear()}function _4(Z){return new Date(Z).getUTCMonth()+1}function X6(Z){return new Date(Z).getUTCDate()}function tX(Z){return new Date(Z).getUTCHours()}function eX(Z){return new Date(Z).getUTCMinutes()}function Z$(Z){return new Date(Z).getUTCSeconds()}function X$(Z){return new Date(Z).getUTCMilliseconds()}function $$(Z){let $=new Date(Z).getUTCDay();return $===0?7:$}function L4(Z,$,X){let K=new Date(Z),Q={timeZone:$,...X};return new Intl.DateTimeFormat(void 0,Q).format(K)}function K$(Z,$){return L4(Z,$,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function Q$(Z,$){return L4(Z,$,{year:"numeric",month:"short",day:"numeric"})}function H$(Z,$){return L4(Z,$,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function Y$(Z){return Z.slice(0,10)}function r7(Z,$){return w1(Z,$)<0}function t7(Z,$){return w1(Z,$)>0}function G$(Z,$){return w1(Z,$)===0}function z$(Z,$){return r7(Z,$)?Z:$}function W$(Z,$){return t7(Z,$)?Z:$}function J$(Z){return l1(i1(Z),_4(Z),X6(Z))}function _$(Z){return l1(i1(Z),_4(Z),X6(Z),23,59,59,999)}function L$(Z){return l1(i1(Z),_4(Z),1)}function U$(Z){let $=new Date(Z);return $.setUTCMonth($.getUTCMonth()+1,0),$.setUTCHours(23,59,59,999),$.toISOString()}function q$(Z){return l1(i1(Z),1,1)}function D$(Z){return l1(i1(Z),12,31,23,59,59,999)}var p1={isValid:xX,now:uX,from:l1,parse:s7,tryParse:dX,addMilliseconds:q0,addSeconds:mX,addMinutes:lX,addHours:iX,addDays:a7,addWeeks:pX,addMonths:nX,addYears:cX,diff:w1,diffSeconds:oX,diffMinutes:sX,diffHours:aX,diffDays:rX,year:i1,month:_4,day:X6,hour:tX,minute:eX,second:Z$,millisecond:X$,dayOfWeek:$$,toLocal:L4,format:K$,formatDate:Q$,formatTime:H$,toDate:Y$,isBefore:r7,isAfter:t7,isEqual:G$,min:z$,max:W$,startOfDay:J$,endOfDay:_$,startOfMonth:L$,endOfMonth:U$,startOfYear:q$,endOfYear:D$};function $6(Z){if(typeof Z!=="string")return!1;if(!/^\d{4}-\d{2}-\d{2}$/.test(Z))return!1;let $=parseInt(Z.slice(0,4),10),X=parseInt(Z.slice(5,7),10),K=parseInt(Z.slice(8,10),10);if(X<1||X>12)return!1;if(K<1)return!1;let Q=[31,28,31,30,31,30,31,31,30,31,30,31],H=X===2&&($%4===0&&$%100!==0||$%400===0)?29:Q[X-1];return K<=H}function I$(){return p1.toDate(p1.now())}function R$(Z){let $=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:Z,year:"numeric",month:"2-digit",day:"2-digit"}).format($)}function Y1(Z,$,X){let K=String(Z).padStart(4,"0"),Q=String($).padStart(2,"0"),H=String(X).padStart(2,"0"),Y=`${K}-${Q}-${H}`;if(!$6(Y))throw Error(`Invalid date: ${Z}-${$}-${X}`);return Y}function e7(Z){if(/^\d{4}-\d{2}-\d{2}$/.test(Z)){if(!$6(Z))throw Error(`Invalid date: ${Z}`);return Z}let $=new Date(Z);if(isNaN($.getTime()))throw Error(`Invalid date string: ${Z}`);let X=$.getUTCFullYear(),K=$.getUTCMonth()+1,Q=$.getUTCDate();return Y1(X,K,Q)}function B$(Z){try{return e7(Z)}catch{return null}}function U4(Z,$){let X=X8(Z);return p1.toDate(p1.addDays(X,$))}function A$(Z,$){return U4(Z,$*7)}function M$(Z,$){let X=t(Z),K=F1(Z),Q=K6(Z),H=X*12+(K-1)+$,Y=Math.floor(H/12),G=H%12+1,z=D0(Y,G),W=Math.min(Q,z);return Y1(Y,G,W)}function w$(Z,$){let X=t(Z),K=F1(Z),Q=K6(Z),H=X+$,Y=D0(H,K),G=Math.min(Q,Y);return Y1(H,K,G)}function Z8(Z,$){let K=new Date(Z+"T00:00:00Z").getTime(),Q=new Date($+"T00:00:00Z").getTime();return Math.round((K-Q)/86400000)}function F$(Z,$){let X=t(Z),K=F1(Z),Q=t($),H=F1($);return(X-Q)*12+(K-H)}function j$(Z,$){return t(Z)-t($)}function t(Z){return parseInt(Z.slice(0,4),10)}function F1(Z){return parseInt(Z.slice(5,7),10)}function K6(Z){return parseInt(Z.slice(8,10),10)}function Q6(Z){let $=new Date(Z+"T00:00:00Z").getUTCDay();return $===0?7:$}function P$(Z){let $=new Date(Z+"T00:00:00Z"),X=$.getUTCDay()||7;$.setUTCDate($.getUTCDate()+4-X);let K=new Date(Date.UTC($.getUTCFullYear(),0,1));return Math.ceil((($.getTime()-K.getTime())/86400000+1)/7)}function V$(Z){let $=Y1(t(Z),1,1);return Z8(Z,$)+1}function H6(Z){return Math.ceil(F1(Z)/3)}function Y6(Z){return Z%4===0&&Z%100!==0||Z%400===0}function D0(Z,$){let X=[31,28,31,30,31,30,31,31,30,31,30,31];if($===2&&Y6(Z))return 29;return X[$-1]}function C$(Z){return Y6(Z)?366:365}function X8(Z){return Z+"T00:00:00.000Z"}function O$(Z){return Math.floor(new Date(Z+"T00:00:00Z").getTime()/1000)}function N$(Z){let $=new Date(Z*1000);return Y1($.getUTCFullYear(),$.getUTCMonth()+1,$.getUTCDate())}function G6(Z,$){let X=new Date(Z+"T00:00:00Z"),K={timeZone:"UTC",...$};return new Intl.DateTimeFormat(void 0,K).format(X)}function E$(Z){return G6(Z,{year:"numeric",month:"long",day:"numeric"})}function T$(Z){return G6(Z,{year:"numeric",month:"short",day:"numeric"})}function S$(Z,$){return Z<$}function k$(Z,$){return Z>$}function g$(Z,$){return Z===$}function b$(Z,$){return Z<$?Z:$}function v$(Z,$){return Z>$?Z:$}function f$(Z,$,X){return Z>=$&&Z<=X}function y$(Z){return Y1(t(Z),F1(Z),1)}function h$(Z){let $=t(Z),X=F1(Z);return Y1($,X,D0($,X))}function x$(Z){let X=(H6(Z)-1)*3+1;return Y1(t(Z),X,1)}function u$(Z){let X=H6(Z)*3;return Y1(t(Z),X,D0(t(Z),X))}function d$(Z){return Y1(t(Z),1,1)}function m$(Z){return Y1(t(Z),12,31)}function l$(Z){let $=Q6(Z);return U4(Z,-($-1))}function i$(Z){let $=Q6(Z);return U4(Z,7-$)}var p$={isValid:$6,today:I$,todayIn:R$,from:Y1,parse:e7,tryParse:B$,addDays:U4,addWeeks:A$,addMonths:M$,addYears:w$,diff:Z8,diffMonths:F$,diffYears:j$,year:t,month:F1,day:K6,dayOfWeek:Q6,weekOfYear:P$,dayOfYear:V$,quarter:H6,isLeapYear:Y6,daysInMonth:D0,daysInYear:C$,toTimestamp:X8,toUnix:O$,fromUnix:N$,format:G6,formatLong:E$,formatShort:T$,isBefore:S$,isAfter:k$,isEqual:g$,min:b$,max:v$,isBetween:f$,startOfMonth:y$,endOfMonth:h$,startOfQuarter:x$,endOfQuarter:u$,startOfYear:d$,endOfYear:m$,startOfWeek:l$,endOfWeek:i$};export{e5 as xmlParse,y4 as wrap,I5 as whileLoop,n5 as vectorSearch,P5 as varsLet,j5 as varsImport,V5 as varsExport,M5 as varSet,F5 as varGet,f4 as validateArgs,KX as uuid,A4 as typeToString,x1 as typeOf,B5 as tryCatch,LQ as transpileWithCache,Y0 as transpileToJS,s5 as transpileCode,z4 as transpile,e1 as transformFunction,UQ as tjsWithCache,_Q as tjs,m8 as testUtils,v5 as template,N0 as stripTjsPreamble,O0 as stripModuleSyntax,i5 as storeSet,p5 as storeQuery,GX as storeProcedure,l5 as storeGet,g5 as split,eZ as setGlobalCache,H1 as seq,C5 as scope,N1 as runtime,a5 as runCode,R5 as ret,O as resolveValue,p4 as resolveProcedureToken,zX as releaseProcedure,p6 as registerWasmBlock,f5 as regexMatch,E5 as reduce,$X as random,S5 as push,m1 as procedureStore,P0 as preprocess,y5 as pick,g6 as parseReturnType,B1 as parseParameter,U1 as parse,h5 as omit,x5 as merge,ZX as memoize,O5 as map,L8 as lookupVariable,c5 as llmPredict,$5 as lint,k5 as len,u5 as keys,t5 as jsonStringify,r5 as jsonParse,b5 as join,O4 as isValidUrl,N4 as isValidTimestamp,E4 as isValidLegalDate,A1 as isRuntimeType,i4 as isProcedureToken,D1 as isError,mK as isAgentError,i6 as instantiateWasm,vZ as installRuntime,Q1 as inferTypeFromValue,D5 as iff,aZ as hashSourceSync,e0 as hashSource,n4 as hash,DQ as getToolDefinitions,s4 as getStoreCapabilityDefault,nQ as getStandardCapabilities,u as getLocation,g7 as getLLMCapability,Z4 as getGlobalCache,hX as getBatteries,H5 as generateDocsMarkdown,_7 as generateDocs,oZ as fromTS,T5 as find,N5 as filter,m5 as fetch,w4 as extractTests,a1 as extractTDoc,q1 as extractLiteralValue,x6 as expectFunction,m as evaluateExpr,A5 as errorAtom,_1 as error,fZ as emitRuntimeWrapper,S as defineAtom,M1 as createChildScope,K1 as createChildContext,qQ as createAgent,H4 as coreAtoms,w5 as constSet,HX as consoleWarn,QX as consoleLog,YX as consoleError,LZ as compileWasmBlocks,S0 as compileToWasm,WX as clearExpiredProcedures,E1 as checkType,XX as cache,R1 as builtins,fQ as batteryAtoms,cQ as batteries,h6 as assertFunction,WQ as ajs,o5 as agentRun,i0 as Union,a as TypedBuilder,_8 as TypeError,l as Type,x as TranspileError,T4 as TimestampType,p1 as Timestamp,d0 as TUuid,u0 as TUrl,g0 as TString,c0 as TRecord,y0 as TPositiveInt,n0 as TPair,b0 as TNumber,h0 as TNonEmptyString,r as TJS_VERSION,f0 as TInteger,x0 as TEmail,v0 as TBoolean,p0 as TArray,e as SyntaxError,sZ as Schema,MX as SafeFunction,l4 as PROCEDURE_TOKEN_PREFIX,l0 as Optional,m0 as Nullable,u4 as MetadataCache,e4 as LocalModels,S4 as LegalDateType,p$ as LegalDate,h1 as Generic,AX as Eval,o0 as Enum,Y5 as DEFAULT_PROCEDURE_TTL,G5 as DEFAULT_MAX_AST_SIZE,o4 as AgentVM,$1 as AgentError,DX as Agent,pK as A99};
|
|
401
|
+
`}return K.trim()||"*No documentation available*"}import{s as D,validate as o4,filter as V7}from"tosijs-schema";var Y4=Symbol.for("tjs.equals");function z4(Z,X){if(Z!==null&&typeof Z==="object"&&typeof Z[Y4]==="function")return Z[Y4](X);if(X!==null&&typeof X==="object"&&typeof X[Y4]==="function")return X[Y4](Z);if(Z!==null&&typeof Z==="object"&&typeof Z.Equals==="function")return Z.Equals(X);if(X!==null&&typeof X==="object"&&typeof X.Equals==="function")return X.Equals(Z);if(Z===X)return!0;if((Z===null||Z===void 0)&&(X===null||X===void 0))return!0;if(Z===null||Z===void 0||X===null||X===void 0)return!1;if(typeof Z!==typeof X)return!1;if(typeof Z!=="object")return!1;if(Array.isArray(Z)&&Array.isArray(X)){if(Z.length!==X.length)return!1;return Z.every((Q,H)=>z4(Q,X[H]))}if(Array.isArray(Z)!==Array.isArray(X))return!1;let $=Object.keys(Z),K=Object.keys(X);if($.length!==K.length)return!1;return $.every((Q)=>z4(Z[Q],X[Q]))}class H1{$error=!0;message;op;cause;constructor(Z,X,$){this.message=Z,this.op=X,this.cause=$}toString(){return`AgentError[${this.op}]: ${this.message}`}toJSON(){return{$error:!0,message:this.message,op:this.op}}}function B5(Z){return Z instanceof H1||Z&&Z.$error===!0}var n1=new Map,I5=3600000,A5=102400,s4="proc_";function a4(Z){return typeof Z==="string"&&Z.startsWith(s4)}function r4(Z){let X=n1.get(Z);if(!X)throw Error(`Procedure not found: ${Z}`);if(Date.now()>X.expiresAt)throw n1.delete(Z),Error(`Procedure expired: ${Z}`);return X.ast}function F5(){if(typeof crypto<"u"&&crypto.randomUUID)return s4+crypto.randomUUID();return s4+Math.random().toString(36).slice(2)+Date.now().toString(36)}var C7=new Set(["__proto__","constructor","prototype"]);function A7(Z){if(C7.has(Z))throw Error(`Security Error: Access to '${Z}' is forbidden`)}var M5=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function w5(Z){try{let X=new URL(Z);if(X.protocol!=="http:"&&X.protocol!=="https:")return!0;let $=X.hostname.toLowerCase();if(M5.has($))return!0;if($.endsWith(".internal")||$.endsWith(".local"))return!0;if($==="169.254.169.254")return!0;if(/^10\./.test($)||/^192\.168\./.test($)||/^172\.(1[6-9]|2\d|3[01])\./.test($))return!0;return!1}catch{return!0}}function j5(Z){if(/\([^)]*[+*][^)]*\)[+*]/.test(Z))return!0;if(/\(([^|)]+)\|\1\)[+*]/.test(Z))return!0;if(/\(\.\*\)\+/.test(Z))return!0;if(/\(\.\+\)\+/.test(Z))return!0;if(/\(\[.*\]\+\)\+/.test(Z))return!0;return!1}function O1(Z){return{...Z,state:Object.create(Z.state)}}function P5(Z,X){let $={},K=new Set([...Object.keys(Z),...Object.keys(X)]);for(let Q of K){let H=Z[Q],Y=X[Q];if(Y!==H)$[Q]=Y}return $}function O(Z,X){if(Z&&typeof Z==="object"&&Z.$kind==="arg")return X.args[Z.path];if(Z&&typeof Z==="object"&&Z.$expr)return i(Z,X);if(typeof Z==="string"){if(Z.startsWith("args.")&&!("args"in X.state))return X.args[Z.replace("args.","")];if(Z.includes(".")){let $=Z.split(".");for(let Q of $)if(C7.has(Q))throw Error(`Security Error: Access to '${Q}' is forbidden`);let K=X.state[$[0]];if(K!==void 0){for(let Q=1;Q<$.length;Q++)K=K?.[$[Q]];return K}}if(Z in X.state)return X.state[Z];return Z}if(Z&&typeof Z==="object"&&!Array.isArray(Z)&&Z.constructor===Object){let $={};for(let K of Object.keys(Z))$[K]=O(Z[K],X);return $}if(Array.isArray(Z))return Z.map(($)=>O($,X));return Z}function h1(Z,X,$){return new Proxy(X,{get(K,Q){if(Q in K)return K[Q];let H=$?.[Q];if(H)throw Error(`${Z}.${Q} is not available. ${H}`);throw Error(`${Z}.${Q} is not supported in AsyncJS. Check docs for available ${Z} methods.`)}})}function p1(Z){if(Z===null)return{type:"null"};if(Z===void 0)return{};if(typeof Z==="object"&&Z!==null&&"type"in Z&&typeof Z.type==="string")return Z;if(typeof Z==="object"&&Z!==null&&"schema"in Z&&typeof Z.schema==="object")return Z.schema;let X=typeof Z;if(X==="string")return{type:"string"};if(X==="number")return Number.isInteger(Z)?{type:"integer"}:{type:"number"};if(X==="boolean")return{type:"boolean"};if(Array.isArray(Z)){if(Z.length===0)return{type:"array"};return{type:"array",items:p1(Z[0])}}if(X==="object"){let $={},K=[];for(let[Q,H]of Object.entries(Z))$[Q]=p1(H),K.push(Q);return{type:"object",properties:$,required:K}}return{}}var j1={Math:h1("Math",{PI:Math.PI,E:Math.E,LN2:Math.LN2,LN10:Math.LN10,LOG2E:Math.LOG2E,LOG10E:Math.LOG10E,SQRT2:Math.SQRT2,SQRT1_2:Math.SQRT1_2,abs:Math.abs,ceil:Math.ceil,floor:Math.floor,round:Math.round,trunc:Math.trunc,sign:Math.sign,sqrt:Math.sqrt,cbrt:Math.cbrt,pow:Math.pow,exp:Math.exp,expm1:Math.expm1,log:Math.log,log2:Math.log2,log10:Math.log10,log1p:Math.log1p,sin:Math.sin,cos:Math.cos,tan:Math.tan,asin:Math.asin,acos:Math.acos,atan:Math.atan,atan2:Math.atan2,sinh:Math.sinh,cosh:Math.cosh,tanh:Math.tanh,asinh:Math.asinh,acosh:Math.acosh,atanh:Math.atanh,hypot:Math.hypot,min:Math.min,max:Math.max,clz32:Math.clz32,imul:Math.imul,fround:Math.fround,random:()=>{if(typeof crypto<"u"&&crypto.getRandomValues){let Z=new Uint32Array(1);return crypto.getRandomValues(Z),Z[0]/4294967296}return Math.random()}}),JSON:h1("JSON",{parse:(Z)=>JSON.parse(Z),stringify:(Z,X,$)=>JSON.stringify(Z,X,$)}),console:h1("console",{log:(...Z)=>{return},warn:(...Z)=>{return},error:(...Z)=>{return},info:(...Z)=>{return}},{table:"Use console.log with JSON.stringify for structured data.",dir:"Use console.log instead.",trace:"Stack traces are not available in AsyncJS."}),Array:h1("Array",{isArray:(Z)=>Array.isArray(Z),from:(Z,X,$)=>Array.from(Z,X,$),of:(...Z)=>Array.of(...Z)},{prototype:"Prototype access is not allowed."}),Object:h1("Object",{keys:(Z)=>Object.keys(Z),values:(Z)=>Object.values(Z),entries:(Z)=>Object.entries(Z),fromEntries:(Z)=>Object.fromEntries(Z),assign:(Z,...X)=>Object.assign({},Z,...X),hasOwn:(Z,X)=>Object.hasOwn(Z,X)},{prototype:"Prototype access is not allowed.",create:"Use object literals instead.",defineProperty:"Property descriptors are not supported.",getPrototypeOf:"Prototype access is not allowed.",setPrototypeOf:"Prototype modification is not allowed."}),String:h1("String",{fromCharCode:(...Z)=>String.fromCharCode(...Z),fromCodePoint:(...Z)=>String.fromCodePoint(...Z)}),Number:h1("Number",{isNaN:Number.isNaN,isFinite:Number.isFinite,isInteger:Number.isInteger,isSafeInteger:Number.isSafeInteger,parseFloat,parseInt,MAX_VALUE:Number.MAX_VALUE,MIN_VALUE:Number.MIN_VALUE,MAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,MIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,POSITIVE_INFINITY:Number.POSITIVE_INFINITY,NEGATIVE_INFINITY:Number.NEGATIVE_INFINITY,NaN:Number.NaN,EPSILON:Number.EPSILON}),parseInt,parseFloat,isNaN,isFinite,encodeURI,decodeURI,encodeURIComponent,decodeURIComponent,undefined:void 0,null:null,NaN:NaN,Infinity:1/0,filter:(Z,X)=>{let $=p1(X),K=V7(Z,$);if(K instanceof Error)throw K;return K},Schema:{...D,response:(Z,X)=>{let $=X?.schema!=null?X.schema:p1(X);return{type:"json_schema",json_schema:{name:Z,strict:!0,schema:$}}},fromExample:(Z)=>p1(Z),isValid:(Z,X)=>{if(X?.schema!=null)return o4(Z,X);return o4(Z,p1(X))}},Set:(Z=[])=>{let X=[...new globalThis.Set(Z)];return{add($){if(!X.includes($))X.push($);return this},remove($){let K=X.indexOf($);if(K!==-1)X.splice(K,1);return this},clear(){return X.length=0,this},has($){return X.includes($)},get size(){return X.length},toArray(){return[...X]},union($){let K=$?.toArray?.()??$??[];return j1.Set([...X,...K])},intersection($){let K=$?.toArray?.()??$??[];return j1.Set(X.filter((Q)=>K.includes(Q)))},diff($){let K=$?.toArray?.()??$??[];return j1.Set(X.filter((Q)=>!K.includes(Q)))},forEach($){X.forEach($)},map($){return j1.Set(X.map($))},filter($){return j1.Set(X.filter($))},toJSON(){return[...X]}}},Date:(()=>{let Z=($)=>({get value(){return $.toISOString()},get timestamp(){return $.getTime()},get year(){return $.getFullYear()},get month(){return $.getMonth()+1},get day(){return $.getDate()},get hours(){return $.getHours()},get minutes(){return $.getMinutes()},get seconds(){return $.getSeconds()},get dayOfWeek(){return $.getDay()},add({years:K=0,months:Q=0,days:H=0,hours:Y=0,minutes:G=0,seconds:z=0,ms:W=0}={}){let J=new globalThis.Date($.getTime());if(K)J.setFullYear(J.getFullYear()+K);if(Q)J.setMonth(J.getMonth()+Q);if(H)J.setDate(J.getDate()+H);if(Y)J.setHours(J.getHours()+Y);if(G)J.setMinutes(J.getMinutes()+G);if(z)J.setSeconds(J.getSeconds()+z);if(W)J.setMilliseconds(J.getMilliseconds()+W);return Z(J)},diff(K,Q="ms"){let H=typeof K==="object"&&K.timestamp?K.timestamp:new globalThis.Date(K).getTime(),Y=$.getTime()-H;switch(Q){case"seconds":return Y/1000;case"minutes":return Y/60000;case"hours":return Y/3600000;case"days":return Y/86400000;default:return Y}},format(K="ISO"){if(K==="ISO")return $.toISOString();if(K==="date")return $.toISOString().split("T")[0];if(K==="time")return $.toISOString().split("T")[1].split(".")[0];return K.replace("YYYY",String($.getFullYear())).replace("MM",String($.getMonth()+1).padStart(2,"0")).replace("DD",String($.getDate()).padStart(2,"0")).replace("HH",String($.getHours()).padStart(2,"0")).replace("mm",String($.getMinutes()).padStart(2,"0")).replace("ss",String($.getSeconds()).padStart(2,"0"))},isBefore(K){let Q=typeof K==="object"&&K.timestamp?K.timestamp:new globalThis.Date(K).getTime();return $.getTime()<Q},isAfter(K){let Q=typeof K==="object"&&K.timestamp?K.timestamp:new globalThis.Date(K).getTime();return $.getTime()>Q},toString(){return $.toISOString()},toJSON(){return $.toISOString()}}),X=($)=>{let K=$!==void 0?new globalThis.Date($):new globalThis.Date;if(isNaN(K.getTime()))throw Error(`Invalid date: ${$}`);return Z(K)};return X.now=()=>globalThis.Date.now(),X.parse=($)=>Z(new globalThis.Date($)),X})()},G4={RegExp:"RegExp is not available. Use string methods or the regexMatch atom.",Promise:"Promise is not needed. All operations are implicitly async.",Map:"Map is not available. Use plain objects instead.",WeakSet:"WeakSet is not available.",WeakMap:"WeakMap is not available.",Symbol:"Symbol is not available.",Proxy:"Proxy is not available.",Reflect:"Reflect is not available.",Function:"Function constructor is not available. Define functions normally.",eval:"eval is not available. Code is compiled, not evaluated.",setTimeout:"setTimeout is not available. Use the delay atom.",setInterval:"setInterval is not available. Use while loops with delay.",fetch:"fetch is not available. Use the httpFetch atom.",require:"require is not available. Atoms must be registered with the VM.",import:"import is not available. Atoms must be registered with the VM.",process:"process is not available. AsyncJS runs in a sandboxed environment.",window:"window is not available. AsyncJS runs in a sandboxed environment.",document:"document is not available. AsyncJS runs in a sandboxed environment.",global:"global is not available. AsyncJS runs in a sandboxed environment.",globalThis:"globalThis is not available. Use builtins directly."},V5=0.01,F7=0.0001,M7=0.001,C5=new Set(["concat","slice","map","filter","flatMap","flat","toReversed","toSorted","toSpliced","repeat","padStart","padEnd","split","join","replace","replaceAll","substring","substr","trim","trimStart","trimEnd","toLowerCase","toUpperCase","match","matchAll","parse","stringify"]);function i(Z,X){if(Z===null||Z===void 0)return Z;if(typeof Z!=="object"||!("$expr"in Z))return Z;if(X.fuel){if(X.fuel.current-=V5,X.fuel.current<=0)throw Error("Out of Fuel")}switch(Z.$expr){case"literal":return Z.value;case"ident":{if(Z.name in X.state)return X.state[Z.name];if(Z.name in X.args)return X.args[Z.name];if(Z.name in j1)return j1[Z.name];if(Z.name in G4)throw Error(G4[Z.name]);return}case"member":{let $=i(Z.object,X);if(Z.optional&&($===null||$===void 0))return;let K=Z.property;return A7(K),$?.[K]}case"binary":{let $=i(Z.left,X),K=i(Z.right,X);switch(Z.op){case"+":{let Q=$+K;if(typeof Q==="string"&&X.fuel){if(X.fuel.current-=Q.length*F7,X.fuel.current<=0){X.error=new H1("Out of Fuel","expr.concat");return}}return Q}case"-":return $-K;case"*":return $*K;case"/":return $/K;case"%":return $%K;case"**":return $**K;case">":return $>K;case"<":return $<K;case">=":return $>=K;case"<=":return $<=K;case"==":return z4($,K);case"!=":return!z4($,K);case"===":return $===K;case"!==":return $!==K;default:throw Error(`Unknown binary operator: ${Z.op}`)}}case"unary":{let $=i(Z.argument,X);switch(Z.op){case"!":return!$;case"-":return-$;case"+":return+$;case"typeof":return typeof $;default:throw Error(`Unknown unary operator: ${Z.op}`)}}case"logical":{let $=i(Z.left,X);if(Z.op==="&&")return $?i(Z.right,X):$;else if(Z.op==="??")return $??i(Z.right,X);else return $?$:i(Z.right,X)}case"conditional":return i(Z.test,X)?i(Z.consequent,X):i(Z.alternate,X);case"array":return Z.elements.map(($)=>i($,X));case"object":{let $={};for(let K of Z.properties)$[K.key]=i(K.value,X);return $}case"call":{if(Z.callee==="Error"){let K=Z.arguments.map((H)=>i(H,X)),Q=typeof K[0]==="string"?K[0]:"Error";X.error=new H1(Q,"Error");return}if(Z.callee in j1){let K=j1[Z.callee];if(typeof K==="function"){let Q=Z.arguments.map((H)=>i(H,X));return K(...Q)}}if(!X.resolver(Z.callee)){if(Z.callee in G4)throw Error(G4[Z.callee]);throw Error(`Unknown function: ${Z.callee}`)}throw Error(`Atom calls in expressions not yet supported: ${Z.callee}`)}case"methodCall":{let $=i(Z.object,X);if(Z.optional&&($===null||$===void 0))return;let K=Z.method;if(A7(K),$===null||$===void 0)throw Error(`Cannot call method '${K}' on ${$}`);let Q=$[K];if(typeof Q!=="function")throw Error(`'${K}' is not a function`);let H=Z.arguments.map((G)=>i(G,X)),Y=Q.apply($,H);if(X.fuel&&C5.has(K)){let G=0;if(typeof Y==="string")G=Y.length*F7;else if(Array.isArray(Y))G=Y.length*M7;else if(typeof Y==="object"&&Y!==null)G=Object.keys(Y).length*M7;if(X.fuel.current-=G,X.fuel.current<=0){X.error=new H1("Out of Fuel",`expr.${K}`);return}}return Y}default:throw Error(`Unknown expression type: ${Z.$expr}`)}}function S(Z,X,$,K,Q={}){let{docs:H="",timeoutMs:Y=1000,cost:G=1}=typeof Q==="string"?{docs:Q}:Q;return{op:Z,inputSchema:X,outputSchema:$,exec:async(W,J)=>{let{op:L,result:_,...U}=W;if(J.error)return;let R=J.trace?{...J.state}:null,M=J.fuel.current,w,I;try{let V=J.costOverrides?.[Z],A=V!==void 0?V:G,B=typeof A==="function"?A(U,J):A;if((J.fuel.current-=B)<=0){J.error=new H1("Out of Fuel",Z);return}let P,j=async()=>K(W,J);if(w=Y>0?await Promise.race([j(),new Promise((C,E)=>{P=setTimeout(()=>E(Error(`Atom '${Z}' timed out`)),Y)})]).finally(()=>clearTimeout(P)):await j(),W.result){if(J.consts.has(W.result))throw Error(`Cannot reassign const variable '${W.result}'`);if(w!==void 0&&$&&!o4(w,$)){J.error=new H1(`Output validation failed for '${Z}'`,Z);return}if(J.state[W.result]=w,W.resultConst)J.consts.add(W.result)}}catch(V){I=V.message||String(V),J.error=new H1(I,Z,V)}finally{if(J.trace&&R){let V=P5(R,J.state);J.trace.push({op:Z,input:U,stateDiff:V,result:w,error:I,fuelBefore:M,fuelAfter:J.fuel.current,timestamp:new Date().toISOString()})}}},docs:H,timeoutMs:Y,cost:G,create:(W)=>({op:Z,...W})}}var J1=S("seq",D.object({steps:D.array(D.any)}),void 0,async({steps:Z},X)=>{for(let $ of Z){if(X.output!==void 0)return;if(X.error)return;let K=X.resolver($.op);if(!K)throw Error(`Unknown Atom: ${$.op}`);await K.exec($,X)}},{docs:"Sequence",timeoutMs:0,cost:0.1}),O5=S("if",D.object({condition:D.any,then:D.array(D.any),else:D.array(D.any).optional}),void 0,async(Z,X)=>{if(i(Z.condition,X))await J1.exec({op:"seq",steps:Z.then},X);else if(Z.else)await J1.exec({op:"seq",steps:Z.else},X)},{docs:"If/Else",timeoutMs:0,cost:0.1}),N5=S("while",D.object({condition:D.any,body:D.array(D.any)}),void 0,async(Z,X)=>{while(i(Z.condition,X)){if(X.signal?.aborted)throw Error("Execution aborted");if((X.fuel.current-=0.1)<=0)throw Error("Out of Fuel");if(await J1.exec({op:"seq",steps:Z.body},X),X.output!==void 0)return}},{docs:"While Loop",timeoutMs:0,cost:0.1}),E5=S("return",void 0,D.any,async(Z,X)=>{if(X.error)return X.output=X.error,X.error;if("value"in Z){let K=O(Z.value,X);if(K!==void 0&&K!==null&&!B5(K)&&(typeof K!=="object"||Array.isArray(K))){let Q=new H1(`Agent must return an object, got ${Array.isArray(K)?"array":typeof K}`,"return");return X.error=Q,X.output=Q,Q}return X.output=K,K}let $={};if(Z.schema?.properties){for(let K of Object.keys(Z.schema.properties))$[K]=X.state[K];if(Z.filter!==!1){let K=V7($,Z.schema);if(!(K instanceof Error))$=K}}return X.output=$,$},{docs:"Return",cost:0.1}),T5=S("try",D.object({try:D.array(D.any),catch:D.array(D.any).optional,catchParam:D.string.optional}),void 0,async(Z,X)=>{if(await J1.exec({op:"seq",steps:Z.try},X),X.error&&Z.catch){let $=Z.catchParam||"error";X.state[$]=X.error.message,X.state.errorOp=X.error.op,X.error=void 0,await J1.exec({op:"seq",steps:Z.catch},X)}},{docs:"Try/Catch",timeoutMs:0,cost:0.1}),S5=S("Error",D.object({args:D.array(D.any).optional}),void 0,async(Z,X)=>{let $=Z.args?.[0]??"Error";X.error=new H1(String($),"Error")},{docs:"Trigger error flow",cost:0.1}),k5=S("varSet",D.object({key:D.string,value:D.any}),void 0,async({key:Z,value:X},$)=>{if($.consts.has(Z))throw Error(`Cannot reassign const variable '${Z}'`);$.state[Z]=O(X,$)},{docs:"Set Variable",cost:0.1}),g5=S("constSet",D.object({key:D.string,value:D.any}),void 0,async({key:Z,value:X},$)=>{if($.consts.has(Z))throw Error(`Cannot reassign const variable '${Z}'`);if(Z in $.state)throw Error(`Cannot redeclare variable '${Z}' as const`);$.state[Z]=O(X,$),$.consts.add(Z)},{docs:"Set Const Variable (immutable)",cost:0.1}),b5=S("varGet",D.object({key:D.string}),D.any,async({key:Z},X)=>{return O(Z,X)},{docs:"Get Variable",cost:0.1}),v5=S("varsImport",D.object({keys:D.union([D.array(D.string),D.record(D.string)])}),void 0,async({keys:Z},X)=>{if(Array.isArray(Z))for(let $ of Z)X.state[$]=O({$kind:"arg",path:$},X);else for(let[$,K]of Object.entries(Z))X.state[$]=O({$kind:"arg",path:K},X)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:0.2}),f5=S("varsLet",D.record(D.any),void 0,async(Z,X)=>{for(let $ of Object.keys(Z)){if($==="op"||$==="result")continue;X.state[$]=O(Z[$],X)}},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:0.1}),y5=S("varsExport",D.object({keys:D.union([D.array(D.string),D.record(D.string)])}),D.record(D.any),async({keys:Z},X)=>{let $={};if(Array.isArray(Z))for(let K of Z)$[K]=O(K,X);else for(let[K,Q]of Object.entries(Z))$[K]=O(Q,X);return $},{docs:"Export variables from the current scope, with optional renaming.",cost:0.2}),h5=S("scope",D.object({steps:D.array(D.any)}),void 0,async({steps:Z},X)=>{let $=O1(X);if(await J1.exec({op:"seq",steps:Z},$),$.output!==void 0)X.output=$.output},{docs:"Create new scope",timeoutMs:0,cost:0.1}),x5=S("map",D.object({items:D.array(D.any),as:D.string,steps:D.array(D.any)}),D.array(D.any),async({items:Z,as:X,steps:$},K)=>{let Q=[],H=O(Z,K);if(!Array.isArray(H))throw Error("map: items is not an array");for(let Y of H){if(K.signal?.aborted)throw Error("Execution aborted");let G=O1(K);G.state[X]=Y,await J1.exec({op:"seq",steps:$},G),Q.push(G.state.result??null)}return Q},{docs:"Map Array",timeoutMs:0,cost:1}),u5=S("filter",D.object({items:D.array(D.any),as:D.string,condition:D.any}),D.array(D.any),async({items:Z,as:X,condition:$},K)=>{let Q=[],H=O(Z,K);if(!Array.isArray(H))throw Error("filter: items is not an array");for(let Y of H){if(K.signal?.aborted)throw Error("Execution aborted");let G=O1(K);if(G.state[X]=Y,i($,G))Q.push(Y)}return Q},{docs:"Filter Array",timeoutMs:0,cost:1}),d5=S("reduce",D.object({items:D.array(D.any),as:D.string,accumulator:D.string,initial:D.any,steps:D.array(D.any)}),D.any,async({items:Z,as:X,accumulator:$,initial:K,steps:Q},H)=>{let Y=O(Z,H),G=O(K,H);if(!Array.isArray(Y))throw Error("reduce: items is not an array");let z=G;for(let W of Y){if(H.signal?.aborted)throw Error("Execution aborted");let J=O1(H);J.state[X]=W,J.state[$]=z,await J1.exec({op:"seq",steps:Q},J),z=J.state.result??z}return z},{docs:"Reduce Array",timeoutMs:0,cost:1}),m5=S("find",D.object({items:D.array(D.any),as:D.string,condition:D.any}),D.any,async({items:Z,as:X,condition:$},K)=>{let Q=O(Z,K);if(!Array.isArray(Q))throw Error("find: items is not an array");for(let H of Q){if(K.signal?.aborted)throw Error("Execution aborted");let Y=O1(K);if(Y.state[X]=H,i($,Y))return H}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),l5=S("push",D.object({list:D.array(D.any),item:D.any}),D.array(D.any),async({list:Z,item:X},$)=>{let K=O(Z,$),Q=O(X,$);if(Array.isArray(K))K.push(Q);return K},{docs:"Push to Array",cost:1}),i5=S("len",D.object({list:D.any}),D.number,async({list:Z},X)=>{let $=O(Z,X);return Array.isArray($)||typeof $==="string"?$.length:0},{docs:"Length",cost:1}),p5=S("split",D.object({str:D.string,sep:D.string}),D.array(D.string),async({str:Z,sep:X},$)=>O(Z,$).split(O(X,$)),{docs:"Split String",cost:1}),n5=S("join",D.object({list:D.array(D.string),sep:D.string}),D.string,async({list:Z,sep:X},$)=>O(Z,$).join(O(X,$)),{docs:"Join String",cost:1}),c5=S("template",D.object({tmpl:D.string,vars:D.record(D.any)}),D.string,async({tmpl:Z,vars:X},$)=>{return O(Z,$).replace(/\{\{(\w+)\}\}/g,(Q,H)=>String(O(X[H],$)??""))},{docs:"String Template",cost:1}),o5=S("regexMatch",D.object({pattern:D.string,value:D.any}),D.boolean,async({pattern:Z,value:X},$)=>{if(j5(Z))throw Error(`Suspicious regex pattern rejected (potential ReDoS): ${Z}`);let K=O(X,$);return new RegExp(Z).test(K)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),s5=S("pick",D.object({obj:D.record(D.any),keys:D.array(D.string)}),D.record(D.any),async({obj:Z,keys:X},$)=>{let K=O(Z,$),Q=O(X,$),H={};if(K&&Array.isArray(Q))Q.forEach((Y)=>H[Y]=K[Y]);return H},{docs:"Pick Keys",cost:1}),a5=S("omit",D.object({obj:D.record(D.any),keys:D.array(D.string)}),D.record(D.any),async({obj:Z,keys:X},$)=>{let K=O(Z,$),Q=new Set(O(X,$)),H={};if(K)Object.keys(K).forEach((Y)=>{if(!Q.has(Y))H[Y]=K[Y]});return H},{docs:"Omit Keys",cost:1}),r5=S("merge",D.object({a:D.record(D.any),b:D.record(D.any)}),D.record(D.any),async({a:Z,b:X},$)=>({...O(Z,$),...O(X,$)}),{docs:"Merge Objects",cost:1}),t5=S("keys",D.object({obj:D.record(D.any)}),D.array(D.string),async({obj:Z},X)=>Object.keys(O(Z,X)??{}),{docs:"Object Keys",cost:1}),w7=10,j7="X-Agent-Depth";function e5(Z,X){try{let K=new URL(Z).hostname.toLowerCase();for(let Q of X){let H=Q.toLowerCase();if(H.startsWith("*.")){let Y=H.slice(1);if(K.endsWith(Y)||K===H.slice(2))return!0}else if(K===H)return!0}return!1}catch{return!1}}var Z$=S("httpFetch",D.object({url:D.string,method:D.string.optional,headers:D.record(D.string).optional,body:D.any.optional,responseType:D.string.optional}),D.any,async(Z,X)=>{let $=O(Z.url,X),K=O(Z.method,X),Q=O(Z.headers,X)||{},H=O(Z.body,X),Y=O(Z.responseType,X),G=X.context?.requestDepth??0;if(G>=w7)throw Error(`Agent request depth exceeded (max ${w7}). This prevents recursive agent loops.`);if(X.capabilities.fetch)return X.capabilities.fetch($,{method:K,headers:{...Q,[j7]:String(G+1)},body:H,signal:X.signal,responseType:Y});let z=X.context?.allowedFetchDomains;if(z){if(!e5($,z))throw Error(`Fetch blocked: domain not in allowlist. Allowed: ${z.join(", ")}`)}else{if(w5($))throw Error("Blocked URL: private/internal addresses not allowed in default fetch");try{let J=new URL($).hostname.toLowerCase();if(J!=="localhost"&&J!=="127.0.0.1"&&J!=="[::1]")throw Error("Fetch blocked: no allowedFetchDomains configured. Set ctx.context.allowedFetchDomains or provide a custom fetch capability.")}catch(W){if(W.message.includes("allowedFetchDomains"))throw W;throw Error(`Invalid URL: ${$}`)}}if(typeof globalThis.fetch==="function"){let W=await globalThis.fetch($,{method:K,headers:{...Q,[j7]:String(G+1)},body:H?JSON.stringify(H):void 0,signal:X.signal});if(Y==="dataUrl"){let L=await W.arrayBuffer(),_=new Uint8Array(L),U="";for(let w=0;w<_.length;w++)U+=String.fromCharCode(_[w]);let R=btoa(U);return`data:${W.headers.get("content-type")||"application/octet-stream"};base64,${R}`}let J=W.headers.get("content-type");if(Y==="json"||J&&J.includes("application/json"))return W.json();return W.text()}throw Error("Capability 'fetch' missing and no global fetch available")},{docs:"HTTP Fetch",timeoutMs:30000,cost:5}),$$=S("storeGet",D.object({key:D.string}),D.any,async({key:Z},X)=>{let $=O(Z,X);return X.capabilities.store?.get($)},{docs:"Store Get",cost:5}),X$=S("storeSet",D.object({key:D.string,value:D.any}),void 0,async({key:Z,value:X},$)=>{let K=O(Z,$),Q=O(X,$);return $.capabilities.store?.set(K,Q)},{docs:"Store Set",cost:5}),K$=S("storeQuery",D.object({query:D.any}),D.array(D.any),async({query:Z},X)=>X.capabilities.store?.query?.(O(Z,X))??[],{docs:"Store Query",cost:5}),Q$=S("storeVectorSearch",D.object({collection:D.string.optional,vector:D.array(D.number),k:D.number.optional}),D.array(D.any),async({collection:Z,vector:X,k:$},K)=>K.capabilities.store?.vectorSearch?.(O(Z,K),O(X,K),O($,K))??[],{docs:"Vector Search",cost:(Z,X)=>5+(O(Z.k,X)??5)}),H$=S("llmPredict",D.object({prompt:D.string,options:D.any.optional}),D.string,async({prompt:Z,options:X},$)=>{if(!$.capabilities.llm?.predict)throw Error("Capability 'llm.predict' missing");return $.capabilities.llm.predict(O(Z,$),O(X,$))},{docs:"LLM Predict",timeoutMs:120000,cost:100}),Y$=S("agentRun",D.object({agentId:D.any,input:D.any}),D.any,async({agentId:Z,input:X},$)=>{let K=O(Z,$),Q=O(X,$),H=Q;if(Q&&typeof Q==="object"&&!Array.isArray(Q)){H={};for(let G in Q)H[G]=O(Q[G],$)}if(a4(K)){let G=r4(K),z={...$,args:H,state:{},consts:new Set,output:void 0,error:void 0},W=$.resolver("seq");if(!W)throw Error("seq atom not found");if(await W.exec(G,z),z.error)throw Error(z.error.message||"Sub-agent failed");return z.output}if(K&&typeof K==="object"&&"op"in K){let G={...$,args:H,state:{},consts:new Set,output:void 0,error:void 0},z=$.resolver("seq");if(!z)throw Error("seq atom not found");if(await z.exec(K,G),G.error)throw Error(G.error.message||"Sub-agent failed");return G.output}if(!$.capabilities.agent?.run)throw Error("Capability 'agent.run' missing");let Y=await $.capabilities.agent.run(K,H);if(Y&&typeof Y==="object"&&"fuelUsed"in Y&&typeof Y.fuelUsed==="number"){if(Y.error)throw Error(Y.error.message||"Sub-agent failed");return Y.result}return Y},{docs:"Run Sub-Agent (accepts procedure token, AST, or agent ID)",cost:1}),G$=S("transpileCode",D.object({code:D.string}),D.any,async({code:Z},X)=>{if(!X.capabilities.code?.transpile)throw Error("Capability 'code.transpile' missing. Enable code transpilation by providing the code capability.");let $=O(Z,X);try{return X.capabilities.code.transpile($)}catch(K){throw Error(`Code transpilation failed: ${K.message}`)}},{docs:"Transpile AsyncJS code to AST",cost:1}),P7=10,z$=S("runCode",D.object({code:D.string,args:D.record(D.any).optional}),D.any,async({code:Z,args:X},$)=>{let K=$.runCodeDepth??0;if(K>=P7)throw Error(`runCode recursion limit exceeded (max ${P7}). This prevents infinite loops from dynamically generated code calling runCode.`);if(!$.capabilities.code?.transpile)throw Error("Capability 'code.transpile' missing. Enable dynamic code execution by providing the code capability.");let Q=O(Z,$),H=X?O(X,$):{},Y;try{Y=$.capabilities.code.transpile(Q)}catch(z){throw Error(`Code transpilation failed: ${z.message}`)}if(Y.op!=="seq")throw Error("Transpiled code must be a seq node");let G=O1($);if(G.args=H,G.output=void 0,G.runCodeDepth=K+1,await J1.exec(Y,G),G.error){$.error=G.error;return}return G.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),W$=S("jsonParse",D.object({str:D.string}),D.any,async({str:Z},X)=>JSON.parse(O(Z,X)),{docs:"Parse JSON",cost:1}),J$=S("jsonStringify",D.object({value:D.any}),D.string,async({value:Z},X)=>JSON.stringify(O(Z,X)),{docs:"Stringify JSON",cost:1}),_$=S("xmlParse",D.object({str:D.string}),D.any,async({str:Z},X)=>{if(!X.capabilities.xml?.parse)throw Error("Capability 'xml.parse' missing");return X.capabilities.xml.parse(O(Z,X))},{docs:"Parse XML",cost:1}),L$=S("memoize",D.object({key:D.string.optional,steps:D.array(D.any)}),D.any,async({key:Z,steps:X},$)=>{if(!$.memo)$.memo=new Map;let K=O(Z,$)??await t4.exec({value:X,algorithm:"SHA-256"},$);if($.memo.has(K))return $.memo.get(K);let Q=O1($);await J1.exec({op:"seq",steps:X},Q);let H=Q.output??Q.state.result;return $.memo.set(K,H),H},{docs:"Memoize steps result in memory",cost:1}),U$=S("cache",D.object({key:D.string.optional,steps:D.array(D.any),ttlMs:D.number.optional}),D.any,async({key:Z,steps:X,ttlMs:$},K)=>{if(!K.capabilities.store)throw Error("Capability 'store' missing for caching");let H=`cache:${O(Z,K)??await t4.exec({value:X,algorithm:"SHA-256"},K)}`,Y=await K.capabilities.store.get(H);if(Y)if(typeof Y==="object"&&Y._exp){if(Date.now()<Y._exp)return Y.val}else return Y;let G=O1(K);await J1.exec({op:"seq",steps:X},G);let z=G.output??G.state.result,W=Date.now()+($??86400000);if((K.fuel.current-=5)<=0)throw Error("Out of Fuel");return await K.capabilities.store.set(H,{val:z,_exp:W}),z},{docs:"Cache steps result in store with TTL",cost:5}),q$=S("random",D.object({min:D.number.optional,max:D.number.optional,format:D.string.optional,length:D.number.optional}),D.any,async({min:Z,max:X,format:$,length:K},Q)=>{let H=O($,Q)??"float",Y=O(K,Q)??10,G=O(Z,Q)??0,z=O(X,Q)??1;if(H==="base36"){let U="";if(typeof crypto<"u"&&crypto.getRandomValues){let R=new Uint8Array(Y);crypto.getRandomValues(R);for(let M=0;M<Y;M++)U+="0123456789abcdefghijklmnopqrstuvwxyz"[R[M]%36]}else for(let R=0;R<Y;R++)U+="0123456789abcdefghijklmnopqrstuvwxyz".charAt(Math.floor(Math.random()*36));return U}let W;if(typeof crypto<"u"&&crypto.getRandomValues){let _=new Uint32Array(1);crypto.getRandomValues(_),W=_[0]/4294967296}else W=Math.random();let J=z-G,L=W*J+G;if(H==="integer")return Math.floor(L);return L},{docs:"Generate Random",cost:1}),D$=S("uuid",void 0,D.string,async()=>{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();if(typeof crypto<"u"&&crypto.getRandomValues){let Z=new Uint8Array(16);crypto.getRandomValues(Z),Z[6]=Z[6]&15|64,Z[8]=Z[8]&63|128;let X=Array.from(Z,($)=>$.toString(16).padStart(2,"0")).join("");return`${X.slice(0,8)}-${X.slice(8,12)}-${X.slice(12,16)}-${X.slice(16,20)}-${X.slice(20)}`}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(Z)=>{let X=Math.random()*16|0;return(Z==="x"?X:X&3|8).toString(16)})},{docs:"Generate UUID",cost:1}),t4=S("hash",D.object({value:D.any,algorithm:D.string.optional}),D.string,async({value:Z,algorithm:X},$)=>{let K=typeof Z==="string"?Z:JSON.stringify(O(Z,$)),Q=O(X,$)||"SHA-256";if(typeof crypto<"u"&&crypto.subtle){let G=new TextEncoder().encode(K),z=await crypto.subtle.digest(Q,G);return Array.from(new Uint8Array(z)).map((J)=>J.toString(16).padStart(2,"0")).join("")}let H=0;for(let Y=0;Y<K.length;Y++){let G=K.charCodeAt(Y);H=(H<<5)-H+G,H|=0}return String(H)},{docs:"Hash a value",cost:1}),R$=S("consoleLog",D.object({message:D.any}),void 0,async({message:Z},X)=>{let $=O(Z,X);if(X.trace)X.trace.push({op:"console.log",input:{message:$},stateDiff:{},result:$,fuelBefore:X.fuel.current,fuelAfter:X.fuel.current,timestamp:new Date().toISOString()})},{docs:"Log to trace",cost:0.1}),B$=S("consoleWarn",D.object({message:D.any}),void 0,async({message:Z},X)=>{let $=O(Z,X),K=typeof $==="string"?$:JSON.stringify($);if(!X.warnings)X.warnings=[];if(X.warnings.push(K),X.trace)X.trace.push({op:"console.warn",input:{message:$},stateDiff:{},result:$,fuelBefore:X.fuel.current,fuelAfter:X.fuel.current,timestamp:new Date().toISOString()})},{docs:"Add warning",cost:0.1}),I$=S("consoleError",D.object({message:D.any}),void 0,async({message:Z},X)=>{let $=O(Z,X),K=typeof $==="string"?$:JSON.stringify($);X.error=new H1(K,"console.error")},{docs:"Emit error and stop",cost:0.1}),A$=S("storeProcedure",D.object({ast:D.any,ttl:D.number.optional,maxSize:D.number.optional}),D.string,async({ast:Z,ttl:X,maxSize:$},K)=>{let Q=O(Z,K),H=X?O(X,K):I5,Y=$?O($,K):A5;if(!Q||typeof Q!=="object"||!Q.op)throw Error('Invalid AST: must be an object with an "op" property');let G=JSON.stringify(Q);if(G.length>Y)throw Error(`AST too large: ${G.length} bytes exceeds limit of ${Y} bytes. Consider reducing AST size or using a shorter TTL.`);let z=F5(),W=Date.now();return n1.set(z,{ast:Q,createdAt:W,expiresAt:W+H}),z},{docs:"Store an AST and return a token for later execution",cost:1}),F$=S("releaseProcedure",D.object({token:D.string}),D.boolean,async({token:Z},X)=>{let $=O(Z,X);return n1.delete($)},{docs:"Release a stored procedure by token",cost:0.1}),M$=S("clearExpiredProcedures",void 0,D.number,async()=>{let Z=Date.now(),X=0;for(let[$,K]of n1)if(Z>K.expiresAt)n1.delete($),X++;return X},{docs:"Clear all expired procedures and return count",cost:0.5}),W4={seq:J1,if:O5,while:N5,return:E5,try:T5,Error:S5,varSet:k5,constSet:g5,varGet:b5,varsImport:v5,varsLet:f5,varsExport:y5,scope:h5,map:x5,filter:u5,reduce:d5,find:m5,push:l5,len:i5,split:p5,join:n5,template:c5,regexMatch:o5,pick:s5,omit:a5,merge:r5,keys:t5,httpFetch:Z$,storeGet:$$,storeSet:X$,storeQuery:K$,storeVectorSearch:Q$,llmPredict:H$,agentRun:Y$,transpileCode:G$,runCode:z$,jsonParse:W$,jsonStringify:J$,xmlParse:_$,memoize:L$,cache:U$,random:q$,uuid:D$,hash:t4,consoleLog:R$,consoleWarn:B$,consoleError:I$,storeProcedure:A$,releaseProcedure:F$,clearExpiredProcedures:M$};var w$=new Set(["true","false","null","undefined","and","or","not"]);function j$(Z,X){let $=Z.replace(/"[^"]*"/g,'""').replace(/'[^']*'/g,"''"),K=[],Q=/(?<![.])\b([a-zA-Z_][a-zA-Z0-9_]*)\b/g,H;while((H=Q.exec($))!==null)K.push(H[1]);let G=[...new Set(K)].filter((z)=>!w$.has(z)&&!(z in X)&&!new RegExp(`\\b${z}\\s*\\(`).test($));if(G.length>0)console.warn(`[Agent99 Builder] Condition "${Z}" references variables not in vars mapping: ${G.join(", ")}. Add them to vars or use AsyncJS syntax (ajs\`...\`) which handles this automatically.`)}function J4(Z,X){j$(Z,X);let $=P$(Z),K=S7($,0,X);if(K.pos<$.length){let Q=$.slice(K.pos).join(" ");throw Error(`Unsupported condition syntax near '${Q}' in: ${Z}
|
|
402
|
+
Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return K.node}function P$(Z){let X=[],$=0;while($<Z.length){while($<Z.length&&/\s/.test(Z[$]))$++;if($>=Z.length)break;if(Z[$]==='"'||Z[$]==="'"){let K=Z[$++],Q="";while($<Z.length&&Z[$]!==K)if(Z[$]==="\\"&&$+1<Z.length)$++,Q+=Z[$++];else Q+=Z[$++];$++,X.push(JSON.stringify(Q));continue}if(Z.slice($,$+2).match(/^(&&|\|\||==|!=|>=|<=)$/)){X.push(Z.slice($,$+2)),$+=2;continue}if("+-*/%><!().?:[]".includes(Z[$])){X.push(Z[$]),$++;continue}if(/\d/.test(Z[$])){let K="";while($<Z.length&&/[\d.]/.test(Z[$]))K+=Z[$++];X.push(K);continue}if(/[a-zA-Z_]/.test(Z[$])){let K="";while($<Z.length&&/[a-zA-Z0-9_]/.test(Z[$]))K+=Z[$++];X.push(K);continue}$++}return X}function S7(Z,X,$){return V$(Z,X,$)}function V$(Z,X,$){let{node:K,pos:Q}=O7(Z,X,$);while(Z[Q]==="||"){Q++;let{node:H,pos:Y}=O7(Z,Q,$);K={$expr:"logical",op:"||",left:K,right:H},Q=Y}return{node:K,pos:Q}}function O7(Z,X,$){let{node:K,pos:Q}=N7(Z,X,$);while(Z[Q]==="&&"){Q++;let{node:H,pos:Y}=N7(Z,Q,$);K={$expr:"logical",op:"&&",left:K,right:H},Q=Y}return{node:K,pos:Q}}function N7(Z,X,$){let{node:K,pos:Q}=E7(Z,X,$),H=["==","!=",">","<",">=","<="];while(H.includes(Z[Q])){let Y=Z[Q++],{node:G,pos:z}=E7(Z,Q,$);K={$expr:"binary",op:Y,left:K,right:G},Q=z}return{node:K,pos:Q}}function E7(Z,X,$){let{node:K,pos:Q}=T7(Z,X,$);while(Z[Q]==="+"||Z[Q]==="-"){let H=Z[Q++],{node:Y,pos:G}=T7(Z,Q,$);K={$expr:"binary",op:H,left:K,right:Y},Q=G}return{node:K,pos:Q}}function T7(Z,X,$){let{node:K,pos:Q}=e4(Z,X,$);while(Z[Q]==="*"||Z[Q]==="/"||Z[Q]==="%"){let H=Z[Q++],{node:Y,pos:G}=e4(Z,Q,$);K={$expr:"binary",op:H,left:K,right:Y},Q=G}return{node:K,pos:Q}}function e4(Z,X,$){if(Z[X]==="!"||Z[X]==="-"){let K=Z[X++],{node:Q,pos:H}=e4(Z,X,$);return{node:{$expr:"unary",op:K,argument:Q},pos:H}}return C$(Z,X,$)}function C$(Z,X,$){let K=Z[X];if(K==="("){let{node:Q,pos:H}=S7(Z,X+1,$);return{node:Q,pos:H+1}}if(K&&K.startsWith('"'))return{node:{$expr:"literal",value:JSON.parse(K)},pos:X+1};if(K&&/^\d/.test(K))return{node:{$expr:"literal",value:parseFloat(K)},pos:X+1};if(K==="true")return{node:{$expr:"literal",value:!0},pos:X+1};if(K==="false")return{node:{$expr:"literal",value:!1},pos:X+1};if(K==="null")return{node:{$expr:"literal",value:null},pos:X+1};if(K&&/^[a-zA-Z_]/.test(K)){let Q={$expr:"ident",name:K},H=X+1;while(Z[H]==="."){H++;let Y=Z[H++];Q={$expr:"member",object:Q,property:Y}}return{node:Q,pos:H}}return{node:{$expr:"literal",value:null},pos:X+1}}class e{steps=[];atoms;proxy;constructor(Z){return this.atoms=Z,this.proxy=new Proxy(this,{get:(X,$,K)=>{if($ in X)return X[$];if(typeof $==="string"&&$ in X.atoms)return(Q)=>{let H=X.atoms[$];return X.add(H.create(Q)),K};return}}),this.proxy}add(Z){return this.steps.push(Z),this.proxy}as(Z){if(this.steps.length===0)throw Error("No step to capture");let X=this.steps[this.steps.length-1];return X.result=Z,this.proxy}step(Z){return this.add(Z)}return(Z){let X=this.atoms.return;if(!X)throw Error("Atom 'return' not found");let $=Z.schema??Z;return this.add(X.create({schema:$}))}toJSON(){return{op:"seq",steps:[...this.steps]}}varsImport(Z){return this.add(this.atoms.varsImport.create({keys:Z}))}varsExport(Z){return this.add(this.atoms.varsExport.create({keys:Z}))}if(Z,X,$,K){let Q=new e(this.atoms);$(Q);let H;if(K){let z=new e(this.atoms);K(z),H=z.steps}let Y=J4(Z,X),G=this.atoms.if;return this.add(G.create({condition:Y,then:Q.steps,else:H}))}while(Z,X,$){let K=new e(this.atoms);$(K);let Q=J4(Z,X),H=this.atoms.while;return this.add(H.create({condition:Q,body:K.steps}))}scope(Z){let X=new e(this.atoms);Z(X);let $=this.atoms.scope;return this.add($.create({steps:X.steps}))}map(Z,X,$){let K=new e(this.atoms);$(K);let Q=this.atoms.map;return this.add(Q.create({items:Z,as:X,steps:K.steps}))}filter(Z,X,$,K={}){let Q=J4($,K),H=this.atoms.filter;return this.add(H.create({items:Z,as:X,condition:Q}))}find(Z,X,$,K={}){let Q=J4($,K),H=this.atoms.find;return this.add(H.create({items:Z,as:X,condition:Q}))}reduce(Z,X,$,K,Q){let H=new e(this.atoms);Q(H);let Y=this.atoms.reduce;return this.add(Y.create({items:Z,as:X,accumulator:$,initial:K,steps:H.steps}))}memoize(Z,X){let $=new e(this.atoms);Z($);let K=this.atoms.memoize;return this.add(K.create({key:X,steps:$.steps}))}cache(Z,X,$){let K=new e(this.atoms);Z(K);let Q=this.atoms.cache;return this.add(Q.create({key:X,steps:K.steps,ttlMs:$}))}try(Z){let X=new e(this.atoms);Z.try(X);let $;if(Z.catch){let Q=new e(this.atoms);Z.catch(Q),$=Q.steps}let K=this.atoms.try;return this.add(K.create({try:X.steps,catch:$}))}}var O$={take(Z){return new e(W4)},custom(Z){return new e(Z)},args(Z){return{$kind:"arg",path:Z}},val(Z){return Z}},XQ=O$;import{validate as N$}from"tosijs-schema";function q0(Z,X={}){let{ast:$,returnType:K,originalSource:Q,requiredParams:H}=F1(Z,{filename:X.filename,colonShorthand:!0,vmTarget:!0}),Y=N0($,X.filename),{ast:G,signature:z,warnings:W}=K0(Y,Q,K,X,H);return{ast:G,signature:z,warnings:W}}var E$=10;class Z6{atoms;constructor(Z={}){this.atoms={...W4,...Z}}get builder(){return new e(this.atoms)}get Agent(){return new e(this.atoms)}get A99(){return this.Agent}resolve(Z){return this.atoms[Z]}getTools(Z="all"){let X=Object.values(this.atoms);if(Array.isArray(Z))X=X.filter(($)=>Z.includes($.op));else if(Z==="flow"){let $=["seq","if","while","return","try","varSet","varGet","scope"];X=X.filter((K)=>$.includes(K.op))}return X.map(($)=>({type:"function",function:{name:$.op,description:$.docs,parameters:$.inputSchema?.schema??{}}}))}async run(Z,X={},$={}){let K;if(typeof Z==="string")if(a4(Z))K=r4(Z);else try{K=q0(Z).ast}catch(U){throw Error(`AJS transpilation failed: ${U.message}`)}else K=Z;let Q=$.fuel??1000,H=$.timeoutMs??Q*E$,Y=$.capabilities??{},G=[];if(!Y.store){let U=new Map,R=!1;Y.store={get:async(M)=>{if(!R)R=!0,G.push("Using default in-memory store (not suitable for production)");return U.get(M)},set:async(M,w)=>{if(!R)R=!0,G.push("Using default in-memory store (not suitable for production)");U.set(M,w)}}}let z=new AbortController,W=setTimeout(()=>z.abort(),H);if($.signal)$.signal.addEventListener("abort",()=>z.abort());let J={fuel:{current:Q},args:X,state:{},consts:new Set,capabilities:Y,resolver:(U)=>this.resolve(U),output:void 0,signal:z.signal,costOverrides:$.costOverrides,context:$.context,warnings:G};if($.trace)J.trace=[];if(K.op!=="seq")throw Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let L=K.inputSchema;if(L&&!N$(X,L)){let U=new H1("Input validation failed: args do not match expected schema","vm.run");return{result:U,error:U,fuelUsed:0,trace:J.trace,warnings:G.length>0?G:void 0}}try{await Promise.race([this.resolve("seq")?.exec(K,J),new Promise((U,R)=>{if(z.signal.addEventListener("abort",()=>{R(Error(`Execution timeout after ${H}ms (fuel: ${Q}). Consider increasing fuel or optimizing your agent.`))}),z.signal.aborted)R(Error(`Execution timeout after ${H}ms (fuel: ${Q}). Consider increasing fuel or optimizing your agent.`))})])}catch(U){if(U.message?.includes("timeout")||U.message?.includes("aborted")||z.signal.aborted)J.error=new H1(`Execution timeout after ${H}ms (fuel: ${Q}). Consider increasing fuel or optimizing your agent.`,"vm.run");else throw U}finally{clearTimeout(W)}if(J.error&&J.output===void 0)J.output=J.error;let _=[...G,...J.warnings??[]];return{result:J.output,error:J.error,fuelUsed:Q-J.fuel.current,trace:J.trace,warnings:_.length>0?_:void 0}}}var T$=null,k7=()=>T$??=new Z6;function x1(Z){if(!Z||typeof Z!=="object")return;if(Array.isArray(Z)){for(let X of Z)x1(X);return}if(Z.op==="return"&&"value"in Z)Z.value={__result:Z.value};if(Z.steps)x1(Z.steps);if(Z.then)x1(Z.then);if(Z.else)x1(Z.else);if(Z.body)x1(Z.body)}async function S$(Z){let{code:X,context:$={},fuel:K=1000,timeoutMs:Q,capabilities:H={}}=Z,Y=k7(),z=/\breturn\b/.test(X)?`function __eval() { ${X} }`:`function __eval() { return (${X}) }`;try{let{ast:W}=q0(z);x1(W);let J=await Y.run(W,$,{fuel:K,timeoutMs:Q,capabilities:H}),L=J.result;return{result:L&&typeof L==="object"&&"__result"in L?L.__result:L,fuelUsed:J.fuelUsed,error:J.error?{message:J.error.message||String(J.error)}:void 0}}catch(W){return{result:void 0,fuelUsed:K,error:{message:W.message||String(W)}}}}async function k$(Z){let{body:X,params:$=[],fuel:K=1000,timeoutMs:Q,capabilities:H={}}=Z,Y=k7(),z=`function __safeFn(${$.join(", ")}) { ${X} }`,{ast:W}=q0(z);return x1(W),async(...J)=>{let L={};for(let _=0;_<$.length;_++)L[$[_]]=J[_];try{let _=await Y.run(W,L,{fuel:K,timeoutMs:Q,capabilities:H}),U=_.result;return{result:U&&typeof U==="object"&&"__result"in U?U.__result:U,fuelUsed:_.fuelUsed,error:_.error?{message:_.error.message||String(_.error)}:void 0}}catch(_){return{result:void 0,fuelUsed:K,error:{message:_.message||String(_)}}}}}function L4(Z,X={}){let{ast:$,returnType:K,originalSource:Q,requiredParams:H}=F1(Z,{filename:X.filename,colonShorthand:!0,vmTarget:!0}),Y=N0($,X.filename),{ast:G,signature:z,warnings:W}=K0(Y,Q,K,X,H);return{ast:G,signature:z,warnings:W}}function FQ(Z,...X){if(typeof Z==="string")return L4(Z).ast;let $=Z.reduce((K,Q,H)=>K+Q+(X[H]!==void 0?String(X[H]):""),"");return L4($).ast}function wQ(Z,X,...$){if(typeof Z==="string")return J0(Z,X);let K=X!==void 0?[X,...$]:$,Q=Z.reduce((H,Y,G)=>H+Y+(K[G]!==void 0?String(K[G]):""),"");return J0(Q)}async function jQ(Z,X={},$){let K=$??await Q4(),Q=await K.getTranspile(Z);if(Q)return{ast:Q.ast,signature:Q.signature,warnings:Q.warnings};let H=L4(Z,X);return K.setTranspile(Z,{ast:H.ast,signature:H.signature,warnings:H.warnings}),H}async function PQ(Z,X={},$){let K=$??await Q4(),Q=await K.getTJS(Z);if(Q)return{code:Q.code,types:Q.types,metadata:Q.types,testRunner:Q.testRunner,testCount:Q.testCount,warnings:Q.warnings};let H=J0(Z,X);return K.setTJS(Z,{code:H.code,types:H.types,testRunner:H.testRunner,testCount:H.testCount,warnings:H.warnings}),H}function VQ(Z,X,$){let{ast:K,signature:Q}=L4(Z),H=async(Y)=>{return(await X.run(K,Y,$)).result};return H.signature=Q,H.ast=K,H}function CQ(Z){return Object.entries(Z).map(([X,$])=>{let K=$.signature,Q={},H=[];for(let[Y,G]of Object.entries(K.parameters)){if(Q[Y]=_4(G.type),G.description)Q[Y].description=G.description;if(G.required)H.push(Y)}return{type:"function",function:{name:K.name||X,description:K.description,parameters:{type:"object",properties:Q,required:H}}}})}function _4(Z){switch(Z.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"array":return{type:"array",items:Z.items?_4(Z.items):{}};case"object":if(!Z.shape)return{type:"object"};return{type:"object",properties:Object.fromEntries(Object.entries(Z.shape).map(([X,$])=>[X,_4($)]))};case"union":if(!Z.members)return{};return{anyOf:Z.members.map(_4)};case"any":default:return{}}}import{s as k}from"tosijs-schema";var g7=S("storeVectorize",k.object({text:k.string,model:k.string.optional}),k.array(k.number),async({text:Z},X)=>{let $=X.capabilities.vector;if(!$)throw Error("Capability 'vector' missing. Ensure vector battery is loaded.");let K=O(Z,X);return $.embed(K)},{docs:"Generate embeddings using vector battery",cost:20}),b7=S("storeCreateCollection",k.object({collection:k.string,dimension:k.number.optional}),void 0,async({collection:Z,dimension:X},$)=>{let K=$.capabilities.store;if(!K?.createCollection)throw Error("Capability 'store' missing or does not support createCollection.");let Q=O(Z,$),H=O(X,$);return K.createCollection(Q,void 0,H)},{docs:"Create a vector store collection",cost:5}),v7=S("storeVectorAdd",k.object({collection:k.string,doc:k.any}),void 0,async({collection:Z,doc:X},$)=>{let K=$.capabilities.store;if(!K?.vectorAdd)throw Error("Capability 'store' missing or does not support vectorAdd.");let Q=O(Z,$),H=O(X,$);return K.vectorAdd(Q,H)},{docs:"Add a document to a vector store collection",cost:5}),f7=S("storeSearch",k.object({collection:k.string,queryVector:k.array(k.number),k:k.number.optional,filter:k.record(k.any).optional}),k.array(k.any),async({collection:Z,queryVector:X,k:$,filter:K},Q)=>{let H=Q.capabilities.store;if(!H?.vectorSearch)throw Error("Capability 'store' missing or does not support vectorSearch.");let Y=O(Z,Q),G=O(X,Q),z=O($,Q)??5,W=O(K,Q);return H.vectorSearch(Y,G,z,W)},{docs:"Search vector store",cost:(Z,X)=>5+(O(Z.k,X)??5)}),y7=S("llmPredictBattery",k.object({system:k.string.optional,user:k.string,tools:k.array(k.any).optional,responseFormat:k.any.optional}),k.object({role:k.string.optional,content:k.string.optional,tool_calls:k.array(k.any).optional}),async({system:Z,user:X,tools:$,responseFormat:K},Q)=>{let H=Q.capabilities.llmBattery;if(!H?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let Y=O(Z,Q)??"You are a helpful agent.",G=O(X,Q),z=O($,Q),W=O(K,Q);return H.predict(Y,G,z,W)},{docs:"Generate completion using LLM battery",cost:100}),h7=S("llmVision",k.object({system:k.string.optional,prompt:k.string,images:k.array(k.string),responseFormat:k.any.optional}),k.object({role:k.string.optional,content:k.string.optional,tool_calls:k.array(k.any).optional}),async({system:Z,prompt:X,images:$,responseFormat:K},Q)=>{let H=Q.capabilities.llmBattery;if(!H?.predict)throw Error("Capability 'llmBattery' missing or invalid.");let Y=O(Z,Q)??"You analyze images accurately and concisely.",G=O(X,Q),z=O($,Q)??[],W=O(K,Q);return H.predict(Y,{text:G,images:z},void 0,W)},{docs:"Analyze images using a vision model",timeoutMs:120000,cost:150});var cQ={storeCreateCollection:b7,storeSearch:f7,storeVectorAdd:v7,storeVectorize:g7,llmPredictBattery:y7,llmVision:h7};var x7=new Map,U4=new Map;function g$(Z,X){if(Z.length!==X.length)throw Error("Vectors must have the same length for cosine similarity.");let $=0,K=0,Q=0;for(let H=0;H<Z.length;H++)$+=Z[H]*X[H],K+=Z[H]*Z[H],Q+=X[H]*X[H];if(K=Math.sqrt(K),Q=Math.sqrt(Q),K===0||Q===0)return 0;return $/(K*Q)}function $6(){return{async get(Z){return x7.get(Z)},async set(Z,X){x7.set(Z,X)},async createCollection(Z,X,$){if(U4.has(Z))console.warn(`Collection '${Z}' already exists. Overwriting.`);U4.set(Z,[])},async vectorAdd(Z,X){let $=U4.get(Z);if(!$)throw Error(`Collection '${Z}' not found. Create it first.`);if(!X.embedding||!Array.isArray(X.embedding))throw Error("Document must have an 'embedding' property that is an array of numbers.");$.push(X)},async vectorSearch(Z,X,$=5){let K=U4.get(Z);if(!K)throw Error(`Collection '${Z}' not found. Create it first.`);let Q=K.map((H)=>({doc:H,score:g$(X,H.embedding)}));return Q.sort((H,Y)=>Y.score-H.score),Q.slice(0,$).map((H)=>H.doc)}}}function b$(Z){if(typeof Z==="string")return{role:"user",content:Z};let X=[{type:"text",text:Z.text}];for(let $ of Z.images||[])X.push({type:"image_url",image_url:{url:$}});return{role:"user",content:X}}var v$="http://localhost:1234/v1";function u7(Z,X=v$){return{async predict($,K,Q,H){try{let Y=H?Z.getStructuredLLM():Z.getLLM(),G=[{role:"system",content:$},b$(K)],z=await fetch(`${X}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:Y.id,messages:G,temperature:0.7,tools:Q,response_format:H})});if(!z.ok)throw Error(`LLM Error: ${z.status} ${z.statusText}`);return(await z.json()).choices[0]?.message??{content:""}}catch(Y){if(Y.cause?.code==="ECONNREFUSED")throw Error("No LLM provider configured. Please start LM Studio or provide an API key.");throw Y}},async embed($){try{let K=Z.getEmbedding(),Q=await fetch(`${X}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:K.id,input:$})});if(!Q.ok)throw Error(`Embedding Error: ${Q.status}`);return(await Q.json()).data[0]?.embedding??[]}catch(K){if(K.cause?.code==="ECONNREFUSED")throw Error("No LLM provider configured. Please start LM Studio or provide an API key.");throw K}}}}var D0=typeof window<"u"&&typeof window.localStorage<"u";async function h$(Z){try{if(D0){let X=window.localStorage.getItem(".models.cache.json");if(!X)return null;let $=JSON.parse(X);if($.baseUrl!==Z)return null;if(Date.now()-$.timestamp>86400000)return null;return $.models}else{let X=await import("node:fs/promises"),K=(await Promise.resolve().then(() => (Q6(),K6))).join(process.cwd(),".models.cache.json");try{let Q=await X.readFile(K,"utf-8"),H=JSON.parse(Q);if(H.baseUrl!==Z)return null;if(Date.now()-H.timestamp>86400000)return null;return H.models}catch{return null}}}catch(X){return console.warn("⚠️ Error reading model cache:",X),null}}async function x$(Z,X){let $={timestamp:Date.now(),baseUrl:Z,models:X};try{if(D0)window.localStorage.setItem(".models.cache.json",JSON.stringify($));else{let K=await import("node:fs/promises"),H=(await Promise.resolve().then(() => (Q6(),K6))).join(process.cwd(),".models.cache.json");await K.writeFile(H,JSON.stringify($,null,2))}}catch(K){console.error("❌ Error writing model cache:",K)}}var R0=async(Z,X)=>{let $=new AbortController,K=setTimeout(()=>$.abort(),60000);try{let Q=await fetch(Z,{...X,signal:$.signal});return clearTimeout(K),Q}catch(Q){throw clearTimeout(K),Q}};async function u$(Z,X){try{let $={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},K=await R0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:X,messages:[{role:"system",content:"You respond in JSON."},{role:"user",content:'Return JSON: {"status": "ok"}'}],response_format:$,max_tokens:20})});if(!K.ok){if(K.status===400)return d$(Z,X);return{ok:!1,msg:`HTTP ${K.status}`}}let Q=await K.json();return JSON.parse(Q.choices[0].message.content),{ok:!0,msg:"OK (Schema)"}}catch($){return{ok:!1,msg:$.message||"Error"}}}async function d$(Z,X){try{if((await R0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:X,messages:[{role:"user",content:'JSON: {"a":1}'}],response_format:{type:"json_object"},max_tokens:10})})).ok)return{ok:!0,msg:"OK (Legacy Mode)"};return{ok:!1,msg:"Not Supported"}}catch{return{ok:!1,msg:"Legacy Fail"}}}async function m$(Z,X){try{return(await R0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:X,messages:[{role:"user",content:"hi"}],max_tokens:1})})).ok}catch{return!1}}async function l$(Z,X){try{let $=await R0(`${Z}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:X,input:"test"})});if(!$.ok)return null;return(await $.json()).data[0]?.embedding?.length??null}catch{return null}}var i$="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";async function p$(Z,X){try{return(await R0(`${Z}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:X,messages:[{role:"user",content:[{type:"text",text:"What color is this?"},{type:"image_url",image_url:{url:i$}}]}],max_tokens:10})})).ok}catch{return!1}}async function Z8(Z){let X=await h$(Z),$=[];try{let Y=await fetch(`${Z}/models`);if(!Y.ok)throw Error("Could not connect");$=(await Y.json()).data.map((z)=>z.id).sort()}catch(Y){if(X)return console.log("⚠️ LM Studio unavailable, using cached model audit."),X;return console.error("❌ Failed to connect to LM Studio."),[]}if(X){let Y=X.map((G)=>G.id).sort();if(JSON.stringify($)===JSON.stringify(Y))return console.log("✅ Using cached model audit."),X;console.log("\uD83D\uDD0D Model list changed. Re-running audit...")}console.log("\uD83D\uDD0D Scanning models (this may take a moment)...");let K=[],Q=$.map((Y)=>({id:Y})),H;if(!D0)H=await import("node:readline");for(let Y of Q){if(!D0&&H)H.cursorTo(process.stdout,0),process.stdout.write(`\uD83D\uDC49 Testing: ${Y.id}...`),H.clearLine(process.stdout,1);let G="Unknown",z=!1,W=!1,J="",L=void 0,_=await m$(Z,Y.id),U=await l$(Z,Y.id);if(U)L=U;if(_){G="LLM";let R=await u$(Z,Y.id);if(z=R.ok,W=await p$(Z,Y.id),J=z?R.msg:`Fail: ${R.msg}`,W)J+=" +Vision"}else if(U)G="Embedding",J=`OK (Dim: ${U})`;else J="LLM Fail";K.push({id:Y.id,type:G,structuredOutput:z,vision:W,dimension:L,status:J})}if(!D0&&H)H.cursorTo(process.stdout,0),H.clearLine(process.stdout,0);return console.log(`
|
|
403
|
+
`),console.table(K),await x$(Z,K),console.log("\uD83D\uDCDD Audit results saved to cache."),K}var n$="http://localhost:1234/v1";class H6{baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;constructor(Z=n$){this.baseUrl=Z}async audit(){this.models=await Z8(this.baseUrl),this.selectDefaults()}selectDefaults(){if(this.defaultEmbedding=this.models.find((Z)=>Z.type==="Embedding")||null,this.defaultLLM=this.models.find((Z)=>Z.type==="LLM")||null,this.defaultStructuredLLM=this.models.find((Z)=>Z.type==="LLM"&&Z.structuredOutput)||null,!this.defaultEmbedding)console.warn("⚠️ No embedding model found.");if(!this.defaultLLM)console.warn("⚠️ No LLM found.");if(!this.defaultStructuredLLM)console.warn("⚠️ No LLM with structured output support found.")}getModels(){return this.models}_setDefaultModel(Z,X,$,K){let Q=this.models.find((H)=>H.id===Z&&$(H));if(!Q)throw Error(`Model '${Z}' not found or is not ${K}.`);this[X]=Q}setDefaultLLM(Z){this._setDefaultModel(Z,"defaultLLM",(X)=>X.type==="LLM","an LLM")}setDefaultEmbedding(Z){this._setDefaultModel(Z,"defaultEmbedding",(X)=>X.dimension!==void 0,"an embedding model")}setDefaultStructuredLLM(Z){this._setDefaultModel(Z,"defaultStructuredLLM",(X)=>X.type==="LLM"&&X.structuredOutput,"a structured-output LLM")}getLLM(){if(!this.defaultLLM)throw Error("No LLM available.");return this.defaultLLM}getEmbedding(){if(!this.defaultEmbedding)throw Error("No embedding model available.");return this.defaultEmbedding}getStructuredLLM(){if(!this.defaultStructuredLLM)throw Error("No structured-output LLM available.");return this.defaultStructuredLLM}}var c$=typeof window<"u",o$=c$&&window.location.protocol==="https:",B0=null,Y6=null,$8=!1;async function s$(){if($8)return{localModels:B0,llm:Y6};if($8=!0,o$)return console.log("\uD83D\uDCE1 HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{B0=new H6,await B0.audit(),Y6=u7(B0)}catch(Z){console.warn("⚠️ Could not connect to local LLM:",Z)}return{localModels:B0,llm:Y6}}async function a$(){let{localModels:Z,llm:X}=await s$();return{vector:X?{embed:X.embed}:void 0,store:$6(),llmBattery:X,models:Z}}async function KH(){return a$()}var QH={store:$6(),llmBattery:null,vector:void 0,models:null};function r$(Z){if(typeof Z!=="string")return!1;let X=new Date(Z);return!isNaN(X.getTime())&&Z.includes("T")}function t$(){return new Date().toISOString()}function c1(Z,X,$,K=0,Q=0,H=0,Y=0){return new Date(Date.UTC(Z,X-1,$,K,Q,H,Y)).toISOString()}function X8(Z){let X=new Date(Z);if(isNaN(X.getTime()))throw Error(`Invalid date string: ${Z}`);return X.toISOString()}function e$(Z){try{return X8(Z)}catch{return null}}function I0(Z,X){let $=new Date(Z);return $.setTime($.getTime()+X),$.toISOString()}function ZX(Z,X){return I0(Z,X*1000)}function $X(Z,X){return I0(Z,X*60*1000)}function XX(Z,X){return I0(Z,X*60*60*1000)}function K8(Z,X){return I0(Z,X*24*60*60*1000)}function KX(Z,X){return K8(Z,X*7)}function QX(Z,X){let $=new Date(Z),K=$.getUTCMonth()+X;if($.setUTCMonth(K),$.getUTCMonth()!==(K%12+12)%12)$.setUTCDate(0);return $.toISOString()}function HX(Z,X){let $=new Date(Z),K=$.getUTCDate();if($.setUTCFullYear($.getUTCFullYear()+X),$.getUTCDate()!==K)$.setUTCDate(0);return $.toISOString()}function N1(Z,X){return new Date(Z).getTime()-new Date(X).getTime()}function YX(Z,X){return Math.floor(N1(Z,X)/1000)}function GX(Z,X){return Math.floor(N1(Z,X)/60000)}function zX(Z,X){return Math.floor(N1(Z,X)/3600000)}function WX(Z,X){return Math.floor(N1(Z,X)/86400000)}function o1(Z){return new Date(Z).getUTCFullYear()}function D4(Z){return new Date(Z).getUTCMonth()+1}function G6(Z){return new Date(Z).getUTCDate()}function JX(Z){return new Date(Z).getUTCHours()}function _X(Z){return new Date(Z).getUTCMinutes()}function LX(Z){return new Date(Z).getUTCSeconds()}function UX(Z){return new Date(Z).getUTCMilliseconds()}function qX(Z){let X=new Date(Z).getUTCDay();return X===0?7:X}function R4(Z,X,$){let K=new Date(Z),Q={timeZone:X,...$};return new Intl.DateTimeFormat(void 0,Q).format(K)}function DX(Z,X){return R4(Z,X,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function RX(Z,X){return R4(Z,X,{year:"numeric",month:"short",day:"numeric"})}function BX(Z,X){return R4(Z,X,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function IX(Z){return Z.slice(0,10)}function Q8(Z,X){return N1(Z,X)<0}function H8(Z,X){return N1(Z,X)>0}function AX(Z,X){return N1(Z,X)===0}function FX(Z,X){return Q8(Z,X)?Z:X}function MX(Z,X){return H8(Z,X)?Z:X}function wX(Z){return c1(o1(Z),D4(Z),G6(Z))}function jX(Z){return c1(o1(Z),D4(Z),G6(Z),23,59,59,999)}function PX(Z){return c1(o1(Z),D4(Z),1)}function VX(Z){let X=new Date(Z);return X.setUTCMonth(X.getUTCMonth()+1,0),X.setUTCHours(23,59,59,999),X.toISOString()}function CX(Z){return c1(o1(Z),1,1)}function OX(Z){return c1(o1(Z),12,31,23,59,59,999)}var s1={isValid:r$,now:t$,from:c1,parse:X8,tryParse:e$,addMilliseconds:I0,addSeconds:ZX,addMinutes:$X,addHours:XX,addDays:K8,addWeeks:KX,addMonths:QX,addYears:HX,diff:N1,diffSeconds:YX,diffMinutes:GX,diffHours:zX,diffDays:WX,year:o1,month:D4,day:G6,hour:JX,minute:_X,second:LX,millisecond:UX,dayOfWeek:qX,toLocal:R4,format:DX,formatDate:RX,formatTime:BX,toDate:IX,isBefore:Q8,isAfter:H8,isEqual:AX,min:FX,max:MX,startOfDay:wX,endOfDay:jX,startOfMonth:PX,endOfMonth:VX,startOfYear:CX,endOfYear:OX};function z6(Z){if(typeof Z!=="string")return!1;if(!/^\d{4}-\d{2}-\d{2}$/.test(Z))return!1;let X=parseInt(Z.slice(0,4),10),$=parseInt(Z.slice(5,7),10),K=parseInt(Z.slice(8,10),10);if($<1||$>12)return!1;if(K<1)return!1;let Q=[31,28,31,30,31,30,31,31,30,31,30,31],H=$===2&&(X%4===0&&X%100!==0||X%400===0)?29:Q[$-1];return K<=H}function NX(){return s1.toDate(s1.now())}function EX(Z){let X=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:Z,year:"numeric",month:"2-digit",day:"2-digit"}).format(X)}function _1(Z,X,$){let K=String(Z).padStart(4,"0"),Q=String(X).padStart(2,"0"),H=String($).padStart(2,"0"),Y=`${K}-${Q}-${H}`;if(!z6(Y))throw Error(`Invalid date: ${Z}-${X}-${$}`);return Y}function Y8(Z){if(/^\d{4}-\d{2}-\d{2}$/.test(Z)){if(!z6(Z))throw Error(`Invalid date: ${Z}`);return Z}let X=new Date(Z);if(isNaN(X.getTime()))throw Error(`Invalid date string: ${Z}`);let $=X.getUTCFullYear(),K=X.getUTCMonth()+1,Q=X.getUTCDate();return _1($,K,Q)}function TX(Z){try{return Y8(Z)}catch{return null}}function B4(Z,X){let $=z8(Z);return s1.toDate(s1.addDays($,X))}function SX(Z,X){return B4(Z,X*7)}function kX(Z,X){let $=X1(Z),K=E1(Z),Q=W6(Z),H=$*12+(K-1)+X,Y=Math.floor(H/12),G=H%12+1,z=A0(Y,G),W=Math.min(Q,z);return _1(Y,G,W)}function gX(Z,X){let $=X1(Z),K=E1(Z),Q=W6(Z),H=$+X,Y=A0(H,K),G=Math.min(Q,Y);return _1(H,K,G)}function G8(Z,X){let K=new Date(Z+"T00:00:00Z").getTime(),Q=new Date(X+"T00:00:00Z").getTime();return Math.round((K-Q)/86400000)}function bX(Z,X){let $=X1(Z),K=E1(Z),Q=X1(X),H=E1(X);return($-Q)*12+(K-H)}function vX(Z,X){return X1(Z)-X1(X)}function X1(Z){return parseInt(Z.slice(0,4),10)}function E1(Z){return parseInt(Z.slice(5,7),10)}function W6(Z){return parseInt(Z.slice(8,10),10)}function J6(Z){let X=new Date(Z+"T00:00:00Z").getUTCDay();return X===0?7:X}function fX(Z){let X=new Date(Z+"T00:00:00Z"),$=X.getUTCDay()||7;X.setUTCDate(X.getUTCDate()+4-$);let K=new Date(Date.UTC(X.getUTCFullYear(),0,1));return Math.ceil(((X.getTime()-K.getTime())/86400000+1)/7)}function yX(Z){let X=_1(X1(Z),1,1);return G8(Z,X)+1}function _6(Z){return Math.ceil(E1(Z)/3)}function L6(Z){return Z%4===0&&Z%100!==0||Z%400===0}function A0(Z,X){let $=[31,28,31,30,31,30,31,31,30,31,30,31];if(X===2&&L6(Z))return 29;return $[X-1]}function hX(Z){return L6(Z)?366:365}function z8(Z){return Z+"T00:00:00.000Z"}function xX(Z){return Math.floor(new Date(Z+"T00:00:00Z").getTime()/1000)}function uX(Z){let X=new Date(Z*1000);return _1(X.getUTCFullYear(),X.getUTCMonth()+1,X.getUTCDate())}function U6(Z,X){let $=new Date(Z+"T00:00:00Z"),K={timeZone:"UTC",...X};return new Intl.DateTimeFormat(void 0,K).format($)}function dX(Z){return U6(Z,{year:"numeric",month:"long",day:"numeric"})}function mX(Z){return U6(Z,{year:"numeric",month:"short",day:"numeric"})}function lX(Z,X){return Z<X}function iX(Z,X){return Z>X}function pX(Z,X){return Z===X}function nX(Z,X){return Z<X?Z:X}function cX(Z,X){return Z>X?Z:X}function oX(Z,X,$){return Z>=X&&Z<=$}function sX(Z){return _1(X1(Z),E1(Z),1)}function aX(Z){let X=X1(Z),$=E1(Z);return _1(X,$,A0(X,$))}function rX(Z){let $=(_6(Z)-1)*3+1;return _1(X1(Z),$,1)}function tX(Z){let $=_6(Z)*3;return _1(X1(Z),$,A0(X1(Z),$))}function eX(Z){return _1(X1(Z),1,1)}function ZK(Z){return _1(X1(Z),12,31)}function $K(Z){let X=J6(Z);return B4(Z,-(X-1))}function XK(Z){let X=J6(Z);return B4(Z,7-X)}var KK={isValid:z6,today:NX,todayIn:EX,from:_1,parse:Y8,tryParse:TX,addDays:B4,addWeeks:SX,addMonths:kX,addYears:gX,diff:G8,diffMonths:bX,diffYears:vX,year:X1,month:E1,day:W6,dayOfWeek:J6,weekOfYear:fX,dayOfYear:yX,quarter:_6,isLeapYear:L6,daysInMonth:A0,daysInYear:hX,toTimestamp:z8,toUnix:xX,fromUnix:uX,format:U6,formatLong:dX,formatShort:mX,isBefore:lX,isAfter:iX,isEqual:pX,min:nX,max:cX,isBetween:oX,startOfMonth:sX,endOfMonth:aX,startOfQuarter:rX,endOfQuarter:tX,startOfYear:eX,endOfYear:ZK,startOfWeek:$K,endOfWeek:XK};export{_$ as xmlParse,i4 as wrap,N5 as whileLoop,Q$ as vectorSearch,f5 as varsLet,v5 as varsImport,y5 as varsExport,k5 as varSet,b5 as varGet,l4 as validateArgs,D$ as uuid,j4 as typeToString,l1 as typeOf,T5 as tryCatch,jQ as transpileWithCache,J0 as transpileToJS,G$ as transpileCode,L4 as transpile,K0 as transformFunction,PQ as tjsWithCache,wQ as tjs,r8 as testUtils,c5 as template,S0 as stripTjsPreamble,T0 as stripModuleSyntax,X$ as storeSet,K$ as storeQuery,A$ as storeProcedure,$$ as storeGet,p5 as split,J5 as setGlobalCache,J1 as seq,h5 as scope,b1 as runtime,z$ as runCode,E5 as ret,O as resolveValue,r4 as resolveProcedureToken,F$ as releaseProcedure,e6 as registerWasmBlock,o5 as regexMatch,d5 as reduce,q$ as random,l5 as push,n1 as procedureStore,O0 as preprocess,s5 as pick,u6 as parseReturnType,P1 as parseParameter,F1 as parse,a5 as omit,r5 as merge,L$ as memoize,x5 as map,F8 as lookupVariable,H$ as llmPredict,U5 as lint,i5 as len,t5 as keys,J$ as jsonStringify,W$ as jsonParse,n5 as join,b4 as isValidUrl,v4 as isValidTimestamp,f4 as isValidLegalDate,C1 as isRuntimeType,a4 as isProcedureToken,M1 as isError,B5 as isAgentError,t6 as instantiateWasm,nZ as installRuntime,G1 as inferTypeFromValue,O5 as iff,G5 as hashSourceSync,K4 as hashSource,t4 as hash,CQ as getToolDefinitions,$6 as getStoreCapabilityDefault,KH as getStandardCapabilities,d as getLocation,u7 as getLLMCapability,Q4 as getGlobalCache,a$ as getBatteries,R5 as generateDocsMarkdown,I7 as generateDocs,H5 as fromTS,m5 as find,u5 as filter,Z$ as fetch,V4 as extractTests,Z0 as extractTDoc,R1 as extractLiteralValue,n6 as expectFunction,i as evaluateExpr,S5 as errorAtom,I1 as error,cZ as emitRuntimeWrapper,S as defineAtom,O1 as createChildScope,z1 as createChildContext,VQ as createAgent,W4 as coreAtoms,g5 as constSet,B$ as consoleWarn,R$ as consoleLog,I$ as consoleError,wZ as compileWasmBlocks,b0 as compileToWasm,M$ as clearExpiredProcedures,v1 as checkType,U$ as cache,j1 as builtins,cQ as batteryAtoms,QH as batteries,p6 as assertFunction,FQ as ajs,Y$ as agentRun,c0 as Union,e as TypedBuilder,A8 as TypeError,p as Type,u as TranspileError,y4 as TimestampType,s1 as Timestamp,i0 as TUuid,l0 as TUrl,f0 as TString,a0 as TRecord,u0 as TPositiveInt,s0 as TPair,y0 as TNumber,d0 as TNonEmptyString,$1 as TJS_VERSION,x0 as TInteger,m0 as TEmail,h0 as TBoolean,o0 as TArray,K1 as SyntaxError,Y5 as Schema,k$ as SafeFunction,s4 as PROCEDURE_TOKEN_PREFIX,n0 as Optional,p0 as Nullable,n4 as MetadataCache,H6 as LocalModels,h4 as LegalDateType,KK as LegalDate,m1 as Generic,S$ as Eval,r0 as Enum,I5 as DEFAULT_PROCEDURE_TTL,A5 as DEFAULT_MAX_AST_SIZE,Z6 as AgentVM,H1 as AgentError,O$ as Agent,XQ as A99};
|
|
390
404
|
|
|
391
|
-
//# debugId=
|
|
405
|
+
//# debugId=4DAEB474BC662CD564756E2164756E21
|