tjs-lang 0.2.0
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/CONTEXT.md +594 -0
- package/LICENSE +190 -0
- package/README.md +220 -0
- package/bin/benchmarks.ts +351 -0
- package/bin/dev.ts +205 -0
- package/bin/docs.js +170 -0
- package/bin/install-cursor.sh +71 -0
- package/bin/install-vscode.sh +71 -0
- package/bin/select-local-models.d.ts +1 -0
- package/bin/select-local-models.js +28 -0
- package/bin/select-local-models.ts +31 -0
- package/demo/autocomplete.test.ts +232 -0
- package/demo/docs.json +186 -0
- package/demo/examples.test.ts +598 -0
- package/demo/index.html +91 -0
- package/demo/src/autocomplete.ts +482 -0
- package/demo/src/capabilities.ts +859 -0
- package/demo/src/demo-nav.ts +2097 -0
- package/demo/src/examples.test.ts +161 -0
- package/demo/src/examples.ts +476 -0
- package/demo/src/imports.test.ts +196 -0
- package/demo/src/imports.ts +421 -0
- package/demo/src/index.ts +639 -0
- package/demo/src/module-store.ts +635 -0
- package/demo/src/module-sw.ts +132 -0
- package/demo/src/playground.ts +949 -0
- package/demo/src/service-host.ts +389 -0
- package/demo/src/settings.ts +440 -0
- package/demo/src/style.ts +280 -0
- package/demo/src/tjs-playground.ts +1605 -0
- package/demo/src/ts-examples.ts +478 -0
- package/demo/src/ts-playground.ts +1092 -0
- package/demo/static/favicon.svg +30 -0
- package/demo/static/photo-1.jpg +0 -0
- package/demo/static/photo-2.jpg +0 -0
- package/demo/static/texts/ai-history.txt +9 -0
- package/demo/static/texts/coffee-origins.txt +9 -0
- package/demo/static/texts/renewable-energy.txt +9 -0
- package/dist/index.js +256 -0
- package/dist/index.js.map +37 -0
- package/dist/tjs-batteries.js +4 -0
- package/dist/tjs-batteries.js.map +15 -0
- package/dist/tjs-full.js +256 -0
- package/dist/tjs-full.js.map +37 -0
- package/dist/tjs-transpiler.js +220 -0
- package/dist/tjs-transpiler.js.map +21 -0
- package/dist/tjs-vm.js +4 -0
- package/dist/tjs-vm.js.map +14 -0
- package/docs/CNAME +1 -0
- package/docs/favicon.svg +30 -0
- package/docs/index.html +91 -0
- package/docs/index.js +10468 -0
- package/docs/index.js.map +92 -0
- package/docs/photo-1.jpg +0 -0
- package/docs/photo-1.webp +0 -0
- package/docs/photo-2.jpg +0 -0
- package/docs/photo-2.webp +0 -0
- package/docs/texts/ai-history.txt +9 -0
- package/docs/texts/coffee-origins.txt +9 -0
- package/docs/texts/renewable-energy.txt +9 -0
- package/docs/tjs-lang.svg +31 -0
- package/docs/tosijs-agent.svg +31 -0
- package/editors/README.md +325 -0
- package/editors/ace/ajs-mode.js +328 -0
- package/editors/ace/ajs-mode.ts +269 -0
- package/editors/ajs-syntax.ts +212 -0
- package/editors/build-grammars.ts +510 -0
- package/editors/codemirror/ajs-language.js +287 -0
- package/editors/codemirror/ajs-language.ts +1447 -0
- package/editors/codemirror/autocomplete.test.ts +531 -0
- package/editors/codemirror/component.ts +404 -0
- package/editors/monaco/ajs-monarch.js +243 -0
- package/editors/monaco/ajs-monarch.ts +225 -0
- package/editors/tjs-syntax.ts +115 -0
- package/editors/vscode/language-configuration.json +37 -0
- package/editors/vscode/package.json +65 -0
- package/editors/vscode/syntaxes/ajs-injection.tmLanguage.json +107 -0
- package/editors/vscode/syntaxes/ajs.tmLanguage.json +252 -0
- package/editors/vscode/syntaxes/tjs.tmLanguage.json +333 -0
- package/package.json +83 -0
- package/src/cli/commands/check.ts +41 -0
- package/src/cli/commands/convert.ts +133 -0
- package/src/cli/commands/emit.ts +260 -0
- package/src/cli/commands/run.ts +68 -0
- package/src/cli/commands/test.ts +194 -0
- package/src/cli/commands/types.ts +20 -0
- package/src/cli/create-app.ts +236 -0
- package/src/cli/playground.ts +250 -0
- package/src/cli/tjs.ts +166 -0
- package/src/cli/tjsx.ts +160 -0
- package/tjs-lang.svg +31 -0
package/dist/tjs-full.js
ADDED
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
var Y6=Object.create;var{getPrototypeOf:G6,defineProperty:h0,getOwnPropertyNames:z6}=Object;var W6=Object.prototype.hasOwnProperty;var x0=(Z,$,X)=>{X=Z!=null?Y6(G6(Z)):{};let K=$||!Z||!Z.__esModule?h0(X,"default",{value:Z,enumerable:!0}):X;for(let Q of z6(Z))if(!W6.call(K,Q))h0(K,Q,{get:()=>Z[Q],enumerable:!0});return K};var J6=(Z,$)=>()=>($||Z(($={exports:{}}).exports,$),$.exports);var _6=(Z,$)=>{for(var X in $)h0(Z,X,{get:$[X],enumerable:!0,configurable:!0,set:(K)=>$[X]=()=>K})};var L6=(Z,$)=>()=>(Z&&($=Z(Z=0)),$);var d0=((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 c4=J6((W9,P5)=>{P5.exports={name:"tjs-lang",version:"0.2.0",license:"Apache-2.0",main:"./dist/index.js",exports:{".":"./dist/index.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","docs","src/cli","editors","bin","demo","tjs-lang.svg","CONTEXT.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",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.0.0","tosijs-ui":"^1.0.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 run docs && bun build ./demo/src/index.ts --outdir=docs --minify --sourcemap=external --target=browser && cp demo/index.html demo/static/favicon.svg demo/static/photo-*.jpg tjs-lang.svg docs/ && cp -r demo/static/texts docs/","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx",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","tosijs-schema":"^1.2.0"}}});var M4={};_6(M4,{sep:()=>l7,resolve:()=>k0,relative:()=>v7,posix:()=>i7,parse:()=>m7,normalize:()=>R4,join:()=>f7,isAbsolute:()=>b7,format:()=>u7,extname:()=>d7,dirname:()=>h7,delimiter:()=>p7,default:()=>j8,basename:()=>x7,_makeLong:()=>y7});function K1(Z){if(typeof Z!=="string")throw TypeError("Path must be a string. Received "+JSON.stringify(Z))}function g7(Z,$){var X="",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(X.length<2||K!==2||X.charCodeAt(X.length-1)!==46||X.charCodeAt(X.length-2)!==46){if(X.length>2){var W=X.lastIndexOf("/");if(W!==X.length-1){if(W===-1)X="",K=0;else X=X.slice(0,W),K=X.length-1-X.lastIndexOf("/");Q=G,H=0;continue}}else if(X.length===2||X.length===1){X="",K=0,Q=G,H=0;continue}}if($){if(X.length>0)X+="/..";else X="..";K=2}}else{if(X.length>0)X+="/"+Z.slice(Q+1,G);else X=Z.slice(Q+1,G);K=G-Q-1}Q=G,H=0}else if(Y===46&&H!==-1)++H;else H=-1}return X}function F8(Z,$){var X=$.dir||$.root,K=$.base||($.name||"")+($.ext||"");if(!X)return K;if(X===$.root)return X+K;return X+Z+K}function k0(){var Z="",$=!1,X;for(var K=arguments.length-1;K>=-1&&!$;K--){var Q;if(K>=0)Q=arguments[K];else{if(X===void 0)X=process.cwd();Q=X}if(K1(Q),Q.length===0)continue;Z=Q+"/"+Z,$=Q.charCodeAt(0)===47}if(Z=g7(Z,!$),$)if(Z.length>0)return"/"+Z;else return"/";else if(Z.length>0)return Z;else return"."}function R4(Z){if(K1(Z),Z.length===0)return".";var $=Z.charCodeAt(0)===47,X=Z.charCodeAt(Z.length-1)===47;if(Z=g7(Z,!$),Z.length===0&&!$)Z=".";if(Z.length>0&&X)Z+="/";if($)return"/"+Z;return Z}function b7(Z){return K1(Z),Z.length>0&&Z.charCodeAt(0)===47}function f7(){if(arguments.length===0)return".";var Z;for(var $=0;$<arguments.length;++$){var X=arguments[$];if(K1(X),X.length>0)if(Z===void 0)Z=X;else Z+="/"+X}if(Z===void 0)return".";return R4(Z)}function v7(Z,$){if(K1(Z),K1($),Z===$)return"";if(Z=k0(Z),$=k0($),Z===$)return"";var X=1;for(;X<Z.length;++X)if(Z.charCodeAt(X)!==47)break;var K=Z.length,Q=K-X,H=1;for(;H<$.length;++H)if($.charCodeAt(H)!==47)break;var Y=$.length,G=Y-H,W=Q<G?Q:G,z=-1,J=0;for(;J<=W;++J){if(J===W){if(G>W){if($.charCodeAt(H+J)===47)return $.slice(H+J+1);else if(J===0)return $.slice(H+J)}else if(Q>W){if(Z.charCodeAt(X+J)===47)z=J;else if(J===0)z=0}break}var U=Z.charCodeAt(X+J),_=$.charCodeAt(H+J);if(U!==_)break;else if(U===47)z=J}var q="";for(J=X+z+1;J<=K;++J)if(J===K||Z.charCodeAt(J)===47)if(q.length===0)q+="..";else q+="/..";if(q.length>0)return q+$.slice(H+z);else{if(H+=z,$.charCodeAt(H)===47)++H;return $.slice(H)}}function y7(Z){return Z}function h7(Z){if(K1(Z),Z.length===0)return".";var $=Z.charCodeAt(0),X=$===47,K=-1,Q=!0;for(var H=Z.length-1;H>=1;--H)if($=Z.charCodeAt(H),$===47){if(!Q){K=H;break}}else Q=!1;if(K===-1)return X?"/":".";if(X&&K===1)return"//";return Z.slice(0,K)}function x7(Z,$){if($!==void 0&&typeof $!=="string")throw TypeError('"ext" argument must be a string');K1(Z);var X=0,K=-1,Q=!0,H;if($!==void 0&&$.length>0&&$.length<=Z.length){if($.length===Z.length&&$===Z)return"";var Y=$.length-1,G=-1;for(H=Z.length-1;H>=0;--H){var W=Z.charCodeAt(H);if(W===47){if(!Q){X=H+1;break}}else{if(G===-1)Q=!1,G=H+1;if(Y>=0)if(W===$.charCodeAt(Y)){if(--Y===-1)K=H}else Y=-1,K=G}}if(X===K)K=G;else if(K===-1)K=Z.length;return Z.slice(X,K)}else{for(H=Z.length-1;H>=0;--H)if(Z.charCodeAt(H)===47){if(!Q){X=H+1;break}}else if(K===-1)Q=!1,K=H+1;if(K===-1)return"";return Z.slice(X,K)}}function d7(Z){K1(Z);var $=-1,X=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){X=Y+1;break}continue}if(K===-1)Q=!1,K=Y+1;if(G===46){if($===-1)$=Y;else if(H!==1)H=1}else if($!==-1)H=-1}if($===-1||K===-1||H===0||H===1&&$===K-1&&$===X+1)return"";return Z.slice($,K)}function u7(Z){if(Z===null||typeof Z!=="object")throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof Z);return F8("/",Z)}function m7(Z){K1(Z);var $={root:"",dir:"",base:"",ext:"",name:""};if(Z.length===0)return $;var X=Z.charCodeAt(0),K=X===47,Q;if(K)$.root="/",Q=1;else Q=0;var H=-1,Y=0,G=-1,W=!0,z=Z.length-1,J=0;for(;z>=Q;--z){if(X=Z.charCodeAt(z),X===47){if(!W){Y=z+1;break}continue}if(G===-1)W=!1,G=z+1;if(X===46){if(H===-1)H=z;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)$.base=$.name=Z.slice(1,G);else $.base=$.name=Z.slice(Y,G)}else{if(Y===0&&K)$.name=Z.slice(1,H),$.base=Z.slice(1,G);else $.name=Z.slice(Y,H),$.base=Z.slice(Y,G);$.ext=Z.slice(H,G)}if(Y>0)$.dir=Z.slice(0,Y-1);else if(K)$.dir="/";return $}var l7="/",p7=":",i7,j8;var A4=L6(()=>{i7=((Z)=>(Z.posix=Z,Z))({resolve:k0,normalize:R4,isAbsolute:b7,join:f7,relative:v7,_makeLong:y7,dirname:h7,basename:x7,extname:d7,format:u7,parse:m7,sep:l7,delimiter:p7,win32:null,posix:null}),j8=i7});import*as b4 from"acorn";class g extends Error{line;column;source;filename;constructor(Z,$,X,K){let Q=`${K||"<source>"}:${$.line}:${$.column}`;super(`${Z} at ${Q}`);this.name="TranspileError",this.line=$.line,this.column=$.column,this.source=X,this.filename=K}}class G1 extends g{constructor(Z,$,X,K){super(Z,$,X,K);this.name="SyntaxError"}formatWithContext(Z=2){if(!this.source)return this.message;let $=this.source.split(`
|
|
2
|
+
`),X=this.line-1,K=Math.max(0,X-Z),Q=Math.min($.length-1,X+Z),H=[],Y=String(Q+1).length;for(let G=K;G<=Q;G++){let W=String(G+1).padStart(Y),z=G===X?">":" ";if(H.push(`${z} ${W} | ${$[G]}`),G===X){let J=" ".repeat(Y+4+this.column);H.push(`${J}^ ${this.message.split(" at ")[0]}`)}}return H.join(`
|
|
3
|
+
`)}}class U6 extends g{expected;received;suggestion;constructor(Z,$,X){super(Z,$,X?.source,X?.filename);this.name="TypeError",this.expected=X?.expected,this.received=X?.received,this.suggestion=X?.suggestion}}function o(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 q6(Z,$){if($.locals.has(Z))return $.locals.get(Z);if($.parameters.has(Z))return $.parameters.get(Z)?.type;if($.parent)return q6(Z,$.parent);return}function f(Z){if(Z.loc)return{line:Z.loc.start.line,column:Z.loc.start.column};return{line:1,column:0}}function m0(Z,$){let X="",K=0,Q,H,Y="normal",G=[],W=[{type:"top-level",braceDepth:0}],z=0,J=()=>W[W.length-1]?.type||"top-level",U=()=>{let _=W[W.length-1];return _?.type==="class-body"&&z===_.braceDepth+1};while(K<Z.length){let _=Z[K],q=Z[K+1];switch(Y){case"single-string":if(X+=_,_==="\\"&&K+1<Z.length){X+=q,K+=2;continue}if(_==="'")Y="normal";K++;continue;case"double-string":if(X+=_,_==="\\"&&K+1<Z.length){X+=q,K+=2;continue}if(_==='"')Y="normal";K++;continue;case"template-string":if(X+=_,_==="\\"&&K+1<Z.length){X+=q,K+=2;continue}if(_==="$"&&q==="{"){X+=q,K+=2,G.push(1),Y="normal";continue}if(_==="`")Y="normal";K++;continue;case"line-comment":if(X+=_,_===`
|
|
4
|
+
`)Y="normal";K++;continue;case"block-comment":if(X+=_,_==="*"&&q==="/"){X+=q,K+=2,Y="normal";continue}K++;continue;case"regex":if(X+=_,_==="\\"&&K+1<Z.length){X+=q,K+=2;continue}if(_==="["){K++;while(K<Z.length&&Z[K]!=="]")if(X+=Z[K],Z[K]==="\\"&&K+1<Z.length)X+=Z[K+1],K+=2;else K++;if(K<Z.length)X+=Z[K],K++;continue}if(_==="/"){K++;while(K<Z.length&&/[gimsuy]/.test(Z[K]))X+=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(),X+=_,K++,Y="template-string";continue}}}if(_==="'"){X+=_,K++,Y="single-string";continue}if(_==='"'){X+=_,K++,Y="double-string";continue}if(_==="`"){X+=_,K++,Y="template-string";continue}if(_==="/"&&q==="/"){X+=_+q,K+=2,Y="line-comment";continue}if(_==="/"&&q==="*"){X+=_+q,K+=2,Y="block-comment";continue}if(_==="/"){let I=X.trimEnd();if(!I[I.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(I)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(I)){X+=_,K++,Y="regex";continue}}break}if(_==="{"){z++,X+=_,K++;continue}if(_==="}"){z--;let I=W[W.length-1];if(I&&z===I.braceDepth)W.pop();X+=_,K++;continue}let D=Z.slice(K).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(D){let I=D[0].slice(0,-1);X+=I,K+=I.length,W.push({type:"class-body",braceDepth:z});continue}let R=Z.slice(K).match(/^function\s+(\w+)\s*\(/);if(R){let I=R[1],j=R[0].length,P=Z[K+j],A=null,O=K+j;if(P==="?"||P==="!")if(A=P,O++,A==="!")$.unsafeFunctions.add(I);else $.safeFunctions.add(I);X+=`function ${I}(`,K=O;let V=n1(Z,K,"(",")");if(!V){X+=Z[K],K++;continue}let{content:T,endPos:S}=V;K=S;let x=u0(T,$,!0);X+=x+")";let N=K;while(N<Z.length&&/\s/.test(Z[N]))N++;let b=Z.slice(N,N+2);if(b==="->"||b==="-?"||b==="-!"){N+=2;while(N<Z.length&&/\s/.test(Z[N]))N++;let t=i1(Z,N);if(t){let{type:e,endPos:v0}=t;if(Q===void 0){if(Q=e,b==="-?")H="safe";else if(b==="-!")H="unsafe"}K=v0}}continue}let M=Z.slice(K).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/);if(M&&U()){let I=M[1],j=M[0].length,P=K+j;X+=I+"(",K=P;let A=n1(Z,K,"(",")");if(!A){X+=Z[K],K++;continue}let{content:O,endPos:V}=A;K=V;let T=u0(O,$,!0);X+=T+")";let S=K;while(S<Z.length&&/\s/.test(Z[S]))S++;if(Z.slice(S,S+2)==="->"){S+=2;while(S<Z.length&&/\s/.test(Z[S]))S++;let N=i1(Z,S);if(N)K=N.endPos}else if(Z[S]===":"){S++;while(S<Z.length&&/\s/.test(Z[S]))S++;let N=i1(Z,S);if(N)K=N.endPos}continue}if(Z[K]==="("){let I=n1(Z,K+1,"(",")");if(!I){X+=Z[K],K++;continue}let{content:j,endPos:P}=I,A=P;while(A<Z.length&&/\s/.test(Z[A]))A++;let O,V=Z.slice(A,A+2);if(V==="->"||V==="-?"||V==="-!"){A+=2;while(A<Z.length&&/\s/.test(Z[A]))A++;let T=i1(Z,A);if(T){O=T.type,A=T.endPos;while(A<Z.length&&/\s/.test(Z[A]))A++}}if(Z.slice(A,A+2)==="=>"){let T=null,S=j,x=j.trimStart();if(x.startsWith("?")&&(x.length===1||/\s/.test(x[1])))T="?",S=x.slice(1);else if(x.startsWith("!")&&(x.length===1||/\s/.test(x[1])))T="!",S=x.slice(1);let N=u0(S,$,!1);X+=`(${T==="?"?"/* safe */ ":T==="!"?"/* unsafe */ ":""}${N})`,K=P;while(K<A&&/\s/.test(Z[K]))X+=Z[K],K++;if(O)K=A}else{let T=m0(j,$);X+=`(${T.source})`,K=P}continue}X+=Z[K],K++}return{source:X,returnType:Q,returnSafety:H}}function n1(Z,$,X,K){let Q=1,H=$,Y=!1,G="";while(H<Z.length&&Q>0){let W=Z[H];if(!Y&&(W==="'"||W==='"'||W==="`"))Y=!0,G=W;else if(Y&&W===G&&Z[H-1]!=="\\")Y=!1;else if(!Y){if(W===X)Q++;else if(W===K)Q--}H++}if(Q!==0)return null;return{content:Z.slice($,H-1),endPos:H}}function D6(Z,$){let X=$;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X>=Z.length)return null;let K=X,Q=Z[X];if(Q==="{"||Q==="["){let Y=Q==="{"?"}":"]",G=n1(Z,X+1,Q,Y);if(!G)return null;return{value:Z.slice(K,G.endPos),endPos:G.endPos}}if(Q==="'"||Q==='"'||Q==="`"){X++;while(X<Z.length){if(Z[X]===Q&&Z[X-1]!=="\\")return X++,{value:Z.slice(K,X),endPos:X};X++}return null}if(/[-+\d]/.test(Q)){while(X<Z.length&&/[\d.eE+-]/.test(Z[X]))X++;return{value:Z.slice(K,X),endPos:X}}let H=Z.slice(X).match(/^(true|false|null|undefined)\b/);if(H)return{value:H[1],endPos:X+H[1].length};return null}function T1(Z){return Z.replace(/(?<!\|)\|(?!\|)/g," || ")}function i1(Z,$){let X=$,K=0,Q=!1,H="",Y=!1,G=(W)=>({type:T1(Z.slice($,W).trim()),endPos:W});while(X<Z.length){let W=Z[X];if(!Q&&(W==="'"||W==='"'||W==="`")){Q=!0,H=W,Y=!0,X++;continue}if(Q){if(W===H&&Z[X-1]!=="\\"){if(Q=!1,X++,K===0){let z=X;while(z<Z.length&&/\s/.test(Z[z]))z++;if(Z[z]==="{"){if(!Z.slice(z+1).match(/^\s*(\w+)\s*:/))return G(X)}if(Z[z]!=="|"&&Z[z]!=="&")return G(X)}continue}X++;continue}if(W==="{"||W==="["||W==="("){K++,Y=!0,X++;continue}if(W==="}"||W==="]"||W===")"){if(K--,K===0){X++;let z=X;while(z<Z.length&&/\s/.test(Z[z]))z++;if(Z[z]==="|"||Z[z]==="&")continue;return G(X)}X++;continue}if(K===0&&W==="{"){if(Y)return G(X);if(Z.slice(X+1).match(/^\s*(\w+)\s*:/)){K++,Y=!0,X++;continue}return G(X)}if(K===0&&(W==="|"||W==="&")){if(X++,X<Z.length&&Z[X]==="|")X++;while(X<Z.length&&/\s/.test(Z[X]))X++;continue}if(K===0&&(/\d/.test(W)||W==="-"&&/\d/.test(Z[X+1]))){let z=X;if(Z[z]==="-")z++;while(z<Z.length&&/\d/.test(Z[z]))z++;if(z<Z.length&&Z[z]==="."&&/\d/.test(Z[z+1])){z++;while(z<Z.length&&/\d/.test(Z[z]))z++}if(z<Z.length&&(Z[z]==="e"||Z[z]==="E")){if(z++,z<Z.length&&(Z[z]==="+"||Z[z]==="-"))z++;while(z<Z.length&&/\d/.test(Z[z]))z++}Y=!0,X=z;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X<Z.length&&Z[X]==="{")return{type:T1(Z.slice($,z).trim()),endPos:z};if(Z[X]!=="|"&&Z[X]!=="&")return{type:T1(Z.slice($,z).trim()),endPos:z};continue}if(K===0&&/[a-zA-Z_]/.test(W)){let z=X;while(z<Z.length&&/\w/.test(Z[z]))z++;Y=!0,X=z;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X<Z.length&&Z[X]==="{"){if(!Z.slice(X+1).match(/^\s*(\w+)\s*:/)){let U=z;while(U>$&&/\s/.test(Z[U-1]))U--;return{type:T1(Z.slice($,U).trim()),endPos:z}}}if(Z[X]!=="|"&&Z[X]!=="&")return{type:T1(Z.slice($,z).trim()),endPos:z};continue}X++}if(Y)return G(X);return null}function u0(Z,$,X){let K=m0(Z,{originalSource:Z,requiredParams:$.requiredParams,unsafeFunctions:$.unsafeFunctions,safeFunctions:$.safeFunctions}).source,Q=a1(K),H=!1,Y=new Set,G=(z)=>{if(X&&/^\w+$/.test(z)){if(Y.has(z))throw Error(`Duplicate parameter name '${z}'`);Y.add(z)}};return Q.map((z)=>{let J=z.trim();if(!J)return z;if(X&&J.startsWith("{")&&J.endsWith("}")){let q=J.slice(1,-1);return`{ ${k4(q,$)} }`}if(X&&J.startsWith("[")&&J.endsWith("]")){let q=J.slice(1,-1);return`[ ${k4(q,$)} ]`}let U=J.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(U){let[,q,D]=U;return G(q),H=!0,`${q} = ${D}`}if(!B6(J)){let q=J.match(/^(\w+)\s*=/);if(q)G(q[1]);return H=!0,z}let _=I6(J);if(_!==-1){let q=J.slice(0,_).trim(),D=J.slice(_+1).trim();if(G(q),H&&X&&/^\w+$/.test(q))throw Error(`Required parameter '${q}' cannot follow optional parameter`);if(X&&/^\w+$/.test(q))$.requiredParams.add(q);return`${q} = ${D}`}return z}).join(",")}function k4(Z,$){return a1(Z).map((Q)=>{let H=Q.trim();if(!H)return Q;let Y=H.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(Y){let[,z,J]=Y;$.requiredParams.add(z);let U=c1(J);return`${z} = ${U}`}let G=H.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(G){let[,z,J]=G;$.requiredParams.add(z);let U=o1(J);return`${z} = ${U}`}let W=H.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(W){let[,z,J]=W;return $.requiredParams.add(z),`${z} = ${J}`}return Q}).join(", ")}function c1(Z){let $=Z.slice(1,-1).trim();return`{ ${a1($).map((Q)=>{let H=Q.trim();if(!H)return Q;let Y=H.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(Y){let[,U,_]=Y;return`${U}: ${c1(_)}`}let G=H.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(G){let[,U,_]=G;return`${U}: ${c1(_)}`}let W=H.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(W){let[,U,_]=W;return`${U}: ${o1(_)}`}let z=H.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(z){let[,U,_]=z;return`${U}: ${o1(_)}`}let J=H.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(J){let[,U,_]=J;return`${U}: ${_}`}return Q}).join(", ")} }`}function o1(Z){let $=Z.slice(1,-1).trim();return`[ ${a1($).map((Q)=>{let H=Q.trim();if(!H)return Q;if(H.startsWith("{")&&H.endsWith("}"))return c1(H);if(H.startsWith("[")&&H.endsWith("]"))return o1(H);return Q}).join(", ")} ]`}function B6(Z){let $=0,X=!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==="[")$++;else if(G===")"||G==="}"||G==="]")$--;else if($===0){if(G===":")X=!0;if(G==="="&&Z[Y+1]!==">")K=!0}}return X&&!K}function I6(Z){let $=0,X=!1,K="";for(let Q=0;Q<Z.length;Q++){let H=Z[Q];if(!X&&(H==="'"||H==='"'||H==="`")){X=!0,K=H;continue}if(X){if(H===K&&Z[Q-1]!=="\\")X=!1;continue}if(H==="("||H==="{"||H==="[")$++;else if(H===")"||H==="}"||H==="]")$--;else if($===0&&H===":")return Q}return-1}function s1(Z,$={}){let X=Z,K,Q=new Set,H=new Set,Y=new Set,G={tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1},W=Z.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);if(W)K=W[2],Z=Z.replace(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\s*/,"$1");let z=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsStandard|LegacyEquals)\b/,J;while(J=Z.match(z)){let M=J[2];if(M==="TjsStrict")G.tjsEquals=!0,G.tjsClass=!0,G.tjsDate=!0,G.tjsNoeval=!0,G.tjsStandard=!0;else if(M==="TjsEquals")G.tjsEquals=!0;else if(M==="TjsClass")G.tjsClass=!0;else if(M==="TjsDate")G.tjsDate=!0;else if(M==="TjsNoeval")G.tjsNoeval=!0;else if(M==="TjsStandard")G.tjsStandard=!0;else if(M==="LegacyEquals")console.warn("LegacyEquals is deprecated: JS equality is now the default. Use TjsEquals to enable structural equality.");Z=Z.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${M}\\s*`),"$1")}if(G.tjsStandard)Z=j6(Z);if(Z=F6(Z),G.tjsEquals&&!$.vmTarget)Z=w6(Z);Z=C6(Z),Z=V6(Z),Z=E6(Z),Z=N6(Z),Z=T6(Z);let{source:U,returnType:_,returnSafety:q}=m0(Z,{originalSource:X,requiredParams:Q,unsafeFunctions:H,safeFunctions:Y});Z=U,Z=R6(Z);let D=M6(Z);Z=D.source;let R=k6(Z,$.dangerouslySkipTests);if(Z=R.source,G.tjsClass)Z=g6(Z);if(G.tjsDate)Z=b6(Z);if(G.tjsNoeval)Z=f6(Z);return{source:Z,returnType:_,returnSafety:q,moduleSafety:K,tjsModes:G,originalSource:X,requiredParams:Q,unsafeFunctions:H,safeFunctions:Y,wasmBlocks:D.blocks,tests:R.tests,testErrors:R.errors}}function R6(Z){let $="",X=0;while(X<Z.length){let K=Z.slice(X).match(/^\btry\s*\{/);if(K){let H=X+K[0].length-1+1,Y=1,G=H;while(G<Z.length&&Y>0){let z=Z[G];if(z==="{")Y++;else if(z==="}")Y--;G++}if(Y!==0){$+=Z[X],X++;continue}if(Z.slice(G).match(/^\s*(catch|finally)\b/))$+=Z.slice(X,G),X=G;else{let z=Z.slice(H,G-1);$+=`try {${z}} catch (__try_err) { return { $error: true, message: __try_err?.message || String(__try_err), op: 'try', cause: __try_err, stack: globalThis.__tjs?.getStack?.() } }`,X=G}}else $+=Z[X],X++}return $}function M6(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,W=1,z=G;while(z<Z.length&&W>0){let A=Z[z];if(A==="{")W++;else if(A==="}")W--;z++}if(W!==0){X+=Z[K],K++;continue}let J=Z.slice(G,z-1),U,_=z,q=Z.slice(z).match(/^\s*fallback\s*\{/);if(q){let A=z+q[0].length;W=1;let O=A;while(O<Z.length&&W>0){let V=Z[O];if(V==="{")W++;else if(V==="}")W--;O++}if(W===0)U=Z.slice(A,O-1),_=O}let D=A6(J),R={id:`__tjs_wasm_${Q}`,body:J,fallback:U,captures:D,start:Y,end:_};$.push(R);let M=U??J,I=D.length>0?D.join(", "):"",j=D.length>0?`globalThis.${R.id}(${I})`:`globalThis.${R.id}()`,P=`(globalThis.${R.id} ? ${j} : (() => {${M}})())`;X+=P,K=_,Q++}else X+=Z[K],K++}return{source:X,blocks:$}}function A6(Z){let $=/\b([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,X=new Set,K;while((K=$.exec(Z))!==null)X.add(K[1]);let Q=new Set,H=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;while((K=H.exec(Z))!==null)Q.add(K[1]);let Y=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;while((K=Y.exec(Z))!==null)Q.add(K[1]);let G=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"]),W=[];for(let z of X)if(!Q.has(z)&&!G.has(z))W.push(z);return W.sort()}function a1(Z){let $=[],X="",K=0,Q=!1,H=!1,Y=0;while(Y<Z.length){let G=Z[Y],W=Z[Y+1];if(!H&&G==="/"&&W==="/"){Q=!0,X+="//",Y+=2;continue}if(!Q&&G==="/"&&W==="*"){H=!0,X+="/*",Y+=2;continue}if(Q&&G===`
|
|
5
|
+
`){Q=!1,X+=G,Y++;continue}if(H&&G==="*"&&W==="/"){H=!1,X+="*/",Y+=2;continue}if(Q||H){X+=G,Y++;continue}if(G==="("||G==="{"||G==="[")K++,X+=G;else if(G===")"||G==="}"||G==="]")K--,X+=G;else if(G===","&&K===0)$.push(X),X="";else X+=G;Y++}if(X.trim())$.push(X);return $}function F6(Z){let X=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(X,"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 j6(Z){let $=/^[\s]*[([/+\-`]/,X=/[{([,;:+\-*/%=&|?<>!~^]\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],W=Y>0?Q[Y-1]:"";if(Y>0&&$.test(G)){let z=W.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!X.test(z)&&!K.test(z)){let J=G.match(/^(\s*)/),U=J?J[1]:"",_=G.slice(U.length);H.push(U+";"+_);continue}}H.push(G)}return H.join(`
|
|
7
|
+
`)}function w6(Z){let $=[],X=0,K="normal",Q=[];while(X<Z.length){let Y=Z[X],G=Z[X+1];switch(K){case"single-string":if(Y==="\\"&&X+1<Z.length){X+=2;continue}if(Y==="'")K="normal";X++;continue;case"double-string":if(Y==="\\"&&X+1<Z.length){X+=2;continue}if(Y==='"')K="normal";X++;continue;case"template-string":if(Y==="\\"&&X+1<Z.length){X+=2;continue}if(Y==="$"&&G==="{"){X+=2,Q.push(1),K="normal";continue}if(Y==="`")K="normal";X++;continue;case"line-comment":if(Y===`
|
|
8
|
+
`)K="normal";X++;continue;case"block-comment":if(Y==="*"&&G==="/"){X+=2,K="normal";continue}X++;continue;case"regex":if(Y==="\\"&&X+1<Z.length){X+=2;continue}if(Y==="["){X++;while(X<Z.length&&Z[X]!=="]")if(Z[X]==="\\"&&X+1<Z.length)X+=2;else X++;if(X<Z.length)X++;continue}if(Y==="/"){X++;while(X<Z.length&&/[gimsuy]/.test(Z[X]))X++;K="normal";continue}X++;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(),X++,K="template-string";continue}}}if(Y==="'"){X++,K="single-string";continue}if(Y==='"'){X++,K="double-string";continue}if(Y==="`"){X++,K="template-string";continue}if(Y==="/"&&G==="/"){X+=2,K="line-comment";continue}if(Y==="/"&&G==="*"){X+=2,K="block-comment";continue}if(Y==="/"){let W=X-1;while(W>=0&&/\s/.test(Z[W]))W--;let z=W>=0?Z[W]:"";if(!z||/[=(!,;:{[&|?+\-*%<>~^]/.test(z)||W>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(Z.slice(Math.max(0,W-10),W+1))){X++,K="regex";continue}}if(Y==="="&&G==="="&&Z[X+2]!=="="&&Z[X-1]!=="!"){$.push({pos:X,op:"=="}),X+=2;continue}if(Y==="!"&&G==="="&&Z[X+2]!=="="){$.push({pos:X,op:"!="}),X+=2;continue}break}X++}if($.length===0)return Z;let H=Z;for(let Y=$.length-1;Y>=0;Y--){let{pos:G,op:W}=$[Y],z=W==="=="?"Is":"IsNot",J=P6(H,G),U=O6(H,G+2),_=H.slice(J,G).trim(),q=H.slice(G+2,U).trim();if(_&&q){let D=H.slice(0,J),R=H.slice(U),I=/[a-zA-Z0-9_$]$/.test(D)?" ":"";H=`${D}${I}${z}(${_}, ${q})${R}`}}return H}function P6(Z,$){let X=$-1;while(X>=0&&/\s/.test(Z[X]))X--;if(X<0)return 0;let K=0,Q=!1,H="";while(X>=0){let Y=Z[X],G=X>0?Z[X-1]:"";if(Q){if(Y===H&&G!=="\\")Q=!1;X--;continue}if((Y==='"'||Y==="'"||Y==="`")&&G!=="\\"){Q=!0,H=Y,X--;continue}if(Y===")"||Y==="]"){K++,X--;continue}if(Y==="("||Y==="["){if(K>0){K--,X--;continue}return X+1}if(K>0){X--;continue}if(Y===";"||Y==="{"||Y==="}")return X+1;if(/[a-z]/.test(Y)){let W=X+1,z=X;while(z>0&&/[a-z]/i.test(Z[z-1]))z--;let J=Z.slice(z,W),U=z>0?Z[z-1]:"";if(!/[a-zA-Z0-9_$]/.test(U)){if(["return","throw","case","typeof","void","delete","await","yield","new"].includes(J))return W}}if(Y===">"&&G==="=")return X+1;if(Y==="="&&G!=="="&&G!=="!"&&G!=="<"&&G!==">")return X+1;if(Y==="&"&&G==="&")return X+1;if(Y==="|"&&G==="|")return X+1;if(Y==="?"||Y===":")return X+1;if(Y===",")return X+1;X--}return 0}function O6(Z,$){let X=$;while(X<Z.length&&/\s/.test(Z[X]))X++;if(X>=Z.length)return Z.length;let K=0,Q=!1,H="";while(X<Z.length){let Y=Z[X],G=X+1<Z.length?Z[X+1]:"";if(Q){if(Y===H&&Z[X-1]!=="\\")Q=!1;X++;continue}if((Y==='"'||Y==="'"||Y==="`")&&Z[X-1]!=="\\"){Q=!0,H=Y,X++;continue}if(Y==="("||Y==="["||Y==="{"){K++,X++;continue}if(Y===")"||Y==="]"||Y==="}"){if(K>0){K--,X++;continue}return X}if(K>0){X++;continue}if(Y===";")return X;if(Y==="&"&&G==="&")return X;if(Y==="|"&&G==="|")return X;if(Y==="?")return X;if(Y===":")return X;if(Y===",")return X;if((Y==="="||Y==="!")&&G==="="&&Z[X+2]!=="=")return X;X++}return Z.length}function C6(Z){let $="",X=0;while(X<Z.length){let K=Z.slice(X).match(/^\bType\s+([A-Z][a-zA-Z0-9_]*)\s*/);if(K){let Q=K[1],H=X+K[0].length,Y=Q,G=!1,W=Z.slice(H).match(/^(['"`])([^]*?)\1\s*/);if(W){let _=H+W[0].length,q=Z[_],D=q===void 0||_>=Z.length||q!=="="&&q!=="{";if(q==="="||q==="{")Y=W[2],G=!0,H=_;else if(D){let R=W[0].trim(),M=W[0].slice(R.length);$+=`const ${Q} = Type('${Q}', ${R})${M}`,X=_;continue}}let z,J=H,U=Z.slice(H).match(/^=\s*/);if(U){H+=U[0].length;let _=Z.slice(H).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(_){z=_[0],H+=_[0].length,J=H;let q=Z.slice(H).match(/^\s*/);if(q)H+=q[0].length}}if(Z[H]==="{"){let _=H+1,q=1,D=_;while(D<Z.length&&q>0){let O=Z[D];if(O==="{")q++;else if(O==="}")q--;D++}if(q!==0){$+=Z[X],X++;continue}let R=Z.slice(_,D-1).trim(),M=D,I=R.match(/description\s*:\s*(['"`])([^]*?)\1/);if(I&&!G)Y=I[2];let j,P=R.match(/example\s*:\s*/);if(P){let O=P.index+P[0].length,V=D6(R,O);if(V)j=V.value.trim()}let A=R.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(A&&j){let O=A[1].trim(),V=A[2].trim(),T=z?`, ${z}`:"";$+=`const ${Q} = Type('${Y}', (${O}) => { if (!globalThis.__tjs?.validate(${O}, globalThis.__tjs?.infer(${j}))) return false; ${V} }, ${j}${T})`}else if(A){let O=A[1].trim(),V=A[2].trim(),T=z?`, undefined, ${z}`:"";$+=`const ${Q} = Type('${Y}', (${O}) => { ${V} }${T})`}else if(j){let O=z?`, ${z}`:"";$+=`const ${Q} = Type('${Y}', undefined, ${j}${O})`}else if(z)$+=`const ${Q} = Type('${Y}', ${z})`;else $+=`const ${Q} = Type('${Y}')`;X=M;continue}else if(z){$+=`const ${Q} = Type('${Y}', ${z})`,X=J;continue}else if(!W){let _=Z.slice(H).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(_){let q=_[0];$+=`const ${Q} = Type('${Q}', ${q})`,X=H+_[0].length;continue}}}$+=Z[X],X++}return $}function V6(Z){let $="",X=0;while(X<Z.length){let K=Z.slice(X).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(K){let Q=K[1],H=K[2],G=X+K[0].length-1+1,W=1,z=G;while(z<Z.length&&W>0){let M=Z[z];if(M==="{")W++;else if(M==="}")W--;z++}if(W!==0){$+=Z[X],X++;continue}let J=Z.slice(G,z-1).trim(),U=z,_=H.split(",").map((M)=>{let I=M.trim().split("=").map((j)=>j.trim());if(I.length===2)return`['${I[0]}', ${I[1]}]`;return`'${I[0]}'`}),q=J.match(/description\s*:\s*(['"`])([^]*?)\1/),D=J.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),R=q?q[2]:Q;if(D){let M=D[1].trim().split(",").map((O)=>O.trim()),I=D[2].trim(),j=M[0]||"x",P=M.slice(1),A=P.map((O)=>`check${O}`);P.forEach((O,V)=>{I=I.replace(new RegExp(`\\b${O}\\s*\\(`,"g"),`${A[V]}(`)}),$+=`const ${Q} = Generic([${_.join(", ")}], (${j}, ${A.join(", ")}) => { ${I} }, '${R}')`}else $+=`const ${Q} = Generic([${_.join(", ")}], () => true, '${R}')`;X=U;continue}$+=Z[X],X++}return $}function E6(Z){let $="",X=0;while(X<Z.length){let K=Z.slice(X).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(K){let Q=K[1],H=K[3],Y=X+K[0].length;if(Z[Y]==="{"){let G=Y+1,W=1,z=G;while(z<Z.length&&W>0){let q=Z[z];if(q==="{")W++;else if(q==="}")W--;z++}if(W!==0){$+=Z[X],X++;continue}let J=Z.slice(G,z-1).trim(),U=z,_=g4(J);$+=`const ${Q} = Union('${H}', [${_.join(", ")}])`,X=U;continue}else{let G=Z.indexOf(`
|
|
9
|
+
`,Y);if(G===-1)G=Z.length;let W=Z.slice(Y,G).trim();if(W){let z=g4(W);$+=`const ${Q} = Union('${H}', [${z.join(", ")}])`,X=G;continue}}}$+=Z[X],X++}return $}function g4(Z){let $=[],X=Z.split("|").map((K)=>K.trim());for(let K of X){if(!K)continue;$.push(K)}return $}function N6(Z){let $="",X=0;while(X<Z.length){let K=Z.slice(X).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(K){let Q=K[1],H=K[3],G=X+K[0].length-1+1,W=1,z=G;while(z<Z.length&&W>0){let D=Z[z];if(D==="{")W++;else if(D==="}")W--;z++}if(W!==0){$+=Z[X],X++;continue}let J=Z.slice(G,z-1).trim(),U=z,q=S6(J).map(([D,R])=>`${D}: ${R}`).join(", ");$+=`const ${Q} = Enum('${H}', { ${q} })`,X=U;continue}$+=Z[X],X++}return $}function S6(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){$.push([Y,G]);let W=Number(G);if(!isNaN(W))X=W+1}else $.push([Y,String(X)]),X++}}return $}function T6(Z){return Z.replace(/(?<=^|[;\n{])\s*([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,($,X)=>{return $.replace(X,`const ${X}`)})}function q1(Z,$={}){let{filename:X="<source>",colonShorthand:K=!0,vmTarget:Q=!1}=$,{source:H,returnType:Y,returnSafety:G,moduleSafety:W,originalSource:z,requiredParams:J,unsafeFunctions:U,safeFunctions:_,wasmBlocks:q,tests:D,testErrors:R}=K?s1(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:b4.parse(H,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:Y,returnSafety:G,moduleSafety:W,originalSource:z,requiredParams:J,unsafeFunctions:U,safeFunctions:_,wasmBlocks:q,tests:D,testErrors:R}}catch(M){let I=M.loc||{line:1,column:0};throw new G1(M.message.replace(/\s*\(\d+:\d+\)$/,""),I,z,X)}}function f4(Z,$){for(let K of Z.body){if(K.type==="ImportDeclaration")throw new G1("Imports are not supported. All atoms must be registered with the VM.",K.loc?.start||{line:1,column:0},void 0,$);if(K.type==="ExportNamedDeclaration"||K.type==="ExportDefaultDeclaration")throw new G1("Exports are not supported. The function is automatically exported.",K.loc?.start||{line:1,column:0},void 0,$);if(K.type==="ClassDeclaration")throw new G1("Classes are not supported. Agent99 uses functional composition.",K.loc?.start||{line:1,column:0},void 0,$)}let X=Z.body.filter((K)=>K.type==="FunctionDeclaration");if(X.length===0)throw new G1("Source must contain a function declaration",{line:1,column:0},void 0,$);if(X.length>1){let K=X[1];throw new G1("Only a single function per agent is allowed",K.loc?.start||{line:1,column:0},void 0,$)}return X[0]}function k1(Z,$){let X={params:{}};if(!$.loc)return X;let K=Z.substring(0,$.start),Q=[...K.matchAll(/\/\*#([\s\S]*?)\*\//g)];if(Q.length>0){let J=Q[Q.length-1],U=K.substring(J.index+J[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(U)){let _=J[1],q=_.split(`
|
|
10
|
+
`),D=q.filter((R)=>R.trim().length>0).reduce((R,M)=>{let I=M.match(/^(\s*)/)?.[1].length||0;return Math.min(R,I)},1/0);if(D>0&&D<1/0)_=q.map((R)=>R.slice(D)).join(`
|
|
11
|
+
`);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 W=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,z;while((z=W.exec(Y))!==null)X.params[z[1]]=z[2].trim();return X}function k6(Z,$=!1){let X=[],K=[],Q="",H=0;while(H<Z.length){let Y=Z.slice(H).match(/^\btest\s+/);if(Y){let G=H,W=H+Y[0].length,z,J=Z.slice(W).match(/^(['"`])([^]*?)\1\s*/);if(J)z=J[2],W+=J[0].length;if(Z[W]==="{"){let U=W+1,_=1,q=U;while(q<Z.length&&_>0){let D=Z[q];if(D==="{")_++;else if(D==="}")_--;q++}if(_===0){let D=Z.slice(U,q-1).trim(),R=q;if(X.push({description:z,body:D,start:G,end:R}),!$)try{Function(D)()}catch(j){let P=z||`test at position ${G}`;K.push(`Test failed: ${P}
|
|
12
|
+
${j.message||j}`)}let I=(Z.slice(G,R).match(/\n/g)||[]).length;Q+=`
|
|
13
|
+
`.repeat(I),H=R;continue}}}Q+=Z[H],H++}return{source:Q,tests:X,errors:K}}function g6(Z){let $=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,X="",K=0,Q;while((Q=$.exec(Z))!==null){let H=Q[1],Y=Q[2]||"",G=Q.index,W=G+Q[0].length-1,z=1,J=W+1;while(J<Z.length&&z>0){let U=Z[J];if(U==="{")z++;else if(U==="}")z--;J++}if(z===0){let U=J,_=Z.slice(W,U);X+=Z.slice(K,G),X+=`let ${H} = class ${H}${Y} ${_}; `,X+=`${H} = new Proxy(${H}, { apply(t, _, a) { return Reflect.construct(t, a) } });`,K=U}}return X+=Z.slice(K),X}function b6(Z){let $=[{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:X,message:K}of $)if(X.test(Z))throw Error(K);return Z}function f6(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}import{parseExpressionAt as v6}from"acorn";function s(Z){switch(Z.type){case"Literal":{let $=Z.value;if($===null)return{kind:"null"};if(typeof $==="string")return{kind:"string"};if(typeof $==="number")return{kind:"number"};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:s($[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]=s(K.value)}return{kind:"object",shape:X}}case"LogicalExpression":{let{operator:$,left:X,right:K}=Z;if($==="||"){let Q=s(X),H=s(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 s(K);if($==="??")return s(K);return{kind:"any"}}case"Identifier":{if(Z.name==="undefined")return{kind:"undefined"};return{kind:"any"}}case"UnaryExpression":{if(Z.operator==="-"&&Z.argument.type==="Literal"){if(typeof Z.argument.value==="number")return{kind:"number"}}return{kind:"any"}}default:return{kind:"any"}}}function W1(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 g("Only simple parameter names are supported",f(Z));let Q=X.name,H=$?.has(Q)??!1,Y=s(K),G=z1(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=W1(H.value,$),W=$?.has(Y)??!1;K[Y]=G.type,Q[Y]={name:Y,type:G.type,required:W,default:W?null:G.example,example:G.example}}}return{name:"__destructured__",type:{kind:"object",shape:K,destructuredParams:Q},required:!0}}throw new g(`Unsupported parameter pattern: ${Z.type}`,f(Z))}function z1(Z){switch(Z.type){case"Literal":return Z.value;case"ArrayExpression":return Z.elements.map(($)=>$?z1($):null);case"ObjectExpression":{let $={};for(let X of Z.properties)if(X.type==="Property"&&X.key.type==="Identifier")$[X.key.name]=z1(X.value);return $}case"UnaryExpression":if(Z.operator==="-"){let $=z1(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 z1(X)??z1(K);if($==="??")return z1(X)??z1(K);return}default:return}}function v4(Z){try{let $=v6(Z,0,{ecmaVersion:2022});return s($)}catch{return{kind:"any"}}}function l0(Z){switch(Z.kind){case"string":return Z.nullable?"string | null":"string";case"number":return Z.nullable?"number | null":"number";case"boolean":return Z.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let $=Z.items?l0(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}: ${l0(K)}`).join(", ");return Z.nullable?`{ ${$} } | null`:`{ ${$} }`}case"union":return Z.members?.map(l0).join(" | ")||"any";default:return"any"}}function r1(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?r1(Z.items):{}};case"object":if(Z.shape){let $={};for(let[X,K]of Object.entries(Z.shape))$[X]=r1(K);return{type:"object",properties:$,additionalProperties:!1}}return{type:"object"};case"union":if(Z.members)return{oneOf:Z.members.map(r1)};return{};default:return{}}}function y6(Z){let $={},X=[];for(let[K,Q]of Object.entries(Z))if($[K]=r1(Q.type),Q.required)X.push(K);return{type:"object",properties:$,required:X.length>0?X:void 0,additionalProperties:!1}}function p0(Z,$,X,K={},Q){let H=k1($,Z),Y=new Map;for(let M of Z.params){let I=W1(M,Q);if(I.name==="__destructured__"&&I.type.kind==="object"&&I.type.destructuredParams)for(let[j,P]of Object.entries(I.type.destructuredParams))Y.set(j,{...P,description:H.params[j]});else I.description=H.params[I.name],Y.set(I.name,I)}let G;if(X)G=v4(X);let W={depth:0,locals:new Map,parameters:Y,atoms:new Set(Object.keys(K.atoms||{})),warnings:[],source:$,filename:K.filename||"<source>",options:K},z=Z1(Z.body,W),J=[],U=[],_=[];for(let[M,I]of Y.entries())if(I.required)U.push(M);else if(I.default!==void 0)_.push({name:M,defaultValue:I.default});else U.push(M);if(U.length>0)J.push({op:"varsImport",keys:U});for(let{name:M,defaultValue:I}of _)J.push({op:"varsImport",keys:[M]}),J.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:M},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:M,value:I}]});J.push(...z);let q=Object.fromEntries(Y),D={name:Z.id?.name||"anonymous",description:H.description,parameters:q,returns:G},R=y6(q);return{ast:{op:"seq",steps:J,inputSchema:R},signature:D,warnings:W.warnings}}function Z1(Z,$){let X=[];for(let K of Z.body){let Q=g1(K,$);if(Q)if(Array.isArray(Q))X.push(...Q);else X.push(Q)}return X}function g1(Z,$){switch(Z.type){case"VariableDeclaration":return h6(Z,$);case"ExpressionStatement":return x6(Z,$);case"IfStatement":return u6(Z,$);case"WhileStatement":return m6(Z,$);case"ForOfStatement":return l6(Z,$);case"TryStatement":return p6(Z,$);case"ReturnStatement":return i6(Z,$);case"ThrowStatement":throw new g("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",f(Z),$.source,$.filename);case"BlockStatement":return{op:"scope",steps:Z1(Z,o($))};case"EmptyStatement":return null;default:throw new g(`Unsupported statement type: ${Z.type}`,f(Z),$.source,$.filename)}}function h6(Z,$){let X=[],K=Z.kind==="const",Q=K?"constSet":"varSet";for(let H of Z.declarations){if(H.id.type!=="Identifier")throw new g("Only simple variable names are supported",f(H),$.source,$.filename);let Y=H.id.name;if(H.init){let{step:G,resultVar:W}=D1(H.init,$,Y,K);if(G)X.push(G);else if(W!==Y)X.push({op:Q,key:Y,value:W});let z=s(H.init);$.locals.set(Y,z)}else{if(K)throw new g("const declarations must be initialized",f(H),$.source,$.filename);X.push({op:"varSet",key:Y,value:null}),$.locals.set(Y,{kind:"any",nullable:!0})}}return X}function x6(Z,$){let X=Z.expression;if(X.type==="AssignmentExpression")return d6(X,$);if(X.type==="CallExpression"){let{step:K,resultVar:Q}=D1(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:f(Z).line,column:f(Z).column}),null}function d6(Z,$){if(Z.left.type!=="Identifier")throw new g("Only simple variable assignment is supported",f(Z),$.source,$.filename);let X=Z.left.name,{step:K,resultVar:Q}=D1(Z.right,$,X);if(K)return K;return{op:"varSet",key:X,value:Q}}function u6(Z,$){let X=k(Z.test,$),K=Z.consequent.type==="BlockStatement"?Z1(Z.consequent,o($)):[g1(Z.consequent,$)].filter(Boolean),Q;if(Z.alternate)Q=Z.alternate.type==="BlockStatement"?Z1(Z.alternate,o($)):[g1(Z.alternate,$)].filter(Boolean);return{op:"if",condition:X,then:K,...Q&&{else:Q}}}function m6(Z,$){let X=k(Z.test,$),K=Z.body.type==="BlockStatement"?Z1(Z.body,o($)):[g1(Z.body,$)].filter(Boolean);return{op:"while",condition:X,body:K}}function l6(Z,$){let X;if(Z.left.type==="VariableDeclaration"){let Y=Z.left.declarations[0];if(Y.id.type!=="Identifier")throw new g("Only simple variable names are supported in for...of",f(Z.left),$.source,$.filename);X=Y.id.name}else if(Z.left.type==="Identifier")X=Z.left.name;else throw new g("Unsupported for...of left-hand side",f(Z.left),$.source,$.filename);let K=m(Z.right,$),Q=o($);Q.locals.set(X,{kind:"any"});let H=Z.body.type==="BlockStatement"?Z1(Z.body,Q):[g1(Z.body,Q)].filter(Boolean);return{op:"map",items:K,as:X,steps:H}}function p6(Z,$){let X=Z1(Z.block,o($)),K,Q;if(Z.handler){let H=o($);if(Z.handler.param?.type==="Identifier")Q=Z.handler.param.name,H.locals.set(Q,{kind:"any"});K=Z1(Z.handler.body,H)}return{op:"try",try:X,...K&&{catch:K},...Q&&{catchParam:Q}}}function i6(Z,$){if(!Z.argument)return{op:"return",value:{}};let{step:X,resultVar:K}=D1(Z.argument,$,"__returnVal__");if(X)return[X,{op:"return",value:K}];return{op:"return",value:m(Z.argument,$)}}var h4=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),n6=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),b1=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),c6=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 o6(Z){if(Z.callee.type==="Identifier"){let $=Z.callee.name;return n6.has($)||b1.has($)}if(Z.callee.type==="MemberExpression"){let $=Z.callee;if($.object.type==="Identifier"){let X=$.object.name;if(h4.has(X)||b1.has(X))return!0}if($.property.type==="Identifier"){let X=$.property.name;if(c6.has(X))return!0}}return!1}function s6(Z){if(Z.object.type==="Identifier"){let $=Z.object.name;return h4.has($)||b1.has($)}return!1}var y4={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 a6(Z){if(Z.callee.type==="Identifier"){let $=Z.callee.name;if(b1.has($))return y4[$]||`${$} is not available in AsyncJS.`}if(Z.callee.type==="MemberExpression"){let $=Z.callee;if($.object.type==="Identifier"){let X=$.object.name;if(b1.has(X))return y4[X]||`${X} is not available in AsyncJS.`}}return null}function x4(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 D1(Z,$,X,K){let Q=K?"constSet":"varSet";if(Z.type==="ChainExpression")return D1(Z.expression,$,X,K);if(Z.type==="NewExpression"){let Y=Z,G="constructor";if(Y.callee.type==="Identifier")G=Y.callee.name;let W=x4(G);throw new g(`The 'new' keyword is not supported in AsyncJS.${W}`,f(Z),$.source,$.filename)}if(Z.type==="CallExpression"){let Y=a6(Z);if(Y)throw new g(Y,f(Z),$.source,$.filename)}if(Z.type==="CallExpression"&&o6(Z)){let Y=k(Z,$);if(X)return{step:{op:Q,key:X,value:Y},resultVar:X};return{step:null,resultVar:Y}}if(Z.type==="MemberExpression"&&s6(Z)){let Y=k(Z,$);if(X)return{step:{op:Q,key:X,value:Y},resultVar:X};return{step:null,resultVar:Y}}if(Z.type==="CallExpression")return r6(Z,$,X,K);if(Z.type==="TemplateLiteral")return e6(Z,$,X,K);if(Z.type==="BinaryExpression"||Z.type==="LogicalExpression"||Z.type==="UnaryExpression"){let Y=k(Z,$);if(X)return{step:{op:Q,key:X,value:Y},resultVar:X};return{step:null,resultVar:Y}}return{step:null,resultVar:m(Z,$)}}function r6(Z,$,X,K){let Q,H=!1,Y;if(Z.callee.type==="Identifier")Q=Z.callee.name;else if(Z.callee.type==="MemberExpression"){let W=Z.callee;if(W.property.type==="Identifier")Q=W.property.name,H=!0,Y=m(W.object,$);else throw new g("Computed method names are not supported",f(Z),$.source,$.filename)}else throw new g("Only named function calls are supported",f(Z),$.source,$.filename);if(H)return t6(Q,Y,Z.arguments,$,X,K);if(Q==="console"&&Z.callee.type==="MemberExpression");let G=Z5(Z,$);return{step:{op:Q,...G,...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X}}function t6(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],W=G?.type==="Identifier"?G.name:"item",z=o(K);z.locals.set(W,{kind:"any"});let J;if(Y.body.type==="BlockStatement")J=Z1(Y.body,z);else{let{step:U,resultVar:_}=D1(Y.body,z,"result");J=U?[U]:[{op:"varSet",key:"result",value:_}]}return{step:{op:"map",items:$,as:W,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],W=G?.type==="Identifier"?G.name:"item",z=o(K);z.locals.set(W,{kind:"any"});let J;if(Y.body.type==="BlockStatement")throw new g("filter callback must be an expression, not a block",f(X[0]),K.source,K.filename);else J=k(Y.body,z);return{step:{op:"filter",items:$,as:W,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],W=G?.type==="Identifier"?G.name:"item",z=o(K);z.locals.set(W,{kind:"any"});let J;if(Y.body.type==="BlockStatement")throw new g("find callback must be an expression, not a block",f(X[0]),K.source,K.filename);else J=k(Y.body,z);return{step:{op:"find",items:$,as:W,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],W=Y.params[1],z=G?.type==="Identifier"?G.name:"acc",J=W?.type==="Identifier"?W.name:"item",U=o(K);U.locals.set(z,{kind:"any"}),U.locals.set(J,{kind:"any"});let _;if(Y.body.type==="BlockStatement")_=Z1(Y.body,U);else{let{step:D,resultVar:R}=D1(Y.body,U,"result");_=D?[D]:[{op:"varSet",key:"result",value:R}]}let q=m(X[1],K);return{step:{op:"reduce",items:$,as:J,accumulator:z,initial:q,steps:_,...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}break;case"slice":break;case"push":return{step:{op:"push",list:$,item:m(X[0],K),...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q};case"join":return{step:{op:"join",list:$,sep:X.length>0?m(X[0],K):"",...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q};case"split":return{step:{op:"split",str:$,sep:X.length>0?m(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)=>m(Y,K)),...Q&&{result:Q},...Q&&H&&{resultConst:!0}},resultVar:Q}}function e6(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],W=`_${Y}`;H[W]=m(G,$),Q+=`{{${W}}}`}return{step:{op:"template",tmpl:Q,vars:H,...X&&{result:X},...X&&K&&{resultConst:!0}},resultVar:X}}function k(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=k(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 g("Computed member access with variables not yet supported",f(Z),$.source,$.filename)}let H=X.property.name;return{$expr:"member",object:K,property:H,...Q&&{optional:!0}}}case"ChainExpression":return k(Z.expression,$);case"BinaryExpression":{let X=Z;return{$expr:"binary",op:X.operator,left:k(X.left,$),right:k(X.right,$)}}case"LogicalExpression":{let X=Z;return{$expr:"logical",op:X.operator,left:k(X.left,$),right:k(X.right,$)}}case"UnaryExpression":{let X=Z;return{$expr:"unary",op:X.operator,argument:k(X.argument,$)}}case"ConditionalExpression":{let X=Z;return{$expr:"conditional",test:k(X.test,$),consequent:k(X.consequent,$),alternate:k(X.alternate,$)}}case"ArrayExpression":return{$expr:"array",elements:Z.elements.filter((K)=>K!==null).map((K)=>k(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:k(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:k(K.object,$),method:Q,arguments:X.arguments.map((Y)=>k(Y,$)),...H&&{optional:!0}}}if(X.callee.type==="Identifier")return{$expr:"call",callee:X.callee.name,arguments:X.arguments.map((Q)=>k(Q,$))};throw new g("Complex function calls in expressions should be lifted to statements",f(Z),$.source,$.filename)}case"NewExpression":{let X=Z,K="constructor";if(X.callee.type==="Identifier")K=X.callee.name;let Q=x4(K);throw new g(`The 'new' keyword is not supported in AsyncJS.${Q}`,f(Z),$.source,$.filename)}case"TemplateLiteral":throw new g("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",f(Z),$.source,$.filename);default:throw new g(`Unsupported expression type in condition: ${Z.type}`,f(Z),$.source,$.filename)}}function m(Z,$){switch(Z.type){case"Literal":return Z.value;case"Identifier":return Z.name;case"MemberExpression":{let X=Z;if(X.optional===!0)return k(Z,$);let Q=m(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}[${m(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 m(Z.expression,$);case"ArrayExpression":return Z.elements.map((X)=>X?m(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]=m(K.value,$)}return X}case"TemplateLiteral":return k(Z,$);case"CallExpression":return k(Z,$);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return k(Z,$);default:return null}}function Z5(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]=m(Q.value,$)}return K}return{args:Z.arguments.map((X)=>m(X,$))}}import{parseExpressionAt as H5}from"acorn";function X5(Z,$){let X=$;while(X>0&&Z[X-1]!==`
|
|
14
|
+
`)X--;if(Z.slice(X,$).includes("//"))return!0;let Q=0,H=!1;while(Q<$)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 $5(Z){let $=[],X=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,K;while((K=X.exec(Z))!==null){let Q=K[2]||`embedded test ${$.length+1}`,H=(K[3]||K[4]||"").trim();$.push({description:Q,body:H,line:i0(Z,K.index)})}return $}function n0(Z){let $=[],X=[],K=$5(Z);$.push(...K);let Q=/test\s+(['"`])([^'"`]*)\1\s*\{|test\s*\(\s*(['"`])([^'"`]*)\3\s*\)\s*\{|test\s*\{/g,H=/mock\s*\{/g,Y=Z,G,W=[];while((G=Q.exec(Z))!==null){let _=G.index;if(X5(Z,_))continue;let q=G[2]||G[4]||`test ${$.length+1}`,D=G.index+G[0].length,R=d4(Z,D-1);if(R===-1)continue;let M=Z.slice(D,R).trim();$.push({description:q,body:M,line:i0(Z,_)}),W.push({start:_,end:R+1,desc:q})}let z=[];while((G=H.exec(Z))!==null){let _=G.index,q=G.index+G[0].length,D=d4(Z,q-1);if(D===-1)continue;let R=Z.slice(q,D).trim();X.push({body:R,line:i0(Z,_)}),z.push({start:_,end:D+1})}let J=[...W,...z].sort((_,q)=>q.start-_.start);for(let _ of J)Y=Y.slice(0,_.start)+Y.slice(_.end);Y=Y.replace(/\n\s*\n\s*\n/g,`
|
|
15
|
+
|
|
16
|
+
`).trim();let U=K5($,X);return{code:Y,tests:$,mocks:X,testRunner:U}}function d4(Z,$){let X=0,K=null,Q=!1;for(let H=$;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==="{")X++;if(Y==="}"){if(X--,X===0)return H}}return-1}function i0(Z,$){return Z.slice(0,$).split(`
|
|
17
|
+
`).length}function K5(Z,$){if(Z.length===0)return"// No tests defined";let X=$.map((Q)=>Q.body).join(`
|
|
18
|
+
`);return`(async () => {
|
|
19
|
+
const __results = []
|
|
20
|
+
|
|
21
|
+
${Z.map((Q,H)=>`
|
|
22
|
+
// Test ${H+1}: ${Q.description}
|
|
23
|
+
try {
|
|
24
|
+
${X}
|
|
25
|
+
await (async () => {
|
|
26
|
+
${Q.body}
|
|
27
|
+
})()
|
|
28
|
+
__results.push({ description: ${JSON.stringify(Q.description)}, passed: true })
|
|
29
|
+
} catch (__e) {
|
|
30
|
+
__results.push({ description: ${JSON.stringify(Q.description)}, passed: false, error: __e.message })
|
|
31
|
+
}`).join(`
|
|
32
|
+
`)}
|
|
33
|
+
|
|
34
|
+
// Report results
|
|
35
|
+
const __passed = __results.filter(r => r.passed).length
|
|
36
|
+
const __failed = __results.filter(r => !r.passed).length
|
|
37
|
+
console.log(\`Tests: \${__passed} passed, \${__failed} failed\`)
|
|
38
|
+
__results.filter(r => !r.passed).forEach(r => {
|
|
39
|
+
console.log(\` ✗ \${r.description}: \${r.error}\`)
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
// Return summary
|
|
43
|
+
return { passed: __passed, failed: __failed, results: __results }
|
|
44
|
+
})()`.trim()}var u4=`
|
|
45
|
+
function assert(condition, message) {
|
|
46
|
+
if (!condition) {
|
|
47
|
+
throw new Error(message || 'Assertion failed')
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
`,m4=`
|
|
51
|
+
function expect(actual) {
|
|
52
|
+
const deepEqual = (a, b) => {
|
|
53
|
+
if (a === b) return true
|
|
54
|
+
if (a === null || b === null) return a === b
|
|
55
|
+
if (a === undefined || b === undefined) return a === undefined && b === undefined
|
|
56
|
+
if (typeof a !== typeof b) return false
|
|
57
|
+
if (typeof a !== 'object') return a === b
|
|
58
|
+
if (Array.isArray(a) !== Array.isArray(b)) return false
|
|
59
|
+
if (Array.isArray(a)) {
|
|
60
|
+
if (a.length !== b.length) return false
|
|
61
|
+
return a.every((v, i) => deepEqual(v, b[i]))
|
|
62
|
+
}
|
|
63
|
+
const keysA = Object.keys(a)
|
|
64
|
+
const keysB = Object.keys(b)
|
|
65
|
+
if (keysA.length !== keysB.length) return false
|
|
66
|
+
return keysA.every(k => deepEqual(a[k], b[k]))
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const format = (v) => {
|
|
70
|
+
if (v === null) return 'null'
|
|
71
|
+
if (v === undefined) return 'undefined'
|
|
72
|
+
if (typeof v === 'string') return JSON.stringify(v)
|
|
73
|
+
if (typeof v === 'object') return JSON.stringify(v)
|
|
74
|
+
return String(v)
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
return {
|
|
78
|
+
toBe(expected) {
|
|
79
|
+
if (!deepEqual(actual, expected)) {
|
|
80
|
+
throw new Error(\`Expected \${format(expected)} but got \${format(actual)}\`)
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
toEqual(expected) {
|
|
84
|
+
if (!deepEqual(actual, expected)) {
|
|
85
|
+
throw new Error(\`Expected \${format(expected)} but got \${format(actual)}\`)
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
toContain(item) {
|
|
89
|
+
if (!Array.isArray(actual) || !actual.some(v => deepEqual(v, item))) {
|
|
90
|
+
throw new Error(\`Expected \${format(actual)} to contain \${format(item)}\`)
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
toThrow(message) {
|
|
94
|
+
let threw = false
|
|
95
|
+
let thrownMessage = ''
|
|
96
|
+
try {
|
|
97
|
+
if (typeof actual === 'function') actual()
|
|
98
|
+
} catch (e) {
|
|
99
|
+
threw = true
|
|
100
|
+
thrownMessage = e.message || String(e)
|
|
101
|
+
}
|
|
102
|
+
if (!threw) {
|
|
103
|
+
throw new Error('Expected function to throw but it did not')
|
|
104
|
+
}
|
|
105
|
+
if (message && !thrownMessage.includes(message)) {
|
|
106
|
+
throw new Error(\`Expected error containing "\${message}" but got "\${thrownMessage}"\`)
|
|
107
|
+
}
|
|
108
|
+
},
|
|
109
|
+
toBeTruthy() {
|
|
110
|
+
if (!actual) {
|
|
111
|
+
throw new Error(\`Expected \${format(actual)} to be truthy\`)
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
toBeFalsy() {
|
|
115
|
+
if (actual) {
|
|
116
|
+
throw new Error(\`Expected \${format(actual)} to be falsy\`)
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
toBeNull() {
|
|
120
|
+
if (actual !== null) {
|
|
121
|
+
throw new Error(\`Expected null but got \${format(actual)}\`)
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
toBeUndefined() {
|
|
125
|
+
if (actual !== undefined) {
|
|
126
|
+
throw new Error(\`Expected undefined but got \${format(actual)}\`)
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
toBeGreaterThan(n) {
|
|
130
|
+
if (!(actual > n)) {
|
|
131
|
+
throw new Error(\`Expected \${format(actual)} to be greater than \${n}\`)
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
toBeLessThan(n) {
|
|
135
|
+
if (!(actual < n)) {
|
|
136
|
+
throw new Error(\`Expected \${format(actual)} to be less than \${n}\`)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
`,Q5=u4+`
|
|
142
|
+
`+m4;function Y5(Z,$,X,K){let Q=[],H=k1($,Z),Y={},G=!1,W,z;if(Z.params.length===1&&(Z.params[0].type==="ObjectPattern"||Z.params[0].type==="AssignmentPattern"&&Z.params[0].left.type==="ObjectPattern")){G=!0;let _=Z.params[0],q=_.type==="ObjectPattern"?_:_.left,D=W1(q,X);if(D.type.kind==="object"&&D.type.destructuredParams){W={},z=new Set;for(let[R,M]of Object.entries(D.type.destructuredParams))if(Y[R]={...M,description:H.params[R]},W[R]=M.type,M.required)z.add(R)}}else for(let _ of Z.params)if(_.type==="Identifier"){let q=W1(_,X);Y[_.name]={...q,required:X.has(_.name),description:H.params[_.name]}}else if(_.type==="AssignmentPattern"&&_.left.type==="Identifier"){let q=W1(_,X);Y[_.left.name]={...q,required:X.has(_.left.name),description:H.params[_.left.name]}}else if(_.type==="ObjectPattern"){let q=W1(_,X);if(q.type.kind==="object"&&q.type.destructuredParams)for(let[D,R]of Object.entries(q.type.destructuredParams))Y[D]={...R,description:H.params[D]}}let J;if(K)try{let _=H5(K,0,{ecmaVersion:2022});J=s(_)}catch{J={kind:"any"},Q.push(`Could not parse return type: ${K}`)}return{types:{name:Z.id?.name||"anonymous",params:Y,returns:J,description:H.description,isDestructuredParam:G,destructuredShape:W,destructuredRequired:z},warnings:Q}}function G5(Z,$,X){let K=[],Q=X?`${X}:`:"",H=X?`${X}:${Z}`:Z;if(K.push(`__tjs.pushStack('${H}');`),$.isDestructuredParam&&$.destructuredShape){let G=$.destructuredShape,W=$.destructuredRequired||new Set,z=Object.keys(G);if(z.length===0)return null;for(let J of z)K.push(`if (${J} instanceof Error) return ${J};`);for(let[J,U]of Object.entries(G)){let _=W.has(J),q=`${Q}${Z}.${J}`,D=l4(J,U);if(D){let R=U.kind;if(_)K.push(`if (${D}) return __tjs.typeError('${q}', '${R}', ${J});`);else K.push(`if (${J} !== undefined && ${D}) return __tjs.typeError('${q}', '${R}', ${J});`)}}return K.length>0?K.join(`
|
|
143
|
+
`):null}let Y=Object.entries($.params);if(Y.length===0)return null;for(let[G]of Y)K.push(`if (${G} instanceof Error) return ${G};`);for(let[G,W]of Y){let z=`${Q}${Z}.${G}`,J=l4(G,W.type);if(J){let U=W.type.kind;if(W.required)K.push(`if (${J}) return __tjs.typeError('${z}', '${U}', ${G});`);else K.push(`if (${G} !== undefined && ${J}) return __tjs.typeError('${z}', '${U}', ${G});`)}}return K.length>0?K.join(`
|
|
144
|
+
`):null}function z5(Z,$){let K=new RegExp(`function\\s+${$}\\s*\\([^)]*\\)\\s*(-[>?!])\\s*`,"g").exec(Z);if(!K)return null;let Q=Z.slice(K.index+K[0].length);return i4(Q)}function W5(Z,$){let K=new RegExp(`function\\s+${$}\\s*\\([^)]*\\)\\s*-([>?!])`,"g").exec(Z);if(!K)return;let Q=K[1];if(Q==="?")return"safe";if(Q==="!")return"unsafe";return}function J5(Z){let $=Z.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return $?$[1].trim():void 0}function _5(Z,$){let X=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${$}\\s*\\(`,"m"),K=Z.match(X);return K?parseInt(K[1],10):void 0}function v1(Z,$={}){let{filename:X="<source>",runTests:K=!0,debug:Q=!1,resolvedImports:H={}}=$,Y=[],W=J5(Z)||X,{code:z,tests:J,mocks:U,testRunner:_}=n0(Z),{ast:q,originalSource:D,requiredParams:R,unsafeFunctions:M}=q1(z,{filename:X,colonShorthand:!0}),I=L5(q),j=s1(z),P={},A=[];for(let N of I){let b=N.id?.name||"anonymous",t=z5(z,b),{types:e,warnings:v0}=Y5(N,D,R,t);Y.push(...v0),P[b]=e;let S4=j.moduleSafety==="none"||M.has(b),X6=j.safeFunctions.has(b),$6=W5(z,b),K6=_5(Z,b),y0={file:W,line:K6??N.loc?.start.line??0,column:N.loc?.start.column??0},Q6=U5(b,e,{unsafe:S4,safe:X6,returnSafety:$6},{debug:Q,source:y0});if(A.push({position:N.end,text:`
|
|
145
|
+
${Q6}`}),!S4){let H6=`${y0.file}:${y0.line}`,T4=G5(b,e,H6);if(T4&&N.body&&N.body.start!==void 0)A.push({position:N.body.start+1,text:`
|
|
146
|
+
${T4}
|
|
147
|
+
`})}}A.sort((N,b)=>b.position-N.position);let O=j.source;for(let{position:N,text:b}of A)O=O.slice(0,N)+b+O.slice(N);let V=O.includes("__tjs.typeError("),T=O.includes("Is("),S=O.includes("IsNot(");if(V||T||S){let N=`const __tjs = globalThis.__tjs?.createRuntime?.() ?? globalThis.__tjs;
|
|
148
|
+
`;if(T||S){let b=[T&&"Is",S&&"IsNot"].filter(Boolean).join(", ");N+=`const { ${b} } = __tjs ?? {};
|
|
149
|
+
`}O=N+O}let x;if(K){if(x=[],J.length>0){let t=B5(J,U,O,H);x.push(...t)}let N=I5(Z,O,H);x.push(...N);let b=x.filter((t)=>!t.passed);if(b.length>0&&K===!0){let t=b.map((e)=>{if(e.isSignatureTest)return` Function signature example is inconsistent:
|
|
150
|
+
${e.error}`;return` Test '${e.description}' failed:
|
|
151
|
+
${e.error}`});throw Error(`Transpile-time test failures:
|
|
152
|
+
${t.join(`
|
|
153
|
+
`)}`)}}if(K==="only")return{code:"",types:P,metadata:P,testResults:x,testCount:x?.length};return{code:O,types:P,metadata:P,warnings:Y.length>0?Y:void 0,testRunner:J.length>0?_:void 0,testCount:J.length>0?J.length:void 0,testResults:x}}function L5(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 f1(Z){let $={kind:Z.kind};if(Z.nullable)$.nullable=!0;if(Z.items)$.items=f1(Z.items);if(Z.shape)$.shape=Object.fromEntries(Object.entries(Z.shape).map(([X,K])=>[X,f1(K)]));if(Z.members)$.members=Z.members.map(f1);return $}function U5(Z,$,X={},K={}){let Q={};for(let[Y,G]of Object.entries($.params)){if(Q[Y]={type:f1(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:f1($.returns)},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 l4(Z,$){switch($.kind){case"string":return`typeof ${Z} !== 'string'`;case"number":return`typeof ${Z} !== 'number'`;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}}function q5(Z,$,X=0.000000001){if(Z===$)return!0;if(typeof Z==="number"&&typeof $==="number"){if(!Number.isInteger(Z)||!Number.isInteger($)){let K=Math.abs(Z-$),Q=Math.max(Math.abs(Z),Math.abs($),1);return K/Q<X}}return!1}function c0(Z,$){if(Z===$)return!0;if(q5(Z,$))return!0;if(Z===null||$===null)return Z===$;if(Z===void 0||$===void 0)return Z===$;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)=>c0(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)=>c0(Z[Q],$[Q]))}function o0(Z,$,X=""){if($===null){if(Z===null)return{matches:!0};return{matches:!1,error:`Expected null at '${X}', got ${B1(Z)}`}}if($===void 0){if(Z===void 0)return{matches:!0};return{matches:!1,error:`Expected undefined at '${X}', got ${B1(Z)}`}}if(typeof $==="number"){if(typeof Z==="number")return{matches:!0};return{matches:!1,error:`Expected number at '${X}', got ${B1(Z)}`}}if(typeof $==="string"){if(typeof Z==="string")return{matches:!0};return{matches:!1,error:`Expected string at '${X}', got ${B1(Z)}`}}if(typeof $==="boolean"){if(typeof Z==="boolean")return{matches:!0};return{matches:!1,error:`Expected boolean at '${X}', got ${B1(Z)}`}}if(Array.isArray($)){if(!Array.isArray(Z))return{matches:!1,error:`Expected array at '${X}', got ${B1(Z)}`};if($.length===0)return{matches:!0};let K=$[0];for(let Q=0;Q<Z.length;Q++){let H=o0(Z[Q],K,`${X}[${Q}]`);if(!H.matches)return H}return{matches:!0}}if(typeof $==="object"&&$!==null){if(typeof Z!=="object"||Z===null||Array.isArray(Z))return{matches:!1,error:`Expected object at '${X}', got ${B1(Z)}`};for(let K of Object.keys($)){let Q=X?`${X}.${K}`:K;if(!(K in Z))return{matches:!1,error:`Missing property '${Q}'`};let H=o0(Z[K],$[K],Q);if(!H.matches)return H}return{matches:!0}}if(Z===$)return{matches:!0};return{matches:!1,error:`Type mismatch at '${X}'`}}function B1(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";return typeof Z}function j1(Z,$=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((X)=>j1(X,$)).join(", ")}]`;return`[${Z.slice(0,3).map((X)=>j1(X,$)).join(", ")}, ...]`}if(typeof Z==="object"){let X=Object.entries(Z);if(X.length===0)return"{}";let K=(W)=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(W)?W:JSON.stringify(W);if(X.length<=2)return`{${X.map(([z,J])=>`${K(z)}: ${j1(J,$)}`).join(", ")}}`;let Q=" ".repeat($+1),H=" ".repeat($),Y=X.slice(0,8).map(([W,z])=>`${Q}${K(W)}: ${j1(z,$+1)}`).join(`,
|
|
154
|
+
`),G=X.length>8?`,
|
|
155
|
+
${Q}...`:"";return`{
|
|
156
|
+
${Y}${G}
|
|
157
|
+
${H}}`}return String(Z)}function D5(Z){let $=Z.replace(/\/\*[\s\S]*?\*\//g,(X)=>{let K=X.split(`
|
|
158
|
+
`).length-1;return`
|
|
159
|
+
`.repeat(K)});return $=$.replace(/\/\/[^\n]*/g,""),$}function t1(Z){let $=Z.replace(/^import\s+.*?from\s+['"][^'"]+['"];?\s*$/gm,"");return $=$.replace(/^import\s+['"][^'"]+['"];?\s*$/gm,""),$=$.replace(/^export\s+default\s+/gm,""),$=$.replace(/^export\s+/gm,""),$}function e1(Z){let $=Z.replace(/^const __tjs = globalThis\.__tjs\?\.createRuntime\?\.\(\) \?\? globalThis\.__tjs;\n?/m,"");return $=$.replace(/^const \{ (?:Is|IsNot|Is, IsNot) \} = __tjs \?\? \{\};\n?/m,""),$}function p4(Z){if(Object.keys(Z).length===0)return"";let $=[];for(let[X,K]of Object.entries(Z)){let Q=t1(K);Q=e1(Q),$.push(`// Resolved import: ${X}`),$.push(Q)}return $.join(`
|
|
160
|
+
`)}function B5(Z,$,X,K={}){let Q=[],H=t1(X);H=e1(H);let Y=p4(K),G=$.map((W)=>W.body).join(`
|
|
161
|
+
`);for(let W of Z)try{let U=`
|
|
162
|
+
|
|
163
|
+
const __saved_tjs = globalThis.__tjs;
|
|
164
|
+
const __stub_tjs = { version: '0.0.0', pushStack: () => {}, typeError: (path, expected, value) => new Error(\`Type error at \${path}: expected \${expected}\`), createRuntime: function() { return this; } };
|
|
165
|
+
globalThis.__tjs = __stub_tjs;
|
|
166
|
+
|
|
167
|
+
try {
|
|
168
|
+
// Inject resolved imports first (they may be dependencies)
|
|
169
|
+
${Y}
|
|
170
|
+
${H}
|
|
171
|
+
${G}
|
|
172
|
+
|
|
173
|
+
// Test assertions
|
|
174
|
+
function assert(condition, message) {
|
|
175
|
+
if (!condition) throw new Error(message || 'Assertion failed')
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
function expect(actual) {
|
|
179
|
+
return {
|
|
180
|
+
toBe(expected) {
|
|
181
|
+
if (!__deepEqual(actual, expected)) {
|
|
182
|
+
throw new Error('Expected ' + __format(expected) + ' but got ' + __format(actual))
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
toEqual(expected) {
|
|
186
|
+
if (!__deepEqual(actual, expected)) {
|
|
187
|
+
throw new Error('Expected ' + __format(expected) + ' but got ' + __format(actual))
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// Run the test body
|
|
194
|
+
${W.body}
|
|
195
|
+
} finally {
|
|
196
|
+
globalThis.__tjs = __saved_tjs;
|
|
197
|
+
}
|
|
198
|
+
`;Function("__deepEqual","__format",U)(c0,j1),Q.push({description:W.description,passed:!0,line:W.line})}catch(z){Q.push({description:W.description,passed:!1,error:z.message||String(z),line:W.line})}return Q}function I5(Z,$,X={}){let K=[],Q=D5(Z),H=/function\s+(\w+)\s*\(([^)]*)\)\s*(-[>?])\s*/g,Y;while((Y=H.exec(Q))!==null){let G=Y[1],W=Y[2],z=Y[3],J=Q.slice(0,Y.index).split(`
|
|
199
|
+
`).length;if(z==="-!")continue;let U=Q.slice(Y.index+Y[0].length),_=i4(U);if(!_)continue;let q=R5(W);if(W.trim()&&q.length===0)continue;try{let R=Function(`return ${_}`)(),M=q.map((j)=>Function(`return ${j}`)()),I=A5(G,$,M,R,X);I.line=J,K.push(I)}catch(D){K.push({description:`${G} signature example`,passed:!1,error:`Failed to parse signature: ${D.message}`,isSignatureTest:!0,line:J})}}return K}function i4(Z){let $="",X=0,K=!1;for(let H=0;H<Z.length;H++){let Y=Z[H];if(Y==="{"||Y==="["||Y==="("){if(Y==="{"&&X===0&&K)break;X++,$+=Y,K=!0}else if(Y==="}"||Y==="]"||Y===")")X--,$+=Y;else if(!/\s/.test(Y))$+=Y,K=!0;else $+=Y}return $.trim()||null}function R5(Z){if(!Z.trim())return[];let $=[],X=M5(Z);for(let K of X){let Q=K.match(/(?:\(\s*[?!]\s*)?(\w+)\s*[:=]\s*(.+?)(?:\))?$/);if(Q)$.push(Q[2].trim());else return[]}return $}function M5(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){$.push(X.trim()),X="";continue}X+=Q}if(X.trim())$.push(X.trim());return $}function A5(Z,$,X,K,Q={}){let H=`${Z} signature example`,Y=t1($);Y=e1(Y);let G=p4(Q);try{let J=`
|
|
200
|
+
|
|
201
|
+
const __saved_tjs = globalThis.__tjs;
|
|
202
|
+
const __stub_tjs = { version: '0.0.0', pushStack: () => {}, typeError: (path, expected, value) => new Error(\`Type error at \${path}: expected \${expected}\`), createRuntime: function() { return this; } };
|
|
203
|
+
globalThis.__tjs = __stub_tjs;
|
|
204
|
+
|
|
205
|
+
try {
|
|
206
|
+
// Inject resolved imports first (they may be dependencies)
|
|
207
|
+
${G}
|
|
208
|
+
${Y}
|
|
209
|
+
return ${Z}(${X.map((D)=>JSON.stringify(D)).join(", ")})
|
|
210
|
+
} finally {
|
|
211
|
+
globalThis.__tjs = __saved_tjs;
|
|
212
|
+
}
|
|
213
|
+
`,_=Function(J)(),q=o0(_,K,Z);if(!q.matches)return{description:H,passed:!1,error:q.error||`Type mismatch: got ${j1(_)}`,isSignatureTest:!0};return{description:H,passed:!0,isSignatureTest:!0}}catch(W){return{description:H,passed:!1,error:W.message||String(W),isSignatureTest:!0}}}import B from"typescript";import{validate as o4,s as R0}from"tosijs-schema";import{validate as s0,s as Z0}from"tosijs-schema";function J1(Z){return Z!==null&&typeof Z==="object"&&"__runtimeType"in Z&&Z.__runtimeType===!0}function n4(Z){return Z!==null&&typeof Z==="object"&&"schema"in Z&&typeof Z.schema==="object"}function F5(Z){return Z!==null&&typeof Z==="object"&&"type"in Z&&typeof Z.type==="string"}function h(Z,$,X,K){let Q,H,Y,G=X,W=K;if(typeof Z==="string")if(Q=Z,typeof $==="function"){if(H=$,G!==void 0)Y=Z0.infer(G)}else if($===void 0&&G!==void 0)Y=Z0.infer(G);else if(n4($))Y=$;else if(F5($))Y=$;else if($!==void 0)G=$,W=G,Y=Z0.infer(G);else throw Error("Type(description) requires a predicate, schema, or example");else{if(n4(Z))Y=Z;else Y=Z;Q=j5(Y)}return{description:Q,check:(J)=>{if(H)return H(J);if(Y)return s0(J,Y);return!1},schema:Y,predicate:H,example:G,default:W,__runtimeType:!0}}function j5(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 X0=h("string",(Z)=>typeof Z==="string"),$0=h("number",(Z)=>typeof Z==="number"),K0=h("boolean",(Z)=>typeof Z==="boolean"),Q0=h("integer",(Z)=>typeof Z==="number"&&Number.isInteger(Z)),H0=h("positive integer",(Z)=>typeof Z==="number"&&Number.isInteger(Z)&&Z>0),Y0=h("non-empty string",(Z)=>typeof Z==="string"&&Z.length>0),G0=h("email address",(Z)=>typeof Z==="string"&&/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(Z)),a0=(Z)=>{try{return new URL(Z),!0}catch{return!1}},z0=h("URL",(Z)=>typeof Z==="string"&&a0(Z)),W0=h("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)),r0=(Z)=>{let $=new Date(Z);return!isNaN($.getTime())&&Z.includes("T")},t0=(Z)=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(Z))return!1;let $=new Date(Z+"T00:00:00Z");return!isNaN($.getTime())},e0=h("ISO 8601 timestamp",(Z)=>typeof Z==="string"&&r0(Z)),Z4=h("date (YYYY-MM-DD)",(Z)=>typeof Z==="string"&&t0(Z));function J0(Z){return h(`${Z.description} or null`,($)=>$===null||Z.check($))}function _0(Z){return h(`${Z.description} (optional)`,($)=>$===null||$===void 0||Z.check($))}function L0(Z,$,...X){if(typeof Z==="string"&&Array.isArray($)){let H=Z,Y=$,G=new Set(Y);return{description:H,check:(z)=>G.has(z),__runtimeType:!0,values:Y}}let K=[];if(J1(Z))K.push(Z);if(J1($))K.push($);K.push(...X);let Q=K.map((H)=>H.description).join(" | ");return h(Q,(H)=>K.some((Y)=>Y.check(H)))}function U0(Z){return h(`array of ${Z.description}`,($)=>Array.isArray($)&&$.every((X)=>Z.check(X)))}function w5(Z){if(J1(Z))return(X)=>Z.check(X);if(Z&&typeof Z==="object"&&"schema"in Z)return(X)=>s0(X,Z);let $=Z0.infer(Z);return(X)=>s0(X,$)}function w1(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((z,J)=>{let U=J<Y.length?Y[J]:Q[J];if(U===void 0)return()=>!0;return w5(U)}),W=X;return K.forEach((z,J)=>{let U=J<Y.length?Y[J]:Q[J],_="any";if(J1(U))_=U.description;else if(U!==void 0)_=typeof U==="string"?"string":JSON.stringify(U);W=W.replace(new RegExp(`\\b${z}\\b`,"g"),_)}),h(W,(z)=>$(z,...G))};return H.params=K,H.description=X,H}var q0=w1(["T","U"],(Z,$,X)=>Array.isArray(Z)&&Z.length===2&&$(Z[0])&&X(Z[1]),"Pair<T, U>"),D0=w1(["V"],(Z,$)=>typeof Z==="object"&&Z!==null&&!Array.isArray(Z)&&Object.values(Z).every($),"Record<string, V>");function B0(Z,$){let X=Object.values($),K=new Set(X),Q=Object.keys($),H={};for(let[G,W]of Object.entries($))H[W]=G;return{description:Z,check:(G)=>K.has(G),__runtimeType:!0,members:$,names:H,values:X,keys:Q}}var O5=c4(),p=O5.version;function M0(Z){let[$=0,X=0,K=0]=Z.split(".").map(Number);return{major:$,minor:X,patch:K}}function X4(Z,$){let X=M0(Z),K=M0($);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 $4(Z,$){let X=M0(Z),K=M0($);return X.major===K.major}class M1 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,M1)}}function C5(Z,$,X){let K=X===null?"null":typeof X,Q=n.debug?r4():void 0;return new M1(`Expected ${$} for '${Z}', got ${K}`,Z,$,K,Q)}function s4(Z){return Z instanceof M1}var K4={debug:!1,safety:"inputs",requireReturnTypes:!1,maxStackSize:100},n={...K4},H1=[],O1=0;function V5(){O1++}function E5(){if(O1>0)O1--}function N5(){return O1>0}function S5(Z){n={...n,...Z}}function T5(){return{...n}}function a4(Z){if(n.debug&&Z){H1.push(Z);let $=n.maxStackSize??100;while(H1.length>$)H1.shift()}}function I0(){if(n.debug)H1.pop()}function r4(){return[...H1]}function k5(){n={...K4},H1.length=0,O1=0}function y1(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)=>y1(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)=>y1(Z[Q],$[Q]))}function t4(Z,$){return!y1(Z,$)}function Q1(Z){return Z!==null&&typeof Z==="object"&&Z.$error===!0}function X1(Z,$){let X={$error:!0,message:Z,...$};if(n.debug&&H1.length>0){let K=$?.path?[...H1,$.path]:[...H1];X.stack=K}return X}function Q4(Z,$){if(Z.length===0)return X1("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 X1(K,{path:$,errors:Z})}function P1(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 e4(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 R1(Z,$,X){if(Q1(Z))return Z;if(typeof $==="object"&&$!==null&&"check"in $){if($.check(Z))return null;return X1(`Expected ${$.description} but got ${P1(Z)}`,{path:X,expected:$.description,actual:P1(Z)})}let K=P1(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($==="object"&&K==="object")return null;return X1(`Expected ${$} but got ${K}`,{path:X,expected:$,actual:K})}function H4(Z,$,X){for(let[K,Q]of Object.entries($.params)){let H=Z[K];if(Q1(H))return H;if(Q.required&&H===void 0){let G=typeof Q.type==="string"?Q.type:Q.type.description;return X1(`Missing required parameter '${K}'`,{path:X?`${X}.${K}`:K,expected:G,actual:"undefined",loc:Q.loc})}if(H===void 0)continue;let Y=R1(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=$,!($.safe||$.safeReturn||n.safety!=="none"&&!$.unsafe||$.returns&&n.safety==="all"&&!$.unsafeReturn))return Z;let K=!!$.returns,Q=!!$.unsafe,H=!!$.safe,Y=!!$.unsafeReturn,G=!!$.safeReturn,W=Object.entries($.params),z=W.length,J=Z.name||$.name||"anonymous",U=function(..._){if(O1>0)return Z.apply(this,_);let q=H||!Q&&n.safety!=="none",D=K&&(G||!Y&&n.safety==="all");if(!q&&!D)return Z.apply(this,_);if(_.length>0&&Q1(_[0]))return _[0];if(q){let R=_.length===1&&typeof _[0]==="object"&&_[0]!==null&&!Array.isArray(_[0]),M=[];if(!R)for(let I=0;I<z;I++){let[j,P]=W[I],A=_[I];if(Q1(A)){M.push(A);continue}if(P.required&&A===void 0){M.push(X1(`Missing required parameter '${j}'`,{path:`${J}.${j}`,expected:typeof P.type==="string"?P.type:P.type?.description||"value",actual:"undefined",loc:P.loc}));continue}if(A!==void 0){let O=R1(A,P.type,`${J}.${j}`);if(O){if(P.loc)O.loc=P.loc;M.push(O)}}}else{let I=_[0];for(let j=0;j<z;j++){let[P,A]=W[j],O=I[P];if(Q1(O)){M.push(O);continue}if(A.required&&O===void 0){M.push(X1(`Missing required parameter '${P}'`,{path:`${J}.${P}`,expected:typeof A.type==="string"?A.type:A.type?.description||"value",actual:"undefined",loc:A.loc}));continue}if(O!==void 0){let V=R1(O,A.type,`${J}.${P}`);if(V){if(A.loc)V.loc=A.loc;M.push(V)}}}}if(M.length>0)return Q4(M,J)}a4(J);try{let R=Z.apply(this,_);if(D&&$.returns&&!Q1(R)){let M=R1(R,$.returns.type,`${J}()`);if(M)return I0(),M}return I0(),R}catch(R){return I0(),X1(R.message||String(R),{path:J,cause:R})}};return Object.defineProperty(U,"name",{value:Z.name}),U.__tjs=$,U}function Z7(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 g5(){let Z={...n},$=[],X=0;function K(D){Z={...Z,...D}}function Q(){return{...Z}}function H(D){if(Z.debug&&D){$.push(D);let R=Z.maxStackSize??100;while($.length>R)$.shift()}}function Y(){if(Z.debug)$.pop()}function G(){return[...$]}function W(){Z={...K4},$.length=0,X=0}function z(){X++}function J(){if(X>0)X--}function U(){return X>0}function _(D,R,M){let I=M===null?"null":typeof M,j=Z.debug?G():void 0;return new M1(`Expected ${R} for '${D}', got ${I}`,D,R,I,j)}function q(D,R){let M={$error:!0,message:D,...R};if(Z.debug&&$.length>0){let I=R?.path?[...$,R.path]:[...$];M.stack=I}return M}return{version:p,MonadicError:M1,typeError:_,isMonadicError:s4,isError:Q1,error:q,composeErrors:Q4,typeOf:P1,isNativeType:e4,checkType:R1,validateArgs:H4,wrap:Y4,wrapClass:Z7,compareVersions:X4,versionsCompatible:$4,configure:K,getConfig:Q,pushStack:H,popStack:Y,getStack:G,resetRuntime:W,enterUnsafe:z,exitUnsafe:J,isUnsafeMode:U,validate:o4,infer:R0.infer.bind(R0),Type:h,isRuntimeType:J1,Union:L0,Generic:w1,Enum:B0,Nullable:J0,Optional:_0,TArray:U0,TString:X0,TNumber:$0,TBoolean:K0,TInteger:Q0,TPositiveInt:H0,TNonEmptyString:Y0,TEmail:G0,TUrl:z0,TUuid:W0,TPair:q0,TRecord:D0,Is:y1,IsNot:t4}}var I1={version:p,MonadicError:M1,typeError:C5,isMonadicError:s4,isError:Q1,error:X1,composeErrors:Q4,typeOf:P1,isNativeType:e4,checkType:R1,validateArgs:H4,wrap:Y4,wrapClass:Z7,compareVersions:X4,versionsCompatible:$4,configure:S5,getConfig:T5,pushStack:a4,popStack:I0,getStack:r4,resetRuntime:k5,enterUnsafe:V5,exitUnsafe:E5,isUnsafeMode:N5,createRuntime:g5,validate:o4,infer:R0.infer.bind(R0),Type:h,isRuntimeType:J1,Union:L0,Generic:w1,Enum:B0,Nullable:J0,Optional:_0,TArray:U0,TString:X0,TNumber:$0,TBoolean:K0,TInteger:Q0,TPositiveInt:H0,TNonEmptyString:Y0,TEmail:G0,TUrl:z0,TUuid:W0,Timestamp:e0,LegalDate:Z4,TPair:q0,TRecord:D0,Is:y1,IsNot:t4};function b5(){let Z=globalThis;if(Z.__tjs){let $=Z.__tjs.version;if(typeof $!=="string")return Z.__tjs=I1,I1;let X=X4(p,$);if(X===0)return Z.__tjs;if($4(p,$))if(X>0)console.info(`TJS runtime: upgrading ${$} → ${p}`),Z.__tjs=I1;else console.info(`TJS runtime: keeping ${$} (newer than ${p})`);else if(console.warn(`TJS runtime version conflict: ${$} vs ${p} (major version mismatch)`),X>0)console.warn(`Upgrading to ${p} - check for breaking changes`),Z.__tjs=I1;return Z.__tjs}return Z.__tjs=I1,I1}function f5(Z){return`
|
|
214
|
+
// TJS runtime wrapper (skips unsafe functions)
|
|
215
|
+
if (typeof ${Z}.__tjs === 'object' && !${Z}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
|
|
216
|
+
${Z} = globalThis.__tjs.wrap(${Z}, ${Z}.__tjs)
|
|
217
|
+
}
|
|
218
|
+
`.trim()}function X7(Z){return`
|
|
219
|
+
// TJS: callable without new
|
|
220
|
+
${Z} = new Proxy(${Z}, { apply(t, _, a) { return Reflect.construct(t, a) } });
|
|
221
|
+
`.trim()}function v(Z,$,X,K){if(!Z)return"undefined";switch(Z.kind){case B.SyntaxKind.StringKeyword:return"''";case B.SyntaxKind.NumberKeyword:return"0";case B.SyntaxKind.BooleanKeyword:return"true";case B.SyntaxKind.NullKeyword:return"null";case B.SyntaxKind.UndefinedKeyword:return"undefined";case B.SyntaxKind.VoidKeyword:return"undefined";case B.SyntaxKind.AnyKeyword:return"any";case B.SyntaxKind.UnknownKeyword:return"any";case B.SyntaxKind.NeverKeyword:return"null";case B.SyntaxKind.ArrayType:{let H=v(Z.elementType,$);if(H==="any")H="null";return`[${H}]`}case B.SyntaxKind.TypeReference:{let Q=Z,H=Q.typeName.getText();if(H==="Array"&&Q.typeArguments?.length)return`[${v(Q.typeArguments[0],$,X,K)}]`;if(H==="Promise"){if(Q.typeArguments?.length)return v(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 X?.push(`Circular type reference '${H}' - using 'any'`),"any";Y.add(H);let G=K.typeAliases.get(H);return v(G,$,X,{...K,visited:Y})}if(K?.interfaces?.has(H)){let Y=K.visited??new Set;if(Y.has(H))return X?.push(`Circular type reference '${H}' - using 'any'`),"any";Y.add(H);let G=K.interfaces.get(H),W=[];for(let z of G.members)if(B.isPropertySignature(z)&&z.name){let J=z.name.getText(K.sourceFile),U=v(z.type,$,X,{...K,visited:Y});if(!!z.questionToken)W.push(`${J} = ${U}`);else W.push(`${J}: ${U}`)}return`{ ${W.join(", ")} }`}if(/^[A-Z]$/.test(H)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(H))return X?.push(`Generic type parameter '${H}' converted to 'any' - consider specializing`),"any";return X?.push(`Unknown type '${H}' converted to 'any' - may need manual review`),"any"}case B.SyntaxKind.TypeLiteral:{let Q=Z,H=[];for(let Y of Q.members)if(B.isPropertySignature(Y)&&Y.name){let G=Y.name.getText(),W=v(Y.type,$);if(W==="any")W="null";H.push(`${G}: ${W}`)}return`{ ${H.join(", ")} }`}case B.SyntaxKind.UnionType:{let Q=Z,H=(J)=>J.kind===B.SyntaxKind.NullKeyword||B.isLiteralTypeNode(J)&&J.literal.kind===B.SyntaxKind.NullKeyword,Y=(J)=>J.kind===B.SyntaxKind.UndefinedKeyword||B.isLiteralTypeNode(J)&&J.literal.kind===B.SyntaxKind.UndefinedKeyword,G=Q.types.filter((J)=>!H(J)&&!Y(J)),W=Q.types.some(H),z=Q.types.some(Y);if(G.length===1&&(W||z)){let J=v(G[0],$);if(W)return`${J} || null`;if(z)return`${J} || undefined`}if(Q.types.length>0)return v(Q.types[0],$);return"undefined"}case B.SyntaxKind.LiteralType:{let Q=Z;if(B.isStringLiteral(Q.literal))return`'${Q.literal.text}'`;if(B.isNumericLiteral(Q.literal))return Q.literal.text;if(Q.literal.kind===B.SyntaxKind.TrueKeyword)return"true";if(Q.literal.kind===B.SyntaxKind.FalseKeyword)return"false";if(Q.literal.kind===B.SyntaxKind.NullKeyword)return"null";return"undefined"}case B.SyntaxKind.ParenthesizedType:return v(Z.type,$);case B.SyntaxKind.FunctionType:return"undefined";case B.SyntaxKind.TupleType:return`[${Z.elements.map((Y)=>{if(B.isNamedTupleMember(Y))return v(Y.type,$);return v(Y,$)}).join(", ")}]`;default:return"undefined"}}function d(Z,$){if(!Z)return{kind:"any"};switch(Z.kind){case B.SyntaxKind.StringKeyword:return{kind:"string"};case B.SyntaxKind.NumberKeyword:return{kind:"number"};case B.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case B.SyntaxKind.NullKeyword:return{kind:"null"};case B.SyntaxKind.UndefinedKeyword:case B.SyntaxKind.VoidKeyword:return{kind:"undefined"};case B.SyntaxKind.ArrayType:return{kind:"array",items:d(Z.elementType,$)};case B.SyntaxKind.TypeLiteral:{let X=Z,K={};for(let Q of X.members)if(B.isPropertySignature(Q)&&Q.name){let H=Q.name.getText();K[H]=d(Q.type,$)}return{kind:"object",shape:K}}case B.SyntaxKind.UnionType:{let X=Z,K=X.types.filter((H)=>H.kind!==B.SyntaxKind.NullKeyword&&H.kind!==B.SyntaxKind.UndefinedKeyword),Q=X.types.some((H)=>H.kind===B.SyntaxKind.NullKeyword);if(K.length===1&&Q)return{...d(K[0],$),nullable:!0};return{kind:"union",members:X.types.map((H)=>d(H,$))}}case B.SyntaxKind.IntersectionType:{let X=Z,K={};for(let Q of X.types){let H=d(Q,$);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 B.SyntaxKind.TupleType:{let X=Z,K=[];for(let Q of X.elements)if(B.isNamedTupleMember(Q))K.push(d(Q.type,$));else K.push(d(Q,$));return{kind:"tuple",elements:K}}case B.SyntaxKind.TypeReference:{let X=Z,K=X.typeName.getText();if(K==="Array"&&X.typeArguments?.length)return{kind:"array",items:d(X.typeArguments[0],$)};if(K==="Promise"&&X.typeArguments?.length)return d(X.typeArguments[0],$);if(X.typeArguments?.length){let Q=d(X.typeArguments[0],$);if(K==="Partial")return Q;if(K==="Required")return Q;if(K==="Readonly")return Q;if(K==="Record"&&X.typeArguments.length>=2)return{kind:"object",shape:{"[key]":d(X.typeArguments[1],$)}};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($?.typeAliases?.has(K)){let Q=$.visited??new Set;if(Q.has(K))return{kind:"any"};Q.add(K);let H=$.typeAliases.get(K);return d(H,{...$,visited:Q})}if($?.interfaces?.has(K)){let Q=$.visited??new Set;if(Q.has(K))return{kind:"any"};Q.add(K);let H=$.interfaces.get(K),Y={};if(H.heritageClauses){for(let G of H.heritageClauses)if(G.token===B.SyntaxKind.ExtendsKeyword)for(let W of G.types){let z=W.expression.getText($.sourceFile);if($.interfaces?.has(z)&&!Q.has(z)){let J={kind:B.SyntaxKind.TypeReference,typeName:{getText:()=>z}},U=d(J,{...$,visited:Q});if(U.kind==="object"&&U.shape)Object.assign(Y,U.shape)}}}for(let G of H.members)if(B.isPropertySignature(G)&&G.name){let W=G.name.getText($.sourceFile);Y[W]=d(G.type,{...$,visited:Q})}return{kind:"object",shape:Y}}return{kind:"any"}}default:return{kind:"any"}}}function v5(Z,$){if(!Z.typeParameters||Z.typeParameters.length===0)return;let X={};for(let K of Z.typeParameters){let Q=K.name.getText(),H={};if(K.constraint){let Y=v(K.constraint,void 0,$);if(Y.startsWith("{"))try{H.constraint=Y}catch{H.constraint=Y}else H.constraint=Y}if(K.default){let Y=v(K.default,void 0,$);H.default=Y}X[Q]=H}return Object.keys(X).length>0?X:void 0}function y5(Z,$,X){let K=Z.name.getText($);if(Z.typeParameters&&Z.typeParameters.length>0)return h5(Z,$,X);let Q=[];for(let H of Z.members)if(B.isPropertySignature(H)&&H.name){let Y=H.name.getText($),G=v(H.type,void 0,X);if(G==="any")G="null";Q.push(`${Y}: ${G}`)}if(Q.length===0)return`Type ${K} {}`;return`Type ${K} {
|
|
222
|
+
example: { ${Q.join(", ")} }
|
|
223
|
+
}`}function h5(Z,$,X){let K=Z.name.getText($),Q=[];for(let W of Z.typeParameters||[]){let z=W.name.getText($);if(W.default){let J=v(W.default,void 0,X);Q.push(`${z} = ${J}`)}else Q.push(z)}let H=(Z.typeParameters||[]).map((W)=>W.name.getText($)),Y=["typeof x === 'object'","x !== null"];for(let W of Z.members)if(B.isPropertySignature(W)&&W.name){let z=W.name.getText($);if(Y.push(`'${z}' in x`),W.type&&B.isTypeReferenceNode(W.type)){let J=W.type.typeName.getText($);if(H.includes(J))Y.push(`${J}(x.${z})`)}}let G=["x",...H].join(", ");return`Generic ${K}<${Q.join(", ")}> {
|
|
224
|
+
description: '${K}'
|
|
225
|
+
predicate(${G}) { return ${Y.join(" && ")} }
|
|
226
|
+
}`}function x5(Z,$){if(!B.isUnionTypeNode(Z))return null;let X=[];for(let K of Z.types)if(B.isLiteralTypeNode(K))if(B.isStringLiteral(K.literal))X.push(`'${K.literal.text}'`);else if(B.isNumericLiteral(K.literal))X.push(K.literal.text);else if(K.literal.kind===B.SyntaxKind.TrueKeyword)X.push("true");else if(K.literal.kind===B.SyntaxKind.FalseKeyword)X.push("false");else if(K.literal.kind===B.SyntaxKind.NullKeyword)X.push("null");else return null;else if(K.kind===B.SyntaxKind.NullKeyword)X.push("null");else if(K.kind===B.SyntaxKind.UndefinedKeyword)X.push("undefined");else return null;return X.length>0?X:null}function d5(Z,$,X){let K=Z.name.getText($),Q=[],H=0;for(let Y of Z.members){let G=Y.name.getText($);if(Y.initializer)if(B.isStringLiteral(Y.initializer))Q.push(` ${G} = '${Y.initializer.text}'`);else if(B.isNumericLiteral(Y.initializer)){let W=parseInt(Y.initializer.text,10);Q.push(` ${G} = ${W}`),H=W+1}else if(B.isPrefixUnaryExpression(Y.initializer)&&Y.initializer.operator===B.SyntaxKind.MinusToken){let W=Y.initializer.operand;if(B.isNumericLiteral(W)){let z=-parseInt(W.text,10);Q.push(` ${G} = ${z}`),H=z+1}}else Q.push(` ${G} = ${Y.initializer.getText($)}`);else Q.push(` ${G} = ${H}`),H++}return`Enum ${K} '${K}' {
|
|
227
|
+
${Q.join(`
|
|
228
|
+
`)}
|
|
229
|
+
}`}function u5(Z,$,X){let K=Z.name.getText($);if(Z.typeParameters&&Z.typeParameters.length>0)return m5(Z,$,X);let Q=x5(Z.type,$);if(Q)return`Union ${K} '${K}' ${Q.join(" | ")}`;let H=v(Z.type,void 0,X);if(H==="''"||H==="0"||H==="true"||H==="null")return`Type ${K} ${H}`;return`Type ${K} {
|
|
230
|
+
example: ${H}
|
|
231
|
+
}`}function m5(Z,$,X){let K=Z.name.getText($),Q=[];for(let G of Z.typeParameters||[]){let W=G.name.getText($);if(G.default){let z=v(G.default,void 0,X);Q.push(`${W} = ${z}`)}else Q.push(W)}let Y=["x",...(Z.typeParameters||[]).map((G)=>G.name.getText($))].join(", ");return`Generic ${K}<${Q.join(", ")}> {
|
|
232
|
+
description: '${K}'
|
|
233
|
+
predicate(${Y}) { return true }
|
|
234
|
+
}`}function $7(Z,$,X,K,Q){let H=[],{line:Y}=$.getLineAndCharacterOfPosition(Z.getStart($)),G=Q?`/* line ${Y+1} */
|
|
235
|
+
`:"";for(let D of Z.parameters){let R=D.name.getText($),M=!!D.questionToken||!!D.initializer,I=v(D.type,void 0,K);if(D.initializer){let j=D.initializer.getText($);H.push(`${R} = ${j}`)}else if(I==="any"||I==="undefined")H.push(R);else if(M)H.push(`${R} = ${I}`);else H.push(`${R}: ${I}`)}let W=X||(B.isFunctionDeclaration(Z)&&Z.name?Z.name.getText($):""),z=Z.type?v(Z.type,void 0,K):"",J=z&&z!=="undefined"&&z!=="any"?` -! ${z}`:"",U="";if(Z.body){let D=B.isBlock(Z.body)?Z.body.getText($):`{ return ${Z.body.getText($)} }`;U=B.transpileModule(D,{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}else U="{ }";let q=Z.modifiers?.some((D)=>D.kind===B.SyntaxKind.AsyncKeyword)?"async ":"";return`${G}${q}function ${W}(${H.join(", ")})${J} ${U}`}function l5(Z,$,X){let K=Z.name?.getText($)||"Anonymous",Q=Z.heritageClauses?.find((z)=>z.token===B.SyntaxKind.ExtendsKeyword)?.types[0]?.getText($),H=new Map;for(let z of Z.members)if(B.isPropertyDeclaration(z)&&z.name){let J=z.name.getText($);if(z.modifiers?.some((_)=>_.kind===B.SyntaxKind.PrivateKeyword)&&!J.startsWith("#"))H.set(J,`#${J}`)}let Y=(z)=>{let J=z;for(let[U,_]of H)J=J.replace(new RegExp(`this\\.${U}\\b`,"g"),`this.${_}`);return J},G=[];for(let z of Z.members){if(B.isConstructorDeclaration(z)){let J=G4(z.parameters,$,X),U="{ }";if(z.body){let _=B.transpileModule(z.body.getText($),{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}});U=Y(_.outputText.trim())}G.push(` constructor(${J.join(", ")}) ${U}`)}if(B.isMethodDeclaration(z)&&z.name){let J=z.name.getText($),U=z.modifiers?.some((P)=>P.kind===B.SyntaxKind.StaticKeyword),_=z.modifiers?.some((P)=>P.kind===B.SyntaxKind.AsyncKeyword),q=G4(z.parameters,$,X),D=z.type?v(z.type,void 0,X):"",R=D&&D!=="undefined"&&D!=="any"?` -! ${D}`:"",M="{ }";if(z.body){let P=B.transpileModule(z.body.getText($),{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}});M=Y(P.outputText.trim())}let I=U?"static ":"",j=_?"async ":"";G.push(` ${I}${j}${J}(${q.join(", ")})${R} ${M}`)}if(B.isGetAccessorDeclaration(z)&&z.name){let J=z.name.getText($),U=z.type?v(z.type,void 0,X):"",_=U&&U!=="undefined"&&U!=="any"?` -! ${U}`:"",q="{ }";if(z.body){let D=B.transpileModule(z.body.getText($),{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}});q=Y(D.outputText.trim())}G.push(` get ${J}()${_} ${q}`)}if(B.isSetAccessorDeclaration(z)&&z.name){let J=z.name.getText($),U=G4(z.parameters,$,X),_="{ }";if(z.body){let q=B.transpileModule(z.body.getText($),{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}});_=Y(q.outputText.trim())}G.push(` set ${J}(${U.join(", ")}) ${_}`)}if(B.isPropertyDeclaration(z)&&z.name){let J=z.name.getText($),_=z.modifiers?.some((D)=>D.kind===B.SyntaxKind.StaticKeyword)?"static ":"",q=H.get(J)||J;if(z.initializer){let D=B.transpileModule(z.initializer.getText($),{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}});G.push(` ${_}${q} = ${D.outputText.trim()}`)}else G.push(` ${_}${q}`)}}let W=Q?` extends ${Q}`:"";return`class ${K}${W} {
|
|
236
|
+
${G.join(`
|
|
237
|
+
`)}
|
|
238
|
+
}`}function G4(Z,$,X){let K=[];for(let Q of Z){let H=Q.name.getText($),Y=!!Q.questionToken||!!Q.initializer,G=v(Q.type,void 0,X);if(Q.initializer){let W=Q.initializer.getText($);K.push(`${H} = ${W}`)}else if(G==="any"||G==="undefined")K.push(H);else if(Y)K.push(`${H} = ${G}`);else K.push(`${H}: ${G}`)}return K}function K7(Z,$,X,K){let Q=B.isFunctionDeclaration(Z)&&Z.name?Z.name.getText($):"anonymous",H={};for(let W of Z.parameters){let z=W.name.getText($),J=!!W.questionToken||!!W.initializer,U=void 0;if(W.initializer){let _=W.initializer.getText($);try{U=JSON.parse(_)}catch{U=_}}H[z]={type:d(W.type,K),required:!J,default:U}}let Y={name:Q,params:H,returns:Z.type?d(Z.type,K):void 0},G=v5(Z,X);if(G)Y.typeParams=G;return Y}function p5(Z,$,X,K){let Q=Z.name?.getText($)||"anonymous",H={},Y={},G;for(let z of Z.members){if(B.isConstructorDeclaration(z)){let J={};for(let U of z.parameters){let _=U.name.getText($),q=!!U.questionToken||!!U.initializer,D=void 0;if(U.initializer){let R=U.initializer.getText($);try{D=JSON.parse(R)}catch{D=R}}J[_]={type:d(U.type,K),required:!q,default:D}}G={params:J}}if(B.isMethodDeclaration(z)&&z.name){let J=z.name.getText($),U=z.modifiers?.some((D)=>D.kind===B.SyntaxKind.StaticKeyword),_={};for(let D of z.parameters){let R=D.name.getText($),M=!!D.questionToken||!!D.initializer,I=void 0;if(D.initializer){let j=D.initializer.getText($);try{I=JSON.parse(j)}catch{I=j}}_[R]={type:d(D.type,K),required:!M,default:I}}let q={name:J,params:_,returns:z.type?d(z.type,K):void 0};if(U)Y[J]=q;else H[J]=q}}let W={name:Q,methods:H,staticMethods:Y};if(G)W.constructor=G;if(Z.typeParameters&&Z.typeParameters.length>0){let z={};for(let J of Z.typeParameters){let U=J.name.getText($),_={};if(J.constraint)_.constraint=v(J.constraint,void 0,X,K);if(J.default)_.default=v(J.default,void 0,X,K);z[U]=_}W.typeParams=z}return W}function i5(Z){let $=[],X=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{[\s\S]*?\}\s*\*\/|\/\*test\s*\{[\s\S]*?\}\s*\*\//g,K;while((K=X.exec(Z))!==null)$.push(K[0]);return $}function n5(Z,$={}){let{emitTJS:X=!1,filename:K="input.ts"}=$,Q=[],H=i5(Z),Y=B.createSourceFile(K,Z,B.ScriptTarget.Latest,!0),G=[],W=new Set,z={},J={},U=new Map,_=new Map;function q(I){if(B.isTypeAliasDeclaration(I))U.set(I.name.getText(Y),I.type);if(B.isInterfaceDeclaration(I))_.set(I.name.getText(Y),I);B.forEachChild(I,q)}q(Y);let D={typeAliases:U,interfaces:_,sourceFile:Y,warnings:Q};for(let I of Y.statements){let j=!1;if(B.isFunctionDeclaration(I)&&I.name){let P=I.name.getText(Y);if(j=!0,X)G.push($7(I,Y,void 0,Q,!0));else z[P]=K7(I,Y,Q,D)}if(B.isVariableStatement(I)){let P=!1;for(let A of I.declarationList.declarations)if(B.isIdentifier(A.name)&&A.initializer&&(B.isArrowFunction(A.initializer)||B.isFunctionExpression(A.initializer))){P=!0;let O=A.name.getText(Y),V=A.initializer;if(X)G.push($7(V,Y,O,Q,!0));else{let T=K7(V,Y,Q,D);T.name=O,z[O]=T}}if(!P&&X){let A=B.transpileModule(I.getText(Y),{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}});G.push(A.outputText.trim())}j=!0}if(B.isInterfaceDeclaration(I)){if(j=!0,X){let P=I.name.getText(Y);if(!W.has(P)){W.add(P);let A=y5(I,Y,Q);if(A)G.push(A)}}}if(B.isTypeAliasDeclaration(I)){if(j=!0,X){let P=I.name.getText(Y);if(!W.has(P)){W.add(P);let A=u5(I,Y,Q);if(A)G.push(A)}}}if(B.isEnumDeclaration(I)){if(j=!0,X){let P=I.name.getText(Y);if(!W.has(P)){W.add(P);let A=d5(I,Y,Q);if(A)G.push(A)}}}if(B.isClassDeclaration(I)&&I.name){let P=I.name.getText(Y);if(j=!0,X){let A=l5(I,Y,Q);G.push(A)}else J[P]=p5(I,Y,Q,D)}if(B.isImportDeclaration(I)){if(j=!0,X){if(!(I.importClause?.isTypeOnly||I.importClause?.namedBindings&&B.isNamedImports(I.importClause.namedBindings)&&I.importClause.namedBindings.elements.every((A)=>A.isTypeOnly))){let O=B.transpileModule(I.getText(Y),{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();if(O)G.push(O)}}}if(B.isExportDeclaration(I)||B.isExportAssignment(I)){if(j=!0,X){let A=B.transpileModule(I.getText(Y),{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();if(A)G.push(A)}}if(!j&&X){let A=B.transpileModule(I.getText(Y),{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();if(A)G.push(A)}}if(X){let j=`/* tjs <- ${K||"unknown"} */
|
|
239
|
+
|
|
240
|
+
`,P=H.length>0?`
|
|
241
|
+
|
|
242
|
+
`+H.join(`
|
|
243
|
+
|
|
244
|
+
`):"";return{code:j+G.join(`
|
|
245
|
+
|
|
246
|
+
`)+P,warnings:Q.length>0?Q:void 0}}let M=B.transpileModule(Z,{compilerOptions:{target:B.ScriptTarget.ESNext,module:B.ModuleKind.ESNext,removeComments:!1}}).outputText;for(let[I,j]of Object.entries(z)){let P={params:Object.fromEntries(Object.entries(j.params).map(([O,V])=>[O,{type:V.type.kind,required:V.required,default:V.default}])),returns:j.returns?{type:j.returns.kind}:void 0};if(j.typeParams)P.typeParams=j.typeParams;let A=JSON.stringify(P,null,2);M+=`
|
|
247
|
+
${I}.__tjs = ${A};
|
|
248
|
+
`}for(let[I,j]of Object.entries(J)){let P={constructor:j.constructor?{params:Object.fromEntries(Object.entries(j.constructor.params??{}).map(([O,V])=>[O,{type:V.type.kind,required:V.required,default:V.default}]))}:void 0,methods:Object.fromEntries(Object.entries(j.methods??{}).map(([O,V])=>[O,{params:Object.fromEntries(Object.entries(V.params??{}).map(([T,S])=>[T,{type:S.type.kind,required:S.required}])),returns:V.returns?{type:V.returns.kind}:void 0}])),staticMethods:Object.fromEntries(Object.entries(j.staticMethods??{}).map(([O,V])=>[O,{params:Object.fromEntries(Object.entries(V.params??{}).map(([T,S])=>[T,{type:S.type.kind,required:S.required}])),returns:V.returns?{type:V.returns.kind}:void 0}]))};if(j.typeParams)P.typeParams=j.typeParams;let A=JSON.stringify(P,null,2);M+=`
|
|
249
|
+
${I}.__tjs = ${A};
|
|
250
|
+
`,M+=`
|
|
251
|
+
${X7(I)}
|
|
252
|
+
`}return{code:M,types:z,classes:Object.keys(J).length>0?J:void 0,warnings:Q.length>0?Q:void 0}}import{s as Q7}from"tosijs-schema";function H7(Z){if(Z===null)return"null";if(Z===void 0)return"undefined";if(Array.isArray(Z))return"array";return typeof Z}function A0(Z){return Q7.infer(Z)}function z4(Z){return A0(Z)}z4.type=H7;z4.infer=A0;var c5=new Proxy(z4,{get(Z,$){if($==="type")return H7;if($==="infer")return A0;return Q7[$]},apply(Z,$,X){return A0(X[0])}});function F0(Z,$,X,K,Q){if(!X)X=w;(function H(Y,G,W){var z=W||Y.type;if(X[z](Y,G,H),$[z])$[z](Y,G)})(Z,K,Q)}function Y7(Z,$,X,K,Q){var H=[];if(!X)X=w;(function Y(G,W,z){var J=z||G.type,U=G!==H[H.length-1];if(U)H.push(G);if(X[J](G,W,Y),$[J])$[J](G,W||H,H);if(U)H.pop()})(Z,K,Q)}function W4(Z,$,X){X(Z,$)}function A1(Z,$,X){}var w={};w.Program=w.BlockStatement=w.StaticBlock=function(Z,$,X){for(var K=0,Q=Z.body;K<Q.length;K+=1){var H=Q[K];X(H,$,"Statement")}};w.Statement=W4;w.EmptyStatement=A1;w.ExpressionStatement=w.ParenthesizedExpression=w.ChainExpression=function(Z,$,X){return X(Z.expression,$,"Expression")};w.IfStatement=function(Z,$,X){if(X(Z.test,$,"Expression"),X(Z.consequent,$,"Statement"),Z.alternate)X(Z.alternate,$,"Statement")};w.LabeledStatement=function(Z,$,X){return X(Z.body,$,"Statement")};w.BreakStatement=w.ContinueStatement=A1;w.WithStatement=function(Z,$,X){X(Z.object,$,"Expression"),X(Z.body,$,"Statement")};w.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,$)}};w.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")}};w.ReturnStatement=w.YieldExpression=w.AwaitExpression=function(Z,$,X){if(Z.argument)X(Z.argument,$,"Expression")};w.ThrowStatement=w.SpreadElement=function(Z,$,X){return X(Z.argument,$,"Expression")};w.TryStatement=function(Z,$,X){if(X(Z.block,$,"Statement"),Z.handler)X(Z.handler,$);if(Z.finalizer)X(Z.finalizer,$,"Statement")};w.CatchClause=function(Z,$,X){if(Z.param)X(Z.param,$,"Pattern");X(Z.body,$,"Statement")};w.WhileStatement=w.DoWhileStatement=function(Z,$,X){X(Z.test,$,"Expression"),X(Z.body,$,"Statement")};w.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")};w.ForInStatement=w.ForOfStatement=function(Z,$,X){X(Z.left,$,"ForInit"),X(Z.right,$,"Expression"),X(Z.body,$,"Statement")};w.ForInit=function(Z,$,X){if(Z.type==="VariableDeclaration")X(Z,$);else X(Z,$,"Expression")};w.DebuggerStatement=A1;w.FunctionDeclaration=function(Z,$,X){return X(Z,$,"Function")};w.VariableDeclaration=function(Z,$,X){for(var K=0,Q=Z.declarations;K<Q.length;K+=1){var H=Q[K];X(H,$)}};w.VariableDeclarator=function(Z,$,X){if(X(Z.id,$,"Pattern"),Z.init)X(Z.init,$,"Expression")};w.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")};w.Pattern=function(Z,$,X){if(Z.type==="Identifier")X(Z,$,"VariablePattern");else if(Z.type==="MemberExpression")X(Z,$,"MemberPattern");else X(Z,$)};w.VariablePattern=A1;w.MemberPattern=W4;w.RestElement=function(Z,$,X){return X(Z.argument,$,"Pattern")};w.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")}};w.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")}};w.Expression=W4;w.ThisExpression=w.Super=w.MetaProperty=A1;w.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")}};w.ObjectExpression=function(Z,$,X){for(var K=0,Q=Z.properties;K<Q.length;K+=1){var H=Q[K];X(H,$)}};w.FunctionExpression=w.ArrowFunctionExpression=w.FunctionDeclaration;w.SequenceExpression=function(Z,$,X){for(var K=0,Q=Z.expressions;K<Q.length;K+=1){var H=Q[K];X(H,$,"Expression")}};w.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 W=G[Y];X(W,$,"Expression")}};w.TemplateElement=A1;w.UnaryExpression=w.UpdateExpression=function(Z,$,X){X(Z.argument,$,"Expression")};w.BinaryExpression=w.LogicalExpression=function(Z,$,X){X(Z.left,$,"Expression"),X(Z.right,$,"Expression")};w.AssignmentExpression=w.AssignmentPattern=function(Z,$,X){X(Z.left,$,"Pattern"),X(Z.right,$,"Expression")};w.ConditionalExpression=function(Z,$,X){X(Z.test,$,"Expression"),X(Z.consequent,$,"Expression"),X(Z.alternate,$,"Expression")};w.NewExpression=w.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")}};w.MemberExpression=function(Z,$,X){if(X(Z.object,$,"Expression"),Z.computed)X(Z.property,$,"Expression")};w.ExportNamedDeclaration=w.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")};w.ExportAllDeclaration=function(Z,$,X){if(Z.exported)X(Z.exported,$);X(Z.source,$,"Expression")};w.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")};w.ImportExpression=function(Z,$,X){X(Z.source,$,"Expression")};w.ImportSpecifier=w.ImportDefaultSpecifier=w.ImportNamespaceSpecifier=w.Identifier=w.PrivateIdentifier=w.Literal=A1;w.TaggedTemplateExpression=function(Z,$,X){X(Z.tag,$,"Expression"),X(Z.quasi,$,"Expression")};w.ClassDeclaration=w.ClassExpression=function(Z,$,X){return X(Z,$,"Class")};w.Class=function(Z,$,X){if(Z.id)X(Z.id,$,"Pattern");if(Z.superClass)X(Z.superClass,$,"Expression");X(Z.body,$)};w.ClassBody=function(Z,$,X){for(var K=0,Q=Z.body;K<Q.length;K+=1){var H=Q[K];X(H,$)}};w.MethodDefinition=w.PropertyDefinition=w.Property=function(Z,$,X){if(Z.computed)X(Z.key,$,"Expression");if(Z.value)X(Z.value,$,"Expression")};var s5={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function a5(Z,$={}){let X={...s5,...$},K=[],Q;try{Q=q1(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=[G7()];if(Y7(Q,{FunctionDeclaration(Y,G,W){let z=G7();H.push(z);for(let J of Y.params)r5(z,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 W of Y.declarations)if(W.id.type==="Identifier")G.declarations.set(W.id.name,{node:W.id,kind:Y.kind,used:!1})}}),F0(Q,{Identifier(Y){for(let G=H.length-1;G>=0;G--){let W=H[G].declarations.get(Y.name);if(W){W.used=!0;break}}}}),X.unusedVariables)for(let Y of H)for(let[G,W]of Y.declarations){if(G.startsWith("_"))continue;if(!W.used&&W.kind!=="function")K.push({severity:"warning",message:`'${G}' is declared but never used`,line:W.node.loc?.start?.line,column:W.node.loc?.start?.column,rule:"no-unused-vars"})}if(X.unreachableCode)F0(Q,{BlockStatement(Y){let G=!1;for(let W of Y.body){if(G){K.push({severity:"warning",message:"Unreachable code after return statement",line:W.loc?.start?.line,column:W.loc?.start?.column,rule:"no-unreachable"});break}if(W.type==="ReturnStatement")G=!0}}});if(X.noExplicitNew)F0(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 G7(){return{declarations:new Map}}function r5(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})}var z7={i32:127,i64:126,f32:125,f64:124,funcref:112,externref:111},j0={custom:0,type:1,import:2,function:3,table:4,memory:5,global:6,export:7,start:8,element:9,code:10,data:11},$1={unreachable:0,nop:1,block:2,loop:3,if:4,else:5,end:11,br:12,br_if:13,return:15,call:16,local_get:32,local_set:33,local_tee:34,i32_load:40,f32_load:42,f64_load:43,i32_store:54,f32_store:56,f64_store:57,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,f64_eq:97,f64_ne:98,f64_lt:99,f64_gt:100,f64_le:101,f64_ge:102,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,f64_add:160,f64_sub:161,f64_mul:162,f64_div:163,i32_trunc_f64_s:170,f64_convert_i32_s:183};function h1(Z){let $=[];do{let X=Z&127;if(Z>>>=7,Z!==0)X|=128;$.push(X)}while(Z!==0);return $}function t5(Z){let $=new TextEncoder().encode(Z);return[...h1($.length),...$]}function w0(Z,$){return[Z,...h1($.length),...$]}function W7(Z){let $=[];try{let K=Z.body.trim().match(/return\s+(.+)/);if(!K)return{bytes:new Uint8Array,warnings:["WASM block must have a return statement (for now)"],success:!1,error:"No return statement found"};let Q=K[1].trim(),H=Z.captures.join(", "),Y=e5(H,Q,$);return{bytes:new Uint8Array(Y),warnings:$,success:!0}}catch(X){return{bytes:new Uint8Array,warnings:$,success:!1,error:X.message}}}function e5(Z,$,X){let K=Z.split(",").map((q)=>q.trim().split(":")[0].trim()).filter(Boolean),Q=K.length,H=P0($,K,X),Y=[0,97,115,109,1,0,0,0],G=Array(Q).fill(z7.f64),W=w0(j0.type,[1,96,...h1(Q),...G,1,z7.f64]),z=w0(j0.function,[1,0]),J=w0(j0.export,[1,...t5("compute"),0,0]),U=[0,...H,$1.end],_=w0(j0.code,[1,...h1(U.length),...U]);return[...Y,...W,...z,...J,..._]}function P0(Z,$,X){Z=Z.trim();let K=parseFloat(Z);if(!isNaN(K)&&/^-?\d+(\.\d+)?$/.test(Z)){let G=new ArrayBuffer(8);return new Float64Array(G)[0]=K,[$1.f64_const,...new Uint8Array(G)]}if(/^\w+$/.test(Z)){let G=$.indexOf(Z);if(G>=0)return[$1.local_get,...h1(G)];return X.push(`Unknown identifier: ${Z}`),[$1.f64_const,0,0,0,0,0,0,0,0]}let Q=0,H=-1,Y="";for(let G=Z.length-1;G>=0;G--){let W=Z[G];if(W===")")Q++;else if(W==="(")Q--;else if(Q===0&&(W==="+"||W==="-")&&G>0){let z=G-1;while(z>=0&&/\s/.test(Z[z]))z--;let J=z>=0?Z[z]:"";if(J&&/[\w)]/.test(J)){H=G,Y=W;break}}}if(H===-1){Q=0;for(let G=Z.length-1;G>=0;G--){let W=Z[G];if(W===")")Q++;else if(W==="(")Q--;else if(Q===0&&(W==="*"||W==="/")){H=G,Y=W;break}}}if(H>0){let G=Z.slice(0,H).trim(),W=Z.slice(H+1).trim(),z=P0(G,$,X),J=P0(W,$,X),U;switch(Y){case"+":U=$1.f64_add;break;case"-":U=$1.f64_sub;break;case"*":U=$1.f64_mul;break;case"/":U=$1.f64_div;break;default:U=$1.f64_add}return[...z,...J,U]}if(Z.startsWith("(")&&Z.endsWith(")"))return P0(Z.slice(1,-1),$,X);return X.push(`Could not compile expression: ${Z}`),[$1.f64_const,0,0,0,0,0,0,0,0]}async function J7(Z){let $=await WebAssembly.compile(Z);return WebAssembly.instantiate($)}async function _7(Z){let $=W7(Z);if(!$.success)return console.warn(`WASM compilation failed for ${Z.id}:`,$.error),!1;try{let K=(await J7($.bytes)).exports.compute;return globalThis[Z.id]=K,!0}catch(X){return console.warn(`WASM instantiation failed for ${Z.id}:`,X),!1}}async function Z2(Z){let $=0,X=0,K=[];for(let Q of Z)if(await _7(Q))$++;else X++,K.push(`Failed to compile ${Q.id}`);return{compiled:$,failed:X,errors:K}}async function O0(Z){let $=`${p}:${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 X2(Z){let $=`${p}:${Z}`,X=5381;for(let K=0;K<$.length;K++)X=(X<<5)+X+$.charCodeAt(K)>>>0;return X.toString(16)}var $2="tjs-metadata-cache",K2=1,u="modules";class J4{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($2,K2);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(u)){let H=Q.createObjectStore(u,{keyPath:"hash"});H.createIndex("timestamp","timestamp"),H.createIndex("version","version")}}})}async get(Z){if(!this.db){this.stats.misses++;return}let $=await O0(Z);return new Promise((X)=>{let H=this.db.transaction(u,"readonly").objectStore(u).get($);H.onerror=()=>{this.stats.misses++,X(void 0)},H.onsuccess=()=>{let Y=H.result;if(Y&&Y.version!==p){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 O0(Z);return new Promise((K,Q)=>{let Y=this.db.transaction(u,"readwrite").objectStore(u),G=Y.get(X);G.onsuccess=()=>{let W=G.result,z={hash:X,version:p,timestamp:Date.now(),transpile:$.transpile??W?.transpile,tjs:$.tjs??W?.tjs},J=Y.put(z);J.onerror=()=>Q(J.error),J.onsuccess=()=>K()},G.onerror=()=>Q(G.error)})}async delete(Z){if(!this.db)return;let $=await O0(Z);return new Promise((X,K)=>{let Y=this.db.transaction(u,"readwrite").objectStore(u).delete($);Y.onerror=()=>K(Y.error),Y.onsuccess=()=>X()})}async clear(){if(!this.db)return;return new Promise((Z,$)=>{let Q=this.db.transaction(u,"readwrite").objectStore(u).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(u,"readwrite").objectStore(u).index("timestamp"),G=IDBKeyRange.upperBound($),W=0,z=Y.openCursor(G);z.onsuccess=(J)=>{let U=J.target.result;if(U)U.delete(),W++,U.continue();else X(W)},z.onerror=()=>K(z.error)})}async pruneOldVersions(){if(!this.db)return 0;return new Promise((Z,$)=>{let K=this.db.transaction(u,"readwrite").objectStore(u),Q=0,H=K.openCursor();H.onsuccess=(Y)=>{let G=Y.target.result;if(G){if(G.value.version!==p)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(u,"readonly").objectStore(u).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(u,"readonly").objectStore(u),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 x1=null;async function Q2(){if(!x1)x1=new J4,await x1.open();return x1}function H2(Z){x1=Z}function V0(Z,$={}){let{ast:X,returnType:K,originalSource:Q,requiredParams:H}=q1(Z,{filename:$.filename,colonShorthand:!0,vmTarget:!0}),Y=f4(X,$.filename),{ast:G,signature:W,warnings:z}=p0(Y,Q,K,$,H);return{ast:G,signature:W,warnings:z}}function O9(Z,...$){if(typeof Z==="string")return V0(Z).ast;let X=Z.reduce((K,Q,H)=>K+Q+($[H]!==void 0?String($[H]):""),"");return V0(X).ast}function V9(Z,$,...X){if(typeof Z==="string")return v1(Z,$);let K=$!==void 0?[$,...X]:X,Q=Z.reduce((H,Y,G)=>H+Y+(K[G]!==void 0?String(K[G]):""),"");return v1(Q)}async function E9(Z,$={},X){let K=X??await getGlobalCache(),Q=await K.getTranspile(Z);if(Q)return{ast:Q.ast,signature:Q.signature,warnings:Q.warnings};let H=V0(Z,$);return K.setTranspile(Z,{ast:H.ast,signature:H.signature,warnings:H.warnings}),H}async function N9(Z,$={},X){let K=X??await getGlobalCache(),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=v1(Z,$);return K.setTJS(Z,{code:H.code,types:H.types,testRunner:H.testRunner,testCount:H.testCount,warnings:H.warnings}),H}function S9(Z,$,X){let{ast:K,signature:Q}=V0(Z),H=async(Y)=>{return(await $.run(K,Y,X)).result};return H.signature=Q,H.ast=K,H}function T9(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]=C0(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 C0(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?C0(Z.items):{}};case"object":if(!Z.shape)return{type:"object"};return{type:"object",properties:Object.fromEntries(Object.entries(Z.shape).map(([$,X])=>[$,C0(X)]))};case"union":if(!Z.members)return{};return{anyOf:Z.members.map(C0)};case"any":default:return{}}}import{s as L,validate as _4,filter as R7}from"tosijs-schema";class c{$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 n9(Z){return Z instanceof c||Z&&Z.$error===!0}var V1=new Map,Y2=3600000,G2=102400,L4="proc_";function U4(Z){return typeof Z==="string"&&Z.startsWith(L4)}function q4(Z){let $=V1.get(Z);if(!$)throw Error(`Procedure not found: ${Z}`);if(Date.now()>$.expiresAt)throw V1.delete(Z),Error(`Procedure expired: ${Z}`);return $.ast}function z2(){if(typeof crypto<"u"&&crypto.randomUUID)return L4+crypto.randomUUID();return L4+Math.random().toString(36).slice(2)+Date.now().toString(36)}var M7=new Set(["__proto__","constructor","prototype"]);function L7(Z){if(M7.has(Z))throw Error(`Security Error: Access to '${Z}' is forbidden`)}var W2=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function J2(Z){try{let $=new URL(Z);if($.protocol!=="http:"&&$.protocol!=="https:")return!0;let X=$.hostname.toLowerCase();if(W2.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 _2(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 _1(Z){return{...Z,state:Object.create(Z.state)}}function L2(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 F(Z,$){if(Z&&typeof Z==="object"&&Z.$kind==="arg")return $.args[Z.path];if(Z&&typeof Z==="object"&&Z.$expr)return y(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(M7.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]=F(Z[K],$);return X}if(Array.isArray(Z))return Z.map((X)=>F(X,$));return Z}function F1(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 C1(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:C1(Z[0])}}if($==="object"){let X={},K=[];for(let[Q,H]of Object.entries(Z))X[Q]=C1(H),K.push(Q);return{type:"object",properties:X,required:K}}return{}}var Y1={Math:F1("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:F1("JSON",{parse:(Z)=>JSON.parse(Z),stringify:(Z,$,X)=>JSON.stringify(Z,$,X)}),console:F1("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:F1("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:F1("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:F1("String",{fromCharCode:(...Z)=>String.fromCharCode(...Z),fromCodePoint:(...Z)=>String.fromCodePoint(...Z)}),Number:F1("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=C1($),K=R7(Z,X);if(K instanceof Error)throw K;return K},Schema:{...L,response:(Z,$)=>{let X=$?.schema!=null?$.schema:C1($);return{type:"json_schema",json_schema:{name:Z,strict:!0,schema:X}}},fromExample:(Z)=>C1(Z),isValid:(Z,$)=>{if($?.schema!=null)return _4(Z,$);return _4(Z,C1($))}},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 Y1.Set([...$,...K])},intersection(X){let K=X?.toArray?.()??X??[];return Y1.Set($.filter((Q)=>K.includes(Q)))},diff(X){let K=X?.toArray?.()??X??[];return Y1.Set($.filter((Q)=>!K.includes(Q)))},forEach(X){$.forEach(X)},map(X){return Y1.Set($.map(X))},filter(X){return Y1.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:W=0,ms:z=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(W)J.setSeconds(J.getSeconds()+W);if(z)J.setMilliseconds(J.getMilliseconds()+z);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)),$})()},E0={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."},U2=0.01,U7=0.0001,q7=0.001,q2=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 y(Z,$){if(Z===null||Z===void 0)return Z;if(typeof Z!=="object"||!("$expr"in Z))return Z;if($.fuel){if($.fuel.current-=U2,$.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 Y1)return Y1[Z.name];if(Z.name in E0)throw Error(E0[Z.name]);return}case"member":{let X=y(Z.object,$);if(Z.optional&&(X===null||X===void 0))return;let K=Z.property;return L7(K),X?.[K]}case"binary":{let X=y(Z.left,$),K=y(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 c("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 X==K;case"!=":return X!=K;case"===":return X===K;case"!==":return X!==K;default:throw Error(`Unknown binary operator: ${Z.op}`)}}case"unary":{let X=y(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=y(Z.left,$);if(Z.op==="&&")return X?y(Z.right,$):X;else if(Z.op==="??")return X??y(Z.right,$);else return X?X:y(Z.right,$)}case"conditional":return y(Z.test,$)?y(Z.consequent,$):y(Z.alternate,$);case"array":return Z.elements.map((X)=>y(X,$));case"object":{let X={};for(let K of Z.properties)X[K.key]=y(K.value,$);return X}case"call":{if(Z.callee==="Error"){let K=Z.arguments.map((H)=>y(H,$)),Q=typeof K[0]==="string"?K[0]:"Error";$.error=new c(Q,"Error");return}if(Z.callee in Y1){let K=Y1[Z.callee];if(typeof K==="function"){let Q=Z.arguments.map((H)=>y(H,$));return K(...Q)}}if(!$.resolver(Z.callee)){if(Z.callee in E0)throw Error(E0[Z.callee]);throw Error(`Unknown function: ${Z.callee}`)}throw Error(`Atom calls in expressions not yet supported: ${Z.callee}`)}case"methodCall":{let X=y(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)=>y(G,$)),Y=Q.apply(X,H);if($.fuel&&q2.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 c("Out of Fuel",`expr.${K}`);return}}return Y}default:throw Error(`Unknown expression type: ${Z.$expr}`)}}function C(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(z,J)=>{let{op:U,result:_,...q}=z;if(J.error)return;let D=J.trace?{...J.state}:null,R=J.fuel.current,M,I;try{let j=J.costOverrides?.[Z],P=j!==void 0?j:G,A=typeof P==="function"?P(q,J):P;if((J.fuel.current-=A)<=0){J.error=new c("Out of Fuel",Z);return}let O,V=async()=>K(z,J);if(M=Y>0?await Promise.race([V(),new Promise((T,S)=>{O=setTimeout(()=>S(Error(`Atom '${Z}' timed out`)),Y)})]).finally(()=>clearTimeout(O)):await V(),z.result){if(J.consts.has(z.result))throw Error(`Cannot reassign const variable '${z.result}'`);if(M!==void 0&&X&&!_4(M,X)){J.error=new c(`Output validation failed for '${Z}'`,Z);return}if(J.state[z.result]=M,z.resultConst)J.consts.add(z.result)}}catch(j){I=j.message||String(j),J.error=new c(I,Z,j)}finally{if(J.trace&&D){let j=L2(D,J.state);J.trace.push({op:Z,input:q,stateDiff:j,result:M,error:I,fuelBefore:R,fuelAfter:J.fuel.current,timestamp:new Date().toISOString()})}}},docs:H,timeoutMs:Y,cost:G,create:(z)=>({op:Z,...z})}}var a=C("seq",L.object({steps:L.array(L.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}),D2=C("if",L.object({condition:L.any,then:L.array(L.any),else:L.array(L.any).optional}),void 0,async(Z,$)=>{if(y(Z.condition,$))await a.exec({op:"seq",steps:Z.then},$);else if(Z.else)await a.exec({op:"seq",steps:Z.else},$)},{docs:"If/Else",timeoutMs:0,cost:0.1}),B2=C("while",L.object({condition:L.any,body:L.array(L.any)}),void 0,async(Z,$)=>{while(y(Z.condition,$)){if($.signal?.aborted)throw Error("Execution aborted");if(($.fuel.current-=0.1)<=0)throw Error("Out of Fuel");if(await a.exec({op:"seq",steps:Z.body},$),$.output!==void 0)return}},{docs:"While Loop",timeoutMs:0,cost:0.1}),I2=C("return",void 0,L.any,async(Z,$)=>{if($.error)return $.output=$.error,$.error;if("value"in Z){let K=F(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=R7(X,Z.schema);if(!(K instanceof Error))X=K}}return $.output=X,X},{docs:"Return",cost:0.1}),R2=C("try",L.object({try:L.array(L.any),catch:L.array(L.any).optional,catchParam:L.string.optional}),void 0,async(Z,$)=>{if(await a.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 a.exec({op:"seq",steps:Z.catch},$)}},{docs:"Try/Catch",timeoutMs:0,cost:0.1}),M2=C("Error",L.object({args:L.array(L.any).optional}),void 0,async(Z,$)=>{let X=Z.args?.[0]??"Error";$.error=new c(String(X),"Error")},{docs:"Trigger error flow",cost:0.1}),A2=C("varSet",L.object({key:L.string,value:L.any}),void 0,async({key:Z,value:$},X)=>{if(X.consts.has(Z))throw Error(`Cannot reassign const variable '${Z}'`);X.state[Z]=F($,X)},{docs:"Set Variable",cost:0.1}),F2=C("constSet",L.object({key:L.string,value:L.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]=F($,X),X.consts.add(Z)},{docs:"Set Const Variable (immutable)",cost:0.1}),j2=C("varGet",L.object({key:L.string}),L.any,async({key:Z},$)=>{return F(Z,$)},{docs:"Get Variable",cost:0.1}),w2=C("varsImport",L.object({keys:L.union([L.array(L.string),L.record(L.string)])}),void 0,async({keys:Z},$)=>{if(Array.isArray(Z))for(let X of Z)$.state[X]=F({$kind:"arg",path:X},$);else for(let[X,K]of Object.entries(Z))$.state[X]=F({$kind:"arg",path:K},$)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:0.2}),P2=C("varsLet",L.record(L.any),void 0,async(Z,$)=>{for(let X of Object.keys(Z)){if(X==="op"||X==="result")continue;$.state[X]=F(Z[X],$)}},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:0.1}),O2=C("varsExport",L.object({keys:L.union([L.array(L.string),L.record(L.string)])}),L.record(L.any),async({keys:Z},$)=>{let X={};if(Array.isArray(Z))for(let K of Z)X[K]=F(K,$);else for(let[K,Q]of Object.entries(Z))X[K]=F(Q,$);return X},{docs:"Export variables from the current scope, with optional renaming.",cost:0.2}),C2=C("scope",L.object({steps:L.array(L.any)}),void 0,async({steps:Z},$)=>{let X=_1($);if(await a.exec({op:"seq",steps:Z},X),X.output!==void 0)$.output=X.output},{docs:"Create new scope",timeoutMs:0,cost:0.1}),V2=C("map",L.object({items:L.array(L.any),as:L.string,steps:L.array(L.any)}),L.array(L.any),async({items:Z,as:$,steps:X},K)=>{let Q=[],H=F(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=_1(K);G.state[$]=Y,await a.exec({op:"seq",steps:X},G),Q.push(G.state.result??null)}return Q},{docs:"Map Array",timeoutMs:0,cost:1}),E2=C("filter",L.object({items:L.array(L.any),as:L.string,condition:L.any}),L.array(L.any),async({items:Z,as:$,condition:X},K)=>{let Q=[],H=F(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=_1(K);if(G.state[$]=Y,y(X,G))Q.push(Y)}return Q},{docs:"Filter Array",timeoutMs:0,cost:1}),N2=C("reduce",L.object({items:L.array(L.any),as:L.string,accumulator:L.string,initial:L.any,steps:L.array(L.any)}),L.any,async({items:Z,as:$,accumulator:X,initial:K,steps:Q},H)=>{let Y=F(Z,H),G=F(K,H);if(!Array.isArray(Y))throw Error("reduce: items is not an array");let W=G;for(let z of Y){if(H.signal?.aborted)throw Error("Execution aborted");let J=_1(H);J.state[$]=z,J.state[X]=W,await a.exec({op:"seq",steps:Q},J),W=J.state.result??W}return W},{docs:"Reduce Array",timeoutMs:0,cost:1}),S2=C("find",L.object({items:L.array(L.any),as:L.string,condition:L.any}),L.any,async({items:Z,as:$,condition:X},K)=>{let Q=F(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=_1(K);if(Y.state[$]=H,y(X,Y))return H}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),T2=C("push",L.object({list:L.array(L.any),item:L.any}),L.array(L.any),async({list:Z,item:$},X)=>{let K=F(Z,X),Q=F($,X);if(Array.isArray(K))K.push(Q);return K},{docs:"Push to Array",cost:1}),k2=C("len",L.object({list:L.any}),L.number,async({list:Z},$)=>{let X=F(Z,$);return Array.isArray(X)||typeof X==="string"?X.length:0},{docs:"Length",cost:1}),g2=C("split",L.object({str:L.string,sep:L.string}),L.array(L.string),async({str:Z,sep:$},X)=>F(Z,X).split(F($,X)),{docs:"Split String",cost:1}),b2=C("join",L.object({list:L.array(L.string),sep:L.string}),L.string,async({list:Z,sep:$},X)=>F(Z,X).join(F($,X)),{docs:"Join String",cost:1}),f2=C("template",L.object({tmpl:L.string,vars:L.record(L.any)}),L.string,async({tmpl:Z,vars:$},X)=>{return F(Z,X).replace(/\{\{(\w+)\}\}/g,(Q,H)=>String(F($[H],X)??""))},{docs:"String Template",cost:1}),v2=C("regexMatch",L.object({pattern:L.string,value:L.any}),L.boolean,async({pattern:Z,value:$},X)=>{if(_2(Z))throw Error(`Suspicious regex pattern rejected (potential ReDoS): ${Z}`);let K=F($,X);return new RegExp(Z).test(K)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),y2=C("pick",L.object({obj:L.record(L.any),keys:L.array(L.string)}),L.record(L.any),async({obj:Z,keys:$},X)=>{let K=F(Z,X),Q=F($,X),H={};if(K&&Array.isArray(Q))Q.forEach((Y)=>H[Y]=K[Y]);return H},{docs:"Pick Keys",cost:1}),h2=C("merge",L.object({a:L.record(L.any),b:L.record(L.any)}),L.record(L.any),async({a:Z,b:$},X)=>({...F(Z,X),...F($,X)}),{docs:"Merge Objects",cost:1}),x2=C("keys",L.object({obj:L.record(L.any)}),L.array(L.string),async({obj:Z},$)=>Object.keys(F(Z,$)??{}),{docs:"Object Keys",cost:1}),D7=10,B7="X-Agent-Depth";function d2(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 u2=C("httpFetch",L.object({url:L.string,method:L.string.optional,headers:L.record(L.string).optional,body:L.any.optional,responseType:L.string.optional}),L.any,async(Z,$)=>{let X=F(Z.url,$),K=F(Z.method,$),Q=F(Z.headers,$)||{},H=F(Z.body,$),Y=F(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,[B7]:String(G+1)},body:H,signal:$.signal,responseType:Y});let W=$.context?.allowedFetchDomains;if(W){if(!d2(X,W))throw Error(`Fetch blocked: domain not in allowlist. Allowed: ${W.join(", ")}`)}else{if(J2(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(z){if(z.message.includes("allowedFetchDomains"))throw z;throw Error(`Invalid URL: ${X}`)}}if(typeof globalThis.fetch==="function"){let z=await globalThis.fetch(X,{method:K,headers:{...Q,[B7]:String(G+1)},body:H?JSON.stringify(H):void 0,signal:$.signal});if(Y==="dataUrl"){let U=await z.arrayBuffer(),_=new Uint8Array(U),q="";for(let M=0;M<_.length;M++)q+=String.fromCharCode(_[M]);let D=btoa(q);return`data:${z.headers.get("content-type")||"application/octet-stream"};base64,${D}`}let J=z.headers.get("content-type");if(Y==="json"||J&&J.includes("application/json"))return z.json();return z.text()}throw Error("Capability 'fetch' missing and no global fetch available")},{docs:"HTTP Fetch",timeoutMs:30000,cost:5}),m2=C("storeGet",L.object({key:L.string}),L.any,async({key:Z},$)=>{let X=F(Z,$);return $.capabilities.store?.get(X)},{docs:"Store Get",cost:5}),l2=C("storeSet",L.object({key:L.string,value:L.any}),void 0,async({key:Z,value:$},X)=>{let K=F(Z,X),Q=F($,X);return X.capabilities.store?.set(K,Q)},{docs:"Store Set",cost:5}),p2=C("storeQuery",L.object({query:L.any}),L.array(L.any),async({query:Z},$)=>$.capabilities.store?.query?.(F(Z,$))??[],{docs:"Store Query",cost:5}),i2=C("storeVectorSearch",L.object({collection:L.string.optional,vector:L.array(L.number),k:L.number.optional}),L.array(L.any),async({collection:Z,vector:$,k:X},K)=>K.capabilities.store?.vectorSearch?.(F(Z,K),F($,K),F(X,K))??[],{docs:"Vector Search",cost:(Z,$)=>5+(F(Z.k,$)??5)}),n2=C("llmPredict",L.object({prompt:L.string,options:L.any.optional}),L.string,async({prompt:Z,options:$},X)=>{if(!X.capabilities.llm?.predict)throw Error("Capability 'llm.predict' missing");return X.capabilities.llm.predict(F(Z,X),F($,X))},{docs:"LLM Predict",timeoutMs:120000,cost:1}),c2=C("agentRun",L.object({agentId:L.any,input:L.any}),L.any,async({agentId:Z,input:$},X)=>{let K=F(Z,X),Q=F($,X),H=Q;if(Q&&typeof Q==="object"&&!Array.isArray(Q)){H={};for(let G in Q)H[G]=F(Q[G],X)}if(U4(K)){let G=q4(K),W={...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(G,W),W.error)throw Error(W.error.message||"Sub-agent failed");return W.output}if(K&&typeof K==="object"&&"op"in K){let G={...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(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}),o2=C("transpileCode",L.object({code:L.string}),L.any,async({code:Z},$)=>{if(!$.capabilities.code?.transpile)throw Error("Capability 'code.transpile' missing. Enable code transpilation by providing the code capability.");let X=F(Z,$);try{return $.capabilities.code.transpile(X)}catch(K){throw Error(`Code transpilation failed: ${K.message}`)}},{docs:"Transpile AsyncJS code to AST",cost:1}),I7=10,s2=C("runCode",L.object({code:L.string,args:L.record(L.any).optional}),L.any,async({code:Z,args:$},X)=>{let K=X.runCodeDepth??0;if(K>=I7)throw Error(`runCode recursion limit exceeded (max ${I7}). 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=F(Z,X),H=$?F($,X):{},Y;try{Y=X.capabilities.code.transpile(Q)}catch(W){throw Error(`Code transpilation failed: ${W.message}`)}if(Y.op!=="seq")throw Error("Transpiled code must be a seq node");let G=_1(X);if(G.args=H,G.output=void 0,G.runCodeDepth=K+1,await a.exec(Y,G),G.error){X.error=G.error;return}return G.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),a2=C("jsonParse",L.object({str:L.string}),L.any,async({str:Z},$)=>JSON.parse(F(Z,$)),{docs:"Parse JSON",cost:1}),r2=C("jsonStringify",L.object({value:L.any}),L.string,async({value:Z},$)=>JSON.stringify(F(Z,$)),{docs:"Stringify JSON",cost:1}),t2=C("xmlParse",L.object({str:L.string}),L.any,async({str:Z},$)=>{if(!$.capabilities.xml?.parse)throw Error("Capability 'xml.parse' missing");return $.capabilities.xml.parse(F(Z,$))},{docs:"Parse XML",cost:1}),e2=C("memoize",L.object({key:L.string.optional,steps:L.array(L.any)}),L.any,async({key:Z,steps:$},X)=>{if(!X.memo)X.memo=new Map;let K=F(Z,X)??await D4.exec({value:$,algorithm:"SHA-256"},X);if(X.memo.has(K))return X.memo.get(K);let Q=_1(X);await a.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}),Z8=C("cache",L.object({key:L.string.optional,steps:L.array(L.any),ttlMs:L.number.optional}),L.any,async({key:Z,steps:$,ttlMs:X},K)=>{if(!K.capabilities.store)throw Error("Capability 'store' missing for caching");let H=`cache:${F(Z,K)??await D4.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=_1(K);await a.exec({op:"seq",steps:$},G);let W=G.output??G.state.result,z=Date.now()+(X??86400000);if((K.fuel.current-=5)<=0)throw Error("Out of Fuel");return await K.capabilities.store.set(H,{val:W,_exp:z}),W},{docs:"Cache steps result in store with TTL",cost:5}),X8=C("random",L.object({min:L.number.optional,max:L.number.optional,format:L.string.optional,length:L.number.optional}),L.any,async({min:Z,max:$,format:X,length:K},Q)=>{let H=F(X,Q)??"float",Y=F(K,Q)??10,G=F(Z,Q)??0,W=F($,Q)??1;if(H==="base36"){let q="";if(typeof crypto<"u"&&crypto.getRandomValues){let D=new Uint8Array(Y);crypto.getRandomValues(D);for(let R=0;R<Y;R++)q+="0123456789abcdefghijklmnopqrstuvwxyz"[D[R]%36]}else for(let D=0;D<Y;D++)q+="0123456789abcdefghijklmnopqrstuvwxyz".charAt(Math.floor(Math.random()*36));return q}let z;if(typeof crypto<"u"&&crypto.getRandomValues){let _=new Uint32Array(1);crypto.getRandomValues(_),z=_[0]/4294967296}else z=Math.random();let J=W-G,U=z*J+G;if(H==="integer")return Math.floor(U);return U},{docs:"Generate Random",cost:1}),$8=C("uuid",void 0,L.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}),D4=C("hash",L.object({value:L.any,algorithm:L.string.optional}),L.string,async({value:Z,algorithm:$},X)=>{let K=typeof Z==="string"?Z:JSON.stringify(F(Z,X)),Q=F($,X)||"SHA-256";if(typeof crypto<"u"&&crypto.subtle){let G=new TextEncoder().encode(K),W=await crypto.subtle.digest(Q,G);return Array.from(new Uint8Array(W)).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}),K8=C("consoleLog",L.object({message:L.any}),void 0,async({message:Z},$)=>{let X=F(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}),Q8=C("consoleWarn",L.object({message:L.any}),void 0,async({message:Z},$)=>{let X=F(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}),H8=C("consoleError",L.object({message:L.any}),void 0,async({message:Z},$)=>{let X=F(Z,$),K=typeof X==="string"?X:JSON.stringify(X);$.error=new c(K,"console.error")},{docs:"Emit error and stop",cost:0.1}),Y8=C("storeProcedure",L.object({ast:L.any,ttl:L.number.optional,maxSize:L.number.optional}),L.string,async({ast:Z,ttl:$,maxSize:X},K)=>{let Q=F(Z,K),H=$?F($,K):Y2,Y=X?F(X,K):G2;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 W=z2(),z=Date.now();return V1.set(W,{ast:Q,createdAt:z,expiresAt:z+H}),W},{docs:"Store an AST and return a token for later execution",cost:1}),G8=C("releaseProcedure",L.object({token:L.string}),L.boolean,async({token:Z},$)=>{let X=F(Z,$);return V1.delete(X)},{docs:"Release a stored procedure by token",cost:0.1}),z8=C("clearExpiredProcedures",void 0,L.number,async()=>{let Z=Date.now(),$=0;for(let[X,K]of V1)if(Z>K.expiresAt)V1.delete(X),$++;return $},{docs:"Clear all expired procedures and return count",cost:0.5}),N0={seq:a,if:D2,while:B2,return:I2,try:R2,Error:M2,varSet:A2,constSet:F2,varGet:j2,varsImport:w2,varsLet:P2,varsExport:O2,scope:C2,map:V2,filter:E2,reduce:N2,find:S2,push:T2,len:k2,split:g2,join:b2,template:f2,regexMatch:v2,pick:y2,merge:h2,keys:x2,httpFetch:u2,storeGet:m2,storeSet:l2,storeQuery:p2,storeVectorSearch:i2,llmPredict:n2,agentRun:c2,transpileCode:o2,runCode:s2,jsonParse:a2,jsonStringify:r2,xmlParse:t2,memoize:e2,cache:Z8,random:X8,uuid:$8,hash:D4,consoleLog:K8,consoleWarn:Q8,consoleError:H8,storeProcedure:Y8,releaseProcedure:G8,clearExpiredProcedures:z8};var W8=new Set(["true","false","null","undefined","and","or","not"]);function J8(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((W)=>!W8.has(W)&&!(W in $)&&!new RegExp(`\\b${W}\\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 S0(Z,$){J8(Z,$);let X=_8(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}
|
|
253
|
+
Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return K.node}function _8(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 L8(Z,$,X)}function L8(Z,$,X){let{node:K,pos:Q}=A7(Z,$,X);while(Z[Q]==="||"){Q++;let{node:H,pos:Y}=A7(Z,Q,X);K={$expr:"logical",op:"||",left:K,right:H},Q=Y}return{node:K,pos:Q}}function A7(Z,$,X){let{node:K,pos:Q}=F7(Z,$,X);while(Z[Q]==="&&"){Q++;let{node:H,pos:Y}=F7(Z,Q,X);K={$expr:"logical",op:"&&",left:K,right:H},Q=Y}return{node:K,pos:Q}}function F7(Z,$,X){let{node:K,pos:Q}=j7(Z,$,X),H=["==","!=",">","<",">=","<="];while(H.includes(Z[Q])){let Y=Z[Q++],{node:G,pos:W}=j7(Z,Q,X);K={$expr:"binary",op:Y,left:K,right:G},Q=W}return{node:K,pos:Q}}function j7(Z,$,X){let{node:K,pos:Q}=w7(Z,$,X);while(Z[Q]==="+"||Z[Q]==="-"){let H=Z[Q++],{node:Y,pos:G}=w7(Z,Q,X);K={$expr:"binary",op:H,left:K,right:Y},Q=G}return{node:K,pos:Q}}function w7(Z,$,X){let{node:K,pos:Q}=B4(Z,$,X);while(Z[Q]==="*"||Z[Q]==="/"||Z[Q]==="%"){let H=Z[Q++],{node:Y,pos:G}=B4(Z,Q,X);K={$expr:"binary",op:H,left:K,right:Y},Q=G}return{node:K,pos:Q}}function B4(Z,$,X){if(Z[$]==="!"||Z[$]==="-"){let K=Z[$++],{node:Q,pos:H}=B4(Z,$,X);return{node:{$expr:"unary",op:K,argument:Q},pos:H}}return U8(Z,$,X)}function U8(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 l{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 l(this.atoms);X(Q);let H;if(K){let W=new l(this.atoms);K(W),H=W.steps}let Y=S0(Z,$),G=this.atoms.if;return this.add(G.create({condition:Y,then:Q.steps,else:H}))}while(Z,$,X){let K=new l(this.atoms);X(K);let Q=S0(Z,$),H=this.atoms.while;return this.add(H.create({condition:Q,body:K.steps}))}scope(Z){let $=new l(this.atoms);Z($);let X=this.atoms.scope;return this.add(X.create({steps:$.steps}))}map(Z,$,X){let K=new l(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=S0(X,K),H=this.atoms.filter;return this.add(H.create({items:Z,as:$,condition:Q}))}find(Z,$,X,K={}){let Q=S0(X,K),H=this.atoms.find;return this.add(H.create({items:Z,as:$,condition:Q}))}reduce(Z,$,X,K,Q){let H=new l(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 l(this.atoms);Z(X);let K=this.atoms.memoize;return this.add(K.create({key:$,steps:X.steps}))}cache(Z,$,X){let K=new l(this.atoms);Z(K);let Q=this.atoms.cache;return this.add(Q.create({key:$,steps:K.steps,ttlMs:X}))}try(Z){let $=new l(this.atoms);Z.try($);let X;if(Z.catch){let Q=new l(this.atoms);Z.catch(Q),X=Q.steps}let K=this.atoms.try;return this.add(K.create({try:$.steps,catch:X}))}}var q8={take(Z){return new l(N0)},custom(Z){return new l(Z)},args(Z){return{$kind:"arg",path:Z}},val(Z){return Z}},s9=q8;import{validate as D8}from"tosijs-schema";var B8=10;class I8{atoms;constructor(Z={}){this.atoms={...N0,...Z}}get builder(){return new l(this.atoms)}get Agent(){return new l(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(U4(Z))K=q4(Z);else throw Error(`Invalid argument: expected AST or procedure token (starting with 'proc_'), got string: ${Z}`);else K=Z;let Q=X.fuel??1000,H=X.timeoutMs??Q*B8,Y=X.capabilities??{},G=[];if(!Y.store){let q=new Map,D=!1;Y.store={get:async(R)=>{if(!D)D=!0,G.push("Using default in-memory store (not suitable for production)");return q.get(R)},set:async(R,M)=>{if(!D)D=!0,G.push("Using default in-memory store (not suitable for production)");q.set(R,M)}}}let W=new AbortController,z=setTimeout(()=>W.abort(),H);if(X.signal)X.signal.addEventListener("abort",()=>W.abort());let J={fuel:{current:Q},args:$,state:{},consts:new Set,capabilities:Y,resolver:(q)=>this.resolve(q),output:void 0,signal:W.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 U=K.inputSchema;if(U&&!D8($,U)){let q=new c("Input validation failed: args do not match expected schema","vm.run");return{result:q,error:q,fuelUsed:0,trace:J.trace,warnings:G.length>0?G:void 0}}try{await Promise.race([this.resolve("seq")?.exec(K,J),new Promise((q,D)=>{if(W.signal.addEventListener("abort",()=>{D(Error(`Execution timeout after ${H}ms (fuel: ${Q}). Consider increasing fuel or optimizing your agent.`))}),W.signal.aborted)D(Error(`Execution timeout after ${H}ms (fuel: ${Q}). Consider increasing fuel or optimizing your agent.`))})])}catch(q){if(q.message?.includes("timeout")||q.message?.includes("aborted")||W.signal.aborted)J.error=new c(`Execution timeout after ${H}ms (fuel: ${Q}). Consider increasing fuel or optimizing your agent.`,"vm.run");else throw q}finally{clearTimeout(z)}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}}}import{s as E}from"tosijs-schema";var O7=C("storeVectorize",E.object({text:E.string,model:E.string.optional}),E.array(E.number),async({text:Z},$)=>{let X=$.capabilities.vector;if(!X)throw Error("Capability 'vector' missing. Ensure vector battery is loaded.");let K=F(Z,$);return X.embed(K)},{docs:"Generate embeddings using vector battery",cost:20}),C7=C("storeCreateCollection",E.object({collection:E.string,dimension:E.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=F(Z,X),H=F($,X);return K.createCollection(Q,void 0,H)},{docs:"Create a vector store collection",cost:5}),V7=C("storeVectorAdd",E.object({collection:E.string,doc:E.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=F(Z,X),H=F($,X);return K.vectorAdd(Q,H)},{docs:"Add a document to a vector store collection",cost:5}),E7=C("storeSearch",E.object({collection:E.string,queryVector:E.array(E.number),k:E.number.optional,filter:E.record(E.any).optional}),E.array(E.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=F(Z,Q),G=F($,Q),W=F(X,Q)??5,z=F(K,Q);return H.vectorSearch(Y,G,W,z)},{docs:"Search vector store",cost:(Z,$)=>5+(F(Z.k,$)??5)}),N7=C("llmPredictBattery",E.object({system:E.string.optional,user:E.string,tools:E.array(E.any).optional,responseFormat:E.any.optional}),E.object({content:E.string.optional,tool_calls:E.array(E.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=F(Z,Q)??"You are a helpful agent.",G=F($,Q),W=F(X,Q),z=F(K,Q);return H.predict(Y,G,W,z)},{docs:"Generate completion using LLM battery",cost:100}),S7=C("llmVision",E.object({system:E.string.optional,prompt:E.string,images:E.array(E.string),responseFormat:E.any.optional}),E.object({content:E.string.optional,tool_calls:E.array(E.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=F(Z,Q)??"You analyze images accurately and concisely.",G=F($,Q),W=F(X,Q)??[],z=F(K,Q);return H.predict(Y,{text:G,images:W},void 0,z)},{docs:"Analyze images using a vision model",timeoutMs:120000,cost:150});var H3={storeCreateCollection:C7,storeSearch:E7,storeVectorAdd:V7,storeVectorize:O7,llmPredictBattery:N7,llmVision:S7};var T7=new Map,T0=new Map;function R8(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 I4(){return{async get(Z){return T7.get(Z)},async set(Z,$){T7.set(Z,$)},async createCollection(Z,$,X){if(T0.has(Z))console.warn(`Collection '${Z}' already exists. Overwriting.`);T0.set(Z,[])},async vectorAdd(Z,$){let X=T0.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=T0.get(Z);if(!K)throw Error(`Collection '${Z}' not found. Create it first.`);let Q=K.map((H)=>({doc:H,score:R8($,H.embedding)}));return Q.sort((H,Y)=>Y.score-H.score),Q.slice(0,X).map((H)=>H.doc)}}}function M8(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 A8="http://localhost:1234/v1";function k7(Z,$=A8){return{async predict(X,K,Q,H){try{let Y=H?Z.getStructuredLLM():Z.getLLM(),G=[{role:"system",content:X},M8(K)],W=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(!W.ok)throw Error(`LLM Error: ${W.status} ${W.statusText}`);return(await W.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 d1=typeof window<"u"&&typeof window.localStorage<"u";async function w8(Z){try{if(d1){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(() => (A4(),M4))).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 P8(Z,$){let X={timestamp:Date.now(),baseUrl:Z,models:$};try{if(d1)window.localStorage.setItem(".models.cache.json",JSON.stringify(X));else{let K=await import("node:fs/promises"),H=(await Promise.resolve().then(() => (A4(),M4))).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 u1=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 O8(Z,$){try{let X={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},K=await u1(`${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 C8(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 C8(Z,$){try{if((await u1(`${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 V8(Z,$){try{return(await u1(`${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 E8(Z,$){try{let X=await u1(`${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 N8="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";async function S8(Z,$){try{return(await u1(`${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:N8}}]}],max_tokens:10})})).ok}catch{return!1}}async function n7(Z){let $=await w8(Z),X=[];try{let Y=await fetch(`${Z}/models`);if(!Y.ok)throw Error("Could not connect");X=(await Y.json()).data.map((W)=>W.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(!d1)H=await import("node:readline");for(let Y of Q){if(!d1&&H)H.cursorTo(process.stdout,0),process.stdout.write(`\uD83D\uDC49 Testing: ${Y.id}...`),H.clearLine(process.stdout,1);let G="Unknown",W=!1,z=!1,J="",U=void 0,_=await V8(Z,Y.id),q=await E8(Z,Y.id);if(q)U=q;if(_){G="LLM";let D=await O8(Z,Y.id);if(W=D.ok,z=await S8(Z,Y.id),J=W?D.msg:`Fail: ${D.msg}`,z)J+=" +Vision"}else if(q)G="Embedding",J=`OK (Dim: ${q})`;else J="LLM Fail";K.push({id:Y.id,type:G,structuredOutput:W,vision:z,dimension:U,status:J})}if(!d1&&H)H.cursorTo(process.stdout,0),H.clearLine(process.stdout,0);return console.log(`
|
|
254
|
+
`),console.table(K),await P8(Z,K),console.log("\uD83D\uDCDD Audit results saved to cache."),K}var T8="http://localhost:1234/v1";class F4{baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;constructor(Z=T8){this.baseUrl=Z}async audit(){this.models=await n7(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 k8=typeof window<"u",g8=k8&&window.location.protocol==="https:",m1=null,j4=null,c7=!1;async function b8(){if(c7)return{localModels:m1,llm:j4};if(c7=!0,g8)return console.log("\uD83D\uDCE1 HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{m1=new F4,await m1.audit(),j4=k7(m1)}catch(Z){console.warn("⚠️ Could not connect to local LLM:",Z)}return{localModels:m1,llm:j4}}async function f8(){let{localModels:Z,llm:$}=await b8();return{vector:$?{embed:$.embed}:void 0,store:I4(),llmBattery:$,models:Z}}async function D3(){return f8()}var B3={store:I4(),llmBattery:null,vector:void 0,models:null};function v8(Z){if(typeof Z!=="string")return!1;let $=new Date(Z);return!isNaN($.getTime())&&Z.includes("T")}function y8(){return new Date().toISOString()}function E1(Z,$,X,K=0,Q=0,H=0,Y=0){return new Date(Date.UTC(Z,$-1,X,K,Q,H,Y)).toISOString()}function o7(Z){let $=new Date(Z);if(isNaN($.getTime()))throw Error(`Invalid date string: ${Z}`);return $.toISOString()}function h8(Z){try{return o7(Z)}catch{return null}}function l1(Z,$){let X=new Date(Z);return X.setTime(X.getTime()+$),X.toISOString()}function x8(Z,$){return l1(Z,$*1000)}function d8(Z,$){return l1(Z,$*60*1000)}function u8(Z,$){return l1(Z,$*60*60*1000)}function s7(Z,$){return l1(Z,$*24*60*60*1000)}function m8(Z,$){return s7(Z,$*7)}function l8(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 p8(Z,$){let X=new Date(Z),K=X.getUTCDate();if(X.setUTCFullYear(X.getUTCFullYear()+$),X.getUTCDate()!==K)X.setUTCDate(0);return X.toISOString()}function L1(Z,$){return new Date(Z).getTime()-new Date($).getTime()}function i8(Z,$){return Math.floor(L1(Z,$)/1000)}function n8(Z,$){return Math.floor(L1(Z,$)/60000)}function c8(Z,$){return Math.floor(L1(Z,$)/3600000)}function o8(Z,$){return Math.floor(L1(Z,$)/86400000)}function N1(Z){return new Date(Z).getUTCFullYear()}function g0(Z){return new Date(Z).getUTCMonth()+1}function w4(Z){return new Date(Z).getUTCDate()}function s8(Z){return new Date(Z).getUTCHours()}function a8(Z){return new Date(Z).getUTCMinutes()}function r8(Z){return new Date(Z).getUTCSeconds()}function t8(Z){return new Date(Z).getUTCMilliseconds()}function e8(Z){let $=new Date(Z).getUTCDay();return $===0?7:$}function b0(Z,$,X){let K=new Date(Z),Q={timeZone:$,...X};return new Intl.DateTimeFormat(void 0,Q).format(K)}function ZZ(Z,$){return b0(Z,$,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function XZ(Z,$){return b0(Z,$,{year:"numeric",month:"short",day:"numeric"})}function $Z(Z,$){return b0(Z,$,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function KZ(Z){return Z.slice(0,10)}function a7(Z,$){return L1(Z,$)<0}function r7(Z,$){return L1(Z,$)>0}function QZ(Z,$){return L1(Z,$)===0}function HZ(Z,$){return a7(Z,$)?Z:$}function YZ(Z,$){return r7(Z,$)?Z:$}function GZ(Z){return E1(N1(Z),g0(Z),w4(Z))}function zZ(Z){return E1(N1(Z),g0(Z),w4(Z),23,59,59,999)}function WZ(Z){return E1(N1(Z),g0(Z),1)}function JZ(Z){let $=new Date(Z);return $.setUTCMonth($.getUTCMonth()+1,0),$.setUTCHours(23,59,59,999),$.toISOString()}function _Z(Z){return E1(N1(Z),1,1)}function LZ(Z){return E1(N1(Z),12,31,23,59,59,999)}var S1={isValid:v8,now:y8,from:E1,parse:o7,tryParse:h8,addMilliseconds:l1,addSeconds:x8,addMinutes:d8,addHours:u8,addDays:s7,addWeeks:m8,addMonths:l8,addYears:p8,diff:L1,diffSeconds:i8,diffMinutes:n8,diffHours:c8,diffDays:o8,year:N1,month:g0,day:w4,hour:s8,minute:a8,second:r8,millisecond:t8,dayOfWeek:e8,toLocal:b0,format:ZZ,formatDate:XZ,formatTime:$Z,toDate:KZ,isBefore:a7,isAfter:r7,isEqual:QZ,min:HZ,max:YZ,startOfDay:GZ,endOfDay:zZ,startOfMonth:WZ,endOfMonth:JZ,startOfYear:_Z,endOfYear:LZ};function P4(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 UZ(){return S1.toDate(S1.now())}function qZ(Z){let $=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:Z,year:"numeric",month:"2-digit",day:"2-digit"}).format($)}function r(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(!P4(Y))throw Error(`Invalid date: ${Z}-${$}-${X}`);return Y}function t7(Z){if(/^\d{4}-\d{2}-\d{2}$/.test(Z)){if(!P4(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 r(X,K,Q)}function DZ(Z){try{return t7(Z)}catch{return null}}function f0(Z,$){let X=Z6(Z);return S1.toDate(S1.addDays(X,$))}function BZ(Z,$){return f0(Z,$*7)}function IZ(Z,$){let X=i(Z),K=U1(Z),Q=O4(Z),H=X*12+(K-1)+$,Y=Math.floor(H/12),G=H%12+1,W=p1(Y,G),z=Math.min(Q,W);return r(Y,G,z)}function RZ(Z,$){let X=i(Z),K=U1(Z),Q=O4(Z),H=X+$,Y=p1(H,K),G=Math.min(Q,Y);return r(H,K,G)}function e7(Z,$){let K=new Date(Z+"T00:00:00Z").getTime(),Q=new Date($+"T00:00:00Z").getTime();return Math.round((K-Q)/86400000)}function MZ(Z,$){let X=i(Z),K=U1(Z),Q=i($),H=U1($);return(X-Q)*12+(K-H)}function AZ(Z,$){return i(Z)-i($)}function i(Z){return parseInt(Z.slice(0,4),10)}function U1(Z){return parseInt(Z.slice(5,7),10)}function O4(Z){return parseInt(Z.slice(8,10),10)}function C4(Z){let $=new Date(Z+"T00:00:00Z").getUTCDay();return $===0?7:$}function FZ(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 jZ(Z){let $=r(i(Z),1,1);return e7(Z,$)+1}function V4(Z){return Math.ceil(U1(Z)/3)}function E4(Z){return Z%4===0&&Z%100!==0||Z%400===0}function p1(Z,$){let X=[31,28,31,30,31,30,31,31,30,31,30,31];if($===2&&E4(Z))return 29;return X[$-1]}function wZ(Z){return E4(Z)?366:365}function Z6(Z){return Z+"T00:00:00.000Z"}function PZ(Z){return Math.floor(new Date(Z+"T00:00:00Z").getTime()/1000)}function OZ(Z){let $=new Date(Z*1000);return r($.getUTCFullYear(),$.getUTCMonth()+1,$.getUTCDate())}function N4(Z,$){let X=new Date(Z+"T00:00:00Z"),K={timeZone:"UTC",...$};return new Intl.DateTimeFormat(void 0,K).format(X)}function CZ(Z){return N4(Z,{year:"numeric",month:"long",day:"numeric"})}function VZ(Z){return N4(Z,{year:"numeric",month:"short",day:"numeric"})}function EZ(Z,$){return Z<$}function NZ(Z,$){return Z>$}function SZ(Z,$){return Z===$}function TZ(Z,$){return Z<$?Z:$}function kZ(Z,$){return Z>$?Z:$}function gZ(Z,$,X){return Z>=$&&Z<=X}function bZ(Z){return r(i(Z),U1(Z),1)}function fZ(Z){let $=i(Z),X=U1(Z);return r($,X,p1($,X))}function vZ(Z){let X=(V4(Z)-1)*3+1;return r(i(Z),X,1)}function yZ(Z){let X=V4(Z)*3;return r(i(Z),X,p1(i(Z),X))}function hZ(Z){return r(i(Z),1,1)}function xZ(Z){return r(i(Z),12,31)}function dZ(Z){let $=C4(Z);return f0(Z,-($-1))}function uZ(Z){let $=C4(Z);return f0(Z,7-$)}var mZ={isValid:P4,today:UZ,todayIn:qZ,from:r,parse:t7,tryParse:DZ,addDays:f0,addWeeks:BZ,addMonths:IZ,addYears:RZ,diff:e7,diffMonths:MZ,diffYears:AZ,year:i,month:U1,day:O4,dayOfWeek:C4,weekOfYear:FZ,dayOfYear:jZ,quarter:V4,isLeapYear:E4,daysInMonth:p1,daysInYear:wZ,toTimestamp:Z6,toUnix:PZ,fromUnix:OZ,format:N4,formatLong:CZ,formatShort:VZ,isBefore:EZ,isAfter:NZ,isEqual:SZ,min:TZ,max:kZ,isBetween:gZ,startOfMonth:bZ,endOfMonth:fZ,startOfQuarter:vZ,endOfQuarter:yZ,startOfYear:hZ,endOfYear:xZ,startOfWeek:dZ,endOfWeek:uZ};export{t2 as xmlParse,Y4 as wrap,B2 as whileLoop,i2 as vectorSearch,P2 as varsLet,w2 as varsImport,O2 as varsExport,A2 as varSet,j2 as varGet,H4 as validateArgs,$8 as uuid,l0 as typeToString,P1 as typeOf,R2 as tryCatch,E9 as transpileWithCache,v1 as transpileToJS,o2 as transpileCode,V0 as transpile,p0 as transformFunction,N9 as tjsWithCache,V9 as tjs,Q5 as testUtils,f2 as template,e1 as stripTjsPreamble,t1 as stripModuleSyntax,l2 as storeSet,p2 as storeQuery,Y8 as storeProcedure,m2 as storeGet,g2 as split,H2 as setGlobalCache,a as seq,C2 as scope,I1 as runtime,s2 as runCode,I2 as ret,F as resolveValue,q4 as resolveProcedureToken,G8 as releaseProcedure,_7 as registerWasmBlock,v2 as regexMatch,N2 as reduce,X8 as random,T2 as push,V1 as procedureStore,s1 as preprocess,y2 as pick,v4 as parseReturnType,W1 as parseParameter,q1 as parse,h2 as merge,e2 as memoize,V2 as map,q6 as lookupVariable,n2 as llmPredict,a5 as lint,k2 as len,x2 as keys,r2 as jsonStringify,a2 as jsonParse,b2 as join,a0 as isValidUrl,r0 as isValidTimestamp,t0 as isValidLegalDate,J1 as isRuntimeType,U4 as isProcedureToken,Q1 as isError,n9 as isAgentError,J7 as instantiateWasm,b5 as installRuntime,s as inferTypeFromValue,D2 as iff,X2 as hashSourceSync,O0 as hashSource,D4 as hash,T9 as getToolDefinitions,I4 as getStoreCapabilityDefault,D3 as getStandardCapabilities,f as getLocation,k7 as getLLMCapability,Q2 as getGlobalCache,f8 as getBatteries,n5 as fromTS,S2 as find,E2 as filter,u2 as fetch,n0 as extractTests,k1 as extractTDoc,z1 as extractLiteralValue,m4 as expectFunction,y as evaluateExpr,M2 as errorAtom,X1 as error,f5 as emitRuntimeWrapper,C as defineAtom,_1 as createChildScope,o as createChildContext,S9 as createAgent,N0 as coreAtoms,F2 as constSet,Q8 as consoleWarn,K8 as consoleLog,H8 as consoleError,Z2 as compileWasmBlocks,W7 as compileToWasm,z8 as clearExpiredProcedures,R1 as checkType,Z8 as cache,Y1 as builtins,H3 as batteryAtoms,B3 as batteries,u4 as assertFunction,O9 as ajs,c2 as agentRun,L0 as Union,l as TypedBuilder,U6 as TypeError,h as Type,g as TranspileError,e0 as TimestampType,S1 as Timestamp,W0 as TUuid,z0 as TUrl,X0 as TString,D0 as TRecord,H0 as TPositiveInt,q0 as TPair,$0 as TNumber,Y0 as TNonEmptyString,p as TJS_VERSION,Q0 as TInteger,G0 as TEmail,K0 as TBoolean,U0 as TArray,G1 as SyntaxError,c5 as Schema,L4 as PROCEDURE_TOKEN_PREFIX,_0 as Optional,J0 as Nullable,J4 as MetadataCache,F4 as LocalModels,Z4 as LegalDateType,mZ as LegalDate,w1 as Generic,B0 as Enum,Y2 as DEFAULT_PROCEDURE_TTL,G2 as DEFAULT_MAX_AST_SIZE,I8 as AgentVM,c as AgentError,q8 as Agent,s9 as A99};
|
|
255
|
+
|
|
256
|
+
//# debugId=767FC908509C5A4164756E2164756E21
|