tjs-lang 0.7.7 → 0.7.8

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.
Files changed (59) hide show
  1. package/CLAUDE.md +90 -33
  2. package/bin/docs.js +4 -1
  3. package/demo/docs.json +45 -11
  4. package/demo/src/examples.test.ts +1 -0
  5. package/demo/src/imports.test.ts +16 -4
  6. package/demo/src/imports.ts +60 -15
  7. package/demo/src/playground-shared.ts +9 -8
  8. package/demo/src/tfs-worker.js +205 -147
  9. package/demo/src/tjs-playground.ts +34 -10
  10. package/demo/src/ts-playground.ts +24 -8
  11. package/dist/index.js +118 -101
  12. package/dist/index.js.map +4 -4
  13. package/dist/src/lang/bool-coercion.d.ts +50 -0
  14. package/dist/src/lang/docs.d.ts +31 -6
  15. package/dist/src/lang/linter.d.ts +8 -0
  16. package/dist/src/lang/parser-transforms.d.ts +18 -0
  17. package/dist/src/lang/parser-types.d.ts +2 -0
  18. package/dist/src/lang/parser.d.ts +3 -0
  19. package/dist/src/lang/runtime.d.ts +34 -0
  20. package/dist/src/lang/types.d.ts +9 -1
  21. package/dist/src/rbac/index.d.ts +1 -1
  22. package/dist/src/vm/runtime.d.ts +1 -1
  23. package/dist/tjs-eval.js +38 -36
  24. package/dist/tjs-eval.js.map +4 -4
  25. package/dist/tjs-from-ts.js +20 -20
  26. package/dist/tjs-from-ts.js.map +3 -3
  27. package/dist/tjs-lang.js +85 -83
  28. package/dist/tjs-lang.js.map +4 -4
  29. package/dist/tjs-vm.js +47 -45
  30. package/dist/tjs-vm.js.map +4 -4
  31. package/llms.txt +79 -0
  32. package/package.json +3 -2
  33. package/src/cli/commands/convert.test.ts +16 -21
  34. package/src/lang/bool-coercion.test.ts +203 -0
  35. package/src/lang/bool-coercion.ts +314 -0
  36. package/src/lang/codegen.test.ts +137 -0
  37. package/src/lang/docs.test.ts +328 -1
  38. package/src/lang/docs.ts +424 -24
  39. package/src/lang/emitters/ast.ts +11 -12
  40. package/src/lang/emitters/dts.test.ts +41 -0
  41. package/src/lang/emitters/dts.ts +9 -0
  42. package/src/lang/emitters/js-tests.ts +9 -4
  43. package/src/lang/emitters/js.ts +182 -2
  44. package/src/lang/inference.ts +54 -0
  45. package/src/lang/linter.test.ts +104 -1
  46. package/src/lang/linter.ts +124 -1
  47. package/src/lang/parser-params.ts +31 -0
  48. package/src/lang/parser-transforms.ts +304 -0
  49. package/src/lang/parser-types.ts +2 -0
  50. package/src/lang/parser.test.ts +73 -1
  51. package/src/lang/parser.ts +34 -1
  52. package/src/lang/runtime.ts +98 -0
  53. package/src/lang/types.ts +6 -0
  54. package/src/rbac/index.ts +2 -2
  55. package/src/rbac/rules.tjs.d.ts +9 -0
  56. package/src/vm/atoms/batteries.ts +2 -2
  57. package/src/vm/runtime.ts +10 -3
  58. package/dist/src/rbac/rules.d.ts +0 -184
  59. package/src/rbac/rules.js +0 -338
package/dist/index.js CHANGED
@@ -1,55 +1,57 @@
1
- var Fi=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Es=Fi((yf,vo)=>{vo.exports={name:"tjs-lang",version:"0.7.7",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.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",esbuild:"^0.28.0",eslint:"^8.57.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"firebase deploy --only hosting",deploy:"npm run build:demo && npm run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-walk":"^8.3.4","tosijs-schema":"^1.3.0"}}});import*as ds from"acorn";var z=class extends Error{line;column;source;filename;constructor(t,n,r,s){let i=`${s||"<source>"}:${n.line}:${n.column}`;super(`${t} at ${i}`),this.name="TranspileError",this.line=n.line,this.column=n.column,this.source=r,this.filename=s}},ie=class extends z{constructor(t,n,r,s){super(t,n,r,s),this.name="SyntaxError"}formatWithContext(t=2){if(!this.source)return this.message;let n=this.source.split(`
1
+ var so=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Rs=so((Kf,Go)=>{Go.exports={name:"tjs-lang",version:"0.7.8",description:"Type-safe JavaScript dialect with runtime validation, sandboxed VM execution, and AI agent orchestration. Transpiles TypeScript to validated JS with fuel-metered execution for untrusted code.",keywords:["typescript","transpiler","runtime-validation","type-safety","sandbox","virtual-machine","wasm-alternative","ai-agents","llm","orchestration","security","fuel-metering","capability-based","json-ast","untrusted-code"],license:"Apache-2.0",main:"./dist/index.js",types:"./dist/src/index.d.ts",exports:{".":{bun:"./src/index.ts",types:"./dist/src/index.d.ts",default:"./dist/index.js"},"./eval":{bun:"./src/lang/eval.ts",types:"./dist/src/lang/eval.d.ts",default:"./dist/tjs-eval.js"},"./lang":{bun:"./src/lang/transpiler.ts",types:"./dist/src/lang/transpiler.d.ts",default:"./dist/tjs-lang.js"},"./lang/from-ts":{bun:"./src/lang/emitters/from-ts.ts",types:"./dist/src/lang/emitters/from-ts.d.ts",default:"./dist/tjs-from-ts.js"},"./vm":{bun:"./src/vm/index.ts",types:"./dist/src/vm/index.d.ts",default:"./dist/tjs-vm.js"},"./batteries":{bun:"./src/batteries/index.ts",types:"./dist/src/batteries/index.d.ts",default:"./dist/tjs-batteries.js"},"./src":"./src/index.ts","./editors/monaco":"./editors/monaco/ajs-monarch.js","./editors/codemirror":"./editors/codemirror/ajs-language.js","./editors/ace":"./editors/ace/ajs-mode.js"},bin:{tjs:"./src/cli/tjs.ts",tjsx:"./src/cli/tjsx.ts","tjs-playground":"./src/cli/playground.ts","create-tjs-app":"./src/cli/create-app.ts","ajs-install-vscode":"./bin/install-vscode.sh","ajs-install-cursor":"./bin/install-cursor.sh"},type:"module",files:["dist","src","docs","editors","bin","demo","tjs-lang.svg","CONTEXT.md","CLAUDE.md","llms.txt"],sideEffects:!1,repository:{type:"git",url:"https://github.com/tonioloewald/tjs-lang.git"},devDependencies:{"@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.11","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-markdown":"^6.5.0","@codemirror/state":"^6.5.3","@codemirror/theme-one-dark":"^6.1.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",esbuild:"^0.28.0",eslint:"^8.57.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2",valibot:"^0.36.0",vitest:"^2.0.5"},scripts:{format:"bun eslint src --fix && bun prettier --write .",lint:"eslint src","build:grammars":"bun editors/build-grammars.ts","test:fast":"SKIP_LLM_TESTS=1 SKIP_BENCHMARKS=1 bun test","test:llm":"bun test src/batteries/models.integration.test.ts",bench:"bun bin/benchmarks.ts",make:"rm -rf dist && bun format && bun run build:grammars && tsc -p tsconfig.build.json && bun scripts/build.ts","build:bundles":"bun scripts/build.ts",typecheck:"tsc --noEmit",latest:"rm -rf node_modules && bun install",docs:"node bin/docs.js",dev:"bun run bin/dev.ts","build:demo":"bun scripts/build-demo.ts","build:cli":"bun build src/cli/tjs.ts --compile --outfile=dist/tjs && bun build src/cli/tjsx.ts --compile --outfile=dist/tjsx","functions:build":"cd functions && npm run build","functions:deploy":"cd functions && npm run deploy","functions:serve":"cd functions && npm run serve","deploy:hosting":"firebase deploy --only hosting",deploy:"npm run build:demo && npm run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-walk":"^8.3.4","tosijs-schema":"^1.3.0"}}});import*as $s from"acorn";var H=class extends Error{line;column;source;filename;constructor(t,n,r,s){let i=`${s||"<source>"}:${n.line}:${n.column}`;super(`${t} at ${i}`),this.name="TranspileError",this.line=n.line,this.column=n.column,this.source=r,this.filename=s}},ne=class extends H{constructor(t,n,r,s){super(t,n,r,s),this.name="SyntaxError"}formatWithContext(t=2){if(!this.source)return this.message;let n=this.source.split(`
2
2
  `),r=this.line-1,s=Math.max(0,r-t),i=Math.min(n.length-1,r+t),o=[],a=String(i+1).length;for(let c=s;c<=i;c++){let l=String(c+1).padStart(a),u=c===r?">":" ";if(o.push(`${u} ${l} | ${n[c]}`),c===r){let p=" ".repeat(a+4+this.column);o.push(`${p}^ ${this.message.split(" at ")[0]}`)}}return o.join(`
3
- `)}},Fr=class extends z{expected;received;suggestion;constructor(t,n,r){super(t,n,r?.source,r?.filename),this.name="TypeError",this.expected=r?.expected,this.received=r?.received,this.suggestion=r?.suggestion}};function pe(e){return{depth:e.depth+1,locals:new Map,parent:e,parameters:e.parameters,atoms:e.atoms,warnings:e.warnings,source:e.source,filename:e.filename,options:e.options}}function Ui(e,t){if(t.locals.has(e))return t.locals.get(e);if(t.parameters.has(e))return t.parameters.get(e)?.type;if(t.parent)return Ui(e,t.parent)}function Z(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}function Ut(e,t){let n="",r=0,s,i,o="normal",a=[],c=[{type:"top-level",braceDepth:0}],l=0,u=()=>c[c.length-1]?.type||"top-level",p=()=>{let f=c[c.length-1];return f?.type==="class-body"&&l===f.braceDepth+1};for(;r<e.length;){let f=e[r],m=e[r+1];switch(o){case"single-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}f==="'"&&(o="normal"),r++;continue;case"double-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}f==='"'&&(o="normal"),r++;continue;case"template-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(f==="$"&&m==="{"){n+=m,r+=2,a.push(1),o="normal";continue}f==="`"&&(o="normal"),r++;continue;case"line-comment":n+=f,f===`
4
- `&&(o="normal"),r++;continue;case"block-comment":if(n+=f,f==="*"&&m==="/"){n+=m,r+=2,o="normal";continue}r++;continue;case"regex":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(f==="["){for(r++;r<e.length&&e[r]!=="]";)n+=e[r],e[r]==="\\"&&r+1<e.length?(n+=e[r+1],r+=2):r++;r<e.length&&(n+=e[r],r++);continue}if(f==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)n+=e[r],r++;o="normal";continue}r++;continue;case"normal":if(a.length>0){if(f==="{")a[a.length-1]++;else if(f==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),n+=f,r++,o="template-string";continue}}if(f==="'"){n+=f,r++,o="single-string";continue}if(f==='"'){n+=f,r++,o="double-string";continue}if(f==="`"){n+=f,r++,o="template-string";continue}if(f==="/"&&m==="/"){n+=f+m,r+=2,o="line-comment";continue}if(f==="/"&&m==="*"){n+=f+m,r+=2,o="block-comment";continue}if(f==="/"){let T=n.trimEnd();if(!T[T.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(T)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(T)){n+=f,r++,o="regex";continue}}break}if(f==="{"){l++,n+=f,r++;continue}if(f==="}"){l--;let T=c[c.length-1];T&&l===T.braceDepth&&c.pop(),n+=f,r++;continue}let d=e.slice(r).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(d){let T=d[0].slice(0,-1);n+=T,r+=T.length,c.push({type:"class-body",braceDepth:l});continue}let y=e.slice(r).match(/^function\s+(\w+)\s*\(/);if(y){let T=y[1],x=y[0].length,$=e[r+x],_=null,j=r+x;($==="?"||$==="!")&&(_=$,j++,_==="!"?t.unsafeFunctions.add(T):t.safeFunctions.add(T)),n+=`function ${T}(`,r=j;let A=Lt(e,r,"(",")");if(!A){n+=e[r],r++;continue}let{content:k,endPos:R}=A;r=R;let M=Kn(k,t,!0);n+=M+")";let P=r;for(;P<e.length&&/\s/.test(e[P]);)P++;if(e[P]===":"){let v=e.slice(P,P+2),I;for(v===":?"||v===":!"?(P+=2,I=v===":?"?"safe":"unsafe"):P+=1;P<e.length&&/\s/.test(e[P]);)P++;let L=Vn(e,P);L&&(s===void 0&&(s=L.type,I&&(i=I)),r=L.endPos)}continue}let b=e.slice(r).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/),w=(()=>{for(let T=n.length-1;T>=0;T--)if(!/\s/.test(n[T]))return n[T];return`
5
- `})(),E=w!=="="&&w!==","&&w!=="("&&w!=="["&&w!==">";if(b&&p()&&!E){let T=b[1].length;n+=e.slice(r,r+T),r+=T;continue}if(b&&p()&&E){let T=b[1],x=b[0].length,$=r+x;n+=T+"(",r=$;let _=Lt(e,r,"(",")");if(!_){n+=e[r],r++;continue}let{content:j,endPos:A}=_;r=A;let k=Kn(j,t,!0);n+=k+")";let R=r;for(;R<e.length&&/\s/.test(e[R]);)R++;if(e[R]===":"){let M=e.slice(R,R+2);for(M===":?"||M===":!"?R+=2:R++;R<e.length&&/\s/.test(e[R]);)R++;let P=Vn(e,R);P&&(r=P.endPos)}continue}if(e[r]==="("){let T=Lt(e,r+1,"(",")");if(!T){n+=e[r],r++;continue}let x=T.content,$=T.endPos,_=$;for(;_<e.length&&/\s/.test(e[_]);)_++;let j;if(e[_]===":"){let A=e.slice(_,_+2);for(A===":?"||A===":!"?_+=2:_++;_<e.length&&/\s/.test(e[_]);)_++;let k=Vn(e,_);if(k)for(j=k.type,_=k.endPos;_<e.length&&/\s/.test(e[_]);)_++}if(e.slice(_,_+2)==="=>"){let A=null,k=x,R=x.trimStart();R.startsWith("?")&&(R.length===1||/\s/.test(R[1]))?(A="?",k=R.slice(1)):R.startsWith("!")&&(R.length===1||/\s/.test(R[1]))&&(A="!",k=R.slice(1));let M=Kn(k,t,!1);for(n+=`(${A==="?"?"/* safe */ ":A==="!"?"/* unsafe */ ":""}${M})`,r=$;r<_&&/\s/.test(e[r]);)n+=e[r],r++;j&&(r=_)}else{let A=Ut(x,t);n+=`(${A.source})`,r=$}continue}n+=e[r],r++}return{source:n,returnType:s,returnSafety:i}}function Lt(e,t,n,r){let s=1,i=t,o=!1,a="";for(;i<e.length&&s>0;){let c=e[i];!o&&(c==="'"||c==='"'||c==="`")?(o=!0,a=c):o&&c===a&&e[i-1]!=="\\"?o=!1:o||(c===n?s++:c===r&&s--),i++}return s!==0?null:{content:e.slice(t,i-1),endPos:i}}function Jr(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)return null;let r=n,s=e[n];if(s==="{"||s==="["){let o=s==="{"?"}":"]",a=Lt(e,n+1,s,o);return a?{value:e.slice(r,a.endPos),endPos:a.endPos}:null}if(s==="'"||s==='"'||s==="`"){for(n++;n<e.length;){if(e[n]===s&&e[n-1]!=="\\")return n++,{value:e.slice(r,n),endPos:n};n++}return null}if(/[-+\d]/.test(s)){for(;n<e.length&&/[\d.eE+-]/.test(e[n]);)n++;return{value:e.slice(r,n),endPos:n}}let i=e.slice(n).match(/^(true|false|null|undefined)\b/);return i?{value:i[1],endPos:n+i[1].length}:null}function ft(e){return e.replace(/(?<!\|)\|(?!\|)/g," || ")}function Vn(e,t){let n=t,r=0,s=!1,i="",o=!1,a=c=>({type:ft(e.slice(t,c).trim()),endPos:c});for(;n<e.length;){let c=e[n];if(!s&&(c==="'"||c==='"'||c==="`")){s=!0,i=c,o=!0,n++;continue}if(s){if(c===i&&e[n-1]!=="\\"){if(s=!1,n++,r===0){let l=n;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="{"&&!e.slice(l+1).match(/^\s*(\w+)\s*:/)||e[l]!=="|"&&e[l]!=="&")return a(n)}continue}n++;continue}if(c==="{"||c==="["||c==="("){r++,o=!0,n++;continue}if(c==="}"||c==="]"||c===")"){if(r--,r===0){n++;let l=n;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="|"||e[l]==="&")continue;return a(n)}n++;continue}if(r===0&&c==="{"){if(o)return a(n);if(e.slice(n+1).match(/^\s*(\w+)\s*:/)){r++,o=!0,n++;continue}return a(n)}if(r===0&&(c==="|"||c==="&")){for(n++,n<e.length&&e[n]==="|"&&n++;n<e.length&&/\s/.test(e[n]);)n++;continue}if(r===0&&(/\d/.test(c)||c==="-"&&/\d/.test(e[n+1]))){let l=n;for(e[l]==="-"&&l++;l<e.length&&/\d/.test(e[l]);)l++;if(l<e.length&&e[l]==="."&&/\d/.test(e[l+1]))for(l++;l<e.length&&/\d/.test(e[l]);)l++;if(l<e.length&&(e[l]==="e"||e[l]==="E"))for(l++,l<e.length&&(e[l]==="+"||e[l]==="-")&&l++;l<e.length&&/\d/.test(e[l]);)l++;for(o=!0,n=l;n<e.length&&/\s/.test(e[n]);)n++;if(n<e.length&&e[n]==="{")return{type:ft(e.slice(t,l).trim()),endPos:l};if(e[n]!=="|"&&e[n]!=="&")return{type:ft(e.slice(t,l).trim()),endPos:l};continue}if(r===0&&/[a-zA-Z_]/.test(c)){let l=n;for(;l<e.length&&/\w/.test(e[l]);)l++;for(o=!0,n=l;n<e.length&&/\s/.test(e[n]);)n++;if(n<e.length&&e[n]==="("){r++,n++;continue}if(n<e.length&&e[n]==="{"&&!e.slice(n+1).match(/^\s*(\w+)\s*:/)){let p=l;for(;p>t&&/\s/.test(e[p-1]);)p--;return{type:ft(e.slice(t,p).trim()),endPos:l}}if(e[n]!=="|"&&e[n]!=="&")return{type:ft(e.slice(t,l).trim()),endPos:l};continue}n++}return o?a(n):null}function qt(e){let t=[],n="",r=0,s=!1,i=!1,o=0;for(;o<e.length;){let a=e[o],c=e[o+1];if(!i&&a==="/"&&c==="/"){s=!0,n+="//",o+=2;continue}if(!s&&a==="/"&&c==="*"){i=!0,n+="/*",o+=2;continue}if(s&&a===`
6
- `){s=!1,n+=a,o++;continue}if(i&&a==="*"&&c==="/"){i=!1,n+="*/",o+=2;continue}if(s||i){n+=a,o++;continue}a==="("||a==="{"||a==="["?(r++,n+=a):a===")"||a==="}"||a==="]"?(r--,n+=a):a===","&&r===0?(t.push(n),n=""):n+=a,o++}return n.trim()&&t.push(n),t}function Kn(e,t,n){let r=Ut(e,{originalSource:e,requiredParams:t.requiredParams,unsafeFunctions:t.unsafeFunctions,safeFunctions:t.safeFunctions}).source,s=qt(r),i=!1,o=new Set,a=l=>{if(n&&/^\w+$/.test(l)){if(o.has(l))throw new Error(`Duplicate parameter name '${l}'`);o.add(l)}};return s.map(l=>{let u=l.trim();if(!u)return l;if(n&&u.startsWith("{")&&u.endsWith("}")){let m=u.slice(1,-1);return`{ ${Ur(m,t)} }`}if(n&&u.startsWith("[")&&u.endsWith("]")){let m=u.slice(1,-1);return`[ ${Ur(m,t)} ]`}if(u.startsWith("...")){let m=qr(u);return m!==-1?u.slice(0,m).trim():l}let p=u.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(p){let[,m,d]=p;return a(m),i=!0,`${m} = ${d}`}if(!qi(u)){let m=u.match(/^(\w+)\s*=/);return m&&a(m[1]),i=!0,l}let f=qr(u);if(f!==-1){let m=u.slice(0,f).trim(),d=u.slice(f+1).trim();return a(m),i&&n&&/^\w+$/.test(m),n&&/^\w+$/.test(m)&&t.requiredParams.add(m),`${m} = ${d}`}return l}).join(",")}function Ur(e,t){return qt(e).map(s=>{let i=s.trim();if(!i)return s;let o=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(o){let[,l,u]=o;t.requiredParams.add(l);let p=Bt(u);return`${l} = ${p}`}let a=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(a){let[,l,u]=a;t.requiredParams.add(l);let p=Ft(u);return`${l} = ${p}`}let c=i.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(c){let[,l,u]=c;return t.requiredParams.add(l),`${l} = ${u}`}return s}).join(", ")}function Bt(e){let t=e.slice(1,-1).trim();return`{ ${qt(t).map(s=>{let i=s.trim();if(!i)return s;let o=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(o){let[,p,f]=o;return`${p}: ${Bt(f)}`}let a=i.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(a){let[,p,f]=a;return`${p}: ${Bt(f)}`}let c=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(c){let[,p,f]=c;return`${p}: ${Ft(f)}`}let l=i.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,p,f]=l;return`${p}: ${Ft(f)}`}let u=i.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(u){let[,p,f]=u;return`${p}: ${f}`}return s}).join(", ")} }`}function Ft(e){let t=e.slice(1,-1).trim();return`[ ${qt(t).map(s=>{let i=s.trim();return i?i.startsWith("{")&&i.endsWith("}")?Bt(i):i.startsWith("[")&&i.endsWith("]")?Ft(i):s:s}).join(", ")} ]`}function qi(e){let t=0,n=!1,r=!1,s=!1,i="";for(let o=0;o<e.length;o++){let a=e[o];if(!s&&(a==="'"||a==='"'||a==="`")){s=!0,i=a;continue}if(s){a===i&&e[o-1]!=="\\"&&(s=!1);continue}a==="("||a==="{"||a==="["?t++:a===")"||a==="}"||a==="]"?t--:t===0&&(a===":"&&(n=!0),a==="="&&e[o+1]!==">"&&(r=!0))}return n&&!r}function qr(e){let t=0,n=!1,r="";for(let s=0;s<e.length;s++){let i=e[s];if(!n&&(i==="'"||i==='"'||i==="`")){n=!0,r=i;continue}if(n){i===r&&e[s-1]!=="\\"&&(n=!1);continue}if(i==="("||i==="{"||i==="[")t++;else if(i===")"||i==="}"||i==="]")t--;else if(t===0&&i===":")return s}return-1}function Ji(e,t){let n=e.match(t);if(!n)return null;let r=n.index+n[0].length-1,s=1,i=r+1;for(;i<e.length&&s>0;)e[i]==="{"?s++:e[i]==="}"&&s--,i++;if(s!==0)return null;let o=e.slice(r,i),a=[n[0].slice(0,-1)+o,o];return a.index=n.index,a}function Gr(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\btry\s*\{/);if(r){let i=n+r[0].length-1+1,o=1,a=i;for(;a<e.length&&o>0;){let l=e[a];l==="{"?o++:l==="}"&&o--,a++}if(o!==0){t+=e[n],n++;continue}if(e.slice(a).match(/^\s*(catch|finally)\b/))t+=e.slice(n,a),n=a;else{let l=e.slice(i,a-1);t+=`try {${l}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,n=a}}else t+=e[n],n++}return t}function Hr(e){let t=[],n="",r=0,s=0;for(;r<e.length;){let i=e.slice(r).match(/^\bwasm\s*\{/);if(i){let o=r,a=r+i[0].length,c=1,l=a;for(;l<e.length&&c>0;){let _=e[l];_==="{"?c++:_==="}"&&c--,l++}if(c!==0){n+=e[r],r++;continue}let u=e.slice(a,l-1),p,f=l,m=e.slice(l).match(/^\s*fallback\s*\{/);if(m){let _=l+m[0].length;c=1;let j=_;for(;j<e.length&&c>0;){let A=e[j];A==="{"?c++:A==="}"&&c--,j++}c===0&&(p=e.slice(_,j-1),f=j)}let y=Vi(u).map(_=>{let j=Ki(e,o,_);return j?`${_}: ${j}`:_}),b={id:`__tjs_wasm_${s}`,body:u,fallback:p,captures:y,start:o,end:f};t.push(b);let w=p??u,E=y.map(_=>_.split(":")[0].trim()),T=E.length>0?E.join(", "):"",x=E.length>0?`globalThis.${b.id}(${T})`:`globalThis.${b.id}()`,$=`(globalThis.${b.id} ? ${x} : (() => {${w}})())`;n+=$,r=f,s++}else n+=e[r],r++}return{source:n,blocks:t}}function Wi(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function Vi(e){let t=e.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),n=new Set,r=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,s;for(;(s=r.exec(t))!==null;)n.add(s[1]);let i=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,o=new Set;for(;(s=i.exec(t))!==null;)o.add(s[1]);for(let f of n){if(!o.has(f))continue;let m=new RegExp(`(?<!\\.)\\b${f}\\b`,"g"),d=new RegExp(`\\.${f}\\b`,"g"),y=t.match(m)?.length||0,b=t.match(d)?.length||0;y<=b&&o.delete(f)}let a=new Set,c=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=c.exec(t))!==null;)a.add(s[1]);let l=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=l.exec(t))!==null;)a.add(s[1]);let u=new Set(["if","else","for","while","do","switch","case","break","continue","return","function","let","const","var","new","this","true","false","null","undefined","typeof","instanceof","in","of","try","catch","finally","throw","async","await","class","extends","super","import","export","default","from","as","static","get","set","yield","console","Math","Array","Object","String","Number","Boolean","Date","JSON","Promise","Map","Set","WeakMap","WeakSet","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","ArrayBuffer","DataView","Error","TypeError","RangeError","length","push","pop","shift","unshift","slice","splice","map","filter","reduce","forEach","find","findIndex","indexOf","includes","globalThis","window","document","Infinity","NaN","isNaN","isFinite","parseInt","parseFloat","encodeURI","decodeURI","eval","wasmBuffer"]),p=[];for(let f of o)!a.has(f)&&!u.has(f)&&!Wi(f)&&p.push(f);return p.sort()}function Ki(e,t,n){let r=e.slice(0,t),s=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,i=r.match(s);if(!i){let o=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,a=r.match(o);return a?Wr(a[1],n):void 0}return Wr(i[1],n)}function Wr(e,t){let n=e.split(",").map(r=>r.trim());for(let r of n){let s=r.match(new RegExp(`^${t}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(s)return s[1];let i=r.match(new RegExp(`^${t}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(i)return i[1]}}function dt(e){let t=`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,n=new RegExp(t+"\\s+IsNot\\s+"+t,"g");e=e.replace(n,"IsNot($1, $2)");let r=new RegExp(t+"\\s+Is\\s+"+t,"g");return e=e.replace(r,"Is($1, $2)"),e}function Zr(e){let t=/^[\s]*[([`]/,n=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,r=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,s=e.split(`
3
+ `)}},Hr=class extends H{expected;received;suggestion;constructor(t,n,r){super(t,n,r?.source,r?.filename),this.name="TypeError",this.expected=r?.expected,this.received=r?.received,this.suggestion=r?.suggestion}};function de(e){return{depth:e.depth+1,locals:new Map,parent:e,parameters:e.parameters,atoms:e.atoms,warnings:e.warnings,source:e.source,filename:e.filename,options:e.options}}function io(e,t){if(t.locals.has(e))return t.locals.get(e);if(t.parameters.has(e))return t.parameters.get(e)?.type;if(t.parent)return io(e,t.parent)}function Z(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}function oo(e,t){let n=e.match(t);if(!n)return null;let r=n.index+n[0].length-1,s=1,i=r+1;for(;i<e.length&&s>0;)e[i]==="{"?s++:e[i]==="}"&&s--,i++;if(s!==0)return null;let o=e.slice(r,i),a=[n[0].slice(0,-1)+o,o];return a.index=n.index,a}function es(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\btry\s*\{/);if(r){let i=n+r[0].length-1+1,o=1,a=i;for(;a<e.length&&o>0;){let l=e[a];l==="{"?o++:l==="}"&&o--,a++}if(o!==0){t+=e[n],n++;continue}if(e.slice(a).match(/^\s*(catch|finally)\b/))t+=e.slice(n,a),n=a;else{let l=e.slice(i,a-1);t+=`try {${l}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,n=a}}else t+=e[n],n++}return t}function ts(e){let t=[],n="",r=0,s=0;for(;r<e.length;){let i=e.slice(r).match(/^\bwasm\s*\{/);if(i){let o=r,a=r+i[0].length,c=1,l=a;for(;l<e.length&&c>0;){let $=e[l];$==="{"?c++:$==="}"&&c--,l++}if(c!==0){n+=e[r],r++;continue}let u=e.slice(a,l-1),p,f=l,m=e.slice(l).match(/^\s*fallback\s*\{/);if(m){let $=l+m[0].length;c=1;let k=$;for(;k<e.length&&c>0;){let A=e[k];A==="{"?c++:A==="}"&&c--,k++}c===0&&(p=e.slice($,k-1),f=k)}let y=co(u).map($=>{let k=lo(e,o,$);return k?`${$}: ${k}`:$}),b={id:`__tjs_wasm_${s}`,body:u,fallback:p,captures:y,start:o,end:f};t.push(b);let w=p??u,S=y.map($=>$.split(":")[0].trim()),T=S.length>0?S.join(", "):"",x=S.length>0?`globalThis.${b.id}(${T})`:`globalThis.${b.id}()`,_=`(globalThis.${b.id} ? ${x} : (() => {${w}})())`;n+=_,r=f,s++}else n+=e[r],r++}return{source:n,blocks:t}}function ao(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function co(e){let t=e.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),n=new Set,r=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,s;for(;(s=r.exec(t))!==null;)n.add(s[1]);let i=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,o=new Set;for(;(s=i.exec(t))!==null;)o.add(s[1]);for(let f of n){if(!o.has(f))continue;let m=new RegExp(`(?<!\\.)\\b${f}\\b`,"g"),d=new RegExp(`\\.${f}\\b`,"g"),y=t.match(m)?.length||0,b=t.match(d)?.length||0;y<=b&&o.delete(f)}let a=new Set,c=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=c.exec(t))!==null;)a.add(s[1]);let l=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=l.exec(t))!==null;)a.add(s[1]);let u=new Set(["if","else","for","while","do","switch","case","break","continue","return","function","let","const","var","new","this","true","false","null","undefined","typeof","instanceof","in","of","try","catch","finally","throw","async","await","class","extends","super","import","export","default","from","as","static","get","set","yield","console","Math","Array","Object","String","Number","Boolean","Date","JSON","Promise","Map","Set","WeakMap","WeakSet","Float32Array","Float64Array","Int8Array","Int16Array","Int32Array","Uint8Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","ArrayBuffer","DataView","Error","TypeError","RangeError","length","push","pop","shift","unshift","slice","splice","map","filter","reduce","forEach","find","findIndex","indexOf","includes","globalThis","window","document","Infinity","NaN","isNaN","isFinite","parseInt","parseFloat","encodeURI","decodeURI","eval","wasmBuffer"]),p=[];for(let f of o)!a.has(f)&&!u.has(f)&&!ao(f)&&p.push(f);return p.sort()}function lo(e,t,n){let r=e.slice(0,t),s=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,i=r.match(s);if(!i){let o=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,a=r.match(o);return a?Zr(a[1],n):void 0}return Zr(i[1],n)}function Zr(e,t){let n=e.split(",").map(r=>r.trim());for(let r of n){let s=r.match(new RegExp(`^${t}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(s)return s[1];let i=r.match(new RegExp(`^${t}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(i)return i[1]}}function gt(e){let t=`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,n=new RegExp(t+"\\s+IsNot\\s+"+t,"g");e=e.replace(n,"IsNot($1, $2)");let r=new RegExp(t+"\\s+Is\\s+"+t,"g");return e=e.replace(r,"Is($1, $2)"),e}function ns(e){let t=/^[\s]*[([`]/,n=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,r=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,s=e.split(`
7
4
  `),i=[],o=!1;for(let a=0;a<s.length;a++){let c=s[a],l=a>0?s[a-1]:"";if(o){i.push(c),c.includes("*/")&&(o=!1);continue}let u=c.indexOf("/*"),p=c.indexOf("*/");if(u!==-1&&(p===-1||p<u)){o=!0,i.push(c);continue}if(a>0&&t.test(c)){let f=l.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!n.test(f)&&!r.test(f)){let m=c.match(/^(\s*)/),d=m?m[1]:"",y=c.slice(d.length);i.push(d+";"+y);continue}}i.push(c)}return i.join(`
8
- `)}function zi(e){let t=[],n=0,r="normal",s=[];for(;n<e.length;){let o=e[n],a=e[n+1];switch(r){case"single-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==="'"&&(r="normal"),n++;continue;case"double-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==='"'&&(r="normal"),n++;continue;case"template-string":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="$"&&a==="{"){n+=2,s.push(1),r="normal";continue}o==="`"&&(r="normal"),n++;continue;case"line-comment":o===`
9
- `&&(r="normal"),n++;continue;case"block-comment":if(o==="*"&&a==="/"){n+=2,r="normal";continue}n++;continue;case"regex":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="["){for(n++;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n+1<e.length?n+=2:n++;n<e.length&&n++;continue}if(o==="/"){for(n++;n<e.length&&/[gimsuy]/.test(e[n]);)n++;r="normal";continue}n++;continue;case"normal":if(s.length>0){if(o==="{")s[s.length-1]++;else if(o==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),n++,r="template-string";continue}}if(o==="'"){n++,r="single-string";continue}if(o==='"'){n++,r="double-string";continue}if(o==="`"){n++,r="template-string";continue}if(o==="/"&&a==="/"){n+=2,r="line-comment";continue}if(o==="/"&&a==="*"){n+=2,r="block-comment";continue}if(o==="/"){let c=n-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){n++,r="regex";continue}}if(o==="t"&&e.slice(n,n+6)==="typeof"&&(n===0||!/[\w$]/.test(e[n-1]))&&/\s/.test(e[n+6]??"")){let c=n+6;for(;c<e.length&&/\s/.test(e[c]);)c++;if(c<e.length&&/[a-zA-Z_$]/.test(e[c])){let l=c;for(;c<e.length&&/[\w$]/.test(e[c]);)c++;for(;c<e.length;)if(e[c]==="."&&/[a-zA-Z_$]/.test(e[c+1]??""))for(c++;c<e.length&&/[\w$]/.test(e[c]);)c++;else if(e[c]==="?"&&e[c+1]==="."&&/[a-zA-Z_$]/.test(e[c+2]??""))for(c+=2;c<e.length&&/[\w$]/.test(e[c]);)c++;else break;t.push({keywordStart:n,operandEnd:c,operand:e.slice(l,c)}),n=c;continue}}break}n++}if(t.length===0)return e;let i=e;for(let o=t.length-1;o>=0;o--){let a=t[o];i=i.slice(0,a.keywordStart)+`TypeOf(${a.operand})`+i.slice(a.operandEnd)}return i}function yt(e){e=zi(e);let t=[],n=0,r="normal",s=[];for(;n<e.length;){let o=e[n],a=e[n+1];switch(r){case"single-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==="'"&&(r="normal"),n++;continue;case"double-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==='"'&&(r="normal"),n++;continue;case"template-string":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="$"&&a==="{"){n+=2,s.push(1),r="normal";continue}o==="`"&&(r="normal"),n++;continue;case"line-comment":o===`
10
- `&&(r="normal"),n++;continue;case"block-comment":if(o==="*"&&a==="/"){n+=2,r="normal";continue}n++;continue;case"regex":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="["){for(n++;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n+1<e.length?n+=2:n++;n<e.length&&n++;continue}if(o==="/"){for(n++;n<e.length&&/[gimsuy]/.test(e[n]);)n++;r="normal";continue}n++;continue;case"normal":if(s.length>0){if(o==="{")s[s.length-1]++;else if(o==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),n++,r="template-string";continue}}if(o==="'"){n++,r="single-string";continue}if(o==='"'){n++,r="double-string";continue}if(o==="`"){n++,r="template-string";continue}if(o==="/"&&a==="/"){n+=2,r="line-comment";continue}if(o==="/"&&a==="*"){n+=2,r="block-comment";continue}if(o==="/"){let c=n-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){n++,r="regex";continue}}if(o==="="&&a==="="&&e[n+2]!=="="&&e[n-1]!=="!"){t.push({pos:n,op:"=="}),n+=2;continue}if(o==="!"&&a==="="&&e[n+2]!=="="){t.push({pos:n,op:"!="}),n+=2;continue}break}n++}if(t.length===0)return e;let i=e;for(let o=t.length-1;o>=0;o--){let{pos:a,op:c}=t[o],l=c==="=="?"Eq":"NotEq",u=Gi(i,a),p=Hi(i,a+2),f=i.slice(u,a).trim(),m=i.slice(a+2,p).trim();if(f&&m){let d=i.slice(0,u),y=i.slice(p),w=/[a-zA-Z0-9_$]$/.test(d)?" ":"";i=`${d}${w}${l}(${f}, ${m})${y}`}}return i}function Gi(e,t){let n=t-1;for(;n>=0&&/\s/.test(e[n]);)n--;if(n<0)return 0;let r=0,s=!1,i="";for(;n>=0;){let o=e[n],a=n>0?e[n-1]:"";if(s){o===i&&a!=="\\"&&(s=!1),n--;continue}if((o==='"'||o==="'"||o==="`")&&a!=="\\"){s=!0,i=o,n--;continue}if(o===")"||o==="]"||o==="}"){r++,n--;continue}if(o==="("||o==="["){if(r>0){r--,n--;continue}return n+1}if(o==="{"){if(r>0){r--,n--;continue}return n+1}if(r>0){n--;continue}if(o===";")return n+1;if(/[a-z]/.test(o)){let c=n+1,l=n;for(;l>0&&/[a-z]/i.test(e[l-1]);)l--;let u=e.slice(l,c),p=l>0?e[l-1]:"";if(!/[a-zA-Z0-9_$]/.test(p)){if(["return","throw","case","typeof","void","delete","await","yield"].includes(u))return c;if(u==="new")return l}}if(o===">"&&a==="="||o==="="&&a!=="="&&a!=="!"&&a!=="<"&&a!==">"||o==="&"&&a==="&"||o==="|"&&a==="|"||o==="?"||o===":"||o===",")return n+1;n--}return 0}function Hi(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)return e.length;let r=0,s=!1,i="";for(;n<e.length;){let o=e[n],a=n+1<e.length?e[n+1]:"";if(s){o===i&&e[n-1]!=="\\"&&(s=!1),n++;continue}if((o==='"'||o==="'"||o==="`")&&e[n-1]!=="\\"){s=!0,i=o,n++;continue}if(o==="("||o==="["||o==="{"){r++,n++;continue}if(o===")"||o==="]"||o==="}"){if(r>0){r--,n++;continue}return n}if(r>0){n++;continue}if(o===";"||o==="&"&&a==="&"||o==="|"&&a==="|"||o==="?"||o===":"||o===","||(o==="="||o==="!")&&a==="="&&e[n+2]!=="=")return n;n++}return e.length}function Yr(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(r){let s=r[1],i=n+r[0].length,o=s,a=!1,c=e.slice(i).match(/^(['"`])([^]*?)\1\s*/);if(c){let f=i+c[0].length,m=e[f],d=m===void 0||f>=e.length||m!=="="&&m!=="{";if(m==="="||m==="{")o=c[2],a=!0,i=f;else if(d){let y=c[0].trim(),b=c[0].slice(y.length);t+=`const ${s} = Type('${s}', ${y})${b}`,n=f;continue}}let l,u=i,p=e.slice(i).match(/^=\s*/);if(p){i+=p[0].length;let f=e.slice(i).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(f){l=f[0],i+=f[0].length,u=i;let m=e.slice(i).match(/^\s*/);m&&(i+=m[0].length)}}if(e[i]==="{"){let f=i+1,m=1,d=f;for(;d<e.length&&m>0;){let $=e[d];$==="{"?m++:$==="}"&&m--,d++}if(m!==0){t+=e[n],n++;continue}let y=e.slice(f,d-1).trim(),b=d,w=y.match(/description\s*:\s*(['"`])([^]*?)\1/);w&&!a&&(o=w[2]);let E,T=y.match(/example\s*:\s*/);if(T){let $=T.index+T[0].length,_=Jr(y,$);_&&(E=_.value.trim())}let x=y.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(x&&E){let $=x[1].trim(),_=x[2].trim(),j=l?`, ${l}`:"";t+=`const ${s} = Type('${o}', (${$}) => { if (!globalThis.__tjs?.validate(${$}, globalThis.__tjs?.infer(${E}))) return false; ${_} }, ${E}${j})`}else if(x){let $=x[1].trim(),_=x[2].trim(),j=l?`, undefined, ${l}`:"";t+=`const ${s} = Type('${o}', (${$}) => { ${_} }${j})`}else if(E){let $=l?`, ${l}`:"";t+=`const ${s} = Type('${o}', undefined, ${E}${$})`}else l?t+=`const ${s} = Type('${o}', ${l})`:t+=`const ${s} = Type('${o}')`;n=b;continue}else if(l){t+=`const ${s} = Type('${o}', ${l})`,n=u;continue}else if(!c){let f=e.slice(i).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(f){let m=f[0];t+=`const ${s} = Type('${s}', ${m})`,n=i+f[0].length;continue}}}t+=e[n],n++}return t}function Xr(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bFunctionPredicate\s+([A-Z_][a-zA-Z0-9_]*)\s*(?:<([^>]+)>)?\s*/);if(r){let s=r[1],i=r[2],o=n+r[0].length;if(e[o]==="{"){let a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;if(a===0){let l=e.slice(o+1,c-1).trim(),u=Ji(l,/params\s*:\s*\{/),p=l.match(/returns\s*:\s*(.+?)(?:\n|$)/),f=l.match(/returnContract\s*:\s*['"](\w+)['"]/),m=l.match(/description\s*:\s*(['"])([^]*?)\1/),d=[];u&&d.push(`params: ${u[1]}`),p&&d.push(`returns: ${p[1].trim()}`),f&&d.push(`returnContract: '${f[1]}'`);let y=m?m[2]:s;if(i){let b=i.split(",").map(E=>{let T=E.trim().split("=").map(x=>x.trim());if(T.length===2){let x=T[1]==="any"||T[1]==="undefined"?"null":T[1];return`['${T[0]}', ${x}]`}return`'${T[0]}'`}),w=i.split(",").map(E=>E.trim().split("=")[0].trim());t+=`const ${s} = FunctionPredicate('${y}', [${b.join(", ")}], (${w.join(", ")}) => ({ ${d.join(", ")} }))`}else t+=`const ${s} = FunctionPredicate('${y}', { ${d.join(", ")} })`;n=c;continue}}if(e[o]==="("){let a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="("?a++:e[c]===")"&&a--,c++;if(a===0){let l=e.slice(o+1,c-1).trim(),u=l.indexOf(",");if(u!==-1){let p=l.slice(0,u).trim(),f=l.slice(u+1).trim();t+=`const ${s} = FunctionPredicate(${f}, ${p})`}else t+=`const ${s} = FunctionPredicate('${s}', ${l})`;n=c;continue}}}t+=e[n],n++}return t}function Qr(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(r){let s=r[1],i=r[2],a=n+r[0].length-1+1,c=1,l=a;for(;l<e.length&&c>0;){let E=e[l];E==="{"?c++:E==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),p=l,f=i.split(",").map(E=>{let T=E.trim().split("=").map(x=>x.trim());if(T.length===2){let x=T[1]==="any"||T[1]==="undefined"?"null":T[1];return`['${T[0]}', ${x}]`}return`'${T[0]}'`}),m=u,d=m.search(/\bdeclaration\s*\{/);if(d!==-1){let E=m.indexOf("{",d),T=1,x=E+1;for(;x<m.length&&T>0;)m[x]==="{"?T++:m[x]==="}"&&T--,x++;m=m.slice(0,d)+m.slice(x)}let y=m.match(/description\s*:\s*(['"`])([^]*?)\1/),b=m.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),w=y?y[2]:s;if(b){let E=b[1].trim().split(",").map(j=>j.trim()),T=b[2].trim(),x=E[0]||"x",$=E.slice(1),_=$.map(j=>`check${j}`);$.forEach((j,A)=>{T=T.replace(new RegExp(`\\b${j}\\s*\\(`,"g"),`${_[A]}(`)}),t+=`const ${s} = Generic([${f.join(", ")}], (${x}, ${_.join(", ")}) => { ${T} }, '${w}')`}else t+=`const ${s} = Generic([${f.join(", ")}], () => true, '${w}')`;n=p;continue}t+=e[n],n++}return t}function es(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(r){let s=r[1],i=r[3],o=n+r[0].length;if(e[o]==="{"){let a=o+1,c=1,l=a;for(;l<e.length&&c>0;){let m=e[l];m==="{"?c++:m==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),p=l,f=Vr(u);t+=`const ${s} = Union('${i}', [${f.join(", ")}])`,n=p;continue}else{let a=e.indexOf(`
11
- `,o);a===-1&&(a=e.length);let c=e.slice(o,a).trim();if(c){let l=Vr(c);t+=`const ${s} = Union('${i}', [${l.join(", ")}])`,n=a;continue}}}t+=e[n],n++}return t}function Vr(e){let t=[],n=e.split("|").map(r=>r.trim());for(let r of n)r&&t.push(r);return t}function ts(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(r){let s=r[1],i=r[3],a=n+r[0].length-1+1,c=1,l=a;for(;l<e.length&&c>0;){let d=e[l];d==="{"?c++:d==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),p=l,m=Zi(u).map(([d,y])=>`${d}: ${y}`).join(", ");t+=`const ${s} = Enum('${i}', { ${m} })`,n=p;continue}t+=e[n],n++}return t}function Zi(e){let t=[],n=0,r=e.split(/[\n,]/).map(s=>s.trim()).filter(s=>s&&!s.startsWith("//"));for(let s of r){let i=s.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*(?:=\s*(.+))?$/);if(i){let o=i[1],a=i[2]?.trim();if(a!==void 0){t.push([o,a]);let c=Number(a);isNaN(c)||(n=c+1)}else t.push([o,String(n)]),n++}}return t}function ns(e){let t=new Map,n="",r=0;for(;r<e.length;){let s=e.slice(r),i=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/);if(!i){if(r===0||e[r-1]===`
12
- `||e[r-1]===";"||e[r-1]==="}"){let T=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}n+=e[r],r++;continue}let o=i[1],a=i[2],c=r+i[0].length-1,l=mt(e,c),u=e.slice(c+1,l-1).trim(),p=[],f=0,m=e.slice(c+1,l-1);for(;f<m.length;){let T=m.slice(f).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!T){f++;continue}let x=T[1],$=!!T[2],_=T[3],j=f+T[0].length-1,A=1,k=j+1;for(;k<m.length&&A>0;)m[k]==="("&&A++,m[k]===")"&&A--,k++;let R=m.slice(j+1,k-1),M=k;for(;M<m.length&&/\s/.test(m[M]);)M++;if(m[M]==="="&&m[M+1]===">"){let H=pt(e,c+1+f);throw new ie(`Arrow functions are not allowed in extend blocks (method '${_}' in extend ${a}). Use regular function syntax instead, as extension methods need 'this' binding.`,H)}if(m[M]!=="{"){f++;continue}let P=mt(m,M),v=m.slice(f,P).trim(),I=R.split(",").map(H=>H.trim()).filter(H=>H.length>0).map(H=>{let se=H.match(/^(\w+)\s*:\s*(.+)$/);return se?`${se[1]} = ${se[2]}`:H}).join(", "),L=$?"async ":"",F=m.slice(M+1,P-1);p.push({name:_,isAsync:$,fullText:`${_}: ${L}function(${I}) {${F}}`}),f=P}let d=!t.has(a);d&&t.set(a,new Set);let y=t.get(a);for(let E of p)y.add(E.name);let b=p.map(E=>` ${E.fullText}`).join(`,
5
+ `)}function uo(e){let t=[],n=0,r="normal",s=[];for(;n<e.length;){let o=e[n],a=e[n+1];switch(r){case"single-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==="'"&&(r="normal"),n++;continue;case"double-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==='"'&&(r="normal"),n++;continue;case"template-string":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="$"&&a==="{"){n+=2,s.push(1),r="normal";continue}o==="`"&&(r="normal"),n++;continue;case"line-comment":o===`
6
+ `&&(r="normal"),n++;continue;case"block-comment":if(o==="*"&&a==="/"){n+=2,r="normal";continue}n++;continue;case"regex":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="["){for(n++;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n+1<e.length?n+=2:n++;n<e.length&&n++;continue}if(o==="/"){for(n++;n<e.length&&/[gimsuy]/.test(e[n]);)n++;r="normal";continue}n++;continue;case"normal":if(s.length>0){if(o==="{")s[s.length-1]++;else if(o==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),n++,r="template-string";continue}}if(o==="'"){n++,r="single-string";continue}if(o==='"'){n++,r="double-string";continue}if(o==="`"){n++,r="template-string";continue}if(o==="/"&&a==="/"){n+=2,r="line-comment";continue}if(o==="/"&&a==="*"){n+=2,r="block-comment";continue}if(o==="/"){let c=n-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){n++,r="regex";continue}}if(o==="t"&&e.slice(n,n+6)==="typeof"&&(n===0||!/[\w$]/.test(e[n-1]))&&/\s/.test(e[n+6]??"")){let c=n+6;for(;c<e.length&&/\s/.test(e[c]);)c++;if(c<e.length&&/[a-zA-Z_$]/.test(e[c])){let l=c;for(;c<e.length&&/[\w$]/.test(e[c]);)c++;for(;c<e.length;)if(e[c]==="."&&/[a-zA-Z_$]/.test(e[c+1]??""))for(c++;c<e.length&&/[\w$]/.test(e[c]);)c++;else if(e[c]==="?"&&e[c+1]==="."&&/[a-zA-Z_$]/.test(e[c+2]??""))for(c+=2;c<e.length&&/[\w$]/.test(e[c]);)c++;else break;t.push({keywordStart:n,operandEnd:c,operand:e.slice(l,c)}),n=c;continue}}break}n++}if(t.length===0)return e;let i=e;for(let o=t.length-1;o>=0;o--){let a=t[o];i=i.slice(0,a.keywordStart)+`TypeOf(${a.operand})`+i.slice(a.operandEnd)}return i}function ht(e){e=uo(e);let t=[],n=0,r="normal",s=[];for(;n<e.length;){let o=e[n],a=e[n+1];switch(r){case"single-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==="'"&&(r="normal"),n++;continue;case"double-string":if(o==="\\"&&n+1<e.length){n+=2;continue}o==='"'&&(r="normal"),n++;continue;case"template-string":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="$"&&a==="{"){n+=2,s.push(1),r="normal";continue}o==="`"&&(r="normal"),n++;continue;case"line-comment":o===`
7
+ `&&(r="normal"),n++;continue;case"block-comment":if(o==="*"&&a==="/"){n+=2,r="normal";continue}n++;continue;case"regex":if(o==="\\"&&n+1<e.length){n+=2;continue}if(o==="["){for(n++;n<e.length&&e[n]!=="]";)e[n]==="\\"&&n+1<e.length?n+=2:n++;n<e.length&&n++;continue}if(o==="/"){for(n++;n<e.length&&/[gimsuy]/.test(e[n]);)n++;r="normal";continue}n++;continue;case"normal":if(s.length>0){if(o==="{")s[s.length-1]++;else if(o==="}"&&(s[s.length-1]--,s[s.length-1]===0)){s.pop(),n++,r="template-string";continue}}if(o==="'"){n++,r="single-string";continue}if(o==='"'){n++,r="double-string";continue}if(o==="`"){n++,r="template-string";continue}if(o==="/"&&a==="/"){n+=2,r="line-comment";continue}if(o==="/"&&a==="*"){n+=2,r="block-comment";continue}if(o==="/"){let c=n-1;for(;c>=0&&/\s/.test(e[c]);)c--;let l=c>=0?e[c]:"";if(!l||/[=(!,;:{[&|?+\-*%<>~^]/.test(l)||c>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,c-10),c+1))){n++,r="regex";continue}}if(o==="="&&a==="="&&e[n+2]!=="="&&e[n-1]!=="!"){t.push({pos:n,op:"=="}),n+=2;continue}if(o==="!"&&a==="="&&e[n+2]!=="="){t.push({pos:n,op:"!="}),n+=2;continue}break}n++}if(t.length===0)return e;let i=e;for(let o=t.length-1;o>=0;o--){let{pos:a,op:c}=t[o],l=c==="=="?"Eq":"NotEq",u=fo(i,a),p=po(i,a+2),f=i.slice(u,a).trim(),m=i.slice(a+2,p).trim();if(f&&m){let d=i.slice(0,u),y=i.slice(p),w=/[a-zA-Z0-9_$]$/.test(d)?" ":"";i=`${d}${w}${l}(${f}, ${m})${y}`}}return i}function fo(e,t){let n=t-1;for(;n>=0&&/\s/.test(e[n]);)n--;if(n<0)return 0;let r=0,s=!1,i="";for(;n>=0;){let o=e[n],a=n>0?e[n-1]:"";if(s){o===i&&a!=="\\"&&(s=!1),n--;continue}if((o==='"'||o==="'"||o==="`")&&a!=="\\"){s=!0,i=o,n--;continue}if(o===")"||o==="]"||o==="}"){r++,n--;continue}if(o==="("||o==="["){if(r>0){r--,n--;continue}return n+1}if(o==="{"){if(r>0){r--,n--;continue}return n+1}if(r>0){n--;continue}if(o===";")return n+1;if(/[a-z]/.test(o)){let c=n+1,l=n;for(;l>0&&/[a-z]/i.test(e[l-1]);)l--;let u=e.slice(l,c),p=l>0?e[l-1]:"";if(!/[a-zA-Z0-9_$]/.test(p)){if(["return","throw","case","typeof","void","delete","await","yield"].includes(u))return c;if(u==="new")return l}}if(o===">"&&a==="="||o==="="&&a!=="="&&a!=="!"&&a!=="<"&&a!==">"||o==="&"&&a==="&"||o==="|"&&a==="|"||o==="?"||o===":"||o===",")return n+1;n--}return 0}function po(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)return e.length;let r=0,s=!1,i="";for(;n<e.length;){let o=e[n],a=n+1<e.length?e[n+1]:"";if(s){o===i&&e[n-1]!=="\\"&&(s=!1),n++;continue}if((o==='"'||o==="'"||o==="`")&&e[n-1]!=="\\"){s=!0,i=o,n++;continue}if(o==="("||o==="["||o==="{"){r++,n++;continue}if(o===")"||o==="]"||o==="}"){if(r>0){r--,n++;continue}return n}if(r>0){n++;continue}if(o===";"||o==="&"&&a==="&"||o==="|"&&a==="|"||o==="?"||o===":"||o===","||(o==="="||o==="!")&&a==="="&&e[n+2]!=="=")return n;n++}return e.length}function rs(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(r){let s=r[1],i=n+r[0].length,o=s,a=!1,c=e.slice(i).match(/^(['"`])([^]*?)\1\s*/);if(c){let f=i+c[0].length,m=e[f],d=m===void 0||f>=e.length||m!=="="&&m!=="{";if(m==="="||m==="{")o=c[2],a=!0,i=f;else if(d){let y=c[0].trim(),b=c[0].slice(y.length);t+=`const ${s} = Type('${s}', ${y})${b}`,n=f;continue}}let l,u=i,p=e.slice(i).match(/^=\s*/);if(p){i+=p[0].length;let f=e.slice(i).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(f){l=f[0],i+=f[0].length,u=i;let m=e.slice(i).match(/^\s*/);m&&(i+=m[0].length)}}if(e[i]==="{"){let f=i+1,m=1,d=f;for(;d<e.length&&m>0;){let _=e[d];_==="{"?m++:_==="}"&&m--,d++}if(m!==0){t+=e[n],n++;continue}let y=e.slice(f,d-1).trim(),b=d,w=y.match(/description\s*:\s*(['"`])([^]*?)\1/);w&&!a&&(o=w[2]);let S,T=y.match(/example\s*:\s*/);if(T){let _=T.index+T[0].length,$=Ss(y,_);$&&(S=$.value.trim())}let x=y.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(x&&S){let _=x[1].trim(),$=x[2].trim(),k=l?`, ${l}`:"";t+=`const ${s} = Type('${o}', (${_}) => { if (!globalThis.__tjs?.validate(${_}, globalThis.__tjs?.infer(${S}))) return false; ${$} }, ${S}${k})`}else if(x){let _=x[1].trim(),$=x[2].trim(),k=l?`, undefined, ${l}`:"";t+=`const ${s} = Type('${o}', (${_}) => { ${$} }${k})`}else if(S){let _=l?`, ${l}`:"";t+=`const ${s} = Type('${o}', undefined, ${S}${_})`}else l?t+=`const ${s} = Type('${o}', ${l})`:t+=`const ${s} = Type('${o}')`;n=b;continue}else if(l){t+=`const ${s} = Type('${o}', ${l})`,n=u;continue}else if(!c){let f=e.slice(i).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(f){let m=f[0];t+=`const ${s} = Type('${s}', ${m})`,n=i+f[0].length;continue}}}t+=e[n],n++}return t}function ss(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bFunctionPredicate\s+([A-Z_][a-zA-Z0-9_]*)\s*(?:<([^>]+)>)?\s*/);if(r){let s=r[1],i=r[2],o=n+r[0].length;if(e[o]==="{"){let a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;if(a===0){let l=e.slice(o+1,c-1).trim(),u=oo(l,/params\s*:\s*\{/),p=l.match(/returns\s*:\s*(.+?)(?:\n|$)/),f=l.match(/returnContract\s*:\s*['"](\w+)['"]/),m=l.match(/description\s*:\s*(['"])([^]*?)\1/),d=[];u&&d.push(`params: ${u[1]}`),p&&d.push(`returns: ${p[1].trim()}`),f&&d.push(`returnContract: '${f[1]}'`);let y=m?m[2]:s;if(i){let b=i.split(",").map(S=>{let T=S.trim().split("=").map(x=>x.trim());if(T.length===2){let x=T[1]==="any"||T[1]==="undefined"?"null":T[1];return`['${T[0]}', ${x}]`}return`'${T[0]}'`}),w=i.split(",").map(S=>S.trim().split("=")[0].trim());t+=`const ${s} = FunctionPredicate('${y}', [${b.join(", ")}], (${w.join(", ")}) => ({ ${d.join(", ")} }))`}else t+=`const ${s} = FunctionPredicate('${y}', { ${d.join(", ")} })`;n=c;continue}}if(e[o]==="("){let a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="("?a++:e[c]===")"&&a--,c++;if(a===0){let l=e.slice(o+1,c-1).trim(),u=l.indexOf(",");if(u!==-1){let p=l.slice(0,u).trim(),f=l.slice(u+1).trim();t+=`const ${s} = FunctionPredicate(${f}, ${p})`}else t+=`const ${s} = FunctionPredicate('${s}', ${l})`;n=c;continue}}}t+=e[n],n++}return t}function is(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(r){let s=r[1],i=r[2],a=n+r[0].length-1+1,c=1,l=a;for(;l<e.length&&c>0;){let S=e[l];S==="{"?c++:S==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),p=l,f=i.split(",").map(S=>{let T=S.trim().split("=").map(x=>x.trim());if(T.length===2){let x=T[1]==="any"||T[1]==="undefined"?"null":T[1];return`['${T[0]}', ${x}]`}return`'${T[0]}'`}),m=u,d=m.search(/\bdeclaration\s*\{/);if(d!==-1){let S=m.indexOf("{",d),T=1,x=S+1;for(;x<m.length&&T>0;)m[x]==="{"?T++:m[x]==="}"&&T--,x++;m=m.slice(0,d)+m.slice(x)}let y=m.match(/description\s*:\s*(['"`])([^]*?)\1/),b=m.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),w=y?y[2]:s;if(b){let S=b[1].trim().split(",").map(k=>k.trim()),T=b[2].trim(),x=S[0]||"x",_=S.slice(1),$=_.map(k=>`check${k}`);_.forEach((k,A)=>{T=T.replace(new RegExp(`\\b${k}\\s*\\(`,"g"),`${$[A]}(`)}),t+=`const ${s} = Generic([${f.join(", ")}], (${x}, ${$.join(", ")}) => { ${T} }, '${w}')`}else t+=`const ${s} = Generic([${f.join(", ")}], () => true, '${w}')`;n=p;continue}t+=e[n],n++}return t}function os(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(r){let s=r[1],i=r[3],o=n+r[0].length;if(e[o]==="{"){let a=o+1,c=1,l=a;for(;l<e.length&&c>0;){let m=e[l];m==="{"?c++:m==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),p=l,f=Yr(u);t+=`const ${s} = Union('${i}', [${f.join(", ")}])`,n=p;continue}else{let a=e.indexOf(`
8
+ `,o);a===-1&&(a=e.length);let c=e.slice(o,a).trim();if(c){let l=Yr(c);t+=`const ${s} = Union('${i}', [${l.join(", ")}])`,n=a;continue}}}t+=e[n],n++}return t}function Yr(e){let t=[],n=e.split("|").map(r=>r.trim());for(let r of n)r&&t.push(r);return t}function as(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(r){let s=r[1],i=r[3],a=n+r[0].length-1+1,c=1,l=a;for(;l<e.length&&c>0;){let d=e[l];d==="{"?c++:d==="}"&&c--,l++}if(c!==0){t+=e[n],n++;continue}let u=e.slice(a,l-1).trim(),p=l,m=mo(u).map(([d,y])=>`${d}: ${y}`).join(", ");t+=`const ${s} = Enum('${i}', { ${m} })`,n=p;continue}t+=e[n],n++}return t}function mo(e){let t=[],n=0,r=e.split(/[\n,]/).map(s=>s.trim()).filter(s=>s&&!s.startsWith("//"));for(let s of r){let i=s.match(/^([A-Za-z_][A-Za-z0-9_]*)\s*(?:=\s*(.+))?$/);if(i){let o=i[1],a=i[2]?.trim();if(a!==void 0){t.push([o,a]);let c=Number(a);isNaN(c)||(n=c+1)}else t.push([o,String(n)]),n++}}return t}function cs(e){let t=new Map,n="",r=0;for(;r<e.length;){let s=e.slice(r),i=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/);if(!i){if(r===0||e[r-1]===`
9
+ `||e[r-1]===";"||e[r-1]==="}"){let T=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}n+=e[r],r++;continue}let o=i[1],a=i[2],c=r+i[0].length-1,l=yt(e,c),u=e.slice(c+1,l-1).trim(),p=[],f=0,m=e.slice(c+1,l-1);for(;f<m.length;){let T=m.slice(f).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!T){f++;continue}let x=T[1],_=!!T[2],$=T[3],k=f+T[0].length-1,A=1,j=k+1;for(;j<m.length&&A>0;)m[j]==="("&&A++,m[j]===")"&&A--,j++;let N=m.slice(k+1,j-1),M=j;for(;M<m.length&&/\s/.test(m[M]);)M++;if(m[M]==="="&&m[M+1]===">"){let G=Ce(e,c+1+f);throw new ne(`Arrow functions are not allowed in extend blocks (method '${$}' in extend ${a}). Use regular function syntax instead, as extension methods need 'this' binding.`,G)}if(m[M]!=="{"){f++;continue}let P=yt(m,M),v=m.slice(f,P).trim(),I=N.split(",").map(G=>G.trim()).filter(G=>G.length>0).map(G=>{let ae=G.match(/^(\w+)\s*:\s*(.+)$/);return ae?`${ae[1]} = ${ae[2]}`:G}).join(", "),B=_?"async ":"",F=m.slice(M+1,P-1);p.push({name:$,isAsync:_,fullText:`${$}: ${B}function(${I}) {${F}}`}),f=P}let d=!t.has(a);d&&t.set(a,new Set);let y=t.get(a);for(let S of p)y.add(S.name);let b=p.map(S=>` ${S.fullText}`).join(`,
13
10
  `),w;d?w=`${o}const __ext_${a} = {
14
11
  ${b}
15
12
  ${o}}
16
13
  `:w=`${o}Object.assign(__ext_${a}, {
17
14
  ${b}
18
15
  ${o}})
19
- `;for(let E of p)w+=`${o}if (__tjs?.registerExtension) { __tjs.registerExtension('${a}', '${E.name}', __ext_${a}.${E.name}) }
20
- `;n+=w,r=l}return r<=e.length&&n.length<e.length,{source:n,extensions:t}}function gt(e,t){if(t.size===0)return e;let n=new Map;for(let[s,i]of t)for(let o of i)n.has(o)||n.set(o,[]),n.get(o).push(s);let r=e;for(let[s,i]of n){if(!i.includes("String"))continue;let o=new RegExp(`('(?:[^'\\\\]|\\\\.)*')\\.(${s})\\((\\))?`,"g");r=r.replace(o,(l,u,p,f)=>f?`__ext_String.${p}.call(${u})`:`__ext_String.${p}.call(${u}, `);let a=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${s})\\((\\))?`,"g");r=r.replace(a,(l,u,p,f)=>f?`__ext_String.${p}.call(${u})`:`__ext_String.${p}.call(${u}, `);let c=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+s+"\\((\\))?","g");r=r.replace(c,(l,u,p)=>p?`__ext_String.${s}.call(${u})`:`__ext_String.${s}.call(${u}, `)}for(let[s,i]of n){if(!i.includes("Array"))continue;let o=`].${s}(`,a=0,c;for(;(c=r.indexOf(o,a))!==-1;){let l=1,u=c-1,p=!1;for(;u>=0&&l>0;){let f=r[u];p?f===p&&(u===0||r[u-1]!=="\\")&&(p=!1):(f==="]"&&l++,f==="["&&l--,(f==="'"||f==='"'||f==="`")&&(p=f)),u--}if(l===0){let f=r.slice(u+1,c+1),m=r.slice(0,u+1),d=r.slice(c+o.length);d[0]===")"?r=`${m}__ext_Array.${s}.call(${f})${d.slice(1)}`:r=`${m}__ext_Array.${s}.call(${f}, ${d}`}a=c+1}}for(let[s,i]of n){if(!i.includes("Number"))continue;let o=new RegExp(`(\\d+(?:\\.\\d+)?)\\.(${s})\\((\\))?`,"g");r=r.replace(o,(a,c,l,u)=>u?`__ext_Number.${l}.call(${c})`:`__ext_Number.${l}.call(${c}, `)}return r}function pt(e,t){let n=1,r=0;for(let s=0;s<t&&s<e.length;s++)e[s]===`
21
- `?(n++,r=0):r++;return{line:n,column:r}}function rs(e,t){let n=t.trim();return/^['"`]/.test(n)?`typeof ${e} === 'string'`:n==="true"||n==="false"?`typeof ${e} === 'boolean'`:n==="null"?`${e} === null`:n==="undefined"?`${e} === undefined`:n.startsWith("[")?`Array.isArray(${e})`:n.startsWith("{")?`(typeof ${e} === 'object' && ${e} !== null && !Array.isArray(${e}))`:/^\+\d+/.test(n)?`(typeof ${e} === 'number' && Number.isInteger(${e}) && ${e} >= 0)`:/^-?\d+\.\d+/.test(n)?`typeof ${e} === 'number'`:/^-?\d+$/.test(n)?`(typeof ${e} === 'number' && Number.isInteger(${e}))`:"true"}function Jt(e){let t=e.trim();return/^['"`]/.test(t)?"string":t==="true"||t==="false"?"boolean":t==="null"?"null":t==="undefined"?"undefined":t.startsWith("[")?"array":t.startsWith("{")?"object":/^\+\d+/.test(t)?"non-negative-integer":/^-?\d+\.\d+/.test(t)?"number":/^-?\d+$/.test(t)?"integer":"any"}function zn(e,t){let n=[],r=0,s="",i=!1;for(let a=0;a<e.length;a++){let c=e[a];if(!i&&(c==="'"||c==='"'||c==="`")){i=c,s+=c;continue}if(i){if(s+=c,c==="\\"){a++,a<e.length&&(s+=e[a]);continue}c===i&&(i=!1);continue}if(c==="("||c==="["||c==="{"){r++,s+=c;continue}if(c===")"||c==="]"||c==="}"){r--,s+=c;continue}if(c===","&&r===0){let l=Kr(s.trim(),t);l&&n.push(l),s="";continue}s+=c}let o=s.trim();if(o){let a=Kr(o,t);a&&n.push(a)}return n}function Kr(e,t){let n=e.replace(/^\/\*\s*unsafe\s*\*\/\s*/,"");if(n.startsWith("..."))return null;let r=n.indexOf("=");if(r===-1)return{name:n.trim(),defaultValue:"",required:!0};let s=n.slice(0,r).trim(),i=n.slice(r+1).trim();return{name:s,defaultValue:i,required:t.has(s)}}function mt(e,t){let n=1,r=t+1,s=!1,i=!1,o=!1;for(;r<e.length&&n>0;){let a=e[r],c=r+1<e.length?e[r+1]:"";if(i){a===`
22
- `&&(i=!1),r++;continue}if(o){if(a==="*"&&c==="/"){o=!1,r+=2;continue}r++;continue}if(s){if(a==="\\"){r+=2;continue}a===s&&(s=!1),r++;continue}if(a==="/"&&c==="/"){i=!0,r+=2;continue}if(a==="/"&&c==="*"){o=!0,r+=2;continue}if(a==="'"||a==='"'||a==="`"){s=a,r++;continue}a==="{"&&n++,a==="}"&&n--,r++}return r}function ss(e,t){let n=new Set,r=/(?:^|(?<=[\n;{}]))\s*(export\s+)?(async\s+)?function\s+(\w+)\s*\(/gm,s=new Map,i,o=[];for(;(i=r.exec(e))!==null;){let p=!!i[1],f=!!i[2],m=i[3],d=i.index,y=d,w=i[0].indexOf("function");w>=0&&(y=d+w),o.push({name:m,fullMatchStart:d,funcKeywordStart:y,exported:p,isAsync:f})}for(let p of o)s.has(p.name)||s.set(p.name,[]);let a=new Map;for(let p of o)a.set(p.name,(a.get(p.name)||0)+1);let c=new Set;for(let[p,f]of a)f>1&&c.add(p);if(c.size===0)return{source:e,polymorphicNames:n};for(let p of o){if(!c.has(p.name))continue;let f=e.indexOf("(",p.funcKeywordStart);if(f===-1)continue;let m=1,d=f+1;for(;d<e.length&&m>0;)e[d]==="("&&m++,e[d]===")"&&m--,d++;let y=d-1,b=e.slice(f+1,y),w=d;for(;w<e.length&&e[w]!=="{";)w++;if(w>=e.length)continue;let E=mt(e,w),T=p.fullMatchStart;for(;T>0&&e[T-1]===" ";)T--;let x=s.get(p.name),$=zn(b,t);if(b.includes("...")){let j=pt(e,p.funcKeywordStart);throw new ie(`Rest parameters are not supported in polymorphic function '${p.name}'. Use separate function names instead.`,j)}x.push({index:x.length+1,start:T,end:E,text:e.slice(T,E),exported:p.exported,isAsync:p.isAsync,params:$})}for(let[p,f]of s){if(f.length<2)continue;let m=f.filter(d=>d.isAsync).length;if(m>0&&m<f.length){let d=pt(e,f[0].start);throw new ie(`Polymorphic function '${p}': all variants must be either sync or async, not mixed.`,d)}for(let d=0;d<f.length;d++)for(let y=d+1;y<f.length;y++){let b=f[d],w=f[y];if(b.params.length!==w.params.length)continue;let E=!0;for(let T=0;T<b.params.length;T++){let x=b.params[T].defaultValue?Jt(b.params[T].defaultValue):"any",$=w.params[T].defaultValue?Jt(w.params[T].defaultValue):"any";if(x!==$){E=!1;break}}if(E){let T=pt(e,w.start);throw new ie(`Polymorphic function '${p}': variants ${d+1} and ${y+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,T)}}}let l=[];for(let[p,f]of s)if(!(f.length<2))for(let m of f)l.push({name:p,variant:m});l.sort((p,f)=>f.variant.start-p.variant.start);let u=e;for(let{name:p,variant:f}of l){let m=f.isAsync?"async ":"",d=f.text.replace(new RegExp(`(?:export\\s+)?${m?m.replace(/\s+$/,"\\s+"):""}function\\s+${p}\\s*\\(`),`${m}function ${p}$$${f.index}(`);u=u.slice(0,f.start)+d+u.slice(f.end)}for(let[p,f]of s){if(f.length<2)continue;n.add(p);let m=f[0].isAsync,d=f.some(x=>x.exported),y=m?"async ":"",b=d?"export ":"",w=[...f].sort((x,$)=>{if(x.params.length!==$.params.length)return 0;let _=0,j=0;for(let A of x.params){let k=A.defaultValue?Jt(A.defaultValue):"any";k==="non-negative-integer"?_+=3:k==="integer"?_+=2:k!=="any"&&(_+=1)}for(let A of $.params){let k=A.defaultValue?Jt(A.defaultValue):"any";k==="non-negative-integer"?j+=3:k==="integer"?j+=2:k!=="any"&&(j+=1)}return j-_}),E=[];for(let x of w){let $=[`__args.length === ${x.params.length}`],_=[];for(let j=0;j<x.params.length;j++){let A=x.params[j];if(_.push(`__args[${j}]`),A.defaultValue){let k=rs(`__args[${j}]`,A.defaultValue);k!=="true"&&$.push(k)}}E.push(` if (${$.join(" && ")}) return ${p}$${x.index}(${_.join(", ")})`)}let T=`
16
+ `;for(let S of p)w+=`${o}if (__tjs?.registerExtension) { __tjs.registerExtension('${a}', '${S.name}', __ext_${a}.${S.name}) }
17
+ `;n+=w,r=l}return r<=e.length&&n.length<e.length,{source:n,extensions:t}}function bt(e,t){if(t.size===0)return e;let n=new Map;for(let[s,i]of t)for(let o of i)n.has(o)||n.set(o,[]),n.get(o).push(s);let r=e;for(let[s,i]of n){if(!i.includes("String"))continue;let o=new RegExp(`('(?:[^'\\\\]|\\\\.)*')\\.(${s})\\((\\))?`,"g");r=r.replace(o,(l,u,p,f)=>f?`__ext_String.${p}.call(${u})`:`__ext_String.${p}.call(${u}, `);let a=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${s})\\((\\))?`,"g");r=r.replace(a,(l,u,p,f)=>f?`__ext_String.${p}.call(${u})`:`__ext_String.${p}.call(${u}, `);let c=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+s+"\\((\\))?","g");r=r.replace(c,(l,u,p)=>p?`__ext_String.${s}.call(${u})`:`__ext_String.${s}.call(${u}, `)}for(let[s,i]of n){if(!i.includes("Array"))continue;let o=`].${s}(`,a=0,c;for(;(c=r.indexOf(o,a))!==-1;){let l=1,u=c-1,p=!1;for(;u>=0&&l>0;){let f=r[u];p?f===p&&(u===0||r[u-1]!=="\\")&&(p=!1):(f==="]"&&l++,f==="["&&l--,(f==="'"||f==='"'||f==="`")&&(p=f)),u--}if(l===0){let f=r.slice(u+1,c+1),m=r.slice(0,u+1),d=r.slice(c+o.length);d[0]===")"?r=`${m}__ext_Array.${s}.call(${f})${d.slice(1)}`:r=`${m}__ext_Array.${s}.call(${f}, ${d}`}a=c+1}}for(let[s,i]of n){if(!i.includes("Number"))continue;let o=new RegExp(`(\\d+(?:\\.\\d+)?)\\.(${s})\\((\\))?`,"g");r=r.replace(o,(a,c,l,u)=>u?`__ext_Number.${l}.call(${c})`:`__ext_Number.${l}.call(${c}, `)}return r}function Ce(e,t){let n=1,r=0;for(let s=0;s<t&&s<e.length;s++)e[s]===`
18
+ `?(n++,r=0):r++;return{line:n,column:r}}function ls(e,t){let n=t.trim();return/^['"`]/.test(n)?`typeof ${e} === 'string'`:n==="true"||n==="false"?`typeof ${e} === 'boolean'`:n==="null"?`${e} === null`:n==="undefined"?`${e} === undefined`:n.startsWith("[")?`Array.isArray(${e})`:n.startsWith("{")?`(typeof ${e} === 'object' && ${e} !== null && !Array.isArray(${e}))`:/^\+\d+/.test(n)?`(typeof ${e} === 'number' && Number.isInteger(${e}) && ${e} >= 0)`:/^-?\d+\.\d+/.test(n)?`typeof ${e} === 'number'`:/^-?\d+$/.test(n)?`(typeof ${e} === 'number' && Number.isInteger(${e}))`:"true"}function Jt(e){let t=e.trim();return/^['"`]/.test(t)?"string":t==="true"||t==="false"?"boolean":t==="null"?"null":t==="undefined"?"undefined":t.startsWith("[")?"array":t.startsWith("{")?"object":/^\+\d+/.test(t)?"non-negative-integer":/^-?\d+\.\d+/.test(t)?"number":/^-?\d+$/.test(t)?"integer":"any"}function Yn(e,t){let n=[],r=0,s="",i=!1;for(let a=0;a<e.length;a++){let c=e[a];if(!i&&(c==="'"||c==='"'||c==="`")){i=c,s+=c;continue}if(i){if(s+=c,c==="\\"){a++,a<e.length&&(s+=e[a]);continue}c===i&&(i=!1);continue}if(c==="("||c==="["||c==="{"){r++,s+=c;continue}if(c===")"||c==="]"||c==="}"){r--,s+=c;continue}if(c===","&&r===0){let l=Xr(s.trim(),t);l&&n.push(l),s="";continue}s+=c}let o=s.trim();if(o){let a=Xr(o,t);a&&n.push(a)}return n}function Xr(e,t){let n=e.replace(/^\/\*\s*unsafe\s*\*\/\s*/,"");if(n.startsWith("..."))return null;let r=n.indexOf("=");if(r===-1)return{name:n.trim(),defaultValue:"",required:!0};let s=n.slice(0,r).trim(),i=n.slice(r+1).trim();return{name:s,defaultValue:i,required:t.has(s)}}function yt(e,t){let n=1,r=t+1,s=!1,i=!1,o=!1;for(;r<e.length&&n>0;){let a=e[r],c=r+1<e.length?e[r+1]:"";if(i){a===`
19
+ `&&(i=!1),r++;continue}if(o){if(a==="*"&&c==="/"){o=!1,r+=2;continue}r++;continue}if(s){if(a==="\\"){r+=2;continue}a===s&&(s=!1),r++;continue}if(a==="/"&&c==="/"){i=!0,r+=2;continue}if(a==="/"&&c==="*"){o=!0,r+=2;continue}if(a==="'"||a==='"'||a==="`"){s=a,r++;continue}a==="{"&&n++,a==="}"&&n--,r++}return r}function us(e,t){let n=new Set,r=/(?:^|(?<=[\n;{}]))\s*(export\s+)?(async\s+)?function\s+(\w+)\s*\(/gm,s=new Map,i,o=[];for(;(i=r.exec(e))!==null;){let p=!!i[1],f=!!i[2],m=i[3],d=i.index,y=d,w=i[0].indexOf("function");w>=0&&(y=d+w),o.push({name:m,fullMatchStart:d,funcKeywordStart:y,exported:p,isAsync:f})}for(let p of o)s.has(p.name)||s.set(p.name,[]);let a=new Map;for(let p of o)a.set(p.name,(a.get(p.name)||0)+1);let c=new Set;for(let[p,f]of a)f>1&&c.add(p);if(c.size===0)return{source:e,polymorphicNames:n};for(let p of o){if(!c.has(p.name))continue;let f=e.indexOf("(",p.funcKeywordStart);if(f===-1)continue;let m=1,d=f+1;for(;d<e.length&&m>0;)e[d]==="("&&m++,e[d]===")"&&m--,d++;let y=d-1,b=e.slice(f+1,y),w=d;for(;w<e.length&&e[w]!=="{";)w++;if(w>=e.length)continue;let S=yt(e,w),T=p.fullMatchStart;for(;T>0&&e[T-1]===" ";)T--;let x=s.get(p.name),_=Yn(b,t);if(b.includes("...")){let k=Ce(e,p.funcKeywordStart);throw new ne(`Rest parameters are not supported in polymorphic function '${p.name}'. Use separate function names instead.`,k)}x.push({index:x.length+1,start:T,end:S,text:e.slice(T,S),exported:p.exported,isAsync:p.isAsync,params:_})}for(let[p,f]of s){if(f.length<2)continue;let m=f.filter(d=>d.isAsync).length;if(m>0&&m<f.length){let d=Ce(e,f[0].start);throw new ne(`Polymorphic function '${p}': all variants must be either sync or async, not mixed.`,d)}for(let d=0;d<f.length;d++)for(let y=d+1;y<f.length;y++){let b=f[d],w=f[y];if(b.params.length!==w.params.length)continue;let S=!0;for(let T=0;T<b.params.length;T++){let x=b.params[T].defaultValue?Jt(b.params[T].defaultValue):"any",_=w.params[T].defaultValue?Jt(w.params[T].defaultValue):"any";if(x!==_){S=!1;break}}if(S){let T=Ce(e,w.start);throw new ne(`Polymorphic function '${p}': variants ${d+1} and ${y+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,T)}}}let l=[];for(let[p,f]of s)if(!(f.length<2))for(let m of f)l.push({name:p,variant:m});l.sort((p,f)=>f.variant.start-p.variant.start);let u=e;for(let{name:p,variant:f}of l){let m=f.isAsync?"async ":"",d=f.text.replace(new RegExp(`(?:export\\s+)?${m?m.replace(/\s+$/,"\\s+"):""}function\\s+${p}\\s*\\(`),`${m}function ${p}$$${f.index}(`);u=u.slice(0,f.start)+d+u.slice(f.end)}for(let[p,f]of s){if(f.length<2)continue;n.add(p);let m=f[0].isAsync,d=f.some(x=>x.exported),y=m?"async ":"",b=d?"export ":"",w=[...f].sort((x,_)=>{if(x.params.length!==_.params.length)return 0;let $=0,k=0;for(let A of x.params){let j=A.defaultValue?Jt(A.defaultValue):"any";j==="non-negative-integer"?$+=3:j==="integer"?$+=2:j!=="any"&&($+=1)}for(let A of _.params){let j=A.defaultValue?Jt(A.defaultValue):"any";j==="non-negative-integer"?k+=3:j==="integer"?k+=2:j!=="any"&&(k+=1)}return k-$}),S=[];for(let x of w){let _=[`__args.length === ${x.params.length}`],$=[];for(let k=0;k<x.params.length;k++){let A=x.params[k];if($.push(`__args[${k}]`),A.defaultValue){let j=ls(`__args[${k}]`,A.defaultValue);j!=="true"&&_.push(j)}}S.push(` if (${_.join(" && ")}) return ${p}$${x.index}(${$.join(", ")})`)}let T=`
23
20
  ${b}${y}function ${p}(...__args) {
24
- ${E.join(`
21
+ ${S.join(`
25
22
  `)}
26
23
  return __tjs.typeError('${p}', 'no matching overload', __args)
27
24
  }
28
- `;u+=T}return{source:u,polymorphicNames:n}}function is(e){return e.replace(/(?<=^|[;\n{])\s*([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(t,n)=>t.replace(n,`const ${n}`))}function os(e,t=!1){let n=[],r=[],s="",i=0;for(;i<e.length;){let o=e.slice(i).match(/^\btest\s+/);if(o){let a=i,c=i+o[0].length,l,u=e.slice(c).match(/^(['"`])([^]*?)\1\s*/);if(u&&(l=u[2],c+=u[0].length),e[c]==="{"){let p=c+1,f=1,m=p,d=null,y=!1;for(;m<e.length&&f>0;){let b=e[m];if(y){y=!1,m++;continue}if(b==="\\"&&d){y=!0,m++;continue}if(d){b===d&&(d=null),m++;continue}if(b==="/"&&e[m+1]==="/"){let w=e.indexOf(`
29
- `,m);m=w===-1?e.length:w+1;continue}if(b==="/"&&e[m+1]==="*"){let w=e.indexOf("*/",m+2);m=w===-1?e.length:w+2;continue}if(b==="'"||b==='"'||b==="`"){d=b,m++;continue}b==="{"?f++:b==="}"&&f--,m++}if(f===0){let b=e.slice(p,m-1).trim(),w=m,E=(e.slice(0,a).match(/\n/g)||[]).length+1;if(n.push({description:l,body:b,start:a,end:w,line:E}),!t)try{new Function(b)()}catch($){let _=l||`test at line ${E}`;r.push(`Test failed: ${_} (line ${E})
30
- ${$.message||$}`)}let x=(e.slice(a,w).match(/\n/g)||[]).length;s+=`
31
- `.repeat(x),i=w;continue}}}s+=e[i],i++}return{source:s,tests:n,errors:r}}function as(e,t){let n=new Set,r=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,s,i=[];for(;(s=r.exec(e))!==null;){let a=s[1],c=s[2]?.trim()||"",l=s.index+s[0].length-1,u=mt(e,l),p=e.slice(l,u);i.push({className:a,extendsClause:c,bodyStart:l,bodyEnd:u,body:p})}let o=e;for(let a=i.length-1;a>=0;a--){let{className:c,extendsClause:l,bodyStart:u,bodyEnd:p,body:f}=i[a],m=/\bconstructor\s*\(/g,d,y=[];for(;(d=m.exec(f))!==null;)y.push(d.index);if(y.length<2)continue;n.add(c);let b=[];for(let j=0;j<y.length;j++){let A=y[j],k=f.indexOf("(",A),R=1,M=k+1;for(;M<f.length&&R>0;)f[M]==="("&&R++,f[M]===")"&&R--,M++;let P=f.slice(k+1,M-1),v=M;for(;v<f.length&&f[v]!=="{";)v++;let I=mt(f,v),L=f.slice(v+1,I-1);b.push({index:j+1,paramStr:P,bodyText:L,fullStart:A,fullEnd:I})}let w=f.slice(0,b[0].fullEnd),E=b[b.length-1].fullEnd;w+=f.slice(E);let T=f;for(let j=b.length-1;j>=1;j--){let A=b[j],k=A.fullStart;for(;k>0&&T[k-1]===" ";)k--;k>0&&T[k-1]===`
32
- `&&k--,T=T.slice(0,k)+T.slice(A.fullEnd)}let x="";for(let j=1;j<b.length;j++){let A=b[j],k=zn(A.paramStr,t);if(A.paramStr.includes("...")){let M=pt(e,u+A.fullStart);throw new ie(`Rest parameters are not supported in polymorphic constructors for '${c}'.`,M)}x+=`
25
+ `;u+=T}return{source:u,polymorphicNames:n}}function fs(e){return e.replace(/(?<=^|[;\n{])\s*([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(t,n)=>t.replace(n,`const ${n}`))}function ps(e,t=!1){let n=[],r=[],s="",i=0;for(;i<e.length;){let o=e.slice(i).match(/^\btest\s+/);if(o){let a=i,c=i+o[0].length,l,u=e.slice(c).match(/^(['"`])([^]*?)\1\s*/);if(u&&(l=u[2],c+=u[0].length),e[c]==="{"){let p=c+1,f=1,m=p,d=null,y=!1;for(;m<e.length&&f>0;){let b=e[m];if(y){y=!1,m++;continue}if(b==="\\"&&d){y=!0,m++;continue}if(d){b===d&&(d=null),m++;continue}if(b==="/"&&e[m+1]==="/"){let w=e.indexOf(`
26
+ `,m);m=w===-1?e.length:w+1;continue}if(b==="/"&&e[m+1]==="*"){let w=e.indexOf("*/",m+2);m=w===-1?e.length:w+2;continue}if(b==="'"||b==='"'||b==="`"){d=b,m++;continue}b==="{"?f++:b==="}"&&f--,m++}if(f===0){let b=e.slice(p,m-1).trim(),w=m,S=(e.slice(0,a).match(/\n/g)||[]).length+1;if(n.push({description:l,body:b,start:a,end:w,line:S}),!t)try{new Function(b)()}catch(_){let $=l||`test at line ${S}`;r.push(`Test failed: ${$} (line ${S})
27
+ ${_.message||_}`)}let x=(e.slice(a,w).match(/\n/g)||[]).length;s+=`
28
+ `.repeat(x),i=w;continue}}}s+=e[i],i++}return{source:s,tests:n,errors:r}}function ms(e,t){let n=new Set,r=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,s,i=[];for(;(s=r.exec(e))!==null;){let a=s[1],c=s[2]?.trim()||"",l=s.index+s[0].length-1,u=yt(e,l),p=e.slice(l,u);i.push({className:a,extendsClause:c,bodyStart:l,bodyEnd:u,body:p})}let o=e;for(let a=i.length-1;a>=0;a--){let{className:c,extendsClause:l,bodyStart:u,bodyEnd:p,body:f}=i[a],m=/\bconstructor\s*\(/g,d,y=[];for(;(d=m.exec(f))!==null;)y.push(d.index);if(y.length<2)continue;n.add(c);let b=[];for(let k=0;k<y.length;k++){let A=y[k],j=f.indexOf("(",A),N=1,M=j+1;for(;M<f.length&&N>0;)f[M]==="("&&N++,f[M]===")"&&N--,M++;let P=f.slice(j+1,M-1),v=M;for(;v<f.length&&f[v]!=="{";)v++;let I=yt(f,v),B=f.slice(v+1,I-1);b.push({index:k+1,paramStr:P,bodyText:B,fullStart:A,fullEnd:I})}let w=f.slice(0,b[0].fullEnd),S=b[b.length-1].fullEnd;w+=f.slice(S);let T=f;for(let k=b.length-1;k>=1;k--){let A=b[k],j=A.fullStart;for(;j>0&&T[j-1]===" ";)j--;j>0&&T[j-1]===`
29
+ `&&j--,T=T.slice(0,j)+T.slice(A.fullEnd)}let x="";for(let k=1;k<b.length;k++){let A=b[k],j=Yn(A.paramStr,t);if(A.paramStr.includes("...")){let M=Ce(e,u+A.fullStart);throw new ne(`Rest parameters are not supported in polymorphic constructors for '${c}'.`,M)}x+=`
33
30
  function ${c}$ctor$${A.index}(${A.paramStr}) {`,x+=`
34
31
  const __obj = Object.create(${c}.prototype)`,x+=`
35
32
  ;(function() {${A.bodyText}}).call(__obj)`,x+=`
36
33
  return __obj`,x+=`
37
34
  }
38
- `}let $=[];for(let j=0;j<b.length;j++){let A=b[j],k=zn(A.paramStr,t),R=[`a.length === ${k.length}`];for(let M=0;M<k.length;M++){let P=k[M];if(P.defaultValue){let v=rs(`a[${M}]`,P.defaultValue);v!=="true"&&R.push(v)}}if(j===0)$.push(` if (${R.join(" && ")}) return Reflect.construct(t, a)`);else{let M=k.map((P,v)=>`a[${v}]`).join(", ");$.push(` if (${R.join(" && ")}) return ${c}$ctor$${A.index}(${M})`)}}x+=`
35
+ `}let _=[];for(let k=0;k<b.length;k++){let A=b[k],j=Yn(A.paramStr,t),N=[`a.length === ${j.length}`];for(let M=0;M<j.length;M++){let P=j[M];if(P.defaultValue){let v=ls(`a[${M}]`,P.defaultValue);v!=="true"&&N.push(v)}}if(k===0)_.push(` if (${N.join(" && ")}) return Reflect.construct(t, a)`);else{let M=j.map((P,v)=>`a[${v}]`).join(", ");_.push(` if (${N.join(" && ")}) return ${c}$ctor$${A.index}(${M})`)}}x+=`
39
36
  function ${c}$dispatch(t, a) {
40
- `,x+=$.join(`
37
+ `,x+=_.join(`
41
38
  `)+`
42
39
  `,x+=` return __tjs.typeError('${c}', 'no matching constructor', a)
43
40
  `,x+=`}
44
- `,o=o.slice(0,u)+T+o.slice(p);let _=u+T.length;o=o.slice(0,_)+x+o.slice(_)}return{source:o,polyCtorClasses:n}}function cs(e,t=new Set){let n=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,r="",s=0,i;for(;(i=n.exec(e))!==null;){let o=i[1],a=i[2]||"",c=i.index,l=c+i[0].length-1,u=1,p=l+1;for(;p<e.length&&u>0;){let f=e[p];f==="{"?u++:f==="}"&&u--,p++}if(u===0){let f=p,m=e.slice(l,f);r+=e.slice(s,c),r+=`let ${o} = class ${o}${a} ${m}; `,t.has(o)?r+=`${o} = new Proxy(${o}, { apply(t, _, a) { return ${o}$dispatch(t, a) }, construct(t, a) { return ${o}$dispatch(t, a) } });`:r+=`${o} = new Proxy(${o}, { apply(t, _, a) { return Reflect.construct(t, a) } });`,s=f}}return r+=e.slice(s),r}function ls(e){let t=[{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:n,message:r}of t)if(n.test(e))throw new Error(r);return e}function us(e){let t=new Set,n=/\bconst!\s+(\w+)\b/g,r;for(;(r=n.exec(e))!==null;)t.add(r[1]);if(t.size===0)return e;e=e.replace(/\bconst!\s+/g,"const ");let s=e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"");for(let i of t){if(new RegExp(`\\b${i}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])\\s*(?:=(?!=)|\\+\\+|--|\\+=|-=|\\*=|\\/=|%=|&&=|\\|\\|=|\\?\\?=|<<=|>>=|>>>=|\\^=|&=|\\|=)`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${i}'. const! bindings are read-only at compile time.`);if(new RegExp(`(?:\\+\\+|--)\\s*${i}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${i}'. const! bindings are read-only at compile time.`);if(new RegExp(`\\bdelete\\s+${i}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${i}'. const! bindings are read-only at compile time.`);let l="push|pop|splice|shift|unshift|sort|reverse|fill|copyWithin|set";if(new RegExp(`\\b${i}\\s*\\.\\s*(?:${l})\\s*\\(`,"g").test(s))throw new Error(`Cannot call mutating method on immutable binding '${i}'. const! bindings are read-only at compile time.`)}return e}function fs(e){if(/(?<![a-zA-Z_$])\bvar\s+/.test(e))throw new Error("var is not allowed in TjsNoVar mode. Use const or let instead.");return e}function ps(e){if(/(?<![A-Za-z_$])\beval\s*\(/.test(e))throw new Error("eval() is not allowed in TjsNoeval mode. Use Eval() from TJS runtime for safe evaluation.");if(/\bnew\s+Function\s*\(/.test(e))throw new Error("new Function() is not allowed in TjsNoeval mode. Use SafeFunction() from TJS runtime.");return e}function ms(e){if(!e.includes("!."))return e;let t="",n=0,r="normal",s=0;for(;n<e.length;){let i=e[n],o=e[n+1];if(r==="normal"){if(i==="/"&&o==="/"){r="line-comment",t+=i,n++;continue}if(i==="/"&&o==="*"){r="block-comment",t+=i,n++;continue}if(i==="'"){r="string-single",t+=i,n++;continue}if(i==='"'){r="string-double",t+=i,n++;continue}if(i==="`"){r="string-template",s++,t+=i,n++;continue}if(i==="!"&&o==="."&&n+2<e.length&&/[a-zA-Z_$]/.test(e[n+2])){let a=t.length,c=Yi(t);if(c<a){let l=t.slice(c);t=t.slice(0,c);let u=n+2;for(;u<e.length&&/[\w$]/.test(e[u]);)u++;let p=e.slice(n+2,u);t+=`__tjs.bang(${l},'${p}')`,n=u;continue}}t+=i,n++}else r==="line-comment"?(t+=i,i===`
45
- `&&(r="normal"),n++):r==="block-comment"?(t+=i,i==="*"&&o==="/"?(t+=o,r="normal",n+=2):n++):r==="string-single"?(t+=i,i==="\\"?(t+=o||"",n+=2):(i==="'"&&(r="normal"),n++)):r==="string-double"?(t+=i,i==="\\"?(t+=o||"",n+=2):(i==='"'&&(r="normal"),n++)):r==="string-template"?(t+=i,i==="\\"?(t+=o||"",n+=2):i==="`"?(s--,r=s>0?"string-template":"normal",n++):i==="$"&&o==="{"?(t+=o,n+=2,r="normal"):n++):(t+=i,n++)}return t}function Yi(e){let t=e.length-1;for(;t>=0&&/\s/.test(e[t]);)t--;if(t<0)return e.length;for(;t>=0;){let n=e[t];if(/[\w$]/.test(n)){for(;t>=0&&/[\w$]/.test(e[t]);)t--;if(t>=0&&e[t]==="."){t>=1&&e[t-1]==="?"?t-=2:t--;continue}return t+1}else if(n===")"){if(t=zr(e,t,"(",")"),t<0)return 0;if(t--,t>=0&&/[\w$]/.test(e[t]))continue;if(t>=0&&e[t]==="."){t>=1&&e[t-1]==="?"?t-=2:t--;continue}return t+1}else if(n==="]"){if(t=zr(e,t,"[","]"),t<0)return 0;if(t--,t>=0&&/[\w$]/.test(e[t]))continue;if(t>=0&&e[t]==="."){t>=1&&e[t-1]==="?"?t-=2:t--;continue}return t+1}else return t+1}return 0}function zr(e,t,n,r){let s=1;for(t--;t>=0&&s>0;)e[t]===r?s++:e[t]===n&&s--,s>0&&t--;return t}function Gn(e){let t="",n=0;for(;n<e.length;){let r=e[n];if(r==="'"||r==='"'||r==="`"){let s=r;for(t+=r,n++;n<e.length&&e[n]!==s;)e[n]==="\\"&&(t+=e[n++]),n<e.length&&(t+=e[n++]);n<e.length&&(t+=e[n++]);continue}if(r==="/"&&e[n+1]==="*"){let s=e.indexOf("*/",n+2),i=s===-1?e.slice(n):e.slice(n,s+2);t+=i,n+=i.length;continue}if(r==="/"&&e[n+1]==="/"){let s=e.indexOf(`
46
- `,n),i=s===-1?e.length:s;t+=" ".repeat(i-n),n=i;continue}t+=r,n++}return t}function Wt(e,t={}){let n=e,r,s=new Set,i=new Set,o=new Set,c=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e)||t.vmTarget,l=c?{tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1,tjsNoVar:!1}:{tjsEquals:!0,tjsClass:!0,tjsDate:!0,tjsNoeval:!0,tjsStandard:!0,tjsSafeEval:!1,tjsNoVar:!0};c&&(r="none");let u=e.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);u&&(r=u[2],e=e.replace(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\s*/,"$1"));let p=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsCompat|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsNoVar|TjsStandard|TjsSafeEval)\b/,f;for(;f=e.match(p);){let $=f[2];$==="TjsStrict"?(l.tjsEquals=!0,l.tjsClass=!0,l.tjsDate=!0,l.tjsNoeval=!0,l.tjsNoVar=!0,l.tjsStandard=!0):$==="TjsCompat"?(l.tjsEquals=!1,l.tjsClass=!1,l.tjsDate=!1,l.tjsNoeval=!1,l.tjsNoVar=!1,l.tjsStandard=!1,l.tjsSafeEval=!1):$==="TjsEquals"?l.tjsEquals=!0:$==="TjsClass"?l.tjsClass=!0:$==="TjsDate"?l.tjsDate=!0:$==="TjsNoeval"?l.tjsNoeval=!0:$==="TjsNoVar"?l.tjsNoVar=!0:$==="TjsStandard"?l.tjsStandard=!0:$==="TjsSafeEval"&&(l.tjsSafeEval=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${$}\\s*`),"$1")}e=Gn(e),l.tjsStandard&&(e=Zr(e)),e=us(e),e=ms(e),e=dt(e),l.tjsEquals&&!t.vmTarget&&(e=yt(e)),e=Yr(e),e=Qr(e),e=Xr(e),e=es(e),e=ts(e),e=is(e);let{source:m,returnType:d,returnSafety:y}=Ut(e,{originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o});e=m;let b=ns(e);e=b.source,e=Gr(e);let w=ss(e,s);e=w.source;let E=Hr(e);e=E.source;let T=os(e,t.dangerouslySkipTests);e=T.source;let x=as(e,s);e=x.source;for(let $ of x.polyCtorClasses)i.add(`${$}$dispatch`);return l.tjsClass&&(e=cs(e,x.polyCtorClasses)),l.tjsDate&&(e=ls(e)),l.tjsNoeval&&(e=ps(e)),l.tjsNoVar&&(e=fs(e)),e=gt(e,b.extensions),{source:e,returnType:d,returnSafety:y,moduleSafety:r,tjsModes:l,originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o,wasmBlocks:E.blocks,tests:T.tests,testErrors:T.errors,polymorphicNames:w.polymorphicNames,extensions:b.extensions}}function we(e,t={}){let{filename:n="<source>",colonShorthand:r=!0,vmTarget:s=!1}=t,{source:i,returnType:o,returnSafety:a,moduleSafety:c,originalSource:l,requiredParams:u,unsafeFunctions:p,safeFunctions:f,wasmBlocks:m,tests:d,testErrors:y}=r?Wt(e,{vmTarget:s}):{source:e,returnType:void 0,returnSafety:void 0,moduleSafety:void 0,originalSource:e,requiredParams:new Set,unsafeFunctions:new Set,safeFunctions:new Set,wasmBlocks:[],tests:[],testErrors:[]};try{return{ast:ds.parse(i,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:o,returnSafety:a,moduleSafety:c,originalSource:l,requiredParams:u,unsafeFunctions:p,safeFunctions:f,wasmBlocks:m,tests:d,testErrors:y}}catch(b){let w=b.loc||{line:1,column:0};throw new ie(b.message.replace(/\s*\(\d+:\d+\)$/,""),w,l,n)}}function Vt(e,t){for(let r of e.body){if(r.type==="ImportDeclaration")throw new ie("Imports are not supported. All atoms must be registered with the VM.",r.loc?.start||{line:1,column:0},void 0,t);if(r.type==="ExportNamedDeclaration"||r.type==="ExportDefaultDeclaration")throw new ie("Exports are not supported. The function is automatically exported.",r.loc?.start||{line:1,column:0},void 0,t);if(r.type==="ClassDeclaration")throw new ie("Classes are not supported. Agent99 uses functional composition.",r.loc?.start||{line:1,column:0},void 0,t)}let n=e.body.filter(r=>r.type==="FunctionDeclaration");if(n.length===0)throw new ie("Source must contain a function declaration",{line:1,column:0},void 0,t);if(n.length>1){let r=n[1];throw new ie("Only a single function per agent is allowed",r.loc?.start||{line:1,column:0},void 0,t)}return n[0]}function ht(e,t){let n={params:{}};if(!t.loc)return n;let r=e.substring(0,t.start),s=[...r.matchAll(/\/\*#([\s\S]*?)\*\//g)];if(s.length>0){let u=s[s.length-1],p=r.substring(u.index+u[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(p)){let f=u[1],m=f.split(`
41
+ `,o=o.slice(0,u)+T+o.slice(p);let $=u+T.length;o=o.slice(0,$)+x+o.slice($)}return{source:o,polyCtorClasses:n}}function ds(e,t=new Set){let n=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,r="",s=0,i;for(;(i=n.exec(e))!==null;){let o=i[1],a=i[2]||"",c=i.index,l=c+i[0].length-1,u=1,p=l+1;for(;p<e.length&&u>0;){let f=e[p];f==="{"?u++:f==="}"&&u--,p++}if(u===0){let f=p,m=e.slice(l,f);r+=e.slice(s,c),r+=`let ${o} = class ${o}${a} ${m}; `,t.has(o)?r+=`${o} = new Proxy(${o}, { apply(t, _, a) { return ${o}$dispatch(t, a) }, construct(t, a) { return ${o}$dispatch(t, a) } });`:r+=`${o} = new Proxy(${o}, { apply(t, _, a) { return Reflect.construct(t, a) } });`,s=f}}return r+=e.slice(s),r}function ys(e){let t=[{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:n,message:r}of t)if(n.test(e))throw new Error(r);return e}function gs(e){let t=new Set,n=/\bconst!\s+(\w+)\b/g,r;for(;(r=n.exec(e))!==null;)t.add(r[1]);if(t.size===0)return e;e=e.replace(/\bconst!\s+/g,"const ");let s=e.replace(/\/\*[\s\S]*?\*\//g,"").replace(/\/\/[^\n]*/g,"");for(let i of t){if(new RegExp(`\\b${i}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])\\s*(?:=(?!=)|\\+\\+|--|\\+=|-=|\\*=|\\/=|%=|&&=|\\|\\|=|\\?\\?=|<<=|>>=|>>>=|\\^=|&=|\\|=)`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${i}'. const! bindings are read-only at compile time.`);if(new RegExp(`(?:\\+\\+|--)\\s*${i}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${i}'. const! bindings are read-only at compile time.`);if(new RegExp(`\\bdelete\\s+${i}\\s*(?:\\.[\\w]+|\\[[^\\]]+\\])`,"g").test(s))throw new Error(`Cannot mutate immutable binding '${i}'. const! bindings are read-only at compile time.`);let l="push|pop|splice|shift|unshift|sort|reverse|fill|copyWithin|set";if(new RegExp(`\\b${i}\\s*\\.\\s*(?:${l})\\s*\\(`,"g").test(s))throw new Error(`Cannot call mutating method on immutable binding '${i}'. const! bindings are read-only at compile time.`)}return e}function hs(e){if(/(?<![a-zA-Z_$])\bvar\s+/.test(e))throw new Error("var is not allowed in TjsNoVar mode. Use const or let instead.");return e}function bs(e){if(/(?<![A-Za-z_$])\beval\s*\(/.test(e))throw new Error("eval() is not allowed in TjsNoeval mode. Use Eval() from TJS runtime for safe evaluation.");if(/\bnew\s+Function\s*\(/.test(e))throw new Error("new Function() is not allowed in TjsNoeval mode. Use SafeFunction() from TJS runtime.");return e}function xs(e){if(!e.includes("!."))return e;let t="",n=0,r="normal",s=0;for(;n<e.length;){let i=e[n],o=e[n+1];if(r==="normal"){if(i==="/"&&o==="/"){r="line-comment",t+=i,n++;continue}if(i==="/"&&o==="*"){r="block-comment",t+=i,n++;continue}if(i==="'"){r="string-single",t+=i,n++;continue}if(i==='"'){r="string-double",t+=i,n++;continue}if(i==="`"){r="string-template",s++,t+=i,n++;continue}if(i==="!"&&o==="."&&n+2<e.length&&/[a-zA-Z_$]/.test(e[n+2])){let a=t.length,c=yo(t);if(c<a){let l=t.slice(c);t=t.slice(0,c);let u=n+2;for(;u<e.length&&/[\w$]/.test(e[u]);)u++;let p=e.slice(n+2,u);t+=`__tjs.bang(${l},'${p}')`,n=u;continue}}t+=i,n++}else r==="line-comment"?(t+=i,i===`
42
+ `&&(r="normal"),n++):r==="block-comment"?(t+=i,i==="*"&&o==="/"?(t+=o,r="normal",n+=2):n++):r==="string-single"?(t+=i,i==="\\"?(t+=o||"",n+=2):(i==="'"&&(r="normal"),n++)):r==="string-double"?(t+=i,i==="\\"?(t+=o||"",n+=2):(i==='"'&&(r="normal"),n++)):r==="string-template"?(t+=i,i==="\\"?(t+=o||"",n+=2):i==="`"?(s--,r=s>0?"string-template":"normal",n++):i==="$"&&o==="{"?(t+=o,n+=2,r="normal"):n++):(t+=i,n++)}return t}function yo(e){let t=e.length-1;for(;t>=0&&/\s/.test(e[t]);)t--;if(t<0)return e.length;for(;t>=0;){let n=e[t];if(/[\w$]/.test(n)){for(;t>=0&&/[\w$]/.test(e[t]);)t--;if(t>=0&&e[t]==="."){t>=1&&e[t-1]==="?"?t-=2:t--;continue}return t+1}else if(n===")"){if(t=Qr(e,t,"(",")"),t<0)return 0;if(t--,t>=0&&/[\w$]/.test(e[t]))continue;if(t>=0&&e[t]==="."){t>=1&&e[t-1]==="?"?t-=2:t--;continue}return t+1}else if(n==="]"){if(t=Qr(e,t,"[","]"),t<0)return 0;if(t--,t>=0&&/[\w$]/.test(e[t]))continue;if(t>=0&&e[t]==="."){t>=1&&e[t-1]==="?"?t-=2:t--;continue}return t+1}else return t+1}return 0}function Qr(e,t,n,r){let s=1;for(t--;t>=0&&s>0;)e[t]===r?s++:e[t]===n&&s--,s>0&&t--;return t}function Ts(e){let t=new Map;if(!e.includes("let "))return{source:e,annotations:t};let n=[],r=0,s="normal",i=[];for(;r<e.length;){let a=e[r],c=e[r+1];switch(s){case"single-string":if(a==="\\"&&r+1<e.length){r+=2;continue}a==="'"&&(s="normal"),r++;continue;case"double-string":if(a==="\\"&&r+1<e.length){r+=2;continue}a==='"'&&(s="normal"),r++;continue;case"template-string":if(a==="\\"&&r+1<e.length){r+=2;continue}if(a==="$"&&c==="{"){r+=2,i.push(1),s="normal";continue}a==="`"&&(s="normal"),r++;continue;case"line-comment":a===`
43
+ `&&(s="normal"),r++;continue;case"block-comment":if(a==="*"&&c==="/"){r+=2,s="normal";continue}r++;continue;case"regex":if(a==="\\"&&r+1<e.length){r+=2;continue}if(a==="["){for(r++;r<e.length&&e[r]!=="]";)e[r]==="\\"&&r+1<e.length?r+=2:r++;r<e.length&&r++;continue}if(a==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)r++;s="normal";continue}r++;continue;case"normal":if(i.length>0){if(a==="{")i[i.length-1]++;else if(a==="}"&&(i[i.length-1]--,i[i.length-1]===0)){i.pop(),r++,s="template-string";continue}}if(a==="'"){r++,s="single-string";continue}if(a==='"'){r++,s="double-string";continue}if(a==="`"){r++,s="template-string";continue}if(a==="/"&&c==="/"){r+=2,s="line-comment";continue}if(a==="/"&&c==="*"){r+=2,s="block-comment";continue}if(a==="/"){let l=r-1;for(;l>=0&&/\s/.test(e[l]);)l--;let u=l>=0?e[l]:"";if(!u||/[=(!,;:{[&|?+\-*%<>~^]/.test(u)||l>=5&&/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)$/.test(e.slice(Math.max(0,l-10),l+1))){r++,s="regex";continue}}if(a==="l"&&e.slice(r,r+4)==="let "&&(r===0||!/[\w$]/.test(e[r-1]))){let l=r+4;for(;l<e.length&&/\s/.test(e[l]);)l++;if(l<e.length&&/[a-zA-Z_$]/.test(e[l])){let u=l;for(;l<e.length&&/[\w$]/.test(e[l]);)l++;let p=l,f=e.slice(u,p),m=l;for(;m<e.length&&/\s/.test(e[m]);)m++;if(m<e.length&&e[m]===":"&&e[m+1]!==":"){let y=m+1;for(;y<e.length&&/[ \t]/.test(e[y]);)y++;let b=go(e,y);if(b>y){let w=e.slice(y,b).trim();t.set(f,w),n.push({start:p,end:b,replacement:""}),r=b;continue}}}}break}r++}if(n.length===0)return{source:e,annotations:t};let o=e;for(let a=n.length-1;a>=0;a--){let c=n[a];o=o.slice(0,c.start)+c.replacement+o.slice(c.end)}return{source:o,annotations:t}}function go(e,t){let n=t,r=0,s=0,i=0,o="normal",a=[];for(;n<e.length;){let c=e[n];if(o==="sq"){if(c==="\\"){n+=2;continue}c==="'"&&(o="normal"),n++;continue}if(o==="dq"){if(c==="\\"){n+=2;continue}c==='"'&&(o="normal"),n++;continue}if(o==="tpl"){if(c==="\\"){n+=2;continue}if(c==="$"&&e[n+1]==="{"){a.push(1),o="normal",n+=2;continue}c==="`"&&(o="normal"),n++;continue}if(a.length>0){if(c==="{")a[a.length-1]++;else if(c==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),o="tpl",n++;continue}}if(c==="'"){o="sq",n++;continue}if(c==='"'){o="dq",n++;continue}if(c==="`"){o="tpl",n++;continue}if(c==="("?r++:c===")"?r--:c==="{"?s++:c==="}"?s--:c==="["?i++:c==="]"&&i--,r===0&&s===0&&i===0&&(c==="="||c===","||c===";"||c===`
44
+ `))return n;n++}return n}function zt(e,t){let n="",r=0,s,i,o="normal",a=[],c=[{type:"top-level",braceDepth:0}],l=0,u=()=>c[c.length-1]?.type||"top-level",p=()=>{let f=c[c.length-1];return f?.type==="class-body"&&l===f.braceDepth+1};for(;r<e.length;){let f=e[r],m=e[r+1];switch(o){case"single-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}f==="'"&&(o="normal"),r++;continue;case"double-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}f==='"'&&(o="normal"),r++;continue;case"template-string":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(f==="$"&&m==="{"){n+=m,r+=2,a.push(1),o="normal";continue}f==="`"&&(o="normal"),r++;continue;case"line-comment":n+=f,f===`
45
+ `&&(o="normal"),r++;continue;case"block-comment":if(n+=f,f==="*"&&m==="/"){n+=m,r+=2,o="normal";continue}r++;continue;case"regex":if(n+=f,f==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(f==="["){for(r++;r<e.length&&e[r]!=="]";)n+=e[r],e[r]==="\\"&&r+1<e.length?(n+=e[r+1],r+=2):r++;r<e.length&&(n+=e[r],r++);continue}if(f==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)n+=e[r],r++;o="normal";continue}r++;continue;case"normal":if(a.length>0){if(f==="{")a[a.length-1]++;else if(f==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),n+=f,r++,o="template-string";continue}}if(f==="'"){n+=f,r++,o="single-string";continue}if(f==='"'){n+=f,r++,o="double-string";continue}if(f==="`"){n+=f,r++,o="template-string";continue}if(f==="/"&&m==="/"){n+=f+m,r+=2,o="line-comment";continue}if(f==="/"&&m==="*"){n+=f+m,r+=2,o="block-comment";continue}if(f==="/"){let T=n.trimEnd();if(!T[T.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(T)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(T)){n+=f,r++,o="regex";continue}}break}if(f==="{"){l++,n+=f,r++;continue}if(f==="}"){l--;let T=c[c.length-1];T&&l===T.braceDepth&&c.pop(),n+=f,r++;continue}let d=e.slice(r).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(d){let T=d[0].slice(0,-1);n+=T,r+=T.length,c.push({type:"class-body",braceDepth:l});continue}let y=e.slice(r).match(/^function\s+(\w+)\s*\(/);if(y){let T=y[1],x=y[0].length,_=e[r+x],$=null,k=r+x;(_==="?"||_==="!")&&($=_,k++,$==="!"?t.unsafeFunctions.add(T):t.safeFunctions.add(T)),n+=`function ${T}(`,r=k;let A=Wt(e,r,"(",")");if(!A){n+=e[r],r++;continue}let{content:j,endPos:N}=A;r=N;let M=Qn(j,t,!0);n+=M+")";let P=r;for(;P<e.length&&/\s/.test(e[P]);)P++;if(e[P]===":"){let I=e.slice(P,P+2),B;for(I===":?"||I===":!"?(P+=2,B=I===":?"?"safe":"unsafe"):P+=1;P<e.length&&/\s/.test(e[P]);)P++;let F=Xn(e,P);F&&(s===void 0&&(s=F.type,B&&(i=B)),r=F.endPos)}let v=r;for(;v<e.length&&/\s/.test(e[v]);)v++;if(e[v]==="="&&e[v+1]===">")throw new ne("Unexpected '=>' after function declaration. Function declarations use `function name(params) { body }`, not arrow syntax. Remove the `=>`.",Ce(t.originalSource,v),t.originalSource);continue}let b=e.slice(r).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/),w=(()=>{for(let T=n.length-1;T>=0;T--)if(!/\s/.test(n[T]))return n[T];return`
46
+ `})(),S=w!=="="&&w!==","&&w!=="("&&w!=="["&&w!==">";if(b&&p()&&!S){let T=b[1].length;n+=e.slice(r,r+T),r+=T;continue}if(b&&p()&&S){let T=b[1],x=b[0].length,_=r+x;n+=T+"(",r=_;let $=Wt(e,r,"(",")");if(!$){n+=e[r],r++;continue}let{content:k,endPos:A}=$;r=A;let j=Qn(k,t,!0);n+=j+")";let N=r;for(;N<e.length&&/\s/.test(e[N]);)N++;if(e[N]===":"){let P=e.slice(N,N+2);for(P===":?"||P===":!"?N+=2:N++;N<e.length&&/\s/.test(e[N]);)N++;let v=Xn(e,N);v&&(r=v.endPos)}let M=r;for(;M<e.length&&/\s/.test(e[M]);)M++;if(e[M]==="="&&e[M+1]===">")throw new ne("Unexpected '=>' after method declaration. Methods use `name(params) { body }`, not arrow syntax. Remove the `=>`.",Ce(t.originalSource,M),t.originalSource);continue}if(e[r]==="("){let T=Wt(e,r+1,"(",")");if(!T){n+=e[r],r++;continue}let x=T.content,_=T.endPos,$=_;for(;$<e.length&&/\s/.test(e[$]);)$++;let k;if(e[$]===":"){let A=e.slice($,$+2);for(A===":?"||A===":!"?$+=2:$++;$<e.length&&/\s/.test(e[$]);)$++;let j=Xn(e,$);if(j)for(k=j.type,$=j.endPos;$<e.length&&/\s/.test(e[$]);)$++}if(e.slice($,$+2)==="=>"){let A=null,j=x,N=x.trimStart();N.startsWith("?")&&(N.length===1||/\s/.test(N[1]))?(A="?",j=N.slice(1)):N.startsWith("!")&&(N.length===1||/\s/.test(N[1]))&&(A="!",j=N.slice(1));let M=Qn(j,t,!1);for(n+=`(${A==="?"?"/* safe */ ":A==="!"?"/* unsafe */ ":""}${M})`,r=_;r<$&&/\s/.test(e[r]);)n+=e[r],r++;k&&(r=$)}else{let A=zt(x,t);n+=`(${A.source})`,r=_}continue}n+=e[r],r++}return{source:n,returnType:s,returnSafety:i}}function Wt(e,t,n,r){let s=1,i=t,o=!1,a="";for(;i<e.length&&s>0;){let c=e[i];!o&&(c==="'"||c==='"'||c==="`")?(o=!0,a=c):o&&c===a&&e[i-1]!=="\\"?o=!1:o||(c===n?s++:c===r&&s--),i++}return s!==0?null:{content:e.slice(t,i-1),endPos:i}}function Ss(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)return null;let r=n,s=e[n];if(s==="{"||s==="["){let o=s==="{"?"}":"]",a=Wt(e,n+1,s,o);return a?{value:e.slice(r,a.endPos),endPos:a.endPos}:null}if(s==="'"||s==='"'||s==="`"){for(n++;n<e.length;){if(e[n]===s&&e[n-1]!=="\\")return n++,{value:e.slice(r,n),endPos:n};n++}return null}if(/[-+\d]/.test(s)){for(;n<e.length&&/[\d.eE+-]/.test(e[n]);)n++;return{value:e.slice(r,n),endPos:n}}let i=e.slice(n).match(/^(true|false|null|undefined)\b/);return i?{value:i[1],endPos:n+i[1].length}:null}function xt(e){return e.replace(/(?<!\|)\|(?!\|)/g," || ")}function Xn(e,t){let n=t,r=0,s=!1,i="",o=!1,a=c=>({type:xt(e.slice(t,c).trim()),endPos:c});for(;n<e.length;){let c=e[n];if(!s&&(c==="'"||c==='"'||c==="`")){s=!0,i=c,o=!0,n++;continue}if(s){if(c===i&&e[n-1]!=="\\"){if(s=!1,n++,r===0){let l=n;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="{"&&!e.slice(l+1).match(/^\s*(\w+)\s*:/)||e[l]!=="|"&&e[l]!=="&")return a(n)}continue}n++;continue}if(c==="{"||c==="["||c==="("){r++,o=!0,n++;continue}if(c==="}"||c==="]"||c===")"){if(r--,r===0){n++;let l=n;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="|"||e[l]==="&")continue;return a(n)}n++;continue}if(r===0&&c==="{"){if(o)return a(n);if(e.slice(n+1).match(/^\s*(\w+)\s*:/)){r++,o=!0,n++;continue}return a(n)}if(r===0&&(c==="|"||c==="&")){for(n++,n<e.length&&e[n]==="|"&&n++;n<e.length&&/\s/.test(e[n]);)n++;continue}if(r===0&&(/\d/.test(c)||c==="-"&&/\d/.test(e[n+1]))){let l=n;for(e[l]==="-"&&l++;l<e.length&&/\d/.test(e[l]);)l++;if(l<e.length&&e[l]==="."&&/\d/.test(e[l+1]))for(l++;l<e.length&&/\d/.test(e[l]);)l++;if(l<e.length&&(e[l]==="e"||e[l]==="E"))for(l++,l<e.length&&(e[l]==="+"||e[l]==="-")&&l++;l<e.length&&/\d/.test(e[l]);)l++;for(o=!0,n=l;n<e.length&&/\s/.test(e[n]);)n++;if(n<e.length&&e[n]==="{")return{type:xt(e.slice(t,l).trim()),endPos:l};if(e[n]!=="|"&&e[n]!=="&")return{type:xt(e.slice(t,l).trim()),endPos:l};continue}if(r===0&&/[a-zA-Z_]/.test(c)){let l=n;for(;l<e.length&&/\w/.test(e[l]);)l++;for(o=!0,n=l;n<e.length&&/\s/.test(e[n]);)n++;if(n<e.length&&e[n]==="("){r++,n++;continue}if(n<e.length&&e[n]==="{"&&!e.slice(n+1).match(/^\s*(\w+)\s*:/)){let p=l;for(;p>t&&/\s/.test(e[p-1]);)p--;return{type:xt(e.slice(t,p).trim()),endPos:l}}if(e[n]!=="|"&&e[n]!=="&")return{type:xt(e.slice(t,l).trim()),endPos:l};continue}n++}return o?a(n):null}function Gt(e){let t=[],n="",r=0,s=!1,i=!1,o=0;for(;o<e.length;){let a=e[o],c=e[o+1];if(!i&&a==="/"&&c==="/"){s=!0,n+="//",o+=2;continue}if(!s&&a==="/"&&c==="*"){i=!0,n+="/*",o+=2;continue}if(s&&a===`
47
+ `){s=!1,n+=a,o++;continue}if(i&&a==="*"&&c==="/"){i=!1,n+="*/",o+=2;continue}if(s||i){n+=a,o++;continue}a==="("||a==="{"||a==="["?(r++,n+=a):a===")"||a==="}"||a==="]"?(r--,n+=a):a===","&&r===0?(t.push(n),n=""):n+=a,o++}return n.trim()&&t.push(n),t}function Qn(e,t,n){let r=zt(e,{originalSource:e,requiredParams:t.requiredParams,unsafeFunctions:t.unsafeFunctions,safeFunctions:t.safeFunctions}).source,s=Gt(r),i=!1,o=new Set,a=l=>{if(n&&/^\w+$/.test(l)){if(o.has(l))throw new Error(`Duplicate parameter name '${l}'`);o.add(l)}};return s.map(l=>{let u=l.trim();if(!u)return l;if(n&&u.startsWith("{")&&u.endsWith("}")){let m=u.slice(1,-1);return`{ ${ws(m,t)} }`}if(n&&u.startsWith("[")&&u.endsWith("]")){let m=u.slice(1,-1);return`[ ${ws(m,t)} ]`}if(u.startsWith("...")){let m=Es(u);return m!==-1?u.slice(0,m).trim():l}let p=u.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(p){let[,m,d]=p;return a(m),i=!0,`${m} = ${d}`}if(!ho(u)){let m=u.match(/^(\w+)\s*=/);return m&&a(m[1]),i=!0,l}let f=Es(u);if(f!==-1){let m=u.slice(0,f).trim(),d=u.slice(f+1).trim();return a(m),i&&n&&/^\w+$/.test(m),n&&/^\w+$/.test(m)&&t.requiredParams.add(m),`${m} = ${d}`}return l}).join(",")}function ws(e,t){return Gt(e).map(s=>{let i=s.trim();if(!i)return s;let o=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(o){let[,l,u]=o;t.requiredParams.add(l);let p=Vt(u);return`${l} = ${p}`}let a=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(a){let[,l,u]=a;t.requiredParams.add(l);let p=Kt(u);return`${l} = ${p}`}let c=i.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(c){let[,l,u]=c;return t.requiredParams.add(l),`${l} = ${u}`}return s}).join(", ")}function Vt(e){let t=e.slice(1,-1).trim();return`{ ${Gt(t).map(s=>{let i=s.trim();if(!i)return s;let o=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(o){let[,p,f]=o;return`${p}: ${Vt(f)}`}let a=i.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(a){let[,p,f]=a;return`${p}: ${Vt(f)}`}let c=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(c){let[,p,f]=c;return`${p}: ${Kt(f)}`}let l=i.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,p,f]=l;return`${p}: ${Kt(f)}`}let u=i.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(u){let[,p,f]=u;return`${p}: ${f}`}return s}).join(", ")} }`}function Kt(e){let t=e.slice(1,-1).trim();return`[ ${Gt(t).map(s=>{let i=s.trim();return i?i.startsWith("{")&&i.endsWith("}")?Vt(i):i.startsWith("[")&&i.endsWith("]")?Kt(i):s:s}).join(", ")} ]`}function ho(e){let t=0,n=!1,r=!1,s=!1,i="";for(let o=0;o<e.length;o++){let a=e[o];if(!s&&(a==="'"||a==='"'||a==="`")){s=!0,i=a;continue}if(s){a===i&&e[o-1]!=="\\"&&(s=!1);continue}a==="("||a==="{"||a==="["?t++:a===")"||a==="}"||a==="]"?t--:t===0&&(a===":"&&(n=!0),a==="="&&e[o+1]!==">"&&(r=!0))}return n&&!r}function Es(e){let t=0,n=!1,r="";for(let s=0;s<e.length;s++){let i=e[s];if(!n&&(i==="'"||i==='"'||i==="`")){n=!0,r=i;continue}if(n){i===r&&e[s-1]!=="\\"&&(n=!1);continue}if(i==="("||i==="{"||i==="[")t++;else if(i===")"||i==="}"||i==="]")t--;else if(t===0&&i===":")return s}return-1}function er(e){let t="",n=0;for(;n<e.length;){let r=e[n];if(r==="'"||r==='"'||r==="`"){let s=r;for(t+=r,n++;n<e.length&&e[n]!==s;)e[n]==="\\"&&(t+=e[n++]),n<e.length&&(t+=e[n++]);n<e.length&&(t+=e[n++]);continue}if(r==="/"&&e[n+1]==="*"){let s=e.indexOf("*/",n+2),i=s===-1?e.slice(n):e.slice(n,s+2);t+=i,n+=i.length;continue}if(r==="/"&&e[n+1]==="/"){let s=e.indexOf(`
48
+ `,n),i=s===-1?e.length:s;t+=" ".repeat(i-n),n=i;continue}t+=r,n++}return t}function Ht(e,t={}){let n=e,r,s=new Set,i=new Set,o=new Set,c=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e)||t.vmTarget,l=c?{tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1,tjsNoVar:!1,tjsSafeAssign:!1}:{tjsEquals:!0,tjsClass:!0,tjsDate:!0,tjsNoeval:!0,tjsStandard:!0,tjsSafeEval:!1,tjsNoVar:!0,tjsSafeAssign:!0};c&&(r="none");let u=e.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);u&&(r=u[2],e=e.replace(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\s*/,"$1"));let p=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsCompat|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsNoVar|TjsStandard|TjsSafeEval|TjsSafeAssign)\b/,f;for(;f=e.match(p);){let k=f[2];k==="TjsStrict"?(l.tjsEquals=!0,l.tjsClass=!0,l.tjsDate=!0,l.tjsNoeval=!0,l.tjsNoVar=!0,l.tjsStandard=!0,l.tjsSafeAssign=!0):k==="TjsCompat"?(l.tjsEquals=!1,l.tjsClass=!1,l.tjsDate=!1,l.tjsNoeval=!1,l.tjsNoVar=!1,l.tjsStandard=!1,l.tjsSafeEval=!1,l.tjsSafeAssign=!1):k==="TjsEquals"?l.tjsEquals=!0:k==="TjsClass"?l.tjsClass=!0:k==="TjsDate"?l.tjsDate=!0:k==="TjsNoeval"?l.tjsNoeval=!0:k==="TjsNoVar"?l.tjsNoVar=!0:k==="TjsStandard"?l.tjsStandard=!0:k==="TjsSafeEval"?l.tjsSafeEval=!0:k==="TjsSafeAssign"&&(l.tjsSafeAssign=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${k}\\s*`),"$1")}e=er(e),l.tjsStandard&&(e=ns(e)),e=gs(e),e=xs(e);let m=Ts(e);e=m.source;let d=m.annotations;e=gt(e),l.tjsEquals&&!t.vmTarget&&(e=ht(e)),e=rs(e),e=is(e),e=ss(e),e=os(e),e=as(e),e=fs(e);let{source:y,returnType:b,returnSafety:w}=zt(e,{originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o});e=y;let S=cs(e);e=S.source,e=es(e);let T=us(e,s);e=T.source;let x=ts(e);e=x.source;let _=ps(e,t.dangerouslySkipTests);e=_.source;let $=ms(e,s);e=$.source;for(let k of $.polyCtorClasses)i.add(`${k}$dispatch`);return l.tjsClass&&(e=ds(e,$.polyCtorClasses)),l.tjsDate&&(e=ys(e)),l.tjsNoeval&&(e=bs(e)),l.tjsNoVar&&(e=hs(e)),e=bt(e,S.extensions),{source:e,returnType:b,returnSafety:w,moduleSafety:r,tjsModes:l,originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o,wasmBlocks:x.blocks,tests:_.tests,testErrors:_.errors,polymorphicNames:T.polymorphicNames,extensions:S.extensions,letAnnotations:d}}function ke(e,t={}){let{filename:n="<source>",colonShorthand:r=!0,vmTarget:s=!1}=t,{source:i,returnType:o,returnSafety:a,moduleSafety:c,originalSource:l,requiredParams:u,unsafeFunctions:p,safeFunctions:f,wasmBlocks:m,tests:d,testErrors:y,letAnnotations:b,tjsModes:w}=r?Ht(e,{vmTarget:s}):{source:e,returnType:void 0,returnSafety:void 0,moduleSafety:void 0,originalSource:e,requiredParams:new Set,unsafeFunctions:new Set,safeFunctions:new Set,wasmBlocks:[],tests:[],testErrors:[],letAnnotations:new Map,tjsModes:{tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1,tjsNoVar:!1,tjsSafeAssign:!1}};try{return{ast:$s.parse(i,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:o,returnSafety:a,moduleSafety:c,originalSource:l,requiredParams:u,unsafeFunctions:p,safeFunctions:f,wasmBlocks:m,tests:d,testErrors:y,letAnnotations:b,tjsModes:w}}catch(S){let T=S.loc||{line:1,column:0};throw new ne(S.message.replace(/\s*\(\d+:\d+\)$/,""),T,l,n)}}function Zt(e,t){for(let r of e.body){if(r.type==="ImportDeclaration")throw new ne("Imports are not supported. All atoms must be registered with the VM.",r.loc?.start||{line:1,column:0},void 0,t);if(r.type==="ExportNamedDeclaration"||r.type==="ExportDefaultDeclaration")throw new ne("Exports are not supported. The function is automatically exported.",r.loc?.start||{line:1,column:0},void 0,t);if(r.type==="ClassDeclaration")throw new ne("Classes are not supported. Agent99 uses functional composition.",r.loc?.start||{line:1,column:0},void 0,t)}let n=e.body.filter(r=>r.type==="FunctionDeclaration");if(n.length===0)throw new ne("Source must contain a function declaration",{line:1,column:0},void 0,t);if(n.length>1){let r=n[1];throw new ne("Only a single function per agent is allowed",r.loc?.start||{line:1,column:0},void 0,t)}return n[0]}function Tt(e,t){let n={params:{}};if(!t.loc)return n;let r=e.substring(0,t.start),s=[...r.matchAll(/\/\*#([\s\S]*?)\*\//g)];if(s.length>0){let u=s[s.length-1],p=r.substring(u.index+u[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(p)){let f=u[1],m=f.split(`
47
49
  `),d=m.filter(y=>y.trim().length>0).reduce((y,b)=>{let w=b.match(/^(\s*)/)?.[1].length||0;return Math.min(y,w)},1/0);return d>0&&d<1/0&&(f=m.map(y=>y.slice(d)).join(`
48
- `)),n.description=f.trim(),n}}let i=r.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!i)return n;let o=i[0],a=o.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);a&&(n.description=a[1].trim());let c=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,l;for(;(l=c.exec(o))!==null;)n.params[l[1]]=l[2].trim();return n}import{parseExpressionAt as Xi}from"acorn";function le(e){switch(e.type){case"Literal":{let t=e.value;if(t===null)return{kind:"null"};if(typeof t=="string")return{kind:"string"};if(typeof t=="number"){let n=e.raw;return n&&n.includes(".")?{kind:"number"}:{kind:"integer"}}return typeof t=="boolean"?{kind:"boolean"}:{kind:"any"}}case"ArrayExpression":{let t=e.elements;if(t.length===0)return{kind:"array",items:{kind:"any"}};let n=t.filter(o=>o!=null).map(o=>le(o));if(n.length===0)return{kind:"array",items:{kind:"any"}};let r=new Map;for(let o of n){let a=JSON.stringify(o);r.has(a)||r.set(a,o)}let s=[...r.values()];return{kind:"array",items:s.length===1?s[0]:{kind:"union",members:s}}}case"ObjectExpression":{let t=e.properties,n={};for(let r of t)if(r.type==="Property"&&r.key.type==="Identifier"){let s=r.key.name;n[s]=le(r.value)}return{kind:"object",shape:n}}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="||"?le(n):t==="&&"||t==="??"?le(r):{kind:"any"}}case"BinaryExpression":{let{operator:t,left:n,right:r}=e;if(t==="|"){let s=le(n),i=le(r);return i.kind==="null"?{...s,nullable:!0}:s.kind==="null"?{...i,nullable:!0}:{kind:"union",members:[s,i]}}return{kind:"any"}}case"Identifier":return e.name==="undefined"?{kind:"undefined"}:{kind:"any"};case"UnaryExpression":{let t=e.operator,n=e.argument;if(t==="+"&&n.type==="Literal"&&typeof n.value=="number")return{kind:"non-negative-integer"};if(t==="-"&&n.type==="Literal"&&typeof n.value=="number"){let s=n.raw;return s&&s.includes(".")?{kind:"number"}:{kind:"integer"}}return{kind:"any"}}default:return{kind:"any"}}}function je(e,t){if(e.type==="Identifier")return{name:e.name,type:{kind:"any"},required:!0};if(e.type==="AssignmentPattern"){let{left:n,right:r}=e;if(n.type!=="Identifier")throw new z("Only simple parameter names are supported",Z(e));let s=n.name,i=t?.has(s)??!1,o=le(r),a=xe(r);return{name:s,type:o,required:i,default:i?null:a,example:a,loc:{start:e.start,end:e.end}}}if(e.type==="ObjectPattern"){let n=e.properties,r={},s={};for(let i of n)if(i.type==="Property"){let o=i.key.type==="Identifier"?i.key.name:String(i.key.value);if(i.value.type==="Identifier")r[o]={kind:"any"},s[o]={name:o,type:{kind:"any"},required:!0};else if(i.value.type==="AssignmentPattern"){let a=je(i.value,t),c=t?.has(o)??!1;r[o]=a.type,s[o]={name:o,type:a.type,required:c,default:c?null:a.example,example:a.example}}}return{name:"__destructured__",type:{kind:"object",shape:r,destructuredParams:s},required:!0}}throw new z(`Unsupported parameter pattern: ${e.type}`,Z(e))}function xe(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(t=>t?xe(t):null);case"ObjectExpression":{let t={};for(let n of e.properties)n.type==="Property"&&n.key.type==="Identifier"&&(t[n.key.name]=xe(n.value));return t}case"UnaryExpression":if(e.operator==="-"){let t=xe(e.argument);return typeof t=="number"?-t:void 0}if(e.operator==="+"){let t=xe(e.argument);return typeof t=="number"?+t:void 0}return;case"BinaryExpression":{let{operator:t,left:n}=e;return t==="|"?xe(n):void 0}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="&&"&&n.type==="Literal"&&n.value===null?null:t==="||"||t==="??"?xe(n)??xe(r):void 0}default:return}}function ys(e){try{let t=Xi(e,0,{ecmaVersion:2022});return le(t)}catch{return{kind:"any"}}}function Hn(e){switch(e.kind){case"string":return e.nullable?"string | null":"string";case"number":return e.nullable?"number | null":"number";case"integer":return e.nullable?"integer | null":"integer";case"non-negative-integer":return e.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return e.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let t=e.items?Hn(e.items):"any";return e.nullable?`${t}[] | null`:`${t}[]`}case"object":{if(!e.shape||Object.keys(e.shape).length===0)return e.nullable?"object | null":"object";let t=Object.entries(e.shape).map(([n,r])=>`${n}: ${Hn(r)}`).join(", ");return e.nullable?`{ ${t} } | null`:`{ ${t} }`}case"union":return e.members?.map(Hn).join(" | ")||"any";default:return"any"}}function Kt(e){switch(e.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:e.items?Kt(e.items):{}};case"object":if(e.shape){let t={};for(let[n,r]of Object.entries(e.shape))t[n]=Kt(r);return{type:"object",properties:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(Kt)}:{};default:return{}}}function Qi(e){let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=Kt(s.type),s.required&&n.push(r);return{type:"object",properties:t,required:n.length>0?n:void 0,additionalProperties:!1}}function Tt(e,t,n,r={},s){let i=ht(t,e),o=new Map;for(let b of e.params){let w=je(b,s);if(w.name==="__destructured__"&&w.type.kind==="object"&&w.type.destructuredParams)for(let[E,T]of Object.entries(w.type.destructuredParams))o.set(E,{...T,description:i.params[E]});else w.description=i.params[w.name],o.set(w.name,w)}let a;n&&(a=ys(n));let c={depth:0,locals:new Map,parameters:o,atoms:new Set(Object.keys(r.atoms||{})),warnings:[],source:t,filename:r.filename||"<source>",options:r},l=Te(e.body,c),u=[],p=[],f=[];for(let[b,w]of o.entries())w.required?p.push(b):w.default!==void 0?f.push({name:b,defaultValue:w.default}):p.push(b);p.length>0&&u.push({op:"varsImport",keys:p});for(let{name:b,defaultValue:w}of f)u.push({op:"varsImport",keys:[b]}),u.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:b},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:b,value:w}]});u.push(...l);let m=Object.fromEntries(o),d={name:e.id?.name||"anonymous",description:i.description,parameters:m,returns:a},y=Qi(m);return{ast:{op:"seq",steps:u,inputSchema:y},signature:d,warnings:c.warnings}}function Te(e,t){let n=[];for(let r of e.body){let s=bt(r,t);s&&(Array.isArray(s)?n.push(...s):n.push(s))}return n}function bt(e,t){switch(e.type){case"VariableDeclaration":return eo(e,t);case"ExpressionStatement":return to(e,t);case"IfStatement":return ro(e,t);case"WhileStatement":return so(e,t);case"ForOfStatement":return io(e,t);case"TryStatement":return oo(e,t);case"ReturnStatement":return ao(e,t);case"ThrowStatement":throw new z("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",Z(e),t.source,t.filename);case"BlockStatement":return{op:"scope",steps:Te(e,pe(t))};case"EmptyStatement":return null;default:throw new z(`Unsupported statement type: ${e.type}`,Z(e),t.source,t.filename)}}function eo(e,t){let n=[],r=e.kind==="const",s=r?"constSet":"varSet";for(let i of e.declarations){if(i.id.type!=="Identifier")throw new z("Only simple variable names are supported",Z(i),t.source,t.filename);let o=i.id.name;if(i.init){let{step:a,resultVar:c}=De(i.init,t,o,r);a?n.push(a):c!==o&&n.push({op:s,key:o,value:c});let l=le(i.init);t.locals.set(o,l)}else{if(r)throw new z("const declarations must be initialized",Z(i),t.source,t.filename);n.push({op:"varSet",key:o,value:null}),t.locals.set(o,{kind:"any",nullable:!0})}}return n}function to(e,t){let n=e.expression;if(n.type==="AssignmentExpression")return no(n,t);if(n.type==="CallExpression"){let{step:r,resultVar:s}=De(n,t);return r||(s?{op:"varSet",key:"_",value:s}:null)}return t.warnings.push({message:"Expression statement has no effect",line:Z(e).line,column:Z(e).column}),null}function no(e,t){if(e.left.type!=="Identifier")throw new z("Only simple variable assignment is supported",Z(e),t.source,t.filename);let n=e.left.name,{step:r,resultVar:s}=De(e.right,t,n);return r||{op:"varSet",key:n,value:s}}function ro(e,t){let n=G(e.test,t),r=e.consequent.type==="BlockStatement"?Te(e.consequent,pe(t)):[bt(e.consequent,t)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?Te(e.alternate,pe(t)):[bt(e.alternate,t)].filter(Boolean)),{op:"if",condition:n,then:r,...s&&{else:s}}}function so(e,t){let n=G(e.test,t),r=e.body.type==="BlockStatement"?Te(e.body,pe(t)):[bt(e.body,t)].filter(Boolean);return{op:"while",condition:n,body:r}}function io(e,t){let n;if(e.left.type==="VariableDeclaration"){let o=e.left.declarations[0];if(o.id.type!=="Identifier")throw new z("Only simple variable names are supported in for...of",Z(e.left),t.source,t.filename);n=o.id.name}else if(e.left.type==="Identifier")n=e.left.name;else throw new z("Unsupported for...of left-hand side",Z(e.left),t.source,t.filename);let r=ne(e.right,t),s=pe(t);s.locals.set(n,{kind:"any"});let i=e.body.type==="BlockStatement"?Te(e.body,s):[bt(e.body,s)].filter(Boolean);return{op:"map",items:r,as:n,steps:i}}function oo(e,t){let n=Te(e.block,pe(t)),r,s;if(e.handler){let i=pe(t);e.handler.param?.type==="Identifier"&&(s=e.handler.param.name,i.locals.set(s,{kind:"any"})),r=Te(e.handler.body,i)}return{op:"try",try:n,...r&&{catch:r},...s&&{catchParam:s}}}function ao(e,t){if(!e.argument)return{op:"return",value:{}};let{step:n,resultVar:r}=De(e.argument,t,"__returnVal__");return n?[n,{op:"return",value:r}]:{op:"return",value:ne(e.argument,t)}}var hs=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),co=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),xt=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),lo=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 uo(e){if(e.callee.type==="Identifier"){let t=e.callee.name;return co.has(t)||xt.has(t)}if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"){let n=t.object.name;if(hs.has(n)||xt.has(n))return!0}if(t.property.type==="Identifier"){let n=t.property.name;if(lo.has(n))return!0}}return!1}function fo(e){if(e.object.type==="Identifier"){let t=e.object.name;return hs.has(t)||xt.has(t)}return!1}var gs={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 po(e){if(e.callee.type==="Identifier"){let t=e.callee.name;if(xt.has(t))return gs[t]||`${t} is not available in AsyncJS.`}if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"){let n=t.object.name;if(xt.has(n))return gs[n]||`${n} is not available in AsyncJS.`}}return null}function bs(e){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."}[e]||" Use factory functions or object literals instead."}function De(e,t,n,r){let s=r?"constSet":"varSet";if(e.type==="ChainExpression")return De(e.expression,t,n,r);if(e.type==="NewExpression"){let o=e,a="constructor";o.callee.type==="Identifier"&&(a=o.callee.name);let c=bs(a);throw new z(`The 'new' keyword is not supported in AsyncJS.${c}`,Z(e),t.source,t.filename)}if(e.type==="CallExpression"){let o=po(e);if(o)throw new z(o,Z(e),t.source,t.filename)}if(e.type==="CallExpression"&&uo(e)){let o=G(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="MemberExpression"&&fo(e)){let o=G(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="CallExpression")return mo(e,t,n,r);if(e.type==="TemplateLiteral")return go(e,t,n,r);if(e.type==="BinaryExpression"||e.type==="LogicalExpression"||e.type==="UnaryExpression"){let o=G(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}return{step:null,resultVar:ne(e,t)}}function mo(e,t,n,r){let s,i=!1,o;if(e.callee.type==="Identifier")s=e.callee.name;else if(e.callee.type==="MemberExpression"){let c=e.callee;if(c.property.type==="Identifier")s=c.property.name,i=!0,o=ne(c.object,t);else throw new z("Computed method names are not supported",Z(e),t.source,t.filename)}else throw new z("Only named function calls are supported",Z(e),t.source,t.filename);if(i)return yo(s,o,e.arguments,t,n,r);s==="console"&&e.callee.type;let a=ho(e,t);return{step:{op:s,...a,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function yo(e,t,n,r,s,i){switch(e){case"map":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=pe(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")u=Te(o.body,l);else{let{step:p,resultVar:f}=De(o.body,l,"result");u=p?[p]:[{op:"varSet",key:"result",value:f}]}return{step:{op:"map",items:t,as:c,steps:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"filter":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=pe(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new z("filter callback must be an expression, not a block",Z(n[0]),r.source,r.filename);return u=G(o.body,l),{step:{op:"filter",items:t,as:c,condition:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"find":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=pe(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new z("find callback must be an expression, not a block",Z(n[0]),r.source,r.filename);return u=G(o.body,l),{step:{op:"find",items:t,as:c,condition:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"reduce":if(n.length>=2&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=o.params[1],l=a?.type==="Identifier"?a.name:"acc",u=c?.type==="Identifier"?c.name:"item",p=pe(r);p.locals.set(l,{kind:"any"}),p.locals.set(u,{kind:"any"});let f;if(o.body.type==="BlockStatement")f=Te(o.body,p);else{let{step:d,resultVar:y}=De(o.body,p,"result");f=d?[d]:[{op:"varSet",key:"result",value:y}]}let m=ne(n[1],r);return{step:{op:"reduce",items:t,as:u,accumulator:l,initial:m,steps:f,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"slice":break;case"push":return{step:{op:"push",list:t,item:ne(n[0],r),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"join":return{step:{op:"join",list:t,sep:n.length>0?ne(n[0],r):"",...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"split":return{step:{op:"split",str:t,sep:n.length>0?ne(n[0],r):"",...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}return r.warnings.push({message:`Unknown method '${e}' - treating as atom call`,line:0,column:0}),{step:{op:e,receiver:t,args:n.map(o=>ne(o,r)),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}function go(e,t,n,r){let s="",i={};for(let o=0;o<e.quasis.length;o++)if(s+=e.quasis[o].value.cooked||e.quasis[o].value.raw,o<e.expressions.length){let a=e.expressions[o],c=`_${o}`;i[c]=ne(a,t),s+=`{{${c}}}`}return{step:{op:"template",tmpl:s,vars:i,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function G(e,t){switch(e.type){case"Literal":return{$expr:"literal",value:e.value};case"Identifier":return{$expr:"ident",name:e.name};case"MemberExpression":{let n=e,r=G(n.object,t),s=n.optional===!0;if(n.computed){let o=n.property;if(o.type==="Literal")return{$expr:"member",object:r,property:String(o.value),computed:!0,...s&&{optional:!0}};throw new z("Computed member access with variables not yet supported",Z(e),t.source,t.filename)}let i=n.property.name;return{$expr:"member",object:r,property:i,...s&&{optional:!0}}}case"ChainExpression":return G(e.expression,t);case"BinaryExpression":{let n=e;return{$expr:"binary",op:n.operator,left:G(n.left,t),right:G(n.right,t)}}case"LogicalExpression":{let n=e;return{$expr:"logical",op:n.operator,left:G(n.left,t),right:G(n.right,t)}}case"UnaryExpression":{let n=e;return{$expr:"unary",op:n.operator,argument:G(n.argument,t)}}case"ConditionalExpression":{let n=e;return{$expr:"conditional",test:G(n.test,t),consequent:G(n.consequent,t),alternate:G(n.alternate,t)}}case"ArrayExpression":return{$expr:"array",elements:e.elements.filter(r=>r!==null).map(r=>G(r,t))};case"ObjectExpression":{let n=e,r=[];for(let s of n.properties)if(s.type==="Property"){let i=s.key.type==="Identifier"?s.key.name:String(s.key.value);r.push({key:i,value:G(s.value,t)})}return{$expr:"object",properties:r}}case"CallExpression":{let n=e;if(n.callee.type==="MemberExpression"){let r=n.callee,s=r.property.type==="Identifier"?r.property.name:String(r.property.value),i=r.optional===!0||n.optional===!0;return{$expr:"methodCall",object:G(r.object,t),method:s,arguments:n.arguments.map(o=>G(o,t)),...i&&{optional:!0}}}if(n.callee.type==="Identifier")return{$expr:"call",callee:n.callee.name,arguments:n.arguments.map(s=>G(s,t))};throw new z("Complex function calls in expressions should be lifted to statements",Z(e),t.source,t.filename)}case"NewExpression":{let n=e,r="constructor";n.callee.type==="Identifier"&&(r=n.callee.name);let s=bs(r);throw new z(`The 'new' keyword is not supported in AsyncJS.${s}`,Z(e),t.source,t.filename)}case"TemplateLiteral":throw new z("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",Z(e),t.source,t.filename);default:throw new z(`Unsupported expression type in condition: ${e.type}`,Z(e),t.source,t.filename)}}function ne(e,t){switch(e.type){case"Literal":return e.value;case"Identifier":return e.name;case"MemberExpression":{let n=e;if(n.optional===!0)return G(e,t);let s=ne(n.object,t);if(s&&typeof s=="object"&&s.$expr){let o=n.computed?String(n.property.value):n.property.name;return{$expr:"member",object:s,property:o,...n.computed&&{computed:!0}}}if(n.computed)return`${s}[${ne(n.property,t)}]`;let i=n.property.name;return typeof s=="string"?`${s}.${i}`:s&&s.$kind==="arg"?{$kind:"arg",path:`${s.path}.${i}`}:`${s}.${i}`}case"ChainExpression":return ne(e.expression,t);case"ArrayExpression":return e.elements.map(n=>n?ne(n,t):null);case"ObjectExpression":{let n={};for(let r of e.properties)if(r.type==="Property"){let s=r.key.type==="Identifier"?r.key.name:String(r.key.value);n[s]=ne(r.value,t)}return n}case"TemplateLiteral":return G(e,t);case"CallExpression":return G(e,t);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return G(e,t);default:return null}}function ho(e,t){if(e.arguments.length===1&&e.arguments[0].type==="ObjectExpression"){let n=e.arguments[0],r={};for(let s of n.properties)if(s.type==="Property"){let i=s.key.type==="Identifier"?s.key.name:String(s.key.value);r[i]=ne(s.value,t)}return r}return{args:e.arguments.map(n=>ne(n,t))}}import{parseExpressionAt as Ks}from"acorn";function bo(e,t){let n=t;for(;n>0&&e[n-1]!==`
49
- `;)n--;if(e.slice(n,t).includes("//"))return!0;let s=0,i=!1;for(;s<t;)!i&&e.slice(s,s+2)==="/*"?(i=!0,s+=2):i&&e.slice(s,s+2)==="*/"?(i=!1,s+=2):s++;return i}function xo(e){let t=[],n=/\/\*test\s+'([^']*)'\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+"([^"]*)"\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+`([^`]*)`\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,r;for(;(r=n.exec(e))!==null;){let s=r[1]||r[3]||r[5]||`embedded test ${t.length+1}`,i=(r[2]||r[4]||r[6]||r[7]||"").trim();t.push({description:s,body:i,line:Zn(e,r.index)})}return t}function Yn(e){let t=[],n=[],r=xo(e);t.push(...r);let s=/test\s+'([^']*)'\s*\{|test\s+"([^"]*)"\s*\{|test\s+`([^`]*)`\s*\{|test\s*\(\s*'([^']*)'\s*\)\s*\{|test\s*\(\s*"([^"]*)"\s*\)\s*\{|test\s*\(\s*`([^`]*)`\s*\)\s*\{|test\s*\{/g,i=/mock\s*\{/g,o=e,a,c=[];for(;(a=s.exec(e))!==null;){let f=a.index;if(bo(e,f))continue;let m=a[1]||a[2]||a[3]||a[4]||a[5]||a[6]||`test ${t.length+1}`,d=a.index+a[0].length,y=xs(e,d-1);if(y===-1)continue;let b=e.slice(d,y).trim();t.push({description:m,body:b,line:Zn(e,f)}),c.push({start:f,end:y+1,desc:m})}let l=[];for(;(a=i.exec(e))!==null;){let f=a.index,m=a.index+a[0].length,d=xs(e,m-1);if(d===-1)continue;let y=e.slice(m,d).trim();n.push({body:y,line:Zn(e,f)}),l.push({start:f,end:d+1})}let u=[...c,...l].sort((f,m)=>m.start-f.start);for(let f of u)o=o.slice(0,f.start)+o.slice(f.end);o=o.replace(/\n\s*\n\s*\n/g,`
50
+ `)),n.description=f.trim(),n}}let i=r.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!i)return n;let o=i[0],a=o.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);a&&(n.description=a[1].trim());let c=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,l;for(;(l=c.exec(o))!==null;)n.params[l[1]]=l[2].trim();return n}import{parseExpressionAt as bo}from"acorn";function ie(e){switch(e.type){case"Literal":{let t=e.value;if(t===null)return{kind:"null"};if(typeof t=="string")return{kind:"string"};if(typeof t=="number"){let n=e.raw;return n&&n.includes(".")?{kind:"number"}:{kind:"integer"}}return typeof t=="boolean"?{kind:"boolean"}:{kind:"any"}}case"ArrayExpression":{let t=e.elements;if(t.length===0)return{kind:"array",items:{kind:"any"}};let n=t.filter(o=>o!=null).map(o=>ie(o));if(n.length===0)return{kind:"array",items:{kind:"any"}};let r=new Map;for(let o of n){let a=JSON.stringify(o);r.has(a)||r.set(a,o)}let s=[...r.values()];return{kind:"array",items:s.length===1?s[0]:{kind:"union",members:s}}}case"ObjectExpression":{let t=e.properties,n={};for(let r of t)if(r.type==="Property"&&r.key.type==="Identifier"){let s=r.key.name;n[s]=ie(r.value)}return{kind:"object",shape:n}}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="||"?ie(n):t==="&&"||t==="??"?ie(r):{kind:"any"}}case"BinaryExpression":{let{operator:t,left:n,right:r}=e;if(t==="|"){let s=ie(n),i=ie(r);return i.kind==="null"?{...s,nullable:!0}:s.kind==="null"?{...i,nullable:!0}:{kind:"union",members:[s,i]}}return{kind:"any"}}case"Identifier":return e.name==="undefined"?{kind:"undefined"}:{kind:"any"};case"ArrowFunctionExpression":case"FunctionExpression":{let t=e,n=t.params.map(s=>xo(s)),r={kind:"any"};return t.type==="ArrowFunctionExpression"&&t.body&&t.body.type!=="BlockStatement"&&(r=ie(t.body)),{kind:"function",params:n,returns:r}}case"UnaryExpression":{let t=e.operator,n=e.argument;if(t==="+"&&n.type==="Literal"&&typeof n.value=="number")return{kind:"non-negative-integer"};if(t==="-"&&n.type==="Literal"&&typeof n.value=="number"){let s=n.raw;return s&&s.includes(".")?{kind:"number"}:{kind:"integer"}}return{kind:"any"}}default:return{kind:"any"}}}function xo(e){return e.type==="Identifier"?{name:e.name,type:{kind:"any"}}:e.type==="AssignmentPattern"&&e.left?.type==="Identifier"?{name:e.left.name,type:ie(e.right)}:e.type==="RestElement"&&e.argument?.type==="Identifier"?{name:`...${e.argument.name}`,type:{kind:"array",items:{kind:"any"}}}:{name:"?",type:{kind:"any"}}}function Ne(e,t){if(e.type==="Identifier")return{name:e.name,type:{kind:"any"},required:!0};if(e.type==="AssignmentPattern"){let{left:n,right:r}=e;if(n.type!=="Identifier")throw new H("Only simple parameter names are supported",Z(e));let s=n.name,i=t?.has(s)??!1,o=ie(r),a=Te(r);return{name:s,type:o,required:i,default:i?null:a,example:a,loc:{start:e.start,end:e.end}}}if(e.type==="ObjectPattern"){let n=e.properties,r={},s={};for(let i of n)if(i.type==="Property"){let o=i.key.type==="Identifier"?i.key.name:String(i.key.value);if(i.value.type==="Identifier")r[o]={kind:"any"},s[o]={name:o,type:{kind:"any"},required:!0};else if(i.value.type==="AssignmentPattern"){let a=Ne(i.value,t),c=t?.has(o)??!1;r[o]=a.type,s[o]={name:o,type:a.type,required:c,default:c?null:a.example,example:a.example}}}return{name:"__destructured__",type:{kind:"object",shape:r,destructuredParams:s},required:!0}}throw new H(`Unsupported parameter pattern: ${e.type}`,Z(e))}function Te(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(t=>t?Te(t):null);case"ObjectExpression":{let t={};for(let n of e.properties)n.type==="Property"&&n.key.type==="Identifier"&&(t[n.key.name]=Te(n.value));return t}case"UnaryExpression":if(e.operator==="-"){let t=Te(e.argument);return typeof t=="number"?-t:void 0}if(e.operator==="+"){let t=Te(e.argument);return typeof t=="number"?+t:void 0}return;case"BinaryExpression":{let{operator:t,left:n}=e;return t==="|"?Te(n):void 0}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="&&"&&n.type==="Literal"&&n.value===null?null:t==="||"||t==="??"?Te(n)??Te(r):void 0}default:return}}function _s(e){try{let t=bo(e,0,{ecmaVersion:2022});return ie(t)}catch{return{kind:"any"}}}function tr(e){switch(e.kind){case"string":return e.nullable?"string | null":"string";case"number":return e.nullable?"number | null":"number";case"integer":return e.nullable?"integer | null":"integer";case"non-negative-integer":return e.nullable?"non-negative integer | null":"non-negative integer";case"boolean":return e.nullable?"boolean | null":"boolean";case"null":return"null";case"any":return"any";case"array":{let t=e.items?tr(e.items):"any";return e.nullable?`${t}[] | null`:`${t}[]`}case"object":{if(!e.shape||Object.keys(e.shape).length===0)return e.nullable?"object | null":"object";let t=Object.entries(e.shape).map(([n,r])=>`${n}: ${tr(r)}`).join(", ");return e.nullable?`{ ${t} } | null`:`{ ${t} }`}case"union":return e.members?.map(tr).join(" | ")||"any";default:return"any"}}function Yt(e){switch(e.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:e.items?Yt(e.items):{}};case"object":if(e.shape){let t={};for(let[n,r]of Object.entries(e.shape))t[n]=Yt(r);return{type:"object",properties:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(Yt)}:{};default:return{}}}function To(e){let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=Yt(s.type),s.required&&n.push(r);return{type:"object",properties:t,required:n.length>0?n:void 0,additionalProperties:!1}}function Et(e,t,n,r={},s){let i=Tt(t,e),o=new Map;for(let b of e.params){let w=Ne(b,s);if(w.name==="__destructured__"&&w.type.kind==="object"&&w.type.destructuredParams)for(let[S,T]of Object.entries(w.type.destructuredParams))o.set(S,{...T,description:i.params[S]});else w.description=i.params[w.name],o.set(w.name,w)}let a;n&&(a=_s(n));let c={depth:0,locals:new Map,parameters:o,atoms:new Set(Object.keys(r.atoms||{})),warnings:[],source:t,filename:r.filename||"<source>",options:r},l=Se(e.body,c),u=[],p=[],f=[];for(let[b,w]of o.entries())w.required?p.push(b):w.default!==void 0?f.push({name:b,defaultValue:w.default}):p.push(b);p.length>0&&u.push({op:"varsImport",keys:p});for(let{name:b,defaultValue:w}of f)u.push({op:"varsImport",keys:[b]}),u.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:b},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:b,value:w}]});u.push(...l);let m=Object.fromEntries(o),d={name:e.id?.name||"anonymous",description:i.description,parameters:m,returns:a},y=To(m);return{ast:{op:"seq",steps:u,inputSchema:y},signature:d,warnings:c.warnings}}function Se(e,t){let n=[];for(let r of e.body){let s=St(r,t);s&&(Array.isArray(s)?n.push(...s):n.push(s))}return n}function St(e,t){switch(e.type){case"VariableDeclaration":return So(e,t);case"ExpressionStatement":return wo(e,t);case"IfStatement":return $o(e,t);case"WhileStatement":return _o(e,t);case"ForOfStatement":return ko(e,t);case"TryStatement":return jo(e,t);case"ReturnStatement":return vo(e,t);case"ThrowStatement":throw new H("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",Z(e),t.source,t.filename);case"BlockStatement":return{op:"scope",steps:Se(e,de(t))};case"EmptyStatement":return null;default:throw new H(`Unsupported statement type: ${e.type}`,Z(e),t.source,t.filename)}}function So(e,t){let n=[],r=e.kind==="const",s=r?"constSet":"varSet";for(let i of e.declarations){if(i.id.type!=="Identifier")throw new H("Only simple variable names are supported",Z(i),t.source,t.filename);let o=i.id.name;if(i.init){let{step:a,resultVar:c}=Fe(i.init,t,o,r);a?n.push(a):c!==o&&n.push({op:s,key:o,value:c});let l=ie(i.init);t.locals.set(o,l)}else{if(r)throw new H("const declarations must be initialized",Z(i),t.source,t.filename);n.push({op:"varSet",key:o,value:null}),t.locals.set(o,{kind:"any",nullable:!0})}}return n}function wo(e,t){let n=e.expression;if(n.type==="AssignmentExpression")return Eo(n,t);if(n.type==="CallExpression"){let{step:r,resultVar:s}=Fe(n,t);return r||(s?{op:"varSet",key:"_",value:s}:null)}return t.warnings.push({message:"Expression statement has no effect",line:Z(e).line,column:Z(e).column}),null}function Eo(e,t){if(e.left.type!=="Identifier")throw new H("Only simple variable assignment is supported",Z(e),t.source,t.filename);let n=e.left.name,{step:r,resultVar:s}=Fe(e.right,t,n);return r||{op:"varSet",key:n,value:s}}function $o(e,t){let n=K(e.test,t),r=e.consequent.type==="BlockStatement"?Se(e.consequent,de(t)):[St(e.consequent,t)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?Se(e.alternate,de(t)):[St(e.alternate,t)].filter(Boolean)),{op:"if",condition:n,then:r,...s&&{else:s}}}function _o(e,t){let n=K(e.test,t),r=e.body.type==="BlockStatement"?Se(e.body,de(t)):[St(e.body,t)].filter(Boolean);return{op:"while",condition:n,body:r}}function ko(e,t){let n;if(e.left.type==="VariableDeclaration"){let o=e.left.declarations[0];if(o.id.type!=="Identifier")throw new H("Only simple variable names are supported in for...of",Z(e.left),t.source,t.filename);n=o.id.name}else if(e.left.type==="Identifier")n=e.left.name;else throw new H("Unsupported for...of left-hand side",Z(e.left),t.source,t.filename);let r=oe(e.right,t),s=de(t);s.locals.set(n,{kind:"any"});let i=e.body.type==="BlockStatement"?Se(e.body,s):[St(e.body,s)].filter(Boolean);return{op:"map",items:r,as:n,steps:i}}function jo(e,t){let n=Se(e.block,de(t)),r,s;if(e.handler){let i=de(t);e.handler.param?.type==="Identifier"&&(s=e.handler.param.name,i.locals.set(s,{kind:"any"})),r=Se(e.handler.body,i)}return{op:"try",try:n,...r&&{catch:r},...s&&{catchParam:s}}}function vo(e,t){if(!e.argument)return{op:"return",value:{}};let{step:n,resultVar:r}=Fe(e.argument,t,"__returnVal__");return n?[n,{op:"return",value:r}]:{op:"return",value:oe(e.argument,t)}}var js=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),Ao=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),wt=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),Mo=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 Co(e){if(e.callee.type==="Identifier"){let t=e.callee.name;return Ao.has(t)||wt.has(t)}if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"){let n=t.object.name;if(js.has(n)||wt.has(n))return!0}if(t.property.type==="Identifier"){let n=t.property.name;if(Mo.has(n))return!0}}return!1}function No(e){if(e.object.type==="Identifier"){let t=e.object.name;return js.has(t)||wt.has(t)}return!1}var ks={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 Ro(e){if(e.callee.type==="Identifier"){let t=e.callee.name;if(wt.has(t))return ks[t]||`${t} is not available in AsyncJS.`}if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"){let n=t.object.name;if(wt.has(n))return ks[n]||`${n} is not available in AsyncJS.`}}return null}function vs(e){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."}[e]||" Use factory functions or object literals instead."}function Fe(e,t,n,r){let s=r?"constSet":"varSet";if(e.type==="ChainExpression")return Fe(e.expression,t,n,r);if(e.type==="NewExpression"){let o=e,a="constructor";o.callee.type==="Identifier"&&(a=o.callee.name);let c=vs(a);throw new H(`The 'new' keyword is not supported in AsyncJS.${c}`,Z(e),t.source,t.filename)}if(e.type==="CallExpression"){let o=Ro(e);if(o)throw new H(o,Z(e),t.source,t.filename)}if(e.type==="CallExpression"&&Co(e)){let o=K(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="MemberExpression"&&No(e)){let o=K(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="CallExpression")return Po(e,t,n,r);if(e.type==="TemplateLiteral")return Do(e,t,n,r);if(e.type==="BinaryExpression"||e.type==="LogicalExpression"||e.type==="UnaryExpression"){let o=K(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}return{step:null,resultVar:oe(e,t)}}function Po(e,t,n,r){let s,i=!1,o;if(e.callee.type==="Identifier")s=e.callee.name;else if(e.callee.type==="MemberExpression"){let c=e.callee;if(c.property.type==="Identifier")s=c.property.name,i=!0,o=oe(c.object,t);else throw new H("Computed method names are not supported",Z(e),t.source,t.filename)}else throw new H("Only named function calls are supported",Z(e),t.source,t.filename);if(i)return Io(s,o,e.arguments,t,n,r);s==="console"&&e.callee.type;let a=Oo(e,t);return{step:{op:s,...a,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function Io(e,t,n,r,s,i){switch(e){case"map":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=de(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")u=Se(o.body,l);else{let{step:p,resultVar:f}=Fe(o.body,l,"result");u=p?[p]:[{op:"varSet",key:"result",value:f}]}return{step:{op:"map",items:t,as:c,steps:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"filter":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=de(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new H("filter callback must be an expression, not a block",Z(n[0]),r.source,r.filename);return u=K(o.body,l),{step:{op:"filter",items:t,as:c,condition:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"find":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=de(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new H("find callback must be an expression, not a block",Z(n[0]),r.source,r.filename);return u=K(o.body,l),{step:{op:"find",items:t,as:c,condition:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"reduce":if(n.length>=2&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let o=n[0],a=o.params[0],c=o.params[1],l=a?.type==="Identifier"?a.name:"acc",u=c?.type==="Identifier"?c.name:"item",p=de(r);p.locals.set(l,{kind:"any"}),p.locals.set(u,{kind:"any"});let f;if(o.body.type==="BlockStatement")f=Se(o.body,p);else{let{step:d,resultVar:y}=Fe(o.body,p,"result");f=d?[d]:[{op:"varSet",key:"result",value:y}]}let m=oe(n[1],r);return{step:{op:"reduce",items:t,as:u,accumulator:l,initial:m,steps:f,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"slice":break;case"push":return{step:{op:"push",list:t,item:oe(n[0],r),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"join":return{step:{op:"join",list:t,sep:n.length>0?oe(n[0],r):"",...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"split":return{step:{op:"split",str:t,sep:n.length>0?oe(n[0],r):"",...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}return r.warnings.push({message:`Unknown method '${e}' - treating as atom call`,line:0,column:0}),{step:{op:e,receiver:t,args:n.map(o=>oe(o,r)),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}function Do(e,t,n,r){let s="",i={};for(let o=0;o<e.quasis.length;o++)if(s+=e.quasis[o].value.cooked||e.quasis[o].value.raw,o<e.expressions.length){let a=e.expressions[o],c=`_${o}`;i[c]=oe(a,t),s+=`{{${c}}}`}return{step:{op:"template",tmpl:s,vars:i,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function K(e,t){switch(e.type){case"Literal":return{$expr:"literal",value:e.value};case"Identifier":return{$expr:"ident",name:e.name};case"MemberExpression":{let n=e,r=K(n.object,t),s=n.optional===!0;if(n.computed){let o=n.property;return o.type==="Literal"?{$expr:"member",object:r,property:String(o.value),computed:!0,...s&&{optional:!0}}:{$expr:"member",object:r,property:K(o,t),computed:!0,...s&&{optional:!0}}}let i=n.property.name;return{$expr:"member",object:r,property:i,...s&&{optional:!0}}}case"ChainExpression":return K(e.expression,t);case"BinaryExpression":{let n=e;return{$expr:"binary",op:n.operator,left:K(n.left,t),right:K(n.right,t)}}case"LogicalExpression":{let n=e;return{$expr:"logical",op:n.operator,left:K(n.left,t),right:K(n.right,t)}}case"UnaryExpression":{let n=e;return{$expr:"unary",op:n.operator,argument:K(n.argument,t)}}case"ConditionalExpression":{let n=e;return{$expr:"conditional",test:K(n.test,t),consequent:K(n.consequent,t),alternate:K(n.alternate,t)}}case"ArrayExpression":return{$expr:"array",elements:e.elements.filter(r=>r!==null).map(r=>K(r,t))};case"ObjectExpression":{let n=e,r=[];for(let s of n.properties)if(s.type==="Property"){let i=s.key.type==="Identifier"?s.key.name:String(s.key.value);r.push({key:i,value:K(s.value,t)})}return{$expr:"object",properties:r}}case"CallExpression":{let n=e;if(n.callee.type==="MemberExpression"){let r=n.callee,s=r.property.type==="Identifier"?r.property.name:String(r.property.value),i=r.optional===!0||n.optional===!0;return{$expr:"methodCall",object:K(r.object,t),method:s,arguments:n.arguments.map(o=>K(o,t)),...i&&{optional:!0}}}if(n.callee.type==="Identifier")return{$expr:"call",callee:n.callee.name,arguments:n.arguments.map(s=>K(s,t))};throw new H("Complex function calls in expressions should be lifted to statements",Z(e),t.source,t.filename)}case"NewExpression":{let n=e,r="constructor";n.callee.type==="Identifier"&&(r=n.callee.name);let s=vs(r);throw new H(`The 'new' keyword is not supported in AsyncJS.${s}`,Z(e),t.source,t.filename)}case"TemplateLiteral":throw new H("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",Z(e),t.source,t.filename);default:throw new H(`Unsupported expression type in condition: ${e.type}`,Z(e),t.source,t.filename)}}function oe(e,t){switch(e.type){case"Literal":return e.value;case"Identifier":return e.name;case"MemberExpression":{let n=e;if(n.optional===!0)return K(e,t);let s=oe(n.object,t);if(s&&typeof s=="object"&&s.$expr){let o=n.computed?String(n.property.value):n.property.name;return{$expr:"member",object:s,property:o,...n.computed&&{computed:!0}}}if(n.computed)return K(e,t);let i=n.property.name;return typeof s=="string"?`${s}.${i}`:s&&s.$kind==="arg"?{$kind:"arg",path:`${s.path}.${i}`}:`${s}.${i}`}case"ChainExpression":return oe(e.expression,t);case"ArrayExpression":return e.elements.map(n=>n?oe(n,t):null);case"ObjectExpression":{let n={};for(let r of e.properties)if(r.type==="Property"){let s=r.key.type==="Identifier"?r.key.name:String(r.key.value);n[s]=oe(r.value,t)}return n}case"TemplateLiteral":return K(e,t);case"CallExpression":return K(e,t);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return K(e,t);default:return null}}function Oo(e,t){if(e.arguments.length===1&&e.arguments[0].type==="ObjectExpression"){let n=e.arguments[0],r={};for(let s of n.properties)if(s.type==="Property"){let i=s.key.type==="Identifier"?s.key.name:String(s.key.value);r[i]=oe(s.value,t)}return r}return{args:e.arguments.map(n=>oe(n,t))}}import{parseExpressionAt as oi}from"acorn";function Bo(e,t){let n=t;for(;n>0&&e[n-1]!==`
51
+ `;)n--;if(e.slice(n,t).includes("//"))return!0;let s=0,i=!1;for(;s<t;)!i&&e.slice(s,s+2)==="/*"?(i=!0,s+=2):i&&e.slice(s,s+2)==="*/"?(i=!1,s+=2):s++;return i}function Lo(e){let t=[],n=/\/\*test\s+'([^']*)'\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+"([^"]*)"\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s+`([^`]*)`\s*\{([\s\S]*?)\}\s*\*\/|\/\*test\s*\{([\s\S]*?)\}\s*\*\//g,r;for(;(r=n.exec(e))!==null;){let s=r[1]||r[3]||r[5]||`embedded test ${t.length+1}`,i=(r[2]||r[4]||r[6]||r[7]||"").trim();t.push({description:s,body:i,line:nr(e,r.index)})}return t}function $t(e){let t=[],n=[],r=Lo(e);t.push(...r);let s=/test\s+'([^']*)'\s*\{|test\s+"([^"]*)"\s*\{|test\s+`([^`]*)`\s*\{|test\s*\(\s*'([^']*)'\s*\)\s*\{|test\s*\(\s*"([^"]*)"\s*\)\s*\{|test\s*\(\s*`([^`]*)`\s*\)\s*\{|test\s*\{/g,i=/mock\s*\{/g,o=e,a,c=[];for(;(a=s.exec(e))!==null;){let f=a.index;if(Bo(e,f))continue;let m=a[1]||a[2]||a[3]||a[4]||a[5]||a[6]||`test ${t.length+1}`,d=a.index+a[0].length,y=As(e,d-1);if(y===-1)continue;let b=e.slice(d,y).trim();t.push({description:m,body:b,line:nr(e,f)}),c.push({start:f,end:y+1,desc:m})}let l=[];for(;(a=i.exec(e))!==null;){let f=a.index,m=a.index+a[0].length,d=As(e,m-1);if(d===-1)continue;let y=e.slice(m,d).trim();n.push({body:y,line:nr(e,f)}),l.push({start:f,end:d+1})}let u=[...c,...l].sort((f,m)=>m.start-f.start);for(let f of u)o=o.slice(0,f.start)+o.slice(f.end);o=o.replace(/\n\s*\n\s*\n/g,`
50
52
 
51
- `).trim();let p=To(t,n);return{code:o,tests:t,mocks:n,testRunner:p}}function xs(e,t){let n=0,r=null,s=!1;for(let i=t;i<e.length;i++){let o=e[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(!r&&(o==='"'||o==="'"||o==="`")){r=o;continue}if(r===o){r=null;continue}if(!r&&(o==="{"&&n++,o==="}"&&(n--,n===0)))return i}return-1}function Zn(e,t){return e.slice(0,t).split(`
52
- `).length}function To(e,t){if(e.length===0)return"// No tests defined";let n=t.map(s=>s.body).join(`
53
+ `).trim();let p=Fo(t,n);return{code:o,tests:t,mocks:n,testRunner:p}}function As(e,t){let n=0,r=null,s=!1;for(let i=t;i<e.length;i++){let o=e[i];if(s){s=!1;continue}if(o==="\\"){s=!0;continue}if(!r&&(o==='"'||o==="'"||o==="`")){r=o;continue}if(r===o){r=null;continue}if(!r&&(o==="{"&&n++,o==="}"&&(n--,n===0)))return i}return-1}function nr(e,t){return e.slice(0,t).split(`
54
+ `).length}function Fo(e,t){if(e.length===0)return"// No tests defined";let n=t.map(s=>s.body).join(`
53
55
  `);return`(async () => {
54
56
  const __results = []
55
57
 
@@ -72,13 +74,13 @@ const __failed = __results.filter(r => !r.passed).length
72
74
 
73
75
  // Return summary
74
76
  return { passed: __passed, failed: __failed, results: __results }
75
- })()`.trim()}var Ts=`
77
+ })()`.trim()}var Ms=`
76
78
  function assert(condition, message) {
77
79
  if (!condition) {
78
80
  throw new Error(message || 'Assertion failed')
79
81
  }
80
82
  }
81
- `,Ss=`
83
+ `,Cs=`
82
84
  function expect(actual) {
83
85
  const deepEqual = (a, b) => {
84
86
  if (a === b) return true
@@ -169,52 +171,52 @@ function expect(actual) {
169
171
  }
170
172
  }
171
173
  }
172
- `,So=Ts+`
173
- `+Ss;import{validate as _s,s as mn}from"tosijs-schema";function Ee(e){if(e.nullable)return{anyOf:[Ee({...e,nullable:!1}),{type:"null"}]};switch(e.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"integer":return{type:"integer"};case"non-negative-integer":return{type:"integer",minimum:0};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"undefined":return{};case"any":return{};case"array":return e.items?{type:"array",items:Ee(e.items)}:{type:"array"};case"object":if(e.shape){let t={},n=[];for(let[r,s]of Object.entries(e.shape))t[r]=Ee(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(Ee)}:{};default:return{}}}function Oe(e){if(e===null)return{type:"null"};if(e===void 0)return{};switch(typeof e){case"string":return{type:"string"};case"number":return Number.isInteger(e)?{type:"integer"}:{type:"number"};case"boolean":return{type:"boolean"};case"object":{if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:Oe(e[0])};let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=Oe(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}default:return{}}}function zt(e){let t={},n=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?t[i]=Ee(o.type):o?.example!==void 0?t[i]=Oe(o.example):t[i]={},o?.required!==!1&&n.push(i),o?.example!==void 0&&(t[i].examples=[o.example]);let r={type:"object",properties:t,required:n},s;return e.returns&&(e.returns.type?.kind?s=Ee(e.returns.type):e.returns.example!==void 0&&(s=Oe(e.returns.example))),{input:r,output:s}}import{validate as Xn,filter as wo,s as Gt}from"tosijs-schema";function ve(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function ws(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function Eo(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function ee(e,t,n,r){let s,i,o,a=n,c=r;if(typeof e=="string")if(s=e,typeof t=="function")i=t,a!==void 0&&(o=Gt.infer(a));else if(t===void 0&&a!==void 0)o=Gt.infer(a);else if(ws(t))o=t;else if(Eo(t))o=t;else if(t!==void 0)a=t,c=a,o=Gt.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else ws(e),o=e,s=_o(o);let l;if(o){let p=o?.schema??o;p&&typeof p=="object"&&Array.isArray(p.examples)&&(l=p.examples)}return a===void 0&&l&&l.length>0&&(a=l[0]),{description:s,check:p=>i?i(p):o?Xn(p,o):!1,schema:o,predicate:i,example:a,examples:l,default:c,toJSONSchema(){if(o){let p=o?.schema??o;if(p&&typeof p=="object"&&"type"in p)return p}return a!==void 0?Oe(a):{description:s}},strip(p){return o?wo(p,o):p},__runtimeType:!0}}function _o(e){let t=e?.schema??e;if(t&&typeof t=="object"&&"type"in t){let n=t;switch(n.type){case"string":return n.format?`string (${n.format})`:n.pattern?`string matching ${n.pattern}`:n.minLength!==void 0&&n.maxLength!==void 0?`string (${n.minLength}-${n.maxLength} chars)`:"string";case"number":case"integer":return n.minimum!==void 0&&n.maximum!==void 0?`${n.type} (${n.minimum}-${n.maximum})`:n.minimum!==void 0?`${n.type} >= ${n.minimum}`:n.maximum!==void 0?`${n.type} <= ${n.maximum}`:n.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var Ht=ee("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),Zt=ee("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),Yt=ee("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),Xt=ee("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),Qt=ee("positive integer",e=>typeof e!="number"?`expected positive integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?e<=0?`${e} is not positive`:!0:`${e} is not an integer`),en=ee("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),tn=ee("email address",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?!0:`"${e}" is not a valid email`),Qn=e=>{try{return new URL(e),!0}catch{return!1}},nn=ee("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:Qn(e)?!0:`"${e}" is not a valid URL`),rn=ee("UUID",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?!0:`"${e}" is not a valid UUID`),er=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},tr=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},nr=ee("ISO 8601 timestamp",e=>typeof e=="string"&&er(e)),rr=ee("date (YYYY-MM-DD)",e=>typeof e=="string"&&tr(e));function sn(e){return ee(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function on(e){return ee(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function an(e,t,...n){if(typeof e=="string"&&Array.isArray(t)){let i=e,o=t,a=new Set(o);return{description:i,check:l=>a.has(l),toJSONSchema:()=>({enum:o}),strip:l=>l,__runtimeType:!0,values:o}}let r=[];ve(e)&&r.push(e),ve(t)&&r.push(t),r.push(...n);let s=r.map(i=>i.description).join(" | ");return ee(s,i=>r.some(o=>o.check(i)===!0))}function cn(e){return ee(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(n=>e.check(n)===!0))}function $o(e){if(ve(e))return n=>e.check(n)===!0;if(e&&typeof e=="object"&&"schema"in e)return n=>Xn(n,e);let t=Gt.infer(e);return n=>Xn(n,t)}function Ze(e,t,n){let r=[],s=[];for(let o of e)typeof o=="string"?(r.push(o),s.push(void 0)):(r.push(o[0]),s.push(o[1]));let i=(...o)=>{let a=r.map((l,u)=>{let p=u<o.length?o[u]:s[u];return p===void 0?()=>!0:$o(p)}),c=n;return r.forEach((l,u)=>{let p=u<o.length?o[u]:s[u],f="any";ve(p)?f=p.description:p!==void 0&&(f=typeof p=="string"?"string":JSON.stringify(p)),c=c.replace(new RegExp(`\\b${l}\\b`,"g"),f)}),ee(c,l=>t(l,...a))};return i.params=r,i.description=n,i}var ln=Ze(["T","U"],(e,t,n)=>Array.isArray(e)&&e.length===2&&t(e[0])&&n(e[1]),"Pair<T, U>"),un=Ze(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>");function fn(e,t){let n=Object.values(t),r=new Set(n),s=Object.keys(t),i={};for(let[a,c]of Object.entries(t))i[c]=a;return{description:e,check:a=>r.has(a),toJSONSchema:()=>({enum:n}),strip:a=>a,__runtimeType:!0,members:t,names:i,values:n,keys:s}}function ko(e){if(e===null)return"null";if(e===void 0)return"undefined";switch(typeof e){case"string":return"string";case"boolean":return"boolean";case"number":return Number.isInteger(e)?"integer":"number";case"object":return Array.isArray(e)?"array":"object";default:return null}}function St(e,t,n){if(Array.isArray(t)&&n){let r=t,s=[],i=[];for(let a of r)Array.isArray(a)?(s.push(a[0]),i.push(a[1])):(s.push(a),i.push(void 0));let o=((...a)=>{let c=s.map((u,p)=>p<a.length?a[p]:i[p]),l=n(...c);return St(e,l)});return Object.defineProperties(o,{typeParamNames:{value:s,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),o}return jo(e,t)}function jo(e,t){let n={},r,s="assertReturns";if(typeof t=="function"){let o=t.__tjs;if(o){if(o.params)for(let[a,c]of Object.entries(o.params))n[a]=c?.example??null;o.returns&&(r=o.returns?.example??null),o.safeReturn?s="checkedReturns":o.unsafe?s="assertReturns":s="returns"}}else n=t.params??{},r=t.returns,s=t.returnContract??"assertReturns";return{description:e,params:n,returns:r,returnContract:s,toJSONSchema:()=>({description:e,type:"function"}),strip:o=>o,check:o=>{if(typeof o!="function")return`expected function, got ${o===null?"null":typeof o}`;let a=Object.keys(n).length;if(a>0){let l=o.__tjs;if(l?.params){let u=Object.keys(l.params).length;if(u!==a)return`expected ${a} params, got ${u}`;let p=Object.keys(n),f=Object.keys(l.params);for(let m=0;m<p.length;m++){let d=l.params[f[m]],y=n[p[m]];if(d?.type?.kind&&y!==void 0){let b=ko(y);if(b&&d.type.kind!==b&&d.type.kind!=="any")return`param '${p[m]}' expected ${b}, got ${d.type.kind}`}}}}return!0},__runtimeType:!0}}var Ao=Es(),oe=Ao.version,wt=Symbol.for("tjs.equals");function dn(e){let[t=0,n=0,r=0]=e.split(".").map(Number);return{major:t,minor:n,patch:r}}function ir(e,t){let n=dn(e),r=dn(t);return n.major!==r.major?n.major<r.major?-1:1:n.minor!==r.minor?n.minor<r.minor?-1:1:n.patch!==r.patch?n.patch<r.patch?-1:1:0}function or(e,t){let n=dn(e),r=dn(t);return n.major===r.major}var et=class e extends Error{path;expected;actual;callStack;reason;constructor(t,n,r,s,i,o){super(t),this.name="MonadicError",this.path=n,this.expected=r,this.actual=s,this.callStack=i,this.reason=o,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function Mo(e,t,n,r){let s=n===null?"null":typeof n,i=V.callStacks||V.debug?cr():void 0,o=r?`Expected ${t} for '${e}': ${r}`:`Expected ${t} for '${e}', got ${s}`,a=new et(o,e,t,s,i,r);if(V.trackErrors!==!1){let c=V.maxErrors??yn;ks[Ye]=a,Ye=(Ye+1)%c,Fe<c&&Fe++,gn++}if(V.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),V.throwTypeErrors)throw a;return a}function sr(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var ar={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},V={...ar},Et=64,$s=new Array(Et).fill(""),Be=0,$e=0,yn=64,ks=new Array(yn).fill(null),Ye=0,Fe=0,gn=0,tt=0;function Co(){tt++}function Ro(){tt>0&&tt--}function No(){return tt>0}function Po(e){V={...V,...e}}function Io(){return{...V}}function js(e){if((V.callStacks||V.debug)&&e){let t=V.maxStackSize??Et;$s[Be]=e,Be=(Be+1)%t,$e<t&&$e++}}function pn(){if((V.callStacks||V.debug)&&$e>0){let e=V.maxStackSize??Et;Be=(Be-1+e)%e,$e--}}function cr(){if($e===0)return[];let e=V.maxStackSize??Et,t=[],n=(Be-$e+e)%e;for(let r=0;r<$e;r++)t.push($s[(n+r)%e]);return t}function vs(){if(V.trackErrors===!1||Fe===0)return[];let e=V.maxErrors??yn,t=[],n=(Ye-Fe+e)%e;for(let r=0;r<Fe;r++)t.push(ks[(n+r)%e]);return t}function Do(){let e=vs();return Ye=0,Fe=0,gn=0,e}function Oo(){return gn}function Lo(){V={...ar},Be=0,$e=0,Ye=0,Fe=0,gn=0,tt=0}function Xe(e,t){if(e!==null&&typeof e=="object"&&typeof e[wt]=="function")return e[wt](t);if(t!==null&&typeof t=="object"&&typeof t[wt]=="function")return t[wt](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(t);if(t!==null&&typeof t=="object"&&typeof t.Equals=="function")return t.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)return!0;if(e==null||t===null||t===void 0||typeof e!=typeof t||typeof e!="object")return!1;if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let s of e)if(!t.has(s))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[s,i]of e)if(!t.has(s)||!Xe(i,t.get(s)))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>Xe(s,t[i]));if(Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(s=>Xe(e[s],t[s]))}function As(e,t){return!Xe(e,t)}function Ms(e){return e===null?"null":typeof e}function lr(e,t){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),!!(e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)}function Cs(e,t){return!lr(e,t)}function _e(e){return e!==null&&typeof e=="object"&&e.$error===!0}function Se(e,t){let n={$error:!0,message:e,...t};if((V.callStacks||V.debug)&&$e>0){let r=cr(),s=t?.path?[...r,t.path]:r;n.stack=s}return n}function ur(e,t){if(e.length===0)return Se("Unknown error");if(e.length===1)return e[0];let n=e.map(s=>{if(s.path){let i=s.path.split(".");return i[i.length-1]}return"unknown"}).join(", "),r=`Multiple parameter errors in ${t||"function"}: ${n}`;return Se(r,{path:t,errors:e})}function Qe(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let t=typeof e;if(t!=="object")return t;let n=e.constructor?.name;return n&&n!=="Object"?n:"object"}function Rs(e,t){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let n=e;for(;n!==null;){if(n.constructor?.name===t)return!0;n=Object.getPrototypeOf(n)}return!1}function Ue(e,t,n){if(_e(e))return e;if(typeof t=="object"&&t!==null&&"check"in t){let s=t.check(e);if(s===!0)return null;let i=typeof s=="string"?s:void 0,o=i?`Expected ${t.description} for '${n}': ${i}`:`Expected ${t.description} but got ${Qe(e)}`;return Se(o,{path:n,expected:t.description,actual:Qe(e),reason:i})}let r=Qe(e);return t==="any"||t===r||t==="number"&&r==="number"||t==="integer"&&r==="number"&&Number.isInteger(e)||t==="non-negative-integer"&&r==="number"&&Number.isInteger(e)&&e>=0||t==="object"&&r==="object"?null:Se(`Expected ${t} but got ${r}`,{path:n,expected:t,actual:r})}function fr(e,t,n){for(let[r,s]of Object.entries(t.params)){let i=e[r];if(_e(i))return i;if(s.required&&i===void 0){let a=typeof s.type=="string"?s.type:s.type.description;return Se(`Missing required parameter '${r}'`,{path:n?`${n}.${r}`:r,expected:a,actual:"undefined",loc:s.loc})}if(i===void 0)continue;let o=Ue(i,s.type,n?`${n}.${r}`:r);if(o)return s.loc&&(o.loc=s.loc),o}return null}function pr(e,t){if(e.__tjs=t,e.__tjs.schema=()=>zt(t),!(!t.polymorphic&&(t.safe||t.safeReturn||V.safety!=="none"&&!t.unsafe||t.returns&&V.safety==="all"&&!t.unsafeReturn)))return e;let r=!!t.returns,s=!!t.unsafe,i=!!t.safe,o=!!t.unsafeReturn,a=!!t.safeReturn,c=t.returns?.defaults,l=Object.entries(t.params),u=l.length,p=e.name||t.name||"anonymous",f=function(...m){if(tt>0)return e.apply(this,m);let d=i||!s&&V.safety!=="none",y=r&&(a||!o&&V.safety==="all");if(!d&&!y)return e.apply(this,m);if(m.length>0&&_e(m[0]))return m[0];if(d){let w=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),E=[];if(w){let T=m[0];for(let x=0;x<u;x++){let[$,_]=l[x],j=T[$];if(_e(j)){E.push(j);continue}if(_.required&&j===void 0){E.push(Se(`Missing required parameter '${$}'`,{path:`${p}.${$}`,expected:typeof _.type=="string"?_.type:_.type?.description||"value",actual:"undefined",loc:_.loc}));continue}if(j!==void 0){let A=Ue(j,_.type,`${p}.${$}`);A&&(_.loc&&(A.loc=_.loc),E.push(A))}}}else for(let T=0;T<u;T++){let[x,$]=l[T],_=m[T];if(_e(_)){E.push(_);continue}if($.required&&_===void 0){E.push(Se(`Missing required parameter '${x}'`,{path:`${p}.${x}`,expected:typeof $.type=="string"?$.type:$.type?.description||"value",actual:"undefined",loc:$.loc}));continue}if(_!==void 0){let j=Ue(_,$.type,`${p}.${x}`);j&&($.loc&&(j.loc=$.loc),E.push(j))}}if(E.length>0)return ur(E,p)}let b=V.callStacks||V.debug;b&&js(p);try{let w=e.apply(this,m);if(y&&t.returns&&!_e(w)){let E=c&&typeof w=="object"&&w!==null?Object.assign({},c,w):w,T=Ue(E,t.returns.type,`${p}()`);if(T)return b&&pn(),T}return b&&pn(),w}catch(w){return b&&pn(),Se(w.message||String(w),{path:p,cause:w})}};return Object.defineProperty(f,"name",{value:e.name}),f.__tjs=t,f.__tjs.schema=()=>zt(t),f}function Ns(e){let t=new Proxy(e,{construct(n,r,s){return Reflect.construct(n,r,s)},apply(n,r,s){return Reflect.construct(n,s)}});Object.defineProperty(t,"name",{value:e.name});for(let n of Object.getOwnPropertyNames(e))n!=="length"&&n!=="name"&&n!=="prototype"&&Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n));return t}function Ps(){let e={...V},t=e.maxStackSize??Et,n=new Array(t).fill(""),r=0,s=0,i=e.maxErrors??yn,o=new Array(i).fill(null),a=0,c=0,l=0,u=0;function p(v){e={...e,...v}}function f(){return{...e}}function m(v){(e.callStacks||e.debug)&&v&&(n[r]=v,r=(r+1)%t,s<t&&s++)}function d(){(e.callStacks||e.debug)&&s>0&&(r=(r-1+t)%t,s--)}function y(){if(s===0)return[];let v=[],I=(r-s+t)%t;for(let L=0;L<s;L++)v.push(n[(I+L)%t]);return v}function b(){e={...ar},r=0,s=0,a=0,c=0,l=0,u=0}function w(){u++}function E(){u>0&&u--}function T(){return u>0}let x=new Map;function $(v,I,L){x.has(v)||x.set(v,new Map),x.get(v).set(I,L)}function _(v,I){let L=typeof v,F;if(v==null)return;if(L==="string")F="String";else if(L==="number")F="Number";else if(L==="boolean")F="Boolean";else if(Array.isArray(v))F="Array";else if(L==="object")F=v.constructor?.name||"Object";else return;let H=F;for(;H;){let Ge=x.get(H);if(Ge?.has(I))return Ge.get(I);if(L==="object"&&!Array.isArray(v)){if(H=Object.getPrototypeOf(H===F?v:Object.getPrototypeOf(v))?.constructor?.name,H==="Object"||H===F)break}else break}let se=x.get("Object");if(se?.has(I))return se.get(I)}function j(v,I,L){let F=L===null?"null":typeof L,H=e.callStacks||e.debug?y():void 0,se=new et(`Expected ${I} for '${v}', got ${F}`,v,I,F,H);if(e.trackErrors!==!1&&(o[a]=se,a=(a+1)%i,c<i&&c++,l++),e.logTypeErrors&&console.error(`[TJS TypeError] ${se.message}`),e.throwTypeErrors)throw se;return se}function A(){if(e.trackErrors===!1||c===0)return[];let v=[],I=(a-c+i)%i;for(let L=0;L<c;L++)v.push(o[(I+L)%i]);return v}function k(){let v=A();return a=0,c=0,l=0,v}function R(){return l}function M(v,I){let L={$error:!0,message:v,...I};if((e.callStacks||e.debug)&&s>0){let F=I?.path?[...y(),I.path]:y();L.stack=F}return L}function P(v,I){return v==null?j(`bang.${I}`,"non-null",v):sr(v)?v:v[I]}return{version:oe,MonadicError:et,typeError:j,isMonadicError:sr,bang:P,isError:_e,error:M,composeErrors:ur,typeOf:Qe,isNativeType:Rs,checkType:Ue,validateArgs:fr,wrap:pr,wrapClass:Ns,compareVersions:ir,versionsCompatible:or,createRuntime:Ps,configure:p,getConfig:f,pushStack:m,popStack:d,getStack:y,errors:A,clearErrors:k,getErrorCount:R,resetRuntime:b,enterUnsafe:w,exitUnsafe:E,isUnsafeMode:T,validate:_s,infer:mn.infer.bind(mn),Type:ee,isRuntimeType:ve,Union:an,Generic:Ze,Enum:fn,FunctionPredicate:St,Nullable:sn,Optional:on,TArray:cn,TString:Ht,TNumber:Zt,TBoolean:Yt,TInteger:Xt,TPositiveInt:Qt,TNonEmptyString:en,TEmail:tn,TUrl:nn,TUuid:rn,TPair:ln,TRecord:un,Is:Xe,IsNot:As,Eq:lr,NotEq:Cs,TypeOf:Ms,tjsEquals:wt,registerExtension:$,resolveExtension:_}}var Le={version:oe,MonadicError:et,typeError:Mo,isMonadicError:sr,isError:_e,error:Se,composeErrors:ur,typeOf:Qe,isNativeType:Rs,checkType:Ue,validateArgs:fr,wrap:pr,wrapClass:Ns,compareVersions:ir,versionsCompatible:or,configure:Po,getConfig:Io,pushStack:js,popStack:pn,getStack:cr,errors:vs,clearErrors:Do,getErrorCount:Oo,resetRuntime:Lo,enterUnsafe:Co,exitUnsafe:Ro,isUnsafeMode:No,createRuntime:Ps,validate:_s,infer:mn.infer.bind(mn),Type:ee,isRuntimeType:ve,Union:an,Generic:Ze,Enum:fn,FunctionPredicate:St,Nullable:sn,Optional:on,TArray:cn,TString:Ht,TNumber:Zt,TBoolean:Yt,TInteger:Xt,TPositiveInt:Qt,TNonEmptyString:en,TEmail:tn,TUrl:nn,TUuid:rn,Timestamp:nr,LegalDate:rr,TPair:ln,TRecord:un,Is:Xe,IsNot:As,Eq:lr,NotEq:Cs,TypeOf:Ms};function mr(){let e=globalThis;if(e.__tjs){let t=e.__tjs.version;if(typeof t!="string")return e.__tjs=Le,Le;let n=ir(oe,t);return n===0||(or(oe,t)?n>0?(console.info(`TJS runtime: upgrading ${t} \u2192 ${oe}`),e.__tjs=Le):console.info(`TJS runtime: keeping ${t} (newer than ${oe})`):(console.warn(`TJS runtime version conflict: ${t} vs ${oe} (major version mismatch)`),n>0&&(console.warn(`Upgrading to ${oe} - check for breaking changes`),e.__tjs=Le))),e.__tjs}return e.__tjs=Le,Le}function Bo(e){return`
174
+ `,Uo=Ms+`
175
+ `+Cs;import{validate as Ps,s as bn}from"tosijs-schema";function je(e){if(e.nullable)return{anyOf:[je({...e,nullable:!1}),{type:"null"}]};switch(e.kind){case"string":return{type:"string"};case"number":return{type:"number"};case"integer":return{type:"integer"};case"non-negative-integer":return{type:"integer",minimum:0};case"boolean":return{type:"boolean"};case"null":return{type:"null"};case"undefined":return{};case"any":return{};case"array":return e.items?{type:"array",items:je(e.items)}:{type:"array"};case"object":if(e.shape){let t={},n=[];for(let[r,s]of Object.entries(e.shape))t[r]=je(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(je)}:{};default:return{}}}function Ue(e){if(e===null)return{type:"null"};if(e===void 0)return{};switch(typeof e){case"string":return{type:"string"};case"number":return Number.isInteger(e)?{type:"integer"}:{type:"number"};case"boolean":return{type:"boolean"};case"object":{if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:Ue(e[0])};let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=Ue(s),n.push(r);return{type:"object",properties:t,required:n,additionalProperties:!1}}default:return{}}}function Xt(e){let t={},n=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?t[i]=je(o.type):o?.example!==void 0?t[i]=Ue(o.example):t[i]={},o?.required!==!1&&n.push(i),o?.example!==void 0&&(t[i].examples=[o.example]);let r={type:"object",properties:t,required:n},s;return e.returns&&(e.returns.type?.kind?s=je(e.returns.type):e.returns.example!==void 0&&(s=Ue(e.returns.example))),{input:r,output:s}}import{validate as rr,filter as qo,s as Qt}from"tosijs-schema";function Re(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function Ns(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function Jo(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function ee(e,t,n,r){let s,i,o,a=n,c=r;if(typeof e=="string")if(s=e,typeof t=="function")i=t,a!==void 0&&(o=Qt.infer(a));else if(t===void 0&&a!==void 0)o=Qt.infer(a);else if(Ns(t))o=t;else if(Jo(t))o=t;else if(t!==void 0)a=t,c=a,o=Qt.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else Ns(e),o=e,s=Wo(o);let l;if(o){let p=o?.schema??o;p&&typeof p=="object"&&Array.isArray(p.examples)&&(l=p.examples)}return a===void 0&&l&&l.length>0&&(a=l[0]),{description:s,check:p=>i?i(p):o?rr(p,o):!1,schema:o,predicate:i,example:a,examples:l,default:c,toJSONSchema(){if(o){let p=o?.schema??o;if(p&&typeof p=="object"&&"type"in p)return p}return a!==void 0?Ue(a):{description:s}},strip(p){return o?qo(p,o):p},__runtimeType:!0}}function Wo(e){let t=e?.schema??e;if(t&&typeof t=="object"&&"type"in t){let n=t;switch(n.type){case"string":return n.format?`string (${n.format})`:n.pattern?`string matching ${n.pattern}`:n.minLength!==void 0&&n.maxLength!==void 0?`string (${n.minLength}-${n.maxLength} chars)`:"string";case"number":case"integer":return n.minimum!==void 0&&n.maximum!==void 0?`${n.type} (${n.minimum}-${n.maximum})`:n.minimum!==void 0?`${n.type} >= ${n.minimum}`:n.maximum!==void 0?`${n.type} <= ${n.maximum}`:n.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var en=ee("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),tn=ee("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),nn=ee("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),rn=ee("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),sn=ee("positive integer",e=>typeof e!="number"?`expected positive integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?e<=0?`${e} is not positive`:!0:`${e} is not an integer`),on=ee("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),an=ee("email address",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)?!0:`"${e}" is not a valid email`),sr=e=>{try{return new URL(e),!0}catch{return!1}},cn=ee("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:sr(e)?!0:`"${e}" is not a valid URL`),ln=ee("UUID",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)?!0:`"${e}" is not a valid UUID`),ir=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},or=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},ar=ee("ISO 8601 timestamp",e=>typeof e=="string"&&ir(e)),cr=ee("date (YYYY-MM-DD)",e=>typeof e=="string"&&or(e));function un(e){return ee(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function fn(e){return ee(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function pn(e,t,...n){if(typeof e=="string"&&Array.isArray(t)){let i=e,o=t,a=new Set(o);return{description:i,check:l=>a.has(l),toJSONSchema:()=>({enum:o}),strip:l=>l,__runtimeType:!0,values:o}}let r=[];Re(e)&&r.push(e),Re(t)&&r.push(t),r.push(...n);let s=r.map(i=>i.description).join(" | ");return ee(s,i=>r.some(o=>o.check(i)===!0))}function mn(e){return ee(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(n=>e.check(n)===!0))}function Vo(e){if(Re(e))return n=>e.check(n)===!0;if(e&&typeof e=="object"&&"schema"in e)return n=>rr(n,e);let t=Qt.infer(e);return n=>rr(n,t)}function tt(e,t,n){let r=[],s=[];for(let o of e)typeof o=="string"?(r.push(o),s.push(void 0)):(r.push(o[0]),s.push(o[1]));let i=(...o)=>{let a=r.map((l,u)=>{let p=u<o.length?o[u]:s[u];return p===void 0?()=>!0:Vo(p)}),c=n;return r.forEach((l,u)=>{let p=u<o.length?o[u]:s[u],f="any";Re(p)?f=p.description:p!==void 0&&(f=typeof p=="string"?"string":JSON.stringify(p)),c=c.replace(new RegExp(`\\b${l}\\b`,"g"),f)}),ee(c,l=>t(l,...a))};return i.params=r,i.description=n,i}var dn=tt(["T","U"],(e,t,n)=>Array.isArray(e)&&e.length===2&&t(e[0])&&n(e[1]),"Pair<T, U>"),yn=tt(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>");function gn(e,t){let n=Object.values(t),r=new Set(n),s=Object.keys(t),i={};for(let[a,c]of Object.entries(t))i[c]=a;return{description:e,check:a=>r.has(a),toJSONSchema:()=>({enum:n}),strip:a=>a,__runtimeType:!0,members:t,names:i,values:n,keys:s}}function Ko(e){if(e===null)return"null";if(e===void 0)return"undefined";switch(typeof e){case"string":return"string";case"boolean":return"boolean";case"number":return Number.isInteger(e)?"integer":"number";case"object":return Array.isArray(e)?"array":"object";default:return null}}function _t(e,t,n){if(Array.isArray(t)&&n){let r=t,s=[],i=[];for(let a of r)Array.isArray(a)?(s.push(a[0]),i.push(a[1])):(s.push(a),i.push(void 0));let o=((...a)=>{let c=s.map((u,p)=>p<a.length?a[p]:i[p]),l=n(...c);return _t(e,l)});return Object.defineProperties(o,{typeParamNames:{value:s,enumerable:!0},description:{value:e,enumerable:!0},__runtimeType:{value:!0,enumerable:!0}}),o}return zo(e,t)}function zo(e,t){let n={},r,s="assertReturns";if(typeof t=="function"){let o=t.__tjs;if(o){if(o.params)for(let[a,c]of Object.entries(o.params))n[a]=c?.example??null;o.returns&&(r=o.returns?.example??null),o.safeReturn?s="checkedReturns":o.unsafe?s="assertReturns":s="returns"}}else n=t.params??{},r=t.returns,s=t.returnContract??"assertReturns";return{description:e,params:n,returns:r,returnContract:s,toJSONSchema:()=>({description:e,type:"function"}),strip:o=>o,check:o=>{if(typeof o!="function")return`expected function, got ${o===null?"null":typeof o}`;let a=Object.keys(n).length;if(a>0){let l=o.__tjs;if(l?.params){let u=Object.keys(l.params).length;if(u!==a)return`expected ${a} params, got ${u}`;let p=Object.keys(n),f=Object.keys(l.params);for(let m=0;m<p.length;m++){let d=l.params[f[m]],y=n[p[m]];if(d?.type?.kind&&y!==void 0){let b=Ko(y);if(b&&d.type.kind!==b&&d.type.kind!=="any")return`param '${p[m]}' expected ${b}, got ${d.type.kind}`}}}}return!0},__runtimeType:!0}}var Ho=Rs(),ue=Ho.version,kt=Symbol.for("tjs.equals");function xn(e){let[t=0,n=0,r=0]=e.split(".").map(Number);return{major:t,minor:n,patch:r}}function ur(e,t){let n=xn(e),r=xn(t);return n.major!==r.major?n.major<r.major?-1:1:n.minor!==r.minor?n.minor<r.minor?-1:1:n.patch!==r.patch?n.patch<r.patch?-1:1:0}function fr(e,t){let n=xn(e),r=xn(t);return n.major===r.major}var Pe=class e extends Error{path;expected;actual;callStack;reason;constructor(t,n,r,s,i,o){super(t),this.name="MonadicError",this.path=n,this.expected=r,this.actual=s,this.callStack=i,this.reason=o,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function Zo(e,t,n,r){let s=n===null?"null":typeof n,i=z.callStacks||z.debug?mr():void 0,o=r?`Expected ${t} for '${e}': ${r}`:`Expected ${t} for '${e}', got ${s}`,a=new Pe(o,e,t,s,i,r);if(z.trackErrors!==!1){let c=z.maxErrors??Tn;Ds[nt]=a,nt=(nt+1)%c,We<c&&We++,Sn++}if(z.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),z.throwTypeErrors)throw a;return a}function lr(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var pr={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},z={...pr},jt=64,Is=new Array(jt).fill(""),Je=0,Ae=0,Tn=64,Ds=new Array(Tn).fill(null),nt=0,We=0,Sn=0,it=0;function Yo(){it++}function Xo(){it>0&&it--}function Qo(){return it>0}function ea(e){z={...z,...e}}function ta(){return{...z}}function Os(e){if((z.callStacks||z.debug)&&e){let t=z.maxStackSize??jt;Is[Je]=e,Je=(Je+1)%t,Ae<t&&Ae++}}function hn(){if((z.callStacks||z.debug)&&Ae>0){let e=z.maxStackSize??jt;Je=(Je-1+e)%e,Ae--}}function mr(){if(Ae===0)return[];let e=z.maxStackSize??jt,t=[],n=(Je-Ae+e)%e;for(let r=0;r<Ae;r++)t.push(Is[(n+r)%e]);return t}function Bs(){if(z.trackErrors===!1||We===0)return[];let e=z.maxErrors??Tn,t=[],n=(nt-We+e)%e;for(let r=0;r<We;r++)t.push(Ds[(n+r)%e]);return t}function na(){let e=Bs();return nt=0,We=0,Sn=0,e}function ra(){return Sn}function sa(){z={...pr},Je=0,Ae=0,nt=0,We=0,Sn=0,it=0}function rt(e,t){if(e!==null&&typeof e=="object"&&typeof e[kt]=="function")return e[kt](t);if(t!==null&&typeof t=="object"&&typeof t[kt]=="function")return t[kt](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(t);if(t!==null&&typeof t=="object"&&typeof t.Equals=="function")return t.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)return!0;if(e==null||t===null||t===void 0||typeof e!=typeof t||typeof e!="object")return!1;if(e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(let s of e)if(!t.has(s))return!1;return!0}if(e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(let[s,i]of e)if(!t.has(s)||!rt(i,t.get(s)))return!1;return!0}if(e instanceof Date&&t instanceof Date)return e.getTime()===t.getTime();if(e instanceof RegExp&&t instanceof RegExp)return e.toString()===t.toString();if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>rt(s,t[i]));if(Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(s=>rt(e[s],t[s]))}function Ls(e,t){return!rt(e,t)}function Fs(e){return e===null?"null":typeof e}function Us(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function dr(e,t){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(t instanceof String||t instanceof Number||t instanceof Boolean)&&(t=t.valueOf()),!!(e===t||typeof e=="number"&&typeof t=="number"&&isNaN(e)&&isNaN(t)||e==null&&t==null)}function qs(e,t){return!dr(e,t)}function ve(e){return e!==null&&typeof e=="object"&&e.$error===!0}function we(e,t){let n={$error:!0,message:e,...t};if((z.callStacks||z.debug)&&Ae>0){let r=mr(),s=t?.path?[...r,t.path]:r;n.stack=s}return n}function yr(e,t){if(e.length===0)return we("Unknown error");if(e.length===1)return e[0];let n=e.map(s=>{if(s.path){let i=s.path.split(".");return i[i.length-1]}return"unknown"}).join(", "),r=`Multiple parameter errors in ${t||"function"}: ${n}`;return we(r,{path:t,errors:e})}function st(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let t=typeof e;if(t!=="object")return t;let n=e.constructor?.name;return n&&n!=="Object"?n:"object"}function Js(e,t){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let n=e;for(;n!==null;){if(n.constructor?.name===t)return!0;n=Object.getPrototypeOf(n)}return!1}function Ve(e,t,n){if(ve(e))return e;if(typeof t=="object"&&t!==null&&"check"in t){let s=t.check(e);if(s===!0)return null;let i=typeof s=="string"?s:void 0,o=i?`Expected ${t.description} for '${n}': ${i}`:`Expected ${t.description} but got ${st(e)}`;return we(o,{path:n,expected:t.description,actual:st(e),reason:i})}let r=st(e);return t==="any"||t===r||t==="number"&&r==="number"||t==="integer"&&r==="number"&&Number.isInteger(e)||t==="non-negative-integer"&&r==="number"&&Number.isInteger(e)&&e>=0||t==="object"&&r==="object"?null:we(`Expected ${t} but got ${r}`,{path:n,expected:t,actual:r})}function Ws(e,t,n,r){if(typeof e!="function")return e;let s=e.__tjs;if(!s||!s.params)return e;let i=Object.entries(s.params);for(let o=0;o<t.length;o++){let a=t[o];if(a==="any")continue;let c=i[o];if(!c)continue;let l=c[1]?.type?.kind;if(!(!l||l==="any")&&l!==a)return new Pe(`Expected (...arg${o}: ${a}, ...) for '${r}', but callback declares arg${o} as ${l}`,`${r}(arg${o})`,a,l)}if(n!=="any"&&s.returns){let o=s.returns.type?.kind??s.returns.kind;if(o&&o!=="any"&&o!==n)return new Pe(`Expected callback returning ${n} for '${r}', but callback returns ${o}`,`${r}(return)`,n,o)}return e}function gr(e,t,n){for(let[r,s]of Object.entries(t.params)){let i=e[r];if(ve(i))return i;if(s.required&&i===void 0){let a=typeof s.type=="string"?s.type:s.type.description;return we(`Missing required parameter '${r}'`,{path:n?`${n}.${r}`:r,expected:a,actual:"undefined",loc:s.loc})}if(i===void 0)continue;let o=Ve(i,s.type,n?`${n}.${r}`:r);if(o)return s.loc&&(o.loc=s.loc),o}return null}function hr(e,t){if(e.__tjs=t,e.__tjs.schema=()=>Xt(t),!(!t.polymorphic&&(t.safe||t.safeReturn||z.safety!=="none"&&!t.unsafe||t.returns&&z.safety==="all"&&!t.unsafeReturn)))return e;let r=!!t.returns,s=!!t.unsafe,i=!!t.safe,o=!!t.unsafeReturn,a=!!t.safeReturn,c=t.returns?.defaults,l=Object.entries(t.params),u=l.length,p=e.name||t.name||"anonymous",f=function(...m){if(it>0)return e.apply(this,m);let d=i||!s&&z.safety!=="none",y=r&&(a||!o&&z.safety==="all");if(!d&&!y)return e.apply(this,m);if(m.length>0&&ve(m[0]))return m[0];if(d){let w=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),S=[];if(w){let T=m[0];for(let x=0;x<u;x++){let[_,$]=l[x],k=T[_];if(ve(k)){S.push(k);continue}if($.required&&k===void 0){S.push(we(`Missing required parameter '${_}'`,{path:`${p}.${_}`,expected:typeof $.type=="string"?$.type:$.type?.description||"value",actual:"undefined",loc:$.loc}));continue}if(k!==void 0){let A=Ve(k,$.type,`${p}.${_}`);A&&($.loc&&(A.loc=$.loc),S.push(A))}}}else for(let T=0;T<u;T++){let[x,_]=l[T],$=m[T];if(ve($)){S.push($);continue}if(_.required&&$===void 0){S.push(we(`Missing required parameter '${x}'`,{path:`${p}.${x}`,expected:typeof _.type=="string"?_.type:_.type?.description||"value",actual:"undefined",loc:_.loc}));continue}if($!==void 0){let k=Ve($,_.type,`${p}.${x}`);k&&(_.loc&&(k.loc=_.loc),S.push(k))}}if(S.length>0)return yr(S,p)}let b=z.callStacks||z.debug;b&&Os(p);try{let w=e.apply(this,m);if(y&&t.returns&&!ve(w)){let S=c&&typeof w=="object"&&w!==null?Object.assign({},c,w):w,T=Ve(S,t.returns.type,`${p}()`);if(T)return b&&hn(),T}return b&&hn(),w}catch(w){return b&&hn(),we(w.message||String(w),{path:p,cause:w})}};return Object.defineProperty(f,"name",{value:e.name}),f.__tjs=t,f.__tjs.schema=()=>Xt(t),f}function Vs(e){let t=new Proxy(e,{construct(n,r,s){return Reflect.construct(n,r,s)},apply(n,r,s){return Reflect.construct(n,s)}});Object.defineProperty(t,"name",{value:e.name});for(let n of Object.getOwnPropertyNames(e))n!=="length"&&n!=="name"&&n!=="prototype"&&Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(e,n));return t}function Ks(){let e={...z},t=e.maxStackSize??jt,n=new Array(t).fill(""),r=0,s=0,i=e.maxErrors??Tn,o=new Array(i).fill(null),a=0,c=0,l=0,u=0;function p(v){e={...e,...v}}function f(){return{...e}}function m(v){(e.callStacks||e.debug)&&v&&(n[r]=v,r=(r+1)%t,s<t&&s++)}function d(){(e.callStacks||e.debug)&&s>0&&(r=(r-1+t)%t,s--)}function y(){if(s===0)return[];let v=[],I=(r-s+t)%t;for(let B=0;B<s;B++)v.push(n[(I+B)%t]);return v}function b(){e={...pr},r=0,s=0,a=0,c=0,l=0,u=0}function w(){u++}function S(){u>0&&u--}function T(){return u>0}let x=new Map;function _(v,I,B){x.has(v)||x.set(v,new Map),x.get(v).set(I,B)}function $(v,I){let B=typeof v,F;if(v==null)return;if(B==="string")F="String";else if(B==="number")F="Number";else if(B==="boolean")F="Boolean";else if(Array.isArray(v))F="Array";else if(B==="object")F=v.constructor?.name||"Object";else return;let G=F;for(;G;){let Qe=x.get(G);if(Qe?.has(I))return Qe.get(I);if(B==="object"&&!Array.isArray(v)){if(G=Object.getPrototypeOf(G===F?v:Object.getPrototypeOf(v))?.constructor?.name,G==="Object"||G===F)break}else break}let ae=x.get("Object");if(ae?.has(I))return ae.get(I)}function k(v,I,B){let F=B===null?"null":typeof B,G=e.callStacks||e.debug?y():void 0,ae=new Pe(`Expected ${I} for '${v}', got ${F}`,v,I,F,G);if(e.trackErrors!==!1&&(o[a]=ae,a=(a+1)%i,c<i&&c++,l++),e.logTypeErrors&&console.error(`[TJS TypeError] ${ae.message}`),e.throwTypeErrors)throw ae;return ae}function A(){if(e.trackErrors===!1||c===0)return[];let v=[],I=(a-c+i)%i;for(let B=0;B<c;B++)v.push(o[(I+B)%i]);return v}function j(){let v=A();return a=0,c=0,l=0,v}function N(){return l}function M(v,I){let B={$error:!0,message:v,...I};if((e.callStacks||e.debug)&&s>0){let F=I?.path?[...y(),I.path]:y();B.stack=F}return B}function P(v,I){return v==null?k(`bang.${I}`,"non-null",v):lr(v)?v:v[I]}return{version:ue,MonadicError:Pe,typeError:k,isMonadicError:lr,bang:P,isError:ve,error:M,composeErrors:yr,typeOf:st,isNativeType:Js,checkType:Ve,validateArgs:gr,wrap:hr,checkFnShape:Ws,wrapClass:Vs,compareVersions:ur,versionsCompatible:fr,createRuntime:Ks,configure:p,getConfig:f,pushStack:m,popStack:d,getStack:y,errors:A,clearErrors:j,getErrorCount:N,resetRuntime:b,enterUnsafe:w,exitUnsafe:S,isUnsafeMode:T,validate:Ps,infer:bn.infer.bind(bn),Type:ee,isRuntimeType:Re,Union:pn,Generic:tt,Enum:gn,FunctionPredicate:_t,Nullable:un,Optional:fn,TArray:mn,TString:en,TNumber:tn,TBoolean:nn,TInteger:rn,TPositiveInt:sn,TNonEmptyString:on,TEmail:an,TUrl:cn,TUuid:ln,TPair:dn,TRecord:yn,Is:rt,IsNot:Ls,Eq:dr,NotEq:qs,TypeOf:Fs,toBool:Us,tjsEquals:kt,registerExtension:_,resolveExtension:$}}var qe={version:ue,MonadicError:Pe,typeError:Zo,isMonadicError:lr,isError:ve,error:we,composeErrors:yr,typeOf:st,isNativeType:Js,checkType:Ve,validateArgs:gr,wrap:hr,checkFnShape:Ws,wrapClass:Vs,compareVersions:ur,versionsCompatible:fr,configure:ea,getConfig:ta,pushStack:Os,popStack:hn,getStack:mr,errors:Bs,clearErrors:na,getErrorCount:ra,resetRuntime:sa,enterUnsafe:Yo,exitUnsafe:Xo,isUnsafeMode:Qo,createRuntime:Ks,validate:Ps,infer:bn.infer.bind(bn),Type:ee,isRuntimeType:Re,Union:pn,Generic:tt,Enum:gn,FunctionPredicate:_t,Nullable:un,Optional:fn,TArray:mn,TString:en,TNumber:tn,TBoolean:nn,TInteger:rn,TPositiveInt:sn,TNonEmptyString:on,TEmail:an,TUrl:cn,TUuid:ln,Timestamp:ar,LegalDate:cr,TPair:dn,TRecord:yn,Is:rt,IsNot:Ls,Eq:dr,NotEq:qs,TypeOf:Fs,toBool:Us};function br(){let e=globalThis;if(e.__tjs){let t=e.__tjs.version;if(typeof t!="string")return e.__tjs=qe,qe;let n=ur(ue,t);return n===0||(fr(ue,t)?n>0?(console.info(`TJS runtime: upgrading ${t} \u2192 ${ue}`),e.__tjs=qe):console.info(`TJS runtime: keeping ${t} (newer than ${ue})`):(console.warn(`TJS runtime version conflict: ${t} vs ${ue} (major version mismatch)`),n>0&&(console.warn(`Upgrading to ${ue} - check for breaking changes`),e.__tjs=qe))),e.__tjs}return e.__tjs=qe,qe}function ia(e){return`
174
176
  // TJS runtime wrapper (skips unsafe functions)
175
177
  if (typeof ${e}.__tjs === 'object' && !${e}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
176
178
  ${e} = globalThis.__tjs.wrap(${e}, ${e}.__tjs)
177
179
  }
178
- `.trim()}function Is(e){return`
180
+ `.trim()}function zs(e){return`
179
181
  // TJS: callable without new
180
182
  ${e} = new Proxy(${e}, { apply(t, _, a) { return Reflect.construct(t, a) } });
181
- `.trim()}function Fo(e,t,n=1e-9){if(e===t)return!0;if(typeof e=="number"&&typeof t=="number"&&(!Number.isInteger(e)||!Number.isInteger(t))){let r=Math.abs(e-t),s=Math.max(Math.abs(e),Math.abs(t),1);return r/s<n}return!1}function yr(e,t){if(e===t||typeof e=="number"&&typeof t=="number"&&Number.isNaN(e)&&Number.isNaN(t)||Fo(e,t))return!0;if(e===null||t===null||e===void 0||t===void 0)return e===t;if(typeof e!=typeof t||typeof e!="object")return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>yr(s,t[i]));if(Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(s=>yr(e[s],t[s]))}function gr(e,t,n=""){if(t===null)return e===null?{matches:!0}:{matches:!1,error:`Expected null at '${n}', got ${qe(e)}`};if(t===void 0)return e===void 0?{matches:!0}:{matches:!1,error:`Expected undefined at '${n}', got ${qe(e)}`};if(typeof t=="number")return typeof e=="number"?{matches:!0}:{matches:!1,error:`Expected number at '${n}', got ${qe(e)}`};if(typeof t=="string")return typeof e=="string"?{matches:!0}:{matches:!1,error:`Expected string at '${n}', got ${qe(e)}`};if(typeof t=="boolean")return typeof e=="boolean"?{matches:!0}:{matches:!1,error:`Expected boolean at '${n}', got ${qe(e)}`};if(Array.isArray(t)){if(!Array.isArray(e))return{matches:!1,error:`Expected array at '${n}', got ${qe(e)}`};if(t.length===0)return{matches:!0};let r=t[0];for(let s=0;s<e.length;s++){let i=gr(e[s],r,`${n}[${s}]`);if(!i.matches)return i}return{matches:!0}}if(typeof t=="object"&&t!==null){if(typeof e!="object"||e===null||Array.isArray(e))return{matches:!1,error:`Expected object at '${n}', got ${qe(e)}`};for(let r of Object.keys(t)){let s=n?`${n}.${r}`:r;if(!(r in e))return{matches:!1,error:`Missing property '${s}'`};let i=gr(e[r],t[r],s);if(!i.matches)return i}return{matches:!0}}return e===t?{matches:!0}:{matches:!1,error:`Type mismatch at '${n}'`}}function qe(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function _t(e,t=0){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="string")return JSON.stringify(e);if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e))return e.length===0?"[]":e.length<=3?`[${e.map(n=>_t(n,t)).join(", ")}]`:`[${e.slice(0,3).map(n=>_t(n,t)).join(", ")}, ...]`;if(typeof e=="object"){let n=Object.entries(e);if(n.length===0)return"{}";let r=c=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(c)?c:JSON.stringify(c);if(n.length<=2)return`{${n.map(([l,u])=>`${r(l)}: ${_t(u,t)}`).join(", ")}}`;let s=" ".repeat(t+1),i=" ".repeat(t),o=n.slice(0,8).map(([c,l])=>`${s}${r(c)}: ${_t(l,t+1)}`).join(`,
183
+ `.trim()}function oa(e,t,n=1e-9){if(e===t)return!0;if(typeof e=="number"&&typeof t=="number"&&(!Number.isInteger(e)||!Number.isInteger(t))){let r=Math.abs(e-t),s=Math.max(Math.abs(e),Math.abs(t),1);return r/s<n}return!1}function Tr(e,t){if(e===t||typeof e=="number"&&typeof t=="number"&&Number.isNaN(e)&&Number.isNaN(t)||oa(e,t))return!0;if(e===null||t===null||e===void 0||t===void 0)return e===t;if(typeof e!=typeof t||typeof e!="object")return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>Tr(s,t[i]));if(Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(s=>Tr(e[s],t[s]))}function Sr(e,t,n=""){if(t===null)return e===null?{matches:!0}:{matches:!1,error:`Expected null at '${n}', got ${Ke(e)}`};if(t===void 0)return e===void 0?{matches:!0}:{matches:!1,error:`Expected undefined at '${n}', got ${Ke(e)}`};if(typeof t=="number")return typeof e=="number"?{matches:!0}:{matches:!1,error:`Expected number at '${n}', got ${Ke(e)}`};if(typeof t=="string")return typeof e=="string"?{matches:!0}:{matches:!1,error:`Expected string at '${n}', got ${Ke(e)}`};if(typeof t=="boolean")return typeof e=="boolean"?{matches:!0}:{matches:!1,error:`Expected boolean at '${n}', got ${Ke(e)}`};if(Array.isArray(t)){if(!Array.isArray(e))return{matches:!1,error:`Expected array at '${n}', got ${Ke(e)}`};if(t.length===0)return{matches:!0};let r=t[0];for(let s=0;s<e.length;s++){let i=Sr(e[s],r,`${n}[${s}]`);if(!i.matches)return i}return{matches:!0}}if(typeof t=="object"&&t!==null){if(typeof e!="object"||e===null||Array.isArray(e))return{matches:!1,error:`Expected object at '${n}', got ${Ke(e)}`};for(let r of Object.keys(t)){let s=n?`${n}.${r}`:r;if(!(r in e))return{matches:!1,error:`Missing property '${s}'`};let i=Sr(e[r],t[r],s);if(!i.matches)return i}return{matches:!0}}return e===t?{matches:!0}:{matches:!1,error:`Type mismatch at '${n}'`}}function Ke(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function vt(e,t=0){if(e===null)return"null";if(e===void 0)return"undefined";if(typeof e=="string")return JSON.stringify(e);if(typeof e=="number"||typeof e=="boolean")return String(e);if(Array.isArray(e))return e.length===0?"[]":e.length<=3?`[${e.map(n=>vt(n,t)).join(", ")}]`:`[${e.slice(0,3).map(n=>vt(n,t)).join(", ")}, ...]`;if(typeof e=="object"){let n=Object.entries(e);if(n.length===0)return"{}";let r=c=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(c)?c:JSON.stringify(c);if(n.length<=2)return`{${n.map(([l,u])=>`${r(l)}: ${vt(u,t)}`).join(", ")}}`;let s=" ".repeat(t+1),i=" ".repeat(t),o=n.slice(0,8).map(([c,l])=>`${s}${r(c)}: ${vt(l,t+1)}`).join(`,
182
184
  `),a=n.length>8?`,
183
185
  ${s}...`:"";return`{
184
186
  ${o}${a}
185
- ${i}}`}return String(e)}function Uo(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,n=>{let r=n.split(`
187
+ ${i}}`}return String(e)}function aa(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,n=>{let r=n.split(`
186
188
  `).length-1;return`
187
- `.repeat(r)});return t=t.replace(/\/\/[^\n]*/g,""),t}function bn(e){let t=e.replace(/^import\s+.*?from\s+['"][^'"]+['"];?\s*$/gm,"");return t=t.replace(/^import\s+['"][^'"]+['"];?\s*$/gm,""),t=t.replace(/^export\s+default\s+/gm,""),t=t.replace(/^export\s+/gm,""),t=t.replace(/^(\s*)((?:const|let|var)\s+\w+\s*=\s*)?await\s+.+$/gm,"$1/* top-level await removed for test execution */"),t}function Os(e){let t=e.replace(/^const __tjs = globalThis\.__tjs\?\.createRuntime\?\.\(\) \?\? globalThis\.__tjs;\n?/m,"");return t=t.replace(/^const \{ [\w, ]+ \} = __tjs \?\? \{\};\n?/m,""),t}function qo(e){if(Object.keys(e).length===0)return"";let t=[];for(let[n,r]of Object.entries(e)){let s=bn(r);t.push(`// Resolved import: ${n}`),t.push(s)}return t.join(`
188
- `)}function Ds(e){let t={},n=e.trim();if(!n.startsWith("{")||!n.includes("="))try{return{pattern:new Function(`return ${e}`)(),defaults:t}}catch{return null}let r="",s=0,i=0;for(;i<n.length;){let o=n[i];if(o==="{"||o==="["||o==="(")s++,r+=o,i++;else if(o==="}"||o==="]"||o===")")s--,r+=o,i++;else if(o==="'"||o==='"'||o==="`"){let a=o;for(r+=o,i++;i<n.length&&n[i]!==a;)n[i]==="\\"&&(r+=n[i++]),r+=n[i++];i<n.length&&(r+=n[i++])}else if(s===1&&o==="="){let l=(r.slice(r.lastIndexOf("{")+1).split(",").pop()||"").match(/\s*(\w+)\s*$/);if(l){let u=i+1;for(;u<n.length&&/\s/.test(n[u]);)u++;let p="",f=0;for(;u<n.length;){let m=n[u];if(m==="{"||m==="["||m==="(")f++;else if(m==="}"||m==="]"||m===")"){if(f===0)break;f--}else if(m===","&&f===0)break;p+=m,u++}try{t[l[1]]=new Function(`return ${p.trim()}`)()}catch{}r+=":",i++;continue}r+=o,i++}else r+=o,i++}try{return{pattern:new Function(`return ${r}`)(),defaults:t}}catch{return null}}function Ls(e){let t=[],n=Uo(e),r=/(async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,s;for(;(s=r.exec(n))!==null;){let a=!!s[1],c=s[2],l=s[3],u=s[4],p=n.slice(0,s.index).split(`
189
- `).length;if(u===":!")continue;let f=n.slice(s.index+s[0].length),m=hn(f);if(!m)continue;let d=dr(l);if(!(l.trim()&&d.length===0))try{let y=Ds(m);if(!y)continue;let b=d.map(w=>new Function(`return ${w}`)());t.push({funcName:c,args:b,expected:y.pattern,defaults:Object.keys(y.defaults).length>0?y.defaults:void 0,line:p,isAsync:a})}catch{}}let i=/class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/g,o;for(;(o=i.exec(n))!==null;){let a=o[1],c=o.index+o[0].length,l=1,u=c;for(let T=c;T<n.length;T++)if(n[T]==="{")l++;else if(n[T]==="}"&&(l--,l===0)){u=T;break}let p=n.slice(c,u),m=/constructor\s*\(([^)]*)\)/.exec(p);if(!m)continue;let d=m[1],y=dr(d);if(d.trim()&&y.length===0)continue;let b;try{b=y.map(T=>new Function(`return ${T}`)())}catch{continue}let w=/(async\s+)?(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,E;for(;(E=w.exec(p))!==null;){let T=E[2];if(T==="constructor")continue;let x=!!E[1],$=E[3];if(E[4]===":!")continue;let j=c+E.index,A=n.slice(0,j).split(`
190
- `).length,k=p.slice(E.index+E[0].length),R=hn(k);if(!R)continue;let M=dr($);if(!($.trim()&&M.length===0))try{let P=Ds(R);if(!P)continue;let v=M.map(I=>new Function(`return ${I}`)());t.push({funcName:T,args:v,expected:P.pattern,defaults:Object.keys(P.defaults).length>0?P.defaults:void 0,line:A,isAsync:x,className:a,constructorArgs:b})}catch{}}}return t}function Bs(e,t,n,r,s={},i=new Map){let o=[];if(e.length===0&&n.length===0)return o;let a=r.match(/^import\s+.*?from\s+['"]([^'"]+)['"];?\s*$/gm)||[],c=a.length>0&&a.some(x=>{let $=x.match(/from\s+['"]([^'"]+)['"]/);return $&&!($[1]in s)}),l=bn(r),u=qo(s),p=t.map(x=>x.body).join(`
191
- `),f="const { Is, IsNot, Eq, NotEq, TypeOf } = globalThis.__tjs ?? {};",m=e.map((x,$)=>{let _=i.size>0?gt(x.body,i):x.body;return`
192
- // Test ${$}: ${x.description}
189
+ `.repeat(r)});return t=t.replace(/\/\/[^\n]*/g,""),t}function En(e){let t=e.replace(/^import\s+.*?from\s+['"][^'"]+['"];?\s*$/gm,"");return t=t.replace(/^import\s+['"][^'"]+['"];?\s*$/gm,""),t=t.replace(/^export\s+default\s+/gm,""),t=t.replace(/^export\s+/gm,""),t=t.replace(/^(\s*)((?:const|let|var)\s+\w+\s*=\s*)?await\s+.+$/gm,"$1/* top-level await removed for test execution */"),t}function Hs(e){let t=e.replace(/^const __tjs = globalThis\.__tjs\?\.createRuntime\?\.\(\) \?\? globalThis\.__tjs;\n?/m,"");return t=t.replace(/^const \{ [\w, ]+ \} = __tjs \?\? \{\};\n?/m,""),t}function ca(e){if(Object.keys(e).length===0)return"";let t=[];for(let[n,r]of Object.entries(e)){let s=En(r);t.push(`// Resolved import: ${n}`),t.push(s)}return t.join(`
190
+ `)}function Gs(e){let t={},n=e.trim();if(!n.startsWith("{")||!n.includes("="))try{return{pattern:new Function(`return ${e}`)(),defaults:t}}catch{return null}let r="",s=0,i=0;for(;i<n.length;){let o=n[i];if(o==="{"||o==="["||o==="(")s++,r+=o,i++;else if(o==="}"||o==="]"||o===")")s--,r+=o,i++;else if(o==="'"||o==='"'||o==="`"){let a=o;for(r+=o,i++;i<n.length&&n[i]!==a;)n[i]==="\\"&&(r+=n[i++]),r+=n[i++];i<n.length&&(r+=n[i++])}else if(s===1&&o==="="){let l=(r.slice(r.lastIndexOf("{")+1).split(",").pop()||"").match(/\s*(\w+)\s*$/);if(l){let u=i+1;for(;u<n.length&&/\s/.test(n[u]);)u++;let p="",f=0;for(;u<n.length;){let m=n[u];if(m==="{"||m==="["||m==="(")f++;else if(m==="}"||m==="]"||m===")"){if(f===0)break;f--}else if(m===","&&f===0)break;p+=m,u++}try{t[l[1]]=new Function(`return ${p.trim()}`)()}catch{}r+=":",i++;continue}r+=o,i++}else r+=o,i++}try{return{pattern:new Function(`return ${r}`)(),defaults:t}}catch{return null}}function Zs(e){let t=[],n=aa(e),r=/(async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,s;for(;(s=r.exec(n))!==null;){let a=!!s[1],c=s[2],l=s[3],u=s[4],p=n.slice(0,s.index).split(`
191
+ `).length;if(u===":!")continue;let f=n.slice(s.index+s[0].length),m=wn(f);if(!m)continue;let d=xr(l);if(!(l.trim()&&d.length===0))try{let y=Gs(m);if(!y)continue;let b=d.map(w=>new Function(`return ${w}`)());t.push({funcName:c,args:b,expected:y.pattern,defaults:Object.keys(y.defaults).length>0?y.defaults:void 0,line:p,isAsync:a})}catch{}}let i=/class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/g,o;for(;(o=i.exec(n))!==null;){let a=o[1],c=o.index+o[0].length,l=1,u=c;for(let T=c;T<n.length;T++)if(n[T]==="{")l++;else if(n[T]==="}"&&(l--,l===0)){u=T;break}let p=n.slice(c,u),m=/constructor\s*\(([^)]*)\)/.exec(p);if(!m)continue;let d=m[1],y=xr(d);if(d.trim()&&y.length===0)continue;let b;try{b=y.map(T=>new Function(`return ${T}`)())}catch{continue}let w=/(async\s+)?(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,S;for(;(S=w.exec(p))!==null;){let T=S[2];if(T==="constructor")continue;let x=!!S[1],_=S[3];if(S[4]===":!")continue;let k=c+S.index,A=n.slice(0,k).split(`
192
+ `).length,j=p.slice(S.index+S[0].length),N=wn(j);if(!N)continue;let M=xr(_);if(!(_.trim()&&M.length===0))try{let P=Gs(N);if(!P)continue;let v=M.map(I=>new Function(`return ${I}`)());t.push({funcName:T,args:v,expected:P.pattern,defaults:Object.keys(P.defaults).length>0?P.defaults:void 0,line:A,isAsync:x,className:a,constructorArgs:b})}catch{}}}return t}function Ys(e,t,n,r,s={},i=new Map){let o=[];if(e.length===0&&n.length===0)return o;let a=r.match(/^import\s+.*?from\s+['"]([^'"]+)['"];?\s*$/gm)||[],c=a.length>0&&a.some(x=>{let _=x.match(/from\s+['"]([^'"]+)['"]/);return _&&!(_[1]in s)}),l=En(r),u=ca(s),p=t.map(x=>x.body).join(`
193
+ `),f="const { Is, IsNot, Eq, NotEq, TypeOf } = globalThis.__tjs ?? {};",m=e.map((x,_)=>{let $=i.size>0?bt(x.body,i):x.body;return`
194
+ // Test ${_}: ${x.description}
193
195
  try {
194
196
  ${f}
195
- ${_}
196
- __testResults.push({ idx: ${$}, passed: true });
197
+ ${$}
198
+ __testResults.push({ idx: ${_}, passed: true });
197
199
  } catch (e) {
198
- __testResults.push({ idx: ${$}, passed: false, error: e.message || String(e) });
200
+ __testResults.push({ idx: ${_}, passed: false, error: e.message || String(e) });
199
201
  }
200
202
  `}).join(`
201
- `),d=n.filter(x=>!x.isAsync),y=n.filter(x=>x.isAsync),b=d.map((x,$)=>{let _=x.className?`${x.className}.${x.funcName}`:x.funcName,j=x.className?`new ${x.className}(${(x.constructorArgs||[]).map(A=>JSON.stringify(A)).join(", ")}).${x.funcName}(${x.args.map(A=>JSON.stringify(A)).join(", ")})`:`${x.funcName}(${x.args.map(A=>JSON.stringify(A)).join(", ")})`;return`
202
- // Signature test ${$}: ${_}
203
+ `),d=n.filter(x=>!x.isAsync),y=n.filter(x=>x.isAsync),b=d.map((x,_)=>{let $=x.className?`${x.className}.${x.funcName}`:x.funcName,k=x.className?`new ${x.className}(${(x.constructorArgs||[]).map(A=>JSON.stringify(A)).join(", ")}).${x.funcName}(${x.args.map(A=>JSON.stringify(A)).join(", ")})`:`${x.funcName}(${x.args.map(A=>JSON.stringify(A)).join(", ")})`;return`
204
+ // Signature test ${_}: ${$}
203
205
  try {
204
- let __actual = ${j};
206
+ let __actual = ${k};
205
207
  const __expected = ${JSON.stringify(x.expected)};${x.defaults?`
206
208
  const __defaults = ${JSON.stringify(x.defaults)};
207
209
  if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`:""}
208
210
  if (__deepEqual(__actual, __expected)) {
209
- __sigTestResults.push({ idx: ${$}, passed: true });
211
+ __sigTestResults.push({ idx: ${_}, passed: true });
210
212
  } else {
211
- __sigTestResults.push({ idx: ${$}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${_}\\', got ' + __format(__actual) });
213
+ __sigTestResults.push({ idx: ${_}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${$}\\', got ' + __format(__actual) });
212
214
  }
213
215
  } catch (e) {
214
- __sigTestResults.push({ idx: ${$}, passed: false, error: e.message || String(e) });
216
+ __sigTestResults.push({ idx: ${_}, passed: false, error: e.message || String(e) });
215
217
  }
216
218
  `}).join(`
217
- `);mr();let T=`
219
+ `);br();let T=`
218
220
 
219
221
  const __saved_tjs = globalThis.__tjs;
220
222
 
@@ -298,8 +300,8 @@ ${i}}`}return String(e)}function Uo(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,n=>{l
298
300
  globalThis.__tjs = __saved_tjs;
299
301
  }
300
302
  return { testResults: __testResults, sigTestResults: __sigTestResults };
301
- `;try{let x=new Function("__deepEqual","__format","__typeMatches",T),{testResults:$,sigTestResults:_}=x(yr,_t,gr);for(let j of $){let A=e[j.idx],k=c&&!j.passed&&j.error&&/is not defined$/.test(j.error);o.push({description:A.description,passed:k?!0:j.passed,error:k?void 0:j.error,line:A.line})}for(let j of _){let A=d[j.idx],k=c&&!j.passed&&j.error&&/is not defined$/.test(j.error),R=A.className?`${A.className}.${A.funcName}`:A.funcName;o.push({description:`${R} signature example`,passed:k?!0:j.passed,error:k?void 0:j.error,isSignatureTest:!0,line:A.line})}}catch(x){let $=c&&x instanceof ReferenceError;for(let _ of e)o.push({description:_.description,passed:$,error:$?void 0:`Module execution failed: ${x.message}`,line:_.line});for(let _ of d){let j=_.className?`${_.className}.${_.funcName}`:_.funcName;o.push({description:`${j} signature example`,passed:$,error:$?void 0:`Module execution failed: ${x.message}`,isSignatureTest:!0,line:_.line})}}for(let x of y){let $=x.className?`${x.className}.${x.funcName}`:x.funcName;o.push({description:`${$} signature example`,passed:!0,isSignatureTest:!0,line:x.line})}return o}function hn(e){let t="",n=0,r=!1;for(let i=0;i<e.length;i++){let o=e[i];if(o==="{"||o==="["||o==="("){if(o==="{"&&n===0&&r)break;n++,t+=o,r=!0}else o==="}"||o==="]"||o===")"?(n--,t+=o):/\s/.test(o)?t+=o:(t+=o,r=!0)}return t.trim()||null}function dr(e){if(!e.trim())return[];let t=[],n=Jo(e);for(let r of n){let s=r.trim(),i=s.match(/^\.\.\.(\w+)\s*[:=]\s*(\[.+\])$/);if(i){try{let a=new Function(`return ${i[2]}`)();if(Array.isArray(a))for(let c of a)t.push(JSON.stringify(c))}catch{}continue}if(s.startsWith("..."))continue;let o=s.match(/(?:\(\s*[?!]\s*)?(\w+)\s*[:=]\s*(.+?)(?:\))?$/);if(o)t.push(o[2].trim());else return[]}return t}function Jo(e){let t=[],n="",r=0;for(let s of e){if(s==="("||s==="["||s==="{")r++;else if(s===")"||s==="]"||s==="}")r--;else if(s===","&&r===0){t.push(n.trim()),n="";continue}n+=s}return n.trim()&&t.push(n.trim()),t}import*as Us from"acorn";var be={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},$t={custom:0,type:1,import:2,function:3,table:4,memory:5,global:6,export:7,start:8,element:9,code:10,data:11},g={unreachable:0,nop:1,block:2,loop:3,if:4,else:5,end:11,br:12,br_if:13,br_table:14,return:15,call:16,call_indirect:17,drop:26,select:27,local_get:32,local_set:33,local_tee:34,global_get:35,global_set:36,i32_load:40,i64_load:41,f32_load:42,f64_load:43,i32_load8_s:44,i32_load8_u:45,i32_load16_s:46,i32_load16_u:47,i32_store:54,i64_store:55,f32_store:56,f64_store:57,i32_store8:58,i32_store16:59,memory_size:63,memory_grow:64,i32_const:65,i64_const:66,f32_const:67,f64_const:68,i32_eqz:69,i32_eq:70,i32_ne:71,i32_lt_s:72,i32_lt_u:73,i32_gt_s:74,i32_gt_u:75,i32_le_s:76,i32_le_u:77,i32_ge_s:78,i32_ge_u:79,i64_eqz:80,i64_eq:81,i64_ne:82,i64_lt_s:83,i64_lt_u:84,i64_gt_s:85,i64_gt_u:86,i64_le_s:87,i64_le_u:88,i64_ge_s:89,i64_ge_u:90,f32_eq:91,f32_ne:92,f32_lt:93,f32_gt:94,f32_le:95,f32_ge:96,f64_eq:97,f64_ne:98,f64_lt:99,f64_gt:100,f64_le:101,f64_ge:102,i32_clz:103,i32_ctz:104,i32_popcnt:105,i32_add:106,i32_sub:107,i32_mul:108,i32_div_s:109,i32_div_u:110,i32_rem_s:111,i32_rem_u:112,i32_and:113,i32_or:114,i32_xor:115,i32_shl:116,i32_shr_s:117,i32_shr_u:118,i32_rotl:119,i32_rotr:120,i64_add:124,i64_sub:125,i64_mul:126,i64_div_s:127,f32_abs:139,f32_neg:140,f32_ceil:141,f32_floor:142,f32_trunc:143,f32_nearest:144,f32_sqrt:145,f32_add:146,f32_sub:147,f32_mul:148,f32_div:149,f32_min:150,f32_max:151,f32_copysign:152,f64_abs:153,f64_neg:154,f64_ceil:155,f64_floor:156,f64_trunc:157,f64_nearest:158,f64_sqrt:159,f64_add:160,f64_sub:161,f64_mul:162,f64_div:163,f64_min:164,f64_max:165,f64_copysign:166,i32_wrap_i64:167,i32_trunc_f32_s:168,i32_trunc_f32_u:169,i32_trunc_f64_s:170,i32_trunc_f64_u:171,i64_extend_i32_s:172,i64_extend_i32_u:173,f32_convert_i32_s:178,f32_convert_i32_u:179,f32_convert_i64_s:180,f32_demote_f64:182,f64_convert_i32_s:183,f64_convert_i32_u:184,f64_convert_i64_s:185,f64_promote_f32:187,i32_reinterpret_f32:188,f32_reinterpret_i32:190,f64_reinterpret_i64:191,i32_extend8_s:192,i32_extend16_s:193},Wo=Object.fromEntries(Object.entries(g).map(([e,t])=>[t,e.replace(/_/g,".")])),jt=253,re={v128_load:0,v128_store:11,v128_const:12,f32x4_splat:19,f32x4_extract_lane:31,f32x4_replace_lane:32,f32x4_neg:225,f32x4_sqrt:227,f32x4_add:228,f32x4_sub:229,f32x4_mul:230,f32x4_div:231},Vo=Object.fromEntries(Object.entries(re).map(([e,t])=>[t,e.replace(/_/g,".")]));function hr(e){return[jt,...q(e)]}function Fs(e,t,n){return[jt,...q(e),...q(t),...q(n)]}function q(e){let t=[];do{let n=e&127;e>>>=7,e!==0&&(n|=128),t.push(n)}while(e!==0);return t}function vt(e){let t=[],n=!0;for(;n;){let r=e&127;e>>=7,e===0&&(r&64)===0||e===-1&&(r&64)!==0?n=!1:r|=128,t.push(r)}return t}function xr(e){let t=new ArrayBuffer(4);return new Float32Array(t)[0]=e,[...new Uint8Array(t)]}function me(e){let t=new ArrayBuffer(8);return new Float64Array(t)[0]=e,[...new Uint8Array(t)]}function br(e){let t=new TextEncoder().encode(e);return[...q(t.length),...t]}function kt(e,t){return[e,...q(t.length),...t]}function Ae(e,t){let n=0,r=0,s=t;for(;s<e.length;){let i=e[s];if(n|=(i&127)<<r,s++,(i&128)===0)break;r+=7}return[n,s-t]}function Ko(e,t){let n=new ArrayBuffer(8),r=new Uint8Array(n);for(let s=0;s<8;s++)r[s]=e[t+s];return new Float64Array(n)[0]}function zo(e,t,n){let r=[],s=1,i=()=>" ".repeat(s),o=t.map((l,u)=>`(param $${l.name} ${l.type})`).join(" "),a=n.map((l,u)=>`(local $L${t.length+u} ${l})`).join(" ");r.push(`(func (export "compute") ${o} (result f64)`),a&&r.push(` ${a}`);let c=0;for(;c<e.length;){let l=e[c],u=Wo[l]||`unknown(0x${l.toString(16)})`;if(c++,l===g.local_get||l===g.local_set||l===g.local_tee){let[p,f]=Ae(e,c);c+=f;let m=p<t.length?`$${t[p].name}`:`$L${p}`;r.push(`${i()}${u} ${m}`)}else if(l===g.br||l===g.br_if){let[p,f]=Ae(e,c);c+=f,r.push(`${i()}${u} ${p}`)}else if(l===g.i32_const){let[p,f]=Ae(e,c);c+=f,r.push(`${i()}i32.const ${p}`)}else if(l===g.f32_const){let p=new ArrayBuffer(4),f=new Uint8Array(p);for(let d=0;d<4;d++)f[d]=e[c+d];let m=new Float32Array(p)[0];c+=4,r.push(`${i()}f32.const ${m}`)}else if(l===g.f64_const){let p=Ko(e,c);c+=8,r.push(`${i()}f64.const ${p}`)}else if(l===g.block||l===g.loop){let p=e[c];c++,r.push(`${i()}${u}${p===be.void?"":` (result ${p===be.f64?"f64":"i32"})`}`),s++}else if(l===g.if){let p=e[c];c++,r.push(`${i()}if${p===be.void?"":` (result ${p===be.f64?"f64":"i32"})`}`),s++}else if(l===g.else)s--,r.push(`${i()}else`),s++;else if(l===g.end)s=Math.max(1,s-1),r.push(`${i()}end`);else if(l===g.f64_load||l===g.f64_store||l===g.f32_load||l===g.f32_store||l===g.i32_load||l===g.i32_store){let[p,f]=Ae(e,c);c+=f;let[m,d]=Ae(e,c);c+=d,r.push(`${i()}${u}${m?` offset=${m}`:""}`)}else if(l===jt){let[p,f]=Ae(e,c);c+=f;let m=Vo[p]||`simd.unknown(0x${p.toString(16)})`;if(p===re.v128_load||p===re.v128_store){let[d,y]=Ae(e,c);c+=y;let[b,w]=Ae(e,c);c+=w,r.push(`${i()}${m}${b?` offset=${b}`:""}`)}else if(p===re.v128_const){let d=e.slice(c,c+16);c+=16,r.push(`${i()}v128.const ${d.map(y=>"0x"+y.toString(16).padStart(2,"0")).join(" ")}`)}else if(p===re.f32x4_extract_lane||p===re.f32x4_replace_lane){let d=e[c];c++,r.push(`${i()}${m} ${d}`)}else r.push(`${i()}${m}`)}else r.push(`${i()}${u}`)}return r.push(")"),r.join(`
302
- `)}var Tn={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_s,storeOp:g.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_u,storeOp:g.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_u,storeOp:g.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:g.i32_load16_s,storeOp:g.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:g.i32_load16_u,storeOp:g.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:g.i32_load,storeOp:g.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:g.i32_load,storeOp:g.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:g.f32_load,storeOp:g.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:g.f64_load,storeOp:g.f64_store}};function Go(e){let t={params:e,locals:new Map,nextLocalIndex:e.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1};return e.forEach((n,r)=>{t.locals.set(n.name,{index:r,type:n.type})}),t}function xn(e,t,n){if(e.locals.has(t))return e.errors.push(`Duplicate local declaration: ${t}`),e.locals.get(t).index;let r=e.nextLocalIndex++;return e.locals.set(t,{index:r,type:n}),e.localTypes.push(n),r}function Je(e,t){return e.locals.get(t)}function nt(e,t){switch(e.type){case"ExpressionStatement":{let n=e.expression;return[...W(n,t),g.drop]}case"ReturnStatement":{let n=e;if(t.hasReturn=!0,!n.argument)return[g.return];let r=W(n.argument,t),s=Y(n.argument,t);return s==="i32"?r.push(g.f64_convert_i32_s):s==="f32"&&r.push(g.f64_promote_f32),r.push(g.return),r}case"VariableDeclaration":{let n=e,r=[];for(let s of n.declarations){if(s.id.type!=="Identifier"){t.errors.push("Destructuring not supported in WASM blocks");continue}let i=s.id.name,o="f64";s.init&&(o=Y(s.init,t));let a=xn(t,i,o);s.init&&(r.push(...W(s.init,t)),r.push(g.local_set,...q(a)))}return r}case"ForStatement":return Ho(e,t);case"IfStatement":return Zo(e,t);case"BlockStatement":{let n=e,r=[];for(let s of n.body)r.push(...nt(s,t));return r}default:return t.errors.push(`Unsupported statement type: ${e.type}`),[]}}function Ho(e,t){let n=[];return e.init&&(e.init.type==="VariableDeclaration"?n.push(...nt(e.init,t)):n.push(...W(e.init,t))),n.push(g.block,be.void),n.push(g.loop,be.void),e.test&&(n.push(...W(e.test,t)),n.push(g.i32_eqz),n.push(g.br_if,1)),t.loopDepth++,e.body&&n.push(...nt(e.body,t)),t.loopDepth--,e.update&&(n.push(...W(e.update,t)),n.push(g.drop)),n.push(g.br,0),n.push(g.end),n.push(g.end),n}function Zo(e,t){let n=[];return n.push(...W(e.test,t)),n.push(g.if,be.void),n.push(...nt(e.consequent,t)),e.alternate&&(n.push(g.else),n.push(...nt(e.alternate,t))),n.push(g.end),n}function Y(e,t){switch(e.type){case"Literal":{let n=e;return typeof n.value=="number"?n.raw&&(n.raw.includes(".")||n.raw.includes("e"))?"f64":Number.isInteger(n.value)&&n.value>=-2147483648&&n.value<=2147483647?"i32":"f64":"f64"}case"Identifier":return Je(t,e.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let n=e;if(["<",">","<=",">=","==","!=","===","!=="].includes(n.operator)||["|","&","^","<<",">>",">>>"].includes(n.operator))return"i32";let r=Y(n.left,t),s=Y(n.right,t);return r==="v128"||s==="v128"?"v128":r==="f64"||s==="f64"?"f64":r==="f32"||s==="f32"?"f32":"i32"}case"UnaryExpression":{let n=e;return n.operator==="!"?"i32":Y(n.argument,t)}case"MemberExpression":{let n=e;if(n.object.type==="Identifier"&&Je(t,n.object.name)){let s=t.params.find(i=>i.name===n.object.name);if(s?.arrayType){let i=Tn[s.arrayType];if(i)return i.elementType}}return"f64"}case"CallExpression":{let n=e;if(n.callee.type==="MemberExpression"){let r=n.callee;if(r.object.type==="Identifier"&&r.object.name==="Math")return"f64"}if(n.callee.type==="Identifier"){let r=n.callee.name;if(r==="f32x4_extract_lane")return"f32";if(r.startsWith("f32x4_")||r==="v128_load")return"v128"}return"f64"}default:return"f64"}}function W(e,t){switch(e.type){case"Literal":{let n=e;if(typeof n.value=="number"){let r=Y(e,t);return r==="i32"?[g.i32_const,...vt(n.value|0)]:r==="f32"?[g.f32_const,...xr(n.value)]:[g.f64_const,...me(n.value)]}return t.errors.push(`Unsupported literal type: ${typeof n.value}`),[g.f64_const,...me(0)]}case"Identifier":{let n=e.name,r=Je(t,n);return r?[g.local_get,...q(r.index)]:(t.errors.push(`Unknown identifier: ${n}`),[g.f64_const,...me(0)])}case"BinaryExpression":return Yo(e,t);case"UnaryExpression":return Xo(e,t);case"AssignmentExpression":return Qo(e,t);case"UpdateExpression":return ea(e,t);case"MemberExpression":return ta(e,t);case"CallExpression":return ra(e,t);case"SequenceExpression":{let n=e,r=[];for(let s=0;s<n.expressions.length;s++)r.push(...W(n.expressions[s],t)),s<n.expressions.length-1&&r.push(g.drop);return r}default:return t.errors.push(`Unsupported expression type: ${e.type}`),[g.f64_const,...me(0)]}}function Yo(e,t){let n=W(e.left,t),r=W(e.right,t),s=Y(e,t),i=Y(e.left,t),o=Y(e.right,t),a=["<",">","<=",">=","==","===","!=","!=="].includes(e.operator),c;i==="f64"||o==="f64"?c="f64":i==="f32"||o==="f32"?c="f32":c="i32",!a&&s==="f64"&&(c="f64");let l=n,u=r;c==="f64"?(i==="i32"?l=[...n,g.f64_convert_i32_s]:i==="f32"&&(l=[...n,g.f64_promote_f32]),o==="i32"?u=[...r,g.f64_convert_i32_s]:o==="f32"&&(u=[...r,g.f64_promote_f32])):c==="f32"&&(i==="i32"&&(l=[...n,g.f32_convert_i32_s]),o==="i32"&&(u=[...r,g.f32_convert_i32_s]));let f={"+":{i32:g.i32_add,f32:g.f32_add,f64:g.f64_add},"-":{i32:g.i32_sub,f32:g.f32_sub,f64:g.f64_sub},"*":{i32:g.i32_mul,f32:g.f32_mul,f64:g.f64_mul},"/":{i32:g.i32_div_s,f32:g.f32_div,f64:g.f64_div},"%":{i32:g.i32_rem_s},"<":{i32:g.i32_lt_s,f32:g.f32_lt,f64:g.f64_lt},">":{i32:g.i32_gt_s,f32:g.f32_gt,f64:g.f64_gt},"<=":{i32:g.i32_le_s,f32:g.f32_le,f64:g.f64_le},">=":{i32:g.i32_ge_s,f32:g.f32_ge,f64:g.f64_ge},"==":{i32:g.i32_eq,f32:g.f32_eq,f64:g.f64_eq},"===":{i32:g.i32_eq,f32:g.f32_eq,f64:g.f64_eq},"!=":{i32:g.i32_ne,f32:g.f32_ne,f64:g.f64_ne},"!==":{i32:g.i32_ne,f32:g.f32_ne,f64:g.f64_ne},"|":{i32:g.i32_or},"&":{i32:g.i32_and},"^":{i32:g.i32_xor},"<<":{i32:g.i32_shl},">>":{i32:g.i32_shr_s},">>>":{i32:g.i32_shr_u}}[e.operator];if(!f)return t.errors.push(`Unsupported operator: ${e.operator}`),[g.f64_const,...me(0)];let m=f[c]??f.f64??f.i32;return m===void 0?(t.errors.push(`Operator ${e.operator} not supported for type ${c}`),[g.f64_const,...me(0)]):[...l,...u,m]}function Xo(e,t){let n=W(e.argument,t),r=Y(e.argument,t);switch(e.operator){case"-":return r==="i32"?[g.i32_const,0,...n,g.i32_sub]:r==="f32"?[...n,g.f32_neg]:[...n,g.f64_neg];case"!":return[...n,g.i32_eqz];case"~":return[...n,g.i32_const,...vt(-1),g.i32_xor];default:return t.errors.push(`Unsupported unary operator: ${e.operator}`),n}}function Qo(e,t){if(e.left.type==="MemberExpression")return na(e.left,e.right,e.operator,t);if(e.left.type!=="Identifier")return t.errors.push("Assignment target must be identifier or array element"),[];let n=e.left.name,r=Je(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[];if(e.operator==="="){s.push(...W(e.right,t));let i=Y(e.right,t);r.type==="f64"&&i==="i32"?s.push(g.f64_convert_i32_s):r.type==="f64"&&i==="f32"?s.push(g.f64_promote_f32):r.type==="i32"&&i==="f64"?s.push(g.i32_trunc_f64_s):r.type==="i32"&&i==="f32"?s.push(g.i32_trunc_f32_s):r.type==="f32"&&i==="i32"?s.push(g.f32_convert_i32_s):r.type==="f32"&&i==="f64"&&s.push(g.f32_demote_f64)}else{let i=Y(e.right,t),o=r.type;i==="f64"||r.type==="f64"?o="f64":(i==="f32"||r.type==="f32")&&(o="f32"),s.push(g.local_get,...q(r.index)),o==="f64"&&r.type==="i32"?s.push(g.f64_convert_i32_s):o==="f64"&&r.type==="f32"?s.push(g.f64_promote_f32):o==="f32"&&r.type==="i32"&&s.push(g.f32_convert_i32_s),s.push(...W(e.right,t)),o==="f64"&&i==="i32"?s.push(g.f64_convert_i32_s):o==="f64"&&i==="f32"?s.push(g.f64_promote_f32):o==="f32"&&i==="i32"&&s.push(g.f32_convert_i32_s);let a=e.operator.slice(0,-1),l={"+":{i32:g.i32_add,f32:g.f32_add,f64:g.f64_add},"-":{i32:g.i32_sub,f32:g.f32_sub,f64:g.f64_sub},"*":{i32:g.i32_mul,f32:g.f32_mul,f64:g.f64_mul},"/":{i32:g.i32_div_s,f32:g.f32_div,f64:g.f64_div}}[a]?.[o];if(!l)return t.errors.push(`Unsupported compound assignment: ${e.operator}`),[];s.push(l),r.type==="i32"&&o==="f64"?s.push(g.i32_trunc_f64_s):r.type==="i32"&&o==="f32"?s.push(g.i32_trunc_f32_s):r.type==="f32"&&o==="f64"&&s.push(g.f32_demote_f64)}return s.push(g.local_tee,...q(r.index)),s}function ea(e,t){if(e.argument.type!=="Identifier")return t.errors.push("Update expression argument must be identifier"),[];let n=e.argument.name,r=Je(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[],i=r.type==="i32";return e.prefix?(s.push(g.local_get,...q(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...me(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_tee,...q(r.index))):(s.push(g.local_get,...q(r.index)),s.push(g.local_get,...q(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...me(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_set,...q(r.index))),s}function ta(e,t){if(e.object.type!=="Identifier")return t.errors.push("Array access requires identifier"),[];let n=e.object.name,r=t.params.find(l=>l.name===n);if(!r?.isArray||!r.arrayType)return t.errors.push(`${n} is not a typed array parameter`),[];let s=Tn[r.arrayType];if(!s)return t.errors.push(`Unknown array type: ${r.arrayType}`),[];t.needsMemory=!0;let i=[],o=Je(t,n);if(!o)return t.errors.push(`Unknown array: ${n}`),[];if(i.push(g.local_get,...q(o.index)),!e.computed||!e.property)return t.errors.push("Array access requires computed index"),[];let a=W(e.property,t),c=Y(e.property,t);return i.push(...a),c==="f64"&&i.push(g.i32_trunc_f64_s),s.bytesPerElement>1&&(i.push(g.i32_const,...vt(s.bytesPerElement)),i.push(g.i32_mul)),i.push(g.i32_add),i.push(s.loadOp,0,0),i}function na(e,t,n,r){if(e.object.type!=="Identifier")return r.errors.push("Array store requires identifier"),[];let s=e.object.name,i=r.params.find(d=>d.name===s);if(!i?.isArray||!i.arrayType)return r.errors.push(`${s} is not a typed array parameter`),[];let o=Tn[i.arrayType];if(!o)return r.errors.push(`Unknown array type: ${i.arrayType}`),[];r.needsMemory=!0;let a=[],c=Je(r,s);if(!c)return[];if(!e.computed||!e.property)return r.errors.push("Array store requires computed index"),[];let l=W(e.property,r),u=Y(e.property,r),p=()=>{let d=[];return d.push(g.local_get,...q(c.index)),d.push(...l),u==="f64"&&d.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(d.push(g.i32_const,...vt(o.bytesPerElement)),d.push(g.i32_mul)),d.push(g.i32_add),d};if(n==="=")a.push(...W(t,r));else{let d=xn(r,`__addr_${r.nextLocalIndex}`,"i32");a.push(...p()),a.push(g.local_tee,...q(d)),a.push(o.loadOp,0,0),a.push(...W(t,r));let y=Y(t,r);o.elementType==="f32"&&y==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&y==="f32"?a.push(g.f64_promote_f32):o.elementType==="f32"&&y==="i32"?a.push(g.f32_convert_i32_s):o.elementType==="f64"&&y==="i32"?a.push(g.f64_convert_i32_s):o.elementType==="i32"&&y==="f64"?a.push(g.i32_trunc_f64_s):o.elementType==="i32"&&y==="f32"&&a.push(g.i32_trunc_f32_s);let b=n.slice(0,-1),w={"+":o.elementType==="i32"?g.i32_add:o.elementType==="f32"?g.f32_add:g.f64_add,"-":o.elementType==="i32"?g.i32_sub:o.elementType==="f32"?g.f32_sub:g.f64_sub,"*":o.elementType==="i32"?g.i32_mul:o.elementType==="f32"?g.f32_mul:g.f64_mul};a.push(w[b]??g.f64_add);let E=xn(r,`__val_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...q(E)),a.push(g.local_get,...q(d)),a.push(g.local_get,...q(E)),a.push(o.storeOp,0,0),a.push(g.local_get,...q(E)),a}let f=Y(t,r);o.elementType==="f32"&&f==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&f==="f32"?a.push(g.f64_promote_f32):o.elementType==="i32"&&f==="f64"&&a.push(g.i32_trunc_f64_s);let m=xn(r,`__tmp_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...q(m)),a.push(g.local_get,...q(c.index)),a.push(...l),u==="f64"&&a.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(a.push(g.i32_const,...vt(o.bytesPerElement)),a.push(g.i32_mul)),a.push(g.i32_add),a.push(g.local_get,...q(m)),a.push(o.storeOp,0,0),a.push(g.local_get,...q(m)),a}function ra(e,t){if(e.callee.type==="MemberExpression"){let n=e.callee;if(n.object.type==="Identifier"&&n.object.name==="Math"&&n.property.type==="Identifier"){let r=n.property.name;return ia(r,e.arguments,t)}}if(e.callee.type==="Identifier"){let n=e.callee.name;if(n.startsWith("f32x4_")||n.startsWith("v128_"))return sa(n,e.arguments,t)}return t.errors.push(`Unsupported function call: ${e.callee.type}`),[g.f64_const,...me(0)]}function sa(e,t,n){n.needsMemory=!0;let r=[];switch(e){case"v128_load":case"f32x4_load":{r.push(...W(t[0],n)),Y(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...W(t[1],n));let i=Y(t[1],n);return i==="f64"?r.push(g.i32_trunc_f64_s):i==="f32"&&r.push(g.i32_trunc_f32_s),r.push(g.i32_add),r.push(...Fs(re.v128_load,2,0)),r}case"v128_store":case"f32x4_store":{r.push(...W(t[0],n)),Y(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...W(t[1],n));let i=Y(t[1],n);return i==="f64"?r.push(g.i32_trunc_f64_s):i==="f32"&&r.push(g.i32_trunc_f32_s),r.push(g.i32_add),r.push(...W(t[2],n)),r.push(...Fs(re.v128_store,2,0)),r.push(g.i32_const,0),r}case"f32x4_splat":{r.push(...W(t[0],n));let s=Y(t[0],n);return s==="i32"?r.push(g.f32_convert_i32_s):s==="f64"&&r.push(g.f32_demote_f64),r.push(...hr(re.f32x4_splat)),r}case"f32x4_extract_lane":{r.push(...W(t[0],n));let s=t[1].value;return!Number.isInteger(s)||s<0||s>3?(n.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${s}`),[g.f32_const,...xr(0)]):(r.push(jt,...q(re.f32x4_extract_lane),s),r)}case"f32x4_replace_lane":{r.push(...W(t[0],n));let s=t[1].value;if(!Number.isInteger(s)||s<0||s>3)return n.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${s}`),[g.f32_const,...xr(0)];r.push(...W(t[2],n));let i=Y(t[2],n);return i==="i32"?r.push(g.f32_convert_i32_s):i==="f64"&&r.push(g.f32_demote_f64),r.push(jt,...q(re.f32x4_replace_lane),s),r}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{r.push(...W(t[0],n)),r.push(...W(t[1],n));let s={f32x4_add:re.f32x4_add,f32x4_sub:re.f32x4_sub,f32x4_mul:re.f32x4_mul,f32x4_div:re.f32x4_div};return r.push(...hr(s[e])),r}case"f32x4_neg":case"f32x4_sqrt":{r.push(...W(t[0],n));let s={f32x4_neg:re.f32x4_neg,f32x4_sqrt:re.f32x4_sqrt};return r.push(...hr(s[e])),r}default:return n.errors.push(`Unknown SIMD intrinsic: ${e}`),[g.f64_const,...me(0)]}}function ia(e,t,n){let r=[];for(let a of t){r.push(...W(a,n));let c=Y(a,n);c==="i32"?r.push(g.f64_convert_i32_s):c==="f32"&&r.push(g.f64_promote_f32)}let i={abs:g.f64_abs,ceil:g.f64_ceil,floor:g.f64_floor,trunc:g.f64_trunc,sqrt:g.f64_sqrt,min:g.f64_min,max:g.f64_max}[e];return i!==void 0?(r.push(i),r):["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(e)?(n.needsMathImports.add(e),n.errors.push(`Math.${e} requires JS import (not yet implemented)`),[g.f64_const,...me(0)]):(n.errors.push(`Unknown Math method: ${e}`),[g.f64_const,...me(0)])}function qs(e){let t=e.split(":").map(i=>i.trim()),n=t[0];if(t.length===1)return{name:n,type:"f64"};let r=t[1];return Tn[r]?{name:n,type:"i32",isArray:!0,arrayType:r}:{name:n,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[r]??"f64"}}function oa(e,t,n,r,s){let i=[0,97,115,109,1,0,0,0],o=e.map(E=>be[E.type]),a=s?[1,be.f64]:[0],c=kt($t.type,[1,96,...q(e.length),...o,...a]),l=[],u=[];r&&(u=kt($t.import,[1,...br("env"),...br("memory"),2,0,1]));let p=kt($t.function,[1,0]),f=kt($t.export,[1,...br("compute"),0,0]),m=[];if(n.length>0){let E=n[0],T=1;for(let x=1;x<n.length;x++)n[x]===E?T++:(m.push([...q(T),be[E]]),E=n[x],T=1);m.push([...q(T),be[E]])}let y=[...[...q(m.length),...m.flat()],...t,g.end],b=kt($t.code,[1,...q(y.length),...y]),w=[...i,...c];return u.length>0&&w.push(...u),w.push(...p,...f,...b),w}function Sn(e){try{let t=e.captures.map(qs),n;try{let l=`function __wasm__(${t.map(u=>u.name).join(", ")}) { ${e.body} }`;n=Us.parse(l,{ecmaVersion:2022})}catch(l){return{bytes:new Uint8Array,warnings:[],success:!1,error:`Parse error: ${l.message}`}}let s=n.body[0].body.body,i=Go(t),o=[];for(let l of s)o.push(...nt(l,i));if(i.errors.length>0)return{bytes:new Uint8Array,warnings:i.warnings,success:!1,error:i.errors.join("; ")};let a=oa(t,o,i.localTypes,i.needsMemory,i.hasReturn),c=zo(o,t,i.localTypes);return{bytes:new Uint8Array(a),warnings:i.warnings,success:!0,needsMemory:i.needsMemory,wat:c}}catch(t){return{bytes:new Uint8Array,warnings:[],success:!1,error:t.message}}}async function Js(e,t){let n={};t&&(n.env={memory:t});let r=await WebAssembly.compile(e);return WebAssembly.instantiate(r,n)}async function aa(e){let t=Sn(e);if(!t.success)return{fn:()=>0,success:!1,error:t.error};try{let n;t.needsMemory&&(n=new WebAssembly.Memory({initial:256}));let s=(await Js(t.bytes,n)).exports.compute,i=e.captures.map(qs);return i.some(c=>c.isArray)?{fn:(...c)=>{if(!n)throw new Error("Memory not initialized");let l=new Uint8Array(n.buffer),u=0,p=[];for(let m=0;m<i.length;m++){let d=i[m],y=c[m];if(d.isArray&&y instanceof Object&&"buffer"in y){let b=y,w=new Uint8Array(b.buffer,b.byteOffset,b.byteLength);l.set(w,u),p.push(u),u+=w.length,u=u+15&-16}else p.push(y)}let f=s(...p);u=0;for(let m=0;m<i.length;m++){let d=i[m],y=c[m];if(d.isArray&&y instanceof Object&&"buffer"in y){let b=y,w=new Uint8Array(b.buffer,b.byteOffset,b.byteLength);w.set(l.slice(u,u+w.length)),u+=w.length,u=u+15&-16}}return f},memory:n,success:!0}:{fn:s,memory:n,success:!0}}catch(n){return{fn:()=>0,success:!1,error:n.message}}}async function Ws(e){let t=await aa(e);return t.success?(globalThis[e.id]=t.fn,!0):(console.warn(`WASM compilation failed for ${e.id}:`,t.error),!1)}async function ca(e){let t=0,n=0,r=[];for(let s of e)await Ws(s)?t++:(n++,r.push(`Failed to compile ${s.id}`));return{compiled:t,failed:n,errors:r}}function Vs(e){let t=[],n=[];for(let a of e){let c=Sn(a);if(c.success){let l=btoa(String.fromCharCode(...c.bytes));n.push({id:a.id,base64:l,captures:a.captures,needsMemory:c.needsMemory??!1,wat:c.wat??""}),t.push({id:a.id,success:!0,byteLength:c.bytes.length})}else t.push({id:a.id,success:!1,error:c.error})}if(n.length===0)return{code:"",results:t};let r=n.map(a=>{let c=a.wat.split(`
303
+ `;try{let x=new Function("__deepEqual","__format","__typeMatches",T),{testResults:_,sigTestResults:$}=x(Tr,vt,Sr);for(let k of _){let A=e[k.idx],j=c&&!k.passed&&k.error&&/is not defined$/.test(k.error);o.push({description:A.description,passed:j?!0:k.passed,error:j?void 0:k.error,line:A.line})}for(let k of $){let A=d[k.idx],j=c&&!k.passed&&k.error&&/is not defined$/.test(k.error),N=A.className?`${A.className}.${A.funcName}`:A.funcName;o.push({description:`${N} signature example`,passed:j?!0:k.passed,error:j?void 0:k.error,isSignatureTest:!0,line:A.line})}}catch(x){let _=c&&x instanceof ReferenceError;for(let $ of e)o.push({description:$.description,passed:_,error:_?void 0:`Module execution failed: ${x.message}`});for(let $ of d){let k=$.className?`${$.className}.${$.funcName}`:$.funcName;o.push({description:`${k} signature example`,passed:_,error:_?void 0:`Module execution failed: ${x.message}`,isSignatureTest:!0})}}for(let x of y){let _=x.className?`${x.className}.${x.funcName}`:x.funcName;o.push({description:`${_} signature example`,passed:!0,isSignatureTest:!0,line:x.line})}return o}function wn(e){let t="",n=0,r=!1;for(let i=0;i<e.length;i++){let o=e[i];if(o==="{"||o==="["||o==="("){if(o==="{"&&n===0&&r)break;n++,t+=o,r=!0}else o==="}"||o==="]"||o===")"?(n--,t+=o):/\s/.test(o)?t+=o:(t+=o,r=!0)}return t.trim()||null}function xr(e){if(!e.trim())return[];let t=[],n=la(e);for(let r of n){let s=r.trim(),i=s.match(/^\.\.\.(\w+)\s*[:=]\s*(\[.+\])$/);if(i){try{let a=new Function(`return ${i[2]}`)();if(Array.isArray(a))for(let c of a)t.push(JSON.stringify(c))}catch{}continue}if(s.startsWith("..."))continue;let o=s.match(/(?:\(\s*[?!]\s*)?(\w+)\s*[:=]\s*(.+?)(?:\))?$/);if(o)t.push(o[2].trim());else return[]}return t}function la(e){let t=[],n="",r=0;for(let s of e){if(s==="("||s==="["||s==="{")r++;else if(s===")"||s==="]"||s==="}")r--;else if(s===","&&r===0){t.push(n.trim()),n="";continue}n+=s}return n.trim()&&t.push(n.trim()),t}import*as Qs from"acorn";var xe={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},At={custom:0,type:1,import:2,function:3,table:4,memory:5,global:6,export:7,start:8,element:9,code:10,data:11},g={unreachable:0,nop:1,block:2,loop:3,if:4,else:5,end:11,br:12,br_if:13,br_table:14,return:15,call:16,call_indirect:17,drop:26,select:27,local_get:32,local_set:33,local_tee:34,global_get:35,global_set:36,i32_load:40,i64_load:41,f32_load:42,f64_load:43,i32_load8_s:44,i32_load8_u:45,i32_load16_s:46,i32_load16_u:47,i32_store:54,i64_store:55,f32_store:56,f64_store:57,i32_store8:58,i32_store16:59,memory_size:63,memory_grow:64,i32_const:65,i64_const:66,f32_const:67,f64_const:68,i32_eqz:69,i32_eq:70,i32_ne:71,i32_lt_s:72,i32_lt_u:73,i32_gt_s:74,i32_gt_u:75,i32_le_s:76,i32_le_u:77,i32_ge_s:78,i32_ge_u:79,i64_eqz:80,i64_eq:81,i64_ne:82,i64_lt_s:83,i64_lt_u:84,i64_gt_s:85,i64_gt_u:86,i64_le_s:87,i64_le_u:88,i64_ge_s:89,i64_ge_u:90,f32_eq:91,f32_ne:92,f32_lt:93,f32_gt:94,f32_le:95,f32_ge:96,f64_eq:97,f64_ne:98,f64_lt:99,f64_gt:100,f64_le:101,f64_ge:102,i32_clz:103,i32_ctz:104,i32_popcnt:105,i32_add:106,i32_sub:107,i32_mul:108,i32_div_s:109,i32_div_u:110,i32_rem_s:111,i32_rem_u:112,i32_and:113,i32_or:114,i32_xor:115,i32_shl:116,i32_shr_s:117,i32_shr_u:118,i32_rotl:119,i32_rotr:120,i64_add:124,i64_sub:125,i64_mul:126,i64_div_s:127,f32_abs:139,f32_neg:140,f32_ceil:141,f32_floor:142,f32_trunc:143,f32_nearest:144,f32_sqrt:145,f32_add:146,f32_sub:147,f32_mul:148,f32_div:149,f32_min:150,f32_max:151,f32_copysign:152,f64_abs:153,f64_neg:154,f64_ceil:155,f64_floor:156,f64_trunc:157,f64_nearest:158,f64_sqrt:159,f64_add:160,f64_sub:161,f64_mul:162,f64_div:163,f64_min:164,f64_max:165,f64_copysign:166,i32_wrap_i64:167,i32_trunc_f32_s:168,i32_trunc_f32_u:169,i32_trunc_f64_s:170,i32_trunc_f64_u:171,i64_extend_i32_s:172,i64_extend_i32_u:173,f32_convert_i32_s:178,f32_convert_i32_u:179,f32_convert_i64_s:180,f32_demote_f64:182,f64_convert_i32_s:183,f64_convert_i32_u:184,f64_convert_i64_s:185,f64_promote_f32:187,i32_reinterpret_f32:188,f32_reinterpret_i32:190,f64_reinterpret_i64:191,i32_extend8_s:192,i32_extend16_s:193},ua=Object.fromEntries(Object.entries(g).map(([e,t])=>[t,e.replace(/_/g,".")])),Ct=253,se={v128_load:0,v128_store:11,v128_const:12,f32x4_splat:19,f32x4_extract_lane:31,f32x4_replace_lane:32,f32x4_neg:225,f32x4_sqrt:227,f32x4_add:228,f32x4_sub:229,f32x4_mul:230,f32x4_div:231},fa=Object.fromEntries(Object.entries(se).map(([e,t])=>[t,e.replace(/_/g,".")]));function wr(e){return[Ct,...J(e)]}function Xs(e,t,n){return[Ct,...J(e),...J(t),...J(n)]}function J(e){let t=[];do{let n=e&127;e>>>=7,e!==0&&(n|=128),t.push(n)}while(e!==0);return t}function Nt(e){let t=[],n=!0;for(;n;){let r=e&127;e>>=7,e===0&&(r&64)===0||e===-1&&(r&64)!==0?n=!1:r|=128,t.push(r)}return t}function $r(e){let t=new ArrayBuffer(4);return new Float32Array(t)[0]=e,[...new Uint8Array(t)]}function ye(e){let t=new ArrayBuffer(8);return new Float64Array(t)[0]=e,[...new Uint8Array(t)]}function Er(e){let t=new TextEncoder().encode(e);return[...J(t.length),...t]}function Mt(e,t){return[e,...J(t.length),...t]}function Ie(e,t){let n=0,r=0,s=t;for(;s<e.length;){let i=e[s];if(n|=(i&127)<<r,s++,(i&128)===0)break;r+=7}return[n,s-t]}function pa(e,t){let n=new ArrayBuffer(8),r=new Uint8Array(n);for(let s=0;s<8;s++)r[s]=e[t+s];return new Float64Array(n)[0]}function ma(e,t,n){let r=[],s=1,i=()=>" ".repeat(s),o=t.map((l,u)=>`(param $${l.name} ${l.type})`).join(" "),a=n.map((l,u)=>`(local $L${t.length+u} ${l})`).join(" ");r.push(`(func (export "compute") ${o} (result f64)`),a&&r.push(` ${a}`);let c=0;for(;c<e.length;){let l=e[c],u=ua[l]||`unknown(0x${l.toString(16)})`;if(c++,l===g.local_get||l===g.local_set||l===g.local_tee){let[p,f]=Ie(e,c);c+=f;let m=p<t.length?`$${t[p].name}`:`$L${p}`;r.push(`${i()}${u} ${m}`)}else if(l===g.br||l===g.br_if){let[p,f]=Ie(e,c);c+=f,r.push(`${i()}${u} ${p}`)}else if(l===g.i32_const){let[p,f]=Ie(e,c);c+=f,r.push(`${i()}i32.const ${p}`)}else if(l===g.f32_const){let p=new ArrayBuffer(4),f=new Uint8Array(p);for(let d=0;d<4;d++)f[d]=e[c+d];let m=new Float32Array(p)[0];c+=4,r.push(`${i()}f32.const ${m}`)}else if(l===g.f64_const){let p=pa(e,c);c+=8,r.push(`${i()}f64.const ${p}`)}else if(l===g.block||l===g.loop){let p=e[c];c++,r.push(`${i()}${u}${p===xe.void?"":` (result ${p===xe.f64?"f64":"i32"})`}`),s++}else if(l===g.if){let p=e[c];c++,r.push(`${i()}if${p===xe.void?"":` (result ${p===xe.f64?"f64":"i32"})`}`),s++}else if(l===g.else)s--,r.push(`${i()}else`),s++;else if(l===g.end)s=Math.max(1,s-1),r.push(`${i()}end`);else if(l===g.f64_load||l===g.f64_store||l===g.f32_load||l===g.f32_store||l===g.i32_load||l===g.i32_store){let[p,f]=Ie(e,c);c+=f;let[m,d]=Ie(e,c);c+=d,r.push(`${i()}${u}${m?` offset=${m}`:""}`)}else if(l===Ct){let[p,f]=Ie(e,c);c+=f;let m=fa[p]||`simd.unknown(0x${p.toString(16)})`;if(p===se.v128_load||p===se.v128_store){let[d,y]=Ie(e,c);c+=y;let[b,w]=Ie(e,c);c+=w,r.push(`${i()}${m}${b?` offset=${b}`:""}`)}else if(p===se.v128_const){let d=e.slice(c,c+16);c+=16,r.push(`${i()}v128.const ${d.map(y=>"0x"+y.toString(16).padStart(2,"0")).join(" ")}`)}else if(p===se.f32x4_extract_lane||p===se.f32x4_replace_lane){let d=e[c];c++,r.push(`${i()}${m} ${d}`)}else r.push(`${i()}${m}`)}else r.push(`${i()}${u}`)}return r.push(")"),r.join(`
304
+ `)}var _n={Int8Array:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_s,storeOp:g.i32_store8},Uint8Array:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_u,storeOp:g.i32_store8},Uint8ClampedArray:{elementType:"i32",bytesPerElement:1,loadOp:g.i32_load8_u,storeOp:g.i32_store8},Int16Array:{elementType:"i32",bytesPerElement:2,loadOp:g.i32_load16_s,storeOp:g.i32_store16},Uint16Array:{elementType:"i32",bytesPerElement:2,loadOp:g.i32_load16_u,storeOp:g.i32_store16},Int32Array:{elementType:"i32",bytesPerElement:4,loadOp:g.i32_load,storeOp:g.i32_store},Uint32Array:{elementType:"i32",bytesPerElement:4,loadOp:g.i32_load,storeOp:g.i32_store},Float32Array:{elementType:"f32",bytesPerElement:4,loadOp:g.f32_load,storeOp:g.f32_store},Float64Array:{elementType:"f64",bytesPerElement:8,loadOp:g.f64_load,storeOp:g.f64_store}};function da(e){let t={params:e,locals:new Map,nextLocalIndex:e.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1};return e.forEach((n,r)=>{t.locals.set(n.name,{index:r,type:n.type})}),t}function $n(e,t,n){if(e.locals.has(t))return e.errors.push(`Duplicate local declaration: ${t}`),e.locals.get(t).index;let r=e.nextLocalIndex++;return e.locals.set(t,{index:r,type:n}),e.localTypes.push(n),r}function ze(e,t){return e.locals.get(t)}function ot(e,t){switch(e.type){case"ExpressionStatement":{let n=e.expression;return[...V(n,t),g.drop]}case"ReturnStatement":{let n=e;if(t.hasReturn=!0,!n.argument)return[g.return];let r=V(n.argument,t),s=Y(n.argument,t);return s==="i32"?r.push(g.f64_convert_i32_s):s==="f32"&&r.push(g.f64_promote_f32),r.push(g.return),r}case"VariableDeclaration":{let n=e,r=[];for(let s of n.declarations){if(s.id.type!=="Identifier"){t.errors.push("Destructuring not supported in WASM blocks");continue}let i=s.id.name,o="f64";s.init&&(o=Y(s.init,t));let a=$n(t,i,o);s.init&&(r.push(...V(s.init,t)),r.push(g.local_set,...J(a)))}return r}case"ForStatement":return ya(e,t);case"IfStatement":return ga(e,t);case"BlockStatement":{let n=e,r=[];for(let s of n.body)r.push(...ot(s,t));return r}default:return t.errors.push(`Unsupported statement type: ${e.type}`),[]}}function ya(e,t){let n=[];return e.init&&(e.init.type==="VariableDeclaration"?n.push(...ot(e.init,t)):n.push(...V(e.init,t))),n.push(g.block,xe.void),n.push(g.loop,xe.void),e.test&&(n.push(...V(e.test,t)),n.push(g.i32_eqz),n.push(g.br_if,1)),t.loopDepth++,e.body&&n.push(...ot(e.body,t)),t.loopDepth--,e.update&&(n.push(...V(e.update,t)),n.push(g.drop)),n.push(g.br,0),n.push(g.end),n.push(g.end),n}function ga(e,t){let n=[];return n.push(...V(e.test,t)),n.push(g.if,xe.void),n.push(...ot(e.consequent,t)),e.alternate&&(n.push(g.else),n.push(...ot(e.alternate,t))),n.push(g.end),n}function Y(e,t){switch(e.type){case"Literal":{let n=e;return typeof n.value=="number"?n.raw&&(n.raw.includes(".")||n.raw.includes("e"))?"f64":Number.isInteger(n.value)&&n.value>=-2147483648&&n.value<=2147483647?"i32":"f64":"f64"}case"Identifier":return ze(t,e.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let n=e;if(["<",">","<=",">=","==","!=","===","!=="].includes(n.operator)||["|","&","^","<<",">>",">>>"].includes(n.operator))return"i32";let r=Y(n.left,t),s=Y(n.right,t);return r==="v128"||s==="v128"?"v128":r==="f64"||s==="f64"?"f64":r==="f32"||s==="f32"?"f32":"i32"}case"UnaryExpression":{let n=e;return n.operator==="!"?"i32":Y(n.argument,t)}case"MemberExpression":{let n=e;if(n.object.type==="Identifier"&&ze(t,n.object.name)){let s=t.params.find(i=>i.name===n.object.name);if(s?.arrayType){let i=_n[s.arrayType];if(i)return i.elementType}}return"f64"}case"CallExpression":{let n=e;if(n.callee.type==="MemberExpression"){let r=n.callee;if(r.object.type==="Identifier"&&r.object.name==="Math")return"f64"}if(n.callee.type==="Identifier"){let r=n.callee.name;if(r==="f32x4_extract_lane")return"f32";if(r.startsWith("f32x4_")||r==="v128_load")return"v128"}return"f64"}default:return"f64"}}function V(e,t){switch(e.type){case"Literal":{let n=e;if(typeof n.value=="number"){let r=Y(e,t);return r==="i32"?[g.i32_const,...Nt(n.value|0)]:r==="f32"?[g.f32_const,...$r(n.value)]:[g.f64_const,...ye(n.value)]}return t.errors.push(`Unsupported literal type: ${typeof n.value}`),[g.f64_const,...ye(0)]}case"Identifier":{let n=e.name,r=ze(t,n);return r?[g.local_get,...J(r.index)]:(t.errors.push(`Unknown identifier: ${n}`),[g.f64_const,...ye(0)])}case"BinaryExpression":return ha(e,t);case"UnaryExpression":return ba(e,t);case"AssignmentExpression":return xa(e,t);case"UpdateExpression":return Ta(e,t);case"MemberExpression":return Sa(e,t);case"CallExpression":return Ea(e,t);case"SequenceExpression":{let n=e,r=[];for(let s=0;s<n.expressions.length;s++)r.push(...V(n.expressions[s],t)),s<n.expressions.length-1&&r.push(g.drop);return r}default:return t.errors.push(`Unsupported expression type: ${e.type}`),[g.f64_const,...ye(0)]}}function ha(e,t){let n=V(e.left,t),r=V(e.right,t),s=Y(e,t),i=Y(e.left,t),o=Y(e.right,t),a=["<",">","<=",">=","==","===","!=","!=="].includes(e.operator),c;i==="f64"||o==="f64"?c="f64":i==="f32"||o==="f32"?c="f32":c="i32",!a&&s==="f64"&&(c="f64");let l=n,u=r;c==="f64"?(i==="i32"?l=[...n,g.f64_convert_i32_s]:i==="f32"&&(l=[...n,g.f64_promote_f32]),o==="i32"?u=[...r,g.f64_convert_i32_s]:o==="f32"&&(u=[...r,g.f64_promote_f32])):c==="f32"&&(i==="i32"&&(l=[...n,g.f32_convert_i32_s]),o==="i32"&&(u=[...r,g.f32_convert_i32_s]));let f={"+":{i32:g.i32_add,f32:g.f32_add,f64:g.f64_add},"-":{i32:g.i32_sub,f32:g.f32_sub,f64:g.f64_sub},"*":{i32:g.i32_mul,f32:g.f32_mul,f64:g.f64_mul},"/":{i32:g.i32_div_s,f32:g.f32_div,f64:g.f64_div},"%":{i32:g.i32_rem_s},"<":{i32:g.i32_lt_s,f32:g.f32_lt,f64:g.f64_lt},">":{i32:g.i32_gt_s,f32:g.f32_gt,f64:g.f64_gt},"<=":{i32:g.i32_le_s,f32:g.f32_le,f64:g.f64_le},">=":{i32:g.i32_ge_s,f32:g.f32_ge,f64:g.f64_ge},"==":{i32:g.i32_eq,f32:g.f32_eq,f64:g.f64_eq},"===":{i32:g.i32_eq,f32:g.f32_eq,f64:g.f64_eq},"!=":{i32:g.i32_ne,f32:g.f32_ne,f64:g.f64_ne},"!==":{i32:g.i32_ne,f32:g.f32_ne,f64:g.f64_ne},"|":{i32:g.i32_or},"&":{i32:g.i32_and},"^":{i32:g.i32_xor},"<<":{i32:g.i32_shl},">>":{i32:g.i32_shr_s},">>>":{i32:g.i32_shr_u}}[e.operator];if(!f)return t.errors.push(`Unsupported operator: ${e.operator}`),[g.f64_const,...ye(0)];let m=f[c]??f.f64??f.i32;return m===void 0?(t.errors.push(`Operator ${e.operator} not supported for type ${c}`),[g.f64_const,...ye(0)]):[...l,...u,m]}function ba(e,t){let n=V(e.argument,t),r=Y(e.argument,t);switch(e.operator){case"-":return r==="i32"?[g.i32_const,0,...n,g.i32_sub]:r==="f32"?[...n,g.f32_neg]:[...n,g.f64_neg];case"!":return[...n,g.i32_eqz];case"~":return[...n,g.i32_const,...Nt(-1),g.i32_xor];default:return t.errors.push(`Unsupported unary operator: ${e.operator}`),n}}function xa(e,t){if(e.left.type==="MemberExpression")return wa(e.left,e.right,e.operator,t);if(e.left.type!=="Identifier")return t.errors.push("Assignment target must be identifier or array element"),[];let n=e.left.name,r=ze(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[];if(e.operator==="="){s.push(...V(e.right,t));let i=Y(e.right,t);r.type==="f64"&&i==="i32"?s.push(g.f64_convert_i32_s):r.type==="f64"&&i==="f32"?s.push(g.f64_promote_f32):r.type==="i32"&&i==="f64"?s.push(g.i32_trunc_f64_s):r.type==="i32"&&i==="f32"?s.push(g.i32_trunc_f32_s):r.type==="f32"&&i==="i32"?s.push(g.f32_convert_i32_s):r.type==="f32"&&i==="f64"&&s.push(g.f32_demote_f64)}else{let i=Y(e.right,t),o=r.type;i==="f64"||r.type==="f64"?o="f64":(i==="f32"||r.type==="f32")&&(o="f32"),s.push(g.local_get,...J(r.index)),o==="f64"&&r.type==="i32"?s.push(g.f64_convert_i32_s):o==="f64"&&r.type==="f32"?s.push(g.f64_promote_f32):o==="f32"&&r.type==="i32"&&s.push(g.f32_convert_i32_s),s.push(...V(e.right,t)),o==="f64"&&i==="i32"?s.push(g.f64_convert_i32_s):o==="f64"&&i==="f32"?s.push(g.f64_promote_f32):o==="f32"&&i==="i32"&&s.push(g.f32_convert_i32_s);let a=e.operator.slice(0,-1),l={"+":{i32:g.i32_add,f32:g.f32_add,f64:g.f64_add},"-":{i32:g.i32_sub,f32:g.f32_sub,f64:g.f64_sub},"*":{i32:g.i32_mul,f32:g.f32_mul,f64:g.f64_mul},"/":{i32:g.i32_div_s,f32:g.f32_div,f64:g.f64_div}}[a]?.[o];if(!l)return t.errors.push(`Unsupported compound assignment: ${e.operator}`),[];s.push(l),r.type==="i32"&&o==="f64"?s.push(g.i32_trunc_f64_s):r.type==="i32"&&o==="f32"?s.push(g.i32_trunc_f32_s):r.type==="f32"&&o==="f64"&&s.push(g.f32_demote_f64)}return s.push(g.local_tee,...J(r.index)),s}function Ta(e,t){if(e.argument.type!=="Identifier")return t.errors.push("Update expression argument must be identifier"),[];let n=e.argument.name,r=ze(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[],i=r.type==="i32";return e.prefix?(s.push(g.local_get,...J(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...ye(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_tee,...J(r.index))):(s.push(g.local_get,...J(r.index)),s.push(g.local_get,...J(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...ye(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_set,...J(r.index))),s}function Sa(e,t){if(e.object.type!=="Identifier")return t.errors.push("Array access requires identifier"),[];let n=e.object.name,r=t.params.find(l=>l.name===n);if(!r?.isArray||!r.arrayType)return t.errors.push(`${n} is not a typed array parameter`),[];let s=_n[r.arrayType];if(!s)return t.errors.push(`Unknown array type: ${r.arrayType}`),[];t.needsMemory=!0;let i=[],o=ze(t,n);if(!o)return t.errors.push(`Unknown array: ${n}`),[];if(i.push(g.local_get,...J(o.index)),!e.computed||!e.property)return t.errors.push("Array access requires computed index"),[];let a=V(e.property,t),c=Y(e.property,t);return i.push(...a),c==="f64"&&i.push(g.i32_trunc_f64_s),s.bytesPerElement>1&&(i.push(g.i32_const,...Nt(s.bytesPerElement)),i.push(g.i32_mul)),i.push(g.i32_add),i.push(s.loadOp,0,0),i}function wa(e,t,n,r){if(e.object.type!=="Identifier")return r.errors.push("Array store requires identifier"),[];let s=e.object.name,i=r.params.find(d=>d.name===s);if(!i?.isArray||!i.arrayType)return r.errors.push(`${s} is not a typed array parameter`),[];let o=_n[i.arrayType];if(!o)return r.errors.push(`Unknown array type: ${i.arrayType}`),[];r.needsMemory=!0;let a=[],c=ze(r,s);if(!c)return[];if(!e.computed||!e.property)return r.errors.push("Array store requires computed index"),[];let l=V(e.property,r),u=Y(e.property,r),p=()=>{let d=[];return d.push(g.local_get,...J(c.index)),d.push(...l),u==="f64"&&d.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(d.push(g.i32_const,...Nt(o.bytesPerElement)),d.push(g.i32_mul)),d.push(g.i32_add),d};if(n==="=")a.push(...V(t,r));else{let d=$n(r,`__addr_${r.nextLocalIndex}`,"i32");a.push(...p()),a.push(g.local_tee,...J(d)),a.push(o.loadOp,0,0),a.push(...V(t,r));let y=Y(t,r);o.elementType==="f32"&&y==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&y==="f32"?a.push(g.f64_promote_f32):o.elementType==="f32"&&y==="i32"?a.push(g.f32_convert_i32_s):o.elementType==="f64"&&y==="i32"?a.push(g.f64_convert_i32_s):o.elementType==="i32"&&y==="f64"?a.push(g.i32_trunc_f64_s):o.elementType==="i32"&&y==="f32"&&a.push(g.i32_trunc_f32_s);let b=n.slice(0,-1),w={"+":o.elementType==="i32"?g.i32_add:o.elementType==="f32"?g.f32_add:g.f64_add,"-":o.elementType==="i32"?g.i32_sub:o.elementType==="f32"?g.f32_sub:g.f64_sub,"*":o.elementType==="i32"?g.i32_mul:o.elementType==="f32"?g.f32_mul:g.f64_mul};a.push(w[b]??g.f64_add);let S=$n(r,`__val_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...J(S)),a.push(g.local_get,...J(d)),a.push(g.local_get,...J(S)),a.push(o.storeOp,0,0),a.push(g.local_get,...J(S)),a}let f=Y(t,r);o.elementType==="f32"&&f==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&f==="f32"?a.push(g.f64_promote_f32):o.elementType==="i32"&&f==="f64"&&a.push(g.i32_trunc_f64_s);let m=$n(r,`__tmp_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...J(m)),a.push(g.local_get,...J(c.index)),a.push(...l),u==="f64"&&a.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(a.push(g.i32_const,...Nt(o.bytesPerElement)),a.push(g.i32_mul)),a.push(g.i32_add),a.push(g.local_get,...J(m)),a.push(o.storeOp,0,0),a.push(g.local_get,...J(m)),a}function Ea(e,t){if(e.callee.type==="MemberExpression"){let n=e.callee;if(n.object.type==="Identifier"&&n.object.name==="Math"&&n.property.type==="Identifier"){let r=n.property.name;return _a(r,e.arguments,t)}}if(e.callee.type==="Identifier"){let n=e.callee.name;if(n.startsWith("f32x4_")||n.startsWith("v128_"))return $a(n,e.arguments,t)}return t.errors.push(`Unsupported function call: ${e.callee.type}`),[g.f64_const,...ye(0)]}function $a(e,t,n){n.needsMemory=!0;let r=[];switch(e){case"v128_load":case"f32x4_load":{r.push(...V(t[0],n)),Y(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...V(t[1],n));let i=Y(t[1],n);return i==="f64"?r.push(g.i32_trunc_f64_s):i==="f32"&&r.push(g.i32_trunc_f32_s),r.push(g.i32_add),r.push(...Xs(se.v128_load,2,0)),r}case"v128_store":case"f32x4_store":{r.push(...V(t[0],n)),Y(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...V(t[1],n));let i=Y(t[1],n);return i==="f64"?r.push(g.i32_trunc_f64_s):i==="f32"&&r.push(g.i32_trunc_f32_s),r.push(g.i32_add),r.push(...V(t[2],n)),r.push(...Xs(se.v128_store,2,0)),r.push(g.i32_const,0),r}case"f32x4_splat":{r.push(...V(t[0],n));let s=Y(t[0],n);return s==="i32"?r.push(g.f32_convert_i32_s):s==="f64"&&r.push(g.f32_demote_f64),r.push(...wr(se.f32x4_splat)),r}case"f32x4_extract_lane":{r.push(...V(t[0],n));let s=t[1].value;return!Number.isInteger(s)||s<0||s>3?(n.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${s}`),[g.f32_const,...$r(0)]):(r.push(Ct,...J(se.f32x4_extract_lane),s),r)}case"f32x4_replace_lane":{r.push(...V(t[0],n));let s=t[1].value;if(!Number.isInteger(s)||s<0||s>3)return n.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${s}`),[g.f32_const,...$r(0)];r.push(...V(t[2],n));let i=Y(t[2],n);return i==="i32"?r.push(g.f32_convert_i32_s):i==="f64"&&r.push(g.f32_demote_f64),r.push(Ct,...J(se.f32x4_replace_lane),s),r}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{r.push(...V(t[0],n)),r.push(...V(t[1],n));let s={f32x4_add:se.f32x4_add,f32x4_sub:se.f32x4_sub,f32x4_mul:se.f32x4_mul,f32x4_div:se.f32x4_div};return r.push(...wr(s[e])),r}case"f32x4_neg":case"f32x4_sqrt":{r.push(...V(t[0],n));let s={f32x4_neg:se.f32x4_neg,f32x4_sqrt:se.f32x4_sqrt};return r.push(...wr(s[e])),r}default:return n.errors.push(`Unknown SIMD intrinsic: ${e}`),[g.f64_const,...ye(0)]}}function _a(e,t,n){let r=[];for(let a of t){r.push(...V(a,n));let c=Y(a,n);c==="i32"?r.push(g.f64_convert_i32_s):c==="f32"&&r.push(g.f64_promote_f32)}let i={abs:g.f64_abs,ceil:g.f64_ceil,floor:g.f64_floor,trunc:g.f64_trunc,sqrt:g.f64_sqrt,min:g.f64_min,max:g.f64_max}[e];return i!==void 0?(r.push(i),r):["sin","cos","tan","asin","acos","atan","atan2","exp","log","pow"].includes(e)?(n.needsMathImports.add(e),n.errors.push(`Math.${e} requires JS import (not yet implemented)`),[g.f64_const,...ye(0)]):(n.errors.push(`Unknown Math method: ${e}`),[g.f64_const,...ye(0)])}function ei(e){let t=e.split(":").map(i=>i.trim()),n=t[0];if(t.length===1)return{name:n,type:"f64"};let r=t[1];return _n[r]?{name:n,type:"i32",isArray:!0,arrayType:r}:{name:n,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[r]??"f64"}}function ka(e,t,n,r,s){let i=[0,97,115,109,1,0,0,0],o=e.map(S=>xe[S.type]),a=s?[1,xe.f64]:[0],c=Mt(At.type,[1,96,...J(e.length),...o,...a]),l=[],u=[];r&&(u=Mt(At.import,[1,...Er("env"),...Er("memory"),2,0,1]));let p=Mt(At.function,[1,0]),f=Mt(At.export,[1,...Er("compute"),0,0]),m=[];if(n.length>0){let S=n[0],T=1;for(let x=1;x<n.length;x++)n[x]===S?T++:(m.push([...J(T),xe[S]]),S=n[x],T=1);m.push([...J(T),xe[S]])}let y=[...[...J(m.length),...m.flat()],...t,g.end],b=Mt(At.code,[1,...J(y.length),...y]),w=[...i,...c];return u.length>0&&w.push(...u),w.push(...p,...f,...b),w}function kn(e){try{let t=e.captures.map(ei),n;try{let l=`function __wasm__(${t.map(u=>u.name).join(", ")}) { ${e.body} }`;n=Qs.parse(l,{ecmaVersion:2022})}catch(l){return{bytes:new Uint8Array,warnings:[],success:!1,error:`Parse error: ${l.message}`}}let s=n.body[0].body.body,i=da(t),o=[];for(let l of s)o.push(...ot(l,i));if(i.errors.length>0)return{bytes:new Uint8Array,warnings:i.warnings,success:!1,error:i.errors.join("; ")};let a=ka(t,o,i.localTypes,i.needsMemory,i.hasReturn),c=ma(o,t,i.localTypes);return{bytes:new Uint8Array(a),warnings:i.warnings,success:!0,needsMemory:i.needsMemory,wat:c}}catch(t){return{bytes:new Uint8Array,warnings:[],success:!1,error:t.message}}}async function ti(e,t){let n={};t&&(n.env={memory:t});let r=await WebAssembly.compile(e);return WebAssembly.instantiate(r,n)}async function ja(e){let t=kn(e);if(!t.success)return{fn:()=>0,success:!1,error:t.error};try{let n;t.needsMemory&&(n=new WebAssembly.Memory({initial:256}));let s=(await ti(t.bytes,n)).exports.compute,i=e.captures.map(ei);return i.some(c=>c.isArray)?{fn:(...c)=>{if(!n)throw new Error("Memory not initialized");let l=new Uint8Array(n.buffer),u=0,p=[];for(let m=0;m<i.length;m++){let d=i[m],y=c[m];if(d.isArray&&y instanceof Object&&"buffer"in y){let b=y,w=new Uint8Array(b.buffer,b.byteOffset,b.byteLength);l.set(w,u),p.push(u),u+=w.length,u=u+15&-16}else p.push(y)}let f=s(...p);u=0;for(let m=0;m<i.length;m++){let d=i[m],y=c[m];if(d.isArray&&y instanceof Object&&"buffer"in y){let b=y,w=new Uint8Array(b.buffer,b.byteOffset,b.byteLength);w.set(l.slice(u,u+w.length)),u+=w.length,u=u+15&-16}}return f},memory:n,success:!0}:{fn:s,memory:n,success:!0}}catch(n){return{fn:()=>0,success:!1,error:n.message}}}async function ni(e){let t=await ja(e);return t.success?(globalThis[e.id]=t.fn,!0):(console.warn(`WASM compilation failed for ${e.id}:`,t.error),!1)}async function va(e){let t=0,n=0,r=[];for(let s of e)await ni(s)?t++:(n++,r.push(`Failed to compile ${s.id}`));return{compiled:t,failed:n,errors:r}}function ri(e){let t=[],n=[];for(let a of e){let c=kn(a);if(c.success){let l=btoa(String.fromCharCode(...c.bytes));n.push({id:a.id,base64:l,captures:a.captures,needsMemory:c.needsMemory??!1,wat:c.wat??""}),t.push({id:a.id,success:!0,byteLength:c.bytes.length})}else t.push({id:a.id,success:!1,error:c.error})}if(n.length===0)return{code:"",results:t};let r=n.map(a=>{let c=a.wat.split(`
303
305
  `).map(l=>` * ${l}`);return`/**
304
306
  * WASM: ${a.id}
305
307
  ${c.join(`
@@ -336,55 +338,55 @@ for(const{id,b64,c,m}of __wasmBlocks){
336
338
  const ab=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);off=(off+15)&~15;ab.set(mv.slice(off,off+ab.length));off+=ab.length}}
337
339
  return r};
338
340
  }})();
339
- `.trim(),results:t}}function la(e,t,n){if(!e||!t)return!1;let r=new RegExp(`function\\s+${t}\\s*\\([^)]*?\\b${n}\\s*([=:])`,"s"),s=e.match(r);return s?s[1]===":":!1}function ua(e,t,n,r,s){let i=[],o=ht(t,e),a={},c=!1,l,u;if(e.params.length===1&&(e.params[0].type==="ObjectPattern"||e.params[0].type==="AssignmentPattern"&&e.params[0].left.type==="ObjectPattern")){c=!0;let m=e.params[0],d=m.type==="ObjectPattern"?m:m.left,y=je(d,n);if(y.type.kind==="object"&&y.type.destructuredParams){l={},u=new Set;for(let[b,w]of Object.entries(y.type.destructuredParams))a[b]={...w,description:o.params[b]},l[b]=w.type,w.required&&u.add(b)}}else for(let m of e.params)if(m.type==="Identifier"){let d=je(m,n);a[m.name]={...d,required:n.has(m.name),description:o.params[m.name]}}else if(m.type==="AssignmentPattern"&&m.left.type==="Identifier"){let d=je(m,n),y=la(s||"",e.id?.name||"",m.left.name);a[m.left.name]={...d,required:y,default:y?null:d.example??d.default,description:o.params[m.left.name]}}else if(m.type==="ObjectPattern"){let d=je(m,n);if(d.type.kind==="object"&&d.type.destructuredParams)for(let[y,b]of Object.entries(d.type.destructuredParams))a[y]={...b,description:o.params[y]}}else if(m.type==="RestElement"&&m.argument?.type==="Identifier"){let d=m.argument.name,y=t.match(new RegExp(`\\.\\.\\.${d}\\s*:\\s*([^)]+?)\\s*\\)`));if(y)try{let b=Ks(y[1].trim(),0,{ecmaVersion:2022}),w=le(b);a[d]={name:d,type:w,required:!1,description:o.params[d]}}catch{a[d]={name:d,type:{kind:"array"},required:!1,description:o.params[d]}}else a[d]={name:d,type:{kind:"array"},required:!1,description:o.params[d]}}let p;if(r)try{let m=r.includes("=")?zs(r):r,d=Ks(m,0,{ecmaVersion:2022});p=le(d)}catch{p={kind:"any"},i.push(`Could not parse return type: ${r}`)}return{types:{name:e.id?.name||"anonymous",params:a,returns:p,description:o.description,isDestructuredParam:c,destructuredShape:l,destructuredRequired:u},warnings:i}}function fa(e,t,n){let r=[],s=n?`${n}:`:"",i=n?`${n}:${e}`:e;if(t.isDestructuredParam&&t.destructuredShape){let a=t.destructuredShape,c=t.destructuredRequired||new Set,l=Object.keys(a);if(l.length===0)return null;for(let u of l)r.push(`if (${u} instanceof Error) return ${u};`);for(let[u,p]of Object.entries(a)){let f=c.has(u),m=`${s}${e}.${u}`,d=Tr(u,p);if(d){let y=p.kind;f?r.push(`if (${d}) return __tjs.typeError('${m}', '${y}', ${u});`):r.push(`if (${u} !== undefined && ${d}) return __tjs.typeError('${m}', '${y}', ${u});`)}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
340
- `),suffix:"__tjs.popStack();"})}let o=Object.entries(t.params);if(o.length===0)return null;for(let[a]of o)r.push(`if (${a} instanceof Error) return ${a};`);for(let[a,c]of o){let l=`${s}${e}.${a}`,u=Tr(a,c.type);if(u){let p=c.type.kind==="union"?c.type.members.map(f=>f.kind).join(" | "):c.type.kind;c.required?r.push(`if (${u}) return __tjs.typeError('${l}', '${p}', ${a});`):r.push(`if (${a} !== undefined && ${u}) return __tjs.typeError('${l}', '${p}', ${a});`)}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
341
- `),suffix:"__tjs.popStack();"})}function zs(e){let t="",n=0;for(let r=0;r<e.length;r++){let s=e[r];if(s==="{"||s==="["||s==="(")n++,t+=s;else if(s==="}"||s==="]"||s===")")n--,t+=s;else if(s==="'"||s==='"'||s==="`"){for(t+=s,r++;r<e.length&&e[r]!==s;)e[r]==="\\"&&(t+=e[r++]),t+=e[r++];r<e.length&&(t+=e[r])}else n===1&&s==="="&&e[r-1]!=="!"&&e[r+1]!=="="?t+=":":t+=s}return t}function pa(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*(:[?!]?)\\s*`,"g").exec(e);if(!r)return null;let s=e.slice(r.index+r[0].length);return hn(s)}function ma(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*:([?!]?)`,"g").exec(e);if(!r)return;let s=r[1];if(s==="?")return"safe";if(s==="!")return"unsafe"}function da(e){let t=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return t?t[1].trim():void 0}function ya(e,t){let n=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${t}\\s*\\(`,"m"),r=e.match(n);return r?parseInt(r[1],10):void 0}function Mt(e,t={}){let{filename:n="<source>",runTests:r=!0,debug:s=!1,resolvedImports:i={}}=t,o=[];e=Gn(e);let c=da(e)||n,{code:l,tests:u,mocks:p,testRunner:f}=Yn(e),{ast:m,originalSource:d,requiredParams:y,unsafeFunctions:b}=we(l,{filename:n,colonShorthand:!0}),w=ga(m),E=Wt(l);for(let O of u)O.body=dt(O.body),E.tjsModes.tjsEquals&&(O.body=yt(O.body));for(let O of p)O.body=dt(O.body),E.tjsModes.tjsEquals&&(O.body=yt(O.body));let T={},x=[],$=[];for(let O of w){let K=O.id?.name||"anonymous",J=pa(l,K),ge;if(J&&J.includes("="))try{let ue=J.matchAll(/(\w+)\s*=\s*/g),fe=zs(J),Ie=new Function(`return ${fe}`)(),he={};for(let Bi of ue){let Wn=Bi[1];Wn in Ie&&(he[Wn]=Ie[Wn])}Object.keys(he).length>0&&(ge=he)}catch{}let{types:Pe,warnings:Pi}=ua(O,d,y,J,l);o.push(...Pi),T[K]=Pe;for(let ue of O.params)if(ue.type==="AssignmentPattern"){let fe=ue.left?.name||ue.left?.value,Ie=fe?Pe.params[fe]:null;if(Ie?.required&&Ie.default===null)$.push({start:ue.left.end,end:ue.right.end});else{let he=ue.right;he.type==="BinaryExpression"&&he.operator==="|"&&$.push({start:he.left.end,end:he.end})}}let Lr=E.moduleSafety==="none"||b.has(K),Ii=E.safeFunctions.has(K),Di=ma(l,K),Oi=ya(e,K),He={file:c,line:Oi??O.loc?.start.line??0,column:O.loc?.start.column??0},Li={unsafe:Lr,safe:Ii,returnSafety:Di},Br=E.polymorphicNames.has(K),Jn;if(Br){let ue=[];for(let Ie of w){let he=Ie.id?.name||"";he.startsWith(K+"$")&&ue.push(he)}let fe={polymorphic:!0,variants:ue};He&&(fe.source=`${He.file}:${He.line}`),Jn=`${K}.__tjs = ${JSON.stringify(fe,null,2)}`}else Jn=ha(K,Pe,Li,{debug:s,source:He,returnDefaults:ge});if(x.push({position:O.end,text:`
342
- ${Jn}`}),!Lr&&!Br){let ue=`${He.file}:${He.line}`,fe=fa(K,Pe,ue);fe&&O.body&&O.body.start!==void 0&&(x.push({position:O.body.start+1,text:`
343
- ${fe.preamble}
344
- `}),fe.suffix&&x.push({position:O.body.end-1,text:`
345
- ${fe.suffix}
346
- `}))}}$.sort((O,K)=>K.start-O.start);let _=E.source;for(let{start:O,end:K}of $)_=_.slice(0,O)+_.slice(K);for(let O of x){let K=0;for(let J of $)J.start<O.position&&(K+=J.end-J.start);O.position-=K}x.sort((O,K)=>K.position-O.position);for(let{position:O,text:K}of x)_=_.slice(0,O)+K+_.slice(O);let j=_.includes("__tjs.typeError("),A=_.includes("__tjs.pushStack("),k=_.includes("Is("),R=_.includes("IsNot("),M=_.includes("Eq("),P=_.includes("NotEq("),v=_.includes("TypeOf("),I=/\bType\(/.test(_),L=/\bGeneric\(/.test(_),F=/\bFunctionPredicate\(/.test(_),H=/\bEnum\(/.test(_),se=/\bUnion\(/.test(_),Ge=_.includes("__tjs.bang("),Un=E.tjsModes.tjsSafeEval;if(j||A||k||R||M||P||v||I||L||F||H||se||Ge||Un){let O=[];j&&O.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),A&&O.push("const __stack=[];function pushStack(n){__stack.push(n)}function popStack(){__stack.pop()}function getStack(){return[...__stack]}"),M&&O.push("function Eq(a,b){if(a instanceof String||a instanceof Number||a instanceof Boolean)a=a.valueOf();if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();if(a===b)return true;if(typeof a==='number'&&typeof b==='number'&&isNaN(a)&&isNaN(b))return true;if((a===null||a===undefined)&&(b===null||b===undefined))return true;return false}"),P&&O.push("function NotEq(a,b){return!Eq(a,b)}"),v&&O.push("function TypeOf(v){return v===null?'null':typeof v}"),k&&O.push("const tjsEquals=Symbol.for('tjs.equals');function Is(a,b){if(a!=null&&typeof a==='object'&&typeof a[tjsEquals]==='function')return a[tjsEquals](b);if(b!=null&&typeof b==='object'&&typeof b[tjsEquals]==='function')return b[tjsEquals](a);if(a!=null&&typeof a==='object'&&typeof a.Equals==='function')return a.Equals(b);if(b!=null&&typeof b==='object'&&typeof b.Equals==='function')return b.Equals(a);if(a instanceof String||a instanceof Number||a instanceof Boolean)a=a.valueOf();if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();if(a===b)return true;if(typeof a==='number'&&typeof b==='number'&&isNaN(a)&&isNaN(b))return true;if((a==null)&&(b==null))return true;if(a==null||b==null)return false;if(typeof a!==typeof b)return false;if(typeof a!=='object')return false;if(a instanceof Set&&b instanceof Set){if(a.size!==b.size)return false;for(const v of a)if(!b.has(v))return false;return true}if(a instanceof Map&&b instanceof Map){if(a.size!==b.size)return false;for(const[k,v]of a)if(!b.has(k)||!Is(v,b.get(k)))return false;return true}if(a instanceof Date&&b instanceof Date)return a.getTime()===b.getTime();if(a instanceof RegExp&&b instanceof RegExp)return a.toString()===b.toString();if(Array.isArray(a)&&Array.isArray(b)){if(a.length!==b.length)return false;return a.every((v,i)=>Is(v,b[i]))}if(Array.isArray(a)!==Array.isArray(b))return false;const ka=Object.keys(a),kb=Object.keys(b);if(ka.length!==kb.length)return false;return ka.every(k=>Is(a[k],b[k]))}"),R&&O.push("function IsNot(a,b){return!Is(a,b)}"),I&&O.push("function Type(d,p,e){const t={description:d,__runtimeType:true};if(typeof p==='function'){t.check=p;t.default=e??null}else{const ex=e??p;t.default=ex;t.check=v=>{if(ex===null)return true;return typeof v===typeof ex}}return t}"),L&&O.push("function Generic(tp,pred,d){const f=(...args)=>{const t={description:d||'generic',__runtimeType:true,check:v=>pred(v,...args)};return t};f.__runtimeType=true;f.description=d;return f}"),F&&O.push("function FunctionPredicate(n,s,b){if(Array.isArray(s)&&b){const f=(...a)=>FunctionPredicate(n,b(...a));f.typeParamNames=s.map(p=>Array.isArray(p)?p[0]:p);f.description=n;f.__runtimeType=true;return f}const spec=typeof s==='function'?{}:s||{};return{description:n,params:spec.params||{},returns:spec.returns,returnContract:spec.returnContract||'assertReturns',check:v=>typeof v==='function',__runtimeType:true}}"),H&&O.push("function Enum(d,m){const vals=typeof m==='object'?Object.values(m):[];return{description:d,check:v=>vals.includes(v),values:vals,__runtimeType:true}}"),se&&O.push("function Union(d,...v){const vals=v.flat();return{description:d,check:x=>vals.includes(x),values:vals,__runtimeType:true}}"),Ge&&(j||O.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),O.push("function bang(o,p){if(o===null||o===undefined)return typeError('bang.'+p,'non-null',o);if(isMonadicError(o))return o;return o[p]}"));let K=O.length>0?O.join(`;
341
+ `.trim(),results:t}}import*as si from"acorn";function kr(e,t){let n=[];function r(i){n.push({start:i.start,end:i.end,newText:`__tjs.toBool(${fe(i,t)})`})}function s(i){if(!(!i||typeof i!="object"||!("type"in i))){switch(i.type){case"IfStatement":case"WhileStatement":case"DoWhileStatement":{let o=i;r(o.test),o.consequent&&s(o.consequent),o.alternate&&s(o.alternate),o.body&&s(o.body);return}case"ForStatement":{let o=i;o.init&&s(o.init),o.test&&r(o.test),o.update&&s(o.update),o.body&&s(o.body);return}case"ConditionalExpression":{let o=i;n.push({start:o.start,end:o.end,newText:`__tjs.toBool(${fe(o.test,t)})?(${fe(o.consequent,t)}):(${fe(o.alternate,t)})`});return}case"LogicalExpression":{let o=i;if(o.operator==="&&"||o.operator==="||"){n.push({start:o.start,end:o.end,newText:fe(i,t)});return}break}case"UnaryExpression":{let o=i;if(o.operator==="!"){n.push({start:o.start,end:o.end,newText:`!__tjs.toBool(${fe(o.argument,t)})`});return}break}case"CallExpression":{let o=i;if(o.callee&&o.callee.type==="Identifier"&&o.callee.name==="Boolean"&&o.arguments.length===1&&o.arguments[0].type!=="SpreadElement"){n.push({start:o.start,end:o.end,newText:`__tjs.toBool(${fe(o.arguments[0],t)})`});return}break}}Aa(i,s)}}return s(e),Ma(n)}function fe(e,t){if(!e)return"";switch(e.type){case"LogicalExpression":{let n=e,r=fe(n.left,t),s=fe(n.right,t);return n.operator==="&&"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?(${s}):__tjs__t)(${r})`:n.operator==="||"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?__tjs__t:(${s}))(${r})`:`(${r})??(${s})`}case"ConditionalExpression":{let n=e;return`__tjs.toBool(${fe(n.test,t)})?(${fe(n.consequent,t)}):(${fe(n.alternate,t)})`}case"UnaryExpression":{let n=e;return n.operator==="!"?`!__tjs.toBool(${fe(n.argument,t)})`:_r(e,t)}case"CallExpression":{let n=e;return n.callee&&n.callee.type==="Identifier"&&n.callee.name==="Boolean"&&n.arguments.length===1&&n.arguments[0].type!=="SpreadElement"?`__tjs.toBool(${fe(n.arguments[0],t)})`:_r(e,t)}}return _r(e,t)}function _r(e,t){let n=e.start,r=e.end;if(typeof n!="number"||typeof r!="number")return"";let s=ii(e);if(s.length===0)return t.slice(n,r);s.sort((a,c)=>a.start-c.start);let i="",o=n;for(let a of s)a.start<o||(a.start>o&&(i+=t.slice(o,a.start)),i+=fe(a,t),o=a.end);return o<r&&(i+=t.slice(o,r)),i}function Aa(e,t){for(let n of ii(e))t(n)}function ii(e){let t=[];for(let n in e){if(n==="type"||n==="start"||n==="end"||n==="loc")continue;let r=e[n];if(Array.isArray(r))for(let s of r)s&&typeof s=="object"&&typeof s.type=="string"&&t.push(s);else r&&typeof r=="object"&&typeof r.type=="string"&&t.push(r)}return t}function Ma(e){let t=[...e].sort((s,i)=>s.start-i.start||i.end-s.end),n=[],r=-1;for(let s of t)s.start>=r&&(n.push(s),r=s.end);return n}function jr(e){let t;try{t=si.parse(`function __wrap__(){${e}}`,{ecmaVersion:2022,sourceType:"module",locations:!1})}catch{return e}let n=`function __wrap__(){${e}}`,r=kr(t,n);if(r.length===0)return e;r.sort((a,c)=>c.start-a.start);let s=n;for(let a of r)s=s.slice(0,a.start)+a.newText+s.slice(a.end);return s.slice("function __wrap__(){".length,s.length-"}".length)}function Ca(e,t,n){if(!e||!t)return!1;let r=new RegExp(`function\\s+${t}\\s*\\([^)]*?\\b${n}\\s*([=:])`,"s"),s=e.match(r);return s?s[1]===":":!1}function Na(e,t,n,r,s){let i=[],o=Tt(t,e),a={},c=!1,l,u;if(e.params.length===1&&(e.params[0].type==="ObjectPattern"||e.params[0].type==="AssignmentPattern"&&e.params[0].left.type==="ObjectPattern")){c=!0;let m=e.params[0],d=m.type==="ObjectPattern"?m:m.left,y=Ne(d,n);if(y.type.kind==="object"&&y.type.destructuredParams){l={},u=new Set;for(let[b,w]of Object.entries(y.type.destructuredParams))a[b]={...w,description:o.params[b]},l[b]=w.type,w.required&&u.add(b)}}else for(let m of e.params)if(m.type==="Identifier"){let d=Ne(m,n);a[m.name]={...d,required:n.has(m.name),description:o.params[m.name]}}else if(m.type==="AssignmentPattern"&&m.left.type==="Identifier"){let d=Ne(m,n),y=Ca(s||"",e.id?.name||"",m.left.name);a[m.left.name]={...d,required:y,default:y?null:d.example??d.default,description:o.params[m.left.name]}}else if(m.type==="ObjectPattern"){let d=Ne(m,n);if(d.type.kind==="object"&&d.type.destructuredParams)for(let[y,b]of Object.entries(d.type.destructuredParams))a[y]={...b,description:o.params[y]}}else if(m.type==="RestElement"&&m.argument?.type==="Identifier"){let d=m.argument.name,y=t.match(new RegExp(`\\.\\.\\.${d}\\s*:\\s*([^)]+?)\\s*\\)`));if(y)try{let b=oi(y[1].trim(),0,{ecmaVersion:2022}),w=ie(b);a[d]={name:d,type:w,required:!1,description:o.params[d]}}catch{a[d]={name:d,type:{kind:"array"},required:!1,description:o.params[d]}}else a[d]={name:d,type:{kind:"array"},required:!1,description:o.params[d]}}let p;if(r)try{let m=r.includes("=")?ci(r):r,d=oi(m,0,{ecmaVersion:2022});p=ie(d)}catch{p={kind:"any"},i.push(`Could not parse return type: ${r}`)}return{types:{name:e.id?.name||"anonymous",params:a,returns:p,description:o.description,isDestructuredParam:c,destructuredShape:l,destructuredRequired:u},warnings:i}}function Ra(e,t,n){let r=[],s=n?`${n}:`:"",i=n?`${n}:${e}`:e;if(t.isDestructuredParam&&t.destructuredShape){let a=t.destructuredShape,c=t.destructuredRequired||new Set,l=Object.keys(a);if(l.length===0)return null;for(let u of l)r.push(`if (${u} instanceof Error) return ${u};`);for(let[u,p]of Object.entries(a)){let f=c.has(u),m=`${s}${e}.${u}`,d=jn(u,p);if(d){let y=p.kind;f?r.push(`if (${d}) return __tjs.typeError('${m}', '${y}', ${u});`):r.push(`if (${u} !== undefined && ${d}) return __tjs.typeError('${m}', '${y}', ${u});`)}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
342
+ `),suffix:"__tjs.popStack();"})}let o=Object.entries(t.params);if(o.length===0)return null;for(let[a]of o)r.push(`if (${a} instanceof Error) return ${a};`);for(let[a,c]of o){let l=`${s}${e}.${a}`;c.type.kind==="array"&&r.push(`if (Array.isArray(${a})) { for (const __i of ${a}) { if (__i instanceof Error && __i.path !== undefined) return __i } }`);let u=jn(a,c.type);if(u){let p=c.type.kind==="union"?c.type.members.map(f=>f.kind).join(" | "):c.type.kind;c.required?r.push(`if (${u}) return __tjs.typeError('${l}', '${p}', ${a});`):r.push(`if (${a} !== undefined && ${u}) return __tjs.typeError('${l}', '${p}', ${a});`)}if(c.type.kind==="function"){let p=Fa(a,c.type,l);p&&(r.push(p),r.push(`if (${a} instanceof Error) return ${a};`))}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
343
+ `),suffix:"__tjs.popStack();"})}function ci(e){let t="",n=0;for(let r=0;r<e.length;r++){let s=e[r];if(s==="{"||s==="["||s==="(")n++,t+=s;else if(s==="}"||s==="]"||s===")")n--,t+=s;else if(s==="'"||s==='"'||s==="`"){for(t+=s,r++;r<e.length&&e[r]!==s;)e[r]==="\\"&&(t+=e[r++]),t+=e[r++];r<e.length&&(t+=e[r])}else n===1&&s==="="&&e[r-1]!=="!"&&e[r+1]!=="="?t+=":":t+=s}return t}function Pa(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*(:[?!]?)\\s*`,"g").exec(e);if(!r)return null;let s=e.slice(r.index+r[0].length);return wn(s)}function Ia(e,t){let r=new RegExp(`function\\s+${t}\\s*\\([^)]*\\)\\s*:([?!]?)`,"g").exec(e);if(!r)return;let s=r[1];if(s==="?")return"safe";if(s==="!")return"unsafe"}function Da(e){let t=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return t?t[1].trim():void 0}function Oa(e,t){let n=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${t}\\s*\\(`,"m"),r=e.match(n);return r?parseInt(r[1],10):void 0}function Pt(e,t={}){let{filename:n="<source>",runTests:r=!0,debug:s=!1,resolvedImports:i={}}=t,o=[];e=er(e);let c=Da(e)||n,{code:l,tests:u,mocks:p,testRunner:f}=$t(e),{ast:m,originalSource:d,requiredParams:y,unsafeFunctions:b}=ke(l,{filename:n,colonShorthand:!0}),w=Ba(m),S=Ht(l);for(let D of u)D.body=gt(D.body),S.tjsModes.tjsEquals&&(D.body=ht(D.body)),S.tjsModes.tjsStandard&&(D.body=jr(D.body));for(let D of p)D.body=gt(D.body),S.tjsModes.tjsEquals&&(D.body=ht(D.body)),S.tjsModes.tjsStandard&&(D.body=jr(D.body));let T={},x=[],_=[];for(let D of w){let W=D.id?.name||"anonymous",q=Pa(l,W),be;if(q&&q.includes("="))try{let te=q.matchAll(/(\w+)\s*=\s*/g),ce=ci(q),_e=new Function(`return ${ce}`)(),le={};for(let Zn of te){let dt=Zn[1];dt in _e&&(le[dt]=_e[dt])}Object.keys(le).length>0&&(be=le)}catch{}let{types:$e,warnings:Yi}=Na(D,d,y,q,l);o.push(...Yi),T[W]=$e;for(let te of D.params)if(te.type==="AssignmentPattern"&&te.left.type==="Identifier"&&te.right.type==="Identifier"){let ce=te.left.name,_e=te.right.name,le=T[_e];if(le&&$e.params[ce]){let Zn=Object.entries(le.params).map(([no,ro])=>({name:no,type:ro.type})),dt=le.returns??{kind:"any"};$e.params[ce].type={kind:"function",params:Zn,returns:dt}}}for(let te of D.params)if(te.type==="AssignmentPattern"){let ce=te.left?.name||te.left?.value,_e=ce?$e.params[ce]:null;if(_e?.required&&_e.default===null)_.push({start:te.left.end,end:te.right.end});else{let le=te.right;le.type==="BinaryExpression"&&le.operator==="|"&&_.push({start:le.left.end,end:le.end})}}let zr=S.moduleSafety==="none"||b.has(W),Xi=S.safeFunctions.has(W),Qi=Ia(l,W),eo=Oa(e,W),et={file:c,line:eo??D.loc?.start.line??0,column:D.loc?.start.column??0},to={unsafe:zr,safe:Xi,returnSafety:Qi},Gr=S.polymorphicNames.has(W),Hn;if(Gr){let te=[];for(let _e of w){let le=_e.id?.name||"";le.startsWith(W+"$")&&te.push(le)}let ce={polymorphic:!0,variants:te};et&&(ce.source=`${et.file}:${et.line}`),Hn=`${W}.__tjs = ${JSON.stringify(ce,null,2)}`}else Hn=La(W,$e,to,{debug:s,source:et,returnDefaults:be});if(x.push({position:D.end,text:`
344
+ ${Hn}`}),!zr&&!Gr){let te=`${et.file}:${et.line}`,ce=Ra(W,$e,te);ce&&D.body&&D.body.start!==void 0&&(x.push({position:D.body.start+1,text:`
345
+ ${ce.preamble}
346
+ `}),ce.suffix&&x.push({position:D.body.end-1,text:`
347
+ ${ce.suffix}
348
+ `}))}}if(S.tjsModes.tjsStandard){let D=kr(m,S.source);for(let W of D)_.push({start:W.start,end:W.end}),x.push({position:W.start,text:W.newText})}_.sort((D,W)=>W.start-D.start);let $=S.source;for(let{start:D,end:W}of _)$=$.slice(0,D)+$.slice(W);for(let D of x){let W=0;for(let q of _)q.start<D.position&&(W+=q.end-q.start);D.position-=W}x.sort((D,W)=>W.position-D.position);for(let{position:D,text:W}of x)$=$.slice(0,D)+W+$.slice(D);let k=$.includes("__tjs.typeError("),A=$.includes("__tjs.pushStack("),j=$.includes("Is("),N=$.includes("IsNot("),M=$.includes("Eq("),P=$.includes("NotEq("),v=$.includes("TypeOf("),I=/\bType\(/.test($),B=/\bGeneric\(/.test($),F=/\bFunctionPredicate\(/.test($),G=/\bEnum\(/.test($),ae=/\bUnion\(/.test($),Qe=$.includes("__tjs.bang("),qt=$.includes("__tjs.toBool("),zn=$.includes("__tjs.checkFnShape("),Kr=S.tjsModes.tjsSafeEval;if(k||A||j||N||M||P||v||I||B||F||G||ae||Qe||qt||zn||Kr){let D=[];k&&D.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),A&&D.push("const __stack=[];function pushStack(n){__stack.push(n)}function popStack(){__stack.pop()}function getStack(){return[...__stack]}"),M&&D.push("function Eq(a,b){if(a instanceof String||a instanceof Number||a instanceof Boolean)a=a.valueOf();if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();if(a===b)return true;if(typeof a==='number'&&typeof b==='number'&&isNaN(a)&&isNaN(b))return true;if((a===null||a===undefined)&&(b===null||b===undefined))return true;return false}"),P&&D.push("function NotEq(a,b){return!Eq(a,b)}"),v&&D.push("function TypeOf(v){return v===null?'null':typeof v}"),j&&D.push("const tjsEquals=Symbol.for('tjs.equals');function Is(a,b){if(a!=null&&typeof a==='object'&&typeof a[tjsEquals]==='function')return a[tjsEquals](b);if(b!=null&&typeof b==='object'&&typeof b[tjsEquals]==='function')return b[tjsEquals](a);if(a!=null&&typeof a==='object'&&typeof a.Equals==='function')return a.Equals(b);if(b!=null&&typeof b==='object'&&typeof b.Equals==='function')return b.Equals(a);if(a instanceof String||a instanceof Number||a instanceof Boolean)a=a.valueOf();if(b instanceof String||b instanceof Number||b instanceof Boolean)b=b.valueOf();if(a===b)return true;if(typeof a==='number'&&typeof b==='number'&&isNaN(a)&&isNaN(b))return true;if((a==null)&&(b==null))return true;if(a==null||b==null)return false;if(typeof a!==typeof b)return false;if(typeof a!=='object')return false;if(a instanceof Set&&b instanceof Set){if(a.size!==b.size)return false;for(const v of a)if(!b.has(v))return false;return true}if(a instanceof Map&&b instanceof Map){if(a.size!==b.size)return false;for(const[k,v]of a)if(!b.has(k)||!Is(v,b.get(k)))return false;return true}if(a instanceof Date&&b instanceof Date)return a.getTime()===b.getTime();if(a instanceof RegExp&&b instanceof RegExp)return a.toString()===b.toString();if(Array.isArray(a)&&Array.isArray(b)){if(a.length!==b.length)return false;return a.every((v,i)=>Is(v,b[i]))}if(Array.isArray(a)!==Array.isArray(b))return false;const ka=Object.keys(a),kb=Object.keys(b);if(ka.length!==kb.length)return false;return ka.every(k=>Is(a[k],b[k]))}"),N&&D.push("function IsNot(a,b){return!Is(a,b)}"),I&&D.push("function Type(d,p,e){const t={description:d,__runtimeType:true};if(typeof p==='function'){t.check=p;t.default=e??null}else{const ex=e??p;t.default=ex;t.check=v=>{if(ex===null)return true;return typeof v===typeof ex}}return t}"),B&&D.push("function Generic(tp,pred,d){const f=(...args)=>{const t={description:d||'generic',__runtimeType:true,check:v=>pred(v,...args)};return t};f.__runtimeType=true;f.description=d;return f}"),F&&D.push("function FunctionPredicate(n,s,b){if(Array.isArray(s)&&b){const f=(...a)=>FunctionPredicate(n,b(...a));f.typeParamNames=s.map(p=>Array.isArray(p)?p[0]:p);f.description=n;f.__runtimeType=true;return f}const spec=typeof s==='function'?{}:s||{};return{description:n,params:spec.params||{},returns:spec.returns,returnContract:spec.returnContract||'assertReturns',check:v=>typeof v==='function',__runtimeType:true}}"),G&&D.push("function Enum(d,m){const vals=typeof m==='object'?Object.values(m):[];return{description:d,check:v=>vals.includes(v),values:vals,__runtimeType:true}}"),ae&&D.push("function Union(d,...v){const vals=v.flat();return{description:d,check:x=>vals.includes(x),values:vals,__runtimeType:true}}"),qt&&D.push("function toBool(v){if(v instanceof Boolean||v instanceof Number||v instanceof String)return Boolean(v.valueOf());return Boolean(v)}"),zn&&(k||D.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),D.push(`function checkFnShape(fn,expectedParams,expectedReturn,path){if(typeof fn!=='function')return fn;const meta=fn.__tjs;if(!meta||!meta.params)return fn;const entries=Object.entries(meta.params);for(let i=0;i<expectedParams.length;i++){const e=expectedParams[i];if(e==='any')continue;const a=entries[i];if(!a)continue;const ak=a[1]&&a[1].type&&a[1].type.kind;if(!ak||ak==='any')continue;if(ak!==e)return new MonadicError("Expected (...arg"+i+": "+e+", ...) for '"+path+"', but callback declares arg"+i+" as "+ak,path+"(arg"+i+")",e,ak)}if(expectedReturn!=='any'&&meta.returns){const ar=(meta.returns.type&&meta.returns.type.kind)||meta.returns.kind;if(ar&&ar!=='any'&&ar!==expectedReturn)return new MonadicError("Expected callback returning "+expectedReturn+" for '"+path+"', but callback returns "+ar,path+"(return)",expectedReturn,ar)}return fn}`)),Qe&&(k||D.push("class MonadicError extends Error{constructor(m,p,e,a,c,r){super(m);this.name='MonadicError';this.path=p;this.expected=e;this.actual=a;this.callStack=c;this.reason=r}}",`function typeError(p,e,v,r){const a=v===null?'null':typeof v;const m=r?'Expected '+e+" for '"+p+"': "+r:'Expected '+e+" for '"+p+"', got "+a;const err=new MonadicError(m,p,e,a,undefined,r);const c=globalThis.__tjs?.getConfig?.();if(c?.logTypeErrors)console.error('[TJS TypeError] '+err.message);if(c?.throwTypeErrors)throw err;return err}`,"function isMonadicError(v){return v instanceof Error&&v.name==='MonadicError'&&'path' in v}"),D.push("function bang(o,p){if(o===null||o===undefined)return typeError('bang.'+p,'non-null',o);if(isMonadicError(o))return o;return o[p]}"));let W=D.length>0?D.join(`;
347
349
  `)+`;
348
- `:"",J=[];j&&J.push("typeError","isMonadicError"),A&&J.push("pushStack","popStack","getStack"),M&&J.push("Eq"),P&&J.push("NotEq"),v&&J.push("TypeOf"),k&&J.push("Is","tjsEquals"),R&&J.push("IsNot"),I&&J.push("Type"),L&&J.push("Generic"),F&&J.push("FunctionPredicate"),H&&J.push("Enum"),se&&J.push("Union"),Ge&&(J.push("bang"),j||J.push("typeError","isMonadicError"));let ge=J.length>0?`{${J.join(",")}}`:"undefined";_=K+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${ge};
349
- `+_}Un&&(_=`import { Eval, SafeFunction } from 'tjs-lang';
350
- `+_);let ut;if(r){let O=Ls(e);ut=Bs(u,p,O,_,i,E.extensions);let K=ut.filter(J=>!J.passed);if(K.length>0&&r===!0){let J=K.map(ge=>{if(ge.isSignatureTest)return` Function signature example is inconsistent:
351
- ${ge.error}`;let Pe=ge.line?` (line ${ge.line})`:"";return` Test '${ge.description}'${Pe} failed:
352
- ${ge.error}`});throw new Error(`Transpile-time test failures:
353
- ${J.join(`
354
- `)}`)}}if(r==="only")return{code:"",types:T,metadata:T,testResults:ut,testCount:ut?.length};let qn;if(E.wasmBlocks.length>0){qn=[];let O=Vs(E.wasmBlocks);O.code&&(_=O.code+`
355
- `+_),qn=O.results}return{code:_,types:T,metadata:T,warnings:o.length>0?o:void 0,testRunner:u.length>0?f:void 0,testCount:u.length>0?u.length:void 0,testResults:ut,wasmCompiled:qn}}function ga(e){let t=[];for(let n of e.body)n.type==="FunctionDeclaration"?t.push(n):(n.type==="ExportNamedDeclaration"&&n.declaration?.type==="FunctionDeclaration"||n.type==="ExportDefaultDeclaration"&&n.declaration?.type==="FunctionDeclaration")&&t.push(n.declaration);return t}function At(e){let t={kind:e.kind};return e.nullable&&(t.nullable=!0),e.items&&(t.items=At(e.items)),e.shape&&(t.shape=Object.fromEntries(Object.entries(e.shape).map(([n,r])=>[n,At(r)]))),e.members&&(t.members=e.members.map(At)),t}function ha(e,t,n={},r={}){let s={};for(let[o,a]of Object.entries(t.params))s[o]={type:At(a.type),required:a.required},a.default!==void 0&&(s[o].default=a.default),a.description&&(s[o].description=a.description);let i={params:s};if(t.returns&&(i.returns={type:At(t.returns)},r.returnDefaults&&(i.returns.defaults=r.returnDefaults),n.returnSafety==="safe"?i.safeReturn=!0:n.returnSafety==="unsafe"&&(i.unsafeReturn=!0)),t.description&&(i.description=t.description),n.unsafe&&(i.unsafe=!0),n.safe&&(i.safe=!0),r.source){let{file:o,line:a}=r.source;i.source=`${o}:${a}`}return`${e}.__tjs = ${JSON.stringify(i,null,2)}`}function Tr(e,t){let n;switch(t.kind){case"string":n=`typeof ${e} !== 'string'`;break;case"number":n=`typeof ${e} !== 'number'`;break;case"integer":n=`(typeof ${e} !== 'number' || !Number.isInteger(${e}))`;break;case"non-negative-integer":n=`(typeof ${e} !== 'number' || !Number.isInteger(${e}) || ${e} < 0)`;break;case"boolean":n=`typeof ${e} !== 'boolean'`;break;case"null":return`${e} !== null`;case"undefined":return`${e} !== undefined`;case"array":n=`!Array.isArray(${e})`;break;case"object":n=`(typeof ${e} !== 'object' || ${e} === null || Array.isArray(${e}))`;break;case"union":{let r=t.members.map(s=>Tr(e,s)).filter(s=>s!==null);if(r.length===0)return null;n=`(${r.join(" && ")})`;break}case"any":return null;default:return null}return n&&t.nullable&&(n=`(${e} !== null && ${n})`),n}function rt(e){let t;switch(e.kind){case"string":t="string";break;case"number":case"integer":case"non-negative-integer":t="number";break;case"boolean":t="boolean";break;case"null":return"null";case"undefined":return"undefined";case"any":t="any";break;case"array":if(e.items){let n=rt(e.items);t=n.includes("|")?`(${n})[]`:`${n}[]`}else t="any[]";break;case"object":e.shape&&Object.keys(e.shape).length>0?t=`{ ${Object.entries(e.shape).map(([r,s])=>`${r}: ${rt(s)}`).join("; ")} }`:t="Record<string, any>";break;case"union":if(e.members&&e.members.length>0)return e.members.map(rt).join(" | ");t="any";break;default:t="any"}return e.nullable?`${t} | null`:t}function ba(e,t,n,r){let s=Object.entries(t.params).map(([a,c])=>{let l=!c.required,u=rt(c.type);return l?`${a}?: ${u}`:`${a}: ${u}`}).join(", "),i=t.returns?rt(t.returns):"any";return`${n?r?"export default function":"export declare function":"declare function"} ${e}(${s}): ${i};`}function xa(e){let t=new Map,n,r=/^[ \t]*export\s+(default\s+)?function\s+(\w+)/gm;for(;(n=r.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let s=/^[ \t]*export\s+(default\s+)?class\s+(\w+)/gm;for(;(n=s.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let i=/^[ \t]*export\s+(default\s+)?(?:const|let|var)\s+(\w+)/gm;for(;(n=i.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let o=/^[ \t]*export\s+Type\s+(\w+)/gm;for(;(n=o.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let a=/^[ \t]*export\s+Generic\s+(\w+)/gm;for(;(n=a.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let c=/^[ \t]*export\s+FunctionPredicate\s+(\w+)/gm;for(;(n=c.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let l=/^[ \t]*export\s*\{([^}]+)\}/gm;for(;(n=l.exec(e))!==null;){let u=n[1].split(",").map(p=>p.trim().split(/\s+as\s+/));for(let p of u){let f=p.length>1?p[1]:p[0];f&&/^\w+$/.test(f)&&t.set(f,{exported:!0,isDefault:!1})}}return t}function Ta(e){let t=new Map,n=/^[ \t]*(?:export\s+)?FunctionPredicate\s+(\w+)\s*(?:<([^>]+)>)?\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r[2],o=r.index+r[0].length-1,a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(o+1,c-1),u;i&&(u=i.split(",").map(y=>y.trim()));let p=[],f=l.match(/params\s*:\s*\{([^}]*)\}/);if(f){let y=f[1],b=Hs(y);for(let w of b){let E=w.match(/^(\w+)\s*:\s*(.+)$/);E&&p.push({name:E[1],example:E[2].trim()})}}let m,d=l.match(/returns\s*:\s*(.+?)(?:\n|$)/);d&&(m=d[1].trim()),t.set(s,{params:p,returns:m,typeParams:u})}return t}function Sa(e){let t=new Map,n=/^[ \t]*(?:export\s+(?:default\s+)?)?class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r.index+r[0].length-1,o=1,a=i+1;for(;a<e.length&&o>0;)e[a]==="{"?o++:e[a]==="}"&&o--,a++;let c=e.slice(i+1,a-1),l=c.indexOf("constructor"),u="";if(l!==-1){let f=c.indexOf("(",l);if(f!==-1){let m=1,d=f+1;for(;d<c.length&&m>0;)c[d]==="("?m++:c[d]===")"&&m--,d++;u=c.slice(f+1,d-1).trim()}}let p=[];{let f=0,m=0;for(;f<c.length;){let d=c[f];if(d==="{"){m++,f++;continue}if(d==="}"){m--,f++;continue}if(m===0){let y=c.slice(f).match(/^(\w+)\s*\(/);if(y){let b=y[1];if(b==="constructor"||b==="get"||b==="set"){f+=b.length;continue}else{let w=f+y[0].length-1,E=1,T=w+1;for(;T<c.length&&E>0;)c[T]==="("?E++:c[T]===")"&&E--,T++;let x=c.slice(w+1,T-1).trim(),$=c.slice(T).match(/^\s*->\s*(.+?)\s*\{/),_=$?$[1].trim():null;p.push({name:b,params:x,returnType:_}),f=T;continue}}}f++}}t.set(s,{name:s,constructorParams:u,methods:p})}return t}function Hs(e){let t=[],n=0,r="";for(let s of e)s==="{"||s==="["||s==="("?n++:(s==="}"||s==="]"||s===")")&&n--,s===","&&n===0?(t.push(r.trim()),r=""):r+=s;return r.trim()&&t.push(r.trim()),t}function Gs(e){return e.trim()?Hs(e).map(t=>{let n=t.match(/^(\w+)\s*:\s*(.+)$/);if(n){let s=n[1],i=Me(n[2].trim());return`${s}: ${i}`}let r=t.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],i=Me(r[2].trim());return`${s}?: ${i}`}return t.startsWith("{")?"options: any":`${t}: any`}).join(", "):""}function wa(e){let t=new Map,n,r=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*=\s*(.+)$/gm;for(;(n=r.exec(e))!==null;)t.set(n[1],n[2].trim());let s=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s+([^{=].*)$/gm;for(;(n=s.exec(e))!==null;)t.has(n[1])||t.set(n[1],n[2].trim());let i=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*example\s*:\s*(.+?)(?:\n|\s*[,}])/gm;for(;(n=i.exec(e))!==null;)t.set(n[1],n[2].trim());let o=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*\/\/\s*TS:\s*(.+?)(?:\n|\s*\})/gm;for(;(n=o.exec(e))!==null;)t.has(n[1])||t.set(n[1],`__ts__:${n[2].trim()}`);let a=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{\s*\}/gm;for(;(n=a.exec(e))!==null;)t.has(n[1])||t.set(n[1],"");return t}function Ea(e){let t=new Map,n=/^[ \t]*(?:export\s+)?Generic\s+(\w+)\s*<([^>]+)>\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r[2].split(",").map(f=>f.trim().split(/\s*=/)[0].trim()),o=r.index+r[0].length-1,a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(o+1,c-1),u,p=l.match(/\bdeclaration\s*\{/);if(p&&p.index!==void 0){let f=p.index+p[0].length-1,m=1,d=f+1;for(;d<l.length&&m>0;)l[d]==="{"?m++:l[d]==="}"&&m--,d++;u=l.slice(f+1,d-1).trim()}t.set(s,{typeParams:i,declaration:u})}return t}function _a(e){let t=[],n=/^[ \t]*export\s+(?:default\s+)?(const|let|var)\s+(\w+)\s*(?::\s*\w+\s*)?=\s*(.+)/gm,r;for(;(r=n.exec(e))!==null;){let s=r[3].trim();s.endsWith(";")&&(s=s.slice(0,-1).trim()),t.push({name:r[2],value:s,kind:r[1]})}return t}function $a(e){return/^['"]/.test(e)||e.startsWith("`")?"string":e==="true"||e==="false"?"boolean":/^[+-]?\d+(\.\d+)?$/.test(e)?"number":e.startsWith("Symbol(")||e.startsWith("Symbol.")?"symbol":e.startsWith("[")?"any[]":e.startsWith("new WeakMap")?"WeakMap<any, any>":e.startsWith("new Map")?"Map<any, any>":e.startsWith("new Set")?"Set<any>":e.startsWith("new ")?"any":e.startsWith("{")?"Record<string, any>":e==="null"?"null":e==="undefined"?"undefined":"any"}function ka(e,t,n={}){let r=[],s=xa(t),i=wa(t),o=Sa(t),a=Ea(t),c=s.size>0,l=new Set;for(let[f,m]of Object.entries(e.types)){if(f.includes("$"))continue;let d=s.get(f),y=c?!!d?.exported:!0,b=d?.isDefault??!1;y&&(m.description&&r.push(`/** ${m.description} */`),r.push(ba(f,m,!0,b)),l.add(f))}for(let[f,m]of o){if(l.has(f))continue;let d=s.get(f);if(!(c?!!d?.exported:!0))continue;let b=m.constructorParams?Gs(m.constructorParams):"";if(r.push(`export declare function ${f}(${b}): any;`),b||m.methods.length>0){r.push(`export declare class ${f} {`),m.constructorParams&&r.push(` constructor(${b});`);for(let w of m.methods){let E=w.params?Gs(w.params):"";r.push(` ${w.name}(${E}): any;`)}r.push("}")}l.add(f)}for(let[f,m]of i){if(l.has(f))continue;let d=s.get(f);if(!c||d?.exported){if(m.startsWith("__ts__:")){let b=m.slice(7);r.push(`export type ${f} = ${b};`)}else if(m==="")r.push(`export type ${f} = any;`);else{let b=Me(m);r.push(`export declare const ${f}: { check(value: any): boolean; default: ${b}; (value: any): boolean; };`)}l.add(f)}}for(let[f,m]of a){if(l.has(f))continue;let d=s.get(f);if(!(c?!!d?.exported:!0))continue;let b=m.typeParams.length>0?`<${m.typeParams.join(", ")}>`:"";if(m.declaration){let w=m.declaration.trim(),E=w.match(/^\/\/\s*TS:\s*(.+)$/s);if(E)r.push(`export type ${f}${b} = ${E[1].trim()};`);else{let T=w.split(`
350
+ `:"",q=[];k&&q.push("typeError","isMonadicError"),A&&q.push("pushStack","popStack","getStack"),M&&q.push("Eq"),P&&q.push("NotEq"),v&&q.push("TypeOf"),j&&q.push("Is","tjsEquals"),N&&q.push("IsNot"),I&&q.push("Type"),B&&q.push("Generic"),F&&q.push("FunctionPredicate"),G&&q.push("Enum"),ae&&q.push("Union"),qt&&q.push("toBool"),zn&&(q.push("checkFnShape"),k||q.push("typeError","isMonadicError")),Qe&&(q.push("bang"),k||q.push("typeError","isMonadicError"));let be=q.length>0?`{${q.join(",")}}`:"undefined";$=W+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${be};
351
+ `+$}Kr&&($=`import { Eval, SafeFunction } from 'tjs-lang';
352
+ `+$);let mt;if(r){let D=Zs(e);mt=Ys(u,p,D,$,i,S.extensions);let W=mt.filter(q=>!q.passed);if(W.length>0&&r===!0){let q=W.map(be=>{if(be.isSignatureTest)return` Function signature example is inconsistent:
353
+ ${be.error}`;let $e=be.line?` (line ${be.line})`:"";return` Test '${be.description}'${$e} failed:
354
+ ${be.error}`});throw new Error(`Transpile-time test failures:
355
+ ${q.join(`
356
+ `)}`)}}if(r==="only")return{code:"",types:T,metadata:T,testResults:mt,testCount:mt?.length};let Gn;if(S.wasmBlocks.length>0){Gn=[];let D=ri(S.wasmBlocks);D.code&&($=D.code+`
357
+ `+$),Gn=D.results}return{code:$,types:T,metadata:T,warnings:o.length>0?o:void 0,testRunner:u.length>0?f:void 0,testCount:u.length>0?u.length:void 0,testResults:mt,wasmCompiled:Gn}}function Ba(e){let t=[];for(let n of e.body)n.type==="FunctionDeclaration"?t.push(n):(n.type==="ExportNamedDeclaration"&&n.declaration?.type==="FunctionDeclaration"||n.type==="ExportDefaultDeclaration"&&n.declaration?.type==="FunctionDeclaration")&&t.push(n.declaration);return t}function Rt(e){let t={kind:e.kind};return e.nullable&&(t.nullable=!0),e.items&&(t.items=Rt(e.items)),e.shape&&(t.shape=Object.fromEntries(Object.entries(e.shape).map(([n,r])=>[n,Rt(r)]))),e.members&&(t.members=e.members.map(Rt)),t}function La(e,t,n={},r={}){let s={};for(let[o,a]of Object.entries(t.params))s[o]={type:Rt(a.type),required:a.required},a.default!==void 0&&(s[o].default=a.default),a.description&&(s[o].description=a.description);let i={params:s};if(t.returns&&(i.returns={type:Rt(t.returns)},r.returnDefaults&&(i.returns.defaults=r.returnDefaults),n.returnSafety==="safe"?i.safeReturn=!0:n.returnSafety==="unsafe"&&(i.unsafeReturn=!0)),t.description&&(i.description=t.description),n.unsafe&&(i.unsafe=!0),n.safe&&(i.safe=!0),r.source){let{file:o,line:a}=r.source;i.source=`${o}:${a}`}return`${e}.__tjs = ${JSON.stringify(i,null,2)}`}function jn(e,t){let n;switch(t.kind){case"string":n=`typeof ${e} !== 'string'`;break;case"number":n=`typeof ${e} !== 'number'`;break;case"integer":n=`(typeof ${e} !== 'number' || !Number.isInteger(${e}))`;break;case"non-negative-integer":n=`(typeof ${e} !== 'number' || !Number.isInteger(${e}) || ${e} < 0)`;break;case"boolean":n=`typeof ${e} !== 'boolean'`;break;case"null":return`${e} !== null`;case"undefined":return`${e} !== undefined`;case"array":{let r=t.items&&t.items.kind!=="any"?jn("__a",t.items):null;r?n=`(!Array.isArray(${e}) || ${e}.some(__a => ${r}))`:n=`!Array.isArray(${e})`;break}case"object":n=`(typeof ${e} !== 'object' || ${e} === null || Array.isArray(${e}))`;break;case"function":n=`typeof ${e} !== 'function'`;break;case"union":{let r=t.members.map(s=>jn(e,s)).filter(s=>s!==null);if(r.length===0)return null;n=`(${r.join(" && ")})`;break}case"any":return null;default:return null}return n&&t.nullable&&(n=`(${e} !== null && ${n})`),n}var ai=new Set(["string","number","integer","non-negative-integer","boolean","function","any","undefined","null","object"]);function Fa(e,t,n){let r=t.params??[],s=t.returns??{kind:"any"},i=r.map(l=>l.type?.kind),o=i.every(l=>l&&ai.has(l))&&ai.has(s.kind),a=i.some(l=>l!=="any")||s.kind!=="any";if(!o||!a)return null;let c=JSON.stringify(i);return`if (typeof ${e} === 'function') ${e} = __tjs.checkFnShape(${e}, ${c}, '${s.kind}', '${n}');`}function Ee(e){let t;switch(e.kind){case"string":t="string";break;case"number":case"integer":case"non-negative-integer":t="number";break;case"boolean":t="boolean";break;case"null":return"null";case"undefined":return"undefined";case"any":t="any";break;case"array":if(e.items){let n=Ee(e.items);t=n.includes("|")?`(${n})[]`:`${n}[]`}else t="any[]";break;case"object":e.shape&&Object.keys(e.shape).length>0?t=`{ ${Object.entries(e.shape).map(([r,s])=>`${r}: ${Ee(s)}`).join("; ")} }`:t="Record<string, any>";break;case"union":if(e.members&&e.members.length>0)return e.members.map(Ee).join(" | ");t="any";break;case"function":{let n=e.params??[],r=e.returns?Ee(e.returns):"any";t=`(${n.map(i=>`${i.name}: ${Ee(i.type)}`).join(", ")}) => ${r}`;break}default:t="any"}return e.nullable?`${t} | null`:t}function Ua(e,t,n,r){let s=Object.entries(t.params).map(([a,c])=>{let l=!c.required,u=Ee(c.type);return l?`${a}?: ${u}`:`${a}: ${u}`}).join(", "),i=t.returns?Ee(t.returns):"any";return`${n?r?"export default function":"export declare function":"declare function"} ${e}(${s}): ${i};`}function qa(e){let t=new Map,n,r=/^[ \t]*export\s+(default\s+)?function\s+(\w+)/gm;for(;(n=r.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let s=/^[ \t]*export\s+(default\s+)?class\s+(\w+)/gm;for(;(n=s.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let i=/^[ \t]*export\s+(default\s+)?(?:const|let|var)\s+(\w+)/gm;for(;(n=i.exec(e))!==null;)t.set(n[2],{exported:!0,isDefault:!!n[1]});let o=/^[ \t]*export\s+Type\s+(\w+)/gm;for(;(n=o.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let a=/^[ \t]*export\s+Generic\s+(\w+)/gm;for(;(n=a.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let c=/^[ \t]*export\s+FunctionPredicate\s+(\w+)/gm;for(;(n=c.exec(e))!==null;)t.set(n[1],{exported:!0,isDefault:!1});let l=/^[ \t]*export\s*\{([^}]+)\}/gm;for(;(n=l.exec(e))!==null;){let u=n[1].split(",").map(p=>p.trim().split(/\s+as\s+/));for(let p of u){let f=p.length>1?p[1]:p[0];f&&/^\w+$/.test(f)&&t.set(f,{exported:!0,isDefault:!1})}}return t}function Ja(e){let t=new Map,n=/^[ \t]*(?:export\s+)?FunctionPredicate\s+(\w+)\s*(?:<([^>]+)>)?\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r[2],o=r.index+r[0].length-1,a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(o+1,c-1),u;i&&(u=i.split(",").map(y=>y.trim()));let p=[],f=l.match(/params\s*:\s*\{([^}]*)\}/);if(f){let y=f[1],b=ui(y);for(let w of b){let S=w.match(/^(\w+)\s*:\s*(.+)$/);S&&p.push({name:S[1],example:S[2].trim()})}}let m,d=l.match(/returns\s*:\s*(.+?)(?:\n|$)/);d&&(m=d[1].trim()),t.set(s,{params:p,returns:m,typeParams:u})}return t}function Wa(e){let t=new Map,n=/^[ \t]*(?:export\s+(?:default\s+)?)?class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r.index+r[0].length-1,o=1,a=i+1;for(;a<e.length&&o>0;)e[a]==="{"?o++:e[a]==="}"&&o--,a++;let c=e.slice(i+1,a-1),l=c.indexOf("constructor"),u="";if(l!==-1){let f=c.indexOf("(",l);if(f!==-1){let m=1,d=f+1;for(;d<c.length&&m>0;)c[d]==="("?m++:c[d]===")"&&m--,d++;u=c.slice(f+1,d-1).trim()}}let p=[];{let f=0,m=0;for(;f<c.length;){let d=c[f];if(d==="{"){m++,f++;continue}if(d==="}"){m--,f++;continue}if(m===0){let y=c.slice(f).match(/^(\w+)\s*\(/);if(y){let b=y[1];if(b==="constructor"||b==="get"||b==="set"){f+=b.length;continue}else{let w=f+y[0].length-1,S=1,T=w+1;for(;T<c.length&&S>0;)c[T]==="("?S++:c[T]===")"&&S--,T++;let x=c.slice(w+1,T-1).trim(),_=c.slice(T).match(/^\s*->\s*(.+?)\s*\{/),$=_?_[1].trim():null;p.push({name:b,params:x,returnType:$}),f=T;continue}}}f++}}t.set(s,{name:s,constructorParams:u,methods:p})}return t}function ui(e){let t=[],n=0,r="";for(let s of e)s==="{"||s==="["||s==="("?n++:(s==="}"||s==="]"||s===")")&&n--,s===","&&n===0?(t.push(r.trim()),r=""):r+=s;return r.trim()&&t.push(r.trim()),t}function li(e){return e.trim()?ui(e).map(t=>{let n=t.match(/^(\w+)\s*:\s*(.+)$/);if(n){let s=n[1],i=De(n[2].trim());return`${s}: ${i}`}let r=t.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],i=De(r[2].trim());return`${s}?: ${i}`}return t.startsWith("{")?"options: any":`${t}: any`}).join(", "):""}function Va(e){let t=new Map,n,r=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*=\s*(.+)$/gm;for(;(n=r.exec(e))!==null;)t.set(n[1],n[2].trim());let s=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s+([^{=].*)$/gm;for(;(n=s.exec(e))!==null;)t.has(n[1])||t.set(n[1],n[2].trim());let i=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*example\s*:\s*(.+?)(?:\n|\s*[,}])/gm;for(;(n=i.exec(e))!==null;)t.set(n[1],n[2].trim());let o=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*\/\/\s*TS:\s*(.+?)(?:\n|\s*\})/gm;for(;(n=o.exec(e))!==null;)t.has(n[1])||t.set(n[1],`__ts__:${n[2].trim()}`);let a=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{\s*\}/gm;for(;(n=a.exec(e))!==null;)t.has(n[1])||t.set(n[1],"");return t}function Ka(e){let t=new Map,n=/^[ \t]*(?:export\s+)?Generic\s+(\w+)\s*<([^>]+)>\s*\{/gm,r;for(;(r=n.exec(e))!==null;){let s=r[1],i=r[2].split(",").map(f=>f.trim().split(/\s*=/)[0].trim()),o=r.index+r[0].length-1,a=1,c=o+1;for(;c<e.length&&a>0;)e[c]==="{"?a++:e[c]==="}"&&a--,c++;let l=e.slice(o+1,c-1),u,p=l.match(/\bdeclaration\s*\{/);if(p&&p.index!==void 0){let f=p.index+p[0].length-1,m=1,d=f+1;for(;d<l.length&&m>0;)l[d]==="{"?m++:l[d]==="}"&&m--,d++;u=l.slice(f+1,d-1).trim()}t.set(s,{typeParams:i,declaration:u})}return t}function za(e){let t=[],n=/^[ \t]*export\s+(?:default\s+)?(const|let|var)\s+(\w+)\s*(?::\s*\w+\s*)?=\s*(.+)/gm,r;for(;(r=n.exec(e))!==null;){let s=r[3].trim();s.endsWith(";")&&(s=s.slice(0,-1).trim()),t.push({name:r[2],value:s,kind:r[1]})}return t}function Ga(e){return/^['"]/.test(e)||e.startsWith("`")?"string":e==="true"||e==="false"?"boolean":/^[+-]?\d+(\.\d+)?$/.test(e)?"number":e.startsWith("Symbol(")||e.startsWith("Symbol.")?"symbol":e.startsWith("[")?"any[]":e.startsWith("new WeakMap")?"WeakMap<any, any>":e.startsWith("new Map")?"Map<any, any>":e.startsWith("new Set")?"Set<any>":e.startsWith("new ")?"any":e.startsWith("{")?"Record<string, any>":e==="null"?"null":e==="undefined"?"undefined":"any"}function Ha(e,t,n={}){let r=[],s=qa(t),i=Va(t),o=Wa(t),a=Ka(t),c=s.size>0,l=new Set;for(let[f,m]of Object.entries(e.types)){if(f.includes("$"))continue;let d=s.get(f),y=c?!!d?.exported:!0,b=d?.isDefault??!1;y&&(m.description&&r.push(`/** ${m.description} */`),r.push(Ua(f,m,!0,b)),l.add(f))}for(let[f,m]of o){if(l.has(f))continue;let d=s.get(f);if(!(c?!!d?.exported:!0))continue;let b=m.constructorParams?li(m.constructorParams):"";if(r.push(`export declare function ${f}(${b}): any;`),b||m.methods.length>0){r.push(`export declare class ${f} {`),m.constructorParams&&r.push(` constructor(${b});`);for(let w of m.methods){let S=w.params?li(w.params):"";r.push(` ${w.name}(${S}): any;`)}r.push("}")}l.add(f)}for(let[f,m]of i){if(l.has(f))continue;let d=s.get(f);if(!c||d?.exported){if(m.startsWith("__ts__:")){let b=m.slice(7);r.push(`export type ${f} = ${b};`)}else if(m==="")r.push(`export type ${f} = any;`);else{let b=De(m);r.push(`export declare const ${f}: { check(value: any): boolean; default: ${b}; (value: any): boolean; };`)}l.add(f)}}for(let[f,m]of a){if(l.has(f))continue;let d=s.get(f);if(!(c?!!d?.exported:!0))continue;let b=m.typeParams.length>0?`<${m.typeParams.join(", ")}>`:"";if(m.declaration){let w=m.declaration.trim(),S=w.match(/^\/\/\s*TS:\s*(.+)$/s);if(S)r.push(`export type ${f}${b} = ${S[1].trim()};`);else{let T=w.split(`
356
358
  `).map(x=>x.trim()).filter(x=>x.length>0).map(x=>` ${x}`).join(`
357
359
  `);r.push(`export interface ${f}${b} {
358
360
  ${T}
359
- }`)}}else r.push(`export declare function ${f}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);l.add(f)}let u=Ta(t);for(let[f,m]of u){if(l.has(f))continue;let d=s.get(f);if(!(c?!!d?.exported:!0))continue;let b=new Set(m.typeParams?.map(x=>x.split("=")[0].trim())??[]),w=m.typeParams?`<${m.typeParams.join(", ")}>`:"",E=m.params.map((x,$)=>{let _=$===m.params.length-1;if(x.example.startsWith("[")&&x.example.endsWith("]")&&_){let A=x.example.slice(1,-1).trim(),k=!A||A==="null"?"any":b.has(A)?A:Me(A);return`...${x.name}: ${k}[]`}if(x.example.startsWith("[")&&x.example.endsWith("]")){let A=x.example.slice(1,-1).trim(),k=!A||A==="null"?"any":b.has(A)?A:Me(A);return`${x.name}: ${k}[]`}let j=x.example==="null"?"any":b.has(x.example)?x.example:Me(x.example);return`${x.name}: ${j}`}).join(", "),T=m.returns!==void 0?m.returns==="null"?"any":b.has(m.returns)?m.returns:Me(m.returns):"void";r.push(`export type ${f}${w} = (${E}) => ${T};`),l.add(f)}let p=_a(t);for(let f of p){if(l.has(f.name))continue;let m=s.get(f.name);if(!(c?!!m?.exported:!0))continue;let y=$a(f.value);r.push(`export declare const ${f.name}: ${y};`),l.add(f.name)}if(n.moduleName){let f=r.map(m=>` ${m}`).join(`
361
+ }`)}}else r.push(`export declare function ${f}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);l.add(f)}let u=Ja(t);for(let[f,m]of u){if(l.has(f))continue;let d=s.get(f);if(!(c?!!d?.exported:!0))continue;let b=new Set(m.typeParams?.map(x=>x.split("=")[0].trim())??[]),w=m.typeParams?`<${m.typeParams.join(", ")}>`:"",S=m.params.map((x,_)=>{let $=_===m.params.length-1;if(x.example.startsWith("[")&&x.example.endsWith("]")&&$){let A=x.example.slice(1,-1).trim(),j=!A||A==="null"?"any":b.has(A)?A:De(A);return`...${x.name}: ${j}[]`}if(x.example.startsWith("[")&&x.example.endsWith("]")){let A=x.example.slice(1,-1).trim(),j=!A||A==="null"?"any":b.has(A)?A:De(A);return`${x.name}: ${j}[]`}let k=x.example==="null"?"any":b.has(x.example)?x.example:De(x.example);return`${x.name}: ${k}`}).join(", "),T=m.returns!==void 0?m.returns==="null"?"any":b.has(m.returns)?m.returns:De(m.returns):"void";r.push(`export type ${f}${w} = (${S}) => ${T};`),l.add(f)}let p=za(t);for(let f of p){if(l.has(f.name))continue;let m=s.get(f.name);if(!(c?!!m?.exported:!0))continue;let y=Ga(f.value);r.push(`export declare const ${f.name}: ${y};`),l.add(f.name)}if(n.moduleName){let f=r.map(m=>` ${m}`).join(`
360
362
  `);return`declare module '${n.moduleName}' {
361
363
  ${f}
362
364
  }
363
365
  `}return r.join(`
364
366
  `)+`
365
- `}function Me(e){let t=e.trim();if(ja(t)){let n=va(t).map(r=>Me(r.trim()));return[...new Set(n)].join(" | ")}return/^['"]/.test(t)?"string":t==="true"||t==="false"?"boolean":t==="null"?"null":t==="undefined"?"undefined":/^[+-]?\d+\.\d+$/.test(t)||/^[+-]?\d+$/.test(t)?"number":t.startsWith("[")?"any[]":t.startsWith("{")?"Record<string, any>":"any"}function ja(e){let t=0,n=null;for(let r of e){if(n){r===n&&(n=null);continue}if(r==="'"||r==='"'||r==="`"){n=r;continue}if(r==="{"||r==="["||r==="(")t++;else if(r==="}"||r==="]"||r===")")t--;else if(r==="|"&&t===0)return!0}return!1}function va(e){let t=[],n=0,r=null,s="";for(let i of e){if(r){s+=i,i===r&&(r=null);continue}if(i==="'"||i==='"'||i==="`"){r=i,s+=i;continue}i==="{"||i==="["||i==="("?n++:(i==="}"||i==="]"||i===")")&&n--,i==="|"&&n===0?(t.push(s),s=""):s+=i}return s&&t.push(s),t}import S from"typescript";var Aa=20,Ys=new Set(["Event","CustomEvent","MouseEvent","KeyboardEvent","PointerEvent","TouchEvent","FocusEvent","InputEvent","CompositionEvent","WheelEvent","DragEvent","AnimationEvent","TransitionEvent","ClipboardEvent","UIEvent","ProgressEvent","ErrorEvent","MessageEvent","PopStateEvent","HashChangeEvent","PageTransitionEvent","StorageEvent","BeforeUnloadEvent","SubmitEvent","EventTarget","EventListener","Node","Element","HTMLElement","SVGElement","Document","DocumentFragment","ShadowRoot","Text","Comment","Attr","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","HTMLButtonElement","HTMLFormElement","HTMLAnchorElement","HTMLImageElement","HTMLVideoElement","HTMLAudioElement","HTMLCanvasElement","HTMLDivElement","HTMLSpanElement","HTMLParagraphElement","HTMLTableElement","HTMLTemplateElement","HTMLSlotElement","HTMLDialogElement","HTMLDetailsElement","HTMLLabelElement","HTMLOptionElement","HTMLIFrameElement","HTMLScriptElement","HTMLStyleElement","HTMLLinkElement","HTMLMetaElement","HTMLHeadElement","HTMLBodyElement","HTMLMediaElement","SVGSVGElement","SVGPathElement","SVGGElement","SVGCircleElement","SVGRectElement","SVGTextElement","SVGLineElement","SVGPolygonElement","NodeList","HTMLCollection","NamedNodeMap","DOMTokenList","DOMStringMap","CSSStyleDeclaration","DOMRect","DOMRectReadOnly","DOMPoint","DOMMatrix","Range","Selection","StaticRange","MutationObserver","MutationRecord","IntersectionObserver","IntersectionObserverEntry","ResizeObserver","ResizeObserverEntry","PerformanceObserver","PerformanceEntry","Window","Location","History","Navigator","Screen","Storage","CanvasRenderingContext2D","WebGLRenderingContext","WebGL2RenderingContext","OffscreenCanvas","ImageData","ImageBitmap","MediaStream","MediaRecorder","AudioContext","AudioNode","AudioBuffer","Worker","SharedWorker","ServiceWorker","ServiceWorkerRegistration","BroadcastChannel","MessageChannel","MessagePort","WebSocket","XMLHttpRequest","FileReader","FileList","DataTransfer","Crypto","SubtleCrypto","CryptoKey","Geolocation","Notification","PermissionStatus","MediaQueryList","TreeWalker","NodeIterator","ClipboardItem"]);function U(e,t,n,r){if(!e)return"undefined";switch(e.kind){case S.SyntaxKind.StringKeyword:return"''";case S.SyntaxKind.NumberKeyword:return"0.0";case S.SyntaxKind.BooleanKeyword:return"false";case S.SyntaxKind.NullKeyword:return"null";case S.SyntaxKind.UndefinedKeyword:return"undefined";case S.SyntaxKind.VoidKeyword:return"undefined";case S.SyntaxKind.AnyKeyword:return"any";case S.SyntaxKind.UnknownKeyword:return"any";case S.SyntaxKind.NeverKeyword:return"null";case S.SyntaxKind.SymbolKeyword:return"Symbol('example')";case S.SyntaxKind.BigIntKeyword:return"0n";case S.SyntaxKind.ObjectKeyword:return"{}";case S.SyntaxKind.ArrayType:{let i=U(e.elementType,t);return i==="any"&&(i="null"),`[${i}]`}case S.SyntaxKind.TypeReference:{let s=e,i=s.typeName.getText();if(i==="Array"&&s.typeArguments?.length)return`[${U(s.typeArguments[0],t,n,r)}]`;if(i==="Promise"||i==="Generator"||i==="AsyncGenerator"||i==="IterableIterator"||i==="AsyncIterableIterator")return s.typeArguments?.length?U(s.typeArguments[0],t,n,r):"undefined";if(i==="Record")return"{}";let o={Map:"new Map()",Set:"new Set()",WeakMap:"new WeakMap()",WeakSet:"new WeakSet()",WeakRef:"new WeakRef({})",Error:"new Error('example')",TypeError:"new TypeError('example')",RangeError:"new RangeError('example')",SyntaxError:"new SyntaxError('example')",ReferenceError:"new ReferenceError('example')",URIError:"new URIError('example')",EvalError:"new EvalError('example')",Date:"new Date()",RegExp:"/example/",ArrayBuffer:"new ArrayBuffer(0)",SharedArrayBuffer:"new SharedArrayBuffer(0)",DataView:"new DataView(new ArrayBuffer(0))",Float32Array:"new Float32Array(0)",Float64Array:"new Float64Array(0)",Int8Array:"new Int8Array(0)",Int16Array:"new Int16Array(0)",Int32Array:"new Int32Array(0)",Uint8Array:"new Uint8Array(0)",Uint16Array:"new Uint16Array(0)",Uint32Array:"new Uint32Array(0)",Uint8ClampedArray:"new Uint8ClampedArray(0)",BigInt64Array:"new BigInt64Array(0)",BigUint64Array:"new BigUint64Array(0)",URL:"new URL('https://example.com')",URLSearchParams:"new URLSearchParams()",Headers:"new Headers()",FormData:"new FormData()",Blob:"new Blob()",File:"new File([], 'example')",Response:"new Response()",Request:"new Request('https://example.com')",AbortController:"new AbortController()",AbortSignal:"AbortSignal.abort()",ReadableStream:"new ReadableStream()",WritableStream:"new WritableStream()",TransformStream:"new TransformStream()",TextEncoder:"new TextEncoder()",TextDecoder:"new TextDecoder()",Promise:"Promise.resolve(null)"};if(i in o)return o[i];if(r?.typeAliases?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.typeAliases.get(i);return U(c,t,n,{...r,visited:a})}if(r?.interfaces?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.interfaces.get(i),l=[];for(let u of c.members)if(S.isPropertySignature(u)&&u.name){let p=u.name.getText(r.sourceFile),f=U(u.type,t,n,{...r,visited:a});l.push(`${p}: ${f}`)}return`{ ${l.join(", ")} }`}if(r?.typeParams?.has(i)){let a=r.typeParams.get(i);if(a.constraint)return U(a.constraint,t,n,r);if(a.default)return U(a.default,t,n,r)}return Ys.has(i)?"{}":/^[A-Z]$/.test(i)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(i)?(n?.push(`Generic type parameter '${i}' converted to 'any' - consider specializing`),"any"):(n?.push(`Unknown type '${i}' converted to 'any' - may need manual review`),"any")}case S.SyntaxKind.TypeLiteral:{let s=e,i=[];for(let o of s.members)if(S.isPropertySignature(o)&&o.name){let a=o.name.getText(),c=U(o.type,t);c==="any"&&(c="null"),i.push(`${a}: ${c}`)}return`{ ${i.join(", ")} }`}case S.SyntaxKind.UnionType:{let s=e,i=p=>p.kind===S.SyntaxKind.NullKeyword||S.isLiteralTypeNode(p)&&p.literal.kind===S.SyntaxKind.NullKeyword,o=p=>p.kind===S.SyntaxKind.UndefinedKeyword||S.isLiteralTypeNode(p)&&p.literal.kind===S.SyntaxKind.UndefinedKeyword,a=s.types.filter(p=>!i(p)&&!o(p)),c=s.types.some(i),l=s.types.some(o);if(a.length===0)return c?"null":"undefined";if(a.length===1&&(c||l)){let p=U(a[0],t,n,r);if(p==="any")return"any";if(c)return`${p} | null`;if(l)return`${p} | undefined`}let u=s.types.map(p=>U(p,t,n,r)).filter((p,f,m)=>m.indexOf(p)===f);return u.some(p=>p==="any")?"any":u.length===1?u[0]:u.length>0?u.some(f=>/[()]/.test(f)||f.startsWith("new "))?"any":u.join(" | "):"undefined"}case S.SyntaxKind.LiteralType:{let s=e;return S.isStringLiteral(s.literal)?`'${s.literal.text}'`:S.isNumericLiteral(s.literal)?s.literal.text:s.literal.kind===S.SyntaxKind.TrueKeyword?"true":s.literal.kind===S.SyntaxKind.FalseKeyword?"false":s.literal.kind===S.SyntaxKind.NullKeyword?"null":"undefined"}case S.SyntaxKind.ParenthesizedType:return U(e.type,t);case S.SyntaxKind.FunctionType:{let s=e,i=[];for(let c of s.parameters){let l=c.name?.getText()||"_";if(l==="this")continue;let u=U(c.type,t,n,r);u==="any"&&(u="null"),i.push(`${l}: ${u}`)}let o=U(s.type,t,n,r);o==="any"&&(o="null");let a=[];return i.length>0&&a.push(`params: { ${i.join(", ")} }`),o!=="undefined"&&a.push(`returns: ${o}`),`FunctionPredicate('function', { ${a.join(", ")} })`}case S.SyntaxKind.TupleType:return`[${e.elements.map(o=>{let a=S.isNamedTupleMember(o)?U(o.type,t):U(o,t);return a==="any"?"null":a}).join(", ")}]`;default:return"undefined"}}function X(e,t){if(!e)return{kind:"any"};let n=t?.depth??0;if(n>Aa)return{kind:"any"};switch(t=t?{...t,depth:n+1}:void 0,e.kind){case S.SyntaxKind.StringKeyword:return{kind:"string"};case S.SyntaxKind.NumberKeyword:return{kind:"number"};case S.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case S.SyntaxKind.NullKeyword:return{kind:"null"};case S.SyntaxKind.UndefinedKeyword:case S.SyntaxKind.VoidKeyword:return{kind:"undefined"};case S.SyntaxKind.ArrayType:return{kind:"array",items:X(e.elementType,t)};case S.SyntaxKind.TypeLiteral:{let r=e,s={};for(let i of r.members)if(S.isPropertySignature(i)&&i.name){let o=i.name.getText();s[o]=X(i.type,t)}return{kind:"object",shape:s}}case S.SyntaxKind.UnionType:{let r=e,s=r.types.filter(o=>o.kind!==S.SyntaxKind.NullKeyword&&o.kind!==S.SyntaxKind.UndefinedKeyword),i=r.types.some(o=>o.kind===S.SyntaxKind.NullKeyword);return s.length===1&&i?{...X(s[0],t),nullable:!0}:{kind:"union",members:r.types.map(o=>X(o,t))}}case S.SyntaxKind.IntersectionType:{let r=e,s={};for(let i of r.types){let o=X(i,t);o.kind==="object"&&o.shape&&Object.assign(s,o.shape)}return Object.keys(s).length>0?{kind:"object",shape:s}:{kind:"any"}}case S.SyntaxKind.TupleType:{let r=e,s=[];for(let i of r.elements)S.isNamedTupleMember(i)?s.push(X(i.type,t)):s.push(X(i,t));return{kind:"tuple",elements:s}}case S.SyntaxKind.TypeReference:{let r=e,s=r.typeName.getText();if(s==="Array"&&r.typeArguments?.length)return{kind:"array",items:X(r.typeArguments[0],t)};if(s==="Promise"&&r.typeArguments?.length||(s==="Generator"||s==="AsyncGenerator"||s==="IterableIterator"||s==="AsyncIterableIterator")&&r.typeArguments?.length)return X(r.typeArguments[0],t);if(r.typeArguments?.length){let i=X(r.typeArguments[0],t);if(s==="Partial"||s==="Required"||s==="Readonly")return i;if(s==="Record"&&r.typeArguments.length>=2)return{kind:"object",shape:{"[key]":X(r.typeArguments[1],t)}};if(s==="Pick"||s==="Omit")return i;if(s==="NonNullable")return i.nullable?{...i,nullable:!1}:i;if(["ReturnType","Parameters","ConstructorParameters"].includes(s))return{kind:"any"}}if(t?.typeAliases?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.typeAliases.get(s),a=X(o,{...t,visited:i});return t.resolvedCache?.set(s,a),a}if(t?.interfaces?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.interfaces.get(s),a={};if(o.heritageClauses){for(let l of o.heritageClauses)if(l.token===S.SyntaxKind.ExtendsKeyword)for(let u of l.types){let p=u.expression.getText(t.sourceFile);if(t.interfaces?.has(p)&&!i.has(p)){let f={kind:S.SyntaxKind.TypeReference,typeName:{getText:()=>p}},m=X(f,{...t,visited:i});m.kind==="object"&&m.shape&&Object.assign(a,m.shape)}}}for(let l of o.members)if(S.isPropertySignature(l)&&l.name){let u=l.name.getText(t.sourceFile);a[u]=X(l.type,{...t,visited:i})}let c={kind:"object",shape:a};return t.resolvedCache?.set(s,c),c}if(t?.typeParams?.has(s)){let i=t.typeParams.get(s);if(i.constraint)return X(i.constraint,t);if(i.default)return X(i.default,t)}return Ys.has(s)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function Ma(e,t){if(!e.typeParameters||e.typeParameters.length===0)return;let n={};for(let r of e.typeParameters){let s=r.name.getText(),i={};if(r.constraint){let o=U(r.constraint,void 0,t);if(o.startsWith("{"))try{i.constraint=o}catch{i.constraint=o}else i.constraint=o}if(r.default){let o=U(r.default,void 0,t);i.default=o}n[s]=i}return Object.keys(n).length>0?n:void 0}function Ca(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return Ra(e,t,n,r);let i=r?.find(l=>l.kind==="example"),o=r?.find(l=>l.kind==="predicate"),a;if(i?.text)a=i.text;else{let l=[];for(let u of e.members)if(S.isPropertySignature(u)&&u.name){let p=u.name.getText(t),f=U(u.type,void 0,n);f==="any"&&(f="null"),l.push(`${p}: ${f}`)}if(l.length===0&&!o)return`Type ${s} {}`;a=l.length>0?`{ ${l.join(", ")} }`:"{}"}let c=[`example: ${a}`];return o?.text&&c.push(o.text),`Type ${s} {
367
+ `}function De(e){let t=e.trim();if(Za(t)){let n=Ya(t).map(r=>De(r.trim()));return[...new Set(n)].join(" | ")}return/^['"]/.test(t)?"string":t==="true"||t==="false"?"boolean":t==="null"?"null":t==="undefined"?"undefined":/^[+-]?\d+\.\d+$/.test(t)||/^[+-]?\d+$/.test(t)?"number":t.startsWith("[")?"any[]":t.startsWith("{")?"Record<string, any>":"any"}function Za(e){let t=0,n=null;for(let r of e){if(n){r===n&&(n=null);continue}if(r==="'"||r==='"'||r==="`"){n=r;continue}if(r==="{"||r==="["||r==="(")t++;else if(r==="}"||r==="]"||r===")")t--;else if(r==="|"&&t===0)return!0}return!1}function Ya(e){let t=[],n=0,r=null,s="";for(let i of e){if(r){s+=i,i===r&&(r=null);continue}if(i==="'"||i==='"'||i==="`"){r=i,s+=i;continue}i==="{"||i==="["||i==="("?n++:(i==="}"||i==="]"||i===")")&&n--,i==="|"&&n===0?(t.push(s),s=""):s+=i}return s&&t.push(s),t}import E from"typescript";var Xa=20,pi=new Set(["Event","CustomEvent","MouseEvent","KeyboardEvent","PointerEvent","TouchEvent","FocusEvent","InputEvent","CompositionEvent","WheelEvent","DragEvent","AnimationEvent","TransitionEvent","ClipboardEvent","UIEvent","ProgressEvent","ErrorEvent","MessageEvent","PopStateEvent","HashChangeEvent","PageTransitionEvent","StorageEvent","BeforeUnloadEvent","SubmitEvent","EventTarget","EventListener","Node","Element","HTMLElement","SVGElement","Document","DocumentFragment","ShadowRoot","Text","Comment","Attr","HTMLInputElement","HTMLTextAreaElement","HTMLSelectElement","HTMLButtonElement","HTMLFormElement","HTMLAnchorElement","HTMLImageElement","HTMLVideoElement","HTMLAudioElement","HTMLCanvasElement","HTMLDivElement","HTMLSpanElement","HTMLParagraphElement","HTMLTableElement","HTMLTemplateElement","HTMLSlotElement","HTMLDialogElement","HTMLDetailsElement","HTMLLabelElement","HTMLOptionElement","HTMLIFrameElement","HTMLScriptElement","HTMLStyleElement","HTMLLinkElement","HTMLMetaElement","HTMLHeadElement","HTMLBodyElement","HTMLMediaElement","SVGSVGElement","SVGPathElement","SVGGElement","SVGCircleElement","SVGRectElement","SVGTextElement","SVGLineElement","SVGPolygonElement","NodeList","HTMLCollection","NamedNodeMap","DOMTokenList","DOMStringMap","CSSStyleDeclaration","DOMRect","DOMRectReadOnly","DOMPoint","DOMMatrix","Range","Selection","StaticRange","MutationObserver","MutationRecord","IntersectionObserver","IntersectionObserverEntry","ResizeObserver","ResizeObserverEntry","PerformanceObserver","PerformanceEntry","Window","Location","History","Navigator","Screen","Storage","CanvasRenderingContext2D","WebGLRenderingContext","WebGL2RenderingContext","OffscreenCanvas","ImageData","ImageBitmap","MediaStream","MediaRecorder","AudioContext","AudioNode","AudioBuffer","Worker","SharedWorker","ServiceWorker","ServiceWorkerRegistration","BroadcastChannel","MessageChannel","MessagePort","WebSocket","XMLHttpRequest","FileReader","FileList","DataTransfer","Crypto","SubtleCrypto","CryptoKey","Geolocation","Notification","PermissionStatus","MediaQueryList","TreeWalker","NodeIterator","ClipboardItem"]);function U(e,t,n,r){if(!e)return"undefined";switch(e.kind){case E.SyntaxKind.StringKeyword:return"''";case E.SyntaxKind.NumberKeyword:return"0.0";case E.SyntaxKind.BooleanKeyword:return"false";case E.SyntaxKind.NullKeyword:return"null";case E.SyntaxKind.UndefinedKeyword:return"undefined";case E.SyntaxKind.VoidKeyword:return"undefined";case E.SyntaxKind.AnyKeyword:return"any";case E.SyntaxKind.UnknownKeyword:return"any";case E.SyntaxKind.NeverKeyword:return"null";case E.SyntaxKind.SymbolKeyword:return"Symbol('example')";case E.SyntaxKind.BigIntKeyword:return"0n";case E.SyntaxKind.ObjectKeyword:return"{}";case E.SyntaxKind.ArrayType:{let i=U(e.elementType,t);return i==="any"&&(i="null"),`[${i}]`}case E.SyntaxKind.TypeReference:{let s=e,i=s.typeName.getText();if(i==="Array"&&s.typeArguments?.length)return`[${U(s.typeArguments[0],t,n,r)}]`;if(i==="Promise"||i==="Generator"||i==="AsyncGenerator"||i==="IterableIterator"||i==="AsyncIterableIterator")return s.typeArguments?.length?U(s.typeArguments[0],t,n,r):"undefined";if(i==="Record")return"{}";let o={Map:"new Map()",Set:"new Set()",WeakMap:"new WeakMap()",WeakSet:"new WeakSet()",WeakRef:"new WeakRef({})",Error:"new Error('example')",TypeError:"new TypeError('example')",RangeError:"new RangeError('example')",SyntaxError:"new SyntaxError('example')",ReferenceError:"new ReferenceError('example')",URIError:"new URIError('example')",EvalError:"new EvalError('example')",Date:"new Date()",RegExp:"/example/",ArrayBuffer:"new ArrayBuffer(0)",SharedArrayBuffer:"new SharedArrayBuffer(0)",DataView:"new DataView(new ArrayBuffer(0))",Float32Array:"new Float32Array(0)",Float64Array:"new Float64Array(0)",Int8Array:"new Int8Array(0)",Int16Array:"new Int16Array(0)",Int32Array:"new Int32Array(0)",Uint8Array:"new Uint8Array(0)",Uint16Array:"new Uint16Array(0)",Uint32Array:"new Uint32Array(0)",Uint8ClampedArray:"new Uint8ClampedArray(0)",BigInt64Array:"new BigInt64Array(0)",BigUint64Array:"new BigUint64Array(0)",URL:"new URL('https://example.com')",URLSearchParams:"new URLSearchParams()",Headers:"new Headers()",FormData:"new FormData()",Blob:"new Blob()",File:"new File([], 'example')",Response:"new Response()",Request:"new Request('https://example.com')",AbortController:"new AbortController()",AbortSignal:"AbortSignal.abort()",ReadableStream:"new ReadableStream()",WritableStream:"new WritableStream()",TransformStream:"new TransformStream()",TextEncoder:"new TextEncoder()",TextDecoder:"new TextDecoder()",Promise:"Promise.resolve(null)"};if(i in o)return o[i];if(r?.typeAliases?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.typeAliases.get(i);return U(c,t,n,{...r,visited:a})}if(r?.interfaces?.has(i)){let a=r.visited??new Set;if(a.has(i))return n?.push(`Circular type reference '${i}' - using 'any'`),"any";a.add(i);let c=r.interfaces.get(i),l=[];for(let u of c.members)if(E.isPropertySignature(u)&&u.name){let p=u.name.getText(r.sourceFile),f=U(u.type,t,n,{...r,visited:a});l.push(`${p}: ${f}`)}return`{ ${l.join(", ")} }`}if(r?.typeParams?.has(i)){let a=r.typeParams.get(i);if(a.constraint)return U(a.constraint,t,n,r);if(a.default)return U(a.default,t,n,r)}return pi.has(i)?"{}":/^[A-Z]$/.test(i)||["T","K","V","U","TKey","TValue","TItem","TResult"].includes(i)?(n?.push(`Generic type parameter '${i}' converted to 'any' - consider specializing`),"any"):(n?.push(`Unknown type '${i}' converted to 'any' - may need manual review`),"any")}case E.SyntaxKind.TypeLiteral:{let s=e,i=[];for(let o of s.members)if(E.isPropertySignature(o)&&o.name){let a=o.name.getText(),c=U(o.type,t);c==="any"&&(c="null"),i.push(`${a}: ${c}`)}return`{ ${i.join(", ")} }`}case E.SyntaxKind.UnionType:{let s=e,i=p=>p.kind===E.SyntaxKind.NullKeyword||E.isLiteralTypeNode(p)&&p.literal.kind===E.SyntaxKind.NullKeyword,o=p=>p.kind===E.SyntaxKind.UndefinedKeyword||E.isLiteralTypeNode(p)&&p.literal.kind===E.SyntaxKind.UndefinedKeyword,a=s.types.filter(p=>!i(p)&&!o(p)),c=s.types.some(i),l=s.types.some(o);if(a.length===0)return c?"null":"undefined";if(a.length===1&&(c||l)){let p=U(a[0],t,n,r);if(p==="any")return"any";if(c)return`${p} | null`;if(l)return`${p} | undefined`}let u=s.types.map(p=>U(p,t,n,r)).filter((p,f,m)=>m.indexOf(p)===f);return u.some(p=>p==="any")?"any":u.length===1?u[0]:u.length>0?u.some(f=>/[()]/.test(f)||f.startsWith("new "))?"any":u.join(" | "):"undefined"}case E.SyntaxKind.LiteralType:{let s=e;return E.isStringLiteral(s.literal)?`'${s.literal.text}'`:E.isNumericLiteral(s.literal)?s.literal.text:s.literal.kind===E.SyntaxKind.TrueKeyword?"true":s.literal.kind===E.SyntaxKind.FalseKeyword?"false":s.literal.kind===E.SyntaxKind.NullKeyword?"null":"undefined"}case E.SyntaxKind.ParenthesizedType:return U(e.type,t);case E.SyntaxKind.FunctionType:{let s=e,i=[];for(let c of s.parameters){let l=c.name?.getText()||"_";if(l==="this")continue;let u=U(c.type,t,n,r);u==="any"&&(u="null"),i.push(`${l}: ${u}`)}let o=U(s.type,t,n,r);o==="any"&&(o="null");let a=[];return i.length>0&&a.push(`params: { ${i.join(", ")} }`),o!=="undefined"&&a.push(`returns: ${o}`),`FunctionPredicate('function', { ${a.join(", ")} })`}case E.SyntaxKind.TupleType:return`[${e.elements.map(o=>{let a=E.isNamedTupleMember(o)?U(o.type,t):U(o,t);return a==="any"?"null":a}).join(", ")}]`;default:return"undefined"}}function Q(e,t){if(!e)return{kind:"any"};let n=t?.depth??0;if(n>Xa)return{kind:"any"};switch(t=t?{...t,depth:n+1}:void 0,e.kind){case E.SyntaxKind.StringKeyword:return{kind:"string"};case E.SyntaxKind.NumberKeyword:return{kind:"number"};case E.SyntaxKind.BooleanKeyword:return{kind:"boolean"};case E.SyntaxKind.NullKeyword:return{kind:"null"};case E.SyntaxKind.UndefinedKeyword:case E.SyntaxKind.VoidKeyword:return{kind:"undefined"};case E.SyntaxKind.ArrayType:return{kind:"array",items:Q(e.elementType,t)};case E.SyntaxKind.TypeLiteral:{let r=e,s={};for(let i of r.members)if(E.isPropertySignature(i)&&i.name){let o=i.name.getText();s[o]=Q(i.type,t)}return{kind:"object",shape:s}}case E.SyntaxKind.UnionType:{let r=e,s=r.types.filter(o=>o.kind!==E.SyntaxKind.NullKeyword&&o.kind!==E.SyntaxKind.UndefinedKeyword),i=r.types.some(o=>o.kind===E.SyntaxKind.NullKeyword);return s.length===1&&i?{...Q(s[0],t),nullable:!0}:{kind:"union",members:r.types.map(o=>Q(o,t))}}case E.SyntaxKind.IntersectionType:{let r=e,s={};for(let i of r.types){let o=Q(i,t);o.kind==="object"&&o.shape&&Object.assign(s,o.shape)}return Object.keys(s).length>0?{kind:"object",shape:s}:{kind:"any"}}case E.SyntaxKind.TupleType:{let r=e,s=[];for(let i of r.elements)E.isNamedTupleMember(i)?s.push(Q(i.type,t)):s.push(Q(i,t));return{kind:"tuple",elements:s}}case E.SyntaxKind.TypeReference:{let r=e,s=r.typeName.getText();if(s==="Array"&&r.typeArguments?.length)return{kind:"array",items:Q(r.typeArguments[0],t)};if(s==="Promise"&&r.typeArguments?.length||(s==="Generator"||s==="AsyncGenerator"||s==="IterableIterator"||s==="AsyncIterableIterator")&&r.typeArguments?.length)return Q(r.typeArguments[0],t);if(r.typeArguments?.length){let i=Q(r.typeArguments[0],t);if(s==="Partial"||s==="Required"||s==="Readonly")return i;if(s==="Record"&&r.typeArguments.length>=2)return{kind:"object",shape:{"[key]":Q(r.typeArguments[1],t)}};if(s==="Pick"||s==="Omit")return i;if(s==="NonNullable")return i.nullable?{...i,nullable:!1}:i;if(["ReturnType","Parameters","ConstructorParameters"].includes(s))return{kind:"any"}}if(t?.typeAliases?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.typeAliases.get(s),a=Q(o,{...t,visited:i});return t.resolvedCache?.set(s,a),a}if(t?.interfaces?.has(s)){if(t.resolvedCache?.has(s))return t.resolvedCache.get(s);let i=t.visited??new Set;if(i.has(s))return{kind:"any"};i.add(s);let o=t.interfaces.get(s),a={};if(o.heritageClauses){for(let l of o.heritageClauses)if(l.token===E.SyntaxKind.ExtendsKeyword)for(let u of l.types){let p=u.expression.getText(t.sourceFile);if(t.interfaces?.has(p)&&!i.has(p)){let f={kind:E.SyntaxKind.TypeReference,typeName:{getText:()=>p}},m=Q(f,{...t,visited:i});m.kind==="object"&&m.shape&&Object.assign(a,m.shape)}}}for(let l of o.members)if(E.isPropertySignature(l)&&l.name){let u=l.name.getText(t.sourceFile);a[u]=Q(l.type,{...t,visited:i})}let c={kind:"object",shape:a};return t.resolvedCache?.set(s,c),c}if(t?.typeParams?.has(s)){let i=t.typeParams.get(s);if(i.constraint)return Q(i.constraint,t);if(i.default)return Q(i.default,t)}return pi.has(s)?{kind:"object"}:{kind:"any"}}default:return{kind:"any"}}}function Qa(e,t){if(!e.typeParameters||e.typeParameters.length===0)return;let n={};for(let r of e.typeParameters){let s=r.name.getText(),i={};if(r.constraint){let o=U(r.constraint,void 0,t);if(o.startsWith("{"))try{i.constraint=o}catch{i.constraint=o}else i.constraint=o}if(r.default){let o=U(r.default,void 0,t);i.default=o}n[s]=i}return Object.keys(n).length>0?n:void 0}function ec(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return tc(e,t,n,r);let i=r?.find(l=>l.kind==="example"),o=r?.find(l=>l.kind==="predicate"),a;if(i?.text)a=i.text;else{let l=[];for(let u of e.members)if(E.isPropertySignature(u)&&u.name){let p=u.name.getText(t),f=U(u.type,void 0,n);f==="any"&&(f="null"),l.push(`${p}: ${f}`)}if(l.length===0&&!o)return`Type ${s} {}`;a=l.length>0?`{ ${l.join(", ")} }`:"{}"}let c=[`example: ${a}`];return o?.text&&c.push(o.text),`Type ${s} {
366
368
  ${c.join(`
367
369
  `)}
368
- }`}function Ra(e,t,n,r){let s=e.name.getText(t),i=[];for(let u of e.typeParameters||[]){let p=u.name.getText(t);if(u.default){let f=U(u.default,void 0,n);i.push(`${p} = ${f}`)}else i.push(p)}let o=r?.find(u=>u.kind==="predicate"),a=r?.find(u=>u.kind==="declaration"),c;if(o?.text)c=o.text;else{let u=(e.typeParameters||[]).map(m=>m.name.getText(t)),p=["typeof x === 'object'","x !== null"];for(let m of e.members)if(S.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=d.startsWith("[")&&d.endsWith("]"),b=y?d.slice(1,-1):null;if(y?p.push(`${b} in x`):p.push(`'${d}' in x`),m.type&&S.isTypeReferenceNode(m.type)){let w=m.type.typeName.getText(t);u.includes(w)&&(y?p.push(`${w}(x[${b}])`):p.push(`${w}(x.${d})`))}}c=`predicate(${["x",...u].join(", ")}) { return ${p.join(" && ")} }`}let l=[`description: '${s}'`,c];if(a?.text)l.push(`declaration ${a.text}`);else{let u=[];for(let p of e.members)if(S.isPropertySignature(p)&&p.name){let f=p.name.getText(t),m=p.questionToken?"?":"",d=p.type?p.type.getText(t):"any";u.push(`${f}${m}: ${d}`)}else if(S.isMethodSignature(p)&&p.name){let f=p.getText(t).trim();u.push(f.replace(/;$/,""))}u.length>0&&l.push(`declaration {
370
+ }`}function tc(e,t,n,r){let s=e.name.getText(t),i=[];for(let u of e.typeParameters||[]){let p=u.name.getText(t);if(u.default){let f=U(u.default,void 0,n);i.push(`${p} = ${f}`)}else i.push(p)}let o=r?.find(u=>u.kind==="predicate"),a=r?.find(u=>u.kind==="declaration"),c;if(o?.text)c=o.text;else{let u=(e.typeParameters||[]).map(m=>m.name.getText(t)),p=["typeof x === 'object'","x !== null"];for(let m of e.members)if(E.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=d.startsWith("[")&&d.endsWith("]"),b=y?d.slice(1,-1):null;if(y?p.push(`${b} in x`):p.push(`'${d}' in x`),m.type&&E.isTypeReferenceNode(m.type)){let w=m.type.typeName.getText(t);u.includes(w)&&(y?p.push(`${w}(x[${b}])`):p.push(`${w}(x.${d})`))}}c=`predicate(${["x",...u].join(", ")}) { return ${p.join(" && ")} }`}let l=[`description: '${s}'`,c];if(a?.text)l.push(`declaration ${a.text}`);else{let u=[];for(let p of e.members)if(E.isPropertySignature(p)&&p.name){let f=p.name.getText(t),m=p.questionToken?"?":"",d=p.type?p.type.getText(t):"any";u.push(`${f}${m}: ${d}`)}else if(E.isMethodSignature(p)&&p.name){let f=p.getText(t).trim();u.push(f.replace(/;$/,""))}u.length>0&&l.push(`declaration {
369
371
  ${u.join(`
370
372
  `)}
371
373
  }`)}return`Generic ${s}<${i.join(", ")}> {
372
374
  ${l.join(`
373
375
  `)}
374
- }`}function Na(e,t){if(!S.isUnionTypeNode(e))return null;let n=[];for(let r of e.types)if(S.isLiteralTypeNode(r))if(S.isStringLiteral(r.literal))n.push(`'${r.literal.text}'`);else if(S.isNumericLiteral(r.literal))n.push(r.literal.text);else if(r.literal.kind===S.SyntaxKind.TrueKeyword)n.push("true");else if(r.literal.kind===S.SyntaxKind.FalseKeyword)n.push("false");else if(r.literal.kind===S.SyntaxKind.NullKeyword)n.push("null");else return null;else if(r.kind===S.SyntaxKind.NullKeyword)n.push("null");else if(r.kind===S.SyntaxKind.UndefinedKeyword)n.push("undefined");else return null;return n.length>0?n:null}function Pa(e,t,n){let r=e.name.getText(t),s=[],i=0;for(let o of e.members){let a=o.name.getText(t);if(o.initializer)if(S.isStringLiteral(o.initializer))s.push(` ${a} = '${o.initializer.text}'`);else if(S.isNumericLiteral(o.initializer)){let c=parseInt(o.initializer.text,10);s.push(` ${a} = ${c}`),i=c+1}else if(S.isPrefixUnaryExpression(o.initializer)&&o.initializer.operator===S.SyntaxKind.MinusToken){let c=o.initializer.operand;if(S.isNumericLiteral(c)){let l=-parseInt(c.text,10);s.push(` ${a} = ${l}`),i=l+1}}else s.push(` ${a} = ${o.initializer.getText(t)}`);else s.push(` ${a} = ${i}`),i++}return`Enum ${r} '${r}' {
376
+ }`}function nc(e,t){if(!E.isUnionTypeNode(e))return null;let n=[];for(let r of e.types)if(E.isLiteralTypeNode(r))if(E.isStringLiteral(r.literal))n.push(`'${r.literal.text}'`);else if(E.isNumericLiteral(r.literal))n.push(r.literal.text);else if(r.literal.kind===E.SyntaxKind.TrueKeyword)n.push("true");else if(r.literal.kind===E.SyntaxKind.FalseKeyword)n.push("false");else if(r.literal.kind===E.SyntaxKind.NullKeyword)n.push("null");else return null;else if(r.kind===E.SyntaxKind.NullKeyword)n.push("null");else if(r.kind===E.SyntaxKind.UndefinedKeyword)n.push("undefined");else return null;return n.length>0?n:null}function rc(e,t,n){let r=e.name.getText(t),s=[],i=0;for(let o of e.members){let a=o.name.getText(t);if(o.initializer)if(E.isStringLiteral(o.initializer))s.push(` ${a} = '${o.initializer.text}'`);else if(E.isNumericLiteral(o.initializer)){let c=parseInt(o.initializer.text,10);s.push(` ${a} = ${c}`),i=c+1}else if(E.isPrefixUnaryExpression(o.initializer)&&o.initializer.operator===E.SyntaxKind.MinusToken){let c=o.initializer.operand;if(E.isNumericLiteral(c)){let l=-parseInt(c.text,10);s.push(` ${a} = ${l}`),i=l+1}}else s.push(` ${a} = ${o.initializer.getText(t)}`);else s.push(` ${a} = ${i}`),i++}return`Enum ${r} '${r}' {
375
377
  ${s.join(`
376
378
  `)}
377
- }`}function Ia(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return e.type.kind===S.SyntaxKind.FunctionType?Da(e,t,n):Oa(e,t,n,r);let i=Na(e.type,t);if(i)return`Union ${s} '${s}' ${i.join(" | ")}`;if(e.type.kind===S.SyntaxKind.FunctionType){let a=e.type,c=[];for(let p of a.parameters){let f=p.name?.getText(t)||"_";if(f==="this")continue;let m=U(p.type,void 0,n);m==="any"&&(m="null"),c.push(`${f}: ${m}`)}let l=U(a.type,void 0,n);l==="any"&&(l="null");let u=[];return c.length>0&&u.push(`params: { ${c.join(", ")} }`),l!=="undefined"&&u.push(`returns: ${l}`),`FunctionPredicate ${s} {
379
+ }`}function sc(e,t,n,r){let s=e.name.getText(t);if(e.typeParameters&&e.typeParameters.length>0)return e.type.kind===E.SyntaxKind.FunctionType?ic(e,t,n):oc(e,t,n,r);let i=nc(e.type,t);if(i)return`Union ${s} '${s}' ${i.join(" | ")}`;if(e.type.kind===E.SyntaxKind.FunctionType){let a=e.type,c=[];for(let p of a.parameters){let f=p.name?.getText(t)||"_";if(f==="this")continue;let m=U(p.type,void 0,n);m==="any"&&(m="null"),c.push(`${f}: ${m}`)}let l=U(a.type,void 0,n);l==="any"&&(l="null");let u=[];return c.length>0&&u.push(`params: { ${c.join(", ")} }`),l!=="undefined"&&u.push(`returns: ${l}`),`FunctionPredicate ${s} {
378
380
  ${u.join(`
379
381
  `)}
380
382
  }`}let o=U(e.type,void 0,n);if(o==="any"||o==="undefined"){let a=e.type.getText(t).trim();return`Type ${s} {
381
383
  // TS: ${a}
382
384
  }`}return o==="''"||o==="0"||o==="true"||o==="null"?`Type ${s} ${o}`:`Type ${s} {
383
385
  example: ${o}
384
- }`}function Da(e,t,n){let r=e.name.getText(t),s=e.type,i=new Set,o=[];for(let p of e.typeParameters){let f=p.name.getText(t);if(i.add(f),p.default){let m=U(p.default,void 0,n);o.push(`${f} = ${m}`)}else o.push(f)}let a=[];for(let p of s.parameters){let f=p.name?.getText(t)||"_";if(f==="this")continue;let m=p.type?.getText(t)||"any";if(i.has(m))a.push(`${f}: ${m}`);else{let d=U(p.type,void 0,n);d==="any"&&(d="null"),a.push(`${f}: ${d}`)}}let c=s.type?.getText(t)||"void",l;c!=="void"&&(i.has(c)?l=c:(l=U(s.type,void 0,n),l==="any"&&(l="null"),l==="undefined"&&(l=void 0)));let u=[];return a.length>0&&u.push(`params: { ${a.join(", ")} }`),l!==void 0&&u.push(`returns: ${l}`),`FunctionPredicate ${r}<${o.join(", ")}> {
386
+ }`}function ic(e,t,n){let r=e.name.getText(t),s=e.type,i=new Set,o=[];for(let p of e.typeParameters){let f=p.name.getText(t);if(i.add(f),p.default){let m=U(p.default,void 0,n);o.push(`${f} = ${m}`)}else o.push(f)}let a=[];for(let p of s.parameters){let f=p.name?.getText(t)||"_";if(f==="this")continue;let m=p.type?.getText(t)||"any";if(i.has(m))a.push(`${f}: ${m}`);else{let d=U(p.type,void 0,n);d==="any"&&(d="null"),a.push(`${f}: ${d}`)}}let c=s.type?.getText(t)||"void",l;c!=="void"&&(i.has(c)?l=c:(l=U(s.type,void 0,n),l==="any"&&(l="null"),l==="undefined"&&(l=void 0)));let u=[];return a.length>0&&u.push(`params: { ${a.join(", ")} }`),l!==void 0&&u.push(`returns: ${l}`),`FunctionPredicate ${r}<${o.join(", ")}> {
385
387
  ${u.join(`
386
388
  `)}
387
- }`}function Oa(e,t,n,r){let s=e.name.getText(t),i=[];for(let p of e.typeParameters||[]){let f=p.name.getText(t);if(p.default){let m=U(p.default,void 0,n);i.push(`${f} = ${m}`)}else i.push(f)}let o=(e.typeParameters||[]).map(p=>p.name.getText(t)),a=r?.find(p=>p.kind==="predicate"),c=r?.find(p=>p.kind==="declaration"),l;a?.text?l=a.text:l=`predicate(${["x",...o].join(", ")}) { return true }`;let u=[`description: '${s}'`,l];if(c?.text)u.push(`declaration ${c.text}`);else{let p=e.type;if(p&&S.isTypeLiteralNode(p)){let f=[];for(let m of p.members)if(S.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=m.questionToken?"?":"",b=m.type?m.type.getText(t):"any";f.push(`${d}${y}: ${b}`)}else S.isMethodSignature(m)&&m.name&&f.push(m.getText(t).trim().replace(/;$/,""));f.length>0&&u.push(`declaration {
389
+ }`}function oc(e,t,n,r){let s=e.name.getText(t),i=[];for(let p of e.typeParameters||[]){let f=p.name.getText(t);if(p.default){let m=U(p.default,void 0,n);i.push(`${f} = ${m}`)}else i.push(f)}let o=(e.typeParameters||[]).map(p=>p.name.getText(t)),a=r?.find(p=>p.kind==="predicate"),c=r?.find(p=>p.kind==="declaration"),l;a?.text?l=a.text:l=`predicate(${["x",...o].join(", ")}) { return true }`;let u=[`description: '${s}'`,l];if(c?.text)u.push(`declaration ${c.text}`);else{let p=e.type;if(p&&E.isTypeLiteralNode(p)){let f=[];for(let m of p.members)if(E.isPropertySignature(m)&&m.name){let d=m.name.getText(t),y=m.questionToken?"?":"",b=m.type?m.type.getText(t):"any";f.push(`${d}${y}: ${b}`)}else E.isMethodSignature(m)&&m.name&&f.push(m.getText(t).trim().replace(/;$/,""));f.length>0&&u.push(`declaration {
388
390
  ${f.join(`
389
391
  `)}
390
392
  }`)}else if(p){let f=p.getText(t).trim();u.push(`declaration {
@@ -392,16 +394,16 @@ ${s.join(`
392
394
  }`)}}return`Generic ${s}<${i.join(", ")}> {
393
395
  ${u.join(`
394
396
  `)}
395
- }`}function Zs(e,t,n,r,s,i){let o;if(e.typeParameters&&e.typeParameters.length>0){o=new Map;for(let j of e.typeParameters)o.set(j.name.getText(t),{constraint:j.constraint,default:j.default})}let a=o||i?{...i,typeParams:o??i?.typeParams}:i,c=[],l=st(e.parameters,t,r,c,a),{line:u}=t.getLineAndCharacterOfPosition(e.getStart(t)),p=s?`/* line ${u+1} */
396
- `:"",f=n||(S.isFunctionDeclaration(e)&&e.name?e.name.getText(t):""),m=e.type?U(e.type,void 0,r,a):"",d=m&&m!=="undefined"&&m!=="any"&&!m.startsWith("new ")?`:! ${m}`:"";if(e.type&&(m==="any"||m==="undefined")){let j=e.type.getText(t);j!=="any"&&j!=="unknown"&&j!=="void"&&c.push(`return: ${j}`)}let y="";if(e.body){let j=S.isBlock(e.body)?e.body.getText(t):`{ return ${e.body.getText(t)} }`;y=S.transpileModule(j,{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}else y="{ }";let b=e.modifiers?.some(j=>j.kind===S.SyntaxKind.ExportKeyword),w=e.modifiers?.some(j=>j.kind===S.SyntaxKind.AsyncKeyword),E=!!e.asteriskToken,T=b?"export ":"",x=w?"async ":"",$=E?"function* ":"function ",_=c.length>0?`/* TODO: TS types degraded \u2014 ${c.join(", ")} */
397
- `:"";return`${p}${_}${T}${x}${$}${f}(${l.join(", ")})${d} ${y}`}function La(e,t,n,r){let s=t.name?.getText(n)||"",i=`_${s}_impl`,o=[],a=st(t.parameters,n,r),c="{ }";if(t.body){let m=t.body.getText(n);c=S.transpileModule(m,{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}let l=t.modifiers?.some(m=>m.kind===S.SyntaxKind.AsyncKeyword),u=!!t.asteriskToken,p=l?"async ":"",f=u?"function* ":"function ";o.push(`${p}${f}${i}(${a.join(", ")}) ${c}`);for(let m of e){let d=st(m.parameters,n,r),y=m.parameters.map($=>$.name.getText(n)),b=m.type?U(m.type,void 0,r):"",w=b&&b!=="undefined"&&b!=="any"?`:! ${b}`:"",{line:E}=n.getLineAndCharacterOfPosition(m.getStart(n)),T=`/* line ${E+1} */
398
- `,x=u?"yield* ":"return ";o.push(`${T}${p}${f}${s}(${d.join(", ")})${w} { ${x}${i}(${y.join(", ")}) }`)}return o}function Ba(e,t,n,r,s=!1){let i=r;if(e.typeParameters&&e.typeParameters.length>0){let y=new Map;for(let b of e.typeParameters)y.set(b.name.getText(t),{constraint:b.constraint,default:b.default});i={...r,typeParams:y}}let o=e.name?.getText(t)||"Anonymous",c=e.heritageClauses?.find(y=>y.token===S.SyntaxKind.ExtendsKeyword)?.types[0]?.expression?.getText(t),l=new Map;if(s){for(let y of e.members)if(S.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t);y.modifiers?.some(E=>E.kind===S.SyntaxKind.PrivateKeyword)&&!b.startsWith("#")&&l.set(b,`#${b}`)}}let u=y=>{let b=y;for(let[w,E]of l)b=b.replace(new RegExp(`(\\b\\w+)\\.${w}\\b`,"g"),`$1.${E}`);return b},p=[];for(let y of e.members){if(S.isConstructorDeclaration(y)){let b=st(y.parameters,t,n),w="{ }";if(y.body){let E=S.transpileModule(y.body.getText(t),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}});w=u(E.outputText.trim())}p.push(` constructor(${b.join(", ")}) ${w}`)}if(S.isMethodDeclaration(y)&&y.name){let b=y.name.getText(t),w=y.modifiers?.some(M=>M.kind===S.SyntaxKind.StaticKeyword),E=y.modifiers?.some(M=>M.kind===S.SyntaxKind.AsyncKeyword),T=st(y.parameters,t,n,void 0,i),x=y.type?U(y.type,void 0,n,i):"",$=x&&x!=="undefined"&&x!=="any"?`:! ${x}`:"",_="{ }";if(y.body){let M=S.transpileModule(y.body.getText(t),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}});_=u(M.outputText.trim())}let j=!!y.asteriskToken,A=w?"static ":"",k=E?"async ":"",R=j?"*":"";p.push(` ${A}${k}${R}${b}(${T.join(", ")})${$} ${_}`)}if(S.isGetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),E=y.modifiers?.some(_=>_.kind===S.SyntaxKind.StaticKeyword)?"static ":"",T=y.type?U(y.type,void 0,n,i):"",x=T&&T!=="undefined"&&T!=="any"&&!T.startsWith("new ")?`: ${T}`:"",$="{ }";if(y.body){let _=S.transpileModule(y.body.getText(t),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}});$=u(_.outputText.trim())}p.push(` ${E}get ${b}()${x} ${$}`)}if(S.isSetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),E=y.modifiers?.some($=>$.kind===S.SyntaxKind.StaticKeyword)?"static ":"",T=st(y.parameters,t,n),x="{ }";if(y.body){let $=S.transpileModule(y.body.getText(t),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}});x=u($.outputText.trim())}p.push(` ${E}set ${b}(${T.join(", ")}) ${x}`)}if(S.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t),E=y.modifiers?.some(x=>x.kind===S.SyntaxKind.StaticKeyword)?"static ":"",T=l.get(b)||b;if(y.initializer){let x=y.initializer.getText(t),$=x.trimStart().startsWith("{")?`(${x})`:x,j=S.transpileModule($,{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();$!==x&&(j=j.replace(/^\(/,"").replace(/\);?\s*$/,"")),p.push(` ${E}${T} = ${j}`)}else p.push(` ${E}${T}`)}}let m=e.modifiers?.some(y=>y.kind===S.SyntaxKind.ExportKeyword)?"export ":"",d=c?` extends ${c}`:"";return`${m}class ${o}${d} {
397
+ }`}function fi(e,t,n,r,s,i){let o;if(e.typeParameters&&e.typeParameters.length>0){o=new Map;for(let k of e.typeParameters)o.set(k.name.getText(t),{constraint:k.constraint,default:k.default})}let a=o||i?{...i,typeParams:o??i?.typeParams}:i,c=[],l=at(e.parameters,t,r,c,a),{line:u}=t.getLineAndCharacterOfPosition(e.getStart(t)),p=s?`/* line ${u+1} */
398
+ `:"",f=n||(E.isFunctionDeclaration(e)&&e.name?e.name.getText(t):""),m=e.type?U(e.type,void 0,r,a):"",d=m&&m!=="undefined"&&m!=="any"&&!m.startsWith("new ")?`:! ${m}`:"";if(e.type&&(m==="any"||m==="undefined")){let k=e.type.getText(t);k!=="any"&&k!=="unknown"&&k!=="void"&&c.push(`return: ${k}`)}let y="";if(e.body){let k=E.isBlock(e.body)?e.body.getText(t):`{ return ${e.body.getText(t)} }`;y=E.transpileModule(k,{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}else y="{ }";let b=e.modifiers?.some(k=>k.kind===E.SyntaxKind.ExportKeyword),w=e.modifiers?.some(k=>k.kind===E.SyntaxKind.AsyncKeyword),S=!!e.asteriskToken,T=b?"export ":"",x=w?"async ":"",_=S?"function* ":"function ",$=c.length>0?`/* TODO: TS types degraded \u2014 ${c.join(", ")} */
399
+ `:"";return`${p}${$}${T}${x}${_}${f}(${l.join(", ")})${d} ${y}`}function ac(e,t,n,r){let s=t.name?.getText(n)||"",i=`_${s}_impl`,o=[],a=at(t.parameters,n,r),c="{ }";if(t.body){let m=t.body.getText(n);c=E.transpileModule(m,{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}}).outputText.trim()}let l=t.modifiers?.some(m=>m.kind===E.SyntaxKind.AsyncKeyword),u=!!t.asteriskToken,p=l?"async ":"",f=u?"function* ":"function ";o.push(`${p}${f}${i}(${a.join(", ")}) ${c}`);for(let m of e){let d=at(m.parameters,n,r),y=m.parameters.map(_=>_.name.getText(n)),b=m.type?U(m.type,void 0,r):"",w=b&&b!=="undefined"&&b!=="any"?`:! ${b}`:"",{line:S}=n.getLineAndCharacterOfPosition(m.getStart(n)),T=`/* line ${S+1} */
400
+ `,x=u?"yield* ":"return ";o.push(`${T}${p}${f}${s}(${d.join(", ")})${w} { ${x}${i}(${y.join(", ")}) }`)}return o}function cc(e,t,n,r,s=!1){let i=r;if(e.typeParameters&&e.typeParameters.length>0){let y=new Map;for(let b of e.typeParameters)y.set(b.name.getText(t),{constraint:b.constraint,default:b.default});i={...r,typeParams:y}}let o=e.name?.getText(t)||"Anonymous",c=e.heritageClauses?.find(y=>y.token===E.SyntaxKind.ExtendsKeyword)?.types[0]?.expression?.getText(t),l=new Map;if(s){for(let y of e.members)if(E.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t);y.modifiers?.some(S=>S.kind===E.SyntaxKind.PrivateKeyword)&&!b.startsWith("#")&&l.set(b,`#${b}`)}}let u=y=>{let b=y;for(let[w,S]of l)b=b.replace(new RegExp(`(\\b\\w+)\\.${w}\\b`,"g"),`$1.${S}`);return b},p=[];for(let y of e.members){if(E.isConstructorDeclaration(y)){let b=at(y.parameters,t,n),w="{ }";if(y.body){let S=E.transpileModule(y.body.getText(t),{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}});w=u(S.outputText.trim())}p.push(` constructor(${b.join(", ")}) ${w}`)}if(E.isMethodDeclaration(y)&&y.name){let b=y.name.getText(t),w=y.modifiers?.some(M=>M.kind===E.SyntaxKind.StaticKeyword),S=y.modifiers?.some(M=>M.kind===E.SyntaxKind.AsyncKeyword),T=at(y.parameters,t,n,void 0,i),x=y.type?U(y.type,void 0,n,i):"",_=x&&x!=="undefined"&&x!=="any"?`:! ${x}`:"",$="{ }";if(y.body){let M=E.transpileModule(y.body.getText(t),{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}});$=u(M.outputText.trim())}let k=!!y.asteriskToken,A=w?"static ":"",j=S?"async ":"",N=k?"*":"";p.push(` ${A}${j}${N}${b}(${T.join(", ")})${_} ${$}`)}if(E.isGetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),S=y.modifiers?.some($=>$.kind===E.SyntaxKind.StaticKeyword)?"static ":"",T=y.type?U(y.type,void 0,n,i):"",x=T&&T!=="undefined"&&T!=="any"&&!T.startsWith("new ")?`: ${T}`:"",_="{ }";if(y.body){let $=E.transpileModule(y.body.getText(t),{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}});_=u($.outputText.trim())}p.push(` ${S}get ${b}()${x} ${_}`)}if(E.isSetAccessorDeclaration(y)&&y.name){let b=y.name.getText(t),S=y.modifiers?.some(_=>_.kind===E.SyntaxKind.StaticKeyword)?"static ":"",T=at(y.parameters,t,n),x="{ }";if(y.body){let _=E.transpileModule(y.body.getText(t),{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}});x=u(_.outputText.trim())}p.push(` ${S}set ${b}(${T.join(", ")}) ${x}`)}if(E.isPropertyDeclaration(y)&&y.name){let b=y.name.getText(t),S=y.modifiers?.some(x=>x.kind===E.SyntaxKind.StaticKeyword)?"static ":"",T=l.get(b)||b;if(y.initializer){let x=y.initializer.getText(t),_=x.trimStart().startsWith("{")?`(${x})`:x,k=E.transpileModule(_,{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();_!==x&&(k=k.replace(/^\(/,"").replace(/\);?\s*$/,"")),p.push(` ${S}${T} = ${k}`)}else p.push(` ${S}${T}`)}}let m=e.modifiers?.some(y=>y.kind===E.SyntaxKind.ExportKeyword)?"export ":"",d=c?` extends ${c}`:"";return`${m}class ${o}${d} {
399
401
  ${p.join(`
400
402
  `)}
401
- }`}function st(e,t,n,r,s){let i=[];for(let o of e){let a=o.name.getText(t);if(a==="this")continue;let c=!!o.dotDotDotToken,l=!!o.questionToken||!!o.initializer,u=U(o.type,void 0,n,s);if(c)u==="any"||u==="undefined"?i.push(`...${a}: [null]`):i.push(`...${a}: ${u}`);else if(o.initializer){let p=o.initializer.getText(t);i.push(`${a} = ${p}`)}else if(u==="any"||u==="undefined"){if(i.push(a),r&&o.type){let p=o.type.getText(t);p!=="any"&&p!=="unknown"&&r.push(`${a}: ${p}`)}}else l?i.push(`${a}: ${u} | undefined`):i.push(`${a}: ${u}`)}return i}function wn(e,t,n,r){let s=r;if(e.typeParameters&&e.typeParameters.length>0){let l=new Map;for(let u of e.typeParameters)l.set(u.name.getText(t),{constraint:u.constraint,default:u.default});s={...r,typeParams:l}}let i=S.isFunctionDeclaration(e)&&e.name?e.name.getText(t):"anonymous",o={};for(let l of e.parameters){let u=l.name.getText(t),p=!!l.questionToken||!!l.initializer,f;if(l.initializer){let m=l.initializer.getText(t);try{f=JSON.parse(m)}catch{f=m}}o[u]={type:X(l.type,s),required:!p,default:f}}let a={name:i,params:o,returns:e.type?X(e.type,s):void 0},c=Ma(e,n);return c&&(a.typeParams=c),a}function Fa(e,t,n,r){let s=r;if(e.typeParameters&&e.typeParameters.length>0){let u=new Map;for(let p of e.typeParameters)u.set(p.name.getText(t),{constraint:p.constraint,default:p.default});s={...r,typeParams:u}}let i=e.name?.getText(t)||"anonymous",o={},a={},c;for(let u of e.members){if(S.isConstructorDeclaration(u)){let p={};for(let f of u.parameters){let m=f.name.getText(t),d=!!f.questionToken||!!f.initializer,y;if(f.initializer){let b=f.initializer.getText(t);try{y=JSON.parse(b)}catch{y=b}}p[m]={type:X(f.type,s),required:!d,default:y}}c={params:p}}if(S.isMethodDeclaration(u)&&u.name){let p=u.name.getText(t),f=u.modifiers?.some(y=>y.kind===S.SyntaxKind.StaticKeyword),m={};for(let y of u.parameters){let b=y.name.getText(t),w=!!y.questionToken||!!y.initializer,E;if(y.initializer){let T=y.initializer.getText(t);try{E=JSON.parse(T)}catch{E=T}}m[b]={type:X(y.type,s),required:!w,default:E}}let d={name:p,params:m,returns:u.type?X(u.type,s):void 0};f?a[p]=d:o[p]=d}}let l={name:i,methods:o,staticMethods:a,constructor:c};if(e.typeParameters&&e.typeParameters.length>0){let u={};for(let p of e.typeParameters){let f=p.name.getText(t),m={};p.constraint&&(m.constraint=U(p.constraint,void 0,n,r)),p.default&&(m.default=U(p.default,void 0,n,r)),u[f]=m}l.typeParams=u}return l}var Ua=new Set(["TjsStrict","TjsEquals","TjsClass","TjsDate","TjsNoeval","TjsNoVar","TjsStandard","TjsSafeEval"]);function qa(e){let t=[],n=/\/\*\s*@tjs\s+((?:Tjs\w+\s*)+)\*\//g,r;for(;(r=n.exec(e))!==null;){let s=r[1].trim().split(/\s+/);for(let i of s)Ua.has(i)&&!t.includes(i)&&t.push(i)}return t}function Ja(e){let t=[],n=/\/\*\s*@tjs-skip\s*\*\//g,r;for(;(r=n.exec(e))!==null;)t.push({index:r.index,kind:"skip"});let s=/\/\*\s*@tjs\s+predicate(\([^)]*\)\s*\{[\s\S]*?\})\s*\*\//g;for(;(r=s.exec(e))!==null;)t.push({index:r.index,kind:"predicate",text:`predicate${r[1].trim()}`});let i=/\/\*\s*@tjs\s+example:\s*([\s\S]*?)\s*\*\//g;for(;(r=i.exec(e))!==null;)t.push({index:r.index,kind:"example",text:r[1].trim()});let o=/\/\*\s*@tjs\s+declaration\s*(\{[\s\S]*?\})\s*\*\//g;for(;(r=o.exec(e))!==null;)t.push({index:r.index,kind:"declaration",text:r[1].trim()});return t.sort((a,c)=>a.index-c.index)}function Wa(e,t){let n=new Map;if(e.length===0)return n;let r=t.statements;for(let s=0;s<r.length;s++){let i=r[s],o;if((S.isInterfaceDeclaration(i)||S.isTypeAliasDeclaration(i)||S.isEnumDeclaration(i))&&(o=i.name.getText(t)),!o)continue;let a=i.getStart(t),c=s>0?r[s-1].getEnd():0,l=e.filter(u=>u.index>=c&&u.index<a);l.length>0&&n.set(o,l)}return n}function Va(e){let t=[],n=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{[\s\S]*?\}\s*\*\/|\/\*test\s*\{[\s\S]*?\}\s*\*\//g,r;for(;(r=n.exec(e))!==null;)t.push(r[0]);return t}function Ka(e){let t=[],n=/\/\*#[\s\S]*?\*\//g,r=0,s=null,i=[];for(let a=0;a<e.length;a++){let c=e[a],l=a>0?e[a-1]:"";!s&&(c==='"'||c==="'"||c==="`")?s=c:s&&c===s&&l!=="\\"&&(s=null),s||(c==="{"&&r++,c==="}"&&r--),i[a]=r}let o;for(;(o=n.exec(e))!==null;)i[o.index]===0&&t.push({content:o[0],index:o.index});return t}function za(e,t={}){let{emitTJS:n=!1,filename:r="input.ts"}=t,s=[],i=Va(e),o=n?Ka(e):[],a=n?Ja(e):[],c=qa(e),l=c.includes("TjsClass")||c.includes("TjsStrict"),u=S.createSourceFile(r,e,S.ScriptTarget.Latest,!0),p=n?Wa(a,u):new Map,f=[],m=new Set,d={},y={},b=new Set,w=k=>{for(let R=0;R<o.length;R++){let M=o[R];!b.has(R)&&M.index<k&&(f.push(M.content),b.add(R))}},E=new Map,T=new Map;function x(k){if(S.isTypeAliasDeclaration(k)&&E.set(k.name.getText(u),k.type),S.isInterfaceDeclaration(k)){let R=k.name.getText(u),M=T.get(R);if(M){let P=S.factory.updateInterfaceDeclaration(M,M.modifiers,M.name,M.typeParameters,M.heritageClauses,[...M.members,...k.members]);T.set(R,P)}else T.set(R,k)}S.forEachChild(k,x)}x(u);let $={typeAliases:E,interfaces:T,sourceFile:u,warnings:s,resolvedCache:new Map},_=new Map;for(let k of u.statements)if(S.isFunctionDeclaration(k)&&k.name){let R=k.name.getText(u);_.has(R)||_.set(R,{signatures:[],implementation:null});let M=_.get(R);k.body?M.implementation=k:M.signatures.push(k)}for(let[k,R]of _)(R.signatures.length===0||!R.implementation)&&_.delete(k);for(let k of u.statements){let R=!1;if(n&&w(k.getStart(u)),S.isFunctionDeclaration(k)&&k.name){let M=k.name.getText(u);R=!0;let P=_.get(M);if(P){if(k.body)if(n)f.push(...La(P.signatures,k,u,s));else{let v=[];for(let L of P.signatures)v.push(wn(L,u,s,$));let I=wn(k,u,s,$);I.overloads=v,d[M]=I}}else n?f.push(Zs(k,u,void 0,s,!0,$)):d[M]=wn(k,u,s,$)}if(S.isVariableStatement(k)){let M=!1,P=k.modifiers?.some(v=>v.kind===S.SyntaxKind.ExportKeyword);for(let v of k.declarationList.declarations)if(S.isIdentifier(v.name)&&v.initializer&&(S.isArrowFunction(v.initializer)||S.isFunctionExpression(v.initializer))){M=!0;let I=v.name.getText(u),L=v.initializer;if(n){let F=Zs(L,u,I,s,!0,$);if(P&&!F.includes("export ")){let H=F.search(/^(async\s+)?function[\s*]/m);H>0?F=F.slice(0,H)+"export "+F.slice(H):F="export "+F}f.push(F)}else{let F=wn(L,u,s,$);F.name=I,d[I]=F}}if(!M&&n){let v=S.transpileModule(k.getText(u),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}});f.push(v.outputText.trim())}R=!0}if(S.isInterfaceDeclaration(k)&&(R=!0,n)){let M=k.name.getText(u),P=p.get(M);if(!m.has(M)&&(m.add(M),!P?.some(v=>v.kind==="skip"))){let v=T.get(M)||k,I=Ca(v,u,s,P);if(I){let L=k.modifiers?.some(F=>F.kind===S.SyntaxKind.ExportKeyword);f.push(L?I.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):I)}}}if(S.isTypeAliasDeclaration(k)&&(R=!0,n)){let M=k.name.getText(u),P=p.get(M);if(!m.has(M)&&(m.add(M),!P?.some(v=>v.kind==="skip"))){let v=Ia(k,u,s,P);if(v){let I=k.modifiers?.some(L=>L.kind===S.SyntaxKind.ExportKeyword);f.push(I?v.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):v)}}}if(S.isEnumDeclaration(k)&&(R=!0,n)){let M=k.name.getText(u),P=p.get(M);if(!m.has(M)&&(m.add(M),!P?.some(v=>v.kind==="skip"))){let v=Pa(k,u,s);v&&f.push(v)}}if(S.isClassDeclaration(k)&&k.name){let M=k.name.getText(u);if(R=!0,n){let P=Ba(k,u,s,void 0,l);f.push(P)}else y[M]=Fa(k,u,s,$)}if(S.isImportDeclaration(k)&&(R=!0,n&&!(k.importClause?.isTypeOnly||k.importClause?.namedBindings&&S.isNamedImports(k.importClause.namedBindings)&&k.importClause.namedBindings.elements.every(P=>P.isTypeOnly))))if(k.importClause?.namedBindings&&S.isNamedImports(k.importClause.namedBindings)){let P=k.importClause.namedBindings.elements.filter(v=>!v.isTypeOnly).map(v=>{let I=v.name.getText(u),L=v.propertyName?.getText(u);return L?`${L} as ${I}`:I});if(P.length>0){let v=k.moduleSpecifier.text;f.push(`import { ${P.join(", ")} } from '${v}'`)}}else{let v=k.getText(u).replace(/\btype\s+/g,"").replace(/\s*:\s*\w+/g,"");f.push(v)}if((S.isExportDeclaration(k)||S.isExportAssignment(k))&&(R=!0,n)){let P=S.transpileModule(k.getText(u),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();P&&f.push(P)}if(!R&&n){let P=S.transpileModule(k.getText(u),{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();P&&f.push(P)}}if(n){w(1/0);let k=r||"unknown",M=`${c.length>0?c.join(`
403
+ }`}function at(e,t,n,r,s){let i=[];for(let o of e){let a=o.name.getText(t);if(a==="this")continue;let c=!!o.dotDotDotToken,l=!!o.questionToken||!!o.initializer,u=U(o.type,void 0,n,s);if(c)u==="any"||u==="undefined"?i.push(`...${a}: [null]`):i.push(`...${a}: ${u}`);else if(o.initializer){let p=o.initializer.getText(t);i.push(`${a} = ${p}`)}else if(u==="any"||u==="undefined"){if(i.push(a),r&&o.type){let p=o.type.getText(t);p!=="any"&&p!=="unknown"&&r.push(`${a}: ${p}`)}}else l?i.push(`${a}: ${u} | undefined`):i.push(`${a}: ${u}`)}return i}function vn(e,t,n,r){let s=r;if(e.typeParameters&&e.typeParameters.length>0){let l=new Map;for(let u of e.typeParameters)l.set(u.name.getText(t),{constraint:u.constraint,default:u.default});s={...r,typeParams:l}}let i=E.isFunctionDeclaration(e)&&e.name?e.name.getText(t):"anonymous",o={};for(let l of e.parameters){let u=l.name.getText(t),p=!!l.questionToken||!!l.initializer,f;if(l.initializer){let m=l.initializer.getText(t);try{f=JSON.parse(m)}catch{f=m}}o[u]={type:Q(l.type,s),required:!p,default:f}}let a={name:i,params:o,returns:e.type?Q(e.type,s):void 0},c=Qa(e,n);return c&&(a.typeParams=c),a}function lc(e,t,n,r){let s=r;if(e.typeParameters&&e.typeParameters.length>0){let u=new Map;for(let p of e.typeParameters)u.set(p.name.getText(t),{constraint:p.constraint,default:p.default});s={...r,typeParams:u}}let i=e.name?.getText(t)||"anonymous",o={},a={},c;for(let u of e.members){if(E.isConstructorDeclaration(u)){let p={};for(let f of u.parameters){let m=f.name.getText(t),d=!!f.questionToken||!!f.initializer,y;if(f.initializer){let b=f.initializer.getText(t);try{y=JSON.parse(b)}catch{y=b}}p[m]={type:Q(f.type,s),required:!d,default:y}}c={params:p}}if(E.isMethodDeclaration(u)&&u.name){let p=u.name.getText(t),f=u.modifiers?.some(y=>y.kind===E.SyntaxKind.StaticKeyword),m={};for(let y of u.parameters){let b=y.name.getText(t),w=!!y.questionToken||!!y.initializer,S;if(y.initializer){let T=y.initializer.getText(t);try{S=JSON.parse(T)}catch{S=T}}m[b]={type:Q(y.type,s),required:!w,default:S}}let d={name:p,params:m,returns:u.type?Q(u.type,s):void 0};f?a[p]=d:o[p]=d}}let l={name:i,methods:o,staticMethods:a,constructor:c};if(e.typeParameters&&e.typeParameters.length>0){let u={};for(let p of e.typeParameters){let f=p.name.getText(t),m={};p.constraint&&(m.constraint=U(p.constraint,void 0,n,r)),p.default&&(m.default=U(p.default,void 0,n,r)),u[f]=m}l.typeParams=u}return l}var uc=new Set(["TjsStrict","TjsEquals","TjsClass","TjsDate","TjsNoeval","TjsNoVar","TjsStandard","TjsSafeEval"]);function fc(e){let t=[],n=/\/\*\s*@tjs\s+((?:Tjs\w+\s*)+)\*\//g,r;for(;(r=n.exec(e))!==null;){let s=r[1].trim().split(/\s+/);for(let i of s)uc.has(i)&&!t.includes(i)&&t.push(i)}return t}function pc(e){let t=[],n=/\/\*\s*@tjs-skip\s*\*\//g,r;for(;(r=n.exec(e))!==null;)t.push({index:r.index,kind:"skip"});let s=/\/\*\s*@tjs\s+predicate(\([^)]*\)\s*\{[\s\S]*?\})\s*\*\//g;for(;(r=s.exec(e))!==null;)t.push({index:r.index,kind:"predicate",text:`predicate${r[1].trim()}`});let i=/\/\*\s*@tjs\s+example:\s*([\s\S]*?)\s*\*\//g;for(;(r=i.exec(e))!==null;)t.push({index:r.index,kind:"example",text:r[1].trim()});let o=/\/\*\s*@tjs\s+declaration\s*(\{[\s\S]*?\})\s*\*\//g;for(;(r=o.exec(e))!==null;)t.push({index:r.index,kind:"declaration",text:r[1].trim()});return t.sort((a,c)=>a.index-c.index)}function mc(e,t){let n=new Map;if(e.length===0)return n;let r=t.statements;for(let s=0;s<r.length;s++){let i=r[s],o;if((E.isInterfaceDeclaration(i)||E.isTypeAliasDeclaration(i)||E.isEnumDeclaration(i))&&(o=i.name.getText(t)),!o)continue;let a=i.getStart(t),c=s>0?r[s-1].getEnd():0,l=e.filter(u=>u.index>=c&&u.index<a);l.length>0&&n.set(o,l)}return n}function dc(e){let t=[],n=/\/\*test\s+(['"`])([^'"`]*)\1\s*\{[\s\S]*?\}\s*\*\/|\/\*test\s*\{[\s\S]*?\}\s*\*\//g,r;for(;(r=n.exec(e))!==null;)t.push(r[0]);return t}function yc(e){let t=[],n=/\/\*#[\s\S]*?\*\//g,r=0,s=null,i=[];for(let a=0;a<e.length;a++){let c=e[a],l=a>0?e[a-1]:"";!s&&(c==='"'||c==="'"||c==="`")?s=c:s&&c===s&&l!=="\\"&&(s=null),s||(c==="{"&&r++,c==="}"&&r--),i[a]=r}let o;for(;(o=n.exec(e))!==null;)i[o.index]===0&&t.push({content:o[0],index:o.index});return t}function gc(e,t={}){let{emitTJS:n=!1,filename:r="input.ts"}=t,s=[],i=dc(e),o=n?yc(e):[],a=n?pc(e):[],c=fc(e),l=c.includes("TjsClass")||c.includes("TjsStrict"),u=E.createSourceFile(r,e,E.ScriptTarget.Latest,!0),p=n?mc(a,u):new Map,f=[],m=new Set,d={},y={},b=new Set,w=j=>{for(let N=0;N<o.length;N++){let M=o[N];!b.has(N)&&M.index<j&&(f.push(M.content),b.add(N))}},S=new Map,T=new Map;function x(j){if(E.isTypeAliasDeclaration(j)&&S.set(j.name.getText(u),j.type),E.isInterfaceDeclaration(j)){let N=j.name.getText(u),M=T.get(N);if(M){let P=E.factory.updateInterfaceDeclaration(M,M.modifiers,M.name,M.typeParameters,M.heritageClauses,[...M.members,...j.members]);T.set(N,P)}else T.set(N,j)}E.forEachChild(j,x)}x(u);let _={typeAliases:S,interfaces:T,sourceFile:u,warnings:s,resolvedCache:new Map},$=new Map;for(let j of u.statements)if(E.isFunctionDeclaration(j)&&j.name){let N=j.name.getText(u);$.has(N)||$.set(N,{signatures:[],implementation:null});let M=$.get(N);j.body?M.implementation=j:M.signatures.push(j)}for(let[j,N]of $)(N.signatures.length===0||!N.implementation)&&$.delete(j);for(let j of u.statements){let N=!1;if(n&&w(j.getStart(u)),E.isFunctionDeclaration(j)&&j.name){let M=j.name.getText(u);N=!0;let P=$.get(M);if(P){if(j.body)if(n)f.push(...ac(P.signatures,j,u,s));else{let v=[];for(let B of P.signatures)v.push(vn(B,u,s,_));let I=vn(j,u,s,_);I.overloads=v,d[M]=I}}else n?f.push(fi(j,u,void 0,s,!0,_)):d[M]=vn(j,u,s,_)}if(E.isVariableStatement(j)){let M=!1,P=j.modifiers?.some(v=>v.kind===E.SyntaxKind.ExportKeyword);for(let v of j.declarationList.declarations)if(E.isIdentifier(v.name)&&v.initializer&&(E.isArrowFunction(v.initializer)||E.isFunctionExpression(v.initializer))){M=!0;let I=v.name.getText(u),B=v.initializer;if(n){let F=fi(B,u,I,s,!0,_);if(P&&!F.includes("export ")){let G=F.search(/^(async\s+)?function[\s*]/m);G>0?F=F.slice(0,G)+"export "+F.slice(G):F="export "+F}f.push(F)}else{let F=vn(B,u,s,_);F.name=I,d[I]=F}}if(!M&&n){let v=E.transpileModule(j.getText(u),{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}});f.push(v.outputText.trim())}N=!0}if(E.isInterfaceDeclaration(j)&&(N=!0,n)){let M=j.name.getText(u),P=p.get(M);if(!m.has(M)&&(m.add(M),!P?.some(v=>v.kind==="skip"))){let v=T.get(M)||j,I=ec(v,u,s,P);if(I){let B=j.modifiers?.some(F=>F.kind===E.SyntaxKind.ExportKeyword);f.push(B?I.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):I)}}}if(E.isTypeAliasDeclaration(j)&&(N=!0,n)){let M=j.name.getText(u),P=p.get(M);if(!m.has(M)&&(m.add(M),!P?.some(v=>v.kind==="skip"))){let v=sc(j,u,s,P);if(v){let I=j.modifiers?.some(B=>B.kind===E.SyntaxKind.ExportKeyword);f.push(I?v.replace(/^(\/\*[\s\S]*?\*\/\s*)?/,"$1export "):v)}}}if(E.isEnumDeclaration(j)&&(N=!0,n)){let M=j.name.getText(u),P=p.get(M);if(!m.has(M)&&(m.add(M),!P?.some(v=>v.kind==="skip"))){let v=rc(j,u,s);v&&f.push(v)}}if(E.isClassDeclaration(j)&&j.name){let M=j.name.getText(u);if(N=!0,n){let P=cc(j,u,s,void 0,l);f.push(P)}else y[M]=lc(j,u,s,_)}if(E.isImportDeclaration(j)&&(N=!0,n&&!(j.importClause?.isTypeOnly||j.importClause?.namedBindings&&E.isNamedImports(j.importClause.namedBindings)&&j.importClause.namedBindings.elements.every(P=>P.isTypeOnly))))if(j.importClause?.namedBindings&&E.isNamedImports(j.importClause.namedBindings)){let P=j.importClause.namedBindings.elements.filter(v=>!v.isTypeOnly).map(v=>{let I=v.name.getText(u),B=v.propertyName?.getText(u);return B?`${B} as ${I}`:I});if(P.length>0){let v=j.moduleSpecifier.text;f.push(`import { ${P.join(", ")} } from '${v}'`)}}else{let v=j.getText(u).replace(/\btype\s+/g,"").replace(/\s*:\s*\w+/g,"");f.push(v)}if((E.isExportDeclaration(j)||E.isExportAssignment(j))&&(N=!0,n)){let P=E.transpileModule(j.getText(u),{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();P&&f.push(P)}if(!N&&n){let P=E.transpileModule(j.getText(u),{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}}).outputText.trim();P&&f.push(P)}}if(n){w(1/0);let j=r||"unknown",M=`${c.length>0?c.join(`
402
404
  `)+`
403
405
 
404
- `:""}/* tjs <- ${k} */
406
+ `:""}/* tjs <- ${j} */
405
407
 
406
408
  `,P=i.length>0?`
407
409
 
@@ -409,32 +411,47 @@ ${p.join(`
409
411
 
410
412
  `):"";return{code:M+f.join(`
411
413
 
412
- `)+P,warnings:s.length>0?s:void 0}}let A=S.transpileModule(e,{compilerOptions:{target:S.ScriptTarget.ESNext,module:S.ModuleKind.ESNext,removeComments:!1}}).outputText;for(let[k,R]of Object.entries(d)){let M={params:Object.fromEntries(Object.entries(R.params).map(([v,I])=>[v,{type:I.type.kind,required:I.required,default:I.default}])),returns:R.returns?{type:R.returns.kind}:void 0};R.typeParams&&(M.typeParams=R.typeParams);let P=JSON.stringify(M,null,2);A+=`
413
- ${k}.__tjs = ${P};
414
- `}for(let[k,R]of Object.entries(y)){let M={constructor:R.constructor?{params:Object.fromEntries(Object.entries(R.constructor.params??{}).map(([v,I])=>[v,{type:I.type.kind,required:I.required,default:I.default}]))}:void 0,methods:Object.fromEntries(Object.entries(R.methods??{}).map(([v,I])=>[v,{params:Object.fromEntries(Object.entries(I.params??{}).map(([L,F])=>[L,{type:F.type.kind,required:F.required}])),returns:I.returns?{type:I.returns.kind}:void 0}])),staticMethods:Object.fromEntries(Object.entries(R.staticMethods??{}).map(([v,I])=>[v,{params:Object.fromEntries(Object.entries(I.params??{}).map(([L,F])=>[L,{type:F.type.kind,required:F.required}])),returns:I.returns?{type:I.returns.kind}:void 0}]))};R.typeParams&&(M.typeParams=R.typeParams);let P=JSON.stringify(M,null,2);A+=`
415
- ${k}.__tjs = ${P};
414
+ `)+P,warnings:s.length>0?s:void 0}}let A=E.transpileModule(e,{compilerOptions:{target:E.ScriptTarget.ESNext,module:E.ModuleKind.ESNext,removeComments:!1}}).outputText;for(let[j,N]of Object.entries(d)){let M={params:Object.fromEntries(Object.entries(N.params).map(([v,I])=>[v,{type:I.type.kind,required:I.required,default:I.default}])),returns:N.returns?{type:N.returns.kind}:void 0};N.typeParams&&(M.typeParams=N.typeParams);let P=JSON.stringify(M,null,2);A+=`
415
+ ${j}.__tjs = ${P};
416
+ `}for(let[j,N]of Object.entries(y)){let M={constructor:N.constructor?{params:Object.fromEntries(Object.entries(N.constructor.params??{}).map(([v,I])=>[v,{type:I.type.kind,required:I.required,default:I.default}]))}:void 0,methods:Object.fromEntries(Object.entries(N.methods??{}).map(([v,I])=>[v,{params:Object.fromEntries(Object.entries(I.params??{}).map(([B,F])=>[B,{type:F.type.kind,required:F.required}])),returns:I.returns?{type:I.returns.kind}:void 0}])),staticMethods:Object.fromEntries(Object.entries(N.staticMethods??{}).map(([v,I])=>[v,{params:Object.fromEntries(Object.entries(I.params??{}).map(([B,F])=>[B,{type:F.type.kind,required:F.required}])),returns:I.returns?{type:I.returns.kind}:void 0}]))};N.typeParams&&(M.typeParams=N.typeParams);let P=JSON.stringify(M,null,2);A+=`
417
+ ${j}.__tjs = ${P};
416
418
  `,A+=`
417
- ${Is(k)}
418
- `}return{code:A,types:d,classes:Object.keys(y).length>0?y:void 0,warnings:s.length>0?s:void 0}}import{s as Xs}from"tosijs-schema";function Qs(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function En(e){return Xs.infer(e)}function Sr(e){return En(e)}Sr.type=Qs;Sr.infer=En;var Ga=new Proxy(Sr,{get(e,t){return t==="type"?Qs:t==="infer"?En:Xs[t]},apply(e,t,n){return En(n[0])}});async function _n(e){let t=`${oe}:${e}`;if(typeof crypto<"u"&&crypto.subtle){let s=new TextEncoder().encode(t),i=await crypto.subtle.digest("SHA-256",s);return Array.from(new Uint8Array(i)).map(a=>a.toString(16).padStart(2,"0")).join("")}let n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}function Ha(e){let t=`${oe}:${e}`,n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}var Za="tjs-metadata-cache",Ya=1,te="modules",$n=class{db=null;stats={hits:0,misses:0};pendingOpen=null;async open(){if(!this.db){if(this.pendingOpen)return this.pendingOpen;this.pendingOpen=this._open(),await this.pendingOpen,this.pendingOpen=null}}async _open(){return new Promise((t,n)=>{if(typeof indexedDB>"u"){t();return}let r=indexedDB.open(Za,Ya);r.onerror=()=>{console.warn("MetadataCache: Failed to open IndexedDB",r.error),t()},r.onsuccess=()=>{this.db=r.result,t()},r.onupgradeneeded=s=>{let i=s.target.result;if(!i.objectStoreNames.contains(te)){let o=i.createObjectStore(te,{keyPath:"hash"});o.createIndex("timestamp","timestamp"),o.createIndex("version","version")}}})}async get(t){if(!this.db){this.stats.misses++;return}let n=await _n(t);return new Promise(r=>{let o=this.db.transaction(te,"readonly").objectStore(te).get(n);o.onerror=()=>{this.stats.misses++,r(void 0)},o.onsuccess=()=>{let a=o.result;if(a&&a.version!==oe){this.stats.misses++,r(void 0);return}a?this.stats.hits++:this.stats.misses++,r(a)}})}async getTranspile(t){return(await this.get(t))?.transpile}async getTJS(t){return(await this.get(t))?.tjs}async setTranspile(t,n){await this._set(t,{transpile:n})}async setTJS(t,n){await this._set(t,{tjs:n})}async _set(t,n){if(!this.db)return;let r=await _n(t);return new Promise((s,i)=>{let a=this.db.transaction(te,"readwrite").objectStore(te),c=a.get(r);c.onsuccess=()=>{let l=c.result,u={hash:r,version:oe,timestamp:Date.now(),transpile:n.transpile??l?.transpile,tjs:n.tjs??l?.tjs},p=a.put(u);p.onerror=()=>i(p.error),p.onsuccess=()=>s()},c.onerror=()=>i(c.error)})}async delete(t){if(!this.db)return;let n=await _n(t);return new Promise((r,s)=>{let a=this.db.transaction(te,"readwrite").objectStore(te).delete(n);a.onerror=()=>s(a.error),a.onsuccess=()=>r()})}async clear(){if(this.db)return new Promise((t,n)=>{let i=this.db.transaction(te,"readwrite").objectStore(te).clear();i.onerror=()=>n(i.error),i.onsuccess=()=>{this.stats={hits:0,misses:0},t()}})}async prune(t){if(!this.db)return 0;let n=Date.now()-t;return new Promise((r,s)=>{let a=this.db.transaction(te,"readwrite").objectStore(te).index("timestamp"),c=IDBKeyRange.upperBound(n),l=0,u=a.openCursor(c);u.onsuccess=p=>{let f=p.target.result;f?(f.delete(),l++,f.continue()):r(l)},u.onerror=()=>s(u.error)})}async pruneOldVersions(){return this.db?new Promise((t,n)=>{let s=this.db.transaction(te,"readwrite").objectStore(te),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(c.value.version!==oe&&(c.delete(),i++),c.continue()):t(i)},o.onerror=()=>n(o.error)}):0}async getStats(){let t=await this.count(),n=await this.estimateSize(),r=this.stats.hits+this.stats.misses,s=r>0?this.stats.hits/r:0;return{entries:t,bytes:n,hits:this.stats.hits,misses:this.stats.misses,hitRate:s}}async count(){return this.db?new Promise((t,n)=>{let i=this.db.transaction(te,"readonly").objectStore(te).count();i.onerror=()=>n(i.error),i.onsuccess=()=>t(i.result)}):0}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((t,n)=>{let s=this.db.transaction(te,"readonly").objectStore(te),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(i+=JSON.stringify(c.value).length*2,c.continue()):t(i)},o.onerror=()=>n(o.error)})}close(){this.db&&(this.db.close(),this.db=null)}isAvailable(){return this.db!==null}resetStats(){this.stats={hits:0,misses:0}}},Ct=null;async function kn(){return Ct||(Ct=new $n,await Ct.open()),Ct}function Xa(e){Ct=e}function jn(e,t,n,r,s){n||(n=N),(function i(o,a,c){var l=c||o.type;n[l](o,a,i),t[l]&&t[l](o,a)})(e,r,s)}function ei(e,t,n,r,s){var i=[];n||(n=N),(function o(a,c,l){var u=l||a.type,p=a!==i[i.length-1];p&&i.push(a),n[u](a,c,o),t[u]&&t[u](a,c||i,i),p&&i.pop()})(e,r,s)}function wr(e,t,n){n(e,t)}function We(e,t,n){}var N={};N.Program=N.BlockStatement=N.StaticBlock=function(e,t,n){for(var r=0,s=e.body;r<s.length;r+=1){var i=s[r];n(i,t,"Statement")}};N.Statement=wr;N.EmptyStatement=We;N.ExpressionStatement=N.ParenthesizedExpression=N.ChainExpression=function(e,t,n){return n(e.expression,t,"Expression")};N.IfStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Statement"),e.alternate&&n(e.alternate,t,"Statement")};N.LabeledStatement=function(e,t,n){return n(e.body,t,"Statement")};N.BreakStatement=N.ContinueStatement=We;N.WithStatement=function(e,t,n){n(e.object,t,"Expression"),n(e.body,t,"Statement")};N.SwitchStatement=function(e,t,n){n(e.discriminant,t,"Expression");for(var r=0,s=e.cases;r<s.length;r+=1){var i=s[r];n(i,t)}};N.SwitchCase=function(e,t,n){e.test&&n(e.test,t,"Expression");for(var r=0,s=e.consequent;r<s.length;r+=1){var i=s[r];n(i,t,"Statement")}};N.ReturnStatement=N.YieldExpression=N.AwaitExpression=function(e,t,n){e.argument&&n(e.argument,t,"Expression")};N.ThrowStatement=N.SpreadElement=function(e,t,n){return n(e.argument,t,"Expression")};N.TryStatement=function(e,t,n){n(e.block,t,"Statement"),e.handler&&n(e.handler,t),e.finalizer&&n(e.finalizer,t,"Statement")};N.CatchClause=function(e,t,n){e.param&&n(e.param,t,"Pattern"),n(e.body,t,"Statement")};N.WhileStatement=N.DoWhileStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.body,t,"Statement")};N.ForStatement=function(e,t,n){e.init&&n(e.init,t,"ForInit"),e.test&&n(e.test,t,"Expression"),e.update&&n(e.update,t,"Expression"),n(e.body,t,"Statement")};N.ForInStatement=N.ForOfStatement=function(e,t,n){n(e.left,t,"ForInit"),n(e.right,t,"Expression"),n(e.body,t,"Statement")};N.ForInit=function(e,t,n){e.type==="VariableDeclaration"?n(e,t):n(e,t,"Expression")};N.DebuggerStatement=We;N.FunctionDeclaration=function(e,t,n){return n(e,t,"Function")};N.VariableDeclaration=function(e,t,n){for(var r=0,s=e.declarations;r<s.length;r+=1){var i=s[r];n(i,t)}};N.VariableDeclarator=function(e,t,n){n(e.id,t,"Pattern"),e.init&&n(e.init,t,"Expression")};N.Function=function(e,t,n){e.id&&n(e.id,t,"Pattern");for(var r=0,s=e.params;r<s.length;r+=1){var i=s[r];n(i,t,"Pattern")}n(e.body,t,e.expression?"Expression":"Statement")};N.Pattern=function(e,t,n){e.type==="Identifier"?n(e,t,"VariablePattern"):e.type==="MemberExpression"?n(e,t,"MemberPattern"):n(e,t)};N.VariablePattern=We;N.MemberPattern=wr;N.RestElement=function(e,t,n){return n(e.argument,t,"Pattern")};N.ArrayPattern=function(e,t,n){for(var r=0,s=e.elements;r<s.length;r+=1){var i=s[r];i&&n(i,t,"Pattern")}};N.ObjectPattern=function(e,t,n){for(var r=0,s=e.properties;r<s.length;r+=1){var i=s[r];i.type==="Property"?(i.computed&&n(i.key,t,"Expression"),n(i.value,t,"Pattern")):i.type==="RestElement"&&n(i.argument,t,"Pattern")}};N.Expression=wr;N.ThisExpression=N.Super=N.MetaProperty=We;N.ArrayExpression=function(e,t,n){for(var r=0,s=e.elements;r<s.length;r+=1){var i=s[r];i&&n(i,t,"Expression")}};N.ObjectExpression=function(e,t,n){for(var r=0,s=e.properties;r<s.length;r+=1){var i=s[r];n(i,t)}};N.FunctionExpression=N.ArrowFunctionExpression=N.FunctionDeclaration;N.SequenceExpression=function(e,t,n){for(var r=0,s=e.expressions;r<s.length;r+=1){var i=s[r];n(i,t,"Expression")}};N.TemplateLiteral=function(e,t,n){for(var r=0,s=e.quasis;r<s.length;r+=1){var i=s[r];n(i,t)}for(var o=0,a=e.expressions;o<a.length;o+=1){var c=a[o];n(c,t,"Expression")}};N.TemplateElement=We;N.UnaryExpression=N.UpdateExpression=function(e,t,n){n(e.argument,t,"Expression")};N.BinaryExpression=N.LogicalExpression=function(e,t,n){n(e.left,t,"Expression"),n(e.right,t,"Expression")};N.AssignmentExpression=N.AssignmentPattern=function(e,t,n){n(e.left,t,"Pattern"),n(e.right,t,"Expression")};N.ConditionalExpression=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Expression"),n(e.alternate,t,"Expression")};N.NewExpression=N.CallExpression=function(e,t,n){if(n(e.callee,t,"Expression"),e.arguments)for(var r=0,s=e.arguments;r<s.length;r+=1){var i=s[r];n(i,t,"Expression")}};N.MemberExpression=function(e,t,n){n(e.object,t,"Expression"),e.computed&&n(e.property,t,"Expression")};N.ExportNamedDeclaration=N.ExportDefaultDeclaration=function(e,t,n){e.declaration&&n(e.declaration,t,e.type==="ExportNamedDeclaration"||e.declaration.id?"Statement":"Expression"),e.source&&n(e.source,t,"Expression")};N.ExportAllDeclaration=function(e,t,n){e.exported&&n(e.exported,t),n(e.source,t,"Expression")};N.ImportDeclaration=function(e,t,n){for(var r=0,s=e.specifiers;r<s.length;r+=1){var i=s[r];n(i,t)}n(e.source,t,"Expression")};N.ImportExpression=function(e,t,n){n(e.source,t,"Expression")};N.ImportSpecifier=N.ImportDefaultSpecifier=N.ImportNamespaceSpecifier=N.Identifier=N.PrivateIdentifier=N.Literal=We;N.TaggedTemplateExpression=function(e,t,n){n(e.tag,t,"Expression"),n(e.quasi,t,"Expression")};N.ClassDeclaration=N.ClassExpression=function(e,t,n){return n(e,t,"Class")};N.Class=function(e,t,n){e.id&&n(e.id,t,"Pattern"),e.superClass&&n(e.superClass,t,"Expression"),n(e.body,t)};N.ClassBody=function(e,t,n){for(var r=0,s=e.body;r<s.length;r+=1){var i=s[r];n(i,t)}};N.MethodDefinition=N.PropertyDefinition=N.Property=function(e,t,n){e.computed&&n(e.key,t,"Expression"),e.value&&n(e.value,t,"Expression")};var ec={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function tc(e,t={}){let n={...ec,...t},r=[],s;try{s=we(e,{filename:n.filename,colonShorthand:!0}).ast}catch(o){return{diagnostics:[{severity:"error",message:o.message,line:o.loc?.line,column:o.loc?.column,rule:"parse-error"}],valid:!1}}let i=[ti()];if(ei(s,{FunctionDeclaration(o,a,c){let l=ti();i.push(l);for(let u of o.params)nc(l,u,"parameter");o.id&&(i[i.length-2]||i[0]).declarations.set(o.id.name,{node:o.id,kind:"function",used:!1})},VariableDeclaration(o){let a=i[i.length-1];for(let c of o.declarations)c.id.type==="Identifier"&&a.declarations.set(c.id.name,{node:c.id,kind:o.kind,used:!1})}}),jn(s,{Identifier(o){for(let a=i.length-1;a>=0;a--){let c=i[a].declarations.get(o.name);if(c){c.used=!0;break}}}}),n.unusedVariables)for(let o of i)for(let[a,c]of o.declarations)a.startsWith("_")||!c.used&&c.kind!=="function"&&r.push({severity:"warning",message:`'${a}' is declared but never used`,line:c.node.loc?.start?.line,column:c.node.loc?.start?.column,rule:"no-unused-vars"});return n.unreachableCode&&jn(s,{BlockStatement(o){let a=!1;for(let c of o.body){if(a){r.push({severity:"warning",message:"Unreachable code after return statement",line:c.loc?.start?.line,column:c.loc?.start?.column,rule:"no-unreachable"});break}c.type==="ReturnStatement"&&(a=!0)}}}),n.noExplicitNew&&jn(s,{NewExpression(o){let a="class";o.callee.type==="Identifier"?a=o.callee.name:o.callee.type==="MemberExpression"&&o.callee.property.type==="Identifier"&&(a=o.callee.property.name),r.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${a}(...) instead of new ${a}(...)`,line:o.loc?.start?.line,column:o.loc?.start?.column,rule:"no-explicit-new"})}}),{diagnostics:r,valid:r.filter(o=>o.severity==="error").length===0}}function ti(){return{declarations:new Map}}function nc(e,t,n){t.type==="Identifier"?e.declarations.set(t.name,{node:t,kind:n,used:!1}):t.type==="AssignmentPattern"&&t.left.type==="Identifier"&&e.declarations.set(t.left.name,{node:t.left,kind:n,used:!1})}function rc(e){let t=[],n=0,r=null;for(let s=0;s<e.length;s++){let i=e[s],o=s>0?e[s-1]:"";!r&&(i==='"'||i==="'"||i==="`")?r=i:r&&i===r&&o!=="\\"&&(r=null),r||(i==="{"&&n++,i==="}"&&n--),t[s]=n}return t}function ni(e){let t=[],n=rc(e),r=/\/\*#([\s\S]*?)\*\//g,s=/function\s+(\w+)\s*\(([^)]*)\)\s*(?:(:[?!]?)\s*('[^']*'|"[^"]*"|[^\s{]+))?\s*\{/g,i=[],o;for(;(o=r.exec(e))!==null;){if(n[o.index]!==0)continue;let c=o[1],l=c.split(`
419
- `),u=l.filter(p=>p.trim().length>0).reduce((p,f)=>{let m=f.match(/^(\s*)/)?.[1].length||0;return Math.min(p,m)},1/0);u>0&&u<1/0&&(c=l.map(p=>p.slice(u)).join(`
420
- `)),i.push({type:"doc",index:o.index,data:c.trim()})}for(;(o=s.exec(e))!==null;){let c=o[1],l=o[2],u=o[3]||"",p=o[4]||"",f=`function ${c}(${l})`;u&&p&&(f+=`${u} ${p}`),i.push({type:"function",index:o.index,data:{name:c,signature:f}})}i.sort((c,l)=>c.index-l.index);for(let c of i)c.type==="doc"?t.push({type:"doc",content:c.data}):t.push({type:"function",name:c.data.name,signature:c.data.signature});let a=t.map(c=>c.type==="doc"?c.content:`\`\`\`tjs
421
- ${c.signature}
419
+ ${zs(j)}
420
+ `}return{code:A,types:d,classes:Object.keys(y).length>0?y:void 0,warnings:s.length>0?s:void 0}}import{s as mi}from"tosijs-schema";function di(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function An(e){return mi.infer(e)}function vr(e){return An(e)}vr.type=di;vr.infer=An;var hc=new Proxy(vr,{get(e,t){return t==="type"?di:t==="infer"?An:mi[t]},apply(e,t,n){return An(n[0])}});async function Mn(e){let t=`${ue}:${e}`;if(typeof crypto<"u"&&crypto.subtle){let s=new TextEncoder().encode(t),i=await crypto.subtle.digest("SHA-256",s);return Array.from(new Uint8Array(i)).map(a=>a.toString(16).padStart(2,"0")).join("")}let n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}function bc(e){let t=`${ue}:${e}`,n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}var xc="tjs-metadata-cache",Tc=1,re="modules",Cn=class{db=null;stats={hits:0,misses:0};pendingOpen=null;async open(){if(!this.db){if(this.pendingOpen)return this.pendingOpen;this.pendingOpen=this._open(),await this.pendingOpen,this.pendingOpen=null}}async _open(){return new Promise((t,n)=>{if(typeof indexedDB>"u"){t();return}let r=indexedDB.open(xc,Tc);r.onerror=()=>{console.warn("MetadataCache: Failed to open IndexedDB",r.error),t()},r.onsuccess=()=>{this.db=r.result,t()},r.onupgradeneeded=s=>{let i=s.target.result;if(!i.objectStoreNames.contains(re)){let o=i.createObjectStore(re,{keyPath:"hash"});o.createIndex("timestamp","timestamp"),o.createIndex("version","version")}}})}async get(t){if(!this.db){this.stats.misses++;return}let n=await Mn(t);return new Promise(r=>{let o=this.db.transaction(re,"readonly").objectStore(re).get(n);o.onerror=()=>{this.stats.misses++,r(void 0)},o.onsuccess=()=>{let a=o.result;if(a&&a.version!==ue){this.stats.misses++,r(void 0);return}a?this.stats.hits++:this.stats.misses++,r(a)}})}async getTranspile(t){return(await this.get(t))?.transpile}async getTJS(t){return(await this.get(t))?.tjs}async setTranspile(t,n){await this._set(t,{transpile:n})}async setTJS(t,n){await this._set(t,{tjs:n})}async _set(t,n){if(!this.db)return;let r=await Mn(t);return new Promise((s,i)=>{let a=this.db.transaction(re,"readwrite").objectStore(re),c=a.get(r);c.onsuccess=()=>{let l=c.result,u={hash:r,version:ue,timestamp:Date.now(),transpile:n.transpile??l?.transpile,tjs:n.tjs??l?.tjs},p=a.put(u);p.onerror=()=>i(p.error),p.onsuccess=()=>s()},c.onerror=()=>i(c.error)})}async delete(t){if(!this.db)return;let n=await Mn(t);return new Promise((r,s)=>{let a=this.db.transaction(re,"readwrite").objectStore(re).delete(n);a.onerror=()=>s(a.error),a.onsuccess=()=>r()})}async clear(){if(this.db)return new Promise((t,n)=>{let i=this.db.transaction(re,"readwrite").objectStore(re).clear();i.onerror=()=>n(i.error),i.onsuccess=()=>{this.stats={hits:0,misses:0},t()}})}async prune(t){if(!this.db)return 0;let n=Date.now()-t;return new Promise((r,s)=>{let a=this.db.transaction(re,"readwrite").objectStore(re).index("timestamp"),c=IDBKeyRange.upperBound(n),l=0,u=a.openCursor(c);u.onsuccess=p=>{let f=p.target.result;f?(f.delete(),l++,f.continue()):r(l)},u.onerror=()=>s(u.error)})}async pruneOldVersions(){return this.db?new Promise((t,n)=>{let s=this.db.transaction(re,"readwrite").objectStore(re),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(c.value.version!==ue&&(c.delete(),i++),c.continue()):t(i)},o.onerror=()=>n(o.error)}):0}async getStats(){let t=await this.count(),n=await this.estimateSize(),r=this.stats.hits+this.stats.misses,s=r>0?this.stats.hits/r:0;return{entries:t,bytes:n,hits:this.stats.hits,misses:this.stats.misses,hitRate:s}}async count(){return this.db?new Promise((t,n)=>{let i=this.db.transaction(re,"readonly").objectStore(re).count();i.onerror=()=>n(i.error),i.onsuccess=()=>t(i.result)}):0}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((t,n)=>{let s=this.db.transaction(re,"readonly").objectStore(re),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(i+=JSON.stringify(c.value).length*2,c.continue()):t(i)},o.onerror=()=>n(o.error)})}close(){this.db&&(this.db.close(),this.db=null)}isAvailable(){return this.db!==null}resetStats(){this.stats={hits:0,misses:0}}},It=null;async function Nn(){return It||(It=new Cn,await It.open()),It}function Sc(e){It=e}function Ge(e,t,n,r,s){n||(n=R),(function i(o,a,c){var l=c||o.type;n[l](o,a,i),t[l]&&t[l](o,a)})(e,r,s)}function yi(e,t,n,r,s){var i=[];n||(n=R),(function o(a,c,l){var u=l||a.type,p=a!==i[i.length-1];p&&i.push(a),n[u](a,c,o),t[u]&&t[u](a,c||i,i),p&&i.pop()})(e,r,s)}function Ar(e,t,n){n(e,t)}function He(e,t,n){}var R={};R.Program=R.BlockStatement=R.StaticBlock=function(e,t,n){for(var r=0,s=e.body;r<s.length;r+=1){var i=s[r];n(i,t,"Statement")}};R.Statement=Ar;R.EmptyStatement=He;R.ExpressionStatement=R.ParenthesizedExpression=R.ChainExpression=function(e,t,n){return n(e.expression,t,"Expression")};R.IfStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Statement"),e.alternate&&n(e.alternate,t,"Statement")};R.LabeledStatement=function(e,t,n){return n(e.body,t,"Statement")};R.BreakStatement=R.ContinueStatement=He;R.WithStatement=function(e,t,n){n(e.object,t,"Expression"),n(e.body,t,"Statement")};R.SwitchStatement=function(e,t,n){n(e.discriminant,t,"Expression");for(var r=0,s=e.cases;r<s.length;r+=1){var i=s[r];n(i,t)}};R.SwitchCase=function(e,t,n){e.test&&n(e.test,t,"Expression");for(var r=0,s=e.consequent;r<s.length;r+=1){var i=s[r];n(i,t,"Statement")}};R.ReturnStatement=R.YieldExpression=R.AwaitExpression=function(e,t,n){e.argument&&n(e.argument,t,"Expression")};R.ThrowStatement=R.SpreadElement=function(e,t,n){return n(e.argument,t,"Expression")};R.TryStatement=function(e,t,n){n(e.block,t,"Statement"),e.handler&&n(e.handler,t),e.finalizer&&n(e.finalizer,t,"Statement")};R.CatchClause=function(e,t,n){e.param&&n(e.param,t,"Pattern"),n(e.body,t,"Statement")};R.WhileStatement=R.DoWhileStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.body,t,"Statement")};R.ForStatement=function(e,t,n){e.init&&n(e.init,t,"ForInit"),e.test&&n(e.test,t,"Expression"),e.update&&n(e.update,t,"Expression"),n(e.body,t,"Statement")};R.ForInStatement=R.ForOfStatement=function(e,t,n){n(e.left,t,"ForInit"),n(e.right,t,"Expression"),n(e.body,t,"Statement")};R.ForInit=function(e,t,n){e.type==="VariableDeclaration"?n(e,t):n(e,t,"Expression")};R.DebuggerStatement=He;R.FunctionDeclaration=function(e,t,n){return n(e,t,"Function")};R.VariableDeclaration=function(e,t,n){for(var r=0,s=e.declarations;r<s.length;r+=1){var i=s[r];n(i,t)}};R.VariableDeclarator=function(e,t,n){n(e.id,t,"Pattern"),e.init&&n(e.init,t,"Expression")};R.Function=function(e,t,n){e.id&&n(e.id,t,"Pattern");for(var r=0,s=e.params;r<s.length;r+=1){var i=s[r];n(i,t,"Pattern")}n(e.body,t,e.expression?"Expression":"Statement")};R.Pattern=function(e,t,n){e.type==="Identifier"?n(e,t,"VariablePattern"):e.type==="MemberExpression"?n(e,t,"MemberPattern"):n(e,t)};R.VariablePattern=He;R.MemberPattern=Ar;R.RestElement=function(e,t,n){return n(e.argument,t,"Pattern")};R.ArrayPattern=function(e,t,n){for(var r=0,s=e.elements;r<s.length;r+=1){var i=s[r];i&&n(i,t,"Pattern")}};R.ObjectPattern=function(e,t,n){for(var r=0,s=e.properties;r<s.length;r+=1){var i=s[r];i.type==="Property"?(i.computed&&n(i.key,t,"Expression"),n(i.value,t,"Pattern")):i.type==="RestElement"&&n(i.argument,t,"Pattern")}};R.Expression=Ar;R.ThisExpression=R.Super=R.MetaProperty=He;R.ArrayExpression=function(e,t,n){for(var r=0,s=e.elements;r<s.length;r+=1){var i=s[r];i&&n(i,t,"Expression")}};R.ObjectExpression=function(e,t,n){for(var r=0,s=e.properties;r<s.length;r+=1){var i=s[r];n(i,t)}};R.FunctionExpression=R.ArrowFunctionExpression=R.FunctionDeclaration;R.SequenceExpression=function(e,t,n){for(var r=0,s=e.expressions;r<s.length;r+=1){var i=s[r];n(i,t,"Expression")}};R.TemplateLiteral=function(e,t,n){for(var r=0,s=e.quasis;r<s.length;r+=1){var i=s[r];n(i,t)}for(var o=0,a=e.expressions;o<a.length;o+=1){var c=a[o];n(c,t,"Expression")}};R.TemplateElement=He;R.UnaryExpression=R.UpdateExpression=function(e,t,n){n(e.argument,t,"Expression")};R.BinaryExpression=R.LogicalExpression=function(e,t,n){n(e.left,t,"Expression"),n(e.right,t,"Expression")};R.AssignmentExpression=R.AssignmentPattern=function(e,t,n){n(e.left,t,"Pattern"),n(e.right,t,"Expression")};R.ConditionalExpression=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Expression"),n(e.alternate,t,"Expression")};R.NewExpression=R.CallExpression=function(e,t,n){if(n(e.callee,t,"Expression"),e.arguments)for(var r=0,s=e.arguments;r<s.length;r+=1){var i=s[r];n(i,t,"Expression")}};R.MemberExpression=function(e,t,n){n(e.object,t,"Expression"),e.computed&&n(e.property,t,"Expression")};R.ExportNamedDeclaration=R.ExportDefaultDeclaration=function(e,t,n){e.declaration&&n(e.declaration,t,e.type==="ExportNamedDeclaration"||e.declaration.id?"Statement":"Expression"),e.source&&n(e.source,t,"Expression")};R.ExportAllDeclaration=function(e,t,n){e.exported&&n(e.exported,t),n(e.source,t,"Expression")};R.ImportDeclaration=function(e,t,n){for(var r=0,s=e.specifiers;r<s.length;r+=1){var i=s[r];n(i,t)}n(e.source,t,"Expression")};R.ImportExpression=function(e,t,n){n(e.source,t,"Expression")};R.ImportSpecifier=R.ImportDefaultSpecifier=R.ImportNamespaceSpecifier=R.Identifier=R.PrivateIdentifier=R.Literal=He;R.TaggedTemplateExpression=function(e,t,n){n(e.tag,t,"Expression"),n(e.quasi,t,"Expression")};R.ClassDeclaration=R.ClassExpression=function(e,t,n){return n(e,t,"Class")};R.Class=function(e,t,n){e.id&&n(e.id,t,"Pattern"),e.superClass&&n(e.superClass,t,"Expression"),n(e.body,t)};R.ClassBody=function(e,t,n){for(var r=0,s=e.body;r<s.length;r+=1){var i=s[r];n(i,t)}};R.MethodDefinition=R.PropertyDefinition=R.Property=function(e,t,n){e.computed&&n(e.key,t,"Expression"),e.value&&n(e.value,t,"Expression")};var Ec={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function $c(e,t={}){let n={...Ec,...t},r=[],s,i=new Map,o=!1;try{let u=ke(e,{filename:n.filename,colonShorthand:!0});s=u.ast,i=u.letAnnotations,o=u.tjsModes.tjsSafeAssign}catch(u){return{diagnostics:[{severity:"error",message:u.message,line:u.loc?.line,column:u.loc?.column,rule:"parse-error"}],valid:!1}}let a=n.safeAssign!==void 0?n.safeAssign:o,c=n.strict?"error":"warning",l=[gi()];if(yi(s,{FunctionDeclaration(u,p,f){let m=gi();l.push(m);for(let d of u.params)_c(m,d,"parameter");u.id&&(l[l.length-2]||l[0]).declarations.set(u.id.name,{node:u.id,kind:"function",used:!1})},VariableDeclaration(u){let p=l[l.length-1];for(let f of u.declarations)f.id.type==="Identifier"&&p.declarations.set(f.id.name,{node:f.id,kind:u.kind,used:!1})}}),Ge(s,{Identifier(u){for(let p=l.length-1;p>=0;p--){let f=l[p].declarations.get(u.name);if(f){f.used=!0;break}}}}),n.unusedVariables)for(let u of l)for(let[p,f]of u.declarations)p.startsWith("_")||!f.used&&f.kind!=="function"&&r.push({severity:"warning",message:`'${p}' is declared but never used`,line:f.node.loc?.start?.line,column:f.node.loc?.start?.column,rule:"no-unused-vars"});if(n.unreachableCode&&Ge(s,{BlockStatement(u){let p=!1;for(let f of u.body){if(p){r.push({severity:"warning",message:"Unreachable code after return statement",line:f.loc?.start?.line,column:f.loc?.start?.column,rule:"no-unreachable"});break}f.type==="ReturnStatement"&&(p=!0)}}}),a){let u=new Set;Ge(s,{VariableDeclaration(p){if(p.kind==="let")for(let f of p.declarations){if(f.id.type!=="Identifier")continue;let m=f.id.name,d=i.has(m),y=f.init;(d||y&&!Mr(y))&&u.add(m)}}}),Ge(s,{VariableDeclaration(p){if(p.kind==="let")for(let f of p.declarations){if(f.id.type!=="Identifier")continue;let m=f.id.name;i.has(m)||(f.init?Mr(f.init)&&r.push({severity:c,message:`'let ${m}' is initialized to ${hi(f.init)} with no type annotation. Annotate (let ${m}: <example>) to record the intended type.`,line:f.loc?.start?.line,column:f.loc?.start?.column,rule:"safe-assign-let-needs-type"}):r.push({severity:c,message:`'let ${m}' has no initializer or type annotation. Add an initializer (let ${m} = ...) or annotate (let ${m}: <example>).`,line:f.loc?.start?.line,column:f.loc?.start?.column,rule:"safe-assign-let-needs-type"}))}}}),Ge(s,{AssignmentExpression(p){if(p.operator!=="="||p.left.type!=="Identifier")return;let f=p.left.name;u.has(f)&&Mr(p.right)&&r.push({severity:c,message:`Cannot assign ${hi(p.right)} to typed let '${f}'.`,line:p.loc?.start?.line,column:p.loc?.start?.column,rule:"safe-assign-no-nullish"})}})}return n.noExplicitNew&&Ge(s,{NewExpression(u){let p="class";u.callee.type==="Identifier"?p=u.callee.name:u.callee.type==="MemberExpression"&&u.callee.property.type==="Identifier"&&(p=u.callee.property.name),r.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${p}(...) instead of new ${p}(...)`,line:u.loc?.start?.line,column:u.loc?.start?.column,rule:"no-explicit-new"})}}),{diagnostics:r,valid:r.filter(u=>u.severity==="error").length===0}}function gi(){return{declarations:new Map}}function Mr(e){return e?e.type==="Identifier"&&e.name==="undefined"||e.type==="Literal"&&e.value===null||e.type==="UnaryExpression"&&e.operator==="void":!1}function hi(e){return e.type==="Identifier"?"undefined":e.type==="Literal"&&e.value===null?"null":e.type==="UnaryExpression"&&e.operator==="void"?"void <expr> (undefined)":"a nullish value"}function _c(e,t,n){t.type==="Identifier"?e.declarations.set(t.name,{node:t,kind:n,used:!1}):t.type==="AssignmentPattern"&&t.left.type==="Identifier"&&e.declarations.set(t.left.name,{node:t.left,kind:n,used:!1})}function kc(e){let t=new Array(e.length).fill(!1),n=0;for(;n<e.length;){let r=e[n],s=e[n+1];if(r==='"'||r==="'"||r==="`"){let i=r;for(n++;n<e.length;){if(e[n]==="\\"){n+=2;continue}if(e[n]===i){n++;break}n++}continue}if(r==="/"&&s==="/"){for(;n<e.length&&e[n]!==`
421
+ `;)t[n]=!0,n++;continue}if(r==="/"&&s==="*"){let i=n;for(n+=2;n<e.length-1&&!(e[n]==="*"&&e[n+1]==="/");)n++;let o=Math.min(e.length,n+2);for(let a=i;a<o;a++)t[a]=!0;n=o;continue}n++}return t}function bi(e){let t=[],n=0,r=null;for(let s=0;s<e.length;s++){let i=e[s],o=s>0?e[s-1]:"";!r&&(i==='"'||i==="'"||i==="`")?r=i:r&&i===r&&o!=="\\"&&(r=null),r||(i==="{"&&n++,i==="}"&&n--),t[s]=n}return t}function xi(e){let t=[],n=bi(e),r=kc(e),s=/\/\*#([\s\S]*?)\*\//g,i=/\bfunction\s+(\w+)\s*\(/g,o=/\bclass\s+(\w+)(?:\s+extends\s+(\w+))?\s*\{/g,a=[],c;for(;(c=s.exec(e))!==null;){if(n[c.index]!==0)continue;let u=c[1],p=u.split(`
422
+ `),f=p.filter(m=>m.trim().length>0).reduce((m,d)=>{let y=d.match(/^(\s*)/)?.[1].length||0;return Math.min(m,y)},1/0);f>0&&f<1/0&&(u=p.map(m=>m.slice(f)).join(`
423
+ `)),a.push({type:"doc",index:c.index,data:u.trim()})}for(;(c=i.exec(e))!==null;){if(r[c.index]||n[c.index]!==0)continue;let u=c[1],p=c.index+c[0].length-1,f=Rn(e,p+1);if(f===-1)continue;let m=e.slice(p+1,f),d=f+1,y="";for(;d<e.length&&/\s/.test(e[d]);)d++;if(e[d]===":"){let w=d;d++;let S=0,T=null,x=!1;for(;d<e.length;){let _=e[d],$=d>0?e[d-1]:"";if(T)_===T&&$!=="\\"&&(T=null);else if(_==='"'||_==="'"||_==="`")T=_,x=!0;else if(_==="{"){if(S===0&&x)break;S++,x=!0}else _==="("||_==="["?(S++,x=!0):_==="}"||_===")"||_==="]"?S--:/\s/.test(_)||(x=!0);d++}y=e.slice(w,d).trimEnd()}let b=`function ${u}(${m})${y}`;a.push({type:"function",index:c.index,data:{name:u,signature:b}})}for(;(c=o.exec(e))!==null;){if(n[c.index]!==0||r[c.index])continue;let u=c[1],p=c[2]||void 0,f=c.index+c[0].length,m=vc(e,f-1);if(m===-1)continue;let d=e.slice(f,m),y=Ac(d);a.push({type:"class",index:c.index,data:{name:u,extendsName:p,members:y}})}a.sort((u,p)=>u.index-p.index);for(let u of a)u.type==="doc"?t.push({type:"doc",content:u.data}):u.type==="function"?t.push({type:"function",name:u.data.name,signature:u.data.signature}):u.type==="class"&&t.push({type:"class",name:u.data.name,extendsName:u.data.extendsName,members:u.data.members});let l=t.map(u=>u.type==="doc"?u.content:u.type==="function"?`\`\`\`tjs
424
+ ${u.signature}
425
+ \`\`\``:`\`\`\`tjs
426
+ ${jc(u)}
422
427
  \`\`\``).join(`
423
428
 
424
- `);return{items:t,markdown:a}}function sc(e,t){let n=ni(e),r="";for(let s of n.items)if(s.type==="doc")r+=s.content+`
429
+ `);return{items:t,markdown:l}}function jc(e){let t=e.extendsName?`class ${e.name} extends ${e.extendsName} {`:`class ${e.name} {`;if(e.members.length===0)return`${t}
430
+ }`;let n=e.members.map(r=>` ${r}`).join(`
431
+ `);return`${t}
432
+ ${n}
433
+ }`}function vc(e,t){let n=0,r=t,s=null;for(;r<e.length;){let i=e[r],o=r>0?e[r-1]:"";if(s)i===s&&o!=="\\"&&(s=null);else if(i==='"'||i==="'"||i==="`")s=i;else if(i==="{")n++;else if(i==="}"&&(n--,n===0))return r;r++}return-1}function Ac(e){let t=[],n=bi(e),r=/(?:^|\n)\s*((?:(?:static|async|get|set)\s+)*)(constructor|#?\w+)\s*\(/g,s;for(;(s=r.exec(e))!==null;){if(n[s.index]!==0)continue;let i=s[1].trim(),o=s[2],a=s.index+s[0].length-1,c=Rn(e,a+1);if(c===-1)continue;let l=e.slice(a,c+1),u=c+1,p="";for(;u<e.length&&/\s/.test(e[u]);)u++;if(e[u]===":"){let m=u;for(;u<e.length&&e[u]!=="{";)u++;p=e.slice(m,u).trimEnd()}let f=i?`${i} `:"";t.push(`${f}${o}${l}${p}`)}return t}function Mc(e,t){let n=xi(e),r="";for(let i of n.items)if(i.type==="doc")r+=i.content+`
425
434
 
426
- `;else if(s.type==="function"){let i=t?.[s.name];if(r+=`## ${s.name}
435
+ `;else if(i.type==="function"){let o=t?.[i.name];if(r+=`## ${i.name}
427
436
 
428
437
  `,r+=`\`\`\`tjs
429
- ${s.signature}
438
+ ${i.signature}
430
439
  \`\`\`
431
440
 
432
- `,i?.params&&Object.keys(i.params).length>0){r+=`**Parameters:**
433
- `;for(let[o,a]of Object.entries(i.params)){let c=a.required?"":" *(optional)*",l=a.type?.kind||"any",u=a.example!==void 0?` (e.g. \`${JSON.stringify(a.example)}\`)`:"";r+=`- \`${o}\`: ${l}${c}${u}
441
+ `,o?.params&&Object.keys(o.params).length>0){r+=`**Parameters:**
442
+ `;for(let[a,c]of Object.entries(o.params)){let l=c.required?"":" *(optional)*",u=c.type?Ee(c.type):"any",p=c.example!==void 0?Nc(c.example):null,f=p?` (e.g. \`${p}\`)`:"";r+=`- \`${a}\`: ${u}${l}${f}
434
443
  `}r+=`
435
- `}i?.returns&&(r+=`**Returns:** ${i.returns.kind||"void"}
444
+ `}o?.returns&&(r+=`**Returns:** ${o.returns.kind||"void"}
436
445
 
437
- `)}return r.trim()||"*No documentation available*"}import{s as h,validate as Er,filter as li}from"tosijs-schema";var vn=Symbol.for("tjs.equals");function Mn(e,t){if(e!==null&&typeof e=="object"&&typeof e[vn]=="function")return e[vn](t);if(t!==null&&typeof t=="object"&&typeof t[vn]=="function")return t[vn](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(t);if(t!==null&&typeof t=="object"&&typeof t.Equals=="function")return t.Equals(e);if(e===t||e==null&&t==null)return!0;if(e==null||t===null||t===void 0||typeof e!=typeof t||typeof e!="object")return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>Mn(s,t[i]));if(Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(s=>Mn(e[s],t[s]))}var ae=class{$error=!0;message;op;cause;constructor(t,n,r){this.message=t,this.op=n,this.cause=r}toString(){return`AgentError[${this.op}]: ${this.message}`}toJSON(){return{$error:!0,message:this.message,op:this.op}}};function ic(e){return e instanceof ae||e&&e.$error===!0}var ot=new Map,oc=3600*1e3,ac=100*1024,_r="proc_";function $r(e){return typeof e=="string"&&e.startsWith(_r)}function kr(e){let t=ot.get(e);if(!t)throw new Error(`Procedure not found: ${e}`);if(Date.now()>t.expiresAt)throw ot.delete(e),new Error(`Procedure expired: ${e}`);return t.ast}function cc(){return typeof crypto<"u"&&crypto.randomUUID?_r+crypto.randomUUID():_r+Math.random().toString(36).slice(2)+Date.now().toString(36)}var ui=new Set(["__proto__","constructor","prototype"]);function ri(e){if(ui.has(e))throw new Error(`Security Error: Access to '${e}' is forbidden`)}var lc=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function uc(e){try{let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")return!0;let n=t.hostname.toLowerCase();return!!(lc.has(n)||n.endsWith(".internal")||n.endsWith(".local")||n==="169.254.169.254"||/^10\./.test(n)||/^192\.168\./.test(n)||/^172\.(1[6-9]|2\d|3[01])\./.test(n))}catch{return!0}}function fc(e){return!!(/\([^)]*[+*][^)]*\)[+*]/.test(e)||/\(([^|)]+)\|\1\)[+*]/.test(e)||/\(\.\*\)\+/.test(e)||/\(\.\+\)\+/.test(e)||/\(\[.*\]\+\)\+/.test(e))}function Ce(e){return{...e,state:Object.create(e.state)}}function pc(e,t){let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let s of r){let i=e[s],o=t[s];o!==i&&(n[s]=o)}return n}function C(e,t){if(e&&typeof e=="object"&&e.$kind==="arg")return t.args[e.path];if(e&&typeof e=="object"&&e.$expr)return Q(e,t);if(typeof e=="string"){if(e.startsWith("args.")&&!("args"in t.state))return t.args[e.replace("args.","")];if(e.includes(".")){let n=e.split(".");for(let s of n)if(ui.has(s))throw new Error(`Security Error: Access to '${s}' is forbidden`);let r=t.state[n[0]];if(r!==void 0){for(let s=1;s<n.length;s++)r=r?.[n[s]];return r}}return e in t.state?t.state[e]:e}if(e&&typeof e=="object"&&!Array.isArray(e)&&e.constructor===Object){let n={};for(let r of Object.keys(e))n[r]=C(e[r],t);return n}return Array.isArray(e)?e.map(n=>C(n,t)):e}function Ve(e,t,n){return new Proxy(t,{get(r,s){if(s in r)return r[s];let i=n?.[s];throw i?new Error(`${e}.${s} is not available. ${i}`):new Error(`${e}.${s} is not supported in AsyncJS. Check docs for available ${e} methods.`)}})}function it(e){if(e===null)return{type:"null"};if(e===void 0)return{};if(typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string")return e;if(typeof e=="object"&&e!==null&&"schema"in e&&typeof e.schema=="object")return e.schema;let t=typeof e;if(t==="string")return{type:"string"};if(t==="number")return Number.isInteger(e)?{type:"integer"}:{type:"number"};if(t==="boolean")return{type:"boolean"};if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:it(e[0])};if(t==="object"){let n={},r=[];for(let[s,i]of Object.entries(e))n[s]=it(i),r.push(s);return{type:"object",properties:n,required:r}}return{}}var ke={Math:Ve("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 e=new Uint32Array(1);return crypto.getRandomValues(e),e[0]/4294967296}return Math.random()}}),JSON:Ve("JSON",{parse:e=>JSON.parse(e),stringify:(e,t,n)=>JSON.stringify(e,t,n)}),console:Ve("console",{log:(...e)=>{},warn:(...e)=>{},error:(...e)=>{},info:(...e)=>{}},{table:"Use console.log with JSON.stringify for structured data.",dir:"Use console.log instead.",trace:"Stack traces are not available in AsyncJS."}),Array:Ve("Array",{isArray:e=>Array.isArray(e),from:(e,t,n)=>Array.from(e,t,n),of:(...e)=>Array.of(...e)},{prototype:"Prototype access is not allowed."}),Object:Ve("Object",{keys:e=>Object.keys(e),values:e=>Object.values(e),entries:e=>Object.entries(e),fromEntries:e=>Object.fromEntries(e),assign:(e,...t)=>Object.assign({},e,...t),hasOwn:(e,t)=>Object.hasOwn(e,t)},{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:Ve("String",{fromCharCode:(...e)=>String.fromCharCode(...e),fromCodePoint:(...e)=>String.fromCodePoint(...e)}),Number:Ve("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:(e,t)=>{let n=it(t),r=li(e,n);if(r instanceof Error)throw r;return r},Schema:{...h,response:(e,t)=>{let n=t?.schema!=null?t.schema:it(t);return{type:"json_schema",json_schema:{name:e,strict:!0,schema:n}}},fromExample:e=>it(e),isValid:(e,t)=>t?.schema!=null?Er(e,t):Er(e,it(t))},Set:(e=[])=>{let t=[...new globalThis.Set(e)];return{add(n){return t.includes(n)||t.push(n),this},remove(n){let r=t.indexOf(n);return r!==-1&&t.splice(r,1),this},clear(){return t.length=0,this},has(n){return t.includes(n)},get size(){return t.length},toArray(){return[...t]},union(n){let r=n?.toArray?.()??n??[];return ke.Set([...t,...r])},intersection(n){let r=n?.toArray?.()??n??[];return ke.Set(t.filter(s=>r.includes(s)))},diff(n){let r=n?.toArray?.()??n??[];return ke.Set(t.filter(s=>!r.includes(s)))},forEach(n){t.forEach(n)},map(n){return ke.Set(t.map(n))},filter(n){return ke.Set(t.filter(n))},toJSON(){return[...t]}}},Date:(()=>{let e=n=>({get value(){return n.toISOString()},get timestamp(){return n.getTime()},get year(){return n.getFullYear()},get month(){return n.getMonth()+1},get day(){return n.getDate()},get hours(){return n.getHours()},get minutes(){return n.getMinutes()},get seconds(){return n.getSeconds()},get dayOfWeek(){return n.getDay()},add({years:r=0,months:s=0,days:i=0,hours:o=0,minutes:a=0,seconds:c=0,ms:l=0}={}){let u=new globalThis.Date(n.getTime());return r&&u.setFullYear(u.getFullYear()+r),s&&u.setMonth(u.getMonth()+s),i&&u.setDate(u.getDate()+i),o&&u.setHours(u.getHours()+o),a&&u.setMinutes(u.getMinutes()+a),c&&u.setSeconds(u.getSeconds()+c),l&&u.setMilliseconds(u.getMilliseconds()+l),e(u)},diff(r,s="ms"){let i=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime(),o=n.getTime()-i;switch(s){case"seconds":return o/1e3;case"minutes":return o/6e4;case"hours":return o/36e5;case"days":return o/864e5;default:return o}},format(r="ISO"){return r==="ISO"?n.toISOString():r==="date"?n.toISOString().split("T")[0]:r==="time"?n.toISOString().split("T")[1].split(".")[0]:r.replace("YYYY",String(n.getFullYear())).replace("MM",String(n.getMonth()+1).padStart(2,"0")).replace("DD",String(n.getDate()).padStart(2,"0")).replace("HH",String(n.getHours()).padStart(2,"0")).replace("mm",String(n.getMinutes()).padStart(2,"0")).replace("ss",String(n.getSeconds()).padStart(2,"0"))},isBefore(r){let s=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime();return n.getTime()<s},isAfter(r){let s=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime();return n.getTime()>s},toString(){return n.toISOString()},toJSON(){return n.toISOString()}}),t=n=>{let r=n!==void 0?new globalThis.Date(n):new globalThis.Date;if(isNaN(r.getTime()))throw new Error(`Invalid date: ${n}`);return e(r)};return t.now=()=>globalThis.Date.now(),t.parse=n=>e(new globalThis.Date(n)),t})()},An={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."},mc=.01,si=1e-4,ii=.001,dc=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 Q(e,t){if(e==null||typeof e!="object"||!("$expr"in e))return e;if(t.fuel&&(t.fuel.current-=mc,t.fuel.current<=0))throw new Error("Out of Fuel");switch(e.$expr){case"literal":return e.value;case"ident":{if(e.name in t.state)return t.state[e.name];if(e.name in t.args)return t.args[e.name];if(e.name in ke)return ke[e.name];if(e.name in An)throw new Error(An[e.name]);return}case"member":{let n=Q(e.object,t);if(e.optional&&n==null)return;let r=e.property;return ri(r),n?.[r]}case"binary":{let n=Q(e.left,t),r=Q(e.right,t);switch(e.op){case"+":{let s=n+r;if(typeof s=="string"&&t.fuel&&(t.fuel.current-=s.length*si,t.fuel.current<=0)){t.error=new ae("Out of Fuel","expr.concat");return}return s}case"-":return n-r;case"*":return n*r;case"/":return n/r;case"%":return n%r;case"**":return n**r;case">":return n>r;case"<":return n<r;case">=":return n>=r;case"<=":return n<=r;case"==":return Mn(n,r);case"!=":return!Mn(n,r);case"===":return n===r;case"!==":return n!==r;default:throw new Error(`Unknown binary operator: ${e.op}`)}}case"unary":{let n=Q(e.argument,t);switch(e.op){case"!":return!n;case"-":return-n;case"+":return+n;case"typeof":return typeof n;default:throw new Error(`Unknown unary operator: ${e.op}`)}}case"logical":{let n=Q(e.left,t);return e.op==="&&"?n&&Q(e.right,t):e.op==="??"?n??Q(e.right,t):n||Q(e.right,t)}case"conditional":{let n=Q(e.test,t);return Q(n?e.consequent:e.alternate,t)}case"array":return e.elements.map(n=>Q(n,t));case"object":{let n={};for(let r of e.properties)n[r.key]=Q(r.value,t);return n}case"call":{if(e.callee==="Error"){let r=e.arguments.map(i=>Q(i,t)),s=typeof r[0]=="string"?r[0]:"Error";t.error=new ae(s,"Error");return}if(e.callee in ke){let r=ke[e.callee];if(typeof r=="function"){let s=e.arguments.map(i=>Q(i,t));return r(...s)}}throw t.resolver(e.callee)?new Error(`Atom calls in expressions not yet supported: ${e.callee}`):e.callee in An?new Error(An[e.callee]):new Error(`Unknown function: ${e.callee}`)}case"methodCall":{let n=Q(e.object,t);if(e.optional&&n==null)return;let r=e.method;if(ri(r),n==null)throw new Error(`Cannot call method '${r}' on ${n}`);let s=n[r];if(typeof s!="function")throw new Error(`'${r}' is not a function`);let i=e.arguments.map(a=>Q(a,t)),o=s.apply(n,i);if(t.fuel&&dc.has(r)){let a=0;if(typeof o=="string"?a=o.length*si:Array.isArray(o)?a=o.length*ii:typeof o=="object"&&o!==null&&(a=Object.keys(o).length*ii),t.fuel.current-=a,t.fuel.current<=0){t.error=new ae("Out of Fuel",`expr.${r}`);return}}return o}default:throw new Error(`Unknown expression type: ${e.$expr}`)}}function D(e,t,n,r,s={}){let{docs:i="",timeoutMs:o=1e3,cost:a=1}=typeof s=="string"?{docs:s}:s;return{op:e,inputSchema:t,outputSchema:n,exec:async(l,u)=>{let{op:p,result:f,...m}=l;if(u.error)return;let d=u.trace?{...u.state}:null,y=u.fuel.current,b,w;try{let E=u.costOverrides?.[e],T=E!==void 0?E:a,x=typeof T=="function"?T(m,u):T;if((u.fuel.current-=x)<=0){u.error=new ae("Out of Fuel",e);return}let $,_=async()=>r(l,u);if(b=o>0?await Promise.race([_(),new Promise((j,A)=>{$=setTimeout(()=>A(new Error(`Atom '${e}' timed out`)),o)})]).finally(()=>clearTimeout($)):await _(),l.result){if(u.consts.has(l.result))throw new Error(`Cannot reassign const variable '${l.result}'`);if(b!==void 0&&n&&!Er(b,n)){u.error=new ae(`Output validation failed for '${e}'`,e);return}u.state[l.result]=b,l.resultConst&&u.consts.add(l.result)}}catch(E){w=E.message||String(E),u.error=new ae(w,e,E)}finally{if(u.trace&&d){let E=pc(d,u.state);u.trace.push({op:e,input:m,stateDiff:E,result:b,error:w,fuelBefore:y,fuelAfter:u.fuel.current,timestamp:new Date().toISOString()})}}},docs:i,timeoutMs:o,cost:a,create:l=>({op:e,...l})}}var de=D("seq",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{for(let n of e){if(t.output!==void 0||t.error)return;let r=t.resolver(n.op);if(!r)throw new Error(`Unknown Atom: ${n.op}`);await r.exec(n,t)}},{docs:"Sequence",timeoutMs:0,cost:.1}),yc=D("if",h.object({condition:h.any,then:h.array(h.any),else:h.array(h.any).optional}),void 0,async(e,t)=>{Q(e.condition,t)?await de.exec({op:"seq",steps:e.then},t):e.else&&await de.exec({op:"seq",steps:e.else},t)},{docs:"If/Else",timeoutMs:0,cost:.1}),gc=D("while",h.object({condition:h.any,body:h.array(h.any)}),void 0,async(e,t)=>{for(;Q(e.condition,t);){if(t.signal?.aborted)throw new Error("Execution aborted");if((t.fuel.current-=.1)<=0)throw new Error("Out of Fuel");if(await de.exec({op:"seq",steps:e.body},t),t.output!==void 0)return}},{docs:"While Loop",timeoutMs:0,cost:.1}),hc=D("return",void 0,h.any,async(e,t)=>{if(t.error)return t.output=t.error,t.error;if("value"in e){let r=C(e.value,t);if(r!=null&&!ic(r)&&(typeof r!="object"||Array.isArray(r))){let s=new ae(`Agent must return an object, got ${Array.isArray(r)?"array":typeof r}`,"return");return t.error=s,t.output=s,s}return t.output=r,r}let n={};if(e.schema?.properties){for(let r of Object.keys(e.schema.properties))n[r]=t.state[r];if(e.filter!==!1){let r=li(n,e.schema);r instanceof Error||(n=r)}}return t.output=n,n},{docs:"Return",cost:.1}),bc=D("try",h.object({try:h.array(h.any),catch:h.array(h.any).optional,catchParam:h.string.optional}),void 0,async(e,t)=>{if(await de.exec({op:"seq",steps:e.try},t),t.error&&e.catch){let n=e.catchParam||"error";t.state[n]=t.error.message,t.state.errorOp=t.error.op,t.error=void 0,await de.exec({op:"seq",steps:e.catch},t)}},{docs:"Try/Catch",timeoutMs:0,cost:.1}),xc=D("Error",h.object({args:h.array(h.any).optional}),void 0,async(e,t)=>{let n=e.args?.[0]??"Error";t.error=new ae(String(n),"Error")},{docs:"Trigger error flow",cost:.1}),Tc=D("varSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{if(n.consts.has(e))throw new Error(`Cannot reassign const variable '${e}'`);n.state[e]=C(t,n)},{docs:"Set Variable",cost:.1}),Sc=D("constSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{if(n.consts.has(e))throw new Error(`Cannot reassign const variable '${e}'`);if(e in n.state)throw new Error(`Cannot redeclare variable '${e}' as const`);n.state[e]=C(t,n),n.consts.add(e)},{docs:"Set Const Variable (immutable)",cost:.1}),wc=D("varGet",h.object({key:h.string}),h.any,async({key:e},t)=>C(e,t),{docs:"Get Variable",cost:.1}),Ec=D("varsImport",h.object({keys:h.union([h.array(h.string),h.record(h.string)])}),void 0,async({keys:e},t)=>{if(Array.isArray(e))for(let n of e)t.state[n]=C({$kind:"arg",path:n},t);else for(let[n,r]of Object.entries(e))t.state[n]=C({$kind:"arg",path:r},t)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:.2}),_c=D("varsLet",h.record(h.any),void 0,async(e,t)=>{for(let n of Object.keys(e))n==="op"||n==="result"||(t.state[n]=C(e[n],t))},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:.1}),$c=D("varsExport",h.object({keys:h.union([h.array(h.string),h.record(h.string)])}),h.record(h.any),async({keys:e},t)=>{let n={};if(Array.isArray(e))for(let r of e)n[r]=C(r,t);else for(let[r,s]of Object.entries(e))n[r]=C(s,t);return n},{docs:"Export variables from the current scope, with optional renaming.",cost:.2}),kc=D("scope",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{let n=Ce(t);await de.exec({op:"seq",steps:e},n),n.output!==void 0&&(t.output=n.output)},{docs:"Create new scope",timeoutMs:0,cost:.1}),jc=D("map",h.object({items:h.array(h.any),as:h.string,steps:h.array(h.any)}),h.array(h.any),async({items:e,as:t,steps:n},r)=>{let s=[],i=C(e,r);if(!Array.isArray(i))throw new Error("map: items is not an array");for(let o of i){if(r.signal?.aborted)throw new Error("Execution aborted");let a=Ce(r);a.state[t]=o,await de.exec({op:"seq",steps:n},a),s.push(a.state.result??null)}return s},{docs:"Map Array",timeoutMs:0,cost:1}),vc=D("filter",h.object({items:h.array(h.any),as:h.string,condition:h.any}),h.array(h.any),async({items:e,as:t,condition:n},r)=>{let s=[],i=C(e,r);if(!Array.isArray(i))throw new Error("filter: items is not an array");for(let o of i){if(r.signal?.aborted)throw new Error("Execution aborted");let a=Ce(r);a.state[t]=o,Q(n,a)&&s.push(o)}return s},{docs:"Filter Array",timeoutMs:0,cost:1}),Ac=D("reduce",h.object({items:h.array(h.any),as:h.string,accumulator:h.string,initial:h.any,steps:h.array(h.any)}),h.any,async({items:e,as:t,accumulator:n,initial:r,steps:s},i)=>{let o=C(e,i),a=C(r,i);if(!Array.isArray(o))throw new Error("reduce: items is not an array");let c=a;for(let l of o){if(i.signal?.aborted)throw new Error("Execution aborted");let u=Ce(i);u.state[t]=l,u.state[n]=c,await de.exec({op:"seq",steps:s},u),c=u.state.result??c}return c},{docs:"Reduce Array",timeoutMs:0,cost:1}),Mc=D("find",h.object({items:h.array(h.any),as:h.string,condition:h.any}),h.any,async({items:e,as:t,condition:n},r)=>{let s=C(e,r);if(!Array.isArray(s))throw new Error("find: items is not an array");for(let i of s){if(r.signal?.aborted)throw new Error("Execution aborted");let o=Ce(r);if(o.state[t]=i,Q(n,o))return i}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),Cc=D("push",h.object({list:h.array(h.any),item:h.any}),h.array(h.any),async({list:e,item:t},n)=>{let r=C(e,n),s=C(t,n);return Array.isArray(r)&&r.push(s),r},{docs:"Push to Array",cost:1}),Rc=D("len",h.object({list:h.any}),h.number,async({list:e},t)=>{let n=C(e,t);return Array.isArray(n)||typeof n=="string"?n.length:0},{docs:"Length",cost:1}),Nc=D("split",h.object({str:h.string,sep:h.string}),h.array(h.string),async({str:e,sep:t},n)=>C(e,n).split(C(t,n)),{docs:"Split String",cost:1}),Pc=D("join",h.object({list:h.array(h.string),sep:h.string}),h.string,async({list:e,sep:t},n)=>C(e,n).join(C(t,n)),{docs:"Join String",cost:1}),Ic=D("template",h.object({tmpl:h.string,vars:h.record(h.any)}),h.string,async({tmpl:e,vars:t},n)=>C(e,n).replace(/\{\{(\w+)\}\}/g,(s,i)=>String(C(t[i],n)??"")),{docs:"String Template",cost:1}),Dc=D("regexMatch",h.object({pattern:h.string,value:h.any}),h.boolean,async({pattern:e,value:t},n)=>{if(fc(e))throw new Error(`Suspicious regex pattern rejected (potential ReDoS): ${e}`);let r=C(t,n);return new RegExp(e).test(r)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),Oc=D("pick",h.object({obj:h.record(h.any),keys:h.array(h.string)}),h.record(h.any),async({obj:e,keys:t},n)=>{let r=C(e,n),s=C(t,n),i={};return r&&Array.isArray(s)&&s.forEach(o=>i[o]=r[o]),i},{docs:"Pick Keys",cost:1}),Lc=D("omit",h.object({obj:h.record(h.any),keys:h.array(h.string)}),h.record(h.any),async({obj:e,keys:t},n)=>{let r=C(e,n),s=new Set(C(t,n)),i={};return r&&Object.keys(r).forEach(o=>{s.has(o)||(i[o]=r[o])}),i},{docs:"Omit Keys",cost:1}),Bc=D("merge",h.object({a:h.record(h.any),b:h.record(h.any)}),h.record(h.any),async({a:e,b:t},n)=>({...C(e,n),...C(t,n)}),{docs:"Merge Objects",cost:1}),Fc=D("keys",h.object({obj:h.record(h.any)}),h.array(h.string),async({obj:e},t)=>Object.keys(C(e,t)??{}),{docs:"Object Keys",cost:1}),oi=10,ai="X-Agent-Depth";function Uc(e,t){try{let r=new URL(e).hostname.toLowerCase();for(let s of t){let i=s.toLowerCase();if(i.startsWith("*.")){let o=i.slice(1);if(r.endsWith(o)||r===i.slice(2))return!0}else if(r===i)return!0}return!1}catch{return!1}}var qc=D("httpFetch",h.object({url:h.string,method:h.string.optional,headers:h.record(h.string).optional,body:h.any.optional,responseType:h.string.optional}),h.any,async(e,t)=>{let n=C(e.url,t),r=C(e.method,t),s=C(e.headers,t)||{},i=C(e.body,t),o=C(e.responseType,t),a=t.context?.requestDepth??0;if(a>=oi)throw new Error(`Agent request depth exceeded (max ${oi}). This prevents recursive agent loops.`);if(t.capabilities.fetch)return t.capabilities.fetch(n,{method:r,headers:{...s,[ai]:String(a+1)},body:i,signal:t.signal,responseType:o});let c=t.context?.allowedFetchDomains;if(c){if(!Uc(n,c))throw new Error(`Fetch blocked: domain not in allowlist. Allowed: ${c.join(", ")}`)}else{if(uc(n))throw new Error("Blocked URL: private/internal addresses not allowed in default fetch");try{let u=new URL(n).hostname.toLowerCase();if(u!=="localhost"&&u!=="127.0.0.1"&&u!=="[::1]")throw new Error("Fetch blocked: no allowedFetchDomains configured. Set ctx.context.allowedFetchDomains or provide a custom fetch capability.")}catch(l){throw l.message.includes("allowedFetchDomains")?l:new Error(`Invalid URL: ${n}`)}}if(typeof globalThis.fetch=="function"){let l=await globalThis.fetch(n,{method:r,headers:{...s,[ai]:String(a+1)},body:i?JSON.stringify(i):void 0,signal:t.signal});if(o==="dataUrl"){let p=await l.arrayBuffer(),f=new Uint8Array(p),m="";for(let b=0;b<f.length;b++)m+=String.fromCharCode(f[b]);let d=btoa(m);return`data:${l.headers.get("content-type")||"application/octet-stream"};base64,${d}`}let u=l.headers.get("content-type");return o==="json"||u&&u.includes("application/json")?l.json():l.text()}throw new Error("Capability 'fetch' missing and no global fetch available")},{docs:"HTTP Fetch",timeoutMs:3e4,cost:5}),Jc=D("storeGet",h.object({key:h.string}),h.any,async({key:e},t)=>{let n=C(e,t);return t.capabilities.store?.get(n)},{docs:"Store Get",cost:5}),Wc=D("storeSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{let r=C(e,n),s=C(t,n);return n.capabilities.store?.set(r,s)},{docs:"Store Set",cost:5}),Vc=D("storeQuery",h.object({query:h.any}),h.array(h.any),async({query:e},t)=>t.capabilities.store?.query?.(C(e,t))??[],{docs:"Store Query",cost:5}),Kc=D("storeVectorSearch",h.object({collection:h.string.optional,vector:h.array(h.number),k:h.number.optional}),h.array(h.any),async({collection:e,vector:t,k:n},r)=>r.capabilities.store?.vectorSearch?.(C(e,r),C(t,r),C(n,r))??[],{docs:"Vector Search",cost:(e,t)=>5+(C(e.k,t)??5)}),zc=D("llmPredict",h.object({prompt:h.string,options:h.any.optional}),h.string,async({prompt:e,options:t},n)=>{if(!n.capabilities.llm?.predict)throw new Error("Capability 'llm.predict' missing");return n.capabilities.llm.predict(C(e,n),C(t,n))},{docs:"LLM Predict",timeoutMs:12e4,cost:100}),Gc=D("agentRun",h.object({agentId:h.any,input:h.any}),h.any,async({agentId:e,input:t},n)=>{let r=C(e,n),s=C(t,n),i=s;if(s&&typeof s=="object"&&!Array.isArray(s)){i={};for(let a in s)i[a]=C(s[a],n)}if($r(r)){let a=kr(r),c={...n,args:i,state:{},consts:new Set,output:void 0,error:void 0},l=n.resolver("seq");if(!l)throw new Error("seq atom not found");if(await l.exec(a,c),c.error)throw new Error(c.error.message||"Sub-agent failed");return c.output}if(r&&typeof r=="object"&&"op"in r){let a={...n,args:i,state:{},consts:new Set,output:void 0,error:void 0},c=n.resolver("seq");if(!c)throw new Error("seq atom not found");if(await c.exec(r,a),a.error)throw new Error(a.error.message||"Sub-agent failed");return a.output}if(!n.capabilities.agent?.run)throw new Error("Capability 'agent.run' missing");let o=await n.capabilities.agent.run(r,i);if(o&&typeof o=="object"&&"fuelUsed"in o&&typeof o.fuelUsed=="number"){if(o.error)throw new Error(o.error.message||"Sub-agent failed");return o.result}return o},{docs:"Run Sub-Agent (accepts procedure token, AST, or agent ID)",cost:1}),Hc=D("transpileCode",h.object({code:h.string}),h.any,async({code:e},t)=>{if(!t.capabilities.code?.transpile)throw new Error("Capability 'code.transpile' missing. Enable code transpilation by providing the code capability.");let n=C(e,t);try{return t.capabilities.code.transpile(n)}catch(r){throw new Error(`Code transpilation failed: ${r.message}`)}},{docs:"Transpile AsyncJS code to AST",cost:1}),ci=10,Zc=D("runCode",h.object({code:h.string,args:h.record(h.any).optional}),h.any,async({code:e,args:t},n)=>{let r=n.runCodeDepth??0;if(r>=ci)throw new Error(`runCode recursion limit exceeded (max ${ci}). This prevents infinite loops from dynamically generated code calling runCode.`);if(!n.capabilities.code?.transpile)throw new Error("Capability 'code.transpile' missing. Enable dynamic code execution by providing the code capability.");let s=C(e,n),i=t?C(t,n):{},o;try{o=n.capabilities.code.transpile(s)}catch(c){throw new Error(`Code transpilation failed: ${c.message}`)}if(o.op!=="seq")throw new Error("Transpiled code must be a seq node");let a=Ce(n);if(a.args=i,a.output=void 0,a.runCodeDepth=r+1,await de.exec(o,a),a.error){n.error=a.error;return}return a.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),Yc=D("jsonParse",h.object({str:h.string}),h.any,async({str:e},t)=>JSON.parse(C(e,t)),{docs:"Parse JSON",cost:1}),Xc=D("jsonStringify",h.object({value:h.any}),h.string,async({value:e},t)=>JSON.stringify(C(e,t)),{docs:"Stringify JSON",cost:1}),Qc=D("xmlParse",h.object({str:h.string}),h.any,async({str:e},t)=>{if(!t.capabilities.xml?.parse)throw new Error("Capability 'xml.parse' missing");return t.capabilities.xml.parse(C(e,t))},{docs:"Parse XML",cost:1}),el=D("memoize",h.object({key:h.string.optional,steps:h.array(h.any)}),h.any,async({key:e,steps:t},n)=>{n.memo||(n.memo=new Map);let r=C(e,n)??await jr.exec({value:t,algorithm:"SHA-256"},n);if(n.memo.has(r))return n.memo.get(r);let s=Ce(n);await de.exec({op:"seq",steps:t},s);let i=s.output??s.state.result;return n.memo.set(r,i),i},{docs:"Memoize steps result in memory",cost:1}),tl=D("cache",h.object({key:h.string.optional,steps:h.array(h.any),ttlMs:h.number.optional}),h.any,async({key:e,steps:t,ttlMs:n},r)=>{if(!r.capabilities.store)throw new Error("Capability 'store' missing for caching");let i=`cache:${C(e,r)??await jr.exec({value:t,algorithm:"SHA-256"},r)}`,o=await r.capabilities.store.get(i);if(o)if(typeof o=="object"&&o._exp){if(Date.now()<o._exp)return o.val}else return o;let a=Ce(r);await de.exec({op:"seq",steps:t},a);let c=a.output??a.state.result,l=Date.now()+(n??24*3600*1e3);if((r.fuel.current-=5)<=0)throw new Error("Out of Fuel");return await r.capabilities.store.set(i,{val:c,_exp:l}),c},{docs:"Cache steps result in store with TTL",cost:5}),nl=D("random",h.object({min:h.number.optional,max:h.number.optional,format:h.string.optional,length:h.number.optional}),h.any,async({min:e,max:t,format:n,length:r},s)=>{let i=C(n,s)??"float",o=C(r,s)??10,a=C(e,s)??0,c=C(t,s)??1;if(i==="base36"){let f="0123456789abcdefghijklmnopqrstuvwxyz",m="";if(typeof crypto<"u"&&crypto.getRandomValues){let d=new Uint8Array(o);crypto.getRandomValues(d);for(let y=0;y<o;y++)m+=f[d[y]%36]}else for(let d=0;d<o;d++)m+=f.charAt(Math.floor(Math.random()*36));return m}let l;if(typeof crypto<"u"&&crypto.getRandomValues){let f=new Uint32Array(1);crypto.getRandomValues(f),l=f[0]/4294967296}else l=Math.random();let u=c-a,p=l*u+a;return i==="integer"?Math.floor(p):p},{docs:"Generate Random",cost:1}),rl=D("uuid",void 0,h.string,async()=>{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();if(typeof crypto<"u"&&crypto.getRandomValues){let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})},{docs:"Generate UUID",cost:1}),jr=D("hash",h.object({value:h.any,algorithm:h.string.optional}),h.string,async({value:e,algorithm:t},n)=>{let r=typeof e=="string"?e:JSON.stringify(C(e,n)),s=C(t,n)||"SHA-256";if(typeof crypto<"u"&&crypto.subtle){let a=new TextEncoder().encode(r),c=await crypto.subtle.digest(s,a);return Array.from(new Uint8Array(c)).map(u=>u.toString(16).padStart(2,"0")).join("")}let i=0;for(let o=0;o<r.length;o++){let a=r.charCodeAt(o);i=(i<<5)-i+a,i|=0}return String(i)},{docs:"Hash a value",cost:1}),sl=D("consoleLog",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=C(e,t);t.trace&&t.trace.push({op:"console.log",input:{message:n},stateDiff:{},result:n,fuelBefore:t.fuel.current,fuelAfter:t.fuel.current,timestamp:new Date().toISOString()})},{docs:"Log to trace",cost:.1}),il=D("consoleWarn",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=C(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.warnings||(t.warnings=[]),t.warnings.push(r),t.trace&&t.trace.push({op:"console.warn",input:{message:n},stateDiff:{},result:n,fuelBefore:t.fuel.current,fuelAfter:t.fuel.current,timestamp:new Date().toISOString()})},{docs:"Add warning",cost:.1}),ol=D("consoleError",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=C(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.error=new ae(r,"console.error")},{docs:"Emit error and stop",cost:.1}),al=D("storeProcedure",h.object({ast:h.any,ttl:h.number.optional,maxSize:h.number.optional}),h.string,async({ast:e,ttl:t,maxSize:n},r)=>{let s=C(e,r),i=t?C(t,r):oc,o=n?C(n,r):ac;if(!s||typeof s!="object"||!s.op)throw new Error('Invalid AST: must be an object with an "op" property');let a=JSON.stringify(s);if(a.length>o)throw new Error(`AST too large: ${a.length} bytes exceeds limit of ${o} bytes. Consider reducing AST size or using a shorter TTL.`);let c=cc(),l=Date.now();return ot.set(c,{ast:s,createdAt:l,expiresAt:l+i}),c},{docs:"Store an AST and return a token for later execution",cost:1}),cl=D("releaseProcedure",h.object({token:h.string}),h.boolean,async({token:e},t)=>{let n=C(e,t);return ot.delete(n)},{docs:"Release a stored procedure by token",cost:.1}),ll=D("clearExpiredProcedures",void 0,h.number,async()=>{let e=Date.now(),t=0;for(let[n,r]of ot)e>r.expiresAt&&(ot.delete(n),t++);return t},{docs:"Clear all expired procedures and return count",cost:.5}),Cn={seq:de,if:yc,while:gc,return:hc,try:bc,Error:xc,varSet:Tc,constSet:Sc,varGet:wc,varsImport:Ec,varsLet:_c,varsExport:$c,scope:kc,map:jc,filter:vc,reduce:Ac,find:Mc,push:Cc,len:Rc,split:Nc,join:Pc,template:Ic,regexMatch:Dc,pick:Oc,omit:Lc,merge:Bc,keys:Fc,httpFetch:qc,storeGet:Jc,storeSet:Wc,storeQuery:Vc,storeVectorSearch:Kc,llmPredict:zc,agentRun:Gc,transpileCode:Hc,runCode:Zc,jsonParse:Yc,jsonStringify:Xc,xmlParse:Qc,memoize:el,cache:tl,random:nl,uuid:rl,hash:jr,consoleLog:sl,consoleWarn:il,consoleError:ol,storeProcedure:al,releaseProcedure:cl,clearExpiredProcedures:ll};var ul=new Set(["true","false","null","undefined","and","or","not"]);function fl(e,t){let n=e.replace(/"[^"]*"/g,'""').replace(/'[^']*'/g,"''"),r=[],s=/(?<![.])\b([a-zA-Z_][a-zA-Z0-9_]*)\b/g,i;for(;(i=s.exec(n))!==null;)r.push(i[1]);let a=[...new Set(r)].filter(c=>!ul.has(c)&&!(c in t)&&!new RegExp(`\\b${c}\\s*\\(`).test(n));a.length>0&&console.warn(`[Agent99 Builder] Condition "${e}" references variables not in vars mapping: ${a.join(", ")}. Add them to vars or use AsyncJS syntax (ajs\`...\`) which handles this automatically.`)}function Rn(e,t){fl(e,t);let n=pl(e),r=yi(n,0,t);if(r.pos<n.length){let s=n.slice(r.pos).join(" ");throw new Error(`Unsupported condition syntax near '${s}' in: ${e}
438
- Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return r.node}function pl(e){let t=[],n=0;for(;n<e.length;){for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)break;if(e[n]==='"'||e[n]==="'"){let r=e[n++],s="";for(;n<e.length&&e[n]!==r;)e[n]==="\\"&&n+1<e.length&&n++,s+=e[n++];n++,t.push(JSON.stringify(s));continue}if(e.slice(n,n+2).match(/^(&&|\|\||==|!=|>=|<=)$/)){t.push(e.slice(n,n+2)),n+=2;continue}if("+-*/%><!().?:[]".includes(e[n])){t.push(e[n]),n++;continue}if(/\d/.test(e[n])){let r="";for(;n<e.length&&/[\d.]/.test(e[n]);)r+=e[n++];t.push(r);continue}if(/[a-zA-Z_]/.test(e[n])){let r="";for(;n<e.length&&/[a-zA-Z0-9_]/.test(e[n]);)r+=e[n++];t.push(r);continue}n++}return t}function yi(e,t,n){return ml(e,t,n)}function ml(e,t,n){let{node:r,pos:s}=fi(e,t,n);for(;e[s]==="||";){s++;let{node:i,pos:o}=fi(e,s,n);r={$expr:"logical",op:"||",left:r,right:i},s=o}return{node:r,pos:s}}function fi(e,t,n){let{node:r,pos:s}=pi(e,t,n);for(;e[s]==="&&";){s++;let{node:i,pos:o}=pi(e,s,n);r={$expr:"logical",op:"&&",left:r,right:i},s=o}return{node:r,pos:s}}function pi(e,t,n){let{node:r,pos:s}=mi(e,t,n),i=["==","!=",">","<",">=","<="];for(;i.includes(e[s]);){let o=e[s++],{node:a,pos:c}=mi(e,s,n);r={$expr:"binary",op:o,left:r,right:a},s=c}return{node:r,pos:s}}function mi(e,t,n){let{node:r,pos:s}=di(e,t,n);for(;e[s]==="+"||e[s]==="-";){let i=e[s++],{node:o,pos:a}=di(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function di(e,t,n){let{node:r,pos:s}=vr(e,t,n);for(;e[s]==="*"||e[s]==="/"||e[s]==="%";){let i=e[s++],{node:o,pos:a}=vr(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function vr(e,t,n){if(e[t]==="!"||e[t]==="-"){let r=e[t++],{node:s,pos:i}=vr(e,t,n);return{node:{$expr:"unary",op:r,argument:s},pos:i}}return dl(e,t,n)}function dl(e,t,n){let r=e[t];if(r==="("){let{node:s,pos:i}=yi(e,t+1,n);return{node:s,pos:i+1}}if(r&&r.startsWith('"'))return{node:{$expr:"literal",value:JSON.parse(r)},pos:t+1};if(r&&/^\d/.test(r))return{node:{$expr:"literal",value:parseFloat(r)},pos:t+1};if(r==="true")return{node:{$expr:"literal",value:!0},pos:t+1};if(r==="false")return{node:{$expr:"literal",value:!1},pos:t+1};if(r==="null")return{node:{$expr:"literal",value:null},pos:t+1};if(r&&/^[a-zA-Z_]/.test(r)){let s={$expr:"ident",name:r},i=t+1;for(;e[i]===".";){i++;let o=e[i++];s={$expr:"member",object:s,property:o}}return{node:s,pos:i}}return{node:{$expr:"literal",value:null},pos:t+1}}var Ke=class e{steps=[];atoms;proxy;constructor(t){return this.atoms=t,this.proxy=new Proxy(this,{get:(n,r,s)=>{if(r in n)return n[r];if(typeof r=="string"&&r in n.atoms)return i=>{let o=n.atoms[r];return n.add(o.create(i)),s}}}),this.proxy}add(t){return this.steps.push(t),this.proxy}as(t){if(this.steps.length===0)throw new Error("No step to capture");let n=this.steps[this.steps.length-1];return n.result=t,this.proxy}step(t){return this.add(t)}return(t){let n=this.atoms.return;if(!n)throw new Error("Atom 'return' not found");let r=t.schema??t;return this.add(n.create({schema:r}))}toJSON(){return{op:"seq",steps:[...this.steps]}}varsImport(t){return this.add(this.atoms.varsImport.create({keys:t}))}varsExport(t){return this.add(this.atoms.varsExport.create({keys:t}))}if(t,n,r,s){let i=new e(this.atoms);r(i);let o;if(s){let l=new e(this.atoms);s(l),o=l.steps}let a=Rn(t,n),c=this.atoms.if;return this.add(c.create({condition:a,then:i.steps,else:o}))}while(t,n,r){let s=new e(this.atoms);r(s);let i=Rn(t,n),o=this.atoms.while;return this.add(o.create({condition:i,body:s.steps}))}scope(t){let n=new e(this.atoms);t(n);let r=this.atoms.scope;return this.add(r.create({steps:n.steps}))}map(t,n,r){let s=new e(this.atoms);r(s);let i=this.atoms.map;return this.add(i.create({items:t,as:n,steps:s.steps}))}filter(t,n,r,s={}){let i=Rn(r,s),o=this.atoms.filter;return this.add(o.create({items:t,as:n,condition:i}))}find(t,n,r,s={}){let i=Rn(r,s),o=this.atoms.find;return this.add(o.create({items:t,as:n,condition:i}))}reduce(t,n,r,s,i){let o=new e(this.atoms);i(o);let a=this.atoms.reduce;return this.add(a.create({items:t,as:n,accumulator:r,initial:s,steps:o.steps}))}memoize(t,n){let r=new e(this.atoms);t(r);let s=this.atoms.memoize;return this.add(s.create({key:n,steps:r.steps}))}cache(t,n,r){let s=new e(this.atoms);t(s);let i=this.atoms.cache;return this.add(i.create({key:n,steps:s.steps,ttlMs:r}))}try(t){let n=new e(this.atoms);t.try(n);let r;if(t.catch){let i=new e(this.atoms);t.catch(i),r=i.steps}let s=this.atoms.try;return this.add(s.create({try:n.steps,catch:r}))}},yl={take(e){return new Ke(Cn)},custom(e){return new Ke(e)},args(e){return{$kind:"arg",path:e}},val(e){return e}},Zf=yl;import{validate as gl}from"tosijs-schema";function Rt(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=we(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),o=Vt(n,t.filename),{ast:a,signature:c,warnings:l}=Tt(o,s,r,t,i);return{ast:a,signature:c,warnings:l}}var hl=10,Nn=class{atoms;constructor(t={}){this.atoms={...Cn,...t}}get builder(){return new Ke(this.atoms)}get Agent(){return new Ke(this.atoms)}get A99(){return this.Agent}resolve(t){return this.atoms[t]}getTools(t="all"){let n=Object.values(this.atoms);if(Array.isArray(t))n=n.filter(r=>t.includes(r.op));else if(t==="flow"){let r=["seq","if","while","return","try","varSet","varGet","scope"];n=n.filter(s=>r.includes(s.op))}return n.map(r=>({type:"function",function:{name:r.op,description:r.docs,parameters:r.inputSchema?.schema??{}}}))}async run(t,n={},r={}){let s;if(typeof t=="string")if($r(t))s=kr(t);else try{s=Rt(t).ast}catch(d){throw new Error(`AJS transpilation failed: ${d.message}`)}else s=t;let i=r.fuel??1e3,o=r.timeoutMs??i*hl,a=r.capabilities??{},c=[];if(!a.store){let d=new Map,y=!1;a.store={get:async b=>(y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.get(b)),set:async(b,w)=>{y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.set(b,w)}}}let l=new AbortController,u=setTimeout(()=>l.abort(),o);r.signal&&r.signal.addEventListener("abort",()=>l.abort());let p={fuel:{current:i},args:n,state:{},consts:new Set,capabilities:a,resolver:d=>this.resolve(d),output:void 0,signal:l.signal,costOverrides:r.costOverrides,context:r.context,warnings:c};if(r.trace&&(p.trace=[]),s.op!=="seq")throw new Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let f=s.inputSchema;if(f&&!gl(n,f)){let d=new ae("Input validation failed: args do not match expected schema","vm.run");return{result:d,error:d,fuelUsed:0,trace:p.trace,warnings:c.length>0?c:void 0}}try{await Promise.race([this.resolve("seq")?.exec(s,p),new Promise((d,y)=>{l.signal.addEventListener("abort",()=>{y(new Error(`Execution timeout after ${o}ms (fuel: ${i}). Consider increasing fuel or optimizing your agent.`))}),l.signal.aborted&&y(new Error(`Execution timeout after ${o}ms (fuel: ${i}). Consider increasing fuel or optimizing your agent.`))})])}catch(d){if(d.message?.includes("timeout")||d.message?.includes("aborted")||l.signal.aborted)p.error=new ae(`Execution timeout after ${o}ms (fuel: ${i}). Consider increasing fuel or optimizing your agent.`,"vm.run");else throw d}finally{clearTimeout(u)}p.error&&p.output===void 0&&(p.output=p.error);let m=[...c,...p.warnings??[]];return{result:p.output,error:p.error,fuelUsed:i-p.fuel.current,trace:p.trace,warnings:m.length>0?m:void 0}}};var bl=null,gi=()=>bl??=new Nn;function ze(e){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let t of e)ze(t);return}e.op==="return"&&"value"in e&&(e.value={__result:e.value}),e.steps&&ze(e.steps),e.then&&ze(e.then),e.else&&ze(e.else),e.body&&ze(e.body)}}async function xl(e){let{code:t,context:n={},fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=gi(),c=/\breturn\b/.test(t)?`function __eval() { ${t} }`:`function __eval() { return (${t}) }`;try{let{ast:l}=Rt(c);ze(l);let u=await o.run(l,n,{fuel:r,timeoutMs:s,capabilities:i}),p=u.result;return{result:p&&typeof p=="object"&&"__result"in p?p.__result:p,fuelUsed:u.fuelUsed,error:u.error?{message:u.error.message||String(u.error)}:void 0}}catch(l){return{result:void 0,fuelUsed:r,error:{message:l.message||String(l)}}}}async function Tl(e){let{body:t,params:n=[],fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=gi(),c=`function __safeFn(${n.join(", ")}) { ${t} }`,{ast:l}=Rt(c);return ze(l),async(...u)=>{let p={};for(let f=0;f<n.length;f++)p[n[f]]=u[f];try{let f=await o.run(l,p,{fuel:r,timeoutMs:s,capabilities:i}),m=f.result;return{result:m&&typeof m=="object"&&"__result"in m?m.__result:m,fuelUsed:f.fuelUsed,error:f.error?{message:f.error.message||String(f.error)}:void 0}}catch(f){return{result:void 0,fuelUsed:r,error:{message:f.message||String(f)}}}}}function Pn(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=we(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),o=Vt(n,t.filename),{ast:a,signature:c,warnings:l}=Tt(o,s,r,t,i);return{ast:a,signature:c,warnings:l}}function yp(e,...t){if(typeof e=="string")return Pn(e).ast;let n=e.reduce((r,s,i)=>r+s+(t[i]!==void 0?String(t[i]):""),"");return Pn(n).ast}function hp(e,t,...n){if(typeof e=="string")return Mt(e,t);let r=t!==void 0?[t,...n]:n,s=e.reduce((i,o,a)=>i+o+(r[a]!==void 0?String(r[a]):""),"");return Mt(s)}async function bp(e,t={},n){let r=n??await kn(),s=await r.getTranspile(e);if(s)return{ast:s.ast,signature:s.signature,warnings:s.warnings};let i=Pn(e,t);return r.setTranspile(e,{ast:i.ast,signature:i.signature,warnings:i.warnings}),i}async function xp(e,t={},n){let r=n??await kn(),s=await r.getTJS(e);if(s)return{code:s.code,types:s.types,metadata:s.types,testRunner:s.testRunner,testCount:s.testCount,warnings:s.warnings};let i=Mt(e,t);return r.setTJS(e,{code:i.code,types:i.types,testRunner:i.testRunner,testCount:i.testCount,warnings:i.warnings}),i}function Tp(e,t,n){let{ast:r,signature:s}=Pn(e),i=async o=>(await t.run(r,o,n)).result;return i.signature=s,i.ast=r,i}function Sp(e){return Object.entries(e).map(([t,n])=>{let r=n.signature,s={},i=[];for(let[o,a]of Object.entries(r.parameters))s[o]=Ee(a.type),a.description&&(s[o].description=a.description),a.required&&i.push(o);return{type:"function",function:{name:r.name||t,description:r.description,parameters:{type:"object",properties:s,required:i}}}})}import{s as B}from"tosijs-schema";var hi=D("storeVectorize",B.object({text:B.string,model:B.string.optional}),B.array(B.number),async({text:e},t)=>{let n=t.capabilities.vector;if(!n)throw new Error("Capability 'vector' missing. Ensure vector battery is loaded.");let r=C(e,t);return n.embed(r)},{docs:"Generate embeddings using vector battery",cost:20}),bi=D("storeCreateCollection",B.object({collection:B.string,dimension:B.number.optional}),void 0,async({collection:e,dimension:t},n)=>{let r=n.capabilities.store;if(!r?.createCollection)throw new Error("Capability 'store' missing or does not support createCollection.");let s=C(e,n),i=C(t,n);return r.createCollection(s,void 0,i)},{docs:"Create a vector store collection",cost:5}),xi=D("storeVectorAdd",B.object({collection:B.string,doc:B.any}),void 0,async({collection:e,doc:t},n)=>{let r=n.capabilities.store;if(!r?.vectorAdd)throw new Error("Capability 'store' missing or does not support vectorAdd.");let s=C(e,n),i=C(t,n);return r.vectorAdd(s,i)},{docs:"Add a document to a vector store collection",cost:5}),Ti=D("storeSearch",B.object({collection:B.string,queryVector:B.array(B.number),k:B.number.optional,filter:B.record(B.any).optional}),B.array(B.any),async({collection:e,queryVector:t,k:n,filter:r},s)=>{let i=s.capabilities.store;if(!i?.vectorSearch)throw new Error("Capability 'store' missing or does not support vectorSearch.");let o=C(e,s),a=C(t,s),c=C(n,s)??5,l=C(r,s);return i.vectorSearch(o,a,c,l)},{docs:"Search vector store",cost:(e,t)=>5+(C(e.k,t)??5)}),Si=D("llmPredictBattery",B.object({system:B.string.optional,user:B.string,tools:B.array(B.any).optional,responseFormat:B.any.optional}),B.object({role:B.string.optional,content:B.string.optional,tool_calls:B.array(B.any).optional}),async({system:e,user:t,tools:n,responseFormat:r},s)=>{let i=s.capabilities.llmBattery;if(!i?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let o=C(e,s)??"You are a helpful agent.",a=C(t,s),c=C(n,s),l=C(r,s);return i.predict(o,a,c,l)},{docs:"Generate completion using LLM battery",cost:100}),wi=D("llmVision",B.object({system:B.string.optional,prompt:B.string,images:B.array(B.string),responseFormat:B.any.optional}),B.object({role:B.string.optional,content:B.string.optional,tool_calls:B.array(B.any).optional}),async({system:e,prompt:t,images:n,responseFormat:r},s)=>{let i=s.capabilities.llmBattery;if(!i?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let o=C(e,s)??"You analyze images accurately and concisely.",a=C(t,s),c=C(n,s)??[],l=C(r,s);return i.predict(o,{text:a,images:c},void 0,l)},{docs:"Analyze images using a vision model",timeoutMs:12e4,cost:150});var Wp={storeCreateCollection:bi,storeSearch:Ti,storeVectorAdd:xi,storeVectorize:hi,llmPredictBattery:Si,llmVision:wi};var Ei=new Map,In=new Map;function Sl(e,t){if(e.length!==t.length)throw new Error("Vectors must have the same length for cosine similarity.");let n=0,r=0,s=0;for(let i=0;i<e.length;i++)n+=e[i]*t[i],r+=e[i]*e[i],s+=t[i]*t[i];return r=Math.sqrt(r),s=Math.sqrt(s),r===0||s===0?0:n/(r*s)}function Ar(){return{async get(e){return Ei.get(e)},async set(e,t){Ei.set(e,t)},async createCollection(e,t,n){In.has(e)&&console.warn(`Collection '${e}' already exists. Overwriting.`),In.set(e,[])},async vectorAdd(e,t){let n=In.get(e);if(!n)throw new Error(`Collection '${e}' not found. Create it first.`);if(!t.embedding||!Array.isArray(t.embedding))throw new Error("Document must have an 'embedding' property that is an array of numbers.");n.push(t)},async vectorSearch(e,t,n=5){let r=In.get(e);if(!r)throw new Error(`Collection '${e}' not found. Create it first.`);let s=r.map(i=>({doc:i,score:Sl(t,i.embedding)}));return s.sort((i,o)=>o.score-i.score),s.slice(0,n).map(i=>i.doc)}}}function wl(e){if(typeof e=="string")return{role:"user",content:e};let t=[{type:"text",text:e.text}];for(let n of e.images||[])t.push({type:"image_url",image_url:{url:n}});return{role:"user",content:t}}var El="http://localhost:1234/v1";function _i(e,t=El){return{async predict(n,r,s,i){try{let o=i?e.getStructuredLLM():e.getLLM(),a=[{role:"system",content:n},wl(r)],c=await fetch(`${t}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:o.id,messages:a,temperature:.7,tools:s,response_format:i})});if(!c.ok)throw new Error(`LLM Error: ${c.status} ${c.statusText}`);return(await c.json()).choices[0]?.message??{content:""}}catch(o){throw o.cause?.code==="ECONNREFUSED"?new Error("No LLM provider configured. Please start LM Studio or provide an API key."):o}},async embed(n){try{let r=e.getEmbedding(),s=await fetch(`${t}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r.id,input:n})});if(!s.ok)throw new Error(`Embedding Error: ${s.status}`);return(await s.json()).data[0]?.embedding??[]}catch(r){throw r.cause?.code==="ECONNREFUSED"?new Error("No LLM provider configured. Please start LM Studio or provide an API key."):r}}}}var Dn=".models.cache.json";var Nt=typeof window<"u"&&typeof window.localStorage<"u";async function _l(e){try{if(Nt){let t=window.localStorage.getItem(Dn);if(!t)return null;let n=JSON.parse(t);return n.baseUrl!==e||Date.now()-n.timestamp>864e5?null:n.models}else{let t=await import("node:fs/promises"),r=(await import("node:path")).join(process.cwd(),Dn);try{let s=await t.readFile(r,"utf-8"),i=JSON.parse(s);return i.baseUrl!==e||Date.now()-i.timestamp>864e5?null:i.models}catch{return null}}}catch(t){return console.warn("\u26A0\uFE0F Error reading model cache:",t),null}}async function $l(e,t){let n={timestamp:Date.now(),baseUrl:e,models:t};try{if(Nt)window.localStorage.setItem(Dn,JSON.stringify(n));else{let r=await import("node:fs/promises"),i=(await import("node:path")).join(process.cwd(),Dn);await r.writeFile(i,JSON.stringify(n,null,2))}}catch(r){console.error("\u274C Error writing model cache:",r)}}var Pt=async(e,t)=>{let n=new AbortController,r=setTimeout(()=>n.abort(),6e4);try{let s=await fetch(e,{...t,signal:n.signal});return clearTimeout(r),s}catch(s){throw clearTimeout(r),s}};async function kl(e,t){try{let n={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},r=await Pt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"system",content:"You respond in JSON."},{role:"user",content:'Return JSON: {"status": "ok"}'}],response_format:n,max_tokens:20})});if(!r.ok)return r.status===400?jl(e,t):{ok:!1,msg:`HTTP ${r.status}`};let s=await r.json();return JSON.parse(s.choices[0].message.content),{ok:!0,msg:"OK (Schema)"}}catch(n){return{ok:!1,msg:n.message||"Error"}}}async function jl(e,t){try{return(await Pt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:'JSON: {"a":1}'}],response_format:{type:"json_object"},max_tokens:10})})).ok?{ok:!0,msg:"OK (Legacy Mode)"}:{ok:!1,msg:"Not Supported"}}catch{return{ok:!1,msg:"Legacy Fail"}}}async function vl(e,t){try{return(await Pt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:"hi"}],max_tokens:1})})).ok}catch{return!1}}async function Al(e,t){try{let n=await Pt(`${e}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,input:"test"})});return n.ok?(await n.json()).data[0]?.embedding?.length??null:null}catch{return null}}var Ml="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";async function Cl(e,t){try{return(await Pt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:[{type:"text",text:"What color is this?"},{type:"image_url",image_url:{url:Ml}}]}],max_tokens:10})})).ok}catch{return!1}}async function $i(e){let t=await _l(e),n=[];try{let o=await fetch(`${e}/models`);if(!o.ok)throw new Error("Could not connect");n=(await o.json()).data.map(c=>c.id).sort()}catch{return t?(console.log("\u26A0\uFE0F LM Studio unavailable, using cached model audit."),t):(console.error("\u274C Failed to connect to LM Studio."),[])}if(t){let o=t.map(a=>a.id).sort();if(JSON.stringify(n)===JSON.stringify(o))return console.log("\u2705 Using cached model audit."),t;console.log("\u{1F50D} Model list changed. Re-running audit...")}console.log("\u{1F50D} Scanning models (this may take a moment)...");let r=[],s=n.map(o=>({id:o})),i;Nt||(i=await import("node:readline"));for(let o of s){!Nt&&i&&(i.cursorTo(process.stdout,0),process.stdout.write(`\u{1F449} Testing: ${o.id}...`),i.clearLine(process.stdout,1));let a="Unknown",c=!1,l=!1,u="",p,f=await vl(e,o.id),m=await Al(e,o.id);if(m&&(p=m),f){a="LLM";let d=await kl(e,o.id);c=d.ok,l=await Cl(e,o.id),u=c?d.msg:`Fail: ${d.msg}`,l&&(u+=" +Vision")}else m?(a="Embedding",u=`OK (Dim: ${m})`):u="LLM Fail";r.push({id:o.id,type:a,structuredOutput:c,vision:l,dimension:p,status:u})}return!Nt&&i&&(i.cursorTo(process.stdout,0),i.clearLine(process.stdout,0)),console.log(`
439
- `),console.table(r),await $l(e,r),console.log("\u{1F4DD} Audit results saved to cache."),r}var Rl="http://localhost:1234/v1",On=class{constructor(t=Rl){this.baseUrl=t}baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;async audit(){this.models=await $i(this.baseUrl),this.selectDefaults()}selectDefaults(){this.defaultEmbedding=this.models.find(t=>t.type==="Embedding")||null,this.defaultLLM=this.models.find(t=>t.type==="LLM")||null,this.defaultStructuredLLM=this.models.find(t=>t.type==="LLM"&&t.structuredOutput)||null,this.defaultEmbedding||console.warn("\u26A0\uFE0F No embedding model found."),this.defaultLLM||console.warn("\u26A0\uFE0F No LLM found."),this.defaultStructuredLLM||console.warn("\u26A0\uFE0F No LLM with structured output support found.")}getModels(){return this.models}_setDefaultModel(t,n,r,s){let i=this.models.find(o=>o.id===t&&r(o));if(!i)throw new Error(`Model '${t}' not found or is not ${s}.`);this[n]=i}setDefaultLLM(t){this._setDefaultModel(t,"defaultLLM",n=>n.type==="LLM","an LLM")}setDefaultEmbedding(t){this._setDefaultModel(t,"defaultEmbedding",n=>n.dimension!==void 0,"an embedding model")}setDefaultStructuredLLM(t){this._setDefaultModel(t,"defaultStructuredLLM",n=>n.type==="LLM"&&n.structuredOutput,"a structured-output LLM")}getLLM(){if(!this.defaultLLM)throw new Error("No LLM available.");return this.defaultLLM}getEmbedding(){if(!this.defaultEmbedding)throw new Error("No embedding model available.");return this.defaultEmbedding}getStructuredLLM(){if(!this.defaultStructuredLLM)throw new Error("No structured-output LLM available.");return this.defaultStructuredLLM}};var Nl=typeof window<"u",Pl=Nl&&window.location.protocol==="https:",It=null,Mr=null,ki=!1;async function Il(){if(ki)return{localModels:It,llm:Mr};if(ki=!0,Pl)return console.log("\u{1F4E1} HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{It=new On,await It.audit(),Mr=_i(It)}catch(e){console.warn("\u26A0\uFE0F Could not connect to local LLM:",e)}return{localModels:It,llm:Mr}}async function Dl(){let{localModels:e,llm:t}=await Il();return{vector:t?{embed:t.embed}:void 0,store:Ar(),llmBattery:t,models:e}}async function em(){return Dl()}var tm={store:Ar(),llmBattery:null,vector:void 0,models:null};function Ol(e){if(typeof e!="string")return!1;let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")}function Ll(){return new Date().toISOString()}function at(e,t,n,r=0,s=0,i=0,o=0){return new Date(Date.UTC(e,t-1,n,r,s,i,o)).toISOString()}function ji(e){let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);return t.toISOString()}function Bl(e){try{return ji(e)}catch{return null}}function Dt(e,t){let n=new Date(e);return n.setTime(n.getTime()+t),n.toISOString()}function Fl(e,t){return Dt(e,t*1e3)}function Ul(e,t){return Dt(e,t*60*1e3)}function ql(e,t){return Dt(e,t*60*60*1e3)}function vi(e,t){return Dt(e,t*24*60*60*1e3)}function Jl(e,t){return vi(e,t*7)}function Wl(e,t){let n=new Date(e),r=n.getUTCMonth()+t;return n.setUTCMonth(r),n.getUTCMonth()!==(r%12+12)%12&&n.setUTCDate(0),n.toISOString()}function Vl(e,t){let n=new Date(e),r=n.getUTCDate();return n.setUTCFullYear(n.getUTCFullYear()+t),n.getUTCDate()!==r&&n.setUTCDate(0),n.toISOString()}function Re(e,t){return new Date(e).getTime()-new Date(t).getTime()}function Kl(e,t){return Math.floor(Re(e,t)/1e3)}function zl(e,t){return Math.floor(Re(e,t)/(60*1e3))}function Gl(e,t){return Math.floor(Re(e,t)/(3600*1e3))}function Hl(e,t){return Math.floor(Re(e,t)/(1440*60*1e3))}function ct(e){return new Date(e).getUTCFullYear()}function Ln(e){return new Date(e).getUTCMonth()+1}function Cr(e){return new Date(e).getUTCDate()}function Zl(e){return new Date(e).getUTCHours()}function Yl(e){return new Date(e).getUTCMinutes()}function Xl(e){return new Date(e).getUTCSeconds()}function Ql(e){return new Date(e).getUTCMilliseconds()}function eu(e){let t=new Date(e).getUTCDay();return t===0?7:t}function Bn(e,t,n){let r=new Date(e),s={timeZone:t,...n};return new Intl.DateTimeFormat(void 0,s).format(r)}function tu(e,t){return Bn(e,t,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function nu(e,t){return Bn(e,t,{year:"numeric",month:"short",day:"numeric"})}function ru(e,t){return Bn(e,t,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function su(e){return e.slice(0,10)}function Ai(e,t){return Re(e,t)<0}function Mi(e,t){return Re(e,t)>0}function iu(e,t){return Re(e,t)===0}function ou(e,t){return Ai(e,t)?e:t}function au(e,t){return Mi(e,t)?e:t}function cu(e){return at(ct(e),Ln(e),Cr(e))}function lu(e){return at(ct(e),Ln(e),Cr(e),23,59,59,999)}function uu(e){return at(ct(e),Ln(e),1)}function fu(e){let t=new Date(e);return t.setUTCMonth(t.getUTCMonth()+1,0),t.setUTCHours(23,59,59,999),t.toISOString()}function pu(e){return at(ct(e),1,1)}function mu(e){return at(ct(e),12,31,23,59,59,999)}var lt={isValid:Ol,now:Ll,from:at,parse:ji,tryParse:Bl,addMilliseconds:Dt,addSeconds:Fl,addMinutes:Ul,addHours:ql,addDays:vi,addWeeks:Jl,addMonths:Wl,addYears:Vl,diff:Re,diffSeconds:Kl,diffMinutes:zl,diffHours:Gl,diffDays:Hl,year:ct,month:Ln,day:Cr,hour:Zl,minute:Yl,second:Xl,millisecond:Ql,dayOfWeek:eu,toLocal:Bn,format:tu,formatDate:nu,formatTime:ru,toDate:su,isBefore:Ai,isAfter:Mi,isEqual:iu,min:ou,max:au,startOfDay:cu,endOfDay:lu,startOfMonth:uu,endOfMonth:fu,startOfYear:pu,endOfYear:mu};function Rr(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=parseInt(e.slice(0,4),10),n=parseInt(e.slice(5,7),10),r=parseInt(e.slice(8,10),10);if(n<1||n>12||r<1)return!1;let s=[31,28,31,30,31,30,31,31,30,31,30,31],i=n===2&&(t%4===0&&t%100!==0||t%400===0)?29:s[n-1];return r<=i}function du(){return lt.toDate(lt.now())}function yu(e){let t=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).format(t)}function ye(e,t,n){let r=String(e).padStart(4,"0"),s=String(t).padStart(2,"0"),i=String(n).padStart(2,"0"),o=`${r}-${s}-${i}`;if(!Rr(o))throw new Error(`Invalid date: ${e}-${t}-${n}`);return o}function Ci(e){if(/^\d{4}-\d{2}-\d{2}$/.test(e)){if(!Rr(e))throw new Error(`Invalid date: ${e}`);return e}let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);let n=t.getUTCFullYear(),r=t.getUTCMonth()+1,s=t.getUTCDate();return ye(n,r,s)}function gu(e){try{return Ci(e)}catch{return null}}function Fn(e,t){let n=Ni(e);return lt.toDate(lt.addDays(n,t))}function hu(e,t){return Fn(e,t*7)}function bu(e,t){let n=ce(e),r=Ne(e),s=Nr(e),i=n*12+(r-1)+t,o=Math.floor(i/12),a=i%12+1,c=Ot(o,a),l=Math.min(s,c);return ye(o,a,l)}function xu(e,t){let n=ce(e),r=Ne(e),s=Nr(e),i=n+t,o=Ot(i,r),a=Math.min(s,o);return ye(i,r,a)}function Ri(e,t){let r=new Date(e+"T00:00:00Z").getTime(),s=new Date(t+"T00:00:00Z").getTime();return Math.round((r-s)/864e5)}function Tu(e,t){let n=ce(e),r=Ne(e),s=ce(t),i=Ne(t);return(n-s)*12+(r-i)}function Su(e,t){return ce(e)-ce(t)}function ce(e){return parseInt(e.slice(0,4),10)}function Ne(e){return parseInt(e.slice(5,7),10)}function Nr(e){return parseInt(e.slice(8,10),10)}function Pr(e){let t=new Date(e+"T00:00:00Z").getUTCDay();return t===0?7:t}function wu(e){let t=new Date(e+"T00:00:00Z"),n=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-n);let r=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t.getTime()-r.getTime())/864e5+1)/7)}function Eu(e){let t=ye(ce(e),1,1);return Ri(e,t)+1}function Ir(e){return Math.ceil(Ne(e)/3)}function Dr(e){return e%4===0&&e%100!==0||e%400===0}function Ot(e,t){let n=[31,28,31,30,31,30,31,31,30,31,30,31];return t===2&&Dr(e)?29:n[t-1]}function _u(e){return Dr(e)?366:365}function Ni(e){return e+"T00:00:00.000Z"}function $u(e){return Math.floor(new Date(e+"T00:00:00Z").getTime()/1e3)}function ku(e){let t=new Date(e*1e3);return ye(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate())}function Or(e,t){let n=new Date(e+"T00:00:00Z"),r={timeZone:"UTC",...t};return new Intl.DateTimeFormat(void 0,r).format(n)}function ju(e){return Or(e,{year:"numeric",month:"long",day:"numeric"})}function vu(e){return Or(e,{year:"numeric",month:"short",day:"numeric"})}function Au(e,t){return e<t}function Mu(e,t){return e>t}function Cu(e,t){return e===t}function Ru(e,t){return e<t?e:t}function Nu(e,t){return e>t?e:t}function Pu(e,t,n){return e>=t&&e<=n}function Iu(e){return ye(ce(e),Ne(e),1)}function Du(e){let t=ce(e),n=Ne(e);return ye(t,n,Ot(t,n))}function Ou(e){let n=(Ir(e)-1)*3+1;return ye(ce(e),n,1)}function Lu(e){let n=Ir(e)*3;return ye(ce(e),n,Ot(ce(e),n))}function Bu(e){return ye(ce(e),1,1)}function Fu(e){return ye(ce(e),12,31)}function Uu(e){let t=Pr(e);return Fn(e,-(t-1))}function qu(e){let t=Pr(e);return Fn(e,7-t)}var Ju={isValid:Rr,today:du,todayIn:yu,from:ye,parse:Ci,tryParse:gu,addDays:Fn,addWeeks:hu,addMonths:bu,addYears:xu,diff:Ri,diffMonths:Tu,diffYears:Su,year:ce,month:Ne,day:Nr,dayOfWeek:Pr,weekOfYear:wu,dayOfYear:Eu,quarter:Ir,isLeapYear:Dr,daysInMonth:Ot,daysInYear:_u,toTimestamp:Ni,toUnix:$u,fromUnix:ku,format:Or,formatLong:ju,formatShort:vu,isBefore:Au,isAfter:Mu,isEqual:Cu,min:Ru,max:Nu,isBetween:Pu,startOfMonth:Iu,endOfMonth:Du,startOfQuarter:Ou,endOfQuarter:Lu,startOfYear:Bu,endOfYear:Fu,startOfWeek:Uu,endOfWeek:qu};export{Zf as A99,yl as Agent,ae as AgentError,Nn as AgentVM,ac as DEFAULT_MAX_AST_SIZE,oc as DEFAULT_PROCEDURE_TTL,fn as Enum,xl as Eval,St as FunctionPredicate,Ze as Generic,Ju as LegalDate,rr as LegalDateType,On as LocalModels,$n as MetadataCache,sn as Nullable,on as Optional,_r as PROCEDURE_TOKEN_PREFIX,Tl as SafeFunction,Ga as Schema,ie as SyntaxError,cn as TArray,Yt as TBoolean,tn as TEmail,Xt as TInteger,oe as TJS_VERSION,en as TNonEmptyString,Zt as TNumber,ln as TPair,Qt as TPositiveInt,un as TRecord,Ht as TString,nn as TUrl,rn as TUuid,lt as Timestamp,nr as TimestampType,z as TranspileError,ee as Type,Fr as TypeError,Ke as TypedBuilder,an as Union,Gc as agentRun,yp as ajs,Ts as assertFunction,tm as batteries,Wp as batteryAtoms,ke as builtins,tl as cache,Ue as checkType,ll as clearExpiredProcedures,Sn as compileToWasm,ca as compileWasmBlocks,ol as consoleError,sl as consoleLog,il as consoleWarn,Sc as constSet,Cn as coreAtoms,Tp as createAgent,pe as createChildContext,Ce as createChildScope,D as defineAtom,Bo as emitRuntimeWrapper,Se as error,xc as errorAtom,Q as evaluateExpr,Oe as exampleToJSONSchema,Ss as expectFunction,xe as extractLiteralValue,ht as extractTDoc,Yn as extractTests,qc as fetch,vc as filter,Mc as find,za as fromTS,zt as functionMetaToJSONSchema,ka as generateDTS,ni as generateDocs,sc as generateDocsMarkdown,Dl as getBatteries,kn as getGlobalCache,_i as getLLMCapability,Z as getLocation,em as getStandardCapabilities,Ar as getStoreCapabilityDefault,Sp as getToolDefinitions,jr as hash,_n as hashSource,Ha as hashSourceSync,yc as iff,le as inferTypeFromValue,mr as installRuntime,Js as instantiateWasm,ic as isAgentError,_e as isError,$r as isProcedureToken,ve as isRuntimeType,tr as isValidLegalDate,er as isValidTimestamp,Qn as isValidUrl,Pc as join,Yc as jsonParse,Xc as jsonStringify,Fc as keys,Rc as len,tc as lint,zc as llmPredict,Ui as lookupVariable,jc as map,el as memoize,Bc as merge,Lc as omit,we as parse,je as parseParameter,ys as parseReturnType,Oc as pick,Wt as preprocess,ot as procedureStore,Cc as push,nl as random,Ac as reduce,Dc as regexMatch,Ws as registerWasmBlock,cl as releaseProcedure,kr as resolveProcedureToken,C as resolveValue,hc as ret,Zc as runCode,Le as runtime,kc as scope,de as seq,Xa as setGlobalCache,Nc as split,Jc as storeGet,al as storeProcedure,Vc as storeQuery,Wc as storeSet,bn as stripModuleSyntax,Os as stripTjsPreamble,Ic as template,So as testUtils,hp as tjs,xp as tjsWithCache,Tt as transformFunction,Pn as transpile,Hc as transpileCode,Mt as transpileToJS,bp as transpileWithCache,bc as tryCatch,Ee as typeDescriptorToJSONSchema,rt as typeDescriptorToTS,Qe as typeOf,Hn as typeToString,rl as uuid,fr as validateArgs,wc as varGet,Tc as varSet,$c as varsExport,Ec as varsImport,_c as varsLet,Kc as vectorSearch,gc as whileLoop,pr as wrap,Qc as xmlParse};
446
+ `)}else if(i.type==="class"){r+=`## ${i.name}
447
+
448
+ `;let o=i.extendsName?`class ${i.name} extends ${i.extendsName} {`:`class ${i.name} {`,a=i.members.length===0?"":`
449
+ `+i.members.map(c=>` ${c}`).join(`
450
+ `)+`
451
+ `;r+="```tjs\n"+o+a+"}\n```\n\n"}let{tests:s}=$t(e);for(let i of s)i.description&&(/^test \d+$/.test(i.description)||(r+=`### ${i.description} (test cases)
452
+
453
+ `,r+="```tjs\n",r+=Cc(i.body).trim()+`
454
+ `,r+="```\n\n"));return r.trim()||"*No documentation available*"}function Cc(e){let t=0,n="",r=null;for(;t<e.length;){let s=e[t],i=t>0?e[t-1]:"";if(r){n+=s,s===r&&i!=="\\"&&(r=null),t++;continue}if(s==='"'||s==="'"||s==="`"){r=s,n+=s,t++;continue}if(e.slice(t).startsWith("expect(")){let o=t+7,a=Rn(e,o);if(a>o){let l=e.slice(a+1).match(/^\.(\w+)(\()?/);if(l&&l[2]==="("){let u=a+1+l[0].length,p=Rn(e,u);if(p>=u){let f=e.slice(o,a),m=l[1],d=e.slice(u,p);n+=Rc(f,m,d),t=p+1;continue}}}}n+=s,t++}return n}function Rn(e,t){let n=1,r=t,s=null;for(;r<e.length;){let i=e[r],o=r>0?e[r-1]:"";if(s)i===s&&o!=="\\"&&(s=null);else if(i==='"'||i==="'"||i==="`")s=i;else if(i==="(")n++;else if(i===")"&&(n--,n===0))return r;r++}return-1}function Nc(e){if(typeof e=="function")return null;try{let t=JSON.stringify(e);return t===void 0?null:t}catch{return null}}function Rc(e,t,n){let r=e.trim(),s=n.trim();switch(t){case"toBe":return`${r} // \u2192 ${s}`;case"toEqual":return`${r} // \u2261 ${s}`;case"toBeTruthy":return`${r} // \u2192 truthy`;case"toBeFalsy":return`${r} // \u2192 falsy`;case"toBeNull":return`${r} // \u2192 null`;case"toBeUndefined":return`${r} // \u2192 undefined`;case"toContain":return`${r} // \u2192 contains ${s}`;case"toThrow":return`${r} // \u2192 throws`;case"toBeGreaterThan":return`${r} // \u2192 > ${s}`;case"toBeLessThan":return`${r} // \u2192 < ${s}`;case"toBeNaN":return`${r} // \u2192 NaN`;default:return`${r} // .${t}(${s})`}}import{s as h,validate as Cr,filter as ki}from"tosijs-schema";var Pn=Symbol.for("tjs.equals");function Dn(e,t){if(e!==null&&typeof e=="object"&&typeof e[Pn]=="function")return e[Pn](t);if(t!==null&&typeof t=="object"&&typeof t[Pn]=="function")return t[Pn](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(t);if(t!==null&&typeof t=="object"&&typeof t.Equals=="function")return t.Equals(e);if(e===t||e==null&&t==null)return!0;if(e==null||t===null||t===void 0||typeof e!=typeof t||typeof e!="object")return!1;if(Array.isArray(e)&&Array.isArray(t))return e.length!==t.length?!1:e.every((s,i)=>Dn(s,t[i]));if(Array.isArray(e)!==Array.isArray(t))return!1;let n=Object.keys(e),r=Object.keys(t);return n.length!==r.length?!1:n.every(s=>Dn(e[s],t[s]))}var pe=class{$error=!0;message;op;cause;constructor(t,n,r){this.message=t,this.op=n,this.cause=r}toString(){return`AgentError[${this.op}]: ${this.message}`}toJSON(){return{$error:!0,message:this.message,op:this.op}}};function Pc(e){return e instanceof pe||e&&e.$error===!0}var lt=new Map,Ic=3600*1e3,Dc=100*1024,Nr="proc_";function Rr(e){return typeof e=="string"&&e.startsWith(Nr)}function Pr(e){let t=lt.get(e);if(!t)throw new Error(`Procedure not found: ${e}`);if(Date.now()>t.expiresAt)throw lt.delete(e),new Error(`Procedure expired: ${e}`);return t.ast}function Oc(){return typeof crypto<"u"&&crypto.randomUUID?Nr+crypto.randomUUID():Nr+Math.random().toString(36).slice(2)+Date.now().toString(36)}var ji=new Set(["__proto__","constructor","prototype"]);function Ti(e){if(ji.has(e))throw new Error(`Security Error: Access to '${e}' is forbidden`)}var Bc=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function Lc(e){try{let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")return!0;let n=t.hostname.toLowerCase();return!!(Bc.has(n)||n.endsWith(".internal")||n.endsWith(".local")||n==="169.254.169.254"||/^10\./.test(n)||/^192\.168\./.test(n)||/^172\.(1[6-9]|2\d|3[01])\./.test(n))}catch{return!0}}function Fc(e){return!!(/\([^)]*[+*][^)]*\)[+*]/.test(e)||/\(([^|)]+)\|\1\)[+*]/.test(e)||/\(\.\*\)\+/.test(e)||/\(\.\+\)\+/.test(e)||/\(\[.*\]\+\)\+/.test(e))}function Oe(e){return{...e,state:Object.create(e.state)}}function Uc(e,t){let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let s of r){let i=e[s],o=t[s];o!==i&&(n[s]=o)}return n}function C(e,t){if(e&&typeof e=="object"&&e.$kind==="arg")return t.args[e.path];if(e&&typeof e=="object"&&e.$expr)return X(e,t);if(typeof e=="string"){if(e.startsWith("args.")&&!("args"in t.state))return t.args[e.replace("args.","")];if(e.includes(".")){let n=e.split(".");for(let s of n)if(ji.has(s))throw new Error(`Security Error: Access to '${s}' is forbidden`);let r=t.state[n[0]];if(r!==void 0){for(let s=1;s<n.length;s++)r=r?.[n[s]];return r}}return e in t.state?t.state[e]:e}if(e&&typeof e=="object"&&!Array.isArray(e)&&e.constructor===Object){let n={};for(let r of Object.keys(e))n[r]=C(e[r],t);return n}return Array.isArray(e)?e.map(n=>C(n,t)):e}function Ze(e,t,n){return new Proxy(t,{get(r,s){if(s in r)return r[s];let i=n?.[s];throw i?new Error(`${e}.${s} is not available. ${i}`):new Error(`${e}.${s} is not supported in AsyncJS. Check docs for available ${e} methods.`)}})}function ct(e){if(e===null)return{type:"null"};if(e===void 0)return{};if(typeof e=="object"&&e!==null&&"type"in e&&typeof e.type=="string")return e;if(typeof e=="object"&&e!==null&&"schema"in e&&typeof e.schema=="object")return e.schema;let t=typeof e;if(t==="string")return{type:"string"};if(t==="number")return Number.isInteger(e)?{type:"integer"}:{type:"number"};if(t==="boolean")return{type:"boolean"};if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:ct(e[0])};if(t==="object"){let n={},r=[];for(let[s,i]of Object.entries(e))n[s]=ct(i),r.push(s);return{type:"object",properties:n,required:r}}return{}}var Me={Math:Ze("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 e=new Uint32Array(1);return crypto.getRandomValues(e),e[0]/4294967296}return Math.random()}}),JSON:Ze("JSON",{parse:e=>JSON.parse(e),stringify:(e,t,n)=>JSON.stringify(e,t,n)}),console:Ze("console",{log:(...e)=>{},warn:(...e)=>{},error:(...e)=>{},info:(...e)=>{}},{table:"Use console.log with JSON.stringify for structured data.",dir:"Use console.log instead.",trace:"Stack traces are not available in AsyncJS."}),Array:Ze("Array",{isArray:e=>Array.isArray(e),from:(e,t,n)=>Array.from(e,t,n),of:(...e)=>Array.of(...e)},{prototype:"Prototype access is not allowed."}),Object:Ze("Object",{keys:e=>Object.keys(e),values:e=>Object.values(e),entries:e=>Object.entries(e),fromEntries:e=>Object.fromEntries(e),assign:(e,...t)=>Object.assign({},e,...t),hasOwn:(e,t)=>Object.hasOwn(e,t)},{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:Ze("String",{fromCharCode:(...e)=>String.fromCharCode(...e),fromCodePoint:(...e)=>String.fromCodePoint(...e)}),Number:Ze("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:(e,t)=>{let n=ct(t),r=ki(e,n);if(r instanceof Error)throw r;return r},Schema:{...h,response:(e,t)=>{let n=t?.schema!=null?t.schema:ct(t);return{type:"json_schema",json_schema:{name:e,strict:!0,schema:n}}},fromExample:e=>ct(e),isValid:(e,t)=>t?.schema!=null?Cr(e,t):Cr(e,ct(t))},Set:(e=[])=>{let t=[...new globalThis.Set(e)];return{add(n){return t.includes(n)||t.push(n),this},remove(n){let r=t.indexOf(n);return r!==-1&&t.splice(r,1),this},clear(){return t.length=0,this},has(n){return t.includes(n)},get size(){return t.length},toArray(){return[...t]},union(n){let r=n?.toArray?.()??n??[];return Me.Set([...t,...r])},intersection(n){let r=n?.toArray?.()??n??[];return Me.Set(t.filter(s=>r.includes(s)))},diff(n){let r=n?.toArray?.()??n??[];return Me.Set(t.filter(s=>!r.includes(s)))},forEach(n){t.forEach(n)},map(n){return Me.Set(t.map(n))},filter(n){return Me.Set(t.filter(n))},toJSON(){return[...t]}}},Date:(()=>{let e=n=>({get value(){return n.toISOString()},get timestamp(){return n.getTime()},get year(){return n.getFullYear()},get month(){return n.getMonth()+1},get day(){return n.getDate()},get hours(){return n.getHours()},get minutes(){return n.getMinutes()},get seconds(){return n.getSeconds()},get dayOfWeek(){return n.getDay()},add({years:r=0,months:s=0,days:i=0,hours:o=0,minutes:a=0,seconds:c=0,ms:l=0}={}){let u=new globalThis.Date(n.getTime());return r&&u.setFullYear(u.getFullYear()+r),s&&u.setMonth(u.getMonth()+s),i&&u.setDate(u.getDate()+i),o&&u.setHours(u.getHours()+o),a&&u.setMinutes(u.getMinutes()+a),c&&u.setSeconds(u.getSeconds()+c),l&&u.setMilliseconds(u.getMilliseconds()+l),e(u)},diff(r,s="ms"){let i=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime(),o=n.getTime()-i;switch(s){case"seconds":return o/1e3;case"minutes":return o/6e4;case"hours":return o/36e5;case"days":return o/864e5;default:return o}},format(r="ISO"){return r==="ISO"?n.toISOString():r==="date"?n.toISOString().split("T")[0]:r==="time"?n.toISOString().split("T")[1].split(".")[0]:r.replace("YYYY",String(n.getFullYear())).replace("MM",String(n.getMonth()+1).padStart(2,"0")).replace("DD",String(n.getDate()).padStart(2,"0")).replace("HH",String(n.getHours()).padStart(2,"0")).replace("mm",String(n.getMinutes()).padStart(2,"0")).replace("ss",String(n.getSeconds()).padStart(2,"0"))},isBefore(r){let s=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime();return n.getTime()<s},isAfter(r){let s=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime();return n.getTime()>s},toString(){return n.toISOString()},toJSON(){return n.toISOString()}}),t=n=>{let r=n!==void 0?new globalThis.Date(n):new globalThis.Date;if(isNaN(r.getTime()))throw new Error(`Invalid date: ${n}`);return e(r)};return t.now=()=>globalThis.Date.now(),t.parse=n=>e(new globalThis.Date(n)),t})()},In={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."},qc=.01,Si=1e-4,wi=.001,Jc=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 X(e,t){if(e==null||typeof e!="object"||!("$expr"in e))return e;if(t.fuel&&(t.fuel.current-=qc,t.fuel.current<=0))throw new Error("Out of Fuel");switch(e.$expr){case"literal":return e.value;case"ident":{if(e.name in t.state)return t.state[e.name];if(e.name in t.args)return t.args[e.name];if(e.name in Me)return Me[e.name];if(e.name in In)throw new Error(In[e.name]);return}case"member":{let n=X(e.object,t);if(e.optional&&n==null)return;let r=typeof e.property=="object"&&e.property!==null?X(e.property,t):e.property;return Ti(String(r)),n?.[r]}case"binary":{let n=X(e.left,t),r=X(e.right,t);switch(e.op){case"+":{let s=n+r;if(typeof s=="string"&&t.fuel&&(t.fuel.current-=s.length*Si,t.fuel.current<=0)){t.error=new pe("Out of Fuel","expr.concat");return}return s}case"-":return n-r;case"*":return n*r;case"/":return n/r;case"%":return n%r;case"**":return n**r;case">":return n>r;case"<":return n<r;case">=":return n>=r;case"<=":return n<=r;case"==":return Dn(n,r);case"!=":return!Dn(n,r);case"===":return n===r;case"!==":return n!==r;default:throw new Error(`Unknown binary operator: ${e.op}`)}}case"unary":{let n=X(e.argument,t);switch(e.op){case"!":return!n;case"-":return-n;case"+":return+n;case"typeof":return typeof n;default:throw new Error(`Unknown unary operator: ${e.op}`)}}case"logical":{let n=X(e.left,t);return e.op==="&&"?n&&X(e.right,t):e.op==="??"?n??X(e.right,t):n||X(e.right,t)}case"conditional":{let n=X(e.test,t);return X(n?e.consequent:e.alternate,t)}case"array":return e.elements.map(n=>X(n,t));case"object":{let n={};for(let r of e.properties)n[r.key]=X(r.value,t);return n}case"call":{if(e.callee==="Error"){let r=e.arguments.map(i=>X(i,t)),s=typeof r[0]=="string"?r[0]:"Error";t.error=new pe(s,"Error");return}if(e.callee in Me){let r=Me[e.callee];if(typeof r=="function"){let s=e.arguments.map(i=>X(i,t));return r(...s)}}throw t.resolver(e.callee)?new Error(`Atom calls in expressions not yet supported: ${e.callee}`):e.callee in In?new Error(In[e.callee]):new Error(`Unknown function: ${e.callee}`)}case"methodCall":{let n=X(e.object,t);if(e.optional&&n==null)return;let r=e.method;if(Ti(r),n==null)throw new Error(`Cannot call method '${r}' on ${n}`);let s=n[r];if(typeof s!="function")throw new Error(`'${r}' is not a function`);let i=e.arguments.map(a=>X(a,t)),o=s.apply(n,i);if(t.fuel&&Jc.has(r)){let a=0;if(typeof o=="string"?a=o.length*Si:Array.isArray(o)?a=o.length*wi:typeof o=="object"&&o!==null&&(a=Object.keys(o).length*wi),t.fuel.current-=a,t.fuel.current<=0){t.error=new pe("Out of Fuel",`expr.${r}`);return}}return o}default:throw new Error(`Unknown expression type: ${e.$expr}`)}}function O(e,t,n,r,s={}){let{docs:i="",timeoutMs:o=1e3,cost:a=1}=typeof s=="string"?{docs:s}:s;return{op:e,inputSchema:t,outputSchema:n,exec:async(l,u)=>{let{op:p,result:f,...m}=l;if(u.error)return;let d=u.trace?{...u.state}:null,y=u.fuel.current,b,w;try{let S=u.costOverrides?.[e],T=S!==void 0?S:a,x=typeof T=="function"?T(m,u):T;if((u.fuel.current-=x)<=0){u.error=new pe("Out of Fuel",e);return}let _,$=async()=>r(l,u);if(b=o>0?await Promise.race([$(),new Promise((k,A)=>{_=setTimeout(()=>A(new Error(`Atom '${e}' timed out`)),o)})]).finally(()=>clearTimeout(_)):await $(),l.result){if(u.consts.has(l.result))throw new Error(`Cannot reassign const variable '${l.result}'`);if(b!==void 0&&n&&!Cr(b,n)){u.error=new pe(`Output validation failed for '${e}'`,e);return}u.state[l.result]=b,l.resultConst&&u.consts.add(l.result)}}catch(S){w=S.message||String(S),u.error=new pe(w,e,S)}finally{if(u.trace&&d){let S=Uc(d,u.state);u.trace.push({op:e,input:m,stateDiff:S,result:b,error:w,fuelBefore:y,fuelAfter:u.fuel.current,timestamp:new Date().toISOString()})}}},docs:i,timeoutMs:o,cost:a,create:l=>({op:e,...l})}}var ge=O("seq",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{for(let n of e){if(t.output!==void 0||t.error)return;let r=t.resolver(n.op);if(!r)throw new Error(`Unknown Atom: ${n.op}`);await r.exec(n,t)}},{docs:"Sequence",timeoutMs:0,cost:.1}),Wc=O("if",h.object({condition:h.any,then:h.array(h.any),else:h.array(h.any).optional}),void 0,async(e,t)=>{X(e.condition,t)?await ge.exec({op:"seq",steps:e.then},t):e.else&&await ge.exec({op:"seq",steps:e.else},t)},{docs:"If/Else",timeoutMs:0,cost:.1}),Vc=O("while",h.object({condition:h.any,body:h.array(h.any)}),void 0,async(e,t)=>{for(;X(e.condition,t);){if(t.signal?.aborted)throw new Error("Execution aborted");if((t.fuel.current-=.1)<=0)throw new Error("Out of Fuel");if(await ge.exec({op:"seq",steps:e.body},t),t.output!==void 0||t.error)return}},{docs:"While Loop",timeoutMs:0,cost:.1}),Kc=O("return",void 0,h.any,async(e,t)=>{if(t.error)return t.output=t.error,t.error;if("value"in e){let r=C(e.value,t);if(r!=null&&!Pc(r)&&(typeof r!="object"||Array.isArray(r))){let s=new pe(`Agent must return an object, got ${Array.isArray(r)?"array":typeof r}`,"return");return t.error=s,t.output=s,s}return t.output=r,r}let n={};if(e.schema?.properties){for(let r of Object.keys(e.schema.properties))n[r]=t.state[r];if(e.filter!==!1){let r=ki(n,e.schema);r instanceof Error||(n=r)}}return t.output=n,n},{docs:"Return",cost:.1}),zc=O("try",h.object({try:h.array(h.any),catch:h.array(h.any).optional,catchParam:h.string.optional}),void 0,async(e,t)=>{if(await ge.exec({op:"seq",steps:e.try},t),t.error&&e.catch){let n=e.catchParam||"error";t.state[n]=t.error.message,t.state.errorOp=t.error.op,t.error=void 0,await ge.exec({op:"seq",steps:e.catch},t)}},{docs:"Try/Catch",timeoutMs:0,cost:.1}),Gc=O("Error",h.object({args:h.array(h.any).optional}),void 0,async(e,t)=>{let n=e.args?.[0]??"Error";t.error=new pe(String(n),"Error")},{docs:"Trigger error flow",cost:.1}),Hc=O("varSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{if(n.consts.has(e))throw new Error(`Cannot reassign const variable '${e}'`);n.state[e]=C(t,n)},{docs:"Set Variable",cost:.1}),Zc=O("constSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{if(n.consts.has(e))throw new Error(`Cannot reassign const variable '${e}'`);if(e in n.state)throw new Error(`Cannot redeclare variable '${e}' as const`);n.state[e]=C(t,n),n.consts.add(e)},{docs:"Set Const Variable (immutable)",cost:.1}),Yc=O("varGet",h.object({key:h.string}),h.any,async({key:e},t)=>C(e,t),{docs:"Get Variable",cost:.1}),Xc=O("varsImport",h.object({keys:h.union([h.array(h.string),h.record(h.string)])}),void 0,async({keys:e},t)=>{if(Array.isArray(e))for(let n of e)t.state[n]=C({$kind:"arg",path:n},t);else for(let[n,r]of Object.entries(e))t.state[n]=C({$kind:"arg",path:r},t)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:.2}),Qc=O("varsLet",h.record(h.any),void 0,async(e,t)=>{for(let n of Object.keys(e))n==="op"||n==="result"||(t.state[n]=C(e[n],t))},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:.1}),el=O("varsExport",h.object({keys:h.union([h.array(h.string),h.record(h.string)])}),h.record(h.any),async({keys:e},t)=>{let n={};if(Array.isArray(e))for(let r of e)n[r]=C(r,t);else for(let[r,s]of Object.entries(e))n[r]=C(s,t);return n},{docs:"Export variables from the current scope, with optional renaming.",cost:.2}),tl=O("scope",h.object({steps:h.array(h.any)}),void 0,async({steps:e},t)=>{let n=Oe(t);await ge.exec({op:"seq",steps:e},n),n.output!==void 0&&(t.output=n.output)},{docs:"Create new scope",timeoutMs:0,cost:.1}),nl=O("map",h.object({items:h.array(h.any),as:h.string,steps:h.array(h.any)}),h.array(h.any),async({items:e,as:t,steps:n},r)=>{let s=[],i=C(e,r);if(!Array.isArray(i))throw new Error("map: items is not an array");for(let o of i){if(r.signal?.aborted)throw new Error("Execution aborted");let a=Oe(r);a.state[t]=o,await ge.exec({op:"seq",steps:n},a),s.push(a.state.result??null)}return s},{docs:"Map Array",timeoutMs:0,cost:1}),rl=O("filter",h.object({items:h.array(h.any),as:h.string,condition:h.any}),h.array(h.any),async({items:e,as:t,condition:n},r)=>{let s=[],i=C(e,r);if(!Array.isArray(i))throw new Error("filter: items is not an array");for(let o of i){if(r.signal?.aborted)throw new Error("Execution aborted");let a=Oe(r);a.state[t]=o,X(n,a)&&s.push(o)}return s},{docs:"Filter Array",timeoutMs:0,cost:1}),sl=O("reduce",h.object({items:h.array(h.any),as:h.string,accumulator:h.string,initial:h.any,steps:h.array(h.any)}),h.any,async({items:e,as:t,accumulator:n,initial:r,steps:s},i)=>{let o=C(e,i),a=C(r,i);if(!Array.isArray(o))throw new Error("reduce: items is not an array");let c=a;for(let l of o){if(i.signal?.aborted)throw new Error("Execution aborted");let u=Oe(i);u.state[t]=l,u.state[n]=c,await ge.exec({op:"seq",steps:s},u),c=u.state.result??c}return c},{docs:"Reduce Array",timeoutMs:0,cost:1}),il=O("find",h.object({items:h.array(h.any),as:h.string,condition:h.any}),h.any,async({items:e,as:t,condition:n},r)=>{let s=C(e,r);if(!Array.isArray(s))throw new Error("find: items is not an array");for(let i of s){if(r.signal?.aborted)throw new Error("Execution aborted");let o=Oe(r);if(o.state[t]=i,X(n,o))return i}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),ol=O("push",h.object({list:h.array(h.any),item:h.any}),h.array(h.any),async({list:e,item:t},n)=>{let r=C(e,n),s=C(t,n);return Array.isArray(r)&&r.push(s),r},{docs:"Push to Array",cost:1}),al=O("len",h.object({list:h.any}),h.number,async({list:e},t)=>{let n=C(e,t);return Array.isArray(n)||typeof n=="string"?n.length:0},{docs:"Length",cost:1}),cl=O("split",h.object({str:h.string,sep:h.string}),h.array(h.string),async({str:e,sep:t},n)=>C(e,n).split(C(t,n)),{docs:"Split String",cost:1}),ll=O("join",h.object({list:h.array(h.string),sep:h.string}),h.string,async({list:e,sep:t},n)=>C(e,n).join(C(t,n)),{docs:"Join String",cost:1}),ul=O("template",h.object({tmpl:h.string,vars:h.record(h.any)}),h.string,async({tmpl:e,vars:t},n)=>C(e,n).replace(/\{\{(\w+)\}\}/g,(s,i)=>String(C(t[i],n)??"")),{docs:"String Template",cost:1}),fl=O("regexMatch",h.object({pattern:h.string,value:h.any}),h.boolean,async({pattern:e,value:t},n)=>{if(Fc(e))throw new Error(`Suspicious regex pattern rejected (potential ReDoS): ${e}`);let r=C(t,n);return new RegExp(e).test(r)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),pl=O("pick",h.object({obj:h.record(h.any),keys:h.array(h.string)}),h.record(h.any),async({obj:e,keys:t},n)=>{let r=C(e,n),s=C(t,n),i={};return r&&Array.isArray(s)&&s.forEach(o=>i[o]=r[o]),i},{docs:"Pick Keys",cost:1}),ml=O("omit",h.object({obj:h.record(h.any),keys:h.array(h.string)}),h.record(h.any),async({obj:e,keys:t},n)=>{let r=C(e,n),s=new Set(C(t,n)),i={};return r&&Object.keys(r).forEach(o=>{s.has(o)||(i[o]=r[o])}),i},{docs:"Omit Keys",cost:1}),dl=O("merge",h.object({a:h.record(h.any),b:h.record(h.any)}),h.record(h.any),async({a:e,b:t},n)=>({...C(e,n),...C(t,n)}),{docs:"Merge Objects",cost:1}),yl=O("keys",h.object({obj:h.record(h.any)}),h.array(h.string),async({obj:e},t)=>Object.keys(C(e,t)??{}),{docs:"Object Keys",cost:1}),Ei=10,$i="X-Agent-Depth";function gl(e,t){try{let r=new URL(e).hostname.toLowerCase();for(let s of t){let i=s.toLowerCase();if(i.startsWith("*.")){let o=i.slice(1);if(r.endsWith(o)||r===i.slice(2))return!0}else if(r===i)return!0}return!1}catch{return!1}}var hl=O("httpFetch",h.object({url:h.string,method:h.string.optional,headers:h.record(h.string).optional,body:h.any.optional,responseType:h.string.optional}),h.any,async(e,t)=>{let n=C(e.url,t),r=C(e.method,t),s=C(e.headers,t)||{},i=C(e.body,t),o=C(e.responseType,t),a=t.context?.requestDepth??0;if(a>=Ei)throw new Error(`Agent request depth exceeded (max ${Ei}). This prevents recursive agent loops.`);if(t.capabilities.fetch)return t.capabilities.fetch(n,{method:r,headers:{...s,[$i]:String(a+1)},body:i,signal:t.signal,responseType:o});let c=t.context?.allowedFetchDomains;if(c){if(!gl(n,c))throw new Error(`Fetch blocked: domain not in allowlist. Allowed: ${c.join(", ")}`)}else{if(Lc(n))throw new Error("Blocked URL: private/internal addresses not allowed in default fetch");try{let u=new URL(n).hostname.toLowerCase();if(u!=="localhost"&&u!=="127.0.0.1"&&u!=="[::1]")throw new Error("Fetch blocked: no allowedFetchDomains configured. Set ctx.context.allowedFetchDomains or provide a custom fetch capability.")}catch(l){throw l.message.includes("allowedFetchDomains")?l:new Error(`Invalid URL: ${n}`)}}if(typeof globalThis.fetch=="function"){let l=await globalThis.fetch(n,{method:r,headers:{...s,[$i]:String(a+1)},body:i?JSON.stringify(i):void 0,signal:t.signal});if(o==="dataUrl"){let p=await l.arrayBuffer(),f=new Uint8Array(p),m="";for(let b=0;b<f.length;b++)m+=String.fromCharCode(f[b]);let d=btoa(m);return`data:${l.headers.get("content-type")||"application/octet-stream"};base64,${d}`}let u=l.headers.get("content-type");return o==="json"||u&&u.includes("application/json")?l.json():l.text()}throw new Error("Capability 'fetch' missing and no global fetch available")},{docs:"HTTP Fetch",timeoutMs:3e4,cost:5}),bl=O("storeGet",h.object({key:h.string}),h.any,async({key:e},t)=>{let n=C(e,t);return t.capabilities.store?.get(n)},{docs:"Store Get",cost:5}),xl=O("storeSet",h.object({key:h.string,value:h.any}),void 0,async({key:e,value:t},n)=>{let r=C(e,n),s=C(t,n);return n.capabilities.store?.set(r,s)},{docs:"Store Set",cost:5}),Tl=O("storeQuery",h.object({query:h.any}),h.array(h.any),async({query:e},t)=>t.capabilities.store?.query?.(C(e,t))??[],{docs:"Store Query",cost:5}),Sl=O("storeVectorSearch",h.object({collection:h.string.optional,vector:h.array(h.number),k:h.number.optional}),h.array(h.any),async({collection:e,vector:t,k:n},r)=>r.capabilities.store?.vectorSearch?.(C(e,r),C(t,r),C(n,r))??[],{docs:"Vector Search",cost:(e,t)=>5+(C(e.k,t)??5)}),wl=O("llmPredict",h.object({prompt:h.string,options:h.any.optional}),h.string,async({prompt:e,options:t},n)=>{if(!n.capabilities.llm?.predict)throw new Error("Capability 'llm.predict' missing");return n.capabilities.llm.predict(C(e,n),C(t,n))},{docs:"LLM Predict",timeoutMs:12e4,cost:100}),El=O("agentRun",h.object({agentId:h.any,input:h.any}),h.any,async({agentId:e,input:t},n)=>{let r=C(e,n),s=C(t,n),i=s;if(s&&typeof s=="object"&&!Array.isArray(s)){i={};for(let a in s)i[a]=C(s[a],n)}if(Rr(r)){let a=Pr(r),c={...n,args:i,state:{},consts:new Set,output:void 0,error:void 0},l=n.resolver("seq");if(!l)throw new Error("seq atom not found");if(await l.exec(a,c),c.error)throw new Error(c.error.message||"Sub-agent failed");return c.output}if(r&&typeof r=="object"&&"op"in r){let a={...n,args:i,state:{},consts:new Set,output:void 0,error:void 0},c=n.resolver("seq");if(!c)throw new Error("seq atom not found");if(await c.exec(r,a),a.error)throw new Error(a.error.message||"Sub-agent failed");return a.output}if(!n.capabilities.agent?.run)throw new Error("Capability 'agent.run' missing");let o=await n.capabilities.agent.run(r,i);if(o&&typeof o=="object"&&"fuelUsed"in o&&typeof o.fuelUsed=="number"){if(o.error)throw new Error(o.error.message||"Sub-agent failed");return o.result}return o},{docs:"Run Sub-Agent (accepts procedure token, AST, or agent ID)",cost:1}),$l=O("transpileCode",h.object({code:h.string}),h.any,async({code:e},t)=>{if(!t.capabilities.code?.transpile)throw new Error("Capability 'code.transpile' missing. Enable code transpilation by providing the code capability.");let n=C(e,t);try{return t.capabilities.code.transpile(n)}catch(r){throw new Error(`Code transpilation failed: ${r.message}`)}},{docs:"Transpile AsyncJS code to AST",cost:1}),_i=10,_l=O("runCode",h.object({code:h.string,args:h.record(h.any).optional}),h.any,async({code:e,args:t},n)=>{let r=n.runCodeDepth??0;if(r>=_i)throw new Error(`runCode recursion limit exceeded (max ${_i}). This prevents infinite loops from dynamically generated code calling runCode.`);if(!n.capabilities.code?.transpile)throw new Error("Capability 'code.transpile' missing. Enable dynamic code execution by providing the code capability.");let s=C(e,n),i=t?C(t,n):{},o;try{o=n.capabilities.code.transpile(s)}catch(c){throw new Error(`Code transpilation failed: ${c.message}`)}if(o.op!=="seq")throw new Error("Transpiled code must be a seq node");let a=Oe(n);if(a.args=i,a.output=void 0,a.runCodeDepth=r+1,await ge.exec(o,a),a.error){n.error=a.error;return}return a.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),kl=O("jsonParse",h.object({str:h.string}),h.any,async({str:e},t)=>JSON.parse(C(e,t)),{docs:"Parse JSON",cost:1}),jl=O("jsonStringify",h.object({value:h.any}),h.string,async({value:e},t)=>JSON.stringify(C(e,t)),{docs:"Stringify JSON",cost:1}),vl=O("xmlParse",h.object({str:h.string}),h.any,async({str:e},t)=>{if(!t.capabilities.xml?.parse)throw new Error("Capability 'xml.parse' missing");return t.capabilities.xml.parse(C(e,t))},{docs:"Parse XML",cost:1}),Al=O("memoize",h.object({key:h.string.optional,steps:h.array(h.any)}),h.any,async({key:e,steps:t},n)=>{n.memo||(n.memo=new Map);let r=C(e,n)??await Ir.exec({value:t,algorithm:"SHA-256"},n);if(n.memo.has(r))return n.memo.get(r);let s=Oe(n);await ge.exec({op:"seq",steps:t},s);let i=s.output??s.state.result;return n.memo.set(r,i),i},{docs:"Memoize steps result in memory",cost:1}),Ml=O("cache",h.object({key:h.string.optional,steps:h.array(h.any),ttlMs:h.number.optional}),h.any,async({key:e,steps:t,ttlMs:n},r)=>{if(!r.capabilities.store)throw new Error("Capability 'store' missing for caching");let i=`cache:${C(e,r)??await Ir.exec({value:t,algorithm:"SHA-256"},r)}`,o=await r.capabilities.store.get(i);if(o)if(typeof o=="object"&&o._exp){if(Date.now()<o._exp)return o.val}else return o;let a=Oe(r);await ge.exec({op:"seq",steps:t},a);let c=a.output??a.state.result,l=Date.now()+(n??24*3600*1e3);if((r.fuel.current-=5)<=0)throw new Error("Out of Fuel");return await r.capabilities.store.set(i,{val:c,_exp:l}),c},{docs:"Cache steps result in store with TTL",cost:5}),Cl=O("random",h.object({min:h.number.optional,max:h.number.optional,format:h.string.optional,length:h.number.optional}),h.any,async({min:e,max:t,format:n,length:r},s)=>{let i=C(n,s)??"float",o=C(r,s)??10,a=C(e,s)??0,c=C(t,s)??1;if(i==="base36"){let f="0123456789abcdefghijklmnopqrstuvwxyz",m="";if(typeof crypto<"u"&&crypto.getRandomValues){let d=new Uint8Array(o);crypto.getRandomValues(d);for(let y=0;y<o;y++)m+=f[d[y]%36]}else for(let d=0;d<o;d++)m+=f.charAt(Math.floor(Math.random()*36));return m}let l;if(typeof crypto<"u"&&crypto.getRandomValues){let f=new Uint32Array(1);crypto.getRandomValues(f),l=f[0]/4294967296}else l=Math.random();let u=c-a,p=l*u+a;return i==="integer"?Math.floor(p):p},{docs:"Generate Random",cost:1}),Nl=O("uuid",void 0,h.string,async()=>{if(typeof crypto<"u"&&crypto.randomUUID)return crypto.randomUUID();if(typeof crypto<"u"&&crypto.getRandomValues){let e=new Uint8Array(16);crypto.getRandomValues(e),e[6]=e[6]&15|64,e[8]=e[8]&63|128;let t=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return`${t.slice(0,8)}-${t.slice(8,12)}-${t.slice(12,16)}-${t.slice(16,20)}-${t.slice(20)}`}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})},{docs:"Generate UUID",cost:1}),Ir=O("hash",h.object({value:h.any,algorithm:h.string.optional}),h.string,async({value:e,algorithm:t},n)=>{let r=typeof e=="string"?e:JSON.stringify(C(e,n)),s=C(t,n)||"SHA-256";if(typeof crypto<"u"&&crypto.subtle){let a=new TextEncoder().encode(r),c=await crypto.subtle.digest(s,a);return Array.from(new Uint8Array(c)).map(u=>u.toString(16).padStart(2,"0")).join("")}let i=0;for(let o=0;o<r.length;o++){let a=r.charCodeAt(o);i=(i<<5)-i+a,i|=0}return String(i)},{docs:"Hash a value",cost:1}),Rl=O("consoleLog",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=C(e,t);t.trace&&t.trace.push({op:"console.log",input:{message:n},stateDiff:{},result:n,fuelBefore:t.fuel.current,fuelAfter:t.fuel.current,timestamp:new Date().toISOString()})},{docs:"Log to trace",cost:.1}),Pl=O("consoleWarn",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=C(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.warnings||(t.warnings=[]),t.warnings.push(r),t.trace&&t.trace.push({op:"console.warn",input:{message:n},stateDiff:{},result:n,fuelBefore:t.fuel.current,fuelAfter:t.fuel.current,timestamp:new Date().toISOString()})},{docs:"Add warning",cost:.1}),Il=O("consoleError",h.object({message:h.any}),void 0,async({message:e},t)=>{let n=C(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.error=new pe(r,"console.error")},{docs:"Emit error and stop",cost:.1}),Dl=O("storeProcedure",h.object({ast:h.any,ttl:h.number.optional,maxSize:h.number.optional}),h.string,async({ast:e,ttl:t,maxSize:n},r)=>{let s=C(e,r),i=t?C(t,r):Ic,o=n?C(n,r):Dc;if(!s||typeof s!="object"||!s.op)throw new Error('Invalid AST: must be an object with an "op" property');let a=JSON.stringify(s);if(a.length>o)throw new Error(`AST too large: ${a.length} bytes exceeds limit of ${o} bytes. Consider reducing AST size or using a shorter TTL.`);let c=Oc(),l=Date.now();return lt.set(c,{ast:s,createdAt:l,expiresAt:l+i}),c},{docs:"Store an AST and return a token for later execution",cost:1}),Ol=O("releaseProcedure",h.object({token:h.string}),h.boolean,async({token:e},t)=>{let n=C(e,t);return lt.delete(n)},{docs:"Release a stored procedure by token",cost:.1}),Bl=O("clearExpiredProcedures",void 0,h.number,async()=>{let e=Date.now(),t=0;for(let[n,r]of lt)e>r.expiresAt&&(lt.delete(n),t++);return t},{docs:"Clear all expired procedures and return count",cost:.5}),On={seq:ge,if:Wc,while:Vc,return:Kc,try:zc,Error:Gc,varSet:Hc,constSet:Zc,varGet:Yc,varsImport:Xc,varsLet:Qc,varsExport:el,scope:tl,map:nl,filter:rl,reduce:sl,find:il,push:ol,len:al,split:cl,join:ll,template:ul,regexMatch:fl,pick:pl,omit:ml,merge:dl,keys:yl,httpFetch:hl,storeGet:bl,storeSet:xl,storeQuery:Tl,storeVectorSearch:Sl,llmPredict:wl,agentRun:El,transpileCode:$l,runCode:_l,jsonParse:kl,jsonStringify:jl,xmlParse:vl,memoize:Al,cache:Ml,random:Cl,uuid:Nl,hash:Ir,consoleLog:Rl,consoleWarn:Pl,consoleError:Il,storeProcedure:Dl,releaseProcedure:Ol,clearExpiredProcedures:Bl};var Ll=new Set(["true","false","null","undefined","and","or","not"]);function Fl(e,t){let n=e.replace(/"[^"]*"/g,'""').replace(/'[^']*'/g,"''"),r=[],s=/(?<![.])\b([a-zA-Z_][a-zA-Z0-9_]*)\b/g,i;for(;(i=s.exec(n))!==null;)r.push(i[1]);let a=[...new Set(r)].filter(c=>!Ll.has(c)&&!(c in t)&&!new RegExp(`\\b${c}\\s*\\(`).test(n));a.length>0&&console.warn(`[Agent99 Builder] Condition "${e}" references variables not in vars mapping: ${a.join(", ")}. Add them to vars or use AsyncJS syntax (ajs\`...\`) which handles this automatically.`)}function Bn(e,t){Fl(e,t);let n=Ul(e),r=Ni(n,0,t);if(r.pos<n.length){let s=n.slice(r.pos).join(" ");throw new Error(`Unsupported condition syntax near '${s}' in: ${e}
455
+ Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return r.node}function Ul(e){let t=[],n=0;for(;n<e.length;){for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)break;if(e[n]==='"'||e[n]==="'"){let r=e[n++],s="";for(;n<e.length&&e[n]!==r;)e[n]==="\\"&&n+1<e.length&&n++,s+=e[n++];n++,t.push(JSON.stringify(s));continue}if(e.slice(n,n+2).match(/^(&&|\|\||==|!=|>=|<=)$/)){t.push(e.slice(n,n+2)),n+=2;continue}if("+-*/%><!().?:[]".includes(e[n])){t.push(e[n]),n++;continue}if(/\d/.test(e[n])){let r="";for(;n<e.length&&/[\d.]/.test(e[n]);)r+=e[n++];t.push(r);continue}if(/[a-zA-Z_]/.test(e[n])){let r="";for(;n<e.length&&/[a-zA-Z0-9_]/.test(e[n]);)r+=e[n++];t.push(r);continue}n++}return t}function Ni(e,t,n){return ql(e,t,n)}function ql(e,t,n){let{node:r,pos:s}=vi(e,t,n);for(;e[s]==="||";){s++;let{node:i,pos:o}=vi(e,s,n);r={$expr:"logical",op:"||",left:r,right:i},s=o}return{node:r,pos:s}}function vi(e,t,n){let{node:r,pos:s}=Ai(e,t,n);for(;e[s]==="&&";){s++;let{node:i,pos:o}=Ai(e,s,n);r={$expr:"logical",op:"&&",left:r,right:i},s=o}return{node:r,pos:s}}function Ai(e,t,n){let{node:r,pos:s}=Mi(e,t,n),i=["==","!=",">","<",">=","<="];for(;i.includes(e[s]);){let o=e[s++],{node:a,pos:c}=Mi(e,s,n);r={$expr:"binary",op:o,left:r,right:a},s=c}return{node:r,pos:s}}function Mi(e,t,n){let{node:r,pos:s}=Ci(e,t,n);for(;e[s]==="+"||e[s]==="-";){let i=e[s++],{node:o,pos:a}=Ci(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function Ci(e,t,n){let{node:r,pos:s}=Dr(e,t,n);for(;e[s]==="*"||e[s]==="/"||e[s]==="%";){let i=e[s++],{node:o,pos:a}=Dr(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function Dr(e,t,n){if(e[t]==="!"||e[t]==="-"){let r=e[t++],{node:s,pos:i}=Dr(e,t,n);return{node:{$expr:"unary",op:r,argument:s},pos:i}}return Jl(e,t,n)}function Jl(e,t,n){let r=e[t];if(r==="("){let{node:s,pos:i}=Ni(e,t+1,n);return{node:s,pos:i+1}}if(r&&r.startsWith('"'))return{node:{$expr:"literal",value:JSON.parse(r)},pos:t+1};if(r&&/^\d/.test(r))return{node:{$expr:"literal",value:parseFloat(r)},pos:t+1};if(r==="true")return{node:{$expr:"literal",value:!0},pos:t+1};if(r==="false")return{node:{$expr:"literal",value:!1},pos:t+1};if(r==="null")return{node:{$expr:"literal",value:null},pos:t+1};if(r&&/^[a-zA-Z_]/.test(r)){let s={$expr:"ident",name:r},i=t+1;for(;e[i]===".";){i++;let o=e[i++];s={$expr:"member",object:s,property:o}}return{node:s,pos:i}}return{node:{$expr:"literal",value:null},pos:t+1}}var Ye=class e{steps=[];atoms;proxy;constructor(t){return this.atoms=t,this.proxy=new Proxy(this,{get:(n,r,s)=>{if(r in n)return n[r];if(typeof r=="string"&&r in n.atoms)return i=>{let o=n.atoms[r];return n.add(o.create(i)),s}}}),this.proxy}add(t){return this.steps.push(t),this.proxy}as(t){if(this.steps.length===0)throw new Error("No step to capture");let n=this.steps[this.steps.length-1];return n.result=t,this.proxy}step(t){return this.add(t)}return(t){let n=this.atoms.return;if(!n)throw new Error("Atom 'return' not found");let r=t.schema??t;return this.add(n.create({schema:r}))}toJSON(){return{op:"seq",steps:[...this.steps]}}varsImport(t){return this.add(this.atoms.varsImport.create({keys:t}))}varsExport(t){return this.add(this.atoms.varsExport.create({keys:t}))}if(t,n,r,s){let i=new e(this.atoms);r(i);let o;if(s){let l=new e(this.atoms);s(l),o=l.steps}let a=Bn(t,n),c=this.atoms.if;return this.add(c.create({condition:a,then:i.steps,else:o}))}while(t,n,r){let s=new e(this.atoms);r(s);let i=Bn(t,n),o=this.atoms.while;return this.add(o.create({condition:i,body:s.steps}))}scope(t){let n=new e(this.atoms);t(n);let r=this.atoms.scope;return this.add(r.create({steps:n.steps}))}map(t,n,r){let s=new e(this.atoms);r(s);let i=this.atoms.map;return this.add(i.create({items:t,as:n,steps:s.steps}))}filter(t,n,r,s={}){let i=Bn(r,s),o=this.atoms.filter;return this.add(o.create({items:t,as:n,condition:i}))}find(t,n,r,s={}){let i=Bn(r,s),o=this.atoms.find;return this.add(o.create({items:t,as:n,condition:i}))}reduce(t,n,r,s,i){let o=new e(this.atoms);i(o);let a=this.atoms.reduce;return this.add(a.create({items:t,as:n,accumulator:r,initial:s,steps:o.steps}))}memoize(t,n){let r=new e(this.atoms);t(r);let s=this.atoms.memoize;return this.add(s.create({key:n,steps:r.steps}))}cache(t,n,r){let s=new e(this.atoms);t(s);let i=this.atoms.cache;return this.add(i.create({key:n,steps:s.steps,ttlMs:r}))}try(t){let n=new e(this.atoms);t.try(n);let r;if(t.catch){let i=new e(this.atoms);t.catch(i),r=i.steps}let s=this.atoms.try;return this.add(s.create({try:n.steps,catch:r}))}},Wl={take(e){return new Ye(On)},custom(e){return new Ye(e)},args(e){return{$kind:"arg",path:e}},val(e){return e}},Cp=Wl;import{validate as Vl}from"tosijs-schema";function Dt(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=ke(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),o=Zt(n,t.filename),{ast:a,signature:c,warnings:l}=Et(o,s,r,t,i);return{ast:a,signature:c,warnings:l}}var Kl=10,Ln=class{atoms;constructor(t={}){this.atoms={...On,...t}}get builder(){return new Ye(this.atoms)}get Agent(){return new Ye(this.atoms)}get A99(){return this.Agent}resolve(t){return this.atoms[t]}getTools(t="all"){let n=Object.values(this.atoms);if(Array.isArray(t))n=n.filter(r=>t.includes(r.op));else if(t==="flow"){let r=["seq","if","while","return","try","varSet","varGet","scope"];n=n.filter(s=>r.includes(s.op))}return n.map(r=>({type:"function",function:{name:r.op,description:r.docs,parameters:r.inputSchema?.schema??{}}}))}async run(t,n={},r={}){let s;if(typeof t=="string")if(Rr(t))s=Pr(t);else try{s=Dt(t).ast}catch(d){throw new Error(`AJS transpilation failed: ${d.message}`)}else s=t;let i=r.fuel??1e3,o=r.timeoutMs??i*Kl,a=r.capabilities??{},c=[];if(!a.store){let d=new Map,y=!1;a.store={get:async b=>(y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.get(b)),set:async(b,w)=>{y||(y=!0,c.push("Using default in-memory store (not suitable for production)")),d.set(b,w)}}}let l=new AbortController,u=setTimeout(()=>l.abort(),o);r.signal&&r.signal.addEventListener("abort",()=>l.abort());let p={fuel:{current:i},args:n,state:{},consts:new Set,capabilities:a,resolver:d=>this.resolve(d),output:void 0,signal:l.signal,costOverrides:r.costOverrides,context:r.context,warnings:c};if(r.trace&&(p.trace=[]),s.op!=="seq")throw new Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let f=s.inputSchema;if(f&&!Vl(n,f)){let d=new pe("Input validation failed: args do not match expected schema","vm.run");return{result:d,error:d,fuelUsed:0,trace:p.trace,warnings:c.length>0?c:void 0}}try{await Promise.race([this.resolve("seq")?.exec(s,p),new Promise((d,y)=>{l.signal.addEventListener("abort",()=>{y(new Error(`Execution timeout after ${o}ms (fuel: ${i}). Consider increasing fuel or optimizing your agent.`))}),l.signal.aborted&&y(new Error(`Execution timeout after ${o}ms (fuel: ${i}). Consider increasing fuel or optimizing your agent.`))})])}catch(d){if(d.message?.includes("timeout")||d.message?.includes("aborted")||l.signal.aborted)p.error=new pe(`Execution timeout after ${o}ms (fuel: ${i}). Consider increasing fuel or optimizing your agent.`,"vm.run");else throw d}finally{clearTimeout(u)}p.error&&p.output===void 0&&(p.output=p.error);let m=[...c,...p.warnings??[]];return{result:p.output,error:p.error,fuelUsed:i-p.fuel.current,trace:p.trace,warnings:m.length>0?m:void 0}}};var zl=null,Ri=()=>zl??=new Ln;function Xe(e){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let t of e)Xe(t);return}e.op==="return"&&"value"in e&&(e.value={__result:e.value}),e.steps&&Xe(e.steps),e.then&&Xe(e.then),e.else&&Xe(e.else),e.body&&Xe(e.body)}}async function Gl(e){let{code:t,context:n={},fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=Ri(),c=/\breturn\b/.test(t)?`function __eval() { ${t} }`:`function __eval() { return (${t}) }`;try{let{ast:l}=Dt(c);Xe(l);let u=await o.run(l,n,{fuel:r,timeoutMs:s,capabilities:i}),p=u.result;return{result:p&&typeof p=="object"&&"__result"in p?p.__result:p,fuelUsed:u.fuelUsed,error:u.error?{message:u.error.message||String(u.error)}:void 0}}catch(l){return{result:void 0,fuelUsed:r,error:{message:l.message||String(l)}}}}async function Hl(e){let{body:t,params:n=[],fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=Ri(),c=`function __safeFn(${n.join(", ")}) { ${t} }`,{ast:l}=Dt(c);return Xe(l),async(...u)=>{let p={};for(let f=0;f<n.length;f++)p[n[f]]=u[f];try{let f=await o.run(l,p,{fuel:r,timeoutMs:s,capabilities:i}),m=f.result;return{result:m&&typeof m=="object"&&"__result"in m?m.__result:m,fuelUsed:f.fuelUsed,error:f.error?{message:f.error.message||String(f.error)}:void 0}}catch(f){return{result:void 0,fuelUsed:r,error:{message:f.message||String(f)}}}}}function Fn(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=ke(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),o=Zt(n,t.filename),{ast:a,signature:c,warnings:l}=Et(o,s,r,t,i);return{ast:a,signature:c,warnings:l}}function Zp(e,...t){if(typeof e=="string")return Fn(e).ast;let n=e.reduce((r,s,i)=>r+s+(t[i]!==void 0?String(t[i]):""),"");return Fn(n).ast}function Xp(e,t,...n){if(typeof e=="string")return Pt(e,t);let r=t!==void 0?[t,...n]:n,s=e.reduce((i,o,a)=>i+o+(r[a]!==void 0?String(r[a]):""),"");return Pt(s)}async function Qp(e,t={},n){let r=n??await Nn(),s=await r.getTranspile(e);if(s)return{ast:s.ast,signature:s.signature,warnings:s.warnings};let i=Fn(e,t);return r.setTranspile(e,{ast:i.ast,signature:i.signature,warnings:i.warnings}),i}async function em(e,t={},n){let r=n??await Nn(),s=await r.getTJS(e);if(s)return{code:s.code,types:s.types,metadata:s.types,testRunner:s.testRunner,testCount:s.testCount,warnings:s.warnings};let i=Pt(e,t);return r.setTJS(e,{code:i.code,types:i.types,testRunner:i.testRunner,testCount:i.testCount,warnings:i.warnings}),i}function tm(e,t,n){let{ast:r,signature:s}=Fn(e),i=async o=>(await t.run(r,o,n)).result;return i.signature=s,i.ast=r,i}function nm(e){return Object.entries(e).map(([t,n])=>{let r=n.signature,s={},i=[];for(let[o,a]of Object.entries(r.parameters))s[o]=je(a.type),a.description&&(s[o].description=a.description),a.required&&i.push(o);return{type:"function",function:{name:r.name||t,description:r.description,parameters:{type:"object",properties:s,required:i}}}})}import{s as L}from"tosijs-schema";var Pi=O("storeVectorize",L.object({text:L.string,model:L.string.optional}),L.array(L.number),async({text:e},t)=>{let n=t.capabilities.vector;if(!n)throw new Error("Capability 'vector' missing. Ensure vector battery is loaded.");let r=C(e,t);return n.embed(r)},{docs:"Generate embeddings using vector battery",cost:20}),Ii=O("storeCreateCollection",L.object({collection:L.string,dimension:L.number.optional}),void 0,async({collection:e,dimension:t},n)=>{let r=n.capabilities.store;if(!r?.createCollection)throw new Error("Capability 'store' missing or does not support createCollection.");let s=C(e,n),i=C(t,n);return r.createCollection(s,void 0,i)},{docs:"Create a vector store collection",cost:5}),Di=O("storeVectorAdd",L.object({collection:L.string,doc:L.any}),void 0,async({collection:e,doc:t},n)=>{let r=n.capabilities.store;if(!r?.vectorAdd)throw new Error("Capability 'store' missing or does not support vectorAdd.");let s=C(e,n),i=C(t,n);return r.vectorAdd(s,i)},{docs:"Add a document to a vector store collection",cost:5}),Oi=O("storeSearch",L.object({collection:L.string,queryVector:L.array(L.number),k:L.number.optional,filter:L.record(L.any).optional}),L.array(L.any),async({collection:e,queryVector:t,k:n,filter:r},s)=>{let i=s.capabilities.store;if(!i?.vectorSearch)throw new Error("Capability 'store' missing or does not support vectorSearch.");let o=C(e,s),a=C(t,s),c=C(n,s)??5,l=C(r,s);return i.vectorSearch(o,a,c,l)},{docs:"Search vector store",cost:(e,t)=>5+(C(e.k,t)??5)}),Bi=O("llmPredictBattery",L.object({system:L.string.optional,user:L.union([L.string,L.array(L.any)]),tools:L.array(L.any).optional,responseFormat:L.any.optional}),L.object({role:L.string.optional,content:L.string.optional,tool_calls:L.array(L.any).optional}),async({system:e,user:t,tools:n,responseFormat:r},s)=>{let i=s.capabilities.llmBattery;if(!i?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let o=C(e,s)??"You are a helpful agent.",a=C(t,s),c=C(n,s),l=C(r,s);return i.predict(o,a,c,l)},{docs:"Generate completion using LLM battery",cost:100}),Li=O("llmVision",L.object({system:L.string.optional,prompt:L.string,images:L.array(L.string),responseFormat:L.any.optional}),L.object({role:L.string.optional,content:L.string.optional,tool_calls:L.array(L.any).optional}),async({system:e,prompt:t,images:n,responseFormat:r},s)=>{let i=s.capabilities.llmBattery;if(!i?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let o=C(e,s)??"You analyze images accurately and concisely.",a=C(t,s),c=C(n,s)??[],l=C(r,s);return i.predict(o,{text:a,images:c},void 0,l)},{docs:"Analyze images using a vision model",timeoutMs:12e4,cost:150});var _m={storeCreateCollection:Ii,storeSearch:Oi,storeVectorAdd:Di,storeVectorize:Pi,llmPredictBattery:Bi,llmVision:Li};var Fi=new Map,Un=new Map;function Zl(e,t){if(e.length!==t.length)throw new Error("Vectors must have the same length for cosine similarity.");let n=0,r=0,s=0;for(let i=0;i<e.length;i++)n+=e[i]*t[i],r+=e[i]*e[i],s+=t[i]*t[i];return r=Math.sqrt(r),s=Math.sqrt(s),r===0||s===0?0:n/(r*s)}function Or(){return{async get(e){return Fi.get(e)},async set(e,t){Fi.set(e,t)},async createCollection(e,t,n){Un.has(e)&&console.warn(`Collection '${e}' already exists. Overwriting.`),Un.set(e,[])},async vectorAdd(e,t){let n=Un.get(e);if(!n)throw new Error(`Collection '${e}' not found. Create it first.`);if(!t.embedding||!Array.isArray(t.embedding))throw new Error("Document must have an 'embedding' property that is an array of numbers.");n.push(t)},async vectorSearch(e,t,n=5){let r=Un.get(e);if(!r)throw new Error(`Collection '${e}' not found. Create it first.`);let s=r.map(i=>({doc:i,score:Zl(t,i.embedding)}));return s.sort((i,o)=>o.score-i.score),s.slice(0,n).map(i=>i.doc)}}}function Yl(e){if(typeof e=="string")return{role:"user",content:e};let t=[{type:"text",text:e.text}];for(let n of e.images||[])t.push({type:"image_url",image_url:{url:n}});return{role:"user",content:t}}var Xl="http://localhost:1234/v1";function Ui(e,t=Xl){return{async predict(n,r,s,i){try{let o=i?e.getStructuredLLM():e.getLLM(),a=[{role:"system",content:n},Yl(r)],c=await fetch(`${t}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:o.id,messages:a,temperature:.7,tools:s,response_format:i})});if(!c.ok)throw new Error(`LLM Error: ${c.status} ${c.statusText}`);return(await c.json()).choices[0]?.message??{content:""}}catch(o){throw o.cause?.code==="ECONNREFUSED"?new Error("No LLM provider configured. Please start LM Studio or provide an API key."):o}},async embed(n){try{let r=e.getEmbedding(),s=await fetch(`${t}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r.id,input:n})});if(!s.ok)throw new Error(`Embedding Error: ${s.status}`);return(await s.json()).data[0]?.embedding??[]}catch(r){throw r.cause?.code==="ECONNREFUSED"?new Error("No LLM provider configured. Please start LM Studio or provide an API key."):r}}}}var qn=".models.cache.json";var Ot=typeof window<"u"&&typeof window.localStorage<"u";async function Ql(e){try{if(Ot){let t=window.localStorage.getItem(qn);if(!t)return null;let n=JSON.parse(t);return n.baseUrl!==e||Date.now()-n.timestamp>864e5?null:n.models}else{let t=await import("node:fs/promises"),r=(await import("node:path")).join(process.cwd(),qn);try{let s=await t.readFile(r,"utf-8"),i=JSON.parse(s);return i.baseUrl!==e||Date.now()-i.timestamp>864e5?null:i.models}catch{return null}}}catch(t){return console.warn("\u26A0\uFE0F Error reading model cache:",t),null}}async function eu(e,t){let n={timestamp:Date.now(),baseUrl:e,models:t};try{if(Ot)window.localStorage.setItem(qn,JSON.stringify(n));else{let r=await import("node:fs/promises"),i=(await import("node:path")).join(process.cwd(),qn);await r.writeFile(i,JSON.stringify(n,null,2))}}catch(r){console.error("\u274C Error writing model cache:",r)}}var Bt=async(e,t)=>{let n=new AbortController,r=setTimeout(()=>n.abort(),6e4);try{let s=await fetch(e,{...t,signal:n.signal});return clearTimeout(r),s}catch(s){throw clearTimeout(r),s}};async function tu(e,t){try{let n={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},r=await Bt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"system",content:"You respond in JSON."},{role:"user",content:'Return JSON: {"status": "ok"}'}],response_format:n,max_tokens:20})});if(!r.ok)return r.status===400?nu(e,t):{ok:!1,msg:`HTTP ${r.status}`};let s=await r.json();return JSON.parse(s.choices[0].message.content),{ok:!0,msg:"OK (Schema)"}}catch(n){return{ok:!1,msg:n.message||"Error"}}}async function nu(e,t){try{return(await Bt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:'JSON: {"a":1}'}],response_format:{type:"json_object"},max_tokens:10})})).ok?{ok:!0,msg:"OK (Legacy Mode)"}:{ok:!1,msg:"Not Supported"}}catch{return{ok:!1,msg:"Legacy Fail"}}}async function ru(e,t){try{return(await Bt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:"hi"}],max_tokens:1})})).ok}catch{return!1}}async function su(e,t){try{let n=await Bt(`${e}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,input:"test"})});return n.ok?(await n.json()).data[0]?.embedding?.length??null:null}catch{return null}}var iu="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIAX8jx0gAAAABJRU5ErkJggg==";async function ou(e,t){try{return(await Bt(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:t,messages:[{role:"user",content:[{type:"text",text:"What color is this?"},{type:"image_url",image_url:{url:iu}}]}],max_tokens:10})})).ok}catch{return!1}}async function qi(e){let t=await Ql(e),n=[];try{let o=await fetch(`${e}/models`);if(!o.ok)throw new Error("Could not connect");n=(await o.json()).data.map(c=>c.id).sort()}catch{return t?(console.log("\u26A0\uFE0F LM Studio unavailable, using cached model audit."),t):(console.error("\u274C Failed to connect to LM Studio."),[])}if(t){let o=t.map(a=>a.id).sort();if(JSON.stringify(n)===JSON.stringify(o))return console.log("\u2705 Using cached model audit."),t;console.log("\u{1F50D} Model list changed. Re-running audit...")}console.log("\u{1F50D} Scanning models (this may take a moment)...");let r=[],s=n.map(o=>({id:o})),i;Ot||(i=await import("node:readline"));for(let o of s){!Ot&&i&&(i.cursorTo(process.stdout,0),process.stdout.write(`\u{1F449} Testing: ${o.id}...`),i.clearLine(process.stdout,1));let a="Unknown",c=!1,l=!1,u="",p,f=await ru(e,o.id),m=await su(e,o.id);if(m&&(p=m),f){a="LLM";let d=await tu(e,o.id);c=d.ok,l=await ou(e,o.id),u=c?d.msg:`Fail: ${d.msg}`,l&&(u+=" +Vision")}else m?(a="Embedding",u=`OK (Dim: ${m})`):u="LLM Fail";r.push({id:o.id,type:a,structuredOutput:c,vision:l,dimension:p,status:u})}return!Ot&&i&&(i.cursorTo(process.stdout,0),i.clearLine(process.stdout,0)),console.log(`
456
+ `),console.table(r),await eu(e,r),console.log("\u{1F4DD} Audit results saved to cache."),r}var au="http://localhost:1234/v1",Jn=class{constructor(t=au){this.baseUrl=t}baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;async audit(){this.models=await qi(this.baseUrl),this.selectDefaults()}selectDefaults(){this.defaultEmbedding=this.models.find(t=>t.type==="Embedding")||null,this.defaultLLM=this.models.find(t=>t.type==="LLM")||null,this.defaultStructuredLLM=this.models.find(t=>t.type==="LLM"&&t.structuredOutput)||null,this.defaultEmbedding||console.warn("\u26A0\uFE0F No embedding model found."),this.defaultLLM||console.warn("\u26A0\uFE0F No LLM found."),this.defaultStructuredLLM||console.warn("\u26A0\uFE0F No LLM with structured output support found.")}getModels(){return this.models}_setDefaultModel(t,n,r,s){let i=this.models.find(o=>o.id===t&&r(o));if(!i)throw new Error(`Model '${t}' not found or is not ${s}.`);this[n]=i}setDefaultLLM(t){this._setDefaultModel(t,"defaultLLM",n=>n.type==="LLM","an LLM")}setDefaultEmbedding(t){this._setDefaultModel(t,"defaultEmbedding",n=>n.dimension!==void 0,"an embedding model")}setDefaultStructuredLLM(t){this._setDefaultModel(t,"defaultStructuredLLM",n=>n.type==="LLM"&&n.structuredOutput,"a structured-output LLM")}getLLM(){if(!this.defaultLLM)throw new Error("No LLM available.");return this.defaultLLM}getEmbedding(){if(!this.defaultEmbedding)throw new Error("No embedding model available.");return this.defaultEmbedding}getStructuredLLM(){if(!this.defaultStructuredLLM)throw new Error("No structured-output LLM available.");return this.defaultStructuredLLM}};var cu=typeof window<"u",lu=cu&&window.location.protocol==="https:",Lt=null,Br=null,Ji=!1;async function uu(){if(Ji)return{localModels:Lt,llm:Br};if(Ji=!0,lu)return console.log("\u{1F4E1} HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{Lt=new Jn,await Lt.audit(),Br=Ui(Lt)}catch(e){console.warn("\u26A0\uFE0F Could not connect to local LLM:",e)}return{localModels:Lt,llm:Br}}async function fu(){let{localModels:e,llm:t}=await uu();return{vector:t?{embed:t.embed}:void 0,store:Or(),llmBattery:t,models:e}}async function Im(){return fu()}var Dm={store:Or(),llmBattery:null,vector:void 0,models:null};function pu(e){if(typeof e!="string")return!1;let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")}function mu(){return new Date().toISOString()}function ut(e,t,n,r=0,s=0,i=0,o=0){return new Date(Date.UTC(e,t-1,n,r,s,i,o)).toISOString()}function Wi(e){let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);return t.toISOString()}function du(e){try{return Wi(e)}catch{return null}}function Ft(e,t){let n=new Date(e);return n.setTime(n.getTime()+t),n.toISOString()}function yu(e,t){return Ft(e,t*1e3)}function gu(e,t){return Ft(e,t*60*1e3)}function hu(e,t){return Ft(e,t*60*60*1e3)}function Vi(e,t){return Ft(e,t*24*60*60*1e3)}function bu(e,t){return Vi(e,t*7)}function xu(e,t){let n=new Date(e),r=n.getUTCMonth()+t;return n.setUTCMonth(r),n.getUTCMonth()!==(r%12+12)%12&&n.setUTCDate(0),n.toISOString()}function Tu(e,t){let n=new Date(e),r=n.getUTCDate();return n.setUTCFullYear(n.getUTCFullYear()+t),n.getUTCDate()!==r&&n.setUTCDate(0),n.toISOString()}function Be(e,t){return new Date(e).getTime()-new Date(t).getTime()}function Su(e,t){return Math.floor(Be(e,t)/1e3)}function wu(e,t){return Math.floor(Be(e,t)/(60*1e3))}function Eu(e,t){return Math.floor(Be(e,t)/(3600*1e3))}function $u(e,t){return Math.floor(Be(e,t)/(1440*60*1e3))}function ft(e){return new Date(e).getUTCFullYear()}function Wn(e){return new Date(e).getUTCMonth()+1}function Lr(e){return new Date(e).getUTCDate()}function _u(e){return new Date(e).getUTCHours()}function ku(e){return new Date(e).getUTCMinutes()}function ju(e){return new Date(e).getUTCSeconds()}function vu(e){return new Date(e).getUTCMilliseconds()}function Au(e){let t=new Date(e).getUTCDay();return t===0?7:t}function Vn(e,t,n){let r=new Date(e),s={timeZone:t,...n};return new Intl.DateTimeFormat(void 0,s).format(r)}function Mu(e,t){return Vn(e,t,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function Cu(e,t){return Vn(e,t,{year:"numeric",month:"short",day:"numeric"})}function Nu(e,t){return Vn(e,t,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function Ru(e){return e.slice(0,10)}function Ki(e,t){return Be(e,t)<0}function zi(e,t){return Be(e,t)>0}function Pu(e,t){return Be(e,t)===0}function Iu(e,t){return Ki(e,t)?e:t}function Du(e,t){return zi(e,t)?e:t}function Ou(e){return ut(ft(e),Wn(e),Lr(e))}function Bu(e){return ut(ft(e),Wn(e),Lr(e),23,59,59,999)}function Lu(e){return ut(ft(e),Wn(e),1)}function Fu(e){let t=new Date(e);return t.setUTCMonth(t.getUTCMonth()+1,0),t.setUTCHours(23,59,59,999),t.toISOString()}function Uu(e){return ut(ft(e),1,1)}function qu(e){return ut(ft(e),12,31,23,59,59,999)}var pt={isValid:pu,now:mu,from:ut,parse:Wi,tryParse:du,addMilliseconds:Ft,addSeconds:yu,addMinutes:gu,addHours:hu,addDays:Vi,addWeeks:bu,addMonths:xu,addYears:Tu,diff:Be,diffSeconds:Su,diffMinutes:wu,diffHours:Eu,diffDays:$u,year:ft,month:Wn,day:Lr,hour:_u,minute:ku,second:ju,millisecond:vu,dayOfWeek:Au,toLocal:Vn,format:Mu,formatDate:Cu,formatTime:Nu,toDate:Ru,isBefore:Ki,isAfter:zi,isEqual:Pu,min:Iu,max:Du,startOfDay:Ou,endOfDay:Bu,startOfMonth:Lu,endOfMonth:Fu,startOfYear:Uu,endOfYear:qu};function Fr(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=parseInt(e.slice(0,4),10),n=parseInt(e.slice(5,7),10),r=parseInt(e.slice(8,10),10);if(n<1||n>12||r<1)return!1;let s=[31,28,31,30,31,30,31,31,30,31,30,31],i=n===2&&(t%4===0&&t%100!==0||t%400===0)?29:s[n-1];return r<=i}function Ju(){return pt.toDate(pt.now())}function Wu(e){let t=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).format(t)}function he(e,t,n){let r=String(e).padStart(4,"0"),s=String(t).padStart(2,"0"),i=String(n).padStart(2,"0"),o=`${r}-${s}-${i}`;if(!Fr(o))throw new Error(`Invalid date: ${e}-${t}-${n}`);return o}function Gi(e){if(/^\d{4}-\d{2}-\d{2}$/.test(e)){if(!Fr(e))throw new Error(`Invalid date: ${e}`);return e}let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);let n=t.getUTCFullYear(),r=t.getUTCMonth()+1,s=t.getUTCDate();return he(n,r,s)}function Vu(e){try{return Gi(e)}catch{return null}}function Kn(e,t){let n=Zi(e);return pt.toDate(pt.addDays(n,t))}function Ku(e,t){return Kn(e,t*7)}function zu(e,t){let n=me(e),r=Le(e),s=Ur(e),i=n*12+(r-1)+t,o=Math.floor(i/12),a=i%12+1,c=Ut(o,a),l=Math.min(s,c);return he(o,a,l)}function Gu(e,t){let n=me(e),r=Le(e),s=Ur(e),i=n+t,o=Ut(i,r),a=Math.min(s,o);return he(i,r,a)}function Hi(e,t){let r=new Date(e+"T00:00:00Z").getTime(),s=new Date(t+"T00:00:00Z").getTime();return Math.round((r-s)/864e5)}function Hu(e,t){let n=me(e),r=Le(e),s=me(t),i=Le(t);return(n-s)*12+(r-i)}function Zu(e,t){return me(e)-me(t)}function me(e){return parseInt(e.slice(0,4),10)}function Le(e){return parseInt(e.slice(5,7),10)}function Ur(e){return parseInt(e.slice(8,10),10)}function qr(e){let t=new Date(e+"T00:00:00Z").getUTCDay();return t===0?7:t}function Yu(e){let t=new Date(e+"T00:00:00Z"),n=t.getUTCDay()||7;t.setUTCDate(t.getUTCDate()+4-n);let r=new Date(Date.UTC(t.getUTCFullYear(),0,1));return Math.ceil(((t.getTime()-r.getTime())/864e5+1)/7)}function Xu(e){let t=he(me(e),1,1);return Hi(e,t)+1}function Jr(e){return Math.ceil(Le(e)/3)}function Wr(e){return e%4===0&&e%100!==0||e%400===0}function Ut(e,t){let n=[31,28,31,30,31,30,31,31,30,31,30,31];return t===2&&Wr(e)?29:n[t-1]}function Qu(e){return Wr(e)?366:365}function Zi(e){return e+"T00:00:00.000Z"}function ef(e){return Math.floor(new Date(e+"T00:00:00Z").getTime()/1e3)}function tf(e){let t=new Date(e*1e3);return he(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate())}function Vr(e,t){let n=new Date(e+"T00:00:00Z"),r={timeZone:"UTC",...t};return new Intl.DateTimeFormat(void 0,r).format(n)}function nf(e){return Vr(e,{year:"numeric",month:"long",day:"numeric"})}function rf(e){return Vr(e,{year:"numeric",month:"short",day:"numeric"})}function sf(e,t){return e<t}function of(e,t){return e>t}function af(e,t){return e===t}function cf(e,t){return e<t?e:t}function lf(e,t){return e>t?e:t}function uf(e,t,n){return e>=t&&e<=n}function ff(e){return he(me(e),Le(e),1)}function pf(e){let t=me(e),n=Le(e);return he(t,n,Ut(t,n))}function mf(e){let n=(Jr(e)-1)*3+1;return he(me(e),n,1)}function df(e){let n=Jr(e)*3;return he(me(e),n,Ut(me(e),n))}function yf(e){return he(me(e),1,1)}function gf(e){return he(me(e),12,31)}function hf(e){let t=qr(e);return Kn(e,-(t-1))}function bf(e){let t=qr(e);return Kn(e,7-t)}var xf={isValid:Fr,today:Ju,todayIn:Wu,from:he,parse:Gi,tryParse:Vu,addDays:Kn,addWeeks:Ku,addMonths:zu,addYears:Gu,diff:Hi,diffMonths:Hu,diffYears:Zu,year:me,month:Le,day:Ur,dayOfWeek:qr,weekOfYear:Yu,dayOfYear:Xu,quarter:Jr,isLeapYear:Wr,daysInMonth:Ut,daysInYear:Qu,toTimestamp:Zi,toUnix:ef,fromUnix:tf,format:Vr,formatLong:nf,formatShort:rf,isBefore:sf,isAfter:of,isEqual:af,min:cf,max:lf,isBetween:uf,startOfMonth:ff,endOfMonth:pf,startOfQuarter:mf,endOfQuarter:df,startOfYear:yf,endOfYear:gf,startOfWeek:hf,endOfWeek:bf};export{Cp as A99,Wl as Agent,pe as AgentError,Ln as AgentVM,Dc as DEFAULT_MAX_AST_SIZE,Ic as DEFAULT_PROCEDURE_TTL,gn as Enum,Gl as Eval,_t as FunctionPredicate,tt as Generic,xf as LegalDate,cr as LegalDateType,Jn as LocalModels,Cn as MetadataCache,un as Nullable,fn as Optional,Nr as PROCEDURE_TOKEN_PREFIX,Hl as SafeFunction,hc as Schema,ne as SyntaxError,mn as TArray,nn as TBoolean,an as TEmail,rn as TInteger,ue as TJS_VERSION,on as TNonEmptyString,tn as TNumber,dn as TPair,sn as TPositiveInt,yn as TRecord,en as TString,cn as TUrl,ln as TUuid,pt as Timestamp,ar as TimestampType,H as TranspileError,ee as Type,Hr as TypeError,Ye as TypedBuilder,pn as Union,El as agentRun,Zp as ajs,Ms as assertFunction,Dm as batteries,_m as batteryAtoms,Me as builtins,Ml as cache,Ve as checkType,Bl as clearExpiredProcedures,kn as compileToWasm,va as compileWasmBlocks,Il as consoleError,Rl as consoleLog,Pl as consoleWarn,Zc as constSet,On as coreAtoms,tm as createAgent,de as createChildContext,Oe as createChildScope,O as defineAtom,ia as emitRuntimeWrapper,we as error,Gc as errorAtom,X as evaluateExpr,Ue as exampleToJSONSchema,Cs as expectFunction,Te as extractLiteralValue,Tt as extractTDoc,$t as extractTests,hl as fetch,rl as filter,il as find,gc as fromTS,Xt as functionMetaToJSONSchema,Ha as generateDTS,xi as generateDocs,Mc as generateDocsMarkdown,fu as getBatteries,Nn as getGlobalCache,Ui as getLLMCapability,Z as getLocation,Im as getStandardCapabilities,Or as getStoreCapabilityDefault,nm as getToolDefinitions,Ir as hash,Mn as hashSource,bc as hashSourceSync,Wc as iff,ie as inferTypeFromValue,br as installRuntime,ti as instantiateWasm,Pc as isAgentError,ve as isError,Rr as isProcedureToken,Re as isRuntimeType,or as isValidLegalDate,ir as isValidTimestamp,sr as isValidUrl,ll as join,kl as jsonParse,jl as jsonStringify,yl as keys,al as len,$c as lint,wl as llmPredict,io as lookupVariable,nl as map,Al as memoize,dl as merge,ml as omit,ke as parse,Ne as parseParameter,_s as parseReturnType,pl as pick,Ht as preprocess,lt as procedureStore,ol as push,Cl as random,sl as reduce,fl as regexMatch,ni as registerWasmBlock,Ol as releaseProcedure,Pr as resolveProcedureToken,C as resolveValue,Kc as ret,_l as runCode,qe as runtime,tl as scope,ge as seq,Sc as setGlobalCache,cl as split,bl as storeGet,Dl as storeProcedure,Tl as storeQuery,xl as storeSet,En as stripModuleSyntax,Hs as stripTjsPreamble,ul as template,Uo as testUtils,Xp as tjs,em as tjsWithCache,Et as transformFunction,Fn as transpile,$l as transpileCode,Pt as transpileToJS,Qp as transpileWithCache,zc as tryCatch,je as typeDescriptorToJSONSchema,Ee as typeDescriptorToTS,st as typeOf,tr as typeToString,Nl as uuid,gr as validateArgs,Yc as varGet,Hc as varSet,el as varsExport,Xc as varsImport,Qc as varsLet,Sl as vectorSearch,Vc as whileLoop,hr as wrap,vl as xmlParse};
440
457
  //# sourceMappingURL=index.js.map