tjs-lang 0.9.0 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,70 +1,70 @@
1
- var To=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var ti=To((Mp,Ma)=>{Ma.exports={name:"tjs-lang",version:"0.9.0",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",typesVersions:{"*":{eval:["./dist/src/lang/eval.d.ts"],lang:["./dist/src/lang/transpiler.d.ts"],"lang/from-ts":["./dist/src/lang/emitters/from-ts.d.ts"],browser:["./dist/src/lang/browser.d.ts"],"browser/from-ts":["./dist/src/lang/browser-from-ts.d.ts"],vm:["./dist/src/vm/index.d.ts"],batteries:["./dist/src/batteries/index.d.ts"],css:["./dist/src/css/index.d.ts"],schema:["./dist/src/schema/index.d.ts"],runtime:["./dist/src/lang/runtime.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"},"./browser":{types:"./dist/src/lang/browser.d.ts",default:"./dist/tjs-browser.js"},"./browser/from-ts":{types:"./dist/src/lang/browser-from-ts.d.ts",default:"./dist/tjs-browser-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"},"./linalg":{bun:"./src/linalg/index.tjs",default:"./dist/tjs-linalg.js"},"./css":{bun:"./src/css/index.ts",types:"./dist/src/css/index.d.ts",default:"./dist/tjs-css.js"},"./schema":{bun:"./src/schema/index.ts",types:"./dist/src/schema/index.d.ts",default:"./dist/tjs-schema.js"},"./runtime":{bun:"./src/lang/runtime.ts",types:"./dist/src/lang/runtime.d.ts",default:"./dist/tjs-runtime.js"},"./bun-plugin":{bun:"./src/bun-plugin/tjs-plugin.ts"},"./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:["./src/schema/index.ts","./dist/tjs-schema.js"],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","@eslint/js":"^10.0.1","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^10.4.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",globals:"^17.6.0",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2","typescript-eslint":"^8.61.0",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","build:editors":"bun scripts/build-editors.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 && bun run build:editors && 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":"bun run build:demo && firebase deploy --only hosting",deploy:"bun run build:demo && bun run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-loose":"^8.5.2","acorn-walk":"^8.3.4","tosijs-schema":"^1.4.0"}}});import*as Ws from"acorn";var W=class extends Error{line;column;source;filename;constructor(n,t,r,s){let i=`${s||"<source>"}:${t.line}:${t.column}`;super(`${n} at ${i}`),this.name="TranspileError",this.line=t.line,this.column=t.column,this.source=r,this.filename=s}},z=class extends W{constructor(n,t,r,s){super(n,t,r,s),this.name="SyntaxError"}formatWithContext(n=2){if(!this.source)return this.message;let t=this.source.split(`
2
- `),r=this.line-1,s=Math.max(0,r-n),i=Math.min(t.length-1,r+n),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} | ${t[c]}`),c===r){let f=" ".repeat(a+4+this.column);o.push(`${f}^ ${this.message.split(" at ")[0]}`)}}return o.join(`
3
- `)}},cs=class extends W{expected;received;suggestion;constructor(n,t,r){super(n,t,r?.source,r?.filename),this.name="TypeError",this.expected=r?.expected,this.received=r?.received,this.suggestion=r?.suggestion}};function me(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,helpers:e.helpers,helperSteps:e.helperSteps,helperTransforming:e.helperTransforming}}function Eo(e,n){if(n.locals.has(e))return n.locals.get(e);if(n.parameters.has(e))return n.parameters.get(e)?.type;if(n.parent)return Eo(e,n.parent)}function G(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}import*as zt from"acorn";function ye(e,n,t,r,s){t||(t=v),(function i(o,a,c){var l=c||o.type;t[l](o,a,i),n[l]&&n[l](o,a)})(e,r,s)}function ls(e,n,t,r,s){var i=[];t||(t=v),(function o(a,c,l){var u=l||a.type,f=a!==i[i.length-1];f&&i.push(a),t[u](a,c,o),n[u]&&n[u](a,c||i,i),f&&i.pop()})(e,r,s)}function Yn(e,n,t){t(e,n)}function Be(e,n,t){}var v={};v.Program=v.BlockStatement=v.StaticBlock=function(e,n,t){for(var r=0,s=e.body;r<s.length;r+=1){var i=s[r];t(i,n,"Statement")}};v.Statement=Yn;v.EmptyStatement=Be;v.ExpressionStatement=v.ParenthesizedExpression=v.ChainExpression=function(e,n,t){return t(e.expression,n,"Expression")};v.IfStatement=function(e,n,t){t(e.test,n,"Expression"),t(e.consequent,n,"Statement"),e.alternate&&t(e.alternate,n,"Statement")};v.LabeledStatement=function(e,n,t){return t(e.body,n,"Statement")};v.BreakStatement=v.ContinueStatement=Be;v.WithStatement=function(e,n,t){t(e.object,n,"Expression"),t(e.body,n,"Statement")};v.SwitchStatement=function(e,n,t){t(e.discriminant,n,"Expression");for(var r=0,s=e.cases;r<s.length;r+=1){var i=s[r];t(i,n)}};v.SwitchCase=function(e,n,t){e.test&&t(e.test,n,"Expression");for(var r=0,s=e.consequent;r<s.length;r+=1){var i=s[r];t(i,n,"Statement")}};v.ReturnStatement=v.YieldExpression=v.AwaitExpression=function(e,n,t){e.argument&&t(e.argument,n,"Expression")};v.ThrowStatement=v.SpreadElement=function(e,n,t){return t(e.argument,n,"Expression")};v.TryStatement=function(e,n,t){t(e.block,n,"Statement"),e.handler&&t(e.handler,n),e.finalizer&&t(e.finalizer,n,"Statement")};v.CatchClause=function(e,n,t){e.param&&t(e.param,n,"Pattern"),t(e.body,n,"Statement")};v.WhileStatement=v.DoWhileStatement=function(e,n,t){t(e.test,n,"Expression"),t(e.body,n,"Statement")};v.ForStatement=function(e,n,t){e.init&&t(e.init,n,"ForInit"),e.test&&t(e.test,n,"Expression"),e.update&&t(e.update,n,"Expression"),t(e.body,n,"Statement")};v.ForInStatement=v.ForOfStatement=function(e,n,t){t(e.left,n,"ForInit"),t(e.right,n,"Expression"),t(e.body,n,"Statement")};v.ForInit=function(e,n,t){e.type==="VariableDeclaration"?t(e,n):t(e,n,"Expression")};v.DebuggerStatement=Be;v.FunctionDeclaration=function(e,n,t){return t(e,n,"Function")};v.VariableDeclaration=function(e,n,t){for(var r=0,s=e.declarations;r<s.length;r+=1){var i=s[r];t(i,n)}};v.VariableDeclarator=function(e,n,t){t(e.id,n,"Pattern"),e.init&&t(e.init,n,"Expression")};v.Function=function(e,n,t){e.id&&t(e.id,n,"Pattern");for(var r=0,s=e.params;r<s.length;r+=1){var i=s[r];t(i,n,"Pattern")}t(e.body,n,e.expression?"Expression":"Statement")};v.Pattern=function(e,n,t){e.type==="Identifier"?t(e,n,"VariablePattern"):e.type==="MemberExpression"?t(e,n,"MemberPattern"):t(e,n)};v.VariablePattern=Be;v.MemberPattern=Yn;v.RestElement=function(e,n,t){return t(e.argument,n,"Pattern")};v.ArrayPattern=function(e,n,t){for(var r=0,s=e.elements;r<s.length;r+=1){var i=s[r];i&&t(i,n,"Pattern")}};v.ObjectPattern=function(e,n,t){for(var r=0,s=e.properties;r<s.length;r+=1){var i=s[r];i.type==="Property"?(i.computed&&t(i.key,n,"Expression"),t(i.value,n,"Pattern")):i.type==="RestElement"&&t(i.argument,n,"Pattern")}};v.Expression=Yn;v.ThisExpression=v.Super=v.MetaProperty=Be;v.ArrayExpression=function(e,n,t){for(var r=0,s=e.elements;r<s.length;r+=1){var i=s[r];i&&t(i,n,"Expression")}};v.ObjectExpression=function(e,n,t){for(var r=0,s=e.properties;r<s.length;r+=1){var i=s[r];t(i,n)}};v.FunctionExpression=v.ArrowFunctionExpression=v.FunctionDeclaration;v.SequenceExpression=function(e,n,t){for(var r=0,s=e.expressions;r<s.length;r+=1){var i=s[r];t(i,n,"Expression")}};v.TemplateLiteral=function(e,n,t){for(var r=0,s=e.quasis;r<s.length;r+=1){var i=s[r];t(i,n)}for(var o=0,a=e.expressions;o<a.length;o+=1){var c=a[o];t(c,n,"Expression")}};v.TemplateElement=Be;v.UnaryExpression=v.UpdateExpression=function(e,n,t){t(e.argument,n,"Expression")};v.BinaryExpression=v.LogicalExpression=function(e,n,t){t(e.left,n,"Expression"),t(e.right,n,"Expression")};v.AssignmentExpression=v.AssignmentPattern=function(e,n,t){t(e.left,n,"Pattern"),t(e.right,n,"Expression")};v.ConditionalExpression=function(e,n,t){t(e.test,n,"Expression"),t(e.consequent,n,"Expression"),t(e.alternate,n,"Expression")};v.NewExpression=v.CallExpression=function(e,n,t){if(t(e.callee,n,"Expression"),e.arguments)for(var r=0,s=e.arguments;r<s.length;r+=1){var i=s[r];t(i,n,"Expression")}};v.MemberExpression=function(e,n,t){t(e.object,n,"Expression"),e.computed&&t(e.property,n,"Expression")};v.ExportNamedDeclaration=v.ExportDefaultDeclaration=function(e,n,t){e.declaration&&t(e.declaration,n,e.type==="ExportNamedDeclaration"||e.declaration.id?"Statement":"Expression"),e.source&&t(e.source,n,"Expression")};v.ExportAllDeclaration=function(e,n,t){e.exported&&t(e.exported,n),t(e.source,n,"Expression")};v.ImportDeclaration=function(e,n,t){for(var r=0,s=e.specifiers;r<s.length;r+=1){var i=s[r];t(i,n)}t(e.source,n,"Expression")};v.ImportExpression=function(e,n,t){t(e.source,n,"Expression")};v.ImportSpecifier=v.ImportDefaultSpecifier=v.ImportNamespaceSpecifier=v.Identifier=v.PrivateIdentifier=v.Literal=Be;v.TaggedTemplateExpression=function(e,n,t){t(e.tag,n,"Expression"),t(e.quasi,n,"Expression")};v.ClassDeclaration=v.ClassExpression=function(e,n,t){return t(e,n,"Class")};v.Class=function(e,n,t){e.id&&t(e.id,n,"Pattern"),e.superClass&&t(e.superClass,n,"Expression"),t(e.body,n)};v.ClassBody=function(e,n,t){for(var r=0,s=e.body;r<s.length;r+=1){var i=s[r];t(i,n)}};v.MethodDefinition=v.PropertyDefinition=v.Property=function(e,n,t){e.computed&&t(e.key,n,"Expression"),e.value&&t(e.value,n,"Expression")};var $o=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","String","Number","Boolean","Array","Object","Eq","NotEq","Is","IsNot","TypeOf"]),ko=new Set(["Math","JSON","Object","Array","String","Number"]),jo=new Set(["Math.random","Date.now"]);function fs(e,n){let t=e[n],r=0;if(t==="*"||t==="+")r=1;else if(t==="{"){let s=e.slice(n).match(/^\{\d+,\}/);s&&(r=s[0].length)}return r===0?0:(e[n+r]==="?"&&r++,r)}function vo(e){let n=[],t=0,r=!1;for(;t<e.length;){let s=e[t];if(s==="\\"){t+=2;continue}if(r){s==="]"&&(r=!1),t++;continue}if(s==="["){r=!0,t++;continue}if(s==="("){n.push({hadUnbounded:!1}),t++;continue}if(s===")"){let o=n.pop()??{hadUnbounded:!1},a=fs(e,t+1);if(a>0){if(o.hadUnbounded)return"an unbounded quantifier is nested inside another (e.g. `(a+)+`)";n.length&&(n[n.length-1].hadUnbounded=!0),t+=1+a;continue}o.hadUnbounded&&n.length&&(n[n.length-1].hadUnbounded=!0),t++;continue}let i=fs(e,t);if(i>0){n.length&&(n[n.length-1].hadUnbounded=!0),t+=i;continue}t++}return null}var Mo=new Set(["startsWith","endsWith","includes","indexOf","lastIndexOf","slice","substring","substr","toLowerCase","toUpperCase","trim","trimStart","trimEnd","split","replace","replaceAll","match","matchAll","charAt","charCodeAt","codePointAt","padStart","padEnd","repeat","concat","at","normalize","search","localeCompare","every","some","map","filter","reduce","reduceRight","find","findIndex","findLast","findLastIndex","flat","flatMap","join","keys","entries","values","forEach","test","exec","toFixed","toPrecision","toString","valueOf","hasOwnProperty"]),Kn=["fetch","XMLHttpRequest","WebSocket","Date","console","setTimeout","setInterval","requestAnimationFrame","queueMicrotask","localStorage","sessionStorage","indexedDB","document","window","globalThis","self","process","require","eval","Function","import","crypto","performance","navigator"];function Ao(e){let n=new Set(Kn);for(let[t,r]of Object.entries(e))r?.effects==="io"&&n.add(r.op??t);return n}function Le(e,n={}){let t=n.effectful??new Set(Kn),r;try{r=zt.parse(e,{ecmaVersion:"latest",locations:!0})}catch(o){return{safe:!1,predicates:[],diagnostics:[{predicate:"<source>",message:`parse error: ${o.message}`,line:o.loc?.line??0,column:o.loc?.column??0}]}}let s=new Set(n.knownPredicates??[]);for(let o of r.body)o.type==="FunctionDeclaration"&&o.id&&s.add(o.id.name);let i=[];for(let o of r.body){if(o.type!=="FunctionDeclaration"||!o.id)continue;let a=o.id.name,c=(u,f)=>i.push({predicate:a,message:u,line:f?.loc?.start?.line??0,column:f?.loc?.start?.column??0}),l=u=>c("loops are not allowed \u2014 iterate with recursion or array methods (every/some/map/filter/reduce) so work stays fuel-bounded",u);ye(o,{AwaitExpression(u){c("`await` not allowed \u2014 predicates must be synchronous",u)},NewExpression(u){c("`new` not allowed in a predicate (non-pure construction)",u)},WhileStatement:l,DoWhileStatement:l,ForStatement:l,ForInStatement:l,ForOfStatement:l,Literal(u){if(u.regex&&typeof u.regex.pattern=="string"){let f=vo(u.regex.pattern);f&&c(`regex /${u.regex.pattern}/ risks catastrophic backtracking (ReDoS): ${f}. A single match is not fuel-bounded, so it can't be certified predicate-safe \u2014 simplify the pattern or validate without it.`,u)}},CallExpression(u){let f=u.callee;if(f.type==="Identifier"){let p=f.name;t.has(p)?c(`'${p}' is effectful \u2014 not allowed in a predicate`,f):s.has(p)||$o.has(p)||c(`unknown reference '${p}' \u2014 not a predicate or pure builtin`,f);return}if(f.type==="MemberExpression"&&!f.computed){let p=f.property.name,m=f.object;m.type==="Identifier"&&t.has(m.name)?c(`'${m.name}.${p}' is effectful`,f):m.type==="Identifier"&&ko.has(m.name)?jo.has(`${m.name}.${p}`)&&c(`'${m.name}.${p}' is nondeterministic`,f):Mo.has(p)||c(`method '.${p}()' is not a known pure method`,f.property);return}c("unsupported call form in a predicate",f)}})}return{safe:i.length===0,predicates:[...s],diagnostics:i}}function Gt(e){return e.map(n=>` ${n.predicate} (${n.line}:${n.column}): ${n.message}`).join(`
4
- `)}var Vt=e=>e&&e.type==="Literal"&&typeof e.value=="string";function Co(e,n={}){let t;try{t=zt.parse(e,{ecmaVersion:"latest"})}catch{return[]}let r=new Set,s=new Set;ye(t,{BinaryExpression(c){(c.operator==="=="||c.operator==="===")&&(Vt(c.left)&&r.add(c.left.value),Vt(c.right)&&r.add(c.right.value))},ArrayExpression(c){for(let l of c.elements)Vt(l)&&r.add(l.value)},CallExpression(c){let l=c.callee;if(l.type!=="MemberExpression"||l.computed)return;let u=l.property.name,f=c.arguments[0];Vt(f)&&u==="startsWith"&&s.add(f.value)}});let i=null;if(n.validate!==!1){let c=Le(e,n);if(c.safe&&c.predicates.length){let l=n.entry??c.predicates[c.predicates.length-1];try{let f=mt(e,[l],n)[l];i=p=>{try{return f(p)===!0}catch{return!1}}}catch{i=null}}}let o=[];for(let c of r)(!i||i(c))&&o.push({value:c,kind:"value"});for(let c of s)o.push({value:c,kind:"stub"});let a=o;if(n.prefix){let c=n.prefix;a=o.filter(l=>l.value.startsWith(c)||l.kind==="stub"&&c.startsWith(l.value))}return a.sort((c,l)=>(c.kind===l.kind?0:c.kind==="value"?-1:1)||c.value.localeCompare(l.value)),n.limit?a.slice(0,n.limit):a}var pt=class extends Error{constructor(n){super(`predicate exceeded its fuel budget (${n})`),this.name="PredicateFuelExhausted"}};function ps(e){let n=zt.parse(e,{ecmaVersion:"latest"}),t=[],r=i=>t.push([i.body.start+1,"__fuel();"]);ye(n,{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression(i){i.body.type==="BlockStatement"?t.push([i.body.start+1,"__fuel();"]):(t.push([i.body.start,"(__fuel(), "]),t.push([i.body.end,")"]))}}),t.sort((i,o)=>o[0]-i[0]);let s=e;for(let[i,o]of t)s=s.slice(0,i)+o+s.slice(i);return s}function mt(e,n,t={}){let r=Le(e,t);if(!r.safe)throw new Error(`Not predicate-safe:
5
- ${Gt(r.diagnostics)}`);let s=t.fuel??1e6,i=ps(e),o=Kn.filter(p=>p!=="import"&&p!=="eval"&&p!=="arguments"),a=new Function("__fuel",...o,`"use strict";
1
+ var $o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ri=$o((Cp,Ca)=>{Ca.exports={name:"tjs-lang",version:"0.9.1",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",typesVersions:{"*":{eval:["./dist/src/lang/eval.d.ts"],lang:["./dist/src/lang/transpiler.d.ts"],"lang/from-ts":["./dist/src/lang/emitters/from-ts.d.ts"],browser:["./dist/src/lang/browser.d.ts"],"browser/from-ts":["./dist/src/lang/browser-from-ts.d.ts"],vm:["./dist/src/vm/index.d.ts"],batteries:["./dist/src/batteries/index.d.ts"],css:["./dist/src/css/index.d.ts"],schema:["./dist/src/schema/index.d.ts"],runtime:["./dist/src/lang/runtime.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"},"./browser":{types:"./dist/src/lang/browser.d.ts",default:"./dist/tjs-browser.js"},"./browser/from-ts":{types:"./dist/src/lang/browser-from-ts.d.ts",default:"./dist/tjs-browser-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"},"./linalg":{bun:"./src/linalg/index.tjs",default:"./dist/tjs-linalg.js"},"./css":{bun:"./src/css/index.ts",types:"./dist/src/css/index.d.ts",default:"./dist/tjs-css.js"},"./schema":{bun:"./src/schema/index.ts",types:"./dist/src/schema/index.d.ts",default:"./dist/tjs-schema.js"},"./runtime":{bun:"./src/lang/runtime.ts",types:"./dist/src/lang/runtime.d.ts",default:"./dist/tjs-runtime.js"},"./bun-plugin":{bun:"./src/bun-plugin/tjs-plugin.ts"},"./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:["./src/schema/index.ts","./dist/tjs-schema.js"],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","@eslint/js":"^10.0.1","@happy-dom/global-registrator":"^20.1.0","@types/bun":"latest","@types/jsdom":"^21.1.7","acorn-walk":"^8.3.4",chokidar:"^4.0.3",codemirror:"^6.0.2",esbuild:"^0.28.0",eslint:"^10.4.1",firebase:"^10.12.0","firebase-admin":"^13.6.0","firebase-functions":"^7.0.5",globals:"^17.6.0",marked:"^9.1.6",prettier:"^2.8.8",tosijs:"^1.5.6","tosijs-ui":"^1.4.7",typescript:"^5.6.2","typescript-eslint":"^8.61.0",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","build:editors":"bun scripts/build-editors.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 && bun run build:editors && 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":"bun run build:demo && firebase deploy --only hosting",deploy:"bun run build:demo && bun run functions:deploy && firebase deploy --only hosting",start:"bun run build:demo && bun run dev"},dependencies:{acorn:"^8.15.0","acorn-loose":"^8.5.2","acorn-walk":"^8.3.4","tosijs-schema":"^1.4.0"}}});import*as Vs from"acorn";var W=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}},z=class extends W{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
+ `),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 f=" ".repeat(a+4+this.column);o.push(`${f}^ ${this.message.split(" at ")[0]}`)}}return o.join(`
3
+ `)}},us=class extends W{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 me(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,helpers:e.helpers,helperSteps:e.helperSteps,helperTransforming:e.helperTransforming}}function ko(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 ko(e,t.parent)}function G(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}import*as zt from"acorn";function ye(e,t,n,r,s){n||(n=M),(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 fs(e,t,n,r,s){var i=[];n||(n=M),(function o(a,c,l){var u=l||a.type,f=a!==i[i.length-1];f&&i.push(a),n[u](a,c,o),t[u]&&t[u](a,c||i,i),f&&i.pop()})(e,r,s)}function er(e,t,n){n(e,t)}function Be(e,t,n){}var M={};M.Program=M.BlockStatement=M.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")}};M.Statement=er;M.EmptyStatement=Be;M.ExpressionStatement=M.ParenthesizedExpression=M.ChainExpression=function(e,t,n){return n(e.expression,t,"Expression")};M.IfStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Statement"),e.alternate&&n(e.alternate,t,"Statement")};M.LabeledStatement=function(e,t,n){return n(e.body,t,"Statement")};M.BreakStatement=M.ContinueStatement=Be;M.WithStatement=function(e,t,n){n(e.object,t,"Expression"),n(e.body,t,"Statement")};M.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)}};M.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")}};M.ReturnStatement=M.YieldExpression=M.AwaitExpression=function(e,t,n){e.argument&&n(e.argument,t,"Expression")};M.ThrowStatement=M.SpreadElement=function(e,t,n){return n(e.argument,t,"Expression")};M.TryStatement=function(e,t,n){n(e.block,t,"Statement"),e.handler&&n(e.handler,t),e.finalizer&&n(e.finalizer,t,"Statement")};M.CatchClause=function(e,t,n){e.param&&n(e.param,t,"Pattern"),n(e.body,t,"Statement")};M.WhileStatement=M.DoWhileStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.body,t,"Statement")};M.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")};M.ForInStatement=M.ForOfStatement=function(e,t,n){n(e.left,t,"ForInit"),n(e.right,t,"Expression"),n(e.body,t,"Statement")};M.ForInit=function(e,t,n){e.type==="VariableDeclaration"?n(e,t):n(e,t,"Expression")};M.DebuggerStatement=Be;M.FunctionDeclaration=function(e,t,n){return n(e,t,"Function")};M.VariableDeclaration=function(e,t,n){for(var r=0,s=e.declarations;r<s.length;r+=1){var i=s[r];n(i,t)}};M.VariableDeclarator=function(e,t,n){n(e.id,t,"Pattern"),e.init&&n(e.init,t,"Expression")};M.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")};M.Pattern=function(e,t,n){e.type==="Identifier"?n(e,t,"VariablePattern"):e.type==="MemberExpression"?n(e,t,"MemberPattern"):n(e,t)};M.VariablePattern=Be;M.MemberPattern=er;M.RestElement=function(e,t,n){return n(e.argument,t,"Pattern")};M.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")}};M.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")}};M.Expression=er;M.ThisExpression=M.Super=M.MetaProperty=Be;M.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")}};M.ObjectExpression=function(e,t,n){for(var r=0,s=e.properties;r<s.length;r+=1){var i=s[r];n(i,t)}};M.FunctionExpression=M.ArrowFunctionExpression=M.FunctionDeclaration;M.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")}};M.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")}};M.TemplateElement=Be;M.UnaryExpression=M.UpdateExpression=function(e,t,n){n(e.argument,t,"Expression")};M.BinaryExpression=M.LogicalExpression=function(e,t,n){n(e.left,t,"Expression"),n(e.right,t,"Expression")};M.AssignmentExpression=M.AssignmentPattern=function(e,t,n){n(e.left,t,"Pattern"),n(e.right,t,"Expression")};M.ConditionalExpression=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Expression"),n(e.alternate,t,"Expression")};M.NewExpression=M.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")}};M.MemberExpression=function(e,t,n){n(e.object,t,"Expression"),e.computed&&n(e.property,t,"Expression")};M.ExportNamedDeclaration=M.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")};M.ExportAllDeclaration=function(e,t,n){e.exported&&n(e.exported,t),n(e.source,t,"Expression")};M.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")};M.ImportExpression=function(e,t,n){n(e.source,t,"Expression")};M.ImportSpecifier=M.ImportDefaultSpecifier=M.ImportNamespaceSpecifier=M.Identifier=M.PrivateIdentifier=M.Literal=Be;M.TaggedTemplateExpression=function(e,t,n){n(e.tag,t,"Expression"),n(e.quasi,t,"Expression")};M.ClassDeclaration=M.ClassExpression=function(e,t,n){return n(e,t,"Class")};M.Class=function(e,t,n){e.id&&n(e.id,t,"Pattern"),e.superClass&&n(e.superClass,t,"Expression"),n(e.body,t)};M.ClassBody=function(e,t,n){for(var r=0,s=e.body;r<s.length;r+=1){var i=s[r];n(i,t)}};M.MethodDefinition=M.PropertyDefinition=M.Property=function(e,t,n){e.computed&&n(e.key,t,"Expression"),e.value&&n(e.value,t,"Expression")};var jo=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","String","Number","Boolean","Array","Object","Eq","NotEq","Is","IsNot","TypeOf"]),vo=new Set(["Math","JSON","Object","Array","String","Number"]),Mo=new Set(["Math.random","Date.now"]);function ms(e,t){let n=e[t],r=0;if(n==="*"||n==="+")r=1;else if(n==="{"){let s=e.slice(t).match(/^\{\d+,\}/);s&&(r=s[0].length)}return r===0?0:(e[t+r]==="?"&&r++,r)}function Ao(e){let t=[],n=0,r=!1;for(;n<e.length;){let s=e[n];if(s==="\\"){n+=2;continue}if(r){s==="]"&&(r=!1),n++;continue}if(s==="["){r=!0,n++;continue}if(s==="("){t.push({hadUnbounded:!1}),n++;continue}if(s===")"){let o=t.pop()??{hadUnbounded:!1},a=ms(e,n+1);if(a>0){if(o.hadUnbounded)return"an unbounded quantifier is nested inside another (e.g. `(a+)+`)";t.length&&(t[t.length-1].hadUnbounded=!0),n+=1+a;continue}o.hadUnbounded&&t.length&&(t[t.length-1].hadUnbounded=!0),n++;continue}let i=ms(e,n);if(i>0){t.length&&(t[t.length-1].hadUnbounded=!0),n+=i;continue}n++}return null}var Co=new Set(["startsWith","endsWith","includes","indexOf","lastIndexOf","slice","substring","substr","toLowerCase","toUpperCase","trim","trimStart","trimEnd","split","replace","replaceAll","match","matchAll","charAt","charCodeAt","codePointAt","padStart","padEnd","repeat","concat","at","normalize","search","localeCompare","every","some","map","filter","reduce","reduceRight","find","findIndex","findLast","findLastIndex","flat","flatMap","join","keys","entries","values","forEach","test","exec","toFixed","toPrecision","toString","valueOf","hasOwnProperty"]),tr=["fetch","XMLHttpRequest","WebSocket","Date","console","setTimeout","setInterval","requestAnimationFrame","queueMicrotask","localStorage","sessionStorage","indexedDB","document","window","globalThis","self","process","require","eval","Function","import","crypto","performance","navigator"];function Ro(e){let t=new Set(tr);for(let[n,r]of Object.entries(e))r?.effects==="io"&&t.add(r.op??n);return t}function Le(e,t={}){let n=t.effectful??new Set(tr),r;try{r=zt.parse(e,{ecmaVersion:"latest",locations:!0})}catch(o){return{safe:!1,predicates:[],diagnostics:[{predicate:"<source>",message:`parse error: ${o.message}`,line:o.loc?.line??0,column:o.loc?.column??0}]}}let s=new Set(t.knownPredicates??[]);for(let o of r.body)o.type==="FunctionDeclaration"&&o.id&&s.add(o.id.name);let i=[];for(let o of r.body){if(o.type!=="FunctionDeclaration"||!o.id)continue;let a=o.id.name,c=(u,f)=>i.push({predicate:a,message:u,line:f?.loc?.start?.line??0,column:f?.loc?.start?.column??0}),l=u=>c("loops are not allowed \u2014 iterate with recursion or array methods (every/some/map/filter/reduce) so work stays fuel-bounded",u);ye(o,{AwaitExpression(u){c("`await` not allowed \u2014 predicates must be synchronous",u)},NewExpression(u){c("`new` not allowed in a predicate (non-pure construction)",u)},WhileStatement:l,DoWhileStatement:l,ForStatement:l,ForInStatement:l,ForOfStatement:l,Literal(u){if(u.regex&&typeof u.regex.pattern=="string"){let f=Ao(u.regex.pattern);f&&c(`regex /${u.regex.pattern}/ risks catastrophic backtracking (ReDoS): ${f}. A single match is not fuel-bounded, so it can't be certified predicate-safe \u2014 simplify the pattern or validate without it.`,u)}},CallExpression(u){let f=u.callee;if(f.type==="Identifier"){let p=f.name;n.has(p)?c(`'${p}' is effectful \u2014 not allowed in a predicate`,f):s.has(p)||jo.has(p)||c(`unknown reference '${p}' \u2014 not a predicate or pure builtin`,f);return}if(f.type==="MemberExpression"&&!f.computed){let p=f.property.name,m=f.object;m.type==="Identifier"&&n.has(m.name)?c(`'${m.name}.${p}' is effectful`,f):m.type==="Identifier"&&vo.has(m.name)?Mo.has(`${m.name}.${p}`)&&c(`'${m.name}.${p}' is nondeterministic`,f):Co.has(p)||c(`method '.${p}()' is not a known pure method`,f.property);return}c("unsupported call form in a predicate",f)}})}return{safe:i.length===0,predicates:[...s],diagnostics:i}}function Gt(e){return e.map(t=>` ${t.predicate} (${t.line}:${t.column}): ${t.message}`).join(`
4
+ `)}var Vt=e=>e&&e.type==="Literal"&&typeof e.value=="string";function Po(e,t={}){let n;try{n=zt.parse(e,{ecmaVersion:"latest"})}catch{return[]}let r=new Set,s=new Set;ye(n,{BinaryExpression(c){(c.operator==="=="||c.operator==="===")&&(Vt(c.left)&&r.add(c.left.value),Vt(c.right)&&r.add(c.right.value))},ArrayExpression(c){for(let l of c.elements)Vt(l)&&r.add(l.value)},CallExpression(c){let l=c.callee;if(l.type!=="MemberExpression"||l.computed)return;let u=l.property.name,f=c.arguments[0];Vt(f)&&u==="startsWith"&&s.add(f.value)}});let i=null;if(t.validate!==!1){let c=Le(e,t);if(c.safe&&c.predicates.length){let l=t.entry??c.predicates[c.predicates.length-1];try{let f=mt(e,[l],t)[l];i=p=>{try{return f(p)===!0}catch{return!1}}}catch{i=null}}}let o=[];for(let c of r)(!i||i(c))&&o.push({value:c,kind:"value"});for(let c of s)o.push({value:c,kind:"stub"});let a=o;if(t.prefix){let c=t.prefix;a=o.filter(l=>l.value.startsWith(c)||l.kind==="stub"&&c.startsWith(l.value))}return a.sort((c,l)=>(c.kind===l.kind?0:c.kind==="value"?-1:1)||c.value.localeCompare(l.value)),t.limit?a.slice(0,t.limit):a}var pt=class extends Error{constructor(t){super(`predicate exceeded its fuel budget (${t})`),this.name="PredicateFuelExhausted"}};function ds(e){let t=zt.parse(e,{ecmaVersion:"latest"}),n=[],r=i=>n.push([i.body.start+1,"__fuel();"]);ye(t,{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression(i){i.body.type==="BlockStatement"?n.push([i.body.start+1,"__fuel();"]):(n.push([i.body.start,"(__fuel(), "]),n.push([i.body.end,")"]))}}),n.sort((i,o)=>o[0]-i[0]);let s=e;for(let[i,o]of n)s=s.slice(0,i)+o+s.slice(i);return s}function mt(e,t,n={}){let r=Le(e,n);if(!r.safe)throw new Error(`Not predicate-safe:
5
+ ${Gt(r.diagnostics)}`);let s=n.fuel??1e6,i=ds(e),o=tr.filter(p=>p!=="import"&&p!=="eval"&&p!=="arguments"),a=new Function("__fuel",...o,`"use strict";
6
6
  ${i}
7
- ;return { ${n.join(", ")} };`),c=0,u=a(()=>{if(--c<0)throw new pt(s)},...o.map(()=>{})),f={};for(let p of n){let m=u[p];f[p]=(...d)=>{c=s;try{return m(...d)}catch(h){throw h instanceof RangeError&&/stack/i.test(h.message)?new pt(s):h}}}return f}function Xn(e,n,t={}){let r=Le(e,t);if(!r.safe)return{safe:!1,diagnostics:r.diagnostics};if(!r.predicates.includes(n))return{safe:!1,diagnostics:[{predicate:n,message:`entry predicate '${n}' not found in the verified cluster`,line:0,column:0}]};let s=t.fuel??1e6;return{safe:!0,code:`(() => {let __f = 0;const __fuel = () => { if (--__f < 0) throw new RangeError('tjs:predicate-fuel'); };${ps(e)}return (...__a) => {__f = ${s};try { return !!${n}(...__a); }catch (e) {if (e instanceof RangeError && /tjs:predicate-fuel|stack/i.test(e.message)) return false;throw e;}};})()`,diagnostics:[]}}function Ro(e={}){let{onUnsafe:n,...t}=e,r=new Map,s=new Set;return(i,o)=>{let a=r.get(i);if(a===void 0){try{let c=Le(i,t).predicates,l=c[c.length-1];if(!l)throw new Error("$predicate declares no function");a=mt(i,[l],t)[l]}catch(c){if(a=null,!s.has(i)){s.add(i);let l=c instanceof Error?c:new Error(String(c));n?n(i,l):console.warn(`[tjs-lang] $predicate not verifiable \u2014 failing closed: ${l.message}`)}}r.set(i,a)}if(a===null)return!1;try{return a(o)===!0}catch{return!1}}}function Po(e,n){let t=e.match(n);if(!t)return null;let r=t.index+t[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=[t[0].slice(0,-1)+o,o];return a.index=t.index,a}function Qn(e,n,t,r,s,i){let o=`__pred_${e}`,a=`function ${o}(${t}) { ${r} }`,c=Xn(a,o,s?{knownPredicates:new Set(s)}:{});return c.safe?(i?.push({name:e,kind:n,verified:!0}),c.code):(i?.push({name:e,kind:n,verified:!1,reason:Gt(c.diagnostics).replace(/__pred_/g,"")}),null)}function hs(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\btry\s*\{/);if(r){let i=t+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){n+=e[t],t++;continue}if(e.slice(a).match(/^\s*(catch|finally)\b/))n+=e.slice(t,a),t=a;else{let l=e.slice(i,a-1);n+=`try {${l}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,t=a}}else n+=e[t],t++}return n}function bs(e){let n=[],t="",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 S=e[l];S==="{"?c++:S==="}"&&c--,l++}if(c!==0){t+=e[r],r++;continue}let u=e.slice(a,l-1),f,p=l,m=e.slice(l).match(/^\s*fallback\s*\{/);if(m){let S=l+m[0].length;c=1;let T=S;for(;T<e.length&&c>0;){let k=e[T];k==="{"?c++:k==="}"&&c--,T++}c===0&&(f=e.slice(S,T-1),p=T)}let h=Io(u).map(S=>{let T=Oo(e,o,S);return T?`${S}: ${T}`:S}),x={id:`__tjs_wasm_${s}`,body:u,fallback:f,captures:h,start:o,end:p};n.push(x);let E=f??u,$=h.map(S=>S.split(":")[0].trim()),b=$.length>0?$.join(", "):"",w=$.length>0?`globalThis.${x.id}(${b})`:`globalThis.${x.id}()`,_=`(globalThis.${x.id} ? ${w} : (() => {${E}})())`;t+=_,r=p,s++}else t+=e[r],r++}return{source:t,blocks:n}}function xs(e){let n=[],t="",r=0;for(;r<e.length;){let s=/^\b(export\s+)?wasm\s+function\s+(\w+)\s*\(/,i=e.slice(r).match(s);if(!i){t+=e[r],r++;continue}let o=!!i[1],a=i[2],c=r,l=r+i[0].length,u=1,f=l;for(;f<e.length&&u>0;)e[f]==="("?u++:e[f]===")"&&u--,f++;if(u!==0){t+=e[r],r++;continue}let p=e.slice(l,f-1);if(p.match(/^\s*!/))throw new z(`Unsafe wasm functions (with \`!\` marker) are reserved for a future phase. Remove the bang from \`wasm function ${a}\` to declare it as a regular (pure) wasm function, or wait until the unsafe variant is implemented.`,$e(e,c));let d,h=f,x=e.slice(f).match(/^\s*:\s*(\w+)/);x&&(d=x[1],h=f+x[0].length);let E=e.slice(h).match(/^\s*\{/);if(!E){t+=e[r],r++;continue}let $=h+E[0].length,b=1,w=$;for(;w<e.length&&b>0;)e[w]==="{"?b++:e[w]==="}"&&b--,w++;if(b!==0){t+=e[r],r++;continue}let _=e.slice($,w-1),S=No(p),T=`__tjs_wasm_${a}`,k={id:T,name:a,returnType:d,body:_,captures:S,start:c,end:w};n.push(k);let M=S.map(I=>I.split(":")[0].trim()),C=`${o?"export ":""}function ${a}(${M.join(", ")}) { return globalThis.${T}(${M.join(", ")}) }`;t+=C,r=w}return{source:t,blocks:n}}function ws(e,n){let{loader:t,importerPath:r}=n;if(!t)return{source:e,blocks:[]};let s=[],i=new Set;function o(l,u){if(!i.has(l.id)){s.push(l),i.add(l.id);for(let[f,p]of u){if(f===l.name||i.has(p.id))continue;new RegExp(`\\b${f}\\s*\\(`).test(l.body)&&o(p,u)}}}let a=/^(\s*)import\s*\{([^}]*?)\}\s*from\s*(['"])([^'"]+)\3\s*;?\s*$/gm;return{source:e.replace(a,(l,u,f,p,m)=>{let d=t.load(m,r);if(!d)return l;let h=new Map;for(let _ of d.parseResult.wasmBlocks)_.name&&h.set(_.name,_);if(h.size===0)return l;let x=f.split(",").map(_=>_.trim()).filter(_=>_.length>0),E=[],$=[];for(let _ of x){let S=_.match(/^(\w+)(?:\s+as\s+(\w+))?$/);if(!S){$.push(_);continue}let T=S[1],k=S[2]??S[1],M=h.get(T);if(!M){$.push(_);continue}o(M,h);let R=M.captures.map(C=>C.split(":")[0].trim());E.push(`function ${k}(${R.join(", ")}) { return globalThis.${M.id}(${R.join(", ")}) }`)}let b=E.join(`
8
- `);if($.length===0)return b?`${u}${b}`:`${u}`;let w=`${u}import { ${$.join(", ")} } from '${m}'`;return b?`${w}
9
- ${u}${b}`:w}),blocks:s}}function No(e){let n=e.trim();return n?n.split(",").map(t=>t.trim()).filter(t=>t.length>0):[]}function Do(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function Io(e){let n=e.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),t=new Set,r=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,s;for(;(s=r.exec(n))!==null;)t.add(s[1]);let i=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,o=new Set;for(;(s=i.exec(n))!==null;)o.add(s[1]);for(let p of t){if(!o.has(p))continue;let m=new RegExp(`(?<!\\.)\\b${p}\\b`,"g"),d=new RegExp(`\\.${p}\\b`,"g"),h=n.match(m)?.length||0,x=n.match(d)?.length||0;h<=x&&o.delete(p)}let a=new Set,c=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(s=c.exec(n))!==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(n))!==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"]),f=[];for(let p of o)!a.has(p)&&!u.has(p)&&!Do(p)&&f.push(p);return f.sort()}function Oo(e,n,t){let r=e.slice(0,n),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?ms(a[1],t):void 0}return ms(i[1],t)}function ms(e,n){let t=e.split(",").map(r=>r.trim());for(let r of t){let s=r.match(new RegExp(`^${n}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(s)return s[1];let i=r.match(new RegExp(`^${n}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(i)return i[1]}}function gt(e){let n=`([\\w][\\w.\\[\\]()]*|null|undefined|true|false|\\d+(?:\\.\\d+)?|'[^']*'|"[^"]*")`,t=new RegExp(n+"\\s+IsNot\\s+"+n,"g");e=e.replace(t,"IsNot($1, $2)");let r=new RegExp(n+"\\s+Is\\s+"+n,"g");return e=e.replace(r,"Is($1, $2)"),e}function Ss(e){let n=/^[\s]*[([`]/,t=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,r=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,s=e.split(`
10
- `),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("/*"),f=c.indexOf("*/");if(u!==-1&&(f===-1||f<u)){o=!0,i.push(c);continue}if(a>0&&n.test(c)){let p=l.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!t.test(p)&&!r.test(p)){let m=c.match(/^(\s*)/),d=m?m[1]:"",h=c.slice(d.length);i.push(d+";"+h);continue}}i.push(c)}return i.join(`
11
- `)}function Bo(e){let n=[],t=0,r="normal",s=[];for(;t<e.length;){let o=e[t],a=e[t+1];switch(r){case"single-string":if(o==="\\"&&t+1<e.length){t+=2;continue}o==="'"&&(r="normal"),t++;continue;case"double-string":if(o==="\\"&&t+1<e.length){t+=2;continue}o==='"'&&(r="normal"),t++;continue;case"template-string":if(o==="\\"&&t+1<e.length){t+=2;continue}if(o==="$"&&a==="{"){t+=2,s.push(1),r="normal";continue}o==="`"&&(r="normal"),t++;continue;case"line-comment":o===`
12
- `&&(r="normal"),t++;continue;case"block-comment":if(o==="*"&&a==="/"){t+=2,r="normal";continue}t++;continue;case"regex":if(o==="\\"&&t+1<e.length){t+=2;continue}if(o==="["){for(t++;t<e.length&&e[t]!=="]";)e[t]==="\\"&&t+1<e.length?t+=2:t++;t<e.length&&t++;continue}if(o==="/"){for(t++;t<e.length&&/[gimsuy]/.test(e[t]);)t++;r="normal";continue}t++;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(),t++,r="template-string";continue}}if(o==="'"){t++,r="single-string";continue}if(o==='"'){t++,r="double-string";continue}if(o==="`"){t++,r="template-string";continue}if(o==="/"&&a==="/"){t+=2,r="line-comment";continue}if(o==="/"&&a==="*"){t+=2,r="block-comment";continue}if(o==="/"){let c=t-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))){t++,r="regex";continue}}if(o==="t"&&e.slice(t,t+6)==="typeof"&&(t===0||!/[\w$]/.test(e[t-1]))&&/\s/.test(e[t+6]??"")){let c=t+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;n.push({keywordStart:t,operandEnd:c,operand:e.slice(l,c)}),t=c;continue}}break}t++}if(n.length===0)return e;let i=e;for(let o=n.length-1;o>=0;o--){let a=n[o];i=i.slice(0,a.keywordStart)+`TypeOf(${a.operand})`+i.slice(a.operandEnd)}return i}function yt(e){e=Bo(e);let n=[],t=0,r="normal",s=[];for(;t<e.length;){let o=e[t],a=e[t+1];switch(r){case"single-string":if(o==="\\"&&t+1<e.length){t+=2;continue}o==="'"&&(r="normal"),t++;continue;case"double-string":if(o==="\\"&&t+1<e.length){t+=2;continue}o==='"'&&(r="normal"),t++;continue;case"template-string":if(o==="\\"&&t+1<e.length){t+=2;continue}if(o==="$"&&a==="{"){t+=2,s.push(1),r="normal";continue}o==="`"&&(r="normal"),t++;continue;case"line-comment":o===`
13
- `&&(r="normal"),t++;continue;case"block-comment":if(o==="*"&&a==="/"){t+=2,r="normal";continue}t++;continue;case"regex":if(o==="\\"&&t+1<e.length){t+=2;continue}if(o==="["){for(t++;t<e.length&&e[t]!=="]";)e[t]==="\\"&&t+1<e.length?t+=2:t++;t<e.length&&t++;continue}if(o==="/"){for(t++;t<e.length&&/[gimsuy]/.test(e[t]);)t++;r="normal";continue}t++;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(),t++,r="template-string";continue}}if(o==="'"){t++,r="single-string";continue}if(o==='"'){t++,r="double-string";continue}if(o==="`"){t++,r="template-string";continue}if(o==="/"&&a==="/"){t+=2,r="line-comment";continue}if(o==="/"&&a==="*"){t+=2,r="block-comment";continue}if(o==="/"){let c=t-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))){t++,r="regex";continue}}if(o==="="&&a==="="&&e[t+2]!=="="&&e[t-1]!=="!"){n.push({pos:t,op:"=="}),t+=2;continue}if(o==="!"&&a==="="&&e[t+2]!=="="){n.push({pos:t,op:"!="}),t+=2;continue}break}t++}if(n.length===0)return e;let i=e;for(let o=n.length-1;o>=0;o--){let{pos:a,op:c}=n[o],l=c==="=="?"Eq":"NotEq",u=Lo(i,a),f=Fo(i,a+2),p=i.slice(u,a).trim(),m=i.slice(a+2,f).trim();if(p&&m){let d=i.slice(0,u),h=i.slice(f),E=/[a-zA-Z0-9_$]$/.test(d)?" ":"";i=`${d}${E}${l}(${p}, ${m})${h}`}}return i}function Lo(e,n){let t=n-1;for(;t>=0&&/\s/.test(e[t]);)t--;if(t<0)return 0;let r=0,s=!1,i="";for(;t>=0;){let o=e[t],a=t>0?e[t-1]:"";if(s){o===i&&a!=="\\"&&(s=!1),t--;continue}if((o==='"'||o==="'"||o==="`")&&a!=="\\"){s=!0,i=o,t--;continue}if(o===")"||o==="]"||o==="}"){r++,t--;continue}if(o==="("||o==="["){if(r>0){r--,t--;continue}return t+1}if(o==="{"){if(r>0){r--,t--;continue}return t+1}if(r>0){t--;continue}if(o===";")return t+1;if(/[a-z]/.test(o)){let c=t+1,l=t;for(;l>0&&/[a-z]/i.test(e[l-1]);)l--;let u=e.slice(l,c),f=l>0?e[l-1]:"";if(!/[a-zA-Z0-9_$]/.test(f)){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 t+1;t--}return 0}function Fo(e,n){let t=n;for(;t<e.length&&/\s/.test(e[t]);)t++;if(t>=e.length)return e.length;let r=0,s=!1,i="";for(;t<e.length;){let o=e[t],a=t+1<e.length?e[t+1]:"";if(s){o===i&&e[t-1]!=="\\"&&(s=!1),t++;continue}if((o==='"'||o==="'"||o==="`")&&e[t-1]!=="\\"){s=!0,i=o,t++;continue}if(o==="("||o==="["||o==="{"){r++,t++;continue}if(o===")"||o==="]"||o==="}"){if(r>0){r--,t++;continue}return t}if(r>0){t++;continue}if(o===";"||o==="&"&&a==="&"||o==="|"&&a==="|"||o==="?"||o===":"||o===","||(o==="="||o==="!")&&a==="="&&e[t+2]!=="=")return t;t++}return e.length}function _s(e,n){let t="",r=0;for(;r<e.length;){let s=e.slice(r).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(s){let i=s[1],o=r+s[0].length,a=i,c=!1,l=e.slice(o).match(/^(['"`])([^]*?)\1\s*/);if(l){let m=o+l[0].length,d=e[m],h=d===void 0||m>=e.length||d!=="="&&d!=="{";if(d==="="||d==="{")a=l[2],c=!0,o=m;else if(h){let x=l[0].trim(),E=l[0].slice(x.length);t+=`const ${i} = Type('${i}', ${x})${E}`,r=m;continue}}let u,f=o,p=e.slice(o).match(/^=\s*/);if(p){o+=p[0].length;let m=e.slice(o).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(m){u=m[0],o+=m[0].length,f=o;let d=e.slice(o).match(/^\s*/);d&&(o+=d[0].length)}}if(e[o]==="{"){let m=o+1,d=1,h=m;for(;h<e.length&&d>0;){let S=e[h];S==="{"?d++:S==="}"&&d--,h++}if(d!==0){t+=e[r],r++;continue}let x=e.slice(m,h-1).trim(),E=h,$=x.match(/description\s*:\s*(['"`])([^]*?)\1/);$&&!c&&(a=$[2]);let b,w=x.match(/example\s*:\s*/);if(w){let S=w.index+w[0].length,T=Fs(x,S);T&&(b=T.value.trim())}let _=x.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(_&&b){let S=_[1].trim(),T=_[2].trim(),k=u?`, ${u}`:"",M=`globalThis.__tjs?.validate(${S}, globalThis.__tjs?.infer(${b}))`,R=Qn(i,"Type",S,T,void 0,n),C=R?`(__g => (${S}) => (${M} ? __g(${S}) : false))(${R})`:`(${S}) => { if (!${M}) return false; ${T} }`;t+=`const ${i} = Type('${a}', ${C}, ${b}${k})`}else if(_){let S=_[1].trim(),T=_[2].trim(),k=u?`, undefined, ${u}`:"",R=Qn(i,"Type",S,T,void 0,n)??`(${S}) => { ${T} }`;t+=`const ${i} = Type('${a}', ${R}${k})`}else if(b){let S=u?`, ${u}`:"";t+=`const ${i} = Type('${a}', undefined, ${b}${S})`}else u?t+=`const ${i} = Type('${a}', ${u})`:t+=`const ${i} = Type('${a}')`;r=E;continue}else if(u){t+=`const ${i} = Type('${a}', ${u})`,r=f;continue}else if(!l){let m=e.slice(o).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(m){let d=m[0];t+=`const ${i} = Type('${i}', ${d})`,r=o+m[0].length;continue}}}t+=e[r],r++}return t}function Ts(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bFunctionPredicate\s+([A-Z_][a-zA-Z0-9_]*)\s*(?:<([^>]+)>)?\s*/);if(r){let s=r[1],i=r[2],o=t+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=Po(l,/params\s*:\s*\{/),f=l.match(/returns\s*:\s*(.+?)(?:\n|$)/),p=l.match(/returnContract\s*:\s*['"](\w+)['"]/),m=l.match(/description\s*:\s*(['"])([^]*?)\1/),d=[];u&&d.push(`params: ${u[1]}`),f&&d.push(`returns: ${f[1].trim()}`),p&&d.push(`returnContract: '${p[1]}'`);let h=m?m[2]:s;if(i){let x=i.split(",").map($=>{let b=$.trim().split("=").map(w=>w.trim());if(b.length===2){let w=b[1]==="any"||b[1]==="undefined"?"null":b[1];return`['${b[0]}', ${w}]`}return`'${b[0]}'`}),E=i.split(",").map($=>$.trim().split("=")[0].trim());n+=`const ${s} = FunctionPredicate('${h}', [${x.join(", ")}], (${E.join(", ")}) => ({ ${d.join(", ")} }))`}else n+=`const ${s} = FunctionPredicate('${h}', { ${d.join(", ")} })`;t=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 f=l.slice(0,u).trim(),p=l.slice(u+1).trim();n+=`const ${s} = FunctionPredicate(${p}, ${f})`}else n+=`const ${s} = FunctionPredicate('${s}', ${l})`;t=c;continue}}}n+=e[t],t++}return n}function Es(e,n){let t="",r=0;for(;r<e.length;){let s=e.slice(r).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(s){let i=s[1],o=s[2],c=r+s[0].length-1+1,l=1,u=c;for(;u<e.length&&l>0;){let b=e[u];b==="{"?l++:b==="}"&&l--,u++}if(l!==0){t+=e[r],r++;continue}let f=e.slice(c,u-1).trim(),p=u,m=o.split(",").map(b=>{let w=b.trim().split("=").map(_=>_.trim());if(w.length===2){let _=w[1]==="any"||w[1]==="undefined"?"null":w[1];return`['${w[0]}', ${_}]`}return`'${w[0]}'`}),d=f,h=d.search(/\bdeclaration\s*\{/);if(h!==-1){let b=d.indexOf("{",h),w=1,_=b+1;for(;_<d.length&&w>0;)d[_]==="{"?w++:d[_]==="}"&&w--,_++;d=d.slice(0,h)+d.slice(_)}let x=d.match(/description\s*:\s*(['"`])([^]*?)\1/),E=d.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),$=x?x[2]:i;if(E){let b=E[1].trim().split(",").map(C=>C.trim()),w=E[2].trim(),_=b[0]||"x",S=b.slice(1),T=S.map(C=>`check${C}`);S.forEach((C,I)=>{w=w.replace(new RegExp(`\\b${C}\\s*\\(`,"g"),`${T[I]}(`)});let k=[_,...T].join(", "),R=Qn(i,"Generic",k,w,T,n)??`(${k}) => { ${w} }`;t+=`const ${i} = Generic([${m.join(", ")}], ${R}, '${$}')`}else t+=`const ${i} = Generic([${m.join(", ")}], () => true, '${$}')`;r=p;continue}t+=e[r],r++}return t}function $s(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bUnion\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*/);if(r){let s=r[1],i=r[3],o=t+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){n+=e[t],t++;continue}let u=e.slice(a,l-1).trim(),f=l,p=ds(u);n+=`const ${s} = Union('${i}', [${p.join(", ")}])`,t=f;continue}else{let a=e.indexOf(`
14
- `,o);a===-1&&(a=e.length);let c=e.slice(o,a).trim();if(c){let l=ds(c);n+=`const ${s} = Union('${i}', [${l.join(", ")}])`,t=a;continue}}}n+=e[t],t++}return n}function ds(e){let n=[],t=e.split("|").map(r=>r.trim());for(let r of t)r&&n.push(r);return n}function ks(e){let n="",t=0;for(;t<e.length;){let r=e.slice(t).match(/^\bEnum\s+([A-Z][a-zA-Z0-9_]*)\s+(['"`])([^]*?)\2\s*\{/);if(r){let s=r[1],i=r[3],a=t+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){n+=e[t],t++;continue}let u=e.slice(a,l-1).trim(),f=l,m=Uo(u).map(([d,h])=>`${d}: ${h}`).join(", ");n+=`const ${s} = Enum('${i}', { ${m} })`,t=f;continue}n+=e[t],t++}return n}function Uo(e){let n=[],t=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){n.push([o,a]);let c=Number(a);isNaN(c)||(t=c+1)}else n.push([o,String(t)]),t++}}return n}function js(e){let n=new Map,t="",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]===`
15
- `||e[r-1]===";"||e[r-1]==="}"){let b=s.match(/^(\s*)extend\s+([A-Z]\w*)\s*\{/)}t+=e[r],r++;continue}let o=i[1],a=i[2],c=r+i[0].length-1,l=dt(e,c),u=e.slice(c+1,l-1).trim(),f=[],p=0,m=e.slice(c+1,l-1);for(;p<m.length;){let b=m.slice(p).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!b){p++;continue}let w=b[1],_=!!b[2],S=b[3],T=p+b[0].length-1,k=1,M=T+1;for(;M<m.length&&k>0;)m[M]==="("&&k++,m[M]===")"&&k--,M++;let R=m.slice(T+1,M-1),C=M;for(;C<m.length&&/\s/.test(m[C]);)C++;if(m[C]==="="&&m[C+1]===">"){let K=$e(e,c+1+p);throw new z(`Arrow functions are not allowed in extend blocks (method '${S}' in extend ${a}). Use regular function syntax instead, as extension methods need 'this' binding.`,K)}if(m[C]!=="{"){p++;continue}let I=dt(m,C),N=m.slice(p,I).trim(),L=R.split(",").map(K=>K.trim()).filter(K=>K.length>0).map(K=>{let ie=K.match(/^(\w+)\s*:\s*(.+)$/);return ie?`${ie[1]} = ${ie[2]}`:K}).join(", "),U=_?"async ":"",H=m.slice(C+1,I-1);f.push({name:S,isAsync:_,fullText:`${S}: ${U}function(${L}) {${H}}`}),p=I}let d=!n.has(a);d&&n.set(a,new Set);let h=n.get(a);for(let $ of f)h.add($.name);let x=f.map($=>` ${$.fullText}`).join(`,
16
- `),E;d?E=`${o}const __ext_${a} = {
7
+ ;return { ${t.join(", ")} };`),c=0,u=a(()=>{if(--c<0)throw new pt(s)},...o.map(()=>{})),f={};for(let p of t){let m=u[p];f[p]=(...d)=>{c=s;try{return m(...d)}catch(h){throw h instanceof RangeError&&/stack/i.test(h.message)?new pt(s):h}}}return f}function nr(e,t,n={}){let r=Le(e,n);if(!r.safe)return{safe:!1,diagnostics:r.diagnostics};if(!r.predicates.includes(t))return{safe:!1,diagnostics:[{predicate:t,message:`entry predicate '${t}' not found in the verified cluster`,line:0,column:0}]};let s=n.fuel??1e6;return{safe:!0,code:`(() => {let __f = 0;const __fuel = () => { if (--__f < 0) throw new RangeError('tjs:predicate-fuel'); };${ds(e)}return (...__a) => {__f = ${s};try { return !!${t}(...__a); }catch (e) {if (e instanceof RangeError && /tjs:predicate-fuel|stack/i.test(e.message)) return false;throw e;}};})()`,diagnostics:[]}}function No(e={}){let{onUnsafe:t,...n}=e,r=new Map,s=new Set;return(i,o)=>{let a=r.get(i);if(a===void 0){try{let c=Le(i,n).predicates,l=c[c.length-1];if(!l)throw new Error("$predicate declares no function");a=mt(i,[l],n)[l]}catch(c){if(a=null,!s.has(i)){s.add(i);let l=c instanceof Error?c:new Error(String(c));t?t(i,l):console.warn(`[tjs-lang] $predicate not verifiable \u2014 failing closed: ${l.message}`)}}r.set(i,a)}if(a===null)return!1;try{return a(o)===!0}catch{return!1}}}function Do(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 rr(e,t,n,r,s,i){let o=`__pred_${e}`,a=`function ${o}(${n}) { ${r} }`,c=nr(a,o,s?{knownPredicates:new Set(s)}:{});return c.safe?(i?.push({name:e,kind:t,verified:!0}),c.code):(i?.push({name:e,kind:t,verified:!1,reason:Gt(c.diagnostics).replace(/__pred_/g,"")}),null)}function xs(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 ws(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 S=e[l];S==="{"?c++:S==="}"&&c--,l++}if(c!==0){n+=e[r],r++;continue}let u=e.slice(a,l-1),f,p=l,m=e.slice(l).match(/^\s*fallback\s*\{/);if(m){let S=l+m[0].length;c=1;let $=S;for(;$<e.length&&c>0;){let j=e[$];j==="{"?c++:j==="}"&&c--,$++}c===0&&(f=e.slice(S,$-1),p=$)}let h=Bo(u).map(S=>{let $=Lo(e,o,S);return $?`${S}: ${$}`:S}),x={id:`__tjs_wasm_${s}`,body:u,fallback:f,captures:h,start:o,end:p};t.push(x);let _=f??u,E=h.map(S=>S.split(":")[0].trim()),b=E.length>0?E.join(", "):"",w=E.length>0?`globalThis.${x.id}(${b})`:`globalThis.${x.id}()`,T=`((globalThis.__tjs_wasm_enabled !== false && globalThis.${x.id}) ? ${w} : (() => {${_}})())`;n+=T,r=p,s++}else n+=e[r],r++}return{source:n,blocks:t}}function Ss(e){let t=[],n="",r=0;for(;r<e.length;){let s=/^\b(export\s+)?wasm\s+function\s+(\w+)\s*\(/,i=e.slice(r).match(s);if(!i){n+=e[r],r++;continue}let o=!!i[1],a=i[2],c=r,l=r+i[0].length,u=1,f=l;for(;f<e.length&&u>0;)e[f]==="("?u++:e[f]===")"&&u--,f++;if(u!==0){n+=e[r],r++;continue}let p=e.slice(l,f-1);if(p.match(/^\s*!/))throw new z(`Unsafe wasm functions (with \`!\` marker) are reserved for a future phase. Remove the bang from \`wasm function ${a}\` to declare it as a regular (pure) wasm function, or wait until the unsafe variant is implemented.`,$e(e,c));let d,h=f,x=e.slice(f).match(/^\s*:\s*(\w+)/);x&&(d=x[1],h=f+x[0].length);let _=e.slice(h).match(/^\s*\{/);if(!_){n+=e[r],r++;continue}let E=h+_[0].length,b=1,w=E;for(;w<e.length&&b>0;)e[w]==="{"?b++:e[w]==="}"&&b--,w++;if(b!==0){n+=e[r],r++;continue}let T=e.slice(E,w-1),S=Io(p),$=`__tjs_wasm_${a}`,j={id:$,name:a,returnType:d,body:T,captures:S,start:c,end:w};t.push(j);let k=S.map(I=>I.split(":")[0].trim()),C=`${o?"export ":""}function ${a}(${k.join(", ")}) { return globalThis.${$}(${k.join(", ")}) }`;n+=C,r=w}return{source:n,blocks:t}}function _s(e,t){let{loader:n,importerPath:r}=t;if(!n)return{source:e,blocks:[]};let s=[],i=new Set;function o(l,u){if(!i.has(l.id)){s.push(l),i.add(l.id);for(let[f,p]of u){if(f===l.name||i.has(p.id))continue;new RegExp(`\\b${f}\\s*\\(`).test(l.body)&&o(p,u)}}}let a=/^(\s*)import\s*\{([^}]*?)\}\s*from\s*(['"])([^'"]+)\3\s*;?\s*$/gm;return{source:e.replace(a,(l,u,f,p,m)=>{let d=n.load(m,r);if(!d)return l;let h=new Map;for(let T of d.parseResult.wasmBlocks)T.name&&h.set(T.name,T);if(h.size===0)return l;let x=f.split(",").map(T=>T.trim()).filter(T=>T.length>0),_=[],E=[];for(let T of x){let S=T.match(/^(\w+)(?:\s+as\s+(\w+))?$/);if(!S){E.push(T);continue}let $=S[1],j=S[2]??S[1],k=h.get($);if(!k){E.push(T);continue}o(k,h);let R=k.captures.map(C=>C.split(":")[0].trim());_.push(`function ${j}(${R.join(", ")}) { return globalThis.${k.id}(${R.join(", ")}) }`)}let b=_.join(`
8
+ `);if(E.length===0)return b?`${u}${b}`:`${u}`;let w=`${u}import { ${E.join(", ")} } from '${m}'`;return b?`${w}
9
+ ${u}${b}`:w}),blocks:s}}function Io(e){let t=e.trim();return t?t.split(",").map(n=>n.trim()).filter(n=>n.length>0):[]}function Oo(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function Bo(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 p of n){if(!o.has(p))continue;let m=new RegExp(`(?<!\\.)\\b${p}\\b`,"g"),d=new RegExp(`\\.${p}\\b`,"g"),h=t.match(m)?.length||0,x=t.match(d)?.length||0;h<=x&&o.delete(p)}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"]),f=[];for(let p of o)!a.has(p)&&!u.has(p)&&!Oo(p)&&f.push(p);return f.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?gs(a[1],n):void 0}return gs(i[1],n)}function gs(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 Ts(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(`
10
+ `),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("/*"),f=c.indexOf("*/");if(u!==-1&&(f===-1||f<u)){o=!0,i.push(c);continue}if(a>0&&t.test(c)){let p=l.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!n.test(p)&&!r.test(p)){let m=c.match(/^(\s*)/),d=m?m[1]:"",h=c.slice(d.length);i.push(d+";"+h);continue}}i.push(c)}return i.join(`
11
+ `)}function Fo(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===`
12
+ `&&(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=Fo(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===`
13
+ `&&(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=Uo(i,a),f=qo(i,a+2),p=i.slice(u,a).trim(),m=i.slice(a+2,f).trim();if(p&&m){let d=i.slice(0,u),h=i.slice(f),_=/[a-zA-Z0-9_$]$/.test(d)?" ":"";i=`${d}${_}${l}(${p}, ${m})${h}`}}return i}function Uo(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),f=l>0?e[l-1]:"";if(!/[a-zA-Z0-9_$]/.test(f)){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 qo(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 Es(e,t){let n="",r=0;for(;r<e.length;){let s=e.slice(r).match(/^\bType\s+([A-Z_][a-zA-Z0-9_]*)\s*/);if(s){let i=s[1],o=r+s[0].length,a=i,c=!1,l=e.slice(o).match(/^(['"`])([^]*?)\1\s*/);if(l){let m=o+l[0].length,d=e[m],h=d===void 0||m>=e.length||d!=="="&&d!=="{";if(d==="="||d==="{")a=l[2],c=!0,o=m;else if(h){let x=l[0].trim(),_=l[0].slice(x.length);n+=`const ${i} = Type('${i}', ${x})${_}`,r=m;continue}}let u,f=o,p=e.slice(o).match(/^=\s*/);if(p){o+=p[0].length;let m=e.slice(o).match(/^(\+?\d+(?:\.\d+)?|['"`][^'"`]*['"`]|\{[^}]*\}|\[[^\]]*\]|true|false|null)/);if(m){u=m[0],o+=m[0].length,f=o;let d=e.slice(o).match(/^\s*/);d&&(o+=d[0].length)}}if(e[o]==="{"){let m=o+1,d=1,h=m;for(;h<e.length&&d>0;){let S=e[h];S==="{"?d++:S==="}"&&d--,h++}if(d!==0){n+=e[r],r++;continue}let x=e.slice(m,h-1).trim(),_=h,E=x.match(/description\s*:\s*(['"`])([^]*?)\1/);E&&!c&&(a=E[2]);let b,w=x.match(/example\s*:\s*/);if(w){let S=w.index+w[0].length,$=qs(x,S);$&&(b=$.value.trim())}let T=x.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/);if(T&&b){let S=T[1].trim(),$=T[2].trim(),j=u?`, ${u}`:"",k=`globalThis.__tjs?.validate(${S}, globalThis.__tjs?.infer(${b}))`,R=rr(i,"Type",S,$,void 0,t),C=R?`(__g => (${S}) => (${k} ? __g(${S}) : false))(${R})`:`(${S}) => { if (!${k}) return false; ${$} }`;n+=`const ${i} = Type('${a}', ${C}, ${b}${j})`}else if(T){let S=T[1].trim(),$=T[2].trim(),j=u?`, undefined, ${u}`:"",R=rr(i,"Type",S,$,void 0,t)??`(${S}) => { ${$} }`;n+=`const ${i} = Type('${a}', ${R}${j})`}else if(b){let S=u?`, ${u}`:"";n+=`const ${i} = Type('${a}', undefined, ${b}${S})`}else u?n+=`const ${i} = Type('${a}', ${u})`:n+=`const ${i} = Type('${a}')`;r=_;continue}else if(u){n+=`const ${i} = Type('${a}', ${u})`,r=f;continue}else if(!l){let m=e.slice(o).match(/^(['"`][^]*?['"`]|\+?\d+(?:\.\d+)?|true|false|null|\{[^]*?\}|\[[^]*?\])/);if(m){let d=m[0];n+=`const ${i} = Type('${i}', ${d})`,r=o+m[0].length;continue}}}n+=e[r],r++}return n}function $s(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=Do(l,/params\s*:\s*\{/),f=l.match(/returns\s*:\s*(.+?)(?:\n|$)/),p=l.match(/returnContract\s*:\s*['"](\w+)['"]/),m=l.match(/description\s*:\s*(['"])([^]*?)\1/),d=[];u&&d.push(`params: ${u[1]}`),f&&d.push(`returns: ${f[1].trim()}`),p&&d.push(`returnContract: '${p[1]}'`);let h=m?m[2]:s;if(i){let x=i.split(",").map(E=>{let b=E.trim().split("=").map(w=>w.trim());if(b.length===2){let w=b[1]==="any"||b[1]==="undefined"?"null":b[1];return`['${b[0]}', ${w}]`}return`'${b[0]}'`}),_=i.split(",").map(E=>E.trim().split("=")[0].trim());t+=`const ${s} = FunctionPredicate('${h}', [${x.join(", ")}], (${_.join(", ")}) => ({ ${d.join(", ")} }))`}else t+=`const ${s} = FunctionPredicate('${h}', { ${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 f=l.slice(0,u).trim(),p=l.slice(u+1).trim();t+=`const ${s} = FunctionPredicate(${p}, ${f})`}else t+=`const ${s} = FunctionPredicate('${s}', ${l})`;n=c;continue}}}t+=e[n],n++}return t}function ks(e,t){let n="",r=0;for(;r<e.length;){let s=e.slice(r).match(/^\bGeneric\s+([A-Z][a-zA-Z0-9_]*)\s*<([^>]+)>\s*\{/);if(s){let i=s[1],o=s[2],c=r+s[0].length-1+1,l=1,u=c;for(;u<e.length&&l>0;){let b=e[u];b==="{"?l++:b==="}"&&l--,u++}if(l!==0){n+=e[r],r++;continue}let f=e.slice(c,u-1).trim(),p=u,m=o.split(",").map(b=>{let w=b.trim().split("=").map(T=>T.trim());if(w.length===2){let T=w[1]==="any"||w[1]==="undefined"?"null":w[1];return`['${w[0]}', ${T}]`}return`'${w[0]}'`}),d=f,h=d.search(/\bdeclaration\s*\{/);if(h!==-1){let b=d.indexOf("{",h),w=1,T=b+1;for(;T<d.length&&w>0;)d[T]==="{"?w++:d[T]==="}"&&w--,T++;d=d.slice(0,h)+d.slice(T)}let x=d.match(/description\s*:\s*(['"`])([^]*?)\1/),_=d.match(/predicate\s*\(([^)]*)\)\s*\{([^]*)\}/),E=x?x[2]:i;if(_){let b=_[1].trim().split(",").map(C=>C.trim()),w=_[2].trim(),T=b[0]||"x",S=b.slice(1),$=S.map(C=>`check${C}`);S.forEach((C,I)=>{w=w.replace(new RegExp(`\\b${C}\\s*\\(`,"g"),`${$[I]}(`)});let j=[T,...$].join(", "),R=rr(i,"Generic",j,w,$,t)??`(${j}) => { ${w} }`;n+=`const ${i} = Generic([${m.join(", ")}], ${R}, '${E}')`}else n+=`const ${i} = Generic([${m.join(", ")}], () => true, '${E}')`;r=p;continue}n+=e[r],r++}return n}function js(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(),f=l,p=ys(u);t+=`const ${s} = Union('${i}', [${p.join(", ")}])`,n=f;continue}else{let a=e.indexOf(`
14
+ `,o);a===-1&&(a=e.length);let c=e.slice(o,a).trim();if(c){let l=ys(c);t+=`const ${s} = Union('${i}', [${l.join(", ")}])`,n=a;continue}}}t+=e[n],n++}return t}function ys(e){let t=[],n=e.split("|").map(r=>r.trim());for(let r of n)r&&t.push(r);return t}function vs(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(),f=l,m=Wo(u).map(([d,h])=>`${d}: ${h}`).join(", ");t+=`const ${s} = Enum('${i}', { ${m} })`,n=f;continue}t+=e[n],n++}return t}function Wo(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 Ms(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]===`
15
+ `||e[r-1]===";"||e[r-1]==="}"){let b=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=dt(e,c),u=e.slice(c+1,l-1).trim(),f=[],p=0,m=e.slice(c+1,l-1);for(;p<m.length;){let b=m.slice(p).match(/^(\s*)(async\s+)?(\w+)\s*\(/);if(!b){p++;continue}let w=b[1],T=!!b[2],S=b[3],$=p+b[0].length-1,j=1,k=$+1;for(;k<m.length&&j>0;)m[k]==="("&&j++,m[k]===")"&&j--,k++;let R=m.slice($+1,k-1),C=k;for(;C<m.length&&/\s/.test(m[C]);)C++;if(m[C]==="="&&m[C+1]===">"){let X=$e(e,c+1+p);throw new z(`Arrow functions are not allowed in extend blocks (method '${S}' in extend ${a}). Use regular function syntax instead, as extension methods need 'this' binding.`,X)}if(m[C]!=="{"){p++;continue}let I=dt(m,C),N=m.slice(p,I).trim(),U=R.split(",").map(X=>X.trim()).filter(X=>X.length>0).map(X=>{let ie=X.match(/^(\w+)\s*:\s*(.+)$/);return ie?`${ie[1]} = ${ie[2]}`:X}).join(", "),q=T?"async ":"",Y=m.slice(C+1,I-1);f.push({name:S,isAsync:T,fullText:`${S}: ${q}function(${U}) {${Y}}`}),p=I}let d=!t.has(a);d&&t.set(a,new Set);let h=t.get(a);for(let E of f)h.add(E.name);let x=f.map(E=>` ${E.fullText}`).join(`,
16
+ `),_;d?_=`${o}const __ext_${a} = {
17
17
  ${x}
18
18
  ${o}}
19
- `:E=`${o}Object.assign(__ext_${a}, {
19
+ `:_=`${o}Object.assign(__ext_${a}, {
20
20
  ${x}
21
21
  ${o}})
22
- `;for(let $ of f)E+=`${o}if (__tjs?.registerExtension) { __tjs.registerExtension('${a}', '${$.name}', __ext_${a}.${$.name}) }
23
- `;t+=E,r=l}return r<=e.length&&t.length<e.length,{source:t,extensions:n}}function ht(e,n){if(n.size===0)return e;let t=new Map;for(let[s,i]of n)for(let o of i)t.has(o)||t.set(o,[]),t.get(o).push(s);let r=e;for(let[s,i]of t){if(!i.includes("String"))continue;let o=new RegExp(`('(?:[^'\\\\]|\\\\.)*')\\.(${s})\\((\\))?`,"g");r=r.replace(o,(l,u,f,p)=>p?`__ext_String.${f}.call(${u})`:`__ext_String.${f}.call(${u}, `);let a=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${s})\\((\\))?`,"g");r=r.replace(a,(l,u,f,p)=>p?`__ext_String.${f}.call(${u})`:`__ext_String.${f}.call(${u}, `);let c=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+s+"\\((\\))?","g");r=r.replace(c,(l,u,f)=>f?`__ext_String.${s}.call(${u})`:`__ext_String.${s}.call(${u}, `)}for(let[s,i]of t){if(!i.includes("Array"))continue;let o=`].${s}(`,a=0,c;for(;(c=r.indexOf(o,a))!==-1;){let l=1,u=c-1,f=!1;for(;u>=0&&l>0;){let p=r[u];f?p===f&&(u===0||r[u-1]!=="\\")&&(f=!1):(p==="]"&&l++,p==="["&&l--,(p==="'"||p==='"'||p==="`")&&(f=p)),u--}if(l===0){let p=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(${p})${d.slice(1)}`:r=`${m}__ext_Array.${s}.call(${p}, ${d}`}a=c+1}}for(let[s,i]of t){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 $e(e,n){let t=1,r=0;for(let s=0;s<n&&s<e.length;s++)e[s]===`
24
- `?(t++,r=0):r++;return{line:t,column:r}}function vs(e,n){let t=n.trim();return/^['"`]/.test(t)?`typeof ${e} === 'string'`:t==="true"||t==="false"?`typeof ${e} === 'boolean'`:t==="null"?`${e} === null`:t==="undefined"?`${e} === undefined`:t.startsWith("[")?`Array.isArray(${e})`:t.startsWith("{")?`(typeof ${e} === 'object' && ${e} !== null && !Array.isArray(${e}))`:/^\+\d+/.test(t)?`(typeof ${e} === 'number' && Number.isInteger(${e}) && ${e} >= 0)`:/^-?\d+\.\d+/.test(t)?`typeof ${e} === 'number'`:/^-?\d+$/.test(t)?`(typeof ${e} === 'number' && Number.isInteger(${e}))`:"true"}function Zt(e){let n=e.trim();return/^['"`]/.test(n)?"string":n==="true"||n==="false"?"boolean":n==="null"?"null":n==="undefined"?"undefined":n.startsWith("[")?"array":n.startsWith("{")?"object":/^\+\d+/.test(n)?"non-negative-integer":/^-?\d+\.\d+/.test(n)?"number":/^-?\d+$/.test(n)?"integer":"any"}function er(e,n){let t=[],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=gs(s.trim(),n);l&&t.push(l),s="";continue}s+=c}let o=s.trim();if(o){let a=gs(o,n);a&&t.push(a)}return t}function gs(e,n){let t=e.replace(/^\/\*\s*unsafe\s*\*\/\s*/,"");if(t.startsWith("..."))return null;let r=t.indexOf("=");if(r===-1)return{name:t.trim(),defaultValue:"",required:!0};let s=t.slice(0,r).trim(),i=t.slice(r+1).trim();return{name:s,defaultValue:i,required:n.has(s)}}function dt(e,n){let t=1,r=n+1,s=!1,i=!1,o=!1;for(;r<e.length&&t>0;){let a=e[r],c=r+1<e.length?e[r+1]:"";if(i){a===`
25
- `&&(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==="{"&&t++,a==="}"&&t--,r++}return r}function Ms(e,n){let t=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 f=!!i[1],p=!!i[2],m=i[3],d=i.index,h=d,E=i[0].indexOf("function");E>=0&&(h=d+E),o.push({name:m,fullMatchStart:d,funcKeywordStart:h,exported:f,isAsync:p})}for(let f of o)s.has(f.name)||s.set(f.name,[]);let a=new Map;for(let f of o)a.set(f.name,(a.get(f.name)||0)+1);let c=new Set;for(let[f,p]of a)p>1&&c.add(f);if(c.size===0)return{source:e,polymorphicNames:t};for(let f of o){if(!c.has(f.name))continue;let p=e.indexOf("(",f.funcKeywordStart);if(p===-1)continue;let m=1,d=p+1;for(;d<e.length&&m>0;)e[d]==="("&&m++,e[d]===")"&&m--,d++;let h=d-1,x=e.slice(p+1,h),E=d;for(;E<e.length&&e[E]!=="{";)E++;if(E>=e.length)continue;let $=dt(e,E),b=f.fullMatchStart;for(;b>0&&e[b-1]===" ";)b--;let w=s.get(f.name),_=er(x,n);if(x.includes("...")){let T=$e(e,f.funcKeywordStart);throw new z(`Rest parameters are not supported in polymorphic function '${f.name}'. Use separate function names instead.`,T)}w.push({index:w.length+1,start:b,end:$,text:e.slice(b,$),exported:f.exported,isAsync:f.isAsync,params:_})}for(let[f,p]of s){if(p.length<2)continue;let m=p.filter(d=>d.isAsync).length;if(m>0&&m<p.length){let d=$e(e,p[0].start);throw new z(`Polymorphic function '${f}': all variants must be either sync or async, not mixed.`,d)}for(let d=0;d<p.length;d++)for(let h=d+1;h<p.length;h++){let x=p[d],E=p[h];if(x.params.length!==E.params.length)continue;let $=!0;for(let b=0;b<x.params.length;b++){let w=x.params[b].defaultValue?Zt(x.params[b].defaultValue):"any",_=E.params[b].defaultValue?Zt(E.params[b].defaultValue):"any";if(w!==_){$=!1;break}}if($){let b=$e(e,E.start);throw new z(`Polymorphic function '${f}': variants ${d+1} and ${h+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,b)}}}let l=[];for(let[f,p]of s)if(!(p.length<2))for(let m of p)l.push({name:f,variant:m});l.sort((f,p)=>p.variant.start-f.variant.start);let u=e;for(let{name:f,variant:p}of l){let m=p.isAsync?"async ":"",d=p.text.replace(new RegExp(`(?:export\\s+)?${m?m.replace(/\s+$/,"\\s+"):""}function\\s+${f}\\s*\\(`),`${m}function ${f}$$${p.index}(`);u=u.slice(0,p.start)+d+u.slice(p.end)}for(let[f,p]of s){if(p.length<2)continue;t.add(f);let m=p[0].isAsync,d=p.some(w=>w.exported),h=m?"async ":"",x=d?"export ":"",E=[...p].sort((w,_)=>{if(w.params.length!==_.params.length)return 0;let S=0,T=0;for(let k of w.params){let M=k.defaultValue?Zt(k.defaultValue):"any";M==="non-negative-integer"?S+=3:M==="integer"?S+=2:M!=="any"&&(S+=1)}for(let k of _.params){let M=k.defaultValue?Zt(k.defaultValue):"any";M==="non-negative-integer"?T+=3:M==="integer"?T+=2:M!=="any"&&(T+=1)}return T-S}),$=[];for(let w of E){let _=[`__args.length === ${w.params.length}`],S=[];for(let T=0;T<w.params.length;T++){let k=w.params[T];if(S.push(`__args[${T}]`),k.defaultValue){let M=vs(`__args[${T}]`,k.defaultValue);M!=="true"&&_.push(M)}}$.push(` if (${_.join(" && ")}) return ${f}$${w.index}(${S.join(", ")})`)}let b=`
22
+ `;for(let E of f)_+=`${o}if (__tjs?.registerExtension) { __tjs.registerExtension('${a}', '${E.name}', __ext_${a}.${E.name}) }
23
+ `;n+=_,r=l}return r<=e.length&&n.length<e.length,{source:n,extensions:t}}function ht(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,f,p)=>p?`__ext_String.${f}.call(${u})`:`__ext_String.${f}.call(${u}, `);let a=new RegExp(`("(?:[^"\\\\]|\\\\.)*")\\.(${s})\\((\\))?`,"g");r=r.replace(a,(l,u,f,p)=>p?`__ext_String.${f}.call(${u})`:`__ext_String.${f}.call(${u}, `);let c=new RegExp("(`(?:[^`\\\\]|\\\\.)*`)\\."+s+"\\((\\))?","g");r=r.replace(c,(l,u,f)=>f?`__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,f=!1;for(;u>=0&&l>0;){let p=r[u];f?p===f&&(u===0||r[u-1]!=="\\")&&(f=!1):(p==="]"&&l++,p==="["&&l--,(p==="'"||p==='"'||p==="`")&&(f=p)),u--}if(l===0){let p=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(${p})${d.slice(1)}`:r=`${m}__ext_Array.${s}.call(${p}, ${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 $e(e,t){let n=1,r=0;for(let s=0;s<t&&s<e.length;s++)e[s]===`
24
+ `?(n++,r=0):r++;return{line:n,column:r}}function As(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 Zt(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 sr(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=hs(s.trim(),t);l&&n.push(l),s="";continue}s+=c}let o=s.trim();if(o){let a=hs(o,t);a&&n.push(a)}return n}function hs(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 dt(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===`
25
+ `&&(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 Cs(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 f=!!i[1],p=!!i[2],m=i[3],d=i.index,h=d,_=i[0].indexOf("function");_>=0&&(h=d+_),o.push({name:m,fullMatchStart:d,funcKeywordStart:h,exported:f,isAsync:p})}for(let f of o)s.has(f.name)||s.set(f.name,[]);let a=new Map;for(let f of o)a.set(f.name,(a.get(f.name)||0)+1);let c=new Set;for(let[f,p]of a)p>1&&c.add(f);if(c.size===0)return{source:e,polymorphicNames:n};for(let f of o){if(!c.has(f.name))continue;let p=e.indexOf("(",f.funcKeywordStart);if(p===-1)continue;let m=1,d=p+1;for(;d<e.length&&m>0;)e[d]==="("&&m++,e[d]===")"&&m--,d++;let h=d-1,x=e.slice(p+1,h),_=d;for(;_<e.length&&e[_]!=="{";)_++;if(_>=e.length)continue;let E=dt(e,_),b=f.fullMatchStart;for(;b>0&&e[b-1]===" ";)b--;let w=s.get(f.name),T=sr(x,t);if(x.includes("...")){let $=$e(e,f.funcKeywordStart);throw new z(`Rest parameters are not supported in polymorphic function '${f.name}'. Use separate function names instead.`,$)}w.push({index:w.length+1,start:b,end:E,text:e.slice(b,E),exported:f.exported,isAsync:f.isAsync,params:T})}for(let[f,p]of s){if(p.length<2)continue;let m=p.filter(d=>d.isAsync).length;if(m>0&&m<p.length){let d=$e(e,p[0].start);throw new z(`Polymorphic function '${f}': all variants must be either sync or async, not mixed.`,d)}for(let d=0;d<p.length;d++)for(let h=d+1;h<p.length;h++){let x=p[d],_=p[h];if(x.params.length!==_.params.length)continue;let E=!0;for(let b=0;b<x.params.length;b++){let w=x.params[b].defaultValue?Zt(x.params[b].defaultValue):"any",T=_.params[b].defaultValue?Zt(_.params[b].defaultValue):"any";if(w!==T){E=!1;break}}if(E){let b=$e(e,_.start);throw new z(`Polymorphic function '${f}': variants ${d+1} and ${h+1} have ambiguous signatures (same parameter types at every position). Overloads must differ by arity or parameter types.`,b)}}}let l=[];for(let[f,p]of s)if(!(p.length<2))for(let m of p)l.push({name:f,variant:m});l.sort((f,p)=>p.variant.start-f.variant.start);let u=e;for(let{name:f,variant:p}of l){let m=p.isAsync?"async ":"",d=p.text.replace(new RegExp(`(?:export\\s+)?${m?m.replace(/\s+$/,"\\s+"):""}function\\s+${f}\\s*\\(`),`${m}function ${f}$$${p.index}(`);u=u.slice(0,p.start)+d+u.slice(p.end)}for(let[f,p]of s){if(p.length<2)continue;n.add(f);let m=p[0].isAsync,d=p.some(w=>w.exported),h=m?"async ":"",x=d?"export ":"",_=[...p].sort((w,T)=>{if(w.params.length!==T.params.length)return 0;let S=0,$=0;for(let j of w.params){let k=j.defaultValue?Zt(j.defaultValue):"any";k==="non-negative-integer"?S+=3:k==="integer"?S+=2:k!=="any"&&(S+=1)}for(let j of T.params){let k=j.defaultValue?Zt(j.defaultValue):"any";k==="non-negative-integer"?$+=3:k==="integer"?$+=2:k!=="any"&&($+=1)}return $-S}),E=[];for(let w of _){let T=[`__args.length === ${w.params.length}`],S=[];for(let $=0;$<w.params.length;$++){let j=w.params[$];if(S.push(`__args[${$}]`),j.defaultValue){let k=As(`__args[${$}]`,j.defaultValue);k!=="true"&&T.push(k)}}E.push(` if (${T.join(" && ")}) return ${f}$${w.index}(${S.join(", ")})`)}let b=`
26
26
  ${x}${h}function ${f}(...__args) {
27
- ${$.join(`
27
+ ${E.join(`
28
28
  `)}
29
29
  return __tjs.typeError('${f}', 'no matching overload', __args)
30
30
  }
31
- `;u+=b}return{source:u,polymorphicNames:t}}function As(e){let n=new Set,t=/\b(?:let|const|var|function|class)\s+([A-Z][a-zA-Z0-9_]*)/g;for(let r;r=t.exec(e);)n.add(r[1]);return e.replace(/(?<=^|[;\n{])(\s*)([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(r,s,i)=>n.has(i)?r:r.replace(i,`const ${i}`))}function Cs(e,n=!1){let t=[],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 f=c+1,p=1,m=f,d=null,h=!1;for(;m<e.length&&p>0;){let x=e[m];if(h){h=!1,m++;continue}if(x==="\\"&&d){h=!0,m++;continue}if(d){x===d&&(d=null),m++;continue}if(x==="/"&&e[m+1]==="/"){let E=e.indexOf(`
32
- `,m);m=E===-1?e.length:E+1;continue}if(x==="/"&&e[m+1]==="*"){let E=e.indexOf("*/",m+2);m=E===-1?e.length:E+2;continue}if(x==="'"||x==='"'||x==="`"){d=x,m++;continue}x==="{"?p++:x==="}"&&p--,m++}if(p===0){let x=e.slice(f,m-1).trim(),E=m,$=(e.slice(0,a).match(/\n/g)||[]).length+1;if(t.push({description:l,body:x,start:a,end:E,line:$}),!n)try{new Function(x)()}catch(_){let S=l||`test at line ${$}`;r.push(`Test failed: ${S} (line ${$})
33
- ${_.message||_}`)}let w=(e.slice(a,E).match(/\n/g)||[]).length;s+=`
34
- `.repeat(w),i=E;continue}}}s+=e[i],i++}return{source:s,tests:t,errors:r}}function Rs(e,n){let t=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=dt(e,l),f=e.slice(l,u);i.push({className:a,extendsClause:c,bodyStart:l,bodyEnd:u,body:f})}let o=e;for(let a=i.length-1;a>=0;a--){let{className:c,extendsClause:l,bodyStart:u,bodyEnd:f,body:p}=i[a],m=/\bconstructor\s*\(/g,d,h=[];for(;(d=m.exec(p))!==null;)h.push(d.index);if(h.length<2)continue;t.add(c);let x=[];for(let _=0;_<h.length;_++){let S=h[_],T=p.indexOf("(",S),k=1,M=T+1;for(;M<p.length&&k>0;)p[M]==="("&&k++,p[M]===")"&&k--,M++;let R=p.slice(T+1,M-1),C=M;for(;C<p.length&&p[C]!=="{";)C++;let I=dt(p,C),N=p.slice(C+1,I-1);x.push({index:_+1,paramStr:R,bodyText:N,fullStart:S,fullEnd:I})}let E=p;for(let _=x.length-1;_>=1;_--){let S=x[_],T=S.fullStart;for(;T>0&&E[T-1]===" ";)T--;T>0&&E[T-1]===`
35
- `&&T--,E=E.slice(0,T)+E.slice(S.fullEnd)}let $="";for(let _=1;_<x.length;_++){let S=x[_],T=er(S.paramStr,n);if(S.paramStr.includes("...")){let M=$e(e,u+S.fullStart);throw new z(`Rest parameters are not supported in polymorphic constructors for '${c}'.`,M)}$+=`
36
- function ${c}$ctor$${S.index}(${S.paramStr}) {`,$+=`
37
- const __obj = Object.create(${c}.prototype)`,$+=`
38
- ;(function() {${S.bodyText}}).call(__obj)`,$+=`
39
- return __obj`,$+=`
31
+ `;u+=b}return{source:u,polymorphicNames:n}}function Rs(e){let t=new Set,n=/\b(?:let|const|var|function|class)\s+([A-Z][a-zA-Z0-9_]*)/g;for(let r;r=n.exec(e);)t.add(r[1]);return e.replace(/(?<=^|[;\n{])(\s*)([A-Z][a-zA-Z0-9_]*)\s*=(?!=)/gm,(r,s,i)=>t.has(i)?r:r.replace(i,`const ${i}`))}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 f=c+1,p=1,m=f,d=null,h=!1;for(;m<e.length&&p>0;){let x=e[m];if(h){h=!1,m++;continue}if(x==="\\"&&d){h=!0,m++;continue}if(d){x===d&&(d=null),m++;continue}if(x==="/"&&e[m+1]==="/"){let _=e.indexOf(`
32
+ `,m);m=_===-1?e.length:_+1;continue}if(x==="/"&&e[m+1]==="*"){let _=e.indexOf("*/",m+2);m=_===-1?e.length:_+2;continue}if(x==="'"||x==='"'||x==="`"){d=x,m++;continue}x==="{"?p++:x==="}"&&p--,m++}if(p===0){let x=e.slice(f,m-1).trim(),_=m,E=(e.slice(0,a).match(/\n/g)||[]).length+1;if(n.push({description:l,body:x,start:a,end:_,line:E}),!t)try{new Function(x)()}catch(T){let S=l||`test at line ${E}`;r.push(`Test failed: ${S} (line ${E})
33
+ ${T.message||T}`)}let w=(e.slice(a,_).match(/\n/g)||[]).length;s+=`
34
+ `.repeat(w),i=_;continue}}}s+=e[i],i++}return{source:s,tests:n,errors:r}}function Ns(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=dt(e,l),f=e.slice(l,u);i.push({className:a,extendsClause:c,bodyStart:l,bodyEnd:u,body:f})}let o=e;for(let a=i.length-1;a>=0;a--){let{className:c,extendsClause:l,bodyStart:u,bodyEnd:f,body:p}=i[a],m=/\bconstructor\s*\(/g,d,h=[];for(;(d=m.exec(p))!==null;)h.push(d.index);if(h.length<2)continue;n.add(c);let x=[];for(let T=0;T<h.length;T++){let S=h[T],$=p.indexOf("(",S),j=1,k=$+1;for(;k<p.length&&j>0;)p[k]==="("&&j++,p[k]===")"&&j--,k++;let R=p.slice($+1,k-1),C=k;for(;C<p.length&&p[C]!=="{";)C++;let I=dt(p,C),N=p.slice(C+1,I-1);x.push({index:T+1,paramStr:R,bodyText:N,fullStart:S,fullEnd:I})}let _=p;for(let T=x.length-1;T>=1;T--){let S=x[T],$=S.fullStart;for(;$>0&&_[$-1]===" ";)$--;$>0&&_[$-1]===`
35
+ `&&$--,_=_.slice(0,$)+_.slice(S.fullEnd)}let E="";for(let T=1;T<x.length;T++){let S=x[T],$=sr(S.paramStr,t);if(S.paramStr.includes("...")){let k=$e(e,u+S.fullStart);throw new z(`Rest parameters are not supported in polymorphic constructors for '${c}'.`,k)}E+=`
36
+ function ${c}$ctor$${S.index}(${S.paramStr}) {`,E+=`
37
+ const __obj = Object.create(${c}.prototype)`,E+=`
38
+ ;(function() {${S.bodyText}}).call(__obj)`,E+=`
39
+ return __obj`,E+=`
40
40
  }
41
- `}let b=[];for(let _=0;_<x.length;_++){let S=x[_],T=er(S.paramStr,n),k=[`a.length === ${T.length}`];for(let M=0;M<T.length;M++){let R=T[M];if(R.defaultValue){let C=vs(`a[${M}]`,R.defaultValue);C!=="true"&&k.push(C)}}if(_===0)b.push(` if (${k.join(" && ")}) return Reflect.construct(t, a)`);else{let M=T.map((R,C)=>`a[${C}]`).join(", ");b.push(` if (${k.join(" && ")}) return ${c}$ctor$${S.index}(${M})`)}}$+=`
41
+ `}let b=[];for(let T=0;T<x.length;T++){let S=x[T],$=sr(S.paramStr,t),j=[`a.length === ${$.length}`];for(let k=0;k<$.length;k++){let R=$[k];if(R.defaultValue){let C=As(`a[${k}]`,R.defaultValue);C!=="true"&&j.push(C)}}if(T===0)b.push(` if (${j.join(" && ")}) return Reflect.construct(t, a)`);else{let k=$.map((R,C)=>`a[${C}]`).join(", ");b.push(` if (${j.join(" && ")}) return ${c}$ctor$${S.index}(${k})`)}}E+=`
42
42
  function ${c}$dispatch(t, a) {
43
- `,$+=b.join(`
43
+ `,E+=b.join(`
44
44
  `)+`
45
- `,$+=` return __tjs.typeError('${c}', 'no matching constructor', a)
46
- `,$+=`}
47
- `,o=o.slice(0,u)+E+o.slice(f);let w=u+E.length;o=o.slice(0,w)+$+o.slice(w)}return{source:o,polyCtorClasses:t}}function Ps(e,n=new Set){let t=/\bclass\s+(\w+)(\s+extends\s+\w+)?\s*\{/g,r="",s=0,i;for(;(i=t.exec(e))!==null;){let o=i[1],a=i[2]||"",c=i.index,l=c+i[0].length-1,u=1,f=l+1;for(;f<e.length&&u>0;){let p=e[f];p==="{"?u++:p==="}"&&u--,f++}if(u===0){let p=f,m=e.slice(l,p);r+=e.slice(s,c),r+=`let ${o} = class ${o}${a} ${m}; `,n.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=p}}return r+=e.slice(s),r}function Ns(e){let n=[{pattern:/\bnew\s+Date\b/,message:"new Date() is not allowed in TjsDate mode. Use Timestamp.now()/Timestamp.from() for wall-clock dates, or performance.now() for a monotonic counter (timing, id generation)"},{pattern:/\bDate\.now\b/,message:"Date.now() is not allowed in TjsDate mode. Use Timestamp.now() for a wall-clock date, or performance.now() for a monotonic counter (timing, id generation)"},{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:t,message:r}of n)if(t.test(e))throw new Error(r);return e}function Ds(e){let n=new Set,t=/\bconst!\s+(\w+)\b/g,r;for(;(r=t.exec(e))!==null;)n.add(r[1]);if(n.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 n){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 Is(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 Os(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 Bs(e){if(!e.includes("!."))return e;let n="",t=0,r="normal",s=0;for(;t<e.length;){let i=e[t],o=e[t+1];if(r==="normal"){if(i==="/"&&o==="/"){r="line-comment",n+=i,t++;continue}if(i==="/"&&o==="*"){r="block-comment",n+=i,t++;continue}if(i==="'"){r="string-single",n+=i,t++;continue}if(i==='"'){r="string-double",n+=i,t++;continue}if(i==="`"){r="string-template",s++,n+=i,t++;continue}if(i==="!"&&o==="."&&t+2<e.length&&/[a-zA-Z_$]/.test(e[t+2])){let a=n.length,c=qo(n);if(c<a){let l=n.slice(c);n=n.slice(0,c);let u=t+2;for(;u<e.length&&/[\w$]/.test(e[u]);)u++;let f=e.slice(t+2,u);n+=`__tjs.bang(${l},'${f}')`,t=u;continue}}n+=i,t++}else r==="line-comment"?(n+=i,i===`
48
- `&&(r="normal"),t++):r==="block-comment"?(n+=i,i==="*"&&o==="/"?(n+=o,r="normal",t+=2):t++):r==="string-single"?(n+=i,i==="\\"?(n+=o||"",t+=2):(i==="'"&&(r="normal"),t++)):r==="string-double"?(n+=i,i==="\\"?(n+=o||"",t+=2):(i==='"'&&(r="normal"),t++)):r==="string-template"?(n+=i,i==="\\"?(n+=o||"",t+=2):i==="`"?(s--,r=s>0?"string-template":"normal",t++):i==="$"&&o==="{"?(n+=o,t+=2,r="normal"):t++):(n+=i,t++)}return n}function qo(e){let n=e.length-1;for(;n>=0&&/\s/.test(e[n]);)n--;if(n<0)return e.length;for(;n>=0;){let t=e[n];if(/[\w$]/.test(t)){for(;n>=0&&/[\w$]/.test(e[n]);)n--;if(n>=0&&e[n]==="."){n>=1&&e[n-1]==="?"?n-=2:n--;continue}return n+1}else if(t===")"){if(n=ys(e,n,"(",")"),n<0)return 0;if(n--,n>=0&&/[\w$]/.test(e[n]))continue;if(n>=0&&e[n]==="."){n>=1&&e[n-1]==="?"?n-=2:n--;continue}return n+1}else if(t==="]"){if(n=ys(e,n,"[","]"),n<0)return 0;if(n--,n>=0&&/[\w$]/.test(e[n]))continue;if(n>=0&&e[n]==="."){n>=1&&e[n-1]==="?"?n-=2:n--;continue}return n+1}else return n+1}return 0}function ys(e,n,t,r){let s=1;for(n--;n>=0&&s>0;)e[n]===r?s++:e[n]===t&&s--,s>0&&n--;return n}function Ls(e){let n=new Map;if(!e.includes("let "))return{source:e,annotations:n};let t=[],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===`
49
- `&&(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 f=l,p=e.slice(u,f),m=l;for(;m<e.length&&/\s/.test(e[m]);)m++;if(m<e.length&&e[m]===":"&&e[m+1]!==":"){let h=m+1;for(;h<e.length&&/[ \t]/.test(e[h]);)h++;let x=Wo(e,h);if(x>h){let E=e.slice(h,x).trim();n.set(p,E),t.push({start:f,end:x,replacement:""}),r=x;continue}}}}break}r++}if(t.length===0)return{source:e,annotations:n};let o=e;for(let a=t.length-1;a>=0;a--){let c=t[a];o=o.slice(0,c.start)+c.replacement+o.slice(c.end)}return{source:o,annotations:n}}function Wo(e,n){let t=n,r=0,s=0,i=0,o="normal",a=[];for(;t<e.length;){let c=e[t];if(o==="sq"){if(c==="\\"){t+=2;continue}c==="'"&&(o="normal"),t++;continue}if(o==="dq"){if(c==="\\"){t+=2;continue}c==='"'&&(o="normal"),t++;continue}if(o==="tpl"){if(c==="\\"){t+=2;continue}if(c==="$"&&e[t+1]==="{"){a.push(1),o="normal",t+=2;continue}c==="`"&&(o="normal"),t++;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",t++;continue}}if(c==="'"){o="sq",t++;continue}if(c==='"'){o="dq",t++;continue}if(c==="`"){o="tpl",t++;continue}if(c==="("?r++:c===")"?r--:c==="{"?s++:c==="}"?s--:c==="["?i++:c==="]"&&i--,r===0&&s===0&&i===0&&(c==="="||c===","||c===";"||c===`
50
- `))return t;t++}return t}function Xt(e,n){let t="",r=0,s,i,o="normal",a=[],c=[{type:"top-level",braceDepth:0}],l=0,u=()=>c[c.length-1]?.type||"top-level",f=()=>{let p=c[c.length-1];return p?.type==="class-body"&&l===p.braceDepth+1};for(;r<e.length;){let p=e[r],m=e[r+1];switch(o){case"single-string":if(t+=p,p==="\\"&&r+1<e.length){t+=m,r+=2;continue}p==="'"&&(o="normal"),r++;continue;case"double-string":if(t+=p,p==="\\"&&r+1<e.length){t+=m,r+=2;continue}p==='"'&&(o="normal"),r++;continue;case"template-string":if(t+=p,p==="\\"&&r+1<e.length){t+=m,r+=2;continue}if(p==="$"&&m==="{"){t+=m,r+=2,a.push(1),o="normal";continue}p==="`"&&(o="normal"),r++;continue;case"line-comment":t+=p,p===`
51
- `&&(o="normal"),r++;continue;case"block-comment":if(t+=p,p==="*"&&m==="/"){t+=m,r+=2,o="normal";continue}r++;continue;case"regex":if(t+=p,p==="\\"&&r+1<e.length){t+=m,r+=2;continue}if(p==="["){for(r++;r<e.length&&e[r]!=="]";)t+=e[r],e[r]==="\\"&&r+1<e.length?(t+=e[r+1],r+=2):r++;r<e.length&&(t+=e[r],r++);continue}if(p==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)t+=e[r],r++;o="normal";continue}r++;continue;case"normal":if(a.length>0){if(p==="{")a[a.length-1]++;else if(p==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),t+=p,r++,o="template-string";continue}}if(p==="'"){t+=p,r++,o="single-string";continue}if(p==='"'){t+=p,r++,o="double-string";continue}if(p==="`"){t+=p,r++,o="template-string";continue}if(p==="/"&&m==="/"){t+=p+m,r+=2,o="line-comment";continue}if(p==="/"&&m==="*"){t+=p+m,r+=2,o="block-comment";continue}if(p==="/"){let b=t.trimEnd();if(!b[b.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(b)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(b)){t+=p,r++,o="regex";continue}}break}if(p==="{"){l++,t+=p,r++;continue}if(p==="}"){l--;let b=c[c.length-1];b&&l===b.braceDepth&&c.pop(),t+=p,r++;continue}let d=e.slice(r).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(d){let b=d[0].slice(0,-1);t+=b,r+=b.length,c.push({type:"class-body",braceDepth:l});continue}let h=e.slice(r).match(/^function\s+(\w+)\s*\(/);if(h){let b=h[1],w=h[0].length,_=e[r+w],S,T=r+w;(_==="?"||_==="!")&&(S=_,T++,S==="!"?n.unsafeFunctions.add(b):n.safeFunctions.add(b)),t+=`function ${b}(`,r=T;let k=Ht(e,r,"(",")");if(!k){t+=e[r],r++;continue}let{content:M,endPos:R}=k;r=R;let C=nr(M,n,!0);t+=C+")";let I=r;for(;I<e.length&&/\s/.test(e[I]);)I++;if(e[I]===":"){let L=e.slice(I,I+2),U;for(L===":?"||L===":!"?(I+=2,U=L===":?"?"safe":"unsafe"):I+=1;I<e.length&&/\s/.test(e[I]);)I++;let H=tr(e,I);H&&(s===void 0&&(s=H.type,U&&(i=U)),r=H.endPos)}let N=r;for(;N<e.length&&/\s/.test(e[N]);)N++;if(e[N]==="="&&e[N+1]===">")throw new z("Unexpected '=>' after function declaration. Function declarations use `function name(params) { body }`, not arrow syntax. Remove the `=>`.",$e(n.originalSource,N),n.originalSource);continue}let x=e.slice(r).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/),E=(()=>{for(let b=t.length-1;b>=0;b--)if(!/\s/.test(t[b]))return t[b];return`
52
- `})(),$=E!=="="&&E!==","&&E!=="("&&E!=="["&&E!==">";if(x&&f()&&!$){let b=x[1].length;t+=e.slice(r,r+b),r+=b;continue}if(x&&f()&&$){let b=x[1],w=x[0].length,_=r+w;t+=b+"(",r=_;let S=Ht(e,r,"(",")");if(!S){t+=e[r],r++;continue}let{content:T,endPos:k}=S;r=k;let M=nr(T,n,!0);t+=M+")";let R=r;for(;R<e.length&&/\s/.test(e[R]);)R++;if(e[R]===":"){let I=e.slice(R,R+2);for(I===":?"||I===":!"?R+=2:R++;R<e.length&&/\s/.test(e[R]);)R++;let N=tr(e,R);N&&(r=N.endPos)}let C=r;for(;C<e.length&&/\s/.test(e[C]);)C++;if(e[C]==="="&&e[C+1]===">")throw new z("Unexpected '=>' after method declaration. Methods use `name(params) { body }`, not arrow syntax. Remove the `=>`.",$e(n.originalSource,C),n.originalSource);continue}if(e[r]==="("){let b=Ht(e,r+1,"(",")");if(!b){t+=e[r],r++;continue}let w=b.content,_=b.endPos,S=_;for(;S<e.length&&/\s/.test(e[S]);)S++;let T;if(e[S]===":"){let k=e.slice(S,S+2);for(k===":?"||k===":!"?S+=2:S++;S<e.length&&/\s/.test(e[S]);)S++;let M=tr(e,S);if(M)for(T=M.type,S=M.endPos;S<e.length&&/\s/.test(e[S]);)S++}if(e.slice(S,S+2)==="=>"){let k=null,M=w,R=w.trimStart();R.startsWith("?")&&(R.length===1||/\s/.test(R[1]))?(k="?",M=R.slice(1)):R.startsWith("!")&&(R.length===1||/\s/.test(R[1]))&&(k="!",M=R.slice(1));let C=nr(M,n,!1);for(t+=`(${k==="?"?"/* safe */ ":k==="!"?"/* unsafe */ ":""}${C})`,r=_;r<S&&/\s/.test(e[r]);)t+=e[r],r++;T&&(r=S)}else{let k=Xt(w,n);t+=`(${k.source})`,r=_}continue}t+=e[r],r++}return{source:t,returnType:s,returnSafety:i}}function Ht(e,n,t,r){let s=1,i=n,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===t?s++:c===r&&s--),i++}return s!==0?null:{content:e.slice(n,i-1),endPos:i}}function Fs(e,n){let t=n;for(;t<e.length&&/\s/.test(e[t]);)t++;if(t>=e.length)return null;let r=t,s=e[t];if(s==="{"||s==="["){let o=s==="{"?"}":"]",a=Ht(e,t+1,s,o);return a?{value:e.slice(r,a.endPos),endPos:a.endPos}:null}if(s==="'"||s==='"'||s==="`"){for(t++;t<e.length;){if(e[t]===s&&e[t-1]!=="\\")return t++,{value:e.slice(r,t),endPos:t};t++}return null}if(/[-+\d]/.test(s)){for(;t<e.length&&/[\d.eE+-]/.test(e[t]);)t++;return{value:e.slice(r,t),endPos:t}}let i=e.slice(t).match(/^(true|false|null|undefined)\b/);return i?{value:i[1],endPos:t+i[1].length}:null}function bt(e){return e.replace(/(?<!\|)\|(?!\|)/g," || ")}function tr(e,n){let t=n,r=0,s=!1,i="",o=!1,a=c=>({type:bt(e.slice(n,c).trim()),endPos:c});for(;t<e.length;){let c=e[t];if(!s&&(c==="'"||c==='"'||c==="`")){s=!0,i=c,o=!0,t++;continue}if(s){if(c===i&&e[t-1]!=="\\"){if(s=!1,t++,r===0){let l=t;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(t)}continue}t++;continue}if(c==="{"||c==="["||c==="("){r++,o=!0,t++;continue}if(c==="}"||c==="]"||c===")"){if(r--,r===0){t++;let l=t;for(;l<e.length&&/\s/.test(e[l]);)l++;if(e[l]==="|"||e[l]==="&")continue;return a(t)}t++;continue}if(r===0&&c==="{"){if(o)return a(t);if(e.slice(t+1).match(/^\s*(\w+)\s*:/)){r++,o=!0,t++;continue}return a(t)}if(r===0&&(c==="|"||c==="&")){for(t++,t<e.length&&e[t]==="|"&&t++;t<e.length&&/\s/.test(e[t]);)t++;continue}if(r===0&&(/\d/.test(c)||c==="-"&&/\d/.test(e[t+1]))){let l=t;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,t=l;t<e.length&&/\s/.test(e[t]);)t++;if(t<e.length&&e[t]==="{")return{type:bt(e.slice(n,l).trim()),endPos:l};if(e[t]!=="|"&&e[t]!=="&")return{type:bt(e.slice(n,l).trim()),endPos:l};continue}if(r===0&&/[a-zA-Z_]/.test(c)){let l=t;for(;l<e.length&&/\w/.test(e[l]);)l++;for(o=!0,t=l;t<e.length&&/\s/.test(e[t]);)t++;if(t<e.length&&e[t]==="("){r++,t++;continue}if(t<e.length&&e[t]==="{"&&!e.slice(t+1).match(/^\s*(\w+)\s*:/)){let f=l;for(;f>n&&/\s/.test(e[f-1]);)f--;return{type:bt(e.slice(n,f).trim()),endPos:l}}if(e[t]!=="|"&&e[t]!=="&")return{type:bt(e.slice(n,l).trim()),endPos:l};continue}t++}return o?a(t):null}function Qt(e){let n=[],t="",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,t+="//",o+=2;continue}if(!s&&a==="/"&&c==="*"){i=!0,t+="/*",o+=2;continue}if(s&&a===`
53
- `){s=!1,t+=a,o++;continue}if(i&&a==="*"&&c==="/"){i=!1,t+="*/",o+=2;continue}if(s||i){t+=a,o++;continue}a==="("||a==="{"||a==="["?(r++,t+=a):a===")"||a==="}"||a==="]"?(r--,t+=a):a===","&&r===0?(n.push(t),t=""):t+=a,o++}return t.trim()&&n.push(t),n}function nr(e,n,t){let r=Xt(e,{originalSource:e,requiredParams:n.requiredParams,unsafeFunctions:n.unsafeFunctions,safeFunctions:n.safeFunctions}).source,s=Qt(r),i=!1,o=new Set,a=l=>{if(t&&/^\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(t&&u.startsWith("{")&&u.endsWith("}")){let m=u.slice(1,-1);return`{ ${Us(m,n)} }`}if(t&&u.startsWith("[")&&u.endsWith("]")){let m=u.slice(1,-1);return`[ ${Us(m,n)} ]`}if(u.startsWith("...")){let m=qs(u);return m!==-1?u.slice(0,m).trim():l}let f=u.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(f){let[,m,d]=f;return a(m),i=!0,`${m} = ${d}`}if(!Jo(u)){let m=u.match(/^(\w+)\s*=/);return m&&a(m[1]),i=!0,l}let p=qs(u);if(p!==-1){let m=u.slice(0,p).trim(),d=u.slice(p+1).trim();return a(m),i&&t&&/^\w+$/.test(m),t&&/^\w+$/.test(m)&&n.requiredParams.add(m),`${m} = ${d}`}return l}).join(",")}function Us(e,n){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;n.requiredParams.add(l);let f=Yt(u);return`${l} = ${f}`}let a=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(a){let[,l,u]=a;n.requiredParams.add(l);let f=Kt(u);return`${l} = ${f}`}let c=i.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(c){let[,l,u]=c;return n.requiredParams.add(l),`${l} = ${u}`}return s}).join(", ")}function Yt(e){let n=e.slice(1,-1).trim();return`{ ${Qt(n).map(s=>{let i=s.trim();if(!i)return s;let o=i.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(o){let[,f,p]=o;return`${f}: ${Yt(p)}`}let a=i.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(a){let[,f,p]=a;return`${f}: ${Yt(p)}`}let c=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(c){let[,f,p]=c;return`${f}: ${Kt(p)}`}let l=i.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,f,p]=l;return`${f}: ${Kt(p)}`}let u=i.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(u){let[,f,p]=u;return`${f}: ${p}`}return s}).join(", ")} }`}function Kt(e){let n=e.slice(1,-1).trim();return`[ ${Qt(n).map(s=>{let i=s.trim();return i?i.startsWith("{")&&i.endsWith("}")?Yt(i):i.startsWith("[")&&i.endsWith("]")?Kt(i):s:s}).join(", ")} ]`}function Jo(e){let n=0,t=!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==="["?n++:a===")"||a==="}"||a==="]"?n--:n===0&&(a===":"&&(t=!0),a==="="&&e[o+1]!==">"&&(r=!0))}return t&&!r}function qs(e){let n=0,t=!1,r="";for(let s=0;s<e.length;s++){let i=e[s];if(!t&&(i==="'"||i==='"'||i==="`")){t=!0,r=i;continue}if(t){i===r&&e[s-1]!=="\\"&&(t=!1);continue}if(i==="("||i==="{"||i==="[")n++;else if(i===")"||i==="}"||i==="]")n--;else if(n===0&&i===":")return s}return-1}function rr(e){let n="",t=0;for(;t<e.length;){let r=e[t];if(r==="'"||r==='"'||r==="`"){let s=r;for(n+=r,t++;t<e.length&&e[t]!==s;)e[t]==="\\"&&(n+=e[t++]),t<e.length&&(n+=e[t++]);t<e.length&&(n+=e[t++]);continue}if(r==="/"&&e[t+1]==="*"){let s=e.indexOf("*/",t+2),i=s===-1?e.slice(t):e.slice(t,s+2);n+=i,t+=i.length;continue}if(r==="/"&&e[t+1]==="/"){let s=e.indexOf(`
54
- `,t),i=s===-1?e.length:s;n+=" ".repeat(i-t),t=i;continue}n+=r,t++}return n}function en(e,n={}){let t=e,r,s=new Set,i=new Set,o=new Set,a=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e),c=n.dialect==="js"?!0:n.dialect==="tjs"?!1:a||n.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 f=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsCompat|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsNoVar|TjsStandard|TjsSafeEval|TjsSafeAssign)\b/,p;for(;p=e.match(f);){let C=p[2];C==="TjsStrict"?(l.tjsEquals=!0,l.tjsClass=!0,l.tjsDate=!0,l.tjsNoeval=!0,l.tjsNoVar=!0,l.tjsStandard=!0,l.tjsSafeAssign=!0):C==="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):C==="TjsEquals"?l.tjsEquals=!0:C==="TjsClass"?l.tjsClass=!0:C==="TjsDate"?l.tjsDate=!0:C==="TjsNoeval"?l.tjsNoeval=!0:C==="TjsNoVar"?l.tjsNoVar=!0:C==="TjsStandard"?l.tjsStandard=!0:C==="TjsSafeEval"?l.tjsSafeEval=!0:C==="TjsSafeAssign"&&(l.tjsSafeAssign=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${C}\\s*`),"$1")}e=rr(e),l.tjsStandard&&(e=Ss(e)),e=Ds(e),e=Bs(e);let m=Ls(e);e=m.source;let d=m.annotations,h=xs(e);e=h.source,e=gt(e),l.tjsEquals&&!n.vmTarget&&(e=yt(e));let x=[];e=_s(e,x),e=Es(e,x),e=Ts(e),e=$s(e),e=ks(e),l.tjsSafeAssign&&(e=As(e));let E=ws(e,{loader:n.moduleLoader,importerPath:n.filename});e=E.source;let{source:$,returnType:b,returnSafety:w}=Xt(e,{originalSource:t,requiredParams:s,unsafeFunctions:i,safeFunctions:o});e=$;let _=js(e);e=_.source,e=hs(e);let S=Ms(e,s);e=S.source;let T=bs(e);e=T.source;let k=[...h.blocks,...E.blocks,...T.blocks],M=Cs(e,n.dangerouslySkipTests);e=M.source;let R=Rs(e,s);e=R.source;for(let C of R.polyCtorClasses)i.add(`${C}$dispatch`);return l.tjsClass&&(e=Ps(e,R.polyCtorClasses)),l.tjsDate&&(e=Ns(e)),l.tjsNoeval&&(e=Os(e)),l.tjsNoVar&&(e=Is(e)),e=ht(e,_.extensions),{source:e,returnType:b,returnSafety:w,moduleSafety:r,tjsModes:l,originalSource:t,requiredParams:s,unsafeFunctions:i,safeFunctions:o,wasmBlocks:k,tests:M.tests,testErrors:M.errors,polymorphicNames:S.polymorphicNames,extensions:_.extensions,letAnnotations:d,predicates:x}}function he(e,n={}){let{filename:t="<source>",colonShorthand:r=!0,vmTarget:s=!1,dialect:i}=n,{source:o,returnType:a,returnSafety:c,moduleSafety:l,originalSource:u,requiredParams:f,unsafeFunctions:p,safeFunctions:m,wasmBlocks:d,tests:h,testErrors:x,letAnnotations:E,tjsModes:$}=r?en(e,{vmTarget:s,dialect:i,moduleLoader:n.moduleLoader,filename:n.filename}):{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:Ws.parse(o,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:a,returnSafety:c,moduleSafety:l,originalSource:u,requiredParams:f,unsafeFunctions:p,safeFunctions:m,wasmBlocks:d,tests:h,testErrors:x,letAnnotations:E,tjsModes:$}}catch(b){let w=b.loc||{line:1,column:0};throw new z(b.message.replace(/\s*\(\d+:\d+\)$/,""),w,u,t)}}function Vo(e,n){for(let r of e.body){if(r.type==="ImportDeclaration")throw new z("Imports are not supported. All atoms must be registered with the VM.",r.loc?.start||{line:1,column:0},void 0,n);if(r.type==="ExportNamedDeclaration"||r.type==="ExportDefaultDeclaration")throw new z("Exports are not supported. The function is automatically exported.",r.loc?.start||{line:1,column:0},void 0,n);if(r.type==="ClassDeclaration")throw new z("Classes are not supported. Agent99 uses functional composition.",r.loc?.start||{line:1,column:0},void 0,n)}let t=e.body.filter(r=>r.type==="FunctionDeclaration");if(t.length===0)throw new z("Source must contain a function declaration",{line:1,column:0},void 0,n);if(t.length>1){let r=t[1];throw new z("Only a single function per agent is allowed",r.loc?.start||{line:1,column:0},void 0,n)}return t[0]}function xt(e,n){for(let i of e.body){if(i.type==="ImportDeclaration")throw new z("Imports are not supported. All atoms must be registered with the VM.",i.loc?.start||{line:1,column:0},void 0,n);if(i.type==="ExportNamedDeclaration"||i.type==="ExportDefaultDeclaration")throw new z("Exports are not supported. The function is automatically exported.",i.loc?.start||{line:1,column:0},void 0,n);if(i.type==="ClassDeclaration")throw new z("Classes are not supported. Agent99 uses functional composition.",i.loc?.start||{line:1,column:0},void 0,n)}let t=e.body.filter(i=>i.type==="FunctionDeclaration");if(t.length===0)throw new z("Source must contain a function declaration",{line:1,column:0},void 0,n);let r=t[t.length-1],s=new Map;for(let i=0;i<t.length-1;i++){let o=t[i],a=o.id?.name;if(!a)throw new z("Helper function must have a name",o.loc?.start||{line:1,column:0},void 0,n);if(s.has(a))throw new z(`Duplicate helper function name: ${a}`,o.loc?.start||{line:1,column:0},void 0,n);if(a===r.id?.name)throw new z(`Helper function cannot share a name with the entry function: ${a}`,o.loc?.start||{line:1,column:0},void 0,n);s.set(a,o)}return{entry:r,helpers:s}}function wt(e,n){let t={params:{}};if(!n.loc)return t;let r=e.substring(0,n.start),s=[...r.matchAll(/(?<=^[ \t]*)\/\*#([\s\S]*?)\*\//gm)];if(s.length>0){let u=s[s.length-1],f=r.substring(u.index+u[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(f)){let p=u[1],m=p.split(`
55
- `),d=m.filter(h=>h.trim().length>0).reduce((h,x)=>{let E=x.match(/^(\s*)/)?.[1].length||0;return Math.min(h,E)},1/0);return d>0&&d<1/0&&(p=m.map(h=>h.slice(d)).join(`
56
- `)),t.description=p.trim(),t}}let i=r.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!i)return t;let o=i[0],a=o.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);a&&(t.description=a[1].trim());let c=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,l;for(;(l=c.exec(o))!==null;)t.params[l[1]]=l[2].trim();return t}import{parseExpressionAt as zo}from"acorn";function se(e){switch(e.type){case"Literal":{let n=e.value;if(n===null)return{kind:"null"};if(typeof n=="string")return{kind:"string"};if(typeof n=="number"){let t=e.raw;return t&&t.includes(".")?{kind:"number"}:{kind:"integer"}}return typeof n=="boolean"?{kind:"boolean"}:{kind:"any"}}case"ArrayExpression":{let n=e.elements;if(n.length===0)return{kind:"array",items:{kind:"any"}};let t=n.filter(o=>o!=null).map(o=>se(o));if(t.length===0)return{kind:"array",items:{kind:"any"}};let r=new Map;for(let o of t){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 n=e.properties,t={};for(let r of n)if(r.type==="Property"&&r.key.type==="Identifier"){let s=r.key.name;t[s]=se(r.value)}return{kind:"object",shape:t}}case"LogicalExpression":{let{operator:n,left:t,right:r}=e;return n==="||"?se(t):n==="&&"||n==="??"?se(r):{kind:"any"}}case"BinaryExpression":{let{operator:n,left:t,right:r}=e;if(n==="|"){let s=se(t),i=se(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 n=e,t=n.params.map(s=>Go(s)),r={kind:"any"};return n.type==="ArrowFunctionExpression"&&n.body&&n.body.type!=="BlockStatement"&&(r=se(n.body)),{kind:"function",params:t,returns:r}}case"UnaryExpression":{let n=e.operator,t=e.argument;if(n==="+"&&t.type==="Literal"&&typeof t.value=="number")return{kind:"non-negative-integer"};if(n==="-"&&t.type==="Literal"&&typeof t.value=="number"){let s=t.raw;return s&&s.includes(".")?{kind:"number"}:{kind:"integer"}}return{kind:"any"}}default:return{kind:"any"}}}function Go(e){return e.type==="Identifier"?{name:e.name,type:{kind:"any"}}:e.type==="AssignmentPattern"&&e.left?.type==="Identifier"?{name:e.left.name,type:se(e.right)}:e.type==="RestElement"&&e.argument?.type==="Identifier"?{name:`...${e.argument.name}`,type:{kind:"array",items:{kind:"any"}}}:{name:"?",type:{kind:"any"}}}function Ae(e,n){if(e.type==="Identifier")return{name:e.name,type:{kind:"any"},required:!0};if(e.type==="AssignmentPattern"){let{left:t,right:r}=e;if(t.type!=="Identifier")throw new W("Only simple parameter names are supported",G(e));let s=t.name,i=n?.has(s)??!1,o=se(r),a=we(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 t=e.properties,r={},s={};for(let i of t)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=Ae(i.value,n),c=n?.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 W(`Unsupported parameter pattern: ${e.type}`,G(e))}function we(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(n=>n?we(n):null);case"ObjectExpression":{let n={};for(let t of e.properties)t.type==="Property"&&t.key.type==="Identifier"&&(n[t.key.name]=we(t.value));return n}case"UnaryExpression":if(e.operator==="-"){let n=we(e.argument);return typeof n=="number"?-n:void 0}if(e.operator==="+"){let n=we(e.argument);return typeof n=="number"?+n:void 0}return;case"BinaryExpression":{let{operator:n,left:t}=e;return n==="|"?we(t):void 0}case"LogicalExpression":{let{operator:n,left:t,right:r}=e;return n==="&&"&&t.type==="Literal"&&t.value===null?null:n==="||"||n==="??"?we(t)??we(r):void 0}default:return}}function Js(e){try{let n=zo(e,0,{ecmaVersion:2022});return se(n)}catch{return{kind:"any"}}}function sr(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 n=e.items?sr(e.items):"any";return e.nullable?`${n}[] | null`:`${n}[]`}case"object":{if(!e.shape||Object.keys(e.shape).length===0)return e.nullable?"object | null":"object";let n=Object.entries(e.shape).map(([t,r])=>`${t}: ${sr(r)}`).join(", ");return e.nullable?`{ ${n} } | null`:`{ ${n} }`}case"union":return e.members?.map(sr).join(" | ")||"any";default:return"any"}}function tn(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?tn(e.items):{}};case"object":if(e.shape){let n={};for(let[t,r]of Object.entries(e.shape))n[t]=tn(r);return{type:"object",properties:n,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(tn)}:{};default:return{}}}function Zo(e){let n={},t=[];for(let[r,s]of Object.entries(e))n[r]=tn(s.type),s.required&&t.push(r);return{type:"object",properties:n,required:t.length>0?t:void 0,additionalProperties:!1}}function Tt(e,n,t,r={},s,i){let o=wt(n,e),a=new Map;for(let $ of e.params){let b=Ae($,s);if(b.name==="__destructured__"&&b.type.kind==="object"&&b.type.destructuredParams)for(let[w,_]of Object.entries(b.type.destructuredParams))a.set(w,{..._,description:o.params[w]});else b.description=o.params[b.name],a.set(b.name,b)}let c;t&&(c=Js(t));let l={depth:0,locals:new Map,parameters:a,atoms:new Set(Object.keys(r.atoms||{})),warnings:[],source:n,filename:r.filename||"<source>",options:r,helpers:i,helperSteps:i?new Map:void 0,helperTransforming:i?new Set:void 0},u=be(e.body,l),f=[],p=[],m=[];for(let[$,b]of a.entries())b.required?p.push($):b.default!==void 0?m.push({name:$,defaultValue:b.default}):p.push($);p.length>0&&f.push({op:"varsImport",keys:p});for(let{name:$,defaultValue:b}of m)f.push({op:"varsImport",keys:[$]}),f.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:$},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:$,value:b}]});f.push(...u);let d=Object.fromEntries(a),h={name:e.id?.name||"anonymous",description:o.description,parameters:d,returns:c},x=Zo(d),E=l.helperSteps&&l.helperSteps.size>0?Object.fromEntries(l.helperSteps):void 0;return{ast:{op:"seq",steps:f,inputSchema:x,...E&&{helpers:E}},signature:h,warnings:l.warnings}}function be(e,n){let t=[];for(let r of e.body){let s=St(r,n);s&&(Array.isArray(s)?t.push(...s):t.push(s))}return t}function St(e,n){switch(e.type){case"VariableDeclaration":return Ho(e,n);case"ExpressionStatement":return Yo(e,n);case"IfStatement":return Xo(e,n);case"WhileStatement":return Qo(e,n);case"ForOfStatement":return ea(e,n);case"TryStatement":return ta(e,n);case"ReturnStatement":return na(e,n);case"ThrowStatement":throw new W("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",G(e),n.source,n.filename);case"BlockStatement":return{op:"scope",steps:be(e,me(n))};case"EmptyStatement":return null;default:throw new W(`Unsupported statement type: ${e.type}`,G(e),n.source,n.filename)}}function Ho(e,n){let t=[],r=e.kind==="const",s=r?"constSet":"varSet";for(let i of e.declarations){if(i.id.type!=="Identifier")throw new W("Only simple variable names are supported",G(i),n.source,n.filename);let o=i.id.name;if(i.init){let{step:a,resultVar:c}=Fe(i.init,n,o,r);a?t.push(a):c!==o&&t.push({op:s,key:o,value:c});let l=se(i.init);n.locals.set(o,l)}else{if(r)throw new W("const declarations must be initialized",G(i),n.source,n.filename);t.push({op:"varSet",key:o,value:null}),n.locals.set(o,{kind:"any",nullable:!0})}}return t}function Yo(e,n){let t=e.expression;if(t.type==="AssignmentExpression")return Ko(t,n);if(t.type==="CallExpression"){let{step:r,resultVar:s}=Fe(t,n);return r||(s?{op:"varSet",key:"_",value:s}:null)}return n.warnings.push({message:"Expression statement has no effect",line:G(e).line,column:G(e).column}),null}function Ko(e,n){if(e.left.type!=="Identifier")throw new W("Only simple variable assignment is supported",G(e),n.source,n.filename);let t=e.left.name,{step:r,resultVar:s}=Fe(e.right,n,t);return r||{op:"varSet",key:t,value:s}}function Xo(e,n){let t=J(e.test,n),r=e.consequent.type==="BlockStatement"?be(e.consequent,me(n)):[St(e.consequent,n)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?be(e.alternate,me(n)):[St(e.alternate,n)].filter(Boolean)),{op:"if",condition:t,then:r,...s&&{else:s}}}function Qo(e,n){let t=J(e.test,n),r=e.body.type==="BlockStatement"?be(e.body,me(n)):[St(e.body,n)].filter(Boolean);return{op:"while",condition:t,body:r}}function ea(e,n){let t;if(e.left.type==="VariableDeclaration"){let o=e.left.declarations[0];if(o.id.type!=="Identifier")throw new W("Only simple variable names are supported in for...of",G(e.left),n.source,n.filename);t=o.id.name}else if(e.left.type==="Identifier")t=e.left.name;else throw new W("Unsupported for...of left-hand side",G(e.left),n.source,n.filename);let r=te(e.right,n),s=me(n);s.locals.set(t,{kind:"any"});let i=e.body.type==="BlockStatement"?be(e.body,s):[St(e.body,s)].filter(Boolean);return{op:"map",items:r,as:t,steps:i}}function ta(e,n){let t=be(e.block,me(n)),r,s;if(e.handler){let i=me(n);e.handler.param?.type==="Identifier"&&(s=e.handler.param.name,i.locals.set(s,{kind:"any"})),r=be(e.handler.body,i)}return{op:"try",try:t,...r&&{catch:r},...s&&{catchParam:s}}}function na(e,n){if(!e.argument)return{op:"return",value:{}};let{step:t,resultVar:r}=Fe(e.argument,n,"__returnVal__");return t?[t,{op:"return",value:r}]:{op:"return",value:te(e.argument,n)}}var zs=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),ra=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),_t=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),sa=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 ia(e){if(e.callee.type==="Identifier"){let n=e.callee.name;return ra.has(n)||_t.has(n)}if(e.callee.type==="MemberExpression"){let n=e.callee;if(n.object.type==="Identifier"){let t=n.object.name;if(zs.has(t)||_t.has(t))return!0}if(n.property.type==="Identifier"){let t=n.property.name;if(sa.has(t))return!0}}return!1}function oa(e){if(e.object.type==="Identifier"){let n=e.object.name;return zs.has(n)||_t.has(n)}return!1}var Vs={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 aa(e){if(e.callee.type==="Identifier"){let n=e.callee.name;if(_t.has(n))return Vs[n]||`${n} is not available in AsyncJS.`}if(e.callee.type==="MemberExpression"){let n=e.callee;if(n.object.type==="Identifier"){let t=n.object.name;if(_t.has(t))return Vs[t]||`${t} is not available in AsyncJS.`}}return null}function Gs(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,n,t,r){let s=r?"constSet":"varSet";if(e.type==="ChainExpression")return Fe(e.expression,n,t,r);if(e.type==="NewExpression"){let o=e,a="constructor";o.callee.type==="Identifier"&&(a=o.callee.name);let c=Gs(a);throw new W(`The 'new' keyword is not supported in AsyncJS.${c}`,G(e),n.source,n.filename)}if(e.type==="CallExpression"){let o=aa(e);if(o)throw new W(o,G(e),n.source,n.filename)}if(e.type==="CallExpression"&&ia(e)){let o=J(e,n);return t?{step:{op:s,key:t,value:o},resultVar:t}:{step:null,resultVar:o}}if(e.type==="MemberExpression"&&oa(e)){let o=J(e,n);return t?{step:{op:s,key:t,value:o},resultVar:t}:{step:null,resultVar:o}}if(e.type==="CallExpression")return ca(e,n,t,r);if(e.type==="TemplateLiteral")return fa(e,n,t,r);if(e.type==="BinaryExpression"||e.type==="LogicalExpression"||e.type==="UnaryExpression"){let o=J(e,n);return t?{step:{op:s,key:t,value:o},resultVar:t}:{step:null,resultVar:o}}return{step:null,resultVar:te(e,n)}}function ca(e,n,t,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=te(c.object,n);else throw new W("Computed method names are not supported",G(e),n.source,n.filename)}else throw new W("Only named function calls are supported",G(e),n.source,n.filename);if(i)return ua(s,o,e.arguments,n,t,r);if(s==="console"&&e.callee.type,n.helpers?.has(s)){let c=la(s,n,e),l=e.arguments.map(u=>te(u,n));if(l.length!==c.length)throw new W(`Helper '${s}' expects ${c.length} argument(s), got ${l.length}`,G(e),n.source,n.filename);return{step:{op:"callLocal",name:s,args:l,...t&&{result:t},...t&&r&&{resultConst:!0}},resultVar:t}}let a=pa(e,n);return{step:{op:s,...a,...t&&{result:t},...t&&r&&{resultConst:!0}},resultVar:t}}function la(e,n,t){let r=n.helpers.get(e),s=[];for(let i of r.params){let o;if(i.type==="Identifier"?o=i:i.type==="AssignmentPattern"&&i.left?.type==="Identifier"&&(o=i.left),!o)throw new W(`Helper '${e}' parameters must be plain identifiers (optionally with an example value); destructuring is not supported`,i.loc?.start??G(t),n.source,n.filename);s.push(o.name)}if(n.helperSteps.has(e)||n.helperTransforming.has(e))return s;n.helperTransforming.add(e);try{let i={depth:0,locals:new Map,parameters:new Map(s.map(a=>[a,{name:a,type:{kind:"any"},required:!0}])),atoms:n.atoms,warnings:n.warnings,source:n.source,filename:n.filename,options:n.options,helpers:n.helpers,helperSteps:n.helperSteps,helperTransforming:n.helperTransforming},o=be(r.body,i);n.helperSteps.set(e,{steps:o,paramNames:s})}finally{n.helperTransforming.delete(e)}return s}function ua(e,n,t,r,s,i){switch(e){case"map":if(t.length>0&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let o=t[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=me(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")u=be(o.body,l);else{let{step:f,resultVar:p}=Fe(o.body,l,"result");u=f?[f]:[{op:"varSet",key:"result",value:p}]}return{step:{op:"map",items:n,as:c,steps:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"filter":if(t.length>0&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let o=t[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=me(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new W("filter callback must be an expression, not a block",G(t[0]),r.source,r.filename);return u=J(o.body,l),{step:{op:"filter",items:n,as:c,condition:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"find":if(t.length>0&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let o=t[0],a=o.params[0],c=a?.type==="Identifier"?a.name:"item",l=me(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new W("find callback must be an expression, not a block",G(t[0]),r.source,r.filename);return u=J(o.body,l),{step:{op:"find",items:n,as:c,condition:u,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"reduce":if(t.length>=2&&(t[0].type==="ArrowFunctionExpression"||t[0].type==="FunctionExpression")){let o=t[0],a=o.params[0],c=o.params[1],l=a?.type==="Identifier"?a.name:"acc",u=c?.type==="Identifier"?c.name:"item",f=me(r);f.locals.set(l,{kind:"any"}),f.locals.set(u,{kind:"any"});let p;if(o.body.type==="BlockStatement")p=be(o.body,f);else{let{step:d,resultVar:h}=Fe(o.body,f,"result");p=d?[d]:[{op:"varSet",key:"result",value:h}]}let m=te(t[1],r);return{step:{op:"reduce",items:n,as:u,accumulator:l,initial:m,steps:p,...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}break;case"slice":break;case"push":return{step:{op:"push",list:n,item:te(t[0],r),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"join":return{step:{op:"join",list:n,sep:t.length>0?te(t[0],r):"",...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s};case"split":return{step:{op:"split",str:n,sep:t.length>0?te(t[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:n,args:t.map(o=>te(o,r)),...s&&{result:s},...s&&i&&{resultConst:!0}},resultVar:s}}function fa(e,n,t,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]=te(a,n),s+=`{{${c}}}`}return{step:{op:"template",tmpl:s,vars:i,...t&&{result:t},...t&&r&&{resultConst:!0}},resultVar:t}}function J(e,n){switch(e.type){case"Literal":return{$expr:"literal",value:e.value};case"Identifier":return{$expr:"ident",name:e.name};case"MemberExpression":{let t=e,r=J(t.object,n),s=t.optional===!0;if(t.computed){let o=t.property;return o.type==="Literal"?{$expr:"member",object:r,property:String(o.value),computed:!0,...s&&{optional:!0}}:{$expr:"member",object:r,property:J(o,n),computed:!0,...s&&{optional:!0}}}let i=t.property.name;return{$expr:"member",object:r,property:i,...s&&{optional:!0}}}case"ChainExpression":return J(e.expression,n);case"BinaryExpression":{let t=e;return{$expr:"binary",op:t.operator,left:J(t.left,n),right:J(t.right,n)}}case"LogicalExpression":{let t=e;return{$expr:"logical",op:t.operator,left:J(t.left,n),right:J(t.right,n)}}case"UnaryExpression":{let t=e;return{$expr:"unary",op:t.operator,argument:J(t.argument,n)}}case"ConditionalExpression":{let t=e;return{$expr:"conditional",test:J(t.test,n),consequent:J(t.consequent,n),alternate:J(t.alternate,n)}}case"ArrayExpression":return{$expr:"array",elements:e.elements.filter(r=>r!==null).map(r=>J(r,n))};case"ObjectExpression":{let t=e,r=[];for(let s of t.properties)if(s.type==="Property"){let i=s.key.type==="Identifier"?s.key.name:String(s.key.value);r.push({key:i,value:J(s.value,n)})}return{$expr:"object",properties:r}}case"CallExpression":{let t=e;if(t.callee.type==="MemberExpression"){let r=t.callee,s=r.property.type==="Identifier"?r.property.name:String(r.property.value),i=r.optional===!0||t.optional===!0;return{$expr:"methodCall",object:J(r.object,n),method:s,arguments:t.arguments.map(o=>J(o,n)),...i&&{optional:!0}}}if(t.callee.type==="Identifier"){let r=t.callee.name;if(n.helpers?.has(r))throw new W(`Helper '${r}' cannot be called inside an expression. Assign its result to a variable first: const result = ${r}(...); then use result.`,G(e),n.source,n.filename);return{$expr:"call",callee:r,arguments:t.arguments.map(s=>J(s,n))}}throw new W("Complex function calls in expressions should be lifted to statements",G(e),n.source,n.filename)}case"NewExpression":{let t=e,r="constructor";t.callee.type==="Identifier"&&(r=t.callee.name);let s=Gs(r);throw new W(`The 'new' keyword is not supported in AsyncJS.${s}`,G(e),n.source,n.filename)}case"TemplateLiteral":throw new W("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",G(e),n.source,n.filename);default:throw new W(`Unsupported expression type in condition: ${e.type}`,G(e),n.source,n.filename)}}function te(e,n){switch(e.type){case"Literal":return e.value;case"Identifier":return e.name;case"MemberExpression":{let t=e;if(t.optional===!0)return J(e,n);let s=te(t.object,n);if(s&&typeof s=="object"&&s.$expr){let o=t.computed?String(t.property.value):t.property.name;return{$expr:"member",object:s,property:o,...t.computed&&{computed:!0}}}if(t.computed)return J(e,n);let i=t.property.name;return typeof s=="string"?`${s}.${i}`:s&&s.$kind==="arg"?{$kind:"arg",path:`${s.path}.${i}`}:`${s}.${i}`}case"ChainExpression":return te(e.expression,n);case"ArrayExpression":return e.elements.map(t=>t?te(t,n):null);case"ObjectExpression":{let t={};for(let r of e.properties)if(r.type==="Property"){let s=r.key.type==="Identifier"?r.key.name:String(r.key.value);t[s]=te(r.value,n)}return t}case"TemplateLiteral":return J(e,n);case"CallExpression":return J(e,n);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return J(e,n);default:return null}}function pa(e,n){if(e.arguments.length===1&&e.arguments[0].type==="ObjectExpression"){let t=e.arguments[0],r={};for(let s of t.properties)if(s.type==="Property"){let i=s.key.type==="Identifier"?s.key.name:String(s.key.value);r[i]=te(s.value,n)}return r}return{args:e.arguments.map(t=>te(t,n))}}var ma=/\.[mc]?js$/i,da=/\.[mc]?ts$/i,ga=/\.tjs$/i;function Zs(e){return ga.test(e)?"tjs":ma.test(e)?"js":da.test(e)?"ts":"tjs"}function ya(e){return Zs(e)==="js"?"js":"tjs"}var Hs=e=>e===null?"null":Array.isArray(e)?"array":typeof e;function ha(e,n){return n==="integer"?typeof e=="number"&&Number.isInteger(e):Hs(e)===n}function Ys(e,n={}){let{ignorePredicates:t,...r}=n,s=new Map,i=a=>{if(a.$predicate&&!t&&!s.has(a.$predicate)){let c=a.$predicate,l=Le(c,r).predicates,u=l[l.length-1];if(!u)throw new Error("$predicate must declare at least one function");let f=mt(c,[u],r);s.set(c,f[u])}if(a.properties)for(let c of Object.values(a.properties))i(c);a.items&&i(a.items)};i(e);let o=(a,c,l,u)=>{if(a.type&&!ha(c,a.type)){u.push({path:l||"/",message:`expected ${a.type}, got ${Hs(c)}`});return}if(a.type==="object"&&a.properties&&c&&typeof c=="object"){let f=c;for(let p of a.required??[])p in f||u.push({path:`${l}/${p}`,message:`missing required '${p}'`});for(let[p,m]of Object.entries(a.properties))p in f&&o(m,f[p],`${l}/${p}`,u)}a.type==="array"&&a.items&&Array.isArray(c)&&c.forEach((f,p)=>o(a.items,f,`${l}/${p}`,u)),a.$predicate&&!t&&(s.get(a.$predicate)(c)||u.push({path:l||"/",message:`failed predicate at ${l||"/"}`}))};return a=>{let c=[];return o(e,a,"",c),{valid:c.length===0,errors:c}}}function ba(e,n,t){return Ys(e,t)(n)}import{parseExpressionAt as Ai}from"acorn";function xa(e,n){let t=n;for(;t>0&&e[t-1]!==`
57
- `;)t--;if(e.slice(t,n).includes("//"))return!0;let s=0,i=!1;for(;s<n;)!i&&e.slice(s,s+2)==="/*"?(i=!0,s+=2):i&&e.slice(s,s+2)==="*/"?(i=!1,s+=2):s++;return i}function wa(e){let n=[],t=/\/\*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=t.exec(e))!==null;){let s=r[1]||r[3]||r[5]||`embedded test ${n.length+1}`,i=(r[2]||r[4]||r[6]||r[7]||"").trim();n.push({description:s,body:i,line:ir(e,r.index)})}return n}function Et(e){let n=[],t=[],r=wa(e);n.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 p=a.index;if(xa(e,p))continue;let m=a[1]||a[2]||a[3]||a[4]||a[5]||a[6]||`test ${n.length+1}`,d=a.index+a[0].length,h=Ks(e,d-1);if(h===-1)continue;let x=e.slice(d,h).trim();n.push({description:m,body:x,line:ir(e,p)}),c.push({start:p,end:h+1,desc:m})}let l=[];for(;(a=i.exec(e))!==null;){let p=a.index,m=a.index+a[0].length,d=Ks(e,m-1);if(d===-1)continue;let h=e.slice(m,d).trim();t.push({body:h,line:ir(e,p)}),l.push({start:p,end:d+1})}let u=[...c,...l].sort((p,m)=>m.start-p.start);for(let p of u)o=o.slice(0,p.start)+o.slice(p.end);o=o.replace(/\n\s*\n\s*\n/g,`
45
+ `,E+=` return __tjs.typeError('${c}', 'no matching constructor', a)
46
+ `,E+=`}
47
+ `,o=o.slice(0,u)+_+o.slice(f);let w=u+_.length;o=o.slice(0,w)+E+o.slice(w)}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,f=l+1;for(;f<e.length&&u>0;){let p=e[f];p==="{"?u++:p==="}"&&u--,f++}if(u===0){let p=f,m=e.slice(l,p);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=p}}return r+=e.slice(s),r}function Is(e){let t=[{pattern:/\bnew\s+Date\b/,message:"new Date() is not allowed in TjsDate mode. Use Timestamp.now()/Timestamp.from() for wall-clock dates, or performance.now() for a monotonic counter (timing, id generation)"},{pattern:/\bDate\.now\b/,message:"Date.now() is not allowed in TjsDate mode. Use Timestamp.now() for a wall-clock date, or performance.now() for a monotonic counter (timing, id generation)"},{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 Os(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 Bs(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 Ls(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 Fs(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=Jo(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 f=e.slice(n+2,u);t+=`__tjs.bang(${l},'${f}')`,n=u;continue}}t+=i,n++}else r==="line-comment"?(t+=i,i===`
48
+ `&&(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 Jo(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=bs(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=bs(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 bs(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 Us(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===`
49
+ `&&(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 f=l,p=e.slice(u,f),m=l;for(;m<e.length&&/\s/.test(e[m]);)m++;if(m<e.length&&e[m]===":"&&e[m+1]!==":"){let h=m+1;for(;h<e.length&&/[ \t]/.test(e[h]);)h++;let x=Vo(e,h);if(x>h){let _=e.slice(h,x).trim();t.set(p,_),n.push({start:f,end:x,replacement:""}),r=x;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 Vo(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===`
50
+ `))return n;n++}return n}function Xt(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",f=()=>{let p=c[c.length-1];return p?.type==="class-body"&&l===p.braceDepth+1};for(;r<e.length;){let p=e[r],m=e[r+1];switch(o){case"single-string":if(n+=p,p==="\\"&&r+1<e.length){n+=m,r+=2;continue}p==="'"&&(o="normal"),r++;continue;case"double-string":if(n+=p,p==="\\"&&r+1<e.length){n+=m,r+=2;continue}p==='"'&&(o="normal"),r++;continue;case"template-string":if(n+=p,p==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(p==="$"&&m==="{"){n+=m,r+=2,a.push(1),o="normal";continue}p==="`"&&(o="normal"),r++;continue;case"line-comment":n+=p,p===`
51
+ `&&(o="normal"),r++;continue;case"block-comment":if(n+=p,p==="*"&&m==="/"){n+=m,r+=2,o="normal";continue}r++;continue;case"regex":if(n+=p,p==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(p==="["){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(p==="/"){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(p==="{")a[a.length-1]++;else if(p==="}"&&(a[a.length-1]--,a[a.length-1]===0)){a.pop(),n+=p,r++,o="template-string";continue}}if(p==="'"){n+=p,r++,o="single-string";continue}if(p==='"'){n+=p,r++,o="double-string";continue}if(p==="`"){n+=p,r++,o="template-string";continue}if(p==="/"&&m==="/"){n+=p+m,r+=2,o="line-comment";continue}if(p==="/"&&m==="*"){n+=p+m,r+=2,o="block-comment";continue}if(p==="/"){let b=n.trimEnd();if(!b[b.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(b)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(b)){n+=p,r++,o="regex";continue}}break}if(p==="{"){l++,n+=p,r++;continue}if(p==="}"){l--;let b=c[c.length-1];b&&l===b.braceDepth&&c.pop(),n+=p,r++;continue}let d=e.slice(r).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(d){let b=d[0].slice(0,-1);n+=b,r+=b.length,c.push({type:"class-body",braceDepth:l});continue}let h=e.slice(r).match(/^function\s+(\w+)\s*\(/);if(h){let b=h[1],w=h[0].length,T=e[r+w],S,$=r+w;(T==="?"||T==="!")&&(S=T,$++,S==="!"?t.unsafeFunctions.add(b):t.safeFunctions.add(b)),n+=`function ${b}(`,r=$;let j=Ht(e,r,"(",")");if(!j){n+=e[r],r++;continue}let{content:k,endPos:R}=j;r=R;let C=or(k,t,!0);n+=C+")";let I=r;for(;I<e.length&&/\s/.test(e[I]);)I++;if(e[I]===":"){let U=e.slice(I,I+2),q;for(U===":?"||U===":!"?(I+=2,q=U===":?"?"safe":"unsafe"):I+=1;I<e.length&&/\s/.test(e[I]);)I++;let Y=ir(e,I);Y&&(s===void 0&&(s=Y.type,q&&(i=q)),r=Y.endPos)}let N=r;for(;N<e.length&&/\s/.test(e[N]);)N++;if(e[N]==="="&&e[N+1]===">")throw new z("Unexpected '=>' after function declaration. Function declarations use `function name(params) { body }`, not arrow syntax. Remove the `=>`.",$e(t.originalSource,N),t.originalSource);continue}let x=e.slice(r).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/),_=(()=>{for(let b=n.length-1;b>=0;b--)if(!/\s/.test(n[b]))return n[b];return`
52
+ `})(),E=_!=="="&&_!==","&&_!=="("&&_!=="["&&_!==">";if(x&&f()&&!E){let b=x[1].length;n+=e.slice(r,r+b),r+=b;continue}if(x&&f()&&E){let b=x[1],w=x[0].length,T=r+w;n+=b+"(",r=T;let S=Ht(e,r,"(",")");if(!S){n+=e[r],r++;continue}let{content:$,endPos:j}=S;r=j;let k=or($,t,!0);n+=k+")";let R=r;for(;R<e.length&&/\s/.test(e[R]);)R++;if(e[R]===":"){let I=e.slice(R,R+2);for(I===":?"||I===":!"?R+=2:R++;R<e.length&&/\s/.test(e[R]);)R++;let N=ir(e,R);N&&(r=N.endPos)}let C=r;for(;C<e.length&&/\s/.test(e[C]);)C++;if(e[C]==="="&&e[C+1]===">")throw new z("Unexpected '=>' after method declaration. Methods use `name(params) { body }`, not arrow syntax. Remove the `=>`.",$e(t.originalSource,C),t.originalSource);continue}if(e[r]==="("){let b=Ht(e,r+1,"(",")");if(!b){n+=e[r],r++;continue}let w=b.content,T=b.endPos,S=T;for(;S<e.length&&/\s/.test(e[S]);)S++;let $;if(e[S]===":"){let j=e.slice(S,S+2);for(j===":?"||j===":!"?S+=2:S++;S<e.length&&/\s/.test(e[S]);)S++;let k=ir(e,S);if(k)for($=k.type,S=k.endPos;S<e.length&&/\s/.test(e[S]);)S++}if(e.slice(S,S+2)==="=>"){let j=null,k=w,R=w.trimStart();R.startsWith("?")&&(R.length===1||/\s/.test(R[1]))?(j="?",k=R.slice(1)):R.startsWith("!")&&(R.length===1||/\s/.test(R[1]))&&(j="!",k=R.slice(1));let C=or(k,t,!1);for(n+=`(${j==="?"?"/* safe */ ":j==="!"?"/* unsafe */ ":""}${C})`,r=T;r<S&&/\s/.test(e[r]);)n+=e[r],r++;$&&(r=S)}else{let j=Xt(w,t);n+=`(${j.source})`,r=T}continue}n+=e[r],r++}return{source:n,returnType:s,returnSafety:i}}function Ht(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 qs(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=Ht(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 bt(e){return e.replace(/(?<!\|)\|(?!\|)/g," || ")}function ir(e,t){let n=t,r=0,s=!1,i="",o=!1,a=c=>({type:bt(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:bt(e.slice(t,l).trim()),endPos:l};if(e[n]!=="|"&&e[n]!=="&")return{type:bt(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 f=l;for(;f>t&&/\s/.test(e[f-1]);)f--;return{type:bt(e.slice(t,f).trim()),endPos:l}}if(e[n]!=="|"&&e[n]!=="&")return{type:bt(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===`
53
+ `){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 or(e,t,n){let r=Xt(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`{ ${Ws(m,t)} }`}if(n&&u.startsWith("[")&&u.endsWith("]")){let m=u.slice(1,-1);return`[ ${Ws(m,t)} ]`}if(u.startsWith("...")){let m=Js(u);return m!==-1?u.slice(0,m).trim():l}let f=u.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(f){let[,m,d]=f;return a(m),i=!0,`${m} = ${d}`}if(!zo(u)){let m=u.match(/^(\w+)\s*=/);return m&&a(m[1]),i=!0,l}let p=Js(u);if(p!==-1){let m=u.slice(0,p).trim(),d=u.slice(p+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 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 f=Yt(u);return`${l} = ${f}`}let a=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(a){let[,l,u]=a;t.requiredParams.add(l);let f=Kt(u);return`${l} = ${f}`}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 Yt(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[,f,p]=o;return`${f}: ${Yt(p)}`}let a=i.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(a){let[,f,p]=a;return`${f}: ${Yt(p)}`}let c=i.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(c){let[,f,p]=c;return`${f}: ${Kt(p)}`}let l=i.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(l){let[,f,p]=l;return`${f}: ${Kt(p)}`}let u=i.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(u){let[,f,p]=u;return`${f}: ${p}`}return s}).join(", ")} }`}function Kt(e){let t=e.slice(1,-1).trim();return`[ ${Qt(t).map(s=>{let i=s.trim();return i?i.startsWith("{")&&i.endsWith("}")?Yt(i):i.startsWith("[")&&i.endsWith("]")?Kt(i):s:s}).join(", ")} ]`}function zo(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 Js(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 ar(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(`
54
+ `,n),i=s===-1?e.length:s;t+=" ".repeat(i-n),n=i;continue}t+=r,n++}return t}function en(e,t={}){let n=e,r,s=new Set,i=new Set,o=new Set,a=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e),c=t.dialect==="js"?!0:t.dialect==="tjs"?!1:a||t.vmTarget,l=c?{tjsEquals:!1,tjsClass:!1,tjsDate:!1,tjsNoeval:!1,tjsStandard:!1,tjsSafeEval:!1,tjsNoVar:!1,tjsSafeAssign:!1,tjsStrict:!1}:{tjsEquals:!0,tjsClass:!0,tjsDate:!0,tjsNoeval:!0,tjsStandard:!0,tjsSafeEval:!1,tjsNoVar:!0,tjsSafeAssign:!0,tjsStrict:!1};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 f=/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*(TjsStrict|TjsCompat|TjsEquals|TjsClass|TjsDate|TjsNoeval|TjsNoVar|TjsStandard|TjsSafeEval|TjsSafeAssign)\b/,p;for(;p=e.match(f);){let C=p[2];C==="TjsStrict"?(l.tjsEquals=!0,l.tjsClass=!0,l.tjsDate=!0,l.tjsNoeval=!0,l.tjsNoVar=!0,l.tjsStandard=!0,l.tjsSafeAssign=!0,l.tjsStrict=!0):C==="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):C==="TjsEquals"?l.tjsEquals=!0:C==="TjsClass"?l.tjsClass=!0:C==="TjsDate"?l.tjsDate=!0:C==="TjsNoeval"?l.tjsNoeval=!0:C==="TjsNoVar"?l.tjsNoVar=!0:C==="TjsStandard"?l.tjsStandard=!0:C==="TjsSafeEval"?l.tjsSafeEval=!0:C==="TjsSafeAssign"&&(l.tjsSafeAssign=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${C}\\s*`),"$1")}e=ar(e),l.tjsStandard&&(e=Ts(e)),e=Os(e),e=Fs(e);let m=Us(e);e=m.source;let d=m.annotations,h=Ss(e);e=h.source,e=gt(e),l.tjsEquals&&!t.vmTarget&&(e=yt(e));let x=[];e=Es(e,x),e=ks(e,x),e=$s(e),e=js(e),e=vs(e),l.tjsSafeAssign&&(e=Rs(e));let _=_s(e,{loader:t.moduleLoader,importerPath:t.filename});e=_.source;let{source:E,returnType:b,returnSafety:w}=Xt(e,{originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o});e=E;let T=Ms(e);e=T.source,e=xs(e);let S=Cs(e,s);e=S.source;let $=ws(e);e=$.source;let j=[...h.blocks,..._.blocks,...$.blocks],k=Ps(e,t.dangerouslySkipTests);e=k.source;let R=Ns(e,s);e=R.source;for(let C of R.polyCtorClasses)i.add(`${C}$dispatch`);return l.tjsClass&&(e=Ds(e,R.polyCtorClasses)),l.tjsDate&&(e=Is(e)),l.tjsNoeval&&(e=Ls(e)),l.tjsNoVar&&(e=Bs(e)),e=ht(e,T.extensions),{source:e,returnType:b,returnSafety:w,moduleSafety:r,tjsModes:l,originalSource:n,requiredParams:s,unsafeFunctions:i,safeFunctions:o,wasmBlocks:j,tests:k.tests,testErrors:k.errors,polymorphicNames:S.polymorphicNames,extensions:T.extensions,letAnnotations:d,predicates:x}}function he(e,t={}){let{filename:n="<source>",colonShorthand:r=!0,vmTarget:s=!1,dialect:i}=t,{source:o,returnType:a,returnSafety:c,moduleSafety:l,originalSource:u,requiredParams:f,unsafeFunctions:p,safeFunctions:m,wasmBlocks:d,tests:h,testErrors:x,letAnnotations:_,tjsModes:E}=r?en(e,{vmTarget:s,dialect:i,moduleLoader:t.moduleLoader,filename:t.filename}):{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,tjsStrict:!1}};try{return{ast:Vs.parse(o,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:a,returnSafety:c,moduleSafety:l,originalSource:u,requiredParams:f,unsafeFunctions:p,safeFunctions:m,wasmBlocks:d,tests:h,testErrors:x,letAnnotations:_,tjsModes:E}}catch(b){let w=b.loc||{line:1,column:0};throw new z(b.message.replace(/\s*\(\d+:\d+\)$/,""),w,u,n)}}function Go(e,t){for(let r of e.body){if(r.type==="ImportDeclaration")throw new z("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 z("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 z("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 z("Source must contain a function declaration",{line:1,column:0},void 0,t);if(n.length>1){let r=n[1];throw new z("Only a single function per agent is allowed",r.loc?.start||{line:1,column:0},void 0,t)}return n[0]}function xt(e,t){for(let i of e.body){if(i.type==="ImportDeclaration")throw new z("Imports are not supported. All atoms must be registered with the VM.",i.loc?.start||{line:1,column:0},void 0,t);if(i.type==="ExportNamedDeclaration"||i.type==="ExportDefaultDeclaration")throw new z("Exports are not supported. The function is automatically exported.",i.loc?.start||{line:1,column:0},void 0,t);if(i.type==="ClassDeclaration")throw new z("Classes are not supported. Agent99 uses functional composition.",i.loc?.start||{line:1,column:0},void 0,t)}let n=e.body.filter(i=>i.type==="FunctionDeclaration");if(n.length===0)throw new z("Source must contain a function declaration",{line:1,column:0},void 0,t);let r=n[n.length-1],s=new Map;for(let i=0;i<n.length-1;i++){let o=n[i],a=o.id?.name;if(!a)throw new z("Helper function must have a name",o.loc?.start||{line:1,column:0},void 0,t);if(s.has(a))throw new z(`Duplicate helper function name: ${a}`,o.loc?.start||{line:1,column:0},void 0,t);if(a===r.id?.name)throw new z(`Helper function cannot share a name with the entry function: ${a}`,o.loc?.start||{line:1,column:0},void 0,t);s.set(a,o)}return{entry:r,helpers:s}}function wt(e,t){let n={params:{}};if(!t.loc)return n;let r=e.substring(0,t.start),s=[...r.matchAll(/(?<=^[ \t]*)\/\*#([\s\S]*?)\*\//gm)];if(s.length>0){let u=s[s.length-1],f=r.substring(u.index+u[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(f)){let p=u[1],m=p.split(`
55
+ `),d=m.filter(h=>h.trim().length>0).reduce((h,x)=>{let _=x.match(/^(\s*)/)?.[1].length||0;return Math.min(h,_)},1/0);return d>0&&d<1/0&&(p=m.map(h=>h.slice(d)).join(`
56
+ `)),n.description=p.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 Zo}from"acorn";function se(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=>se(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]=se(r.value)}return{kind:"object",shape:n}}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="||"?se(n):t==="&&"||t==="??"?se(r):{kind:"any"}}case"BinaryExpression":{let{operator:t,left:n,right:r}=e;if(t==="|"){let s=se(n),i=se(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=>Ho(s)),r={kind:"any"};return t.type==="ArrowFunctionExpression"&&t.body&&t.body.type!=="BlockStatement"&&(r=se(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 Ho(e){return e.type==="Identifier"?{name:e.name,type:{kind:"any"}}:e.type==="AssignmentPattern"&&e.left?.type==="Identifier"?{name:e.left.name,type:se(e.right)}:e.type==="RestElement"&&e.argument?.type==="Identifier"?{name:`...${e.argument.name}`,type:{kind:"array",items:{kind:"any"}}}:{name:"?",type:{kind:"any"}}}function Ae(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 W("Only simple parameter names are supported",G(e));let s=n.name,i=t?.has(s)??!1,o=se(r),a=we(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=Ae(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 W(`Unsupported parameter pattern: ${e.type}`,G(e))}function we(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(t=>t?we(t):null);case"ObjectExpression":{let t={};for(let n of e.properties)n.type==="Property"&&n.key.type==="Identifier"&&(t[n.key.name]=we(n.value));return t}case"UnaryExpression":if(e.operator==="-"){let t=we(e.argument);return typeof t=="number"?-t:void 0}if(e.operator==="+"){let t=we(e.argument);return typeof t=="number"?+t:void 0}return;case"BinaryExpression":{let{operator:t,left:n}=e;return t==="|"?we(n):void 0}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="&&"&&n.type==="Literal"&&n.value===null?null:t==="||"||t==="??"?we(n)??we(r):void 0}default:return}}function zs(e){try{let t=Zo(e,0,{ecmaVersion:2022});return se(t)}catch{return{kind:"any"}}}function cr(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?cr(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}: ${cr(r)}`).join(", ");return e.nullable?`{ ${t} } | null`:`{ ${t} }`}case"union":return e.members?.map(cr).join(" | ")||"any";default:return"any"}}function tn(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?tn(e.items):{}};case"object":if(e.shape){let t={};for(let[n,r]of Object.entries(e.shape))t[n]=tn(r);return{type:"object",properties:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(tn)}:{};default:return{}}}function Yo(e){let t={},n=[];for(let[r,s]of Object.entries(e))t[r]=tn(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,i){let o=wt(t,e),a=new Map;for(let E of e.params){let b=Ae(E,s);if(b.name==="__destructured__"&&b.type.kind==="object"&&b.type.destructuredParams)for(let[w,T]of Object.entries(b.type.destructuredParams))a.set(w,{...T,description:o.params[w]});else b.description=o.params[b.name],a.set(b.name,b)}let c;n&&(c=zs(n));let l={depth:0,locals:new Map,parameters:a,atoms:new Set(Object.keys(r.atoms||{})),warnings:[],source:t,filename:r.filename||"<source>",options:r,helpers:i,helperSteps:i?new Map:void 0,helperTransforming:i?new Set:void 0},u=be(e.body,l),f=[],p=[],m=[];for(let[E,b]of a.entries())b.required?p.push(E):b.default!==void 0?m.push({name:E,defaultValue:b.default}):p.push(E);p.length>0&&f.push({op:"varsImport",keys:p});for(let{name:E,defaultValue:b}of m)f.push({op:"varsImport",keys:[E]}),f.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:E},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:E,value:b}]});f.push(...u);let d=Object.fromEntries(a),h={name:e.id?.name||"anonymous",description:o.description,parameters:d,returns:c},x=Yo(d),_=l.helperSteps&&l.helperSteps.size>0?Object.fromEntries(l.helperSteps):void 0;return{ast:{op:"seq",steps:f,inputSchema:x,..._&&{helpers:_}},signature:h,warnings:l.warnings}}function be(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 Ko(e,t);case"ExpressionStatement":return Xo(e,t);case"IfStatement":return ea(e,t);case"WhileStatement":return ta(e,t);case"ForOfStatement":return na(e,t);case"TryStatement":return ra(e,t);case"ReturnStatement":return sa(e,t);case"ThrowStatement":throw new W("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",G(e),t.source,t.filename);case"BlockStatement":return{op:"scope",steps:be(e,me(t))};case"EmptyStatement":return null;default:throw new W(`Unsupported statement type: ${e.type}`,G(e),t.source,t.filename)}}function Ko(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 W("Only simple variable names are supported",G(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=se(i.init);t.locals.set(o,l)}else{if(r)throw new W("const declarations must be initialized",G(i),t.source,t.filename);n.push({op:"varSet",key:o,value:null}),t.locals.set(o,{kind:"any",nullable:!0})}}return n}function Xo(e,t){let n=e.expression;if(n.type==="AssignmentExpression")return Qo(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:G(e).line,column:G(e).column}),null}function Qo(e,t){if(e.left.type!=="Identifier")throw new W("Only simple variable assignment is supported",G(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 ea(e,t){let n=J(e.test,t),r=e.consequent.type==="BlockStatement"?be(e.consequent,me(t)):[St(e.consequent,t)].filter(Boolean),s;return e.alternate&&(s=e.alternate.type==="BlockStatement"?be(e.alternate,me(t)):[St(e.alternate,t)].filter(Boolean)),{op:"if",condition:n,then:r,...s&&{else:s}}}function ta(e,t){let n=J(e.test,t),r=e.body.type==="BlockStatement"?be(e.body,me(t)):[St(e.body,t)].filter(Boolean);return{op:"while",condition:n,body:r}}function na(e,t){let n;if(e.left.type==="VariableDeclaration"){let o=e.left.declarations[0];if(o.id.type!=="Identifier")throw new W("Only simple variable names are supported in for...of",G(e.left),t.source,t.filename);n=o.id.name}else if(e.left.type==="Identifier")n=e.left.name;else throw new W("Unsupported for...of left-hand side",G(e.left),t.source,t.filename);let r=ne(e.right,t),s=me(t);s.locals.set(n,{kind:"any"});let i=e.body.type==="BlockStatement"?be(e.body,s):[St(e.body,s)].filter(Boolean);return{op:"map",items:r,as:n,steps:i}}function ra(e,t){let n=be(e.block,me(t)),r,s;if(e.handler){let i=me(t);e.handler.param?.type==="Identifier"&&(s=e.handler.param.name,i.locals.set(s,{kind:"any"})),r=be(e.handler.body,i)}return{op:"try",try:n,...r&&{catch:r},...s&&{catchParam:s}}}function sa(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:ne(e.argument,t)}}var Zs=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),ia=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),_t=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),oa=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 aa(e){if(e.callee.type==="Identifier"){let t=e.callee.name;return ia.has(t)||_t.has(t)}if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"){let n=t.object.name;if(Zs.has(n)||_t.has(n))return!0}if(t.property.type==="Identifier"){let n=t.property.name;if(oa.has(n))return!0}}return!1}function ca(e){if(e.object.type==="Identifier"){let t=e.object.name;return Zs.has(t)||_t.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 la(e){if(e.callee.type==="Identifier"){let t=e.callee.name;if(_t.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(_t.has(n))return Gs[n]||`${n} is not available in AsyncJS.`}}return null}function Hs(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=Hs(a);throw new W(`The 'new' keyword is not supported in AsyncJS.${c}`,G(e),t.source,t.filename)}if(e.type==="CallExpression"){let o=la(e);if(o)throw new W(o,G(e),t.source,t.filename)}if(e.type==="CallExpression"&&aa(e)){let o=J(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="MemberExpression"&&ca(e)){let o=J(e,t);return n?{step:{op:s,key:n,value:o},resultVar:n}:{step:null,resultVar:o}}if(e.type==="CallExpression")return ua(e,t,n,r);if(e.type==="TemplateLiteral")return ma(e,t,n,r);if(e.type==="BinaryExpression"||e.type==="LogicalExpression"||e.type==="UnaryExpression"){let o=J(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 ua(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 W("Computed method names are not supported",G(e),t.source,t.filename)}else throw new W("Only named function calls are supported",G(e),t.source,t.filename);if(i)return pa(s,o,e.arguments,t,n,r);if(s==="console"&&e.callee.type,t.helpers?.has(s)){let c=fa(s,t,e),l=e.arguments.map(u=>ne(u,t));if(l.length!==c.length)throw new W(`Helper '${s}' expects ${c.length} argument(s), got ${l.length}`,G(e),t.source,t.filename);return{step:{op:"callLocal",name:s,args:l,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}let a=da(e,t);return{step:{op:s,...a,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function fa(e,t,n){let r=t.helpers.get(e),s=[];for(let i of r.params){let o;if(i.type==="Identifier"?o=i:i.type==="AssignmentPattern"&&i.left?.type==="Identifier"&&(o=i.left),!o)throw new W(`Helper '${e}' parameters must be plain identifiers (optionally with an example value); destructuring is not supported`,i.loc?.start??G(n),t.source,t.filename);s.push(o.name)}if(t.helperSteps.has(e)||t.helperTransforming.has(e))return s;t.helperTransforming.add(e);try{let i={depth:0,locals:new Map,parameters:new Map(s.map(a=>[a,{name:a,type:{kind:"any"},required:!0}])),atoms:t.atoms,warnings:t.warnings,source:t.source,filename:t.filename,options:t.options,helpers:t.helpers,helperSteps:t.helperSteps,helperTransforming:t.helperTransforming},o=be(r.body,i);t.helperSteps.set(e,{steps:o,paramNames:s})}finally{t.helperTransforming.delete(e)}return s}function pa(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=me(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")u=be(o.body,l);else{let{step:f,resultVar:p}=Fe(o.body,l,"result");u=f?[f]:[{op:"varSet",key:"result",value:p}]}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=me(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new W("filter callback must be an expression, not a block",G(n[0]),r.source,r.filename);return u=J(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=me(r);l.locals.set(c,{kind:"any"});let u;if(o.body.type==="BlockStatement")throw new W("find callback must be an expression, not a block",G(n[0]),r.source,r.filename);return u=J(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",f=me(r);f.locals.set(l,{kind:"any"}),f.locals.set(u,{kind:"any"});let p;if(o.body.type==="BlockStatement")p=be(o.body,f);else{let{step:d,resultVar:h}=Fe(o.body,f,"result");p=d?[d]:[{op:"varSet",key:"result",value:h}]}let m=ne(n[1],r);return{step:{op:"reduce",items:t,as:u,accumulator:l,initial:m,steps:p,...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 ma(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 J(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=J(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:J(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 J(e.expression,t);case"BinaryExpression":{let n=e;return{$expr:"binary",op:n.operator,left:J(n.left,t),right:J(n.right,t)}}case"LogicalExpression":{let n=e;return{$expr:"logical",op:n.operator,left:J(n.left,t),right:J(n.right,t)}}case"UnaryExpression":{let n=e;return{$expr:"unary",op:n.operator,argument:J(n.argument,t)}}case"ConditionalExpression":{let n=e;return{$expr:"conditional",test:J(n.test,t),consequent:J(n.consequent,t),alternate:J(n.alternate,t)}}case"ArrayExpression":return{$expr:"array",elements:e.elements.filter(r=>r!==null).map(r=>J(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:J(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:J(r.object,t),method:s,arguments:n.arguments.map(o=>J(o,t)),...i&&{optional:!0}}}if(n.callee.type==="Identifier"){let r=n.callee.name;if(t.helpers?.has(r))throw new W(`Helper '${r}' cannot be called inside an expression. Assign its result to a variable first: const result = ${r}(...); then use result.`,G(e),t.source,t.filename);return{$expr:"call",callee:r,arguments:n.arguments.map(s=>J(s,t))}}throw new W("Complex function calls in expressions should be lifted to statements",G(e),t.source,t.filename)}case"NewExpression":{let n=e,r="constructor";n.callee.type==="Identifier"&&(r=n.callee.name);let s=Hs(r);throw new W(`The 'new' keyword is not supported in AsyncJS.${s}`,G(e),t.source,t.filename)}case"TemplateLiteral":throw new W("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",G(e),t.source,t.filename);default:throw new W(`Unsupported expression type in condition: ${e.type}`,G(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 J(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 J(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 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 J(e,t);case"CallExpression":return J(e,t);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return J(e,t);default:return null}}function da(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))}}var ga=/\.[mc]?js$/i,ya=/\.[mc]?ts$/i,ha=/\.tjs$/i;function Ys(e){return ha.test(e)?"tjs":ga.test(e)?"js":ya.test(e)?"ts":"tjs"}function ba(e){return Ys(e)==="js"?"js":"tjs"}var Ks=e=>e===null?"null":Array.isArray(e)?"array":typeof e;function xa(e,t){return t==="integer"?typeof e=="number"&&Number.isInteger(e):Ks(e)===t}function Xs(e,t={}){let{ignorePredicates:n,...r}=t,s=new Map,i=a=>{if(a.$predicate&&!n&&!s.has(a.$predicate)){let c=a.$predicate,l=Le(c,r).predicates,u=l[l.length-1];if(!u)throw new Error("$predicate must declare at least one function");let f=mt(c,[u],r);s.set(c,f[u])}if(a.properties)for(let c of Object.values(a.properties))i(c);a.items&&i(a.items)};i(e);let o=(a,c,l,u)=>{if(a.type&&!xa(c,a.type)){u.push({path:l||"/",message:`expected ${a.type}, got ${Ks(c)}`});return}if(a.type==="object"&&a.properties&&c&&typeof c=="object"){let f=c;for(let p of a.required??[])p in f||u.push({path:`${l}/${p}`,message:`missing required '${p}'`});for(let[p,m]of Object.entries(a.properties))p in f&&o(m,f[p],`${l}/${p}`,u)}a.type==="array"&&a.items&&Array.isArray(c)&&c.forEach((f,p)=>o(a.items,f,`${l}/${p}`,u)),a.$predicate&&!n&&(s.get(a.$predicate)(c)||u.push({path:l||"/",message:`failed predicate at ${l||"/"}`}))};return a=>{let c=[];return o(e,a,"",c),{valid:c.length===0,errors:c}}}function wa(e,t,n){return Xs(e,n)(t)}import{parseExpressionAt as Ri}from"acorn";function Sa(e,t){let n=t;for(;n>0&&e[n-1]!==`
57
+ `;)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 _a(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:lr(e,r.index)})}return t}function Et(e){let t=[],n=[],r=_a(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 p=a.index;if(Sa(e,p))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,h=Qs(e,d-1);if(h===-1)continue;let x=e.slice(d,h).trim();t.push({description:m,body:x,line:lr(e,p)}),c.push({start:p,end:h+1,desc:m})}let l=[];for(;(a=i.exec(e))!==null;){let p=a.index,m=a.index+a[0].length,d=Qs(e,m-1);if(d===-1)continue;let h=e.slice(m,d).trim();n.push({body:h,line:lr(e,p)}),l.push({start:p,end:d+1})}let u=[...c,...l].sort((p,m)=>m.start-p.start);for(let p of u)o=o.slice(0,p.start)+o.slice(p.end);o=o.replace(/\n\s*\n\s*\n/g,`
58
58
 
59
- `).trim();let f=Sa(n,t);return{code:o,tests:n,mocks:t,testRunner:f}}function Ks(e,n){let t=0,r=null,s=!1;for(let i=n;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==="{"&&t++,o==="}"&&(t--,t===0)))return i}return-1}function ir(e,n){return e.slice(0,n).split(`
60
- `).length}function Sa(e,n){if(e.length===0)return"// No tests defined";let t=n.map(s=>s.body).join(`
59
+ `).trim();let f=Ta(t,n);return{code:o,tests:t,mocks:n,testRunner:f}}function Qs(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 lr(e,t){return e.slice(0,t).split(`
60
+ `).length}function Ta(e,t){if(e.length===0)return"// No tests defined";let n=t.map(s=>s.body).join(`
61
61
  `);return`(async () => {
62
62
  const __results = []
63
63
 
64
64
  ${e.map((s,i)=>`
65
65
  // Test ${i+1}: ${s.description}
66
66
  try {
67
- ${t}
67
+ ${n}
68
68
  await (async () => {
69
69
  ${s.body}
70
70
  })()
@@ -80,13 +80,13 @@ const __failed = __results.filter(r => !r.passed).length
80
80
 
81
81
  // Return summary
82
82
  return { passed: __passed, failed: __failed, results: __results }
83
- })()`.trim()}var Xs=`
83
+ })()`.trim()}var ei=`
84
84
  function assert(condition, message) {
85
85
  if (!condition) {
86
86
  throw new Error(message || 'Assertion failed')
87
87
  }
88
88
  }
89
- `,Qs=`
89
+ `,ti=`
90
90
  function expect(actual) {
91
91
  const deepEqual = (a, b) => {
92
92
  if (a === b) return true
@@ -177,52 +177,52 @@ function expect(actual) {
177
177
  }
178
178
  }
179
179
  }
180
- `,_a=Xs+`
181
- `+Qs;import{validate as ni,s as _n}from"tosijs-schema";function ke(e){if(e.nullable)return{anyOf:[ke({...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:ke(e.items)}:{type:"array"};case"object":if(e.shape){let n={},t=[];for(let[r,s]of Object.entries(e.shape))n[r]=ke(s),t.push(r);return{type:"object",properties:n,required:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{anyOf:e.members.map(ke)}:{};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 n={},t=[];for(let[r,s]of Object.entries(e))n[r]=Ue(s),t.push(r);return{type:"object",properties:n,required:t,additionalProperties:!1}}default:return{}}}function nn(e){let n={},t=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?n[i]=ke(o.type):o?.example!==void 0?n[i]=Ue(o.example):n[i]={},o?.required!==!1&&t.push(i),o?.example!==void 0&&(n[i].examples=[o.example]);let r={type:"object",properties:n,required:t},s;return e.returns&&(e.returns.type?.kind?s=ke(e.returns.type):e.returns.example!==void 0&&(s=Ue(e.returns.example))),{input:r,output:s}}import{validate as or,filter as Ta,s as rn}from"tosijs-schema";function Ce(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function ei(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function Ea(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function X(e,n,t,r){let s,i,o,a=t,c=r;if(typeof e=="string")if(s=e,typeof n=="function")i=n,a!==void 0&&(o=rn.infer(a));else if(n===void 0&&a!==void 0)o=rn.infer(a);else if(ei(n))o=n;else if(Ea(n))o=n;else if(n!==void 0)a=n,c=a,o=rn.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else ei(e),o=e,s=$a(o);let l;if(o){let f=o?.schema??o;f&&typeof f=="object"&&Array.isArray(f.examples)&&(l=f.examples)}return a===void 0&&l&&l.length>0&&(a=l[0]),{description:s,check:f=>i?i(f):o?or(f,o):!1,schema:o,predicate:i,example:a,examples:l,default:c,toJSONSchema(){if(o){let f=o?.schema??o;if(f&&typeof f=="object"&&"type"in f)return f}return a!==void 0?Ue(a):{description:s}},strip(f){return o?Ta(f,o):f},__runtimeType:!0}}function $a(e){let n=e?.schema??e;if(n&&typeof n=="object"&&"type"in n){let t=n;switch(t.type){case"string":return t.format?`string (${t.format})`:t.pattern?`string matching ${t.pattern}`:t.minLength!==void 0&&t.maxLength!==void 0?`string (${t.minLength}-${t.maxLength} chars)`:"string";case"number":case"integer":return t.minimum!==void 0&&t.maximum!==void 0?`${t.type} (${t.minimum}-${t.maximum})`:t.minimum!==void 0?`${t.type} >= ${t.minimum}`:t.maximum!==void 0?`${t.type} <= ${t.maximum}`:t.type;case"boolean":return"boolean";case"array":return"array";case"object":return"object";case"null":return"null"}}return"value"}var sn=X("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),on=X("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),an=X("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),cn=X("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),ln=X("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`),un=X("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),fn=X("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`),ar=e=>{try{return new URL(e),!0}catch{return!1}},pn=X("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:ar(e)?!0:`"${e}" is not a valid URL`),mn=X("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`),cr=e=>{let n=new Date(e);return!isNaN(n.getTime())&&e.includes("T")},lr=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let n=new Date(e+"T00:00:00Z");return!isNaN(n.getTime())},ur=X("ISO 8601 timestamp",e=>typeof e=="string"&&cr(e)),fr=X("date (YYYY-MM-DD)",e=>typeof e=="string"&&lr(e));function dn(e){return X(`${e.description} or null`,n=>n===null||e.check(n)===!0)}function gn(e){return X(`${e.description} (optional)`,n=>n==null||e.check(n)===!0)}function yn(e,n,...t){if(typeof e=="string"&&Array.isArray(n)){let i=e,o=n,a=new Set(o);return{description:i,check:l=>a.has(l),toJSONSchema:()=>({enum:o}),strip:l=>l,__runtimeType:!0,values:o}}let r=[];Ce(e)&&r.push(e),Ce(n)&&r.push(n),r.push(...t);let s=r.map(i=>i.description).join(" | ");return X(s,i=>r.some(o=>o.check(i)===!0))}function hn(e){return X(`array of ${e.description}`,n=>Array.isArray(n)&&n.every(t=>e.check(t)===!0))}function ka(e){if(Ce(e))return t=>e.check(t)===!0;if(e&&typeof e=="object"&&"schema"in e)return t=>or(t,e);let n=rn.infer(e);return t=>or(t,n)}function Qe(e,n,t){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 f=u<o.length?o[u]:s[u];return f===void 0?()=>!0:ka(f)}),c=t;return r.forEach((l,u)=>{let f=u<o.length?o[u]:s[u],p="any";Ce(f)?p=f.description:f!==void 0&&(p=typeof f=="string"?"string":JSON.stringify(f)),c=c.replace(new RegExp(`\\b${l}\\b`,"g"),p)}),X(c,l=>n(l,...a))};return i.params=r,i.description=t,i}var bn=Qe(["T","U"],(e,n,t)=>Array.isArray(e)&&e.length===2&&n(e[0])&&t(e[1]),"Pair<T, U>"),xn=Qe(["V"],(e,n)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(n),"Record<string, V>");function wn(e,n){let t=Object.values(n),r=new Set(t),s=Object.keys(n),i={};for(let[a,c]of Object.entries(n))i[c]=a;return{description:e,check:a=>r.has(a),toJSONSchema:()=>({enum:t}),strip:a=>a,__runtimeType:!0,members:n,names:i,values:t,keys:s}}function ja(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,n,t){if(Array.isArray(n)&&t){let r=n,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,f)=>f<a.length?a[f]:i[f]),l=t(...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 va(e,n)}function va(e,n){let t={},r,s="assertReturns";if(typeof n=="function"){let o=n.__tjs;if(o){if(o.params)for(let[a,c]of Object.entries(o.params))t[a]=c?.example??null;o.returns&&(r=o.returns?.example??null),o.safeReturn?s="checkedReturns":o.unsafe?s="assertReturns":s="returns"}}else t=n.params??{},r=n.returns,s=n.returnContract??"assertReturns";return{description:e,params:t,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(t).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 f=Object.keys(t),p=Object.keys(l.params);for(let m=0;m<f.length;m++){let d=l.params[p[m]],h=t[f[m]];if(d?.type?.kind&&h!==void 0){let x=ja(h);if(x&&d.type.kind!==x&&d.type.kind!=="any")return`param '${f[m]}' expected ${x}, got ${d.type.kind}`}}}}return!0},__runtimeType:!0}}var Aa=ti(),ce=Aa.version,kt=Symbol.for("tjs.equals");function Tn(e){let[n=0,t=0,r=0]=e.split(".").map(Number);return{major:n,minor:t,patch:r}}function mr(e,n){let t=Tn(e),r=Tn(n);return t.major!==r.major?t.major<r.major?-1:1:t.minor!==r.minor?t.minor<r.minor?-1:1:t.patch!==r.patch?t.patch<r.patch?-1:1:0}function dr(e,n){let t=Tn(e),r=Tn(n);return t.major===r.major}var Re=class e extends Error{path;expected;actual;callStack;reason;constructor(n,t,r,s,i,o){super(n),this.name="MonadicError",this.path=t,this.expected=r,this.actual=s,this.callStack=i,this.reason=o,Error.captureStackTrace&&Error.captureStackTrace(this,e)}};function Ca(e,n,t,r){let s=t===null?"null":typeof t,i=V.callStacks||V.debug?yr():void 0,o=r?`Expected ${n} for '${e}': ${r}`:`Expected ${n} for '${e}', got ${s}`,a=new Re(o,e,n,s,i,r);if(V.trackErrors!==!1){let c=V.maxErrors??En;si[et]=a,et=(et+1)%c,Je<c&&Je++,$n++}if(V.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),V.throwTypeErrors)throw a;return a}function pr(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var gr={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},V={...gr},jt=64,ri=new Array(jt).fill(""),We=0,ve=0,En=64,si=new Array(En).fill(null),et=0,Je=0,$n=0,rt=0;function Ra(){rt++}function Pa(){rt>0&&rt--}function Na(){return rt>0}function Da(e){V={...V,...e}}function Ia(){return{...V}}function ii(e){if((V.callStacks||V.debug)&&e){let n=V.maxStackSize??jt;ri[We]=e,We=(We+1)%n,ve<n&&ve++}}function Sn(){if((V.callStacks||V.debug)&&ve>0){let e=V.maxStackSize??jt;We=(We-1+e)%e,ve--}}function yr(){if(ve===0)return[];let e=V.maxStackSize??jt,n=[],t=(We-ve+e)%e;for(let r=0;r<ve;r++)n.push(ri[(t+r)%e]);return n}function oi(){if(V.trackErrors===!1||Je===0)return[];let e=V.maxErrors??En,n=[],t=(et-Je+e)%e;for(let r=0;r<Je;r++)n.push(si[(t+r)%e]);return n}function Oa(){let e=oi();return et=0,Je=0,$n=0,e}function Ba(){return $n}function La(){V={...gr},We=0,ve=0,et=0,Je=0,$n=0,rt=0}function tt(e,n){if(e!==null&&typeof e=="object"&&typeof e[kt]=="function")return e[kt](n);if(n!==null&&typeof n=="object"&&typeof n[kt]=="function")return n[kt](e);if(e!==null&&typeof e=="object"&&typeof e.Equals=="function")return e.Equals(n);if(n!==null&&typeof n=="object"&&typeof n.Equals=="function")return n.Equals(e);if((e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)return!0;if(e==null||n===null||n===void 0||typeof e!=typeof n||typeof e!="object")return!1;if(e instanceof Set&&n instanceof Set){if(e.size!==n.size)return!1;for(let s of e)if(!n.has(s))return!1;return!0}if(e instanceof Map&&n instanceof Map){if(e.size!==n.size)return!1;for(let[s,i]of e)if(!n.has(s)||!tt(i,n.get(s)))return!1;return!0}if(e instanceof Date&&n instanceof Date)return e.getTime()===n.getTime();if(e instanceof RegExp&&n instanceof RegExp)return e.toString()===n.toString();if(Array.isArray(e)&&Array.isArray(n))return e.length!==n.length?!1:e.every((s,i)=>tt(s,n[i]));if(Array.isArray(e)!==Array.isArray(n))return!1;let t=Object.keys(e),r=Object.keys(n);return t.length!==r.length?!1:t.every(s=>tt(e[s],n[s]))}function ai(e,n){return!tt(e,n)}function ci(e){return e===null?"null":typeof e}function li(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function hr(e,n){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),!!(e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)}function ui(e,n){return!hr(e,n)}function je(e){return e!==null&&typeof e=="object"&&e.$error===!0}function Se(e,n){let t={$error:!0,message:e,...n};if((V.callStacks||V.debug)&&ve>0){let r=yr(),s=n?.path?[...r,n.path]:r;t.stack=s}return t}function br(e,n){if(e.length===0)return Se("Unknown error");if(e.length===1)return e[0];let t=e.map(s=>{if(s.path){let i=s.path.split(".");return i[i.length-1]}return"unknown"}).join(", "),r=`Multiple parameter errors in ${n||"function"}: ${t}`;return Se(r,{path:n,errors:e})}function nt(e){if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let n=typeof e;if(n!=="object")return n;let t=e.constructor?.name;return t&&t!=="Object"?t:"object"}function fi(e,n){if(e==null||typeof e!="object"&&typeof e!="function")return!1;let t=e;for(;t!==null;){if(t.constructor?.name===n)return!0;t=Object.getPrototypeOf(t)}return!1}function Ve(e,n,t){if(je(e))return e;if(typeof n=="object"&&n!==null&&"check"in n){let s=n.check(e);if(s===!0)return null;let i=typeof s=="string"?s:void 0,o=i?`Expected ${n.description} for '${t}': ${i}`:`Expected ${n.description} but got ${nt(e)}`;return Se(o,{path:t,expected:n.description,actual:nt(e),reason:i})}let r=nt(e);return n==="any"||n===r||n==="number"&&r==="number"||n==="integer"&&r==="number"&&Number.isInteger(e)||n==="non-negative-integer"&&r==="number"&&Number.isInteger(e)&&e>=0||n==="object"&&r==="object"?null:Se(`Expected ${n} but got ${r}`,{path:t,expected:n,actual:r})}function pi(e,n,t,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<n.length;o++){let a=n[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 Re(`Expected (...arg${o}: ${a}, ...) for '${r}', but callback declares arg${o} as ${l}`,`${r}(arg${o})`,a,l)}if(t!=="any"&&s.returns){let o=s.returns.type?.kind??s.returns.kind;if(o&&o!=="any"&&o!==t)return new Re(`Expected callback returning ${t} for '${r}', but callback returns ${o}`,`${r}(return)`,t,o)}return e}function xr(e,n,t){for(let[r,s]of Object.entries(n.params)){let i=e[r];if(je(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:t?`${t}.${r}`:r,expected:a,actual:"undefined",loc:s.loc})}if(i===void 0)continue;let o=Ve(i,s.type,t?`${t}.${r}`:r);if(o)return s.loc&&(o.loc=s.loc),o}return null}function wr(e,n){if(e.__tjs=n,e.__tjs.schema=()=>nn(n),!(!n.polymorphic&&(n.safe||n.safeReturn||V.safety!=="none"&&!n.unsafe||n.returns&&V.safety==="all"&&!n.unsafeReturn)))return e;let r=!!n.returns,s=!!n.unsafe,i=!!n.safe,o=!!n.unsafeReturn,a=!!n.safeReturn,c=n.returns?.defaults,l=Object.entries(n.params),u=l.length,f=e.name||n.name||"anonymous",p=function(...m){if(rt>0)return e.apply(this,m);let d=i||!s&&V.safety!=="none",h=r&&(a||!o&&V.safety==="all");if(!d&&!h)return e.apply(this,m);if(m.length>0&&je(m[0]))return m[0];if(d){let E=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),$=[];if(E){let b=m[0];for(let w=0;w<u;w++){let[_,S]=l[w],T=b[_];if(je(T)){$.push(T);continue}if(S.required&&T===void 0){$.push(Se(`Missing required parameter '${_}'`,{path:`${f}.${_}`,expected:typeof S.type=="string"?S.type:S.type?.description||"value",actual:"undefined",loc:S.loc}));continue}if(T!==void 0){let k=Ve(T,S.type,`${f}.${_}`);k&&(S.loc&&(k.loc=S.loc),$.push(k))}}}else for(let b=0;b<u;b++){let[w,_]=l[b],S=m[b];if(je(S)){$.push(S);continue}if(_.required&&S===void 0){$.push(Se(`Missing required parameter '${w}'`,{path:`${f}.${w}`,expected:typeof _.type=="string"?_.type:_.type?.description||"value",actual:"undefined",loc:_.loc}));continue}if(S!==void 0){let T=Ve(S,_.type,`${f}.${w}`);T&&(_.loc&&(T.loc=_.loc),$.push(T))}}if($.length>0)return br($,f)}let x=V.callStacks||V.debug;x&&ii(f);try{let E=e.apply(this,m);if(h&&n.returns&&!je(E)){let $=c&&typeof E=="object"&&E!==null?Object.assign({},c,E):E,b=Ve($,n.returns.type,`${f}()`);if(b)return x&&Sn(),b}return x&&Sn(),E}catch(E){return x&&Sn(),Se(E.message||String(E),{path:f,cause:E})}};return Object.defineProperty(p,"name",{value:e.name}),p.__tjs=n,p.__tjs.schema=()=>nn(n),p}function mi(e){let n=new Proxy(e,{construct(t,r,s){return Reflect.construct(t,r,s)},apply(t,r,s){return Reflect.construct(t,s)}});Object.defineProperty(n,"name",{value:e.name});for(let t of Object.getOwnPropertyNames(e))t!=="length"&&t!=="name"&&t!=="prototype"&&Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t));return n}function di(){let e={...V},n=e.maxStackSize??jt,t=new Array(n).fill(""),r=0,s=0,i=e.maxErrors??En,o=new Array(i).fill(null),a=0,c=0,l=0,u=0;function f(N){e={...e,...N}}function p(){return{...e}}function m(N){(e.callStacks||e.debug)&&N&&(t[r]=N,r=(r+1)%n,s<n&&s++)}function d(){(e.callStacks||e.debug)&&s>0&&(r=(r-1+n)%n,s--)}function h(){if(s===0)return[];let N=[],L=(r-s+n)%n;for(let U=0;U<s;U++)N.push(t[(L+U)%n]);return N}function x(){e={...gr},r=0,s=0,a=0,c=0,l=0,u=0}function E(){u++}function $(){u>0&&u--}function b(){return u>0}let w=new Map;function _(N,L,U){w.has(N)||w.set(N,new Map),w.get(N).set(L,U)}function S(N,L){let U=typeof N,H;if(N==null)return;if(U==="string")H="String";else if(U==="number")H="Number";else if(U==="boolean")H="Boolean";else if(Array.isArray(N))H="Array";else if(U==="object")H=N.constructor?.name||"Object";else return;let K=H;for(;K;){let Ke=w.get(K);if(Ke?.has(L))return Ke.get(L);if(U==="object"&&!Array.isArray(N)){if(K=Object.getPrototypeOf(K===H?N:Object.getPrototypeOf(N))?.constructor?.name,K==="Object"||K===H)break}else break}let ie=w.get("Object");if(ie?.has(L))return ie.get(L)}function T(N,L,U){let H=U===null?"null":typeof U,K=e.callStacks||e.debug?h():void 0,ie=new Re(`Expected ${L} for '${N}', got ${H}`,N,L,H,K);if(e.trackErrors!==!1&&(o[a]=ie,a=(a+1)%i,c<i&&c++,l++),e.logTypeErrors&&console.error(`[TJS TypeError] ${ie.message}`),e.throwTypeErrors)throw ie;return ie}function k(){if(e.trackErrors===!1||c===0)return[];let N=[],L=(a-c+i)%i;for(let U=0;U<c;U++)N.push(o[(L+U)%i]);return N}function M(){let N=k();return a=0,c=0,l=0,N}function R(){return l}function C(N,L){let U={$error:!0,message:N,...L};if((e.callStacks||e.debug)&&s>0){let H=L?.path?[...h(),L.path]:h();U.stack=H}return U}function I(N,L){return N==null?T(`bang.${L}`,"non-null",N):pr(N)?N:N[L]}return{version:ce,MonadicError:Re,typeError:T,isMonadicError:pr,bang:I,isError:je,error:C,composeErrors:br,typeOf:nt,isNativeType:fi,checkType:Ve,validateArgs:xr,wrap:wr,checkFnShape:pi,wrapClass:mi,compareVersions:mr,versionsCompatible:dr,createRuntime:di,configure:f,getConfig:p,pushStack:m,popStack:d,getStack:h,errors:k,clearErrors:M,getErrorCount:R,resetRuntime:x,enterUnsafe:E,exitUnsafe:$,isUnsafeMode:b,validate:ni,infer:_n.infer.bind(_n),Type:X,isRuntimeType:Ce,Union:yn,Generic:Qe,Enum:wn,FunctionPredicate:$t,Nullable:dn,Optional:gn,TArray:hn,TString:sn,TNumber:on,TBoolean:an,TInteger:cn,TPositiveInt:ln,TNonEmptyString:un,TEmail:fn,TUrl:pn,TUuid:mn,TPair:bn,TRecord:xn,Is:tt,IsNot:ai,Eq:hr,NotEq:ui,TypeOf:ci,toBool:li,tjsEquals:kt,registerExtension:_,resolveExtension:S}}var qe={version:ce,MonadicError:Re,typeError:Ca,isMonadicError:pr,isError:je,error:Se,composeErrors:br,typeOf:nt,isNativeType:fi,checkType:Ve,validateArgs:xr,wrap:wr,checkFnShape:pi,wrapClass:mi,compareVersions:mr,versionsCompatible:dr,configure:Da,getConfig:Ia,pushStack:ii,popStack:Sn,getStack:yr,errors:oi,clearErrors:Oa,getErrorCount:Ba,resetRuntime:La,enterUnsafe:Ra,exitUnsafe:Pa,isUnsafeMode:Na,createRuntime:di,validate:ni,infer:_n.infer.bind(_n),Type:X,isRuntimeType:Ce,Union:yn,Generic:Qe,Enum:wn,FunctionPredicate:$t,Nullable:dn,Optional:gn,TArray:hn,TString:sn,TNumber:on,TBoolean:an,TInteger:cn,TPositiveInt:ln,TNonEmptyString:un,TEmail:fn,TUrl:pn,TUuid:mn,Timestamp:ur,LegalDate:fr,TPair:bn,TRecord:xn,Is:tt,IsNot:ai,Eq:hr,NotEq:ui,TypeOf:ci,toBool:li};function Sr(){let e=globalThis;if(e.__tjs){let n=e.__tjs.version;if(typeof n!="string")return e.__tjs=qe,qe;let t=mr(ce,n);return t===0||(dr(ce,n)?t>0?(console.info(`TJS runtime: upgrading ${n} \u2192 ${ce}`),e.__tjs=qe):console.info(`TJS runtime: keeping ${n} (newer than ${ce})`):(console.warn(`TJS runtime version conflict: ${n} vs ${ce} (major version mismatch)`),t>0&&(console.warn(`Upgrading to ${ce} - check for breaking changes`),e.__tjs=qe))),e.__tjs}return e.__tjs=qe,qe}function Fa(e){return`
180
+ `,Ea=ei+`
181
+ `+ti;import{validate as si,s as _n}from"tosijs-schema";function ke(e){if(e.nullable)return{anyOf:[ke({...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:ke(e.items)}:{type:"array"};case"object":if(e.shape){let t={},n=[];for(let[r,s]of Object.entries(e.shape))t[r]=ke(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(ke)}:{};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 nn(e){let t={},n=[];for(let[i,o]of Object.entries(e.params))o?.type?.kind?t[i]=ke(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=ke(e.returns.type):e.returns.example!==void 0&&(s=Ue(e.returns.example))),{input:r,output:s}}import{validate as ur,filter as $a,s as rn}from"tosijs-schema";function Ce(e){return e!==null&&typeof e=="object"&&"__runtimeType"in e&&e.__runtimeType===!0}function ni(e){return e!==null&&typeof e=="object"&&"schema"in e&&typeof e.schema=="object"}function ka(e){return e!==null&&typeof e=="object"&&"type"in e&&typeof e.type=="string"}function Q(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=rn.infer(a));else if(t===void 0&&a!==void 0)o=rn.infer(a);else if(ni(t))o=t;else if(ka(t))o=t;else if(t!==void 0)a=t,c=a,o=rn.infer(a);else throw new Error("Type(description) requires a predicate, schema, or example");else ni(e),o=e,s=ja(o);let l;if(o){let f=o?.schema??o;f&&typeof f=="object"&&Array.isArray(f.examples)&&(l=f.examples)}return a===void 0&&l&&l.length>0&&(a=l[0]),{description:s,check:f=>i?i(f):o?ur(f,o):!1,schema:o,predicate:i,example:a,examples:l,default:c,toJSONSchema(){if(o){let f=o?.schema??o;if(f&&typeof f=="object"&&"type"in f)return f}return a!==void 0?Ue(a):{description:s}},strip(f){return o?$a(f,o):f},__runtimeType:!0}}function ja(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 sn=Q("string",e=>typeof e=="string"?!0:`expected string, got ${e===null?"null":typeof e}`),on=Q("number",e=>typeof e=="number"?!0:`expected number, got ${e===null?"null":typeof e}`),an=Q("boolean",e=>typeof e=="boolean"?!0:`expected boolean, got ${e===null?"null":typeof e}`),cn=Q("integer",e=>typeof e!="number"?`expected integer, got ${e===null?"null":typeof e}`:Number.isInteger(e)?!0:`${e} is not an integer`),ln=Q("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`),un=Q("non-empty string",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:e.length===0?"string is empty":!0),fn=Q("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`),fr=e=>{try{return new URL(e),!0}catch{return!1}},pn=Q("URL",e=>typeof e!="string"?`expected string, got ${e===null?"null":typeof e}`:fr(e)?!0:`"${e}" is not a valid URL`),mn=Q("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`),pr=e=>{let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")},mr=e=>{if(!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let t=new Date(e+"T00:00:00Z");return!isNaN(t.getTime())},dr=Q("ISO 8601 timestamp",e=>typeof e=="string"&&pr(e)),gr=Q("date (YYYY-MM-DD)",e=>typeof e=="string"&&mr(e));function dn(e){return Q(`${e.description} or null`,t=>t===null||e.check(t)===!0)}function gn(e){return Q(`${e.description} (optional)`,t=>t==null||e.check(t)===!0)}function yn(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=[];Ce(e)&&r.push(e),Ce(t)&&r.push(t),r.push(...n);let s=r.map(i=>i.description).join(" | ");return Q(s,i=>r.some(o=>o.check(i)===!0))}function hn(e){return Q(`array of ${e.description}`,t=>Array.isArray(t)&&t.every(n=>e.check(n)===!0))}function va(e){if(Ce(e))return n=>e.check(n)===!0;if(e&&typeof e=="object"&&"schema"in e)return n=>ur(n,e);let t=rn.infer(e);return n=>ur(n,t)}function Qe(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 f=u<o.length?o[u]:s[u];return f===void 0?()=>!0:va(f)}),c=n;return r.forEach((l,u)=>{let f=u<o.length?o[u]:s[u],p="any";Ce(f)?p=f.description:f!==void 0&&(p=typeof f=="string"?"string":JSON.stringify(f)),c=c.replace(new RegExp(`\\b${l}\\b`,"g"),p)}),Q(c,l=>t(l,...a))};return i.params=r,i.description=n,i}var bn=Qe(["T","U"],(e,t,n)=>Array.isArray(e)&&e.length===2&&t(e[0])&&n(e[1]),"Pair<T, U>"),xn=Qe(["V"],(e,t)=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&Object.values(e).every(t),"Record<string, V>");function wn(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 Ma(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,f)=>f<a.length?a[f]:i[f]),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 Aa(e,t)}function Aa(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 f=Object.keys(n),p=Object.keys(l.params);for(let m=0;m<f.length;m++){let d=l.params[p[m]],h=n[f[m]];if(d?.type?.kind&&h!==void 0){let x=Ma(h);if(x&&d.type.kind!==x&&d.type.kind!=="any")return`param '${f[m]}' expected ${x}, got ${d.type.kind}`}}}}return!0},__runtimeType:!0}}var Ra=ri(),ce=Ra.version,kt=Symbol.for("tjs.equals");function Tn(e){let[t=0,n=0,r=0]=e.split(".").map(Number);return{major:t,minor:n,patch:r}}function hr(e,t){let n=Tn(e),r=Tn(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 br(e,t){let n=Tn(e),r=Tn(t);return n.major===r.major}var Re=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 Pa(e,t,n,r){let s=n===null?"null":typeof n,i=V.callStacks||V.debug?wr():void 0,o=r?`Expected ${t} for '${e}': ${r}`:`Expected ${t} for '${e}', got ${s}`,a=new Re(o,e,t,s,i,r);if(V.trackErrors!==!1){let c=V.maxErrors??En;oi[et]=a,et=(et+1)%c,Je<c&&Je++,$n++}if(V.logTypeErrors&&console.error(`[TJS TypeError] ${a.message}`),V.throwTypeErrors)throw a;return a}function yr(e){return e instanceof Error&&e.name==="MonadicError"&&"path"in e}var xr={debug:!1,safety:"inputs",requireReturnTypes:!1,callStacks:!1,maxStackSize:64,trackErrors:!0,maxErrors:64},V={...xr},jt=64,ii=new Array(jt).fill(""),We=0,ve=0,En=64,oi=new Array(En).fill(null),et=0,Je=0,$n=0,rt=0;function Na(){rt++}function Da(){rt>0&&rt--}function Ia(){return rt>0}function Oa(e){V={...V,...e}}function Ba(){return{...V}}function ai(e){if((V.callStacks||V.debug)&&e){let t=V.maxStackSize??jt;ii[We]=e,We=(We+1)%t,ve<t&&ve++}}function Sn(){if((V.callStacks||V.debug)&&ve>0){let e=V.maxStackSize??jt;We=(We-1+e)%e,ve--}}function wr(){if(ve===0)return[];let e=V.maxStackSize??jt,t=[],n=(We-ve+e)%e;for(let r=0;r<ve;r++)t.push(ii[(n+r)%e]);return t}function ci(){if(V.trackErrors===!1||Je===0)return[];let e=V.maxErrors??En,t=[],n=(et-Je+e)%e;for(let r=0;r<Je;r++)t.push(oi[(n+r)%e]);return t}function La(){let e=ci();return et=0,Je=0,$n=0,e}function Fa(){return $n}function Ua(){V={...xr},We=0,ve=0,et=0,Je=0,$n=0,rt=0}function tt(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)||!tt(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)=>tt(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=>tt(e[s],t[s]))}function li(e,t){return!tt(e,t)}function ui(e){return e===null?"null":typeof e}function fi(e){return e instanceof Boolean||e instanceof Number||e instanceof String?!!e.valueOf():!!e}function Sr(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 pi(e,t){return!Sr(e,t)}function je(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)&&ve>0){let r=wr(),s=t?.path?[...r,t.path]:r;n.stack=s}return n}function _r(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 nt(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 mi(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(je(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 ${nt(e)}`;return Se(o,{path:n,expected:t.description,actual:nt(e),reason:i})}let r=nt(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 di(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 Re(`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 Re(`Expected callback returning ${n} for '${r}', but callback returns ${o}`,`${r}(return)`,n,o)}return e}function Tr(e,t,n){for(let[r,s]of Object.entries(t.params)){let i=e[r];if(je(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=Ve(i,s.type,n?`${n}.${r}`:r);if(o)return s.loc&&(o.loc=s.loc),o}return null}function Er(e,t){if(e.__tjs=t,e.__tjs.schema=()=>nn(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,f=e.name||t.name||"anonymous",p=function(...m){if(rt>0)return e.apply(this,m);let d=i||!s&&V.safety!=="none",h=r&&(a||!o&&V.safety==="all");if(!d&&!h)return e.apply(this,m);if(m.length>0&&je(m[0]))return m[0];if(d){let _=m.length===1&&typeof m[0]=="object"&&m[0]!==null&&!Array.isArray(m[0]),E=[];if(_){let b=m[0];for(let w=0;w<u;w++){let[T,S]=l[w],$=b[T];if(je($)){E.push($);continue}if(S.required&&$===void 0){E.push(Se(`Missing required parameter '${T}'`,{path:`${f}.${T}`,expected:typeof S.type=="string"?S.type:S.type?.description||"value",actual:"undefined",loc:S.loc}));continue}if($!==void 0){let j=Ve($,S.type,`${f}.${T}`);j&&(S.loc&&(j.loc=S.loc),E.push(j))}}}else for(let b=0;b<u;b++){let[w,T]=l[b],S=m[b];if(je(S)){E.push(S);continue}if(T.required&&S===void 0){E.push(Se(`Missing required parameter '${w}'`,{path:`${f}.${w}`,expected:typeof T.type=="string"?T.type:T.type?.description||"value",actual:"undefined",loc:T.loc}));continue}if(S!==void 0){let $=Ve(S,T.type,`${f}.${w}`);$&&(T.loc&&($.loc=T.loc),E.push($))}}if(E.length>0)return _r(E,f)}let x=V.callStacks||V.debug;x&&ai(f);try{let _=e.apply(this,m);if(h&&t.returns&&!je(_)){let E=c&&typeof _=="object"&&_!==null?Object.assign({},c,_):_,b=Ve(E,t.returns.type,`${f}()`);if(b)return x&&Sn(),b}return x&&Sn(),_}catch(_){return x&&Sn(),Se(_.message||String(_),{path:f,cause:_})}};return Object.defineProperty(p,"name",{value:e.name}),p.__tjs=t,p.__tjs.schema=()=>nn(t),p}function gi(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 yi(){let e={...V},t=e.maxStackSize??jt,n=new Array(t).fill(""),r=0,s=0,i=e.maxErrors??En,o=new Array(i).fill(null),a=0,c=0,l=0,u=0;function f(N){e={...e,...N}}function p(){return{...e}}function m(N){(e.callStacks||e.debug)&&N&&(n[r]=N,r=(r+1)%t,s<t&&s++)}function d(){(e.callStacks||e.debug)&&s>0&&(r=(r-1+t)%t,s--)}function h(){if(s===0)return[];let N=[],U=(r-s+t)%t;for(let q=0;q<s;q++)N.push(n[(U+q)%t]);return N}function x(){e={...xr},r=0,s=0,a=0,c=0,l=0,u=0}function _(){u++}function E(){u>0&&u--}function b(){return u>0}let w=new Map;function T(N,U,q){w.has(N)||w.set(N,new Map),w.get(N).set(U,q)}function S(N,U){let q=typeof N,Y;if(N==null)return;if(q==="string")Y="String";else if(q==="number")Y="Number";else if(q==="boolean")Y="Boolean";else if(Array.isArray(N))Y="Array";else if(q==="object")Y=N.constructor?.name||"Object";else return;let X=Y;for(;X;){let Ke=w.get(X);if(Ke?.has(U))return Ke.get(U);if(q==="object"&&!Array.isArray(N)){if(X=Object.getPrototypeOf(X===Y?N:Object.getPrototypeOf(N))?.constructor?.name,X==="Object"||X===Y)break}else break}let ie=w.get("Object");if(ie?.has(U))return ie.get(U)}function $(N,U,q){let Y=q===null?"null":typeof q,X=e.callStacks||e.debug?h():void 0,ie=new Re(`Expected ${U} for '${N}', got ${Y}`,N,U,Y,X);if(e.trackErrors!==!1&&(o[a]=ie,a=(a+1)%i,c<i&&c++,l++),e.logTypeErrors&&console.error(`[TJS TypeError] ${ie.message}`),e.throwTypeErrors)throw ie;return ie}function j(){if(e.trackErrors===!1||c===0)return[];let N=[],U=(a-c+i)%i;for(let q=0;q<c;q++)N.push(o[(U+q)%i]);return N}function k(){let N=j();return a=0,c=0,l=0,N}function R(){return l}function C(N,U){let q={$error:!0,message:N,...U};if((e.callStacks||e.debug)&&s>0){let Y=U?.path?[...h(),U.path]:h();q.stack=Y}return q}function I(N,U){return N==null?$(`bang.${U}`,"non-null",N):yr(N)?N:N[U]}return{version:ce,MonadicError:Re,typeError:$,isMonadicError:yr,bang:I,isError:je,error:C,composeErrors:_r,typeOf:nt,isNativeType:mi,checkType:Ve,validateArgs:Tr,wrap:Er,checkFnShape:di,wrapClass:gi,compareVersions:hr,versionsCompatible:br,createRuntime:yi,configure:f,getConfig:p,pushStack:m,popStack:d,getStack:h,errors:j,clearErrors:k,getErrorCount:R,resetRuntime:x,enterUnsafe:_,exitUnsafe:E,isUnsafeMode:b,validate:si,infer:_n.infer.bind(_n),Type:Q,isRuntimeType:Ce,Union:yn,Generic:Qe,Enum:wn,FunctionPredicate:$t,Nullable:dn,Optional:gn,TArray:hn,TString:sn,TNumber:on,TBoolean:an,TInteger:cn,TPositiveInt:ln,TNonEmptyString:un,TEmail:fn,TUrl:pn,TUuid:mn,TPair:bn,TRecord:xn,Is:tt,IsNot:li,Eq:Sr,NotEq:pi,TypeOf:ui,toBool:fi,tjsEquals:kt,registerExtension:T,resolveExtension:S}}var qe={version:ce,MonadicError:Re,typeError:Pa,isMonadicError:yr,isError:je,error:Se,composeErrors:_r,typeOf:nt,isNativeType:mi,checkType:Ve,validateArgs:Tr,wrap:Er,checkFnShape:di,wrapClass:gi,compareVersions:hr,versionsCompatible:br,configure:Oa,getConfig:Ba,pushStack:ai,popStack:Sn,getStack:wr,errors:ci,clearErrors:La,getErrorCount:Fa,resetRuntime:Ua,enterUnsafe:Na,exitUnsafe:Da,isUnsafeMode:Ia,createRuntime:yi,validate:si,infer:_n.infer.bind(_n),Type:Q,isRuntimeType:Ce,Union:yn,Generic:Qe,Enum:wn,FunctionPredicate:$t,Nullable:dn,Optional:gn,TArray:hn,TString:sn,TNumber:on,TBoolean:an,TInteger:cn,TPositiveInt:ln,TNonEmptyString:un,TEmail:fn,TUrl:pn,TUuid:mn,Timestamp:dr,LegalDate:gr,TPair:bn,TRecord:xn,Is:tt,IsNot:li,Eq:Sr,NotEq:pi,TypeOf:ui,toBool:fi};function $r(){let e=globalThis;if(e.__tjs){let t=e.__tjs.version;if(typeof t!="string")return e.__tjs=qe,qe;let n=hr(ce,t);return n===0||(br(ce,t)?n>0?(console.info(`TJS runtime: upgrading ${t} \u2192 ${ce}`),e.__tjs=qe):console.info(`TJS runtime: keeping ${t} (newer than ${ce})`):(console.warn(`TJS runtime version conflict: ${t} vs ${ce} (major version mismatch)`),n>0&&(console.warn(`Upgrading to ${ce} - check for breaking changes`),e.__tjs=qe))),e.__tjs}return e.__tjs=qe,qe}function qa(e){return`
182
182
  // TJS runtime wrapper (skips unsafe functions)
183
183
  if (typeof ${e}.__tjs === 'object' && !${e}.__tjs.unsafe && typeof globalThis.__tjs?.wrap === 'function') {
184
184
  ${e} = globalThis.__tjs.wrap(${e}, ${e}.__tjs)
185
185
  }
186
- `.trim()}function Ua(e,n,t=1e-9){if(e===n)return!0;if(typeof e=="number"&&typeof n=="number"&&(!Number.isInteger(e)||!Number.isInteger(n))){let r=Math.abs(e-n),s=Math.max(Math.abs(e),Math.abs(n),1);return r/s<t}return!1}function Tr(e,n){if(e===n||typeof e=="number"&&typeof n=="number"&&Number.isNaN(e)&&Number.isNaN(n)||Ua(e,n))return!0;if(e===null||n===null||e===void 0||n===void 0)return e===n;if(typeof e!=typeof n||typeof e!="object")return!1;if(Array.isArray(e)&&Array.isArray(n))return e.length!==n.length?!1:e.every((s,i)=>Tr(s,n[i]));if(Array.isArray(e)!==Array.isArray(n))return!1;let t=Object.keys(e),r=Object.keys(n);return t.length!==r.length?!1:t.every(s=>Tr(e[s],n[s]))}function Er(e,n,t=""){if(n===null)return e===null?{matches:!0}:{matches:!1,error:`Expected null at '${t}', got ${ze(e)}`};if(n===void 0)return e===void 0?{matches:!0}:{matches:!1,error:`Expected undefined at '${t}', got ${ze(e)}`};if(typeof n=="number")return typeof e=="number"?{matches:!0}:{matches:!1,error:`Expected number at '${t}', got ${ze(e)}`};if(typeof n=="string")return typeof e=="string"?{matches:!0}:{matches:!1,error:`Expected string at '${t}', got ${ze(e)}`};if(typeof n=="boolean")return typeof e=="boolean"?{matches:!0}:{matches:!1,error:`Expected boolean at '${t}', got ${ze(e)}`};if(Array.isArray(n)){if(!Array.isArray(e))return{matches:!1,error:`Expected array at '${t}', got ${ze(e)}`};if(n.length===0)return{matches:!0};let r=n[0];for(let s=0;s<e.length;s++){let i=Er(e[s],r,`${t}[${s}]`);if(!i.matches)return i}return{matches:!0}}if(typeof n=="object"&&n!==null){if(typeof e!="object"||e===null||Array.isArray(e))return{matches:!1,error:`Expected object at '${t}', got ${ze(e)}`};for(let r of Object.keys(n)){let s=t?`${t}.${r}`:r;if(!(r in e))return{matches:!1,error:`Missing property '${s}'`};let i=Er(e[r],n[r],s);if(!i.matches)return i}return{matches:!0}}return e===n?{matches:!0}:{matches:!1,error:`Type mismatch at '${t}'`}}function ze(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function vt(e,n=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(t=>vt(t,n)).join(", ")}]`:`[${e.slice(0,3).map(t=>vt(t,n)).join(", ")}, ...]`;if(typeof e=="object"){let t=Object.entries(e);if(t.length===0)return"{}";let r=c=>/^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(c)?c:JSON.stringify(c);if(t.length<=2)return`{${t.map(([l,u])=>`${r(l)}: ${vt(u,n)}`).join(", ")}}`;let s=" ".repeat(n+1),i=" ".repeat(n),o=t.slice(0,8).map(([c,l])=>`${s}${r(c)}: ${vt(l,n+1)}`).join(`,
187
- `),a=t.length>8?`,
186
+ `.trim()}function Wa(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 jr(e,t){if(e===t||typeof e=="number"&&typeof t=="number"&&Number.isNaN(e)&&Number.isNaN(t)||Wa(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)=>jr(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=>jr(e[s],t[s]))}function vr(e,t,n=""){if(t===null)return e===null?{matches:!0}:{matches:!1,error:`Expected null at '${n}', got ${ze(e)}`};if(t===void 0)return e===void 0?{matches:!0}:{matches:!1,error:`Expected undefined at '${n}', got ${ze(e)}`};if(typeof t=="number")return typeof e=="number"?{matches:!0}:{matches:!1,error:`Expected number at '${n}', got ${ze(e)}`};if(typeof t=="string")return typeof e=="string"?{matches:!0}:{matches:!1,error:`Expected string at '${n}', got ${ze(e)}`};if(typeof t=="boolean")return typeof e=="boolean"?{matches:!0}:{matches:!1,error:`Expected boolean at '${n}', got ${ze(e)}`};if(Array.isArray(t)){if(!Array.isArray(e))return{matches:!1,error:`Expected array at '${n}', got ${ze(e)}`};if(t.length===0)return{matches:!0};let r=t[0];for(let s=0;s<e.length;s++){let i=vr(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 ${ze(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=vr(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 ze(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(`,
187
+ `),a=n.length>8?`,
188
188
  ${s}...`:"";return`{
189
189
  ${o}${a}
190
- ${i}}`}return String(e)}function qa(e){let n=e.replace(/\/\*[\s\S]*?\*\//g,t=>{let r=t.split(`
190
+ ${i}}`}return String(e)}function Ja(e){let t=e.replace(/\/\*[\s\S]*?\*\//g,n=>{let r=n.split(`
191
191
  `).length-1;return`
192
- `.repeat(r)});return n=n.replace(/\/\/[^\n]*/g,""),n}function jn(e){let n=e.replace(/^import\s+.*?from\s+['"][^'"]+['"];?\s*$/gm,"");return n=n.replace(/^import\s+['"][^'"]+['"];?\s*$/gm,""),n=n.replace(/^export\s+default\s+/gm,""),n=n.replace(/^export\s+/gm,""),n=n.replace(/^(\s*)((?:const|let|var)\s+\w+\s*=\s*)?await\s+.+$/gm,"$1/* top-level await removed for test execution */"),n}function yi(e){let n=e.replace(/^const __tjs = globalThis\.__tjs\?\.createRuntime\?\.\(\) \?\? globalThis\.__tjs;\n?/m,"");return n=n.replace(/^const \{ [\w, ]+ \} = __tjs \?\? \{\};\n?/m,""),n}function Wa(e){if(Object.keys(e).length===0)return"";let n=[];for(let[t,r]of Object.entries(e)){let s=jn(r);n.push(`// Resolved import: ${t}`),n.push(s)}return n.join(`
193
- `)}function gi(e){let n={},t=e.trim();if(!t.startsWith("{")||!t.includes("="))try{return{pattern:new Function(`return ${e}`)(),defaults:n}}catch{return null}let r="",s=0,i=0;for(;i<t.length;){let o=t[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<t.length&&t[i]!==a;)t[i]==="\\"&&(r+=t[i++]),r+=t[i++];i<t.length&&(r+=t[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<t.length&&/\s/.test(t[u]);)u++;let f="",p=0;for(;u<t.length;){let m=t[u];if(m==="{"||m==="["||m==="(")p++;else if(m==="}"||m==="]"||m===")"){if(p===0)break;p--}else if(m===","&&p===0)break;f+=m,u++}try{n[l[1]]=new Function(`return ${f.trim()}`)()}catch{}r+=":",i++;continue}r+=o,i++}else r+=o,i++}try{return{pattern:new Function(`return ${r}`)(),defaults:n}}catch{return null}}function hi(e){let n=[],t=qa(e),r=/(async\s+)?function\s+(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,s;for(;(s=r.exec(t))!==null;){let a=!!s[1],c=s[2],l=s[3],u=s[4],f=t.slice(0,s.index).split(`
194
- `).length;if(u===":!")continue;let p=t.slice(s.index+s[0].length),m=kn(p);if(!m)continue;let d=_r(l);if(!(l.trim()&&d.length===0))try{let h=gi(m);if(!h)continue;let x=d.map(E=>new Function(`return ${E}`)());n.push({funcName:c,args:x,expected:h.pattern,defaults:Object.keys(h.defaults).length>0?h.defaults:void 0,line:f,isAsync:a})}catch{}}let i=/class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/g,o;for(;(o=i.exec(t))!==null;){let a=o[1],c=o.index+o[0].length,l=1,u=c;for(let b=c;b<t.length;b++)if(t[b]==="{")l++;else if(t[b]==="}"&&(l--,l===0)){u=b;break}let f=t.slice(c,u),m=/constructor\s*\(([^)]*)\)/.exec(f);if(!m)continue;let d=m[1],h=_r(d);if(d.trim()&&h.length===0)continue;let x;try{x=h.map(b=>new Function(`return ${b}`)())}catch{continue}let E=/(async\s+)?(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,$;for(;($=E.exec(f))!==null;){let b=$[2];if(b==="constructor")continue;let w=!!$[1],_=$[3];if($[4]===":!")continue;let T=c+$.index,k=t.slice(0,T).split(`
195
- `).length,M=f.slice($.index+$[0].length),R=kn(M);if(!R)continue;let C=_r(_);if(!(_.trim()&&C.length===0))try{let I=gi(R);if(!I)continue;let N=C.map(L=>new Function(`return ${L}`)());n.push({funcName:b,args:N,expected:I.pattern,defaults:Object.keys(I.defaults).length>0?I.defaults:void 0,line:k,isAsync:w,className:a,constructorArgs:x})}catch{}}}return n}function bi(e,n,t,r,s={},i=new Map){let o=[];if(e.length===0&&t.length===0)return o;let a=r.match(/^import\s+.*?from\s+['"]([^'"]+)['"];?\s*$/gm)||[],c=a.length>0&&a.some(w=>{let _=w.match(/from\s+['"]([^'"]+)['"]/);return _&&!(_[1]in s)}),l=jn(r),u=Wa(s),f=n.map(w=>w.body).join(`
196
- `),p="const { Is, IsNot, Eq, NotEq, TypeOf } = globalThis.__tjs ?? {};",m=e.map((w,_)=>{let S=i.size>0?ht(w.body,i):w.body;return`
197
- // Test ${_}: ${w.description}
192
+ `.repeat(r)});return t=t.replace(/\/\/[^\n]*/g,""),t}function jn(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 bi(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 Va(e){if(Object.keys(e).length===0)return"";let t=[];for(let[n,r]of Object.entries(e)){let s=jn(r);t.push(`// Resolved import: ${n}`),t.push(s)}return t.join(`
193
+ `)}function hi(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 f="",p=0;for(;u<n.length;){let m=n[u];if(m==="{"||m==="["||m==="(")p++;else if(m==="}"||m==="]"||m===")"){if(p===0)break;p--}else if(m===","&&p===0)break;f+=m,u++}try{t[l[1]]=new Function(`return ${f.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 xi(e){let t=[],n=Ja(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],f=n.slice(0,s.index).split(`
194
+ `).length;if(u===":!")continue;let p=n.slice(s.index+s[0].length),m=kn(p);if(!m)continue;let d=kr(l);if(!(l.trim()&&d.length===0))try{let h=hi(m);if(!h)continue;let x=d.map(_=>new Function(`return ${_}`)());t.push({funcName:c,args:x,expected:h.pattern,defaults:Object.keys(h.defaults).length>0?h.defaults:void 0,line:f,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 b=c;b<n.length;b++)if(n[b]==="{")l++;else if(n[b]==="}"&&(l--,l===0)){u=b;break}let f=n.slice(c,u),m=/constructor\s*\(([^)]*)\)/.exec(f);if(!m)continue;let d=m[1],h=kr(d);if(d.trim()&&h.length===0)continue;let x;try{x=h.map(b=>new Function(`return ${b}`)())}catch{continue}let _=/(async\s+)?(\w+)\s*\(([^)]*)\)\s*(:[?!]?)\s*/g,E;for(;(E=_.exec(f))!==null;){let b=E[2];if(b==="constructor")continue;let w=!!E[1],T=E[3];if(E[4]===":!")continue;let $=c+E.index,j=n.slice(0,$).split(`
195
+ `).length,k=f.slice(E.index+E[0].length),R=kn(k);if(!R)continue;let C=kr(T);if(!(T.trim()&&C.length===0))try{let I=hi(R);if(!I)continue;let N=C.map(U=>new Function(`return ${U}`)());t.push({funcName:b,args:N,expected:I.pattern,defaults:Object.keys(I.defaults).length>0?I.defaults:void 0,line:j,isAsync:w,className:a,constructorArgs:x})}catch{}}}return t}function wi(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(w=>{let T=w.match(/from\s+['"]([^'"]+)['"]/);return T&&!(T[1]in s)}),l=jn(r),u=Va(s),f=t.map(w=>w.body).join(`
196
+ `),p="const { Is, IsNot, Eq, NotEq, TypeOf } = globalThis.__tjs ?? {};",m=e.map((w,T)=>{let S=i.size>0?ht(w.body,i):w.body;return`
197
+ // Test ${T}: ${w.description}
198
198
  try {
199
199
  ${p}
200
200
  ${S}
201
- __testResults.push({ idx: ${_}, passed: true });
201
+ __testResults.push({ idx: ${T}, passed: true });
202
202
  } catch (e) {
203
- __testResults.push({ idx: ${_}, passed: false, isRef: e instanceof ReferenceError, error: e.message || String(e) });
203
+ __testResults.push({ idx: ${T}, passed: false, isRef: e instanceof ReferenceError, error: e.message || String(e) });
204
204
  }
205
205
  `}).join(`
206
- `),d=t.filter(w=>!w.isAsync),h=t.filter(w=>w.isAsync),x=d.map((w,_)=>{let S=w.className?`${w.className}.${w.funcName}`:w.funcName,T=w.className?`new ${w.className}(${(w.constructorArgs||[]).map(k=>JSON.stringify(k)).join(", ")}).${w.funcName}(${w.args.map(k=>JSON.stringify(k)).join(", ")})`:`${w.funcName}(${w.args.map(k=>JSON.stringify(k)).join(", ")})`;return`
207
- // Signature test ${_}: ${S}
206
+ `),d=n.filter(w=>!w.isAsync),h=n.filter(w=>w.isAsync),x=d.map((w,T)=>{let S=w.className?`${w.className}.${w.funcName}`:w.funcName,$=w.className?`new ${w.className}(${(w.constructorArgs||[]).map(j=>JSON.stringify(j)).join(", ")}).${w.funcName}(${w.args.map(j=>JSON.stringify(j)).join(", ")})`:`${w.funcName}(${w.args.map(j=>JSON.stringify(j)).join(", ")})`;return`
207
+ // Signature test ${T}: ${S}
208
208
  try {
209
- let __actual = ${T};
209
+ let __actual = ${$};
210
210
  const __expected = ${JSON.stringify(w.expected)};${w.defaults?`
211
211
  const __defaults = ${JSON.stringify(w.defaults)};
212
212
  if (typeof __actual === 'object' && __actual !== null) __actual = Object.assign({}, __defaults, __actual);`:""}
213
213
  if (__deepEqual(__actual, __expected)) {
214
- __sigTestResults.push({ idx: ${_}, passed: true });
214
+ __sigTestResults.push({ idx: ${T}, passed: true });
215
215
  } else {
216
- __sigTestResults.push({ idx: ${_}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${S}\\', got ' + __format(__actual) });
216
+ __sigTestResults.push({ idx: ${T}, passed: false, error: 'Expected ' + __format(__expected) + ' at \\'${S}\\', got ' + __format(__actual) });
217
217
  }
218
218
  } catch (e) {
219
219
  // The function threw on its example inputs \u2014 the example couldn't be
220
220
  // *evaluated* (e.g. it calls an atom that doesn't exist at build time).
221
221
  // That's inconclusive, not a mismatch. Never block transpilation on it.
222
- __sigTestResults.push({ idx: ${_}, passed: false, threw: true, error: e.message || String(e) });
222
+ __sigTestResults.push({ idx: ${T}, passed: false, threw: true, error: e.message || String(e) });
223
223
  }
224
224
  `}).join(`
225
- `);Sr();let b=`
225
+ `);$r();let b=`
226
226
 
227
227
  const __saved_tjs = globalThis.__tjs;
228
228
 
@@ -306,15 +306,17 @@ ${i}}`}return String(e)}function qa(e){let n=e.replace(/\/\*[\s\S]*?\*\//g,t=>{l
306
306
  globalThis.__tjs = __saved_tjs;
307
307
  }
308
308
  return { testResults: __testResults, sigTestResults: __sigTestResults };
309
- `;try{let w=new Function("__deepEqual","__format","__typeMatches",b),{testResults:_,sigTestResults:S}=w(Tr,vt,Er);for(let T of _){let k=e[T.idx],M=!T.passed&&(T.isRef||c&&T.error&&/is not defined$/.test(T.error));o.push({description:k.description,passed:T.passed,inconclusive:M||void 0,error:T.error,line:k.line})}for(let T of S){let k=d[T.idx],M=!T.passed&&(T.threw||c&&T.error&&/is not defined$/.test(T.error)),R=k.className?`${k.className}.${k.funcName}`:k.funcName;o.push({description:`${R} signature example`,passed:T.passed,inconclusive:M||void 0,error:T.error,isSignatureTest:!0,line:k.line})}}catch(w){let _=`Module could not be executed for testing: ${w.message}`;for(let S of e)o.push({description:S.description,passed:!1,inconclusive:!0,error:_});for(let S of d){let T=S.className?`${S.className}.${S.funcName}`:S.funcName;o.push({description:`${T} signature example`,passed:!1,inconclusive:!0,error:_,isSignatureTest:!0})}}for(let w of h){let _=w.className?`${w.className}.${w.funcName}`:w.funcName;o.push({description:`${_} signature example`,passed:!0,isSignatureTest:!0,line:w.line})}return o}function kn(e){let n="",t=0,r=!1;for(let i=0;i<e.length;i++){let o=e[i];if(o==="{"||o==="["||o==="("){if(o==="{"&&t===0&&r)break;t++,n+=o,r=!0}else o==="}"||o==="]"||o===")"?(t--,n+=o):/\s/.test(o)?n+=o:(n+=o,r=!0)}return n.trim()||null}function _r(e){if(!e.trim())return[];let n=[],t=Ja(e);for(let r of t){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)n.push(JSON.stringify(c))}catch{}continue}if(s.startsWith("..."))continue;let o=s.match(/(?:\(\s*[?!]\s*)?(\w+)\s*[:=]\s*(.+?)(?:\))?$/);if(o)n.push(o[2].trim());else return[]}return n}function Ja(e){let n=[],t="",r=0;for(let s of e){if(s==="("||s==="["||s==="{")r++;else if(s===")"||s==="]"||s==="}")r--;else if(s===","&&r===0){n.push(t.trim()),t="";continue}t+=s}return t.trim()&&n.push(t.trim()),n}import*as wi from"acorn";var xe={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},Mt={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},Va=Object.fromEntries(Object.entries(g).map(([e,n])=>[n,e.replace(/_/g,".")])),Ct=253,ne={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},za=Object.fromEntries(Object.entries(ne).map(([e,n])=>[n,e.replace(/_/g,".")]));function $r(e){return[Ct,...O(e)]}function xi(e,n,t){return[Ct,...O(e),...O(n),...O(t)]}function O(e){let n=[];do{let t=e&127;e>>>=7,e!==0&&(t|=128),n.push(t)}while(e!==0);return n}function Rt(e){let n=[],t=!0;for(;t;){let r=e&127;e>>=7,e===0&&(r&64)===0||e===-1&&(r&64)!==0?t=!1:r|=128,n.push(r)}return n}function kr(e){let n=new ArrayBuffer(4);return new Float32Array(n)[0]=e,[...new Uint8Array(n)]}function fe(e){let n=new ArrayBuffer(8);return new Float64Array(n)[0]=e,[...new Uint8Array(n)]}function jr(e){let n=new TextEncoder().encode(e);return[...O(n.length),...n]}function At(e,n){return[e,...O(n.length),...n]}function Pe(e,n){let t=0,r=0,s=n;for(;s<e.length;){let i=e[s];if(t|=(i&127)<<r,s++,(i&128)===0)break;r+=7}return[t,s-n]}function Ga(e,n){let t=new ArrayBuffer(8),r=new Uint8Array(t);for(let s=0;s<8;s++)r[s]=e[n+s];return new Float64Array(t)[0]}function Za(e,n,t){let r=[],s=1,i=()=>" ".repeat(s),o=n.map((l,u)=>`(param $${l.name} ${l.type})`).join(" "),a=t.map((l,u)=>`(local $L${n.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=Va[l]||`unknown(0x${l.toString(16)})`;if(c++,l===g.local_get||l===g.local_set||l===g.local_tee){let[f,p]=Pe(e,c);c+=p;let m=f<n.length?`$${n[f].name}`:`$L${f}`;r.push(`${i()}${u} ${m}`)}else if(l===g.br||l===g.br_if){let[f,p]=Pe(e,c);c+=p,r.push(`${i()}${u} ${f}`)}else if(l===g.i32_const){let[f,p]=Pe(e,c);c+=p,r.push(`${i()}i32.const ${f}`)}else if(l===g.f32_const){let f=new ArrayBuffer(4),p=new Uint8Array(f);for(let d=0;d<4;d++)p[d]=e[c+d];let m=new Float32Array(f)[0];c+=4,r.push(`${i()}f32.const ${m}`)}else if(l===g.f64_const){let f=Ga(e,c);c+=8,r.push(`${i()}f64.const ${f}`)}else if(l===g.block||l===g.loop){let f=e[c];c++,r.push(`${i()}${u}${f===xe.void?"":` (result ${f===xe.f64?"f64":"i32"})`}`),s++}else if(l===g.if){let f=e[c];c++,r.push(`${i()}if${f===xe.void?"":` (result ${f===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[f,p]=Pe(e,c);c+=p;let[m,d]=Pe(e,c);c+=d,r.push(`${i()}${u}${m?` offset=${m}`:""}`)}else if(l===Ct){let[f,p]=Pe(e,c);c+=p;let m=za[f]||`simd.unknown(0x${f.toString(16)})`;if(f===ne.v128_load||f===ne.v128_store){let[d,h]=Pe(e,c);c+=h;let[x,E]=Pe(e,c);c+=E,r.push(`${i()}${m}${x?` offset=${x}`:""}`)}else if(f===ne.v128_const){let d=e.slice(c,c+16);c+=16,r.push(`${i()}v128.const ${d.map(h=>"0x"+h.toString(16).padStart(2,"0")).join(" ")}`)}else if(f===ne.f32x4_extract_lane||f===ne.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(`
310
- `)}var Mn={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 Ha(e,n=new Map){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,moduleFunctions:n};return e.forEach((r,s)=>{t.locals.set(r.name,{index:s,type:r.type})}),t}function vn(e,n,t){if(e.locals.has(n))return e.errors.push(`Duplicate local declaration: ${n}`),e.locals.get(n).index;let r=e.nextLocalIndex++;return e.locals.set(n,{index:r,type:t}),e.localTypes.push(t),r}function Ge(e,n){return e.locals.get(n)}function st(e,n){switch(e.type){case"ExpressionStatement":{let t=e.expression;return[...q(t,n),g.drop]}case"ReturnStatement":{let t=e;if(n.hasReturn=!0,!t.argument)return[g.return];let r=q(t.argument,n),s=Z(t.argument,n);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 t=e,r=[];for(let s of t.declarations){if(s.id.type!=="Identifier"){n.errors.push("Destructuring not supported in WASM blocks");continue}let i=s.id.name,o="f64";s.init&&(o=Z(s.init,n));let a=vn(n,i,o);s.init&&(r.push(...q(s.init,n)),r.push(g.local_set,...O(a)))}return r}case"ForStatement":return Ya(e,n);case"IfStatement":return Ka(e,n);case"BlockStatement":{let t=e,r=[];for(let s of t.body)r.push(...st(s,n));return r}default:return n.errors.push(`Unsupported statement type: ${e.type}`),[]}}function Ya(e,n){let t=[];return e.init&&(e.init.type==="VariableDeclaration"?t.push(...st(e.init,n)):t.push(...q(e.init,n))),t.push(g.block,xe.void),t.push(g.loop,xe.void),e.test&&(t.push(...q(e.test,n)),t.push(g.i32_eqz),t.push(g.br_if,1)),n.loopDepth++,e.body&&t.push(...st(e.body,n)),n.loopDepth--,e.update&&(t.push(...q(e.update,n)),t.push(g.drop)),t.push(g.br,0),t.push(g.end),t.push(g.end),t}function Ka(e,n){let t=[];return t.push(...q(e.test,n)),t.push(g.if,xe.void),t.push(...st(e.consequent,n)),e.alternate&&(t.push(g.else),t.push(...st(e.alternate,n))),t.push(g.end),t}function Z(e,n){switch(e.type){case"Literal":{let t=e;return typeof t.value=="number"?t.raw&&(t.raw.includes(".")||t.raw.includes("e"))?"f64":Number.isInteger(t.value)&&t.value>=-2147483648&&t.value<=2147483647?"i32":"f64":"f64"}case"Identifier":return Ge(n,e.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let t=e;if(["<",">","<=",">=","==","!=","===","!=="].includes(t.operator)||["|","&","^","<<",">>",">>>"].includes(t.operator))return"i32";let r=Z(t.left,n),s=Z(t.right,n);return r==="v128"||s==="v128"?"v128":r==="f64"||s==="f64"?"f64":r==="f32"||s==="f32"?"f32":"i32"}case"UnaryExpression":{let t=e;return t.operator==="!"?"i32":Z(t.argument,n)}case"MemberExpression":{let t=e;if(t.object.type==="Identifier"&&Ge(n,t.object.name)){let s=n.params.find(i=>i.name===t.object.name);if(s?.arrayType){let i=Mn[s.arrayType];if(i)return i.elementType}}return"f64"}case"CallExpression":{let t=e;if(t.callee.type==="MemberExpression"){let r=t.callee;if(r.object.type==="Identifier"&&r.object.name==="Math")return"f64"}if(t.callee.type==="Identifier"){let r=t.callee.name;if(r==="f32x4_extract_lane")return"f32";if(r.startsWith("f32x4_")||r==="v128_load")return"v128";let s=n.moduleFunctions.get(r);if(s)return s.hasReturn?"f64":"i32"}return"f64"}default:return"f64"}}function q(e,n){switch(e.type){case"Literal":{let t=e;if(typeof t.value=="number"){let r=Z(e,n);return r==="i32"?[g.i32_const,...Rt(t.value|0)]:r==="f32"?[g.f32_const,...kr(t.value)]:[g.f64_const,...fe(t.value)]}return n.errors.push(`Unsupported literal type: ${typeof t.value}`),[g.f64_const,...fe(0)]}case"Identifier":{let t=e.name,r=Ge(n,t);return r?[g.local_get,...O(r.index)]:(n.errors.push(`Unknown identifier: ${t}`),[g.f64_const,...fe(0)])}case"BinaryExpression":return Xa(e,n);case"UnaryExpression":return Qa(e,n);case"AssignmentExpression":return ec(e,n);case"UpdateExpression":return tc(e,n);case"MemberExpression":return nc(e,n);case"CallExpression":return sc(e,n);case"SequenceExpression":{let t=e,r=[];for(let s=0;s<t.expressions.length;s++)r.push(...q(t.expressions[s],n)),s<t.expressions.length-1&&r.push(g.drop);return r}default:return n.errors.push(`Unsupported expression type: ${e.type}`),[g.f64_const,...fe(0)]}}function Xa(e,n){let t=q(e.left,n),r=q(e.right,n),s=Z(e,n),i=Z(e.left,n),o=Z(e.right,n),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=t,u=r;c==="f64"?(i==="i32"?l=[...t,g.f64_convert_i32_s]:i==="f32"&&(l=[...t,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=[...t,g.f32_convert_i32_s]),o==="i32"&&(u=[...r,g.f32_convert_i32_s]));let p={"+":{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(!p)return n.errors.push(`Unsupported operator: ${e.operator}`),[g.f64_const,...fe(0)];let m=p[c]??p.f64??p.i32;return m===void 0?(n.errors.push(`Operator ${e.operator} not supported for type ${c}`),[g.f64_const,...fe(0)]):[...l,...u,m]}function Qa(e,n){let t=q(e.argument,n),r=Z(e.argument,n);switch(e.operator){case"-":return r==="i32"?[g.i32_const,0,...t,g.i32_sub]:r==="f32"?[...t,g.f32_neg]:[...t,g.f64_neg];case"!":return[...t,g.i32_eqz];case"~":return[...t,g.i32_const,...Rt(-1),g.i32_xor];default:return n.errors.push(`Unsupported unary operator: ${e.operator}`),t}}function ec(e,n){if(e.left.type==="MemberExpression")return rc(e.left,e.right,e.operator,n);if(e.left.type!=="Identifier")return n.errors.push("Assignment target must be identifier or array element"),[];let t=e.left.name,r=Ge(n,t);if(!r)return n.errors.push(`Unknown variable: ${t}`),[];let s=[];if(e.operator==="="){s.push(...q(e.right,n));let i=Z(e.right,n);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=Z(e.right,n),o=r.type;i==="f64"||r.type==="f64"?o="f64":(i==="f32"||r.type==="f32")&&(o="f32"),s.push(g.local_get,...O(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(...q(e.right,n)),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 n.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,...O(r.index)),s}function tc(e,n){if(e.argument.type!=="Identifier")return n.errors.push("Update expression argument must be identifier"),[];let t=e.argument.name,r=Ge(n,t);if(!r)return n.errors.push(`Unknown variable: ${t}`),[];let s=[],i=r.type==="i32";return e.prefix?(s.push(g.local_get,...O(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...fe(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_tee,...O(r.index))):(s.push(g.local_get,...O(r.index)),s.push(g.local_get,...O(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...fe(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_set,...O(r.index))),s}function nc(e,n){if(e.object.type!=="Identifier")return n.errors.push("Array access requires identifier"),[];let t=e.object.name,r=n.params.find(l=>l.name===t);if(!r?.isArray||!r.arrayType)return n.errors.push(`${t} is not a typed array parameter`),[];let s=Mn[r.arrayType];if(!s)return n.errors.push(`Unknown array type: ${r.arrayType}`),[];n.needsMemory=!0;let i=[],o=Ge(n,t);if(!o)return n.errors.push(`Unknown array: ${t}`),[];if(i.push(g.local_get,...O(o.index)),!e.computed||!e.property)return n.errors.push("Array access requires computed index"),[];let a=q(e.property,n),c=Z(e.property,n);return i.push(...a),c==="f64"&&i.push(g.i32_trunc_f64_s),s.bytesPerElement>1&&(i.push(g.i32_const,...Rt(s.bytesPerElement)),i.push(g.i32_mul)),i.push(g.i32_add),i.push(s.loadOp,0,0),i}function rc(e,n,t,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=Mn[i.arrayType];if(!o)return r.errors.push(`Unknown array type: ${i.arrayType}`),[];r.needsMemory=!0;let a=[],c=Ge(r,s);if(!c)return[];if(!e.computed||!e.property)return r.errors.push("Array store requires computed index"),[];let l=q(e.property,r),u=Z(e.property,r),f=()=>{let d=[];return d.push(g.local_get,...O(c.index)),d.push(...l),u==="f64"&&d.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(d.push(g.i32_const,...Rt(o.bytesPerElement)),d.push(g.i32_mul)),d.push(g.i32_add),d};if(t==="=")a.push(...q(n,r));else{let d=vn(r,`__addr_${r.nextLocalIndex}`,"i32");a.push(...f()),a.push(g.local_tee,...O(d)),a.push(o.loadOp,0,0),a.push(...q(n,r));let h=Z(n,r);o.elementType==="f32"&&h==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&h==="f32"?a.push(g.f64_promote_f32):o.elementType==="f32"&&h==="i32"?a.push(g.f32_convert_i32_s):o.elementType==="f64"&&h==="i32"?a.push(g.f64_convert_i32_s):o.elementType==="i32"&&h==="f64"?a.push(g.i32_trunc_f64_s):o.elementType==="i32"&&h==="f32"&&a.push(g.i32_trunc_f32_s);let x=t.slice(0,-1),E={"+":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(E[x]??g.f64_add);let $=vn(r,`__val_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...O($)),a.push(g.local_get,...O(d)),a.push(g.local_get,...O($)),a.push(o.storeOp,0,0),a.push(g.local_get,...O($)),a}let p=Z(n,r);o.elementType==="f32"&&p==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&p==="f32"?a.push(g.f64_promote_f32):o.elementType==="i32"&&p==="f64"&&a.push(g.i32_trunc_f64_s);let m=vn(r,`__tmp_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...O(m)),a.push(g.local_get,...O(c.index)),a.push(...l),u==="f64"&&a.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(a.push(g.i32_const,...Rt(o.bytesPerElement)),a.push(g.i32_mul)),a.push(g.i32_add),a.push(g.local_get,...O(m)),a.push(o.storeOp,0,0),a.push(g.local_get,...O(m)),a}function sc(e,n){if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"&&t.object.name==="Math"&&t.property.type==="Identifier"){let r=t.property.name;return cc(r,e.arguments,n)}}if(e.callee.type==="Identifier"){let t=e.callee.name;if(t.startsWith("f32x4_")||t.startsWith("v128_"))return ac(t,e.arguments,n);let r=n.moduleFunctions.get(t);if(r)return ic(r,t,e.arguments,n)}return n.errors.push(`Unsupported function call: ${e.callee.type}`),[g.f64_const,...fe(0)]}function ic(e,n,t,r){if(t.length!==e.params.length)return r.errors.push(`wasm function ${n} expects ${e.params.length} arguments, got ${t.length}`),[g.f64_const,...fe(0)];let s=[];for(let i=0;i<t.length;i++){let o=t[i],a=e.params[i].type,c=Z(o,r);if(s.push(...q(o,r)),c!==a){let l=oc(c,a);l===void 0?r.errors.push(`wasm function ${n} param ${i} expects ${a}, got ${c} (no conversion available)`):l!==null&&s.push(l)}}return s.push(g.call,...O(e.index)),e.hasReturn||s.push(g.i32_const,0),s}function oc(e,n){if(e===n)return null;if(!(e==="v128"||n==="v128")&&!(e==="i64"||n==="i64"))switch(`${e}->${n}`){case"f64->i32":return g.i32_trunc_f64_s;case"f32->i32":return g.i32_trunc_f32_s;case"i32->f64":return g.f64_convert_i32_s;case"i32->f32":return g.f32_convert_i32_s;case"f32->f64":return g.f64_promote_f32;case"f64->f32":return g.f32_demote_f64;default:return}}function ac(e,n,t){t.needsMemory=!0;let r=[];switch(e){case"v128_load":case"f32x4_load":{r.push(...q(n[0],t)),Z(n[0],t)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...q(n[1],t));let i=Z(n[1],t);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(...xi(ne.v128_load,2,0)),r}case"v128_store":case"f32x4_store":{r.push(...q(n[0],t)),Z(n[0],t)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...q(n[1],t));let i=Z(n[1],t);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(...q(n[2],t)),r.push(...xi(ne.v128_store,2,0)),r.push(g.i32_const,0),r}case"f32x4_splat":{r.push(...q(n[0],t));let s=Z(n[0],t);return s==="i32"?r.push(g.f32_convert_i32_s):s==="f64"&&r.push(g.f32_demote_f64),r.push(...$r(ne.f32x4_splat)),r}case"f32x4_extract_lane":{r.push(...q(n[0],t));let s=n[1].value;return!Number.isInteger(s)||s<0||s>3?(t.errors.push(`f32x4_extract_lane: lane must be 0-3, got ${s}`),[g.f32_const,...kr(0)]):(r.push(Ct,...O(ne.f32x4_extract_lane),s),r)}case"f32x4_replace_lane":{r.push(...q(n[0],t));let s=n[1].value;if(!Number.isInteger(s)||s<0||s>3)return t.errors.push(`f32x4_replace_lane: lane must be 0-3, got ${s}`),[g.f32_const,...kr(0)];r.push(...q(n[2],t));let i=Z(n[2],t);return i==="i32"?r.push(g.f32_convert_i32_s):i==="f64"&&r.push(g.f32_demote_f64),r.push(Ct,...O(ne.f32x4_replace_lane),s),r}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":{r.push(...q(n[0],t)),r.push(...q(n[1],t));let s={f32x4_add:ne.f32x4_add,f32x4_sub:ne.f32x4_sub,f32x4_mul:ne.f32x4_mul,f32x4_div:ne.f32x4_div};return r.push(...$r(s[e])),r}case"f32x4_neg":case"f32x4_sqrt":{r.push(...q(n[0],t));let s={f32x4_neg:ne.f32x4_neg,f32x4_sqrt:ne.f32x4_sqrt};return r.push(...$r(s[e])),r}default:return t.errors.push(`Unknown SIMD intrinsic: ${e}`),[g.f64_const,...fe(0)]}}function cc(e,n,t){let r=[];for(let a of n){r.push(...q(a,t));let c=Z(a,t);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)?(t.needsMathImports.add(e),t.errors.push(`Math.${e} requires JS import (not yet implemented)`),[g.f64_const,...fe(0)]):(t.errors.push(`Unknown Math method: ${e}`),[g.f64_const,...fe(0)])}function vr(e){let n=e.split(":").map(i=>i.trim()),t=n[0];if(n.length===1)return{name:t,type:"f64"};let r=n[1];return Mn[r]?{name:t,type:"i32",isArray:!0,arrayType:r}:{name:t,type:{i32:"i32",i64:"i64",f32:"f32",f64:"f64",number:"f64",int:"i32"}[r]??"f64"}}function lc(e,n){let t=e.map(s=>xe[s.type]),r=n?[1,xe.f64]:[0];return[96,...O(e.length),...t,...r]}function uc(e,n){let t=[];if(n.length>0){let i=n[0],o=1;for(let a=1;a<n.length;a++)n[a]===i?o++:(t.push([...O(o),xe[i]]),i=n[a],o=1);t.push([...O(o),xe[i]])}let s=[...[...O(t.length),...t.flat()],...e,g.end];return[...O(s.length),...s]}function fc(){return At(Mt.import,[1,...jr("env"),...jr("memory"),2,0,1])}function Si(e,n){if(e.length!==n.length)throw new Error("functions and exportNames length mismatch");let t=[0,97,115,109,1,0,0,0],r=e.map(p=>lc(p.params,p.hasReturn)),s=At(Mt.type,[...O(r.length),...r.flat()]),o=e.some(p=>p.needsMemory)?fc():[],a=At(Mt.function,[...O(e.length),...e.map((p,m)=>O(m)).flat()]),c=At(Mt.export,[...O(e.length),...n.map((p,m)=>[...jr(p),0,...O(m)]).flat()]),l=e.map(p=>uc(p.bodyCode,p.localTypes)),u=At(Mt.code,[...O(l.length),...l.flat()]),f=[...t,...s];return o.length>0&&f.push(...o),f.push(...a,...c,...u),f}function pc(e,n,t,r,s){return Si([{params:e,bodyCode:n,localTypes:t,needsMemory:r,hasReturn:s}],["compute"])}function _i(e,n=new Map){try{let t=e.captures.map(vr),r;try{let c=`function __wasm__(${t.map(l=>l.name).join(", ")}) { ${e.body} }`;r=wi.parse(c,{ecmaVersion:2022})}catch(c){return{success:!1,warnings:[],error:`Parse error: ${c.message}`}}let i=r.body[0].body.body,o=Ha(t,n),a=[];for(let c of i)a.push(...st(c,o));return o.errors.length>0?{success:!1,warnings:o.warnings,error:o.errors.join("; ")}:{success:!0,fn:{params:t,bodyCode:a,localTypes:o.localTypes,needsMemory:o.needsMemory,hasReturn:o.hasReturn},wat:Za(a,t,o.localTypes),warnings:o.warnings}}catch(t){return{success:!1,warnings:[],error:t.message}}}function Ti(e){let n=_i(e);if(!n.success||!n.fn)return{bytes:new Uint8Array,warnings:n.warnings,success:!1,error:n.error};let t=pc(n.fn.params,n.fn.bodyCode,n.fn.localTypes,n.fn.needsMemory,n.fn.hasReturn);return{bytes:new Uint8Array(t),warnings:n.warnings,success:!0,needsMemory:n.fn.needsMemory,wat:n.wat}}function Ei(e){let n=new Map,t=[];for(let c=0;c<e.length;c++){let l=e[c],u=l.captures.map(vr),f=l.returnType!==void 0;t.push({params:u,hasReturn:f}),l.name&&n.set(l.name,{index:c,params:u,hasReturn:f})}let r=[],s=[],i=[],o=[];for(let c=0;c<e.length;c++){let l=e[c],u=_i(l,n);if(o.push(...u.warnings),!u.success||!u.fn){r.push({id:l.id,success:!1,error:u.error}),s.push(mc(t[c])),i.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:!1,wat:`(failed: ${u.error??"unknown error"})`});continue}s.push(u.fn),i.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:u.fn.needsMemory,wat:u.wat??""}),r.push({id:l.id,success:!0,exportIndex:c})}if(s.length===0)return{bytes:new Uint8Array,results:r,exports:[],needsMemory:!1,warnings:o};let a=Si(s,i.map(c=>c.exportName));return{bytes:new Uint8Array(a),results:r,exports:i,needsMemory:i.some(c=>c.needsMemory),warnings:o}}function mc(e){let n=e.hasReturn?[g.f64_const,...fe(0)]:[];return{params:e.params,bodyCode:n,localTypes:[],needsMemory:!1,hasReturn:e.hasReturn}}async function $i(e,n){let t={};n&&(t.env={memory:n});let r=await WebAssembly.compile(e);return WebAssembly.instantiate(r,t)}async function dc(e){let n=Ti(e);if(!n.success)return{fn:()=>0,success:!1,error:n.error};try{let t;n.needsMemory&&(t=new WebAssembly.Memory({initial:256}));let s=(await $i(n.bytes,t)).exports.compute,i=e.captures.map(vr);return i.some(c=>c.isArray)?{fn:(...c)=>{if(!t)throw new Error("Memory not initialized");let l=new Uint8Array(t.buffer),u=0,f=[];for(let m=0;m<i.length;m++){let d=i[m],h=c[m];if(d.isArray&&h instanceof Object&&"buffer"in h){let x=h,E=new Uint8Array(x.buffer,x.byteOffset,x.byteLength);l.set(E,u),f.push(u),u+=E.length,u=u+15&-16}else f.push(h)}let p=s(...f);u=0;for(let m=0;m<i.length;m++){let d=i[m],h=c[m];if(d.isArray&&h instanceof Object&&"buffer"in h){let x=h,E=new Uint8Array(x.buffer,x.byteOffset,x.byteLength);E.set(l.slice(u,u+E.length)),u+=E.length,u=u+15&-16}}return p},memory:t,success:!0}:{fn:s,memory:t,success:!0}}catch(t){return{fn:()=>0,success:!1,error:t.message}}}async function ki(e){let n=await dc(e);return n.success?(globalThis[e.id]=n.fn,!0):(console.warn(`WASM compilation failed for ${e.id}:`,n.error),!1)}async function gc(e){let n=0,t=0,r=[];for(let s of e)await ki(s)?n++:(t++,r.push(`Failed to compile ${s.id}`));return{compiled:n,failed:t,errors:r}}function ji(e){let n=Ei(e),t=new Map(n.exports.map(u=>[u.id,u])),r=n.results.map(u=>{if(!u.success)return{id:u.id,success:!1,error:u.error};let f=t.get(u.id);return{id:u.id,success:!0,byteLength:n.bytes.length,_exportName:f.exportName}});if(n.exports.length===0)return{code:"",results:r};let s=n.exports.map(u=>{let f=u.wat.split(`
309
+ `;try{let w=new Function("__deepEqual","__format","__typeMatches",b),{testResults:T,sigTestResults:S}=w(jr,vt,vr);for(let $ of T){let j=e[$.idx],k=!$.passed&&($.isRef||c&&$.error&&/is not defined$/.test($.error));o.push({description:j.description,passed:$.passed,inconclusive:k||void 0,error:$.error,line:j.line})}for(let $ of S){let j=d[$.idx],k=!$.passed&&($.threw||c&&$.error&&/is not defined$/.test($.error)),R=j.className?`${j.className}.${j.funcName}`:j.funcName;o.push({description:`${R} signature example`,passed:$.passed,inconclusive:k||void 0,error:$.error,isSignatureTest:!0,line:j.line})}}catch(w){let T=`Module could not be executed for testing: ${w.message}`;for(let S of e)o.push({description:S.description,passed:!1,inconclusive:!0,error:T});for(let S of d){let $=S.className?`${S.className}.${S.funcName}`:S.funcName;o.push({description:`${$} signature example`,passed:!1,inconclusive:!0,error:T,isSignatureTest:!0})}}for(let w of h){let T=w.className?`${w.className}.${w.funcName}`:w.funcName;o.push({description:`${T} signature example`,passed:!0,isSignatureTest:!0,line:w.line})}return o}function kn(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 kr(e){if(!e.trim())return[];let t=[],n=za(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 za(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 _i from"acorn";var xe={i32:127,i64:126,f32:125,f64:124,v128:123,funcref:112,externref:111,void:64},Mt={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},Ga=Object.fromEntries(Object.entries(g).map(([e,t])=>[t,e.replace(/_/g,".")])),Ct=253,Z={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,f32x4_min:232,f32x4_max:233,f32x4_eq:65,f32x4_ne:66,f32x4_lt:67,f32x4_gt:68,f32x4_le:69,f32x4_ge:70,v128_bitselect:82},Za=Object.fromEntries(Object.entries(Z).map(([e,t])=>[t,e.replace(/_/g,".")]));function vn(e){return[Ct,...O(e)]}function Si(e,t,n){return[Ct,...O(e),...O(t),...O(n)]}function O(e){let t=[];do{let n=e&127;e>>>=7,e!==0&&(n|=128),t.push(n)}while(e!==0);return t}function Rt(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 Mr(e){let t=new ArrayBuffer(4);return new Float32Array(t)[0]=e,[...new Uint8Array(t)]}function le(e){let t=new ArrayBuffer(8);return new Float64Array(t)[0]=e,[...new Uint8Array(t)]}function Ar(e){let t=new TextEncoder().encode(e);return[...O(t.length),...t]}function At(e,t){return[e,...O(t.length),...t]}function Pe(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 Ha(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 Ya(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=Ga[l]||`unknown(0x${l.toString(16)})`;if(c++,l===g.local_get||l===g.local_set||l===g.local_tee){let[f,p]=Pe(e,c);c+=p;let m=f<t.length?`$${t[f].name}`:`$L${f}`;r.push(`${i()}${u} ${m}`)}else if(l===g.br||l===g.br_if){let[f,p]=Pe(e,c);c+=p,r.push(`${i()}${u} ${f}`)}else if(l===g.i32_const){let[f,p]=Pe(e,c);c+=p,r.push(`${i()}i32.const ${f}`)}else if(l===g.f32_const){let f=new ArrayBuffer(4),p=new Uint8Array(f);for(let d=0;d<4;d++)p[d]=e[c+d];let m=new Float32Array(f)[0];c+=4,r.push(`${i()}f32.const ${m}`)}else if(l===g.f64_const){let f=Ha(e,c);c+=8,r.push(`${i()}f64.const ${f}`)}else if(l===g.block||l===g.loop){let f=e[c];c++,r.push(`${i()}${u}${f===xe.void?"":` (result ${f===xe.f64?"f64":"i32"})`}`),s++}else if(l===g.if){let f=e[c];c++,r.push(`${i()}if${f===xe.void?"":` (result ${f===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[f,p]=Pe(e,c);c+=p;let[m,d]=Pe(e,c);c+=d,r.push(`${i()}${u}${m?` offset=${m}`:""}`)}else if(l===Ct){let[f,p]=Pe(e,c);c+=p;let m=Za[f]||`simd.unknown(0x${f.toString(16)})`;if(f===Z.v128_load||f===Z.v128_store){let[d,h]=Pe(e,c);c+=h;let[x,_]=Pe(e,c);c+=_,r.push(`${i()}${m}${x?` offset=${x}`:""}`)}else if(f===Z.v128_const){let d=e.slice(c,c+16);c+=16,r.push(`${i()}v128.const ${d.map(h=>"0x"+h.toString(16).padStart(2,"0")).join(" ")}`)}else if(f===Z.f32x4_extract_lane||f===Z.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(`
310
+ `)}var An={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 Ka(e,t=new Map){let n={params:e,locals:new Map,nextLocalIndex:e.length,localTypes:[],warnings:[],errors:[],loopDepth:0,needsMathImports:new Set,needsMemory:!1,hasReturn:!1,wat:[],watIndent:1,moduleFunctions:t};return e.forEach((r,s)=>{n.locals.set(r.name,{index:s,type:r.type})}),n}function Mn(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 Ge(e,t){return e.locals.get(t)}function st(e,t){switch(e.type){case"ExpressionStatement":{let n=e.expression;return[...F(n,t),g.drop]}case"ReturnStatement":{let n=e;if(t.hasReturn=!0,!n.argument)return[g.return];let r=F(n.argument,t),s=H(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=H(s.init,t));let a=Mn(t,i,o);s.init&&(r.push(...F(s.init,t)),r.push(g.local_set,...O(a)))}return r}case"ForStatement":return Xa(e,t);case"IfStatement":return Qa(e,t);case"BlockStatement":{let n=e,r=[];for(let s of n.body)r.push(...st(s,t));return r}default:return t.errors.push(`Unsupported statement type: ${e.type}`),[]}}function Xa(e,t){let n=[];return e.init&&(e.init.type==="VariableDeclaration"?n.push(...st(e.init,t)):n.push(...F(e.init,t))),n.push(g.block,xe.void),n.push(g.loop,xe.void),e.test&&(n.push(...F(e.test,t)),n.push(g.i32_eqz),n.push(g.br_if,1)),t.loopDepth++,e.body&&n.push(...st(e.body,t)),t.loopDepth--,e.update&&(n.push(...F(e.update,t)),n.push(g.drop)),n.push(g.br,0),n.push(g.end),n.push(g.end),n}function Qa(e,t){let n=[];return n.push(...F(e.test,t)),n.push(g.if,xe.void),n.push(...st(e.consequent,t)),e.alternate&&(n.push(g.else),n.push(...st(e.alternate,t))),n.push(g.end),n}function H(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 Ge(t,e.name)?.type??"f64";case"BinaryExpression":case"AssignmentExpression":{let n=e;if(["<",">","<=",">=","==","!=","===","!=="].includes(n.operator)||["|","&","^","<<",">>",">>>"].includes(n.operator))return"i32";let r=H(n.left,t),s=H(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":H(n.argument,t)}case"MemberExpression":{let n=e;if(n.object.type==="Identifier"&&Ge(t,n.object.name)){let s=t.params.find(i=>i.name===n.object.name);if(s?.arrayType){let i=An[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";let s=t.moduleFunctions.get(r);if(s)return s.hasReturn?"f64":"i32"}return"f64"}default:return"f64"}}function F(e,t){switch(e.type){case"Literal":{let n=e;if(typeof n.value=="number"){let r=H(e,t);return r==="i32"?[g.i32_const,...Rt(n.value|0)]:r==="f32"?[g.f32_const,...Mr(n.value)]:[g.f64_const,...le(n.value)]}return t.errors.push(`Unsupported literal type: ${typeof n.value}`),[g.f64_const,...le(0)]}case"Identifier":{let n=e.name,r=Ge(t,n);return r?[g.local_get,...O(r.index)]:(t.errors.push(`Unknown identifier: ${n}`),[g.f64_const,...le(0)])}case"BinaryExpression":return ec(e,t);case"UnaryExpression":return tc(e,t);case"AssignmentExpression":return nc(e,t);case"UpdateExpression":return rc(e,t);case"MemberExpression":return sc(e,t);case"CallExpression":return oc(e,t);case"SequenceExpression":{let n=e,r=[];for(let s=0;s<n.expressions.length;s++)r.push(...F(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,...le(0)]}}function ec(e,t){let n=F(e.left,t),r=F(e.right,t),s=H(e,t),i=H(e.left,t),o=H(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 p={"+":{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(!p)return t.errors.push(`Unsupported operator: ${e.operator}`),[g.f64_const,...le(0)];let m=p[c]??p.f64??p.i32;if(m===void 0)return t.errors.push(`Operator ${e.operator} not supported for type ${c}`),[g.f64_const,...le(0)];if(e.operator==="/"&&c==="i32"){let d="integer division: '/' with two i32 operands truncates (result coerces to f64 only at the next operator). Add `+ 0.0` to an operand to force f64 division.";t.warnings.includes(d)||t.warnings.push(d)}return[...l,...u,m]}function tc(e,t){let n=F(e.argument,t),r=H(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,...Rt(-1),g.i32_xor];default:return t.errors.push(`Unsupported unary operator: ${e.operator}`),n}}function nc(e,t){if(e.left.type==="MemberExpression")return ic(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=Ge(t,n);if(!r)return t.errors.push(`Unknown variable: ${n}`),[];let s=[];if(e.operator==="="){s.push(...F(e.right,t));let i=H(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=H(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,...O(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(...F(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,...O(r.index)),s}function rc(e,t){if(e.argument.type!=="Identifier")return t.errors.push("Update expression argument must be identifier"),[];let n=e.argument.name,r=Ge(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,...O(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...le(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_tee,...O(r.index))):(s.push(g.local_get,...O(r.index)),s.push(g.local_get,...O(r.index)),i?(s.push(g.i32_const,1),s.push(e.operator==="++"?g.i32_add:g.i32_sub)):(s.push(g.f64_const,...le(1)),s.push(e.operator==="++"?g.f64_add:g.f64_sub)),s.push(g.local_set,...O(r.index))),s}function sc(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=An[r.arrayType];if(!s)return t.errors.push(`Unknown array type: ${r.arrayType}`),[];t.needsMemory=!0;let i=[],o=Ge(t,n);if(!o)return t.errors.push(`Unknown array: ${n}`),[];if(i.push(g.local_get,...O(o.index)),!e.computed||!e.property)return t.errors.push("Array access requires computed index"),[];let a=F(e.property,t),c=H(e.property,t);return i.push(...a),c==="f64"&&i.push(g.i32_trunc_f64_s),s.bytesPerElement>1&&(i.push(g.i32_const,...Rt(s.bytesPerElement)),i.push(g.i32_mul)),i.push(g.i32_add),i.push(s.loadOp,0,0),i}function ic(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=An[i.arrayType];if(!o)return r.errors.push(`Unknown array type: ${i.arrayType}`),[];r.needsMemory=!0;let a=[],c=Ge(r,s);if(!c)return[];if(!e.computed||!e.property)return r.errors.push("Array store requires computed index"),[];let l=F(e.property,r),u=H(e.property,r),f=()=>{let d=[];return d.push(g.local_get,...O(c.index)),d.push(...l),u==="f64"&&d.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(d.push(g.i32_const,...Rt(o.bytesPerElement)),d.push(g.i32_mul)),d.push(g.i32_add),d};if(n==="=")a.push(...F(t,r));else{let d=Mn(r,`__addr_${r.nextLocalIndex}`,"i32");a.push(...f()),a.push(g.local_tee,...O(d)),a.push(o.loadOp,0,0),a.push(...F(t,r));let h=H(t,r);o.elementType==="f32"&&h==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&h==="f32"?a.push(g.f64_promote_f32):o.elementType==="f32"&&h==="i32"?a.push(g.f32_convert_i32_s):o.elementType==="f64"&&h==="i32"?a.push(g.f64_convert_i32_s):o.elementType==="i32"&&h==="f64"?a.push(g.i32_trunc_f64_s):o.elementType==="i32"&&h==="f32"&&a.push(g.i32_trunc_f32_s);let x=n.slice(0,-1),_={"+":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(_[x]??g.f64_add);let E=Mn(r,`__val_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...O(E)),a.push(g.local_get,...O(d)),a.push(g.local_get,...O(E)),a.push(o.storeOp,0,0),a.push(g.local_get,...O(E)),a}let p=H(t,r);o.elementType==="f32"&&p==="f64"?a.push(g.f32_demote_f64):o.elementType==="f64"&&p==="f32"?a.push(g.f64_promote_f32):o.elementType==="i32"&&p==="f64"&&a.push(g.i32_trunc_f64_s);let m=Mn(r,`__tmp_${r.nextLocalIndex}`,o.elementType);return a.push(g.local_set,...O(m)),a.push(g.local_get,...O(c.index)),a.push(...l),u==="f64"&&a.push(g.i32_trunc_f64_s),o.bytesPerElement>1&&(a.push(g.i32_const,...Rt(o.bytesPerElement)),a.push(g.i32_mul)),a.push(g.i32_add),a.push(g.local_get,...O(m)),a.push(o.storeOp,0,0),a.push(g.local_get,...O(m)),a}function oc(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 uc(r,e.arguments,t)}}if(e.callee.type==="Identifier"){let n=e.callee.name;if(n.startsWith("f32x4_")||n.startsWith("v128_"))return lc(n,e.arguments,t);let r=t.moduleFunctions.get(n);if(r)return ac(r,n,e.arguments,t)}return t.errors.push(`Unsupported function call: ${e.callee.type}`),[g.f64_const,...le(0)]}function ac(e,t,n,r){if(n.length!==e.params.length)return r.errors.push(`wasm function ${t} expects ${e.params.length} arguments, got ${n.length}`),[g.f64_const,...le(0)];let s=[];for(let i=0;i<n.length;i++){let o=n[i],a=e.params[i].type,c=H(o,r);if(s.push(...F(o,r)),c!==a){let l=cc(c,a);l===void 0?r.errors.push(`wasm function ${t} param ${i} expects ${a}, got ${c} (no conversion available)`):l!==null&&s.push(l)}}return s.push(g.call,...O(e.index)),e.hasReturn||s.push(g.i32_const,0),s}function cc(e,t){if(e===t)return null;if(!(e==="v128"||t==="v128")&&!(e==="i64"||t==="i64"))switch(`${e}->${t}`){case"f64->i32":return g.i32_trunc_f64_s;case"f32->i32":return g.i32_trunc_f32_s;case"i32->f64":return g.f64_convert_i32_s;case"i32->f32":return g.f32_convert_i32_s;case"f32->f64":return g.f64_promote_f32;case"f64->f32":return g.f32_demote_f64;default:return}}function lc(e,t,n){n.needsMemory=!0;let r=[];switch(e){case"v128_load":case"f32x4_load":{r.push(...F(t[0],n)),H(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...F(t[1],n));let i=H(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(...Si(Z.v128_load,2,0)),r}case"v128_store":case"f32x4_store":{r.push(...F(t[0],n)),H(t[0],n)==="f64"&&r.push(g.i32_trunc_f64_s),r.push(...F(t[1],n));let i=H(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(...F(t[2],n)),r.push(...Si(Z.v128_store,2,0)),r.push(g.i32_const,0),r}case"f32x4_splat":{r.push(...F(t[0],n));let s=H(t[0],n);return s==="i32"?r.push(g.f32_convert_i32_s):s==="f64"&&r.push(g.f32_demote_f64),r.push(...vn(Z.f32x4_splat)),r}case"f32x4_extract_lane":{r.push(...F(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,...Mr(0)]):(r.push(Ct,...O(Z.f32x4_extract_lane),s),r)}case"f32x4_replace_lane":{r.push(...F(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,...Mr(0)];r.push(...F(t[2],n));let i=H(t[2],n);return i==="i32"?r.push(g.f32_convert_i32_s):i==="f64"&&r.push(g.f32_demote_f64),r.push(Ct,...O(Z.f32x4_replace_lane),s),r}case"f32x4_add":case"f32x4_sub":case"f32x4_mul":case"f32x4_div":case"f32x4_min":case"f32x4_max":case"f32x4_eq":case"f32x4_ne":case"f32x4_lt":case"f32x4_gt":case"f32x4_le":case"f32x4_ge":{r.push(...F(t[0],n)),r.push(...F(t[1],n));let s={f32x4_add:Z.f32x4_add,f32x4_sub:Z.f32x4_sub,f32x4_mul:Z.f32x4_mul,f32x4_div:Z.f32x4_div,f32x4_min:Z.f32x4_min,f32x4_max:Z.f32x4_max,f32x4_eq:Z.f32x4_eq,f32x4_ne:Z.f32x4_ne,f32x4_lt:Z.f32x4_lt,f32x4_gt:Z.f32x4_gt,f32x4_le:Z.f32x4_le,f32x4_ge:Z.f32x4_ge};return r.push(...vn(s[e])),r}case"f32x4_select":return t.length!==3?(n.errors.push(`f32x4_select expects (mask, a, b) \u2014 3 args, got ${t.length}`),[g.f64_const,...le(0)]):(r.push(...F(t[1],n)),r.push(...F(t[2],n)),r.push(...F(t[0],n)),r.push(...vn(Z.v128_bitselect)),r);case"f32x4_neg":case"f32x4_sqrt":{r.push(...F(t[0],n));let s={f32x4_neg:Z.f32x4_neg,f32x4_sqrt:Z.f32x4_sqrt};return r.push(...vn(s[e])),r}default:return n.errors.push(`Unknown SIMD intrinsic: ${e}`),[g.f64_const,...le(0)]}}function uc(e,t,n){let r=[];for(let a of t){r.push(...F(a,n));let c=H(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,...le(0)]):(n.errors.push(`Unknown Math method: ${e}`),[g.f64_const,...le(0)])}function Cr(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 An[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 fc(e,t){let n=e.map(s=>xe[s.type]),r=t?[1,xe.f64]:[0];return[96,...O(e.length),...n,...r]}function pc(e,t){let n=[];if(t.length>0){let i=t[0],o=1;for(let a=1;a<t.length;a++)t[a]===i?o++:(n.push([...O(o),xe[i]]),i=t[a],o=1);n.push([...O(o),xe[i]])}let s=[...[...O(n.length),...n.flat()],...e,g.end];return[...O(s.length),...s]}function mc(){return At(Mt.import,[1,...Ar("env"),...Ar("memory"),2,0,1])}function Ti(e,t){if(e.length!==t.length)throw new Error("functions and exportNames length mismatch");let n=[0,97,115,109,1,0,0,0],r=e.map(p=>fc(p.params,p.hasReturn)),s=At(Mt.type,[...O(r.length),...r.flat()]),o=e.some(p=>p.needsMemory)?mc():[],a=At(Mt.function,[...O(e.length),...e.map((p,m)=>O(m)).flat()]),c=At(Mt.export,[...O(e.length),...t.map((p,m)=>[...Ar(p),0,...O(m)]).flat()]),l=e.map(p=>pc(p.bodyCode,p.localTypes)),u=At(Mt.code,[...O(l.length),...l.flat()]),f=[...n,...s];return o.length>0&&f.push(...o),f.push(...a,...c,...u),f}function dc(e,t,n,r,s){return Ti([{params:e,bodyCode:t,localTypes:n,needsMemory:r,hasReturn:s}],["compute"])}function Ei(e,t=new Map){try{let n=e.captures.map(Cr),r;try{let c=`function __wasm__(${n.map(l=>l.name).join(", ")}) { ${e.body} }`;r=_i.parse(c,{ecmaVersion:2022})}catch(c){return{success:!1,warnings:[],error:`Parse error: ${c.message}`}}let i=r.body[0].body.body,o=Ka(n,t),a=[];for(let c of i)a.push(...st(c,o));return o.errors.length>0?{success:!1,warnings:o.warnings,error:o.errors.join("; ")}:{success:!0,fn:{params:n,bodyCode:a,localTypes:o.localTypes,needsMemory:o.needsMemory,hasReturn:o.hasReturn},wat:Ya(a,n,o.localTypes),warnings:o.warnings}}catch(n){return{success:!1,warnings:[],error:n.message}}}function $i(e){let t=Ei(e);if(!t.success||!t.fn)return{bytes:new Uint8Array,warnings:t.warnings,success:!1,error:t.error};let n=dc(t.fn.params,t.fn.bodyCode,t.fn.localTypes,t.fn.needsMemory,t.fn.hasReturn);return{bytes:new Uint8Array(n),warnings:t.warnings,success:!0,needsMemory:t.fn.needsMemory,wat:t.wat}}function ki(e){let t=new Map,n=[];for(let c=0;c<e.length;c++){let l=e[c],u=l.captures.map(Cr),f=l.returnType!==void 0;n.push({params:u,hasReturn:f}),l.name&&t.set(l.name,{index:c,params:u,hasReturn:f})}let r=[],s=[],i=[],o=[];for(let c=0;c<e.length;c++){let l=e[c],u=Ei(l,t);if(o.push(...u.warnings),!u.success||!u.fn){r.push({id:l.id,success:!1,error:u.error}),s.push(gc(n[c])),i.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:!1,wat:`(failed: ${u.error??"unknown error"})`});continue}s.push(u.fn),i.push({id:l.id,exportName:`compute_${c}`,captures:l.captures,needsMemory:u.fn.needsMemory,wat:u.wat??""}),r.push({id:l.id,success:!0,exportIndex:c})}if(s.length===0)return{bytes:new Uint8Array,results:r,exports:[],needsMemory:!1,warnings:o};let a=Ti(s,i.map(c=>c.exportName));return{bytes:new Uint8Array(a),results:r,exports:i,needsMemory:i.some(c=>c.needsMemory),warnings:o}}function gc(e){let t=e.hasReturn?[g.f64_const,...le(0)]:[];return{params:e.params,bodyCode:t,localTypes:[],needsMemory:!1,hasReturn:e.hasReturn}}async function ji(e,t){let n={};t&&(n.env={memory:t});let r=await WebAssembly.compile(e);return WebAssembly.instantiate(r,n)}async function yc(e){let t=$i(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 ji(t.bytes,n)).exports.compute,i=e.captures.map(Cr);return i.some(c=>c.isArray)?{fn:(...c)=>{if(!n)throw new Error("Memory not initialized");let l=new Uint8Array(n.buffer),u=0,f=[];for(let m=0;m<i.length;m++){let d=i[m],h=c[m];if(d.isArray&&h instanceof Object&&"buffer"in h){let x=h,_=new Uint8Array(x.buffer,x.byteOffset,x.byteLength);l.set(_,u),f.push(u),u+=_.length,u=u+15&-16}else f.push(h)}let p=s(...f);u=0;for(let m=0;m<i.length;m++){let d=i[m],h=c[m];if(d.isArray&&h instanceof Object&&"buffer"in h){let x=h,_=new Uint8Array(x.buffer,x.byteOffset,x.byteLength);_.set(l.slice(u,u+_.length)),u+=_.length,u=u+15&-16}}return p},memory:n,success:!0}:{fn:s,memory:n,success:!0}}catch(n){return{fn:()=>0,success:!1,error:n.message}}}async function vi(e){let t=await yc(e);return t.success?(globalThis[e.id]=t.fn,!0):(console.warn(`WASM compilation failed for ${e.id}:`,t.error),!1)}async function hc(e){let t=0,n=0,r=[];for(let s of e)await vi(s)?t++:(n++,r.push(`Failed to compile ${s.id}`));return{compiled:t,failed:n,errors:r}}function Mi(e){let t=ki(e),n=new Map(t.exports.map(u=>[u.id,u])),r=t.results.map(u=>{if(!u.success)return{id:u.id,success:!1,error:u.error};let f=n.get(u.id);return{id:u.id,success:!0,byteLength:t.bytes.length,_exportName:f.exportName}});if(t.exports.length===0)return{code:"",results:r,warnings:t.warnings};let s=t.exports.map(u=>{let f=u.wat.split(`
311
311
  `).map(p=>` * ${p}`);return`/**
312
312
  * WASM: ${u.id} (export: ${u.exportName})
313
313
  ${f.join(`
314
314
  `)}
315
315
  */`}).join(`
316
- `),i=n.exports.map(u=>`{id:${JSON.stringify(u.id)},n:${JSON.stringify(u.exportName)},c:${JSON.stringify(u.captures)},m:${u.needsMemory}}`).join(","),o=btoa(String.fromCharCode(...n.bytes)),a=n.needsMemory,c=`${s}
317
- ;(async()=>{
316
+ `),i=t.exports.map(u=>`{id:${JSON.stringify(u.id)},n:${JSON.stringify(u.exportName)},c:${JSON.stringify(u.captures)},m:${u.needsMemory}}`).join(","),o=btoa(String.fromCharCode(...t.bytes)),a=t.needsMemory,c=`${s}
317
+ ;(globalThis.__tjs_wasm_pending??=[]);
318
+ globalThis.__tjs_wasm_ready??=(()=>Promise.all(globalThis.__tjs_wasm_pending));
319
+ globalThis.__tjs_wasm_pending.push((async()=>{
318
320
  const __wasmExports=[${i}];
319
321
  const __wasmModuleB64=${JSON.stringify(o)};
320
322
  const __b64ToBytes=s=>{const b=atob(s),a=new Uint8Array(b.length);for(let i=0;i<b.length;i++)a[i]=b.charCodeAt(i);return a};
@@ -341,58 +343,60 @@ for(const{id,n,c,m}of __wasmExports){
341
343
  if(a.buffer===__wasmMem.buffer) continue;
342
344
  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}}
343
345
  return r};
344
- }})();
345
- `.trim(),l=r.map(({_exportName:u,...f})=>f);return{code:c,results:l}}import*as vi from"acorn";function Ar(e,n){let t=[];function r(i){t.push({start:i.start,end:i.end,newText:`__tjs.toBool(${le(i,n)})`})}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;t.push({start:o.start,end:o.end,newText:`__tjs.toBool(${le(o.test,n)})?(${le(o.consequent,n)}):(${le(o.alternate,n)})`});return}case"LogicalExpression":{let o=i;if(o.operator==="&&"||o.operator==="||"){t.push({start:o.start,end:o.end,newText:le(i,n)});return}break}case"UnaryExpression":{let o=i;if(o.operator==="!"){t.push({start:o.start,end:o.end,newText:`!__tjs.toBool(${le(o.argument,n)})`});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"){t.push({start:o.start,end:o.end,newText:`__tjs.toBool(${le(o.arguments[0],n)})`});return}break}}yc(i,s)}}return s(e),hc(t)}function le(e,n){if(!e)return"";switch(e.type){case"LogicalExpression":{let t=e,r=le(t.left,n),s=le(t.right,n);return t.operator==="&&"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?(${s}):__tjs__t)(${r})`:t.operator==="||"?`((__tjs__t)=>__tjs.toBool(__tjs__t)?__tjs__t:(${s}))(${r})`:`(${r})??(${s})`}case"ConditionalExpression":{let t=e;return`__tjs.toBool(${le(t.test,n)})?(${le(t.consequent,n)}):(${le(t.alternate,n)})`}case"UnaryExpression":{let t=e;return t.operator==="!"?`!__tjs.toBool(${le(t.argument,n)})`:Mr(e,n)}case"CallExpression":{let t=e;return t.callee&&t.callee.type==="Identifier"&&t.callee.name==="Boolean"&&t.arguments.length===1&&t.arguments[0].type!=="SpreadElement"?`__tjs.toBool(${le(t.arguments[0],n)})`:Mr(e,n)}}return Mr(e,n)}function Mr(e,n){let t=e.start,r=e.end;if(typeof t!="number"||typeof r!="number")return"";let s=Mi(e);if(s.length===0)return n.slice(t,r);s.sort((a,c)=>a.start-c.start);let i="",o=t;for(let a of s)a.start<o||(a.start>o&&(i+=n.slice(o,a.start)),i+=le(a,n),o=a.end);return o<r&&(i+=n.slice(o,r)),i}function yc(e,n){for(let t of Mi(e))n(t)}function Mi(e){let n=[];for(let t in e){if(t==="type"||t==="start"||t==="end"||t==="loc")continue;let r=e[t];if(Array.isArray(r))for(let s of r)s&&typeof s=="object"&&typeof s.type=="string"&&n.push(s);else r&&typeof r=="object"&&typeof r.type=="string"&&n.push(r)}return n}function hc(e){let n=[...e].sort((s,i)=>s.start-i.start||i.end-s.end),t=[],r=-1;for(let s of n)s.start>=r&&(t.push(s),r=s.end);return t}function Cr(e){let n;try{n=vi.parse(`function __wrap__(){${e}}`,{ecmaVersion:2022,sourceType:"module",locations:!1})}catch{return e}let t=`function __wrap__(){${e}}`,r=Ar(n,t);if(r.length===0)return e;r.sort((a,c)=>c.start-a.start);let s=t;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 bc(e,n,t){if(!e||!n)return!1;let r=new RegExp(`function\\s+${n}\\s*\\([^)]*?\\b${t}\\s*([=:])`,"s"),s=e.match(r);return s?s[1]===":":!1}function xc(e,n,t,r,s){let i=[],o=wt(n,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,h=Ae(d,t);if(h.type.kind==="object"&&h.type.destructuredParams){l={},u=new Set;for(let[x,E]of Object.entries(h.type.destructuredParams))a[x]={...E,description:o.params[x]},l[x]=E.type,E.required&&u.add(x)}}else for(let m of e.params)if(m.type==="Identifier"){let d=Ae(m,t);a[m.name]={...d,required:t.has(m.name),description:o.params[m.name]}}else if(m.type==="AssignmentPattern"&&m.left.type==="Identifier"){let d=Ae(m,t),h=bc(s||"",e.id?.name||"",m.left.name);a[m.left.name]={...d,required:h,default:h?null:d.example??d.default,description:o.params[m.left.name]}}else if(m.type==="ObjectPattern"){let d=Ae(m,t);if(d.type.kind==="object"&&d.type.destructuredParams)for(let[h,x]of Object.entries(d.type.destructuredParams))a[h]={...x,description:o.params[h]}}else if(m.type==="RestElement"&&m.argument?.type==="Identifier"){let d=m.argument.name,h=n.match(new RegExp(`\\.\\.\\.${d}\\s*:\\s*([^)]+?)\\s*\\)`));if(h)try{let x=Ai(h[1].trim(),0,{ecmaVersion:2022}),E=se(x);a[d]={name:d,type:E,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 f;if(r)try{let m=r.includes("=")?Ri(r):r,d=Ai(m,0,{ecmaVersion:2022});f=se(d)}catch{f={kind:"any"},i.push(`Could not parse return type: ${r}`)}return{types:{name:e.id?.name||"anonymous",params:a,returns:f,description:o.description,isDestructuredParam:c,destructuredShape:l,destructuredRequired:u},warnings:i}}function wc(e,n,t){let r=[],s=t?`${t}:`:"",i=t?`${t}:${e}`:e;if(n.isDestructuredParam&&n.destructuredShape){let a=n.destructuredShape,c=n.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,f]of Object.entries(a)){let p=c.has(u),m=`${s}${e}.${u}`,d=An(u,f);if(d){let h=f.kind;p?r.push(`if (${d}) return __tjs.typeError('${m}', '${h}', ${u});`):r.push(`if (${u} !== undefined && ${d}) return __tjs.typeError('${m}', '${h}', ${u});`)}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
346
- `),suffix:"__tjs.popStack();"})}let o=Object.entries(n.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=An(a,c.type);if(u){let f=c.type.kind==="union"?c.type.members.map(p=>p.kind).join(" | "):c.type.kind;c.required?r.push(`if (${u}) return __tjs.typeError('${l}', '${f}', ${a});`):r.push(`if (${a} !== undefined && ${u}) return __tjs.typeError('${l}', '${f}', ${a});`)}if(c.type.kind==="function"){let f=jc(a,c.type,l);f&&(r.push(f),r.push(`if (${a} instanceof Error) return ${a};`))}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
347
- `),suffix:"__tjs.popStack();"})}function Ri(e){let n="",t=0;for(let r=0;r<e.length;r++){let s=e[r];if(s==="{"||s==="["||s==="(")t++,n+=s;else if(s==="}"||s==="]"||s===")")t--,n+=s;else if(s==="'"||s==='"'||s==="`"){for(n+=s,r++;r<e.length&&e[r]!==s;)e[r]==="\\"&&(n+=e[r++]),n+=e[r++];r<e.length&&(n+=e[r])}else t===1&&s==="="&&e[r-1]!=="!"&&e[r+1]!=="="?n+=":":n+=s}return n}function Sc(e,n){let r=new RegExp(`function\\s+${n}\\s*\\([^)]*\\)\\s*(:[?!]?)\\s*`,"g").exec(e);if(!r)return null;let s=e.slice(r.index+r[0].length);return kn(s)}function _c(e,n){let r=new RegExp(`function\\s+${n}\\s*\\([^)]*\\)\\s*:([?!]?)`,"g").exec(e);if(!r)return;let s=r[1];if(s==="?")return"safe";if(s==="!")return"unsafe"}function Tc(e){let n=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return n?n[1].trim():void 0}function Ec(e,n){let t=new RegExp(`\\/\\*\\s*line\\s+(\\d+)\\s*\\*\\/\\s*(?:async\\s+)?function\\s+${n}\\s*\\(`,"m"),r=e.match(t);return r?parseInt(r[1],10):void 0}function Nt(e,n={}){let{filename:t="<source>",runTests:r=!0,debug:s=!1,resolvedImports:i={}}=n,o=[];e=rr(e);let c=Tc(e)||t,{code:l,tests:u,mocks:f,testRunner:p}=Et(e),{ast:m,originalSource:d,requiredParams:h,unsafeFunctions:x}=he(l,{filename:t,colonShorthand:!0,dialect:n.dialect,moduleLoader:n.moduleLoader}),E=$c(m),$=en(l,{dialect:n.dialect,moduleLoader:n.moduleLoader,filename:t});for(let A of $.predicates)A.verified||o.push(`${A.kind} '${A.name}': predicate is not verifiable, compiled as a plain function (not fuel-bounded, not safe on untrusted data)${A.reason?` \u2014 ${A.reason.replace(/\s+/g," ").trim()}`:""}`);let b=$.predicates.length?$.predicates:void 0;for(let A of u)A.body=gt(A.body),$.tjsModes.tjsEquals&&(A.body=yt(A.body)),$.tjsModes.tjsStandard&&(A.body=Cr(A.body));for(let A of f)A.body=gt(A.body),$.tjsModes.tjsEquals&&(A.body=yt(A.body)),$.tjsModes.tjsStandard&&(A.body=Cr(A.body));let w={},_=[],S=[];for(let A of E){let F=A.id?.name||"anonymous",B=Sc(l,F),ge;if(B&&B.includes("="))try{let Q=B.matchAll(/(\w+)\s*=\s*/g),oe=Ri(B),Ee=new Function(`return ${oe}`)(),ae={};for(let Hn of Q){let ft=Hn[1];ft in Ee&&(ae[ft]=Ee[ft])}Object.keys(ae).length>0&&(ge=ae)}catch{}let{types:Te,warnings:yo}=xc(A,d,h,B,l);o.push(...yo),w[F]=Te;for(let Q of A.params)if(Q.type==="AssignmentPattern"&&Q.left.type==="Identifier"&&Q.right.type==="Identifier"){let oe=Q.left.name,Ee=Q.right.name,ae=w[Ee];if(ae&&Te.params[oe]){let Hn=Object.entries(ae.params).map(([So,_o])=>({name:So,type:_o.type})),ft=ae.returns??{kind:"any"};Te.params[oe].type={kind:"function",params:Hn,returns:ft}}}for(let Q of A.params)if(Q.type==="AssignmentPattern"){let oe=Q.left?.name||Q.left?.value,Ee=oe?Te.params[oe]:null;if(Ee?.required&&Ee.default===null)S.push({start:Q.left.end,end:Q.right.end});else{let ae=Q.right;ae.type==="BinaryExpression"&&ae.operator==="|"&&S.push({start:ae.left.end,end:ae.end})}}let os=$.moduleSafety==="none"||x.has(F),ho=$.safeFunctions.has(F),bo=_c(l,F),xo=Ec(e,F),Xe={file:c,line:xo??A.loc?.start.line??0,column:A.loc?.start.column??0},wo={unsafe:os,safe:ho,returnSafety:bo},as=$.polymorphicNames.has(F),Zn;if(as){let Q=[];for(let Ee of E){let ae=Ee.id?.name||"";ae.startsWith(F+"$")&&Q.push(ae)}let oe={polymorphic:!0,variants:Q};Xe&&(oe.source=`${Xe.file}:${Xe.line}`),Zn=`${F}.__tjs = ${JSON.stringify(oe,null,2)}`}else Zn=kc(F,Te,wo,{debug:s,source:Xe,returnDefaults:ge});if(_.push({position:A.end,text:`
348
- ${Zn}`}),!os&&!as){let Q=`${Xe.file}:${Xe.line}`,oe=wc(F,Te,Q);oe&&A.body&&A.body.start!==void 0&&(_.push({position:A.body.start+1,text:`
346
+ }})().catch(()=>{}));
347
+ `.trim(),l=r.map(({_exportName:u,...f})=>f);return{code:c,results:l,warnings:t.warnings}}import*as Ai from"acorn";function Pr(e,t){let n=[];function r(i){n.push({start:i.start,end:i.end,newText:`__tjs.toBool(${ue(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(${ue(o.test,t)})?(${ue(o.consequent,t)}):(${ue(o.alternate,t)})`});return}case"LogicalExpression":{let o=i;if(o.operator==="&&"||o.operator==="||"){n.push({start:o.start,end:o.end,newText:ue(i,t)});return}break}case"UnaryExpression":{let o=i;if(o.operator==="!"){n.push({start:o.start,end:o.end,newText:`!__tjs.toBool(${ue(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(${ue(o.arguments[0],t)})`});return}break}}bc(i,s)}}return s(e),xc(n)}function ue(e,t){if(!e)return"";switch(e.type){case"LogicalExpression":{let n=e,r=ue(n.left,t),s=ue(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(${ue(n.test,t)})?(${ue(n.consequent,t)}):(${ue(n.alternate,t)})`}case"UnaryExpression":{let n=e;return n.operator==="!"?`!__tjs.toBool(${ue(n.argument,t)})`:Rr(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(${ue(n.arguments[0],t)})`:Rr(e,t)}}return Rr(e,t)}function Rr(e,t){let n=e.start,r=e.end;if(typeof n!="number"||typeof r!="number")return"";let s=Ci(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+=ue(a,t),o=a.end);return o<r&&(i+=t.slice(o,r)),i}function bc(e,t){for(let n of Ci(e))t(n)}function Ci(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 xc(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 Nr(e){let t;try{t=Ai.parse(`function __wrap__(){${e}}`,{ecmaVersion:2022,sourceType:"module",locations:!1})}catch{return e}let n=`function __wrap__(){${e}}`,r=Pr(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 wc(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 Sc(e,t,n,r,s){let i=[],o=wt(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,h=Ae(d,n);if(h.type.kind==="object"&&h.type.destructuredParams){l={},u=new Set;for(let[x,_]of Object.entries(h.type.destructuredParams))a[x]={..._,description:o.params[x]},l[x]=_.type,_.required&&u.add(x)}}else for(let m of e.params)if(m.type==="Identifier"){let d=Ae(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=Ae(m,n),h=wc(s||"",e.id?.name||"",m.left.name);a[m.left.name]={...d,required:h,default:h?null:d.example??d.default,description:o.params[m.left.name]}}else if(m.type==="ObjectPattern"){let d=Ae(m,n);if(d.type.kind==="object"&&d.type.destructuredParams)for(let[h,x]of Object.entries(d.type.destructuredParams))a[h]={...x,description:o.params[h]}}else if(m.type==="RestElement"&&m.argument?.type==="Identifier"){let d=m.argument.name,h=t.match(new RegExp(`\\.\\.\\.${d}\\s*:\\s*([^)]+?)\\s*\\)`));if(h)try{let x=Ri(h[1].trim(),0,{ecmaVersion:2022}),_=se(x);a[d]={name:d,type:_,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 f;if(r)try{let m=r.includes("=")?Ni(r):r,d=Ri(m,0,{ecmaVersion:2022});f=se(d)}catch{f={kind:"any"},i.push(`Could not parse return type: ${r}`)}return{types:{name:e.id?.name||"anonymous",params:a,returns:f,description:o.description,isDestructuredParam:c,destructuredShape:l,destructuredRequired:u},warnings:i}}function _c(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,f]of Object.entries(a)){let p=c.has(u),m=`${s}${e}.${u}`,d=Cn(u,f);if(d){let h=f.kind;p?r.push(`if (${d}) return __tjs.typeError('${m}', '${h}', ${u});`):r.push(`if (${u} !== undefined && ${d}) return __tjs.typeError('${m}', '${h}', ${u});`)}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
348
+ `),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=Cn(a,c.type);if(u){let f=c.type.kind==="union"?c.type.members.map(p=>p.kind).join(" | "):c.type.kind;c.required?r.push(`if (${u}) return __tjs.typeError('${l}', '${f}', ${a});`):r.push(`if (${a} !== undefined && ${u}) return __tjs.typeError('${l}', '${f}', ${a});`)}if(c.type.kind==="function"){let f=Mc(a,c.type,l);f&&(r.push(f),r.push(`if (${a} instanceof Error) return ${a};`))}}return r.length===0?null:(r.unshift(`__tjs.pushStack('${i}');`),{preamble:r.join(`
349
+ `),suffix:"__tjs.popStack();"})}function Ni(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 Tc(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 kn(s)}function Ec(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 $c(e){let t=e.match(/^\/\*\s*tjs\s*<-\s*([^*]+?)\s*\*\//);return t?t[1].trim():void 0}function kc(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 Nt(e,t={}){let{filename:n="<source>",runTests:r=!0,debug:s=!1,resolvedImports:i={}}=t,o=[];e=ar(e);let c=$c(e)||n,{code:l,tests:u,mocks:f,testRunner:p}=Et(e),{ast:m,originalSource:d,requiredParams:h,unsafeFunctions:x}=he(l,{filename:n,colonShorthand:!0,dialect:t.dialect,moduleLoader:t.moduleLoader}),_=jc(m),E=en(l,{dialect:t.dialect,moduleLoader:t.moduleLoader,filename:n}),b=E.predicates.filter(A=>!A.verified),w=A=>`${A.kind} '${A.name}': predicate is not verifiable, compiled as a plain function (not fuel-bounded, not safe on untrusted data)${A.reason?` \u2014 ${A.reason.replace(/\s+/g," ").trim()}`:""}`;if(b.length&&E.tjsModes.tjsStrict)throw new Error(`TjsStrict: ${b.length} predicate(s) could not be verified:
350
+ ${b.map(A=>` ${w(A)}`).join(`
351
+ `)}`);for(let A of b)o.push(w(A));let T=E.predicates.length?E.predicates:void 0;for(let A of u)A.body=gt(A.body),E.tjsModes.tjsEquals&&(A.body=yt(A.body)),E.tjsModes.tjsStandard&&(A.body=Nr(A.body));for(let A of f)A.body=gt(A.body),E.tjsModes.tjsEquals&&(A.body=yt(A.body)),E.tjsModes.tjsStandard&&(A.body=Nr(A.body));let S={},$=[],j=[];for(let A of _){let B=A.id?.name||"anonymous",L=Tc(l,B),ge;if(L&&L.includes("="))try{let ee=L.matchAll(/(\w+)\s*=\s*/g),oe=Ni(L),Ee=new Function(`return ${oe}`)(),ae={};for(let Qn of ee){let ft=Qn[1];ft in Ee&&(ae[ft]=Ee[ft])}Object.keys(ae).length>0&&(ge=ae)}catch{}let{types:Te,warnings:bo}=Sc(A,d,h,L,l);o.push(...bo),S[B]=Te;for(let ee of A.params)if(ee.type==="AssignmentPattern"&&ee.left.type==="Identifier"&&ee.right.type==="Identifier"){let oe=ee.left.name,Ee=ee.right.name,ae=S[Ee];if(ae&&Te.params[oe]){let Qn=Object.entries(ae.params).map(([To,Eo])=>({name:To,type:Eo.type})),ft=ae.returns??{kind:"any"};Te.params[oe].type={kind:"function",params:Qn,returns:ft}}}for(let ee of A.params)if(ee.type==="AssignmentPattern"){let oe=ee.left?.name||ee.left?.value,Ee=oe?Te.params[oe]:null;if(Ee?.required&&Ee.default===null)j.push({start:ee.left.end,end:ee.right.end});else{let ae=ee.right;ae.type==="BinaryExpression"&&ae.operator==="|"&&j.push({start:ae.left.end,end:ae.end})}}let cs=E.moduleSafety==="none"||x.has(B),xo=E.safeFunctions.has(B),wo=Ec(l,B),So=kc(e,B),Xe={file:c,line:So??A.loc?.start.line??0,column:A.loc?.start.column??0},_o={unsafe:cs,safe:xo,returnSafety:wo},ls=E.polymorphicNames.has(B),Xn;if(ls){let ee=[];for(let Ee of _){let ae=Ee.id?.name||"";ae.startsWith(B+"$")&&ee.push(ae)}let oe={polymorphic:!0,variants:ee};Xe&&(oe.source=`${Xe.file}:${Xe.line}`),Xn=`${B}.__tjs = ${JSON.stringify(oe,null,2)}`}else Xn=vc(B,Te,_o,{debug:s,source:Xe,returnDefaults:ge});if($.push({position:A.end,text:`
352
+ ${Xn}`}),!cs&&!ls){let ee=`${Xe.file}:${Xe.line}`,oe=_c(B,Te,ee);oe&&A.body&&A.body.start!==void 0&&($.push({position:A.body.start+1,text:`
349
353
  ${oe.preamble}
350
- `}),oe.suffix&&_.push({position:A.body.end-1,text:`
354
+ `}),oe.suffix&&$.push({position:A.body.end-1,text:`
351
355
  ${oe.suffix}
352
- `}))}}if($.tjsModes.tjsStandard){let A=Ar(m,$.source);for(let F of A)S.push({start:F.start,end:F.end}),_.push({position:F.start,text:F.newText})}S.sort((A,F)=>F.start-A.start);let T=$.source;for(let{start:A,end:F}of S)T=T.slice(0,A)+T.slice(F);for(let A of _){let F=0;for(let B of S)B.start<A.position&&(F+=B.end-B.start);A.position-=F}_.sort((A,F)=>F.position-A.position);for(let{position:A,text:F}of _)T=T.slice(0,A)+F+T.slice(A);let k=T.includes("__tjs.typeError("),M=T.includes("__tjs.pushStack("),R=T.includes("Is("),C=T.includes("IsNot("),I=T.includes("Eq("),N=T.includes("NotEq("),L=T.includes("TypeOf("),U=/\bType\(/.test(T),H=/\bGeneric\(/.test(T),K=/\bFunctionPredicate\(/.test(T),ie=/\bEnum\(/.test(T),Ke=/\bUnion\(/.test(T),Jt=T.includes("__tjs.bang("),zn=T.includes("__tjs.toBool("),Gn=T.includes("__tjs.checkFnShape("),ss=$.tjsModes.tjsSafeEval;if(k||M||R||C||I||N||L||U||H||K||ie||Ke||Jt||zn||Gn||ss){let A=[];k&&A.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}"),M&&A.push("const __stack=[];function pushStack(n){__stack.push(n)}function popStack(){__stack.pop()}function getStack(){return[...__stack]}"),I&&A.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}"),N&&A.push("function NotEq(a,b){return!Eq(a,b)}"),L&&A.push("function TypeOf(v){return v===null?'null':typeof v}"),R&&A.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]))}"),C&&A.push("function IsNot(a,b){return!Is(a,b)}"),U&&A.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}"),H&&A.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}"),K&&A.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}}"),ie&&A.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}}"),Ke&&A.push("function Union(d,...v){const vals=v.flat();return{description:d,check:x=>vals.includes(x),values:vals,__runtimeType:true}}"),zn&&A.push("function toBool(v){if(v instanceof Boolean||v instanceof Number||v instanceof String)return Boolean(v.valueOf());return Boolean(v)}"),Gn&&(k||A.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.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}`)),Jt&&(k||A.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.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 F=A.length>0?A.join(`;
356
+ `}))}}if(E.tjsModes.tjsStandard){let A=Pr(m,E.source);for(let B of A)j.push({start:B.start,end:B.end}),$.push({position:B.start,text:B.newText})}j.sort((A,B)=>B.start-A.start);let k=E.source;for(let{start:A,end:B}of j)k=k.slice(0,A)+k.slice(B);for(let A of $){let B=0;for(let L of j)L.start<A.position&&(B+=L.end-L.start);A.position-=B}$.sort((A,B)=>B.position-A.position);for(let{position:A,text:B}of $)k=k.slice(0,A)+B+k.slice(A);let R=k.includes("__tjs.typeError("),C=k.includes("__tjs.pushStack("),I=k.includes("Is("),N=k.includes("IsNot("),U=k.includes("Eq("),q=k.includes("NotEq("),Y=k.includes("TypeOf("),X=/\bType\(/.test(k),ie=/\bGeneric\(/.test(k),Ke=/\bFunctionPredicate\(/.test(k),Jt=/\bEnum\(/.test(k),Gn=/\bUnion\(/.test(k),Zn=k.includes("__tjs.bang("),Hn=k.includes("__tjs.toBool("),Yn=k.includes("__tjs.checkFnShape("),as=E.tjsModes.tjsSafeEval;if(R||C||I||N||U||q||Y||X||ie||Ke||Jt||Gn||Zn||Hn||Yn||as){let A=[];R&&A.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}"),C&&A.push("const __stack=[];function pushStack(n){__stack.push(n)}function popStack(){__stack.pop()}function getStack(){return[...__stack]}"),U&&A.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}"),q&&A.push("function NotEq(a,b){return!Eq(a,b)}"),Y&&A.push("function TypeOf(v){return v===null?'null':typeof v}"),I&&A.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&&A.push("function IsNot(a,b){return!Is(a,b)}"),X&&A.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}"),ie&&A.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}"),Ke&&A.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}}"),Jt&&A.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}}"),Gn&&A.push("function Union(d,...v){const vals=v.flat();return{description:d,check:x=>vals.includes(x),values:vals,__runtimeType:true}}"),Hn&&A.push("function toBool(v){if(v instanceof Boolean||v instanceof Number||v instanceof String)return Boolean(v.valueOf());return Boolean(v)}"),Yn&&(R||A.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.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}`)),Zn&&(R||A.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.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 B=A.length>0?A.join(`;
353
357
  `)+`;
354
- `:"",B=[];k&&B.push("typeError","isMonadicError"),M&&B.push("pushStack","popStack","getStack"),I&&B.push("Eq"),N&&B.push("NotEq"),L&&B.push("TypeOf"),R&&B.push("Is","tjsEquals"),C&&B.push("IsNot"),U&&B.push("Type"),H&&B.push("Generic"),K&&B.push("FunctionPredicate"),ie&&B.push("Enum"),Ke&&B.push("Union"),zn&&B.push("toBool"),Gn&&(B.push("checkFnShape"),k||B.push("typeError","isMonadicError")),Jt&&(B.push("bang"),k||B.push("typeError","isMonadicError"));let ge=B.length>0?`{${B.join(",")}}`:"undefined";T=F+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${ge};
355
- `+T}ss&&(T=`import { Eval, SafeFunction } from 'tjs-lang';
356
- `+T);let ut;if(r){let A=hi(e);ut=bi(u,f,A,T,i,$.extensions);let F=ut.filter(B=>!B.passed&&!B.inconclusive);if(F.length>0&&r===!0){let B=F.map(ge=>{if(ge.isSignatureTest)return` Function signature example is inconsistent:
358
+ `:"",L=[];R&&L.push("typeError","isMonadicError"),C&&L.push("pushStack","popStack","getStack"),U&&L.push("Eq"),q&&L.push("NotEq"),Y&&L.push("TypeOf"),I&&L.push("Is","tjsEquals"),N&&L.push("IsNot"),X&&L.push("Type"),ie&&L.push("Generic"),Ke&&L.push("FunctionPredicate"),Jt&&L.push("Enum"),Gn&&L.push("Union"),Hn&&L.push("toBool"),Yn&&(L.push("checkFnShape"),R||L.push("typeError","isMonadicError")),Zn&&(L.push("bang"),R||L.push("typeError","isMonadicError"));let ge=L.length>0?`{${L.join(",")}}`:"undefined";k=B+`const __tjs = globalThis.__tjs?.createRuntime?.() ?? ${ge};
359
+ `+k}as&&(k=`import { Eval, SafeFunction } from 'tjs-lang';
360
+ `+k);let ut;if(r){let A=xi(e);ut=wi(u,f,A,k,i,E.extensions);let B=ut.filter(L=>!L.passed&&!L.inconclusive);if(B.length>0&&r===!0){let L=B.map(ge=>{if(ge.isSignatureTest)return` Function signature example is inconsistent:
357
361
  ${ge.error}`;let Te=ge.line?` (line ${ge.line})`:"";return` Test '${ge.description}'${Te} failed:
358
362
  ${ge.error}`});throw new Error(`Transpile-time test failures:
359
- ${B.join(`
360
- `)}`)}}if(r==="only")return{code:"",types:w,metadata:w,testResults:ut,testCount:ut?.length,predicates:b};let is;if($.wasmBlocks.length>0){let A=ji($.wasmBlocks);A.code&&(T=A.code+`
361
- `+T),is=A.results}return{code:T,types:w,metadata:w,warnings:o.length>0?o:void 0,predicates:b,testRunner:u.length>0?p:void 0,testCount:u.length>0?u.length:void 0,testResults:ut,wasmCompiled:is}}function $c(e){let n=[];for(let t of e.body)t.type==="FunctionDeclaration"?n.push(t):(t.type==="ExportNamedDeclaration"&&t.declaration?.type==="FunctionDeclaration"||t.type==="ExportDefaultDeclaration"&&t.declaration?.type==="FunctionDeclaration")&&n.push(t.declaration);return n}function Pt(e){let n={kind:e.kind};return e.nullable&&(n.nullable=!0),e.items&&(n.items=Pt(e.items)),e.shape&&(n.shape=Object.fromEntries(Object.entries(e.shape).map(([t,r])=>[t,Pt(r)]))),e.members&&(n.members=e.members.map(Pt)),n}function kc(e,n,t={},r={}){let s={};for(let[o,a]of Object.entries(n.params))s[o]={type:Pt(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(n.returns&&(i.returns={type:Pt(n.returns)},r.returnDefaults&&(i.returns.defaults=r.returnDefaults),t.returnSafety==="safe"?i.safeReturn=!0:t.returnSafety==="unsafe"&&(i.unsafeReturn=!0)),n.description&&(i.description=n.description),t.unsafe&&(i.unsafe=!0),t.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 An(e,n){let t;switch(n.kind){case"string":t=`typeof ${e} !== 'string'`;break;case"number":t=`typeof ${e} !== 'number'`;break;case"integer":t=`(typeof ${e} !== 'number' || !Number.isInteger(${e}))`;break;case"non-negative-integer":t=`(typeof ${e} !== 'number' || !Number.isInteger(${e}) || ${e} < 0)`;break;case"boolean":t=`typeof ${e} !== 'boolean'`;break;case"null":return`${e} !== null`;case"undefined":return`${e} !== undefined`;case"array":{let r=n.items&&n.items.kind!=="any"?An("__a",n.items):null;r?t=`(!Array.isArray(${e}) || ${e}.some(__a => ${r}))`:t=`!Array.isArray(${e})`;break}case"object":t=`(typeof ${e} !== 'object' || ${e} === null || Array.isArray(${e}))`;break;case"function":t=`typeof ${e} !== 'function'`;break;case"union":{let r=n.members.map(s=>An(e,s)).filter(s=>s!==null);if(r.length===0)return null;t=`(${r.join(" && ")})`;break}case"any":return null;default:return null}return t&&n.nullable&&(t=`(${e} !== null && ${t})`),t}var Ci=new Set(["string","number","integer","non-negative-integer","boolean","function","any","undefined","null","object"]);function jc(e,n,t){let r=n.params??[],s=n.returns??{kind:"any"},i=r.map(l=>l.type?.kind),o=i.every(l=>l&&Ci.has(l))&&Ci.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}', '${t}');`}function _e(e){let n;switch(e.kind){case"string":n="string";break;case"number":case"integer":case"non-negative-integer":n="number";break;case"boolean":n="boolean";break;case"null":return"null";case"undefined":return"undefined";case"any":n="any";break;case"array":if(e.items){let t=_e(e.items);n=t.includes("|")?`(${t})[]`:`${t}[]`}else n="any[]";break;case"object":e.shape&&Object.keys(e.shape).length>0?n=`{ ${Object.entries(e.shape).map(([r,s])=>`${r}: ${_e(s)}`).join("; ")} }`:n="Record<string, any>";break;case"union":if(e.members&&e.members.length>0)return e.members.map(_e).join(" | ");n="any";break;case"function":{let t=e.params??[],r=e.returns?_e(e.returns):"any";n=`(${t.map(i=>`${i.name}: ${_e(i.type)}`).join(", ")}) => ${r}`;break}default:n="any"}return e.nullable?`${n} | null`:n}function vc(e,n,t,r){let s=Object.entries(n.params),i=new Array(s.length),o=!1;for(let u=s.length-1;u>=0;u--){let f=s[u][1],p=!f.required&&f.default!==void 0;i[u]=p&&!o,i[u]||(o=!0)}let a=s.map(([u,f],p)=>{let m=_e(f.type);return i[p]?`${u}?: ${m}`:`${u}: ${m}`}).join(", "),c=n.returns?_e(n.returns):"any";return`${t?r?"export default function":"export declare function":"declare function"} ${e}(${a}): ${c};`}function Mc(e){let n=new Map,t,r=/^[ \t]*export\s+(default\s+)?function\s+(\w+)/gm;for(;(t=r.exec(e))!==null;)n.set(t[2],{exported:!0,isDefault:!!t[1]});let s=/^[ \t]*export\s+(default\s+)?class\s+(\w+)/gm;for(;(t=s.exec(e))!==null;)n.set(t[2],{exported:!0,isDefault:!!t[1]});let i=/^[ \t]*export\s+(default\s+)?(?:const|let|var)\s+(\w+)/gm;for(;(t=i.exec(e))!==null;)n.set(t[2],{exported:!0,isDefault:!!t[1]});let o=/^[ \t]*export\s+Type\s+(\w+)/gm;for(;(t=o.exec(e))!==null;)n.set(t[1],{exported:!0,isDefault:!1});let a=/^[ \t]*export\s+Generic\s+(\w+)/gm;for(;(t=a.exec(e))!==null;)n.set(t[1],{exported:!0,isDefault:!1});let c=/^[ \t]*export\s+FunctionPredicate\s+(\w+)/gm;for(;(t=c.exec(e))!==null;)n.set(t[1],{exported:!0,isDefault:!1});let l=/^[ \t]*export\s*\{([^}]+)\}/gm;for(;(t=l.exec(e))!==null;){let u=t[1].split(",").map(f=>f.trim().split(/\s+as\s+/));for(let f of u){let p=f.length>1?f[1]:f[0];p&&/^\w+$/.test(p)&&n.set(p,{exported:!0,isDefault:!1})}}return n}function Ac(e){let n=new Map,t=/^[ \t]*(?:export\s+)?FunctionPredicate\s+(\w+)\s*(?:<([^>]+)>)?\s*\{/gm,r;for(;(r=t.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(h=>h.trim()));let f=[],p=l.match(/params\s*:\s*\{([^}]*)\}/);if(p){let h=p[1],x=Ni(h);for(let E of x){let $=E.match(/^(\w+)\s*:\s*(.+)$/);$&&f.push({name:$[1],example:$[2].trim()})}}let m,d=l.match(/returns\s*:\s*(.+?)(?:\n|$)/);d&&(m=d[1].trim()),n.set(s,{params:f,returns:m,typeParams:u})}return n}function Cc(e){let n=new Map,t=/^[ \t]*(?:export\s+(?:default\s+)?)?class\s+(\w+)(?:\s+extends\s+\w+)?\s*\{/gm,r;for(;(r=t.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 p=c.indexOf("(",l);if(p!==-1){let m=1,d=p+1;for(;d<c.length&&m>0;)c[d]==="("?m++:c[d]===")"&&m--,d++;u=c.slice(p+1,d-1).trim()}}let f=[];{let p=0,m=0;for(;p<c.length;){let d=c[p];if(d==="{"){m++,p++;continue}if(d==="}"){m--,p++;continue}if(m===0){let h=c.slice(p).match(/^(\w+)\s*\(/);if(h){let x=h[1];if(x==="constructor"||x==="get"||x==="set"){p+=x.length;continue}else{let E=p+h[0].length-1,$=1,b=E+1;for(;b<c.length&&$>0;)c[b]==="("?$++:c[b]===")"&&$--,b++;let w=c.slice(E+1,b-1).trim(),_=c.slice(b).match(/^\s*->\s*(.+?)\s*\{/),S=_?_[1].trim():null;f.push({name:x,params:w,returnType:S}),p=b;continue}}}p++}}n.set(s,{name:s,constructorParams:u,methods:f})}return n}function Ni(e){let n=[],t=0,r="";for(let s of e)s==="{"||s==="["||s==="("?t++:(s==="}"||s==="]"||s===")")&&t--,s===","&&t===0?(n.push(r.trim()),r=""):r+=s;return r.trim()&&n.push(r.trim()),n}function Pi(e){return e.trim()?Ni(e).map(n=>{let t=n.match(/^(\w+)\s*:\s*(.+)$/);if(t){let s=t[1],i=Ne(t[2].trim());return`${s}: ${i}`}let r=n.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],i=Ne(r[2].trim());return`${s}?: ${i}`}return n.startsWith("{")?"options: any":`${n}: any`}).join(", "):""}function Rc(e){let n=new Map,t,r=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*=\s*(.+)$/gm;for(;(t=r.exec(e))!==null;)n.set(t[1],t[2].trim());let s=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s+([^{=].*)$/gm;for(;(t=s.exec(e))!==null;)n.has(t[1])||n.set(t[1],t[2].trim());let i=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*example\s*:\s*(.+?)(?:\n|\s*[,}])/gm;for(;(t=i.exec(e))!==null;)n.set(t[1],t[2].trim());let o=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{[^}]*\/\/\s*TS:\s*(.+?)(?:\n|\s*\})/gm;for(;(t=o.exec(e))!==null;)n.has(t[1])||n.set(t[1],`__ts__:${t[2].trim()}`);let a=/^[ \t]*(?:export\s+)?Type\s+(\w+)\s*\{\s*\}/gm;for(;(t=a.exec(e))!==null;)n.has(t[1])||n.set(t[1],"");return n}function Pc(e){let n=new Map,t=/^[ \t]*(?:export\s+)?Generic\s+(\w+)\s*<([^>]+)>\s*\{/gm,r;for(;(r=t.exec(e))!==null;){let s=r[1],i=r[2].split(",").map(p=>p.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,f=l.match(/\bdeclaration\s*\{/);if(f&&f.index!==void 0){let p=f.index+f[0].length-1,m=1,d=p+1;for(;d<l.length&&m>0;)l[d]==="{"?m++:l[d]==="}"&&m--,d++;u=l.slice(p+1,d-1).trim()}n.set(s,{typeParams:i,declaration:u})}return n}function Nc(e){let n=[],t=/^[ \t]*export\s+(?:default\s+)?(const|let|var)\s+(\w+)\s*(?::\s*\w+\s*)?=\s*(.+)/gm,r;for(;(r=t.exec(e))!==null;){let s=r[3].trim();s.endsWith(";")&&(s=s.slice(0,-1).trim()),n.push({name:r[2],value:s,kind:r[1]})}return n}function Dc(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 Ic(e,n,t={}){let r=[],s=Mc(n),i=Rc(n),o=Cc(n),a=Pc(n),c=s.size>0,l=new Set;for(let[p,m]of Object.entries(e.types)){if(p.includes("$"))continue;let d=s.get(p),h=c?!!d?.exported:!0,x=d?.isDefault??!1;h&&(m.description&&r.push(`/** ${m.description} */`),r.push(vc(p,m,!0,x)),l.add(p))}for(let[p,m]of o){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let x=m.constructorParams?Pi(m.constructorParams):"";if(r.push(`export declare function ${p}(${x}): any;`),x||m.methods.length>0){r.push(`export declare class ${p} {`),m.constructorParams&&r.push(` constructor(${x});`);for(let E of m.methods){let $=E.params?Pi(E.params):"";r.push(` ${E.name}(${$}): any;`)}r.push("}")}l.add(p)}for(let[p,m]of i){if(l.has(p))continue;let d=s.get(p);if(!c||d?.exported){if(m.startsWith("__ts__:")){let x=m.slice(7);r.push(`export type ${p} = ${x};`)}else if(m==="")r.push(`export type ${p} = any;`);else{let x=Ne(m);r.push(`export declare const ${p}: { check(value: any): boolean; default: ${x}; (value: any): boolean; };`)}l.add(p)}}for(let[p,m]of a){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let x=m.typeParams.length>0?`<${m.typeParams.join(", ")}>`:"";if(m.declaration){let E=m.declaration.trim(),$=E.match(/^\/\/\s*TS:\s*(.+)$/s);if($)r.push(`export type ${p}${x} = ${$[1].trim()};`);else{let b=E.split(`
363
+ ${L.join(`
364
+ `)}`)}}if(r==="only")return{code:"",types:S,metadata:S,testResults:ut,testCount:ut?.length,predicates:T};let Kn;if(E.wasmBlocks.length>0){let A=Mi(E.wasmBlocks);A.code&&(k=A.code+`
365
+ `+k),Kn=A.results;for(let B of Kn)B.success||o.push(`wasm{} block '${B.id}' did not compile \u2014 running the fallback{} (JS)${B.error?`: ${B.error}`:""}`);for(let B of A.warnings)o.push(`wasm{}: ${B}`)}return{code:k,types:S,metadata:S,warnings:o.length>0?o:void 0,predicates:T,testRunner:u.length>0?p:void 0,testCount:u.length>0?u.length:void 0,testResults:ut,wasmCompiled:Kn}}function jc(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 Pt(e){let t={kind:e.kind};return e.nullable&&(t.nullable=!0),e.items&&(t.items=Pt(e.items)),e.shape&&(t.shape=Object.fromEntries(Object.entries(e.shape).map(([n,r])=>[n,Pt(r)]))),e.members&&(t.members=e.members.map(Pt)),t}function vc(e,t,n={},r={}){let s={};for(let[o,a]of Object.entries(t.params))s[o]={type:Pt(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:Pt(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 Cn(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"?Cn("__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=>Cn(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 Pi=new Set(["string","number","integer","non-negative-integer","boolean","function","any","undefined","null","object"]);function Mc(e,t,n){let r=t.params??[],s=t.returns??{kind:"any"},i=r.map(l=>l.type?.kind),o=i.every(l=>l&&Pi.has(l))&&Pi.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 _e(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=_e(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}: ${_e(s)}`).join("; ")} }`:t="Record<string, any>";break;case"union":if(e.members&&e.members.length>0)return e.members.map(_e).join(" | ");t="any";break;case"function":{let n=e.params??[],r=e.returns?_e(e.returns):"any";t=`(${n.map(i=>`${i.name}: ${_e(i.type)}`).join(", ")}) => ${r}`;break}default:t="any"}return e.nullable?`${t} | null`:t}function Ac(e,t,n,r){let s=Object.entries(t.params),i=new Array(s.length),o=!1;for(let u=s.length-1;u>=0;u--){let f=s[u][1],p=!f.required&&f.default!==void 0;i[u]=p&&!o,i[u]||(o=!0)}let a=s.map(([u,f],p)=>{let m=_e(f.type);return i[p]?`${u}?: ${m}`:`${u}: ${m}`}).join(", "),c=t.returns?_e(t.returns):"any";return`${n?r?"export default function":"export declare function":"declare function"} ${e}(${a}): ${c};`}function Cc(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(f=>f.trim().split(/\s+as\s+/));for(let f of u){let p=f.length>1?f[1]:f[0];p&&/^\w+$/.test(p)&&t.set(p,{exported:!0,isDefault:!1})}}return t}function Rc(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(h=>h.trim()));let f=[],p=l.match(/params\s*:\s*\{([^}]*)\}/);if(p){let h=p[1],x=Ii(h);for(let _ of x){let E=_.match(/^(\w+)\s*:\s*(.+)$/);E&&f.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:f,returns:m,typeParams:u})}return t}function Pc(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 p=c.indexOf("(",l);if(p!==-1){let m=1,d=p+1;for(;d<c.length&&m>0;)c[d]==="("?m++:c[d]===")"&&m--,d++;u=c.slice(p+1,d-1).trim()}}let f=[];{let p=0,m=0;for(;p<c.length;){let d=c[p];if(d==="{"){m++,p++;continue}if(d==="}"){m--,p++;continue}if(m===0){let h=c.slice(p).match(/^(\w+)\s*\(/);if(h){let x=h[1];if(x==="constructor"||x==="get"||x==="set"){p+=x.length;continue}else{let _=p+h[0].length-1,E=1,b=_+1;for(;b<c.length&&E>0;)c[b]==="("?E++:c[b]===")"&&E--,b++;let w=c.slice(_+1,b-1).trim(),T=c.slice(b).match(/^\s*->\s*(.+?)\s*\{/),S=T?T[1].trim():null;f.push({name:x,params:w,returnType:S}),p=b;continue}}}p++}}t.set(s,{name:s,constructorParams:u,methods:f})}return t}function Ii(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 Di(e){return e.trim()?Ii(e).map(t=>{let n=t.match(/^(\w+)\s*:\s*(.+)$/);if(n){let s=n[1],i=Ne(n[2].trim());return`${s}: ${i}`}let r=t.match(/^(\w+)\s*=\s*(.+)$/);if(r){let s=r[1],i=Ne(r[2].trim());return`${s}?: ${i}`}return t.startsWith("{")?"options: any":`${t}: any`}).join(", "):""}function Nc(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 Dc(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(p=>p.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,f=l.match(/\bdeclaration\s*\{/);if(f&&f.index!==void 0){let p=f.index+f[0].length-1,m=1,d=p+1;for(;d<l.length&&m>0;)l[d]==="{"?m++:l[d]==="}"&&m--,d++;u=l.slice(p+1,d-1).trim()}t.set(s,{typeParams:i,declaration:u})}return t}function Ic(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 Oc(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 Bc(e,t,n={}){let r=[],s=Cc(t),i=Nc(t),o=Pc(t),a=Dc(t),c=s.size>0,l=new Set;for(let[p,m]of Object.entries(e.types)){if(p.includes("$"))continue;let d=s.get(p),h=c?!!d?.exported:!0,x=d?.isDefault??!1;h&&(m.description&&r.push(`/** ${m.description} */`),r.push(Ac(p,m,!0,x)),l.add(p))}for(let[p,m]of o){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let x=m.constructorParams?Di(m.constructorParams):"";if(r.push(`export declare function ${p}(${x}): any;`),x||m.methods.length>0){r.push(`export declare class ${p} {`),m.constructorParams&&r.push(` constructor(${x});`);for(let _ of m.methods){let E=_.params?Di(_.params):"";r.push(` ${_.name}(${E}): any;`)}r.push("}")}l.add(p)}for(let[p,m]of i){if(l.has(p))continue;let d=s.get(p);if(!c||d?.exported){if(m.startsWith("__ts__:")){let x=m.slice(7);r.push(`export type ${p} = ${x};`)}else if(m==="")r.push(`export type ${p} = any;`);else{let x=Ne(m);r.push(`export declare const ${p}: { check(value: any): boolean; default: ${x}; (value: any): boolean; };`)}l.add(p)}}for(let[p,m]of a){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let x=m.typeParams.length>0?`<${m.typeParams.join(", ")}>`:"";if(m.declaration){let _=m.declaration.trim(),E=_.match(/^\/\/\s*TS:\s*(.+)$/s);if(E)r.push(`export type ${p}${x} = ${E[1].trim()};`);else{let b=_.split(`
362
366
  `).map(w=>w.trim()).filter(w=>w.length>0).map(w=>` ${w}`).join(`
363
367
  `);r.push(`export interface ${p}${x} {
364
368
  ${b}
365
- }`)}}else r.push(`export declare function ${p}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);l.add(p)}let u=Ac(n);for(let[p,m]of u){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let x=new Set(m.typeParams?.map(w=>w.split("=")[0].trim())??[]),E=m.typeParams?`<${m.typeParams.join(", ")}>`:"",$=m.params.map((w,_)=>{let S=_===m.params.length-1;if(w.example.startsWith("[")&&w.example.endsWith("]")&&S){let k=w.example.slice(1,-1).trim(),M=!k||k==="null"?"any":x.has(k)?k:Ne(k);return`...${w.name}: ${M}[]`}if(w.example.startsWith("[")&&w.example.endsWith("]")){let k=w.example.slice(1,-1).trim(),M=!k||k==="null"?"any":x.has(k)?k:Ne(k);return`${w.name}: ${M}[]`}let T=w.example==="null"?"any":x.has(w.example)?w.example:Ne(w.example);return`${w.name}: ${T}`}).join(", "),b=m.returns!==void 0?m.returns==="null"?"any":x.has(m.returns)?m.returns:Ne(m.returns):"void";r.push(`export type ${p}${E} = (${$}) => ${b};`),l.add(p)}let f=Nc(n);for(let p of f){if(l.has(p.name))continue;let m=s.get(p.name);if(!(c?!!m?.exported:!0))continue;let h=Dc(p.value);r.push(`export declare const ${p.name}: ${h};`),l.add(p.name)}if(t.moduleName){let p=r.map(m=>` ${m}`).join(`
366
- `);return`declare module '${t.moduleName}' {
369
+ }`)}}else r.push(`export declare function ${p}(...args: any[]): { check(value: any): boolean; (value: any): boolean; };`);l.add(p)}let u=Rc(t);for(let[p,m]of u){if(l.has(p))continue;let d=s.get(p);if(!(c?!!d?.exported:!0))continue;let x=new Set(m.typeParams?.map(w=>w.split("=")[0].trim())??[]),_=m.typeParams?`<${m.typeParams.join(", ")}>`:"",E=m.params.map((w,T)=>{let S=T===m.params.length-1;if(w.example.startsWith("[")&&w.example.endsWith("]")&&S){let j=w.example.slice(1,-1).trim(),k=!j||j==="null"?"any":x.has(j)?j:Ne(j);return`...${w.name}: ${k}[]`}if(w.example.startsWith("[")&&w.example.endsWith("]")){let j=w.example.slice(1,-1).trim(),k=!j||j==="null"?"any":x.has(j)?j:Ne(j);return`${w.name}: ${k}[]`}let $=w.example==="null"?"any":x.has(w.example)?w.example:Ne(w.example);return`${w.name}: ${$}`}).join(", "),b=m.returns!==void 0?m.returns==="null"?"any":x.has(m.returns)?m.returns:Ne(m.returns):"void";r.push(`export type ${p}${_} = (${E}) => ${b};`),l.add(p)}let f=Ic(t);for(let p of f){if(l.has(p.name))continue;let m=s.get(p.name);if(!(c?!!m?.exported:!0))continue;let h=Oc(p.value);r.push(`export declare const ${p.name}: ${h};`),l.add(p.name)}if(n.moduleName){let p=r.map(m=>` ${m}`).join(`
370
+ `);return`declare module '${n.moduleName}' {
367
371
  ${p}
368
372
  }
369
373
  `}return r.join(`
370
374
  `)+`
371
- `}function Ne(e){let n=e.trim();if(Oc(n)){let t=Bc(n).map(r=>Ne(r.trim()));return[...new Set(t)].join(" | ")}return/^['"]/.test(n)?"string":n==="true"||n==="false"?"boolean":n==="null"?"null":n==="undefined"?"undefined":/^[+-]?\d+\.\d+$/.test(n)||/^[+-]?\d+$/.test(n)?"number":n.startsWith("[")?"any[]":n.startsWith("{")?"Record<string, any>":"any"}function Oc(e){let n=0,t=null;for(let r of e){if(t){r===t&&(t=null);continue}if(r==="'"||r==='"'||r==="`"){t=r;continue}if(r==="{"||r==="["||r==="(")n++;else if(r==="}"||r==="]"||r===")")n--;else if(r==="|"&&n===0)return!0}return!1}function Bc(e){let n=[],t=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==="("?t++:(i==="}"||i==="]"||i===")")&&t--,i==="|"&&t===0?(n.push(s),s=""):s+=i}return s&&n.push(s),n}import{s as Di}from"tosijs-schema";function Ii(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function Cn(e){return Di.infer(e)}function Rr(e){return Cn(e)}Rr.type=Ii;Rr.infer=Cn;var Lc=new Proxy(Rr,{get(e,n){return n==="type"?Ii:n==="infer"?Cn:Di[n]},apply(e,n,t){return Cn(t[0])}});async function Rn(e){let n=`${ce}:${e}`;if(typeof crypto<"u"&&crypto.subtle){let s=new TextEncoder().encode(n),i=await crypto.subtle.digest("SHA-256",s);return Array.from(new Uint8Array(i)).map(a=>a.toString(16).padStart(2,"0")).join("")}let t=5381;for(let r=0;r<n.length;r++)t=(t<<5)+t+n.charCodeAt(r)>>>0;return t.toString(16)}function Fc(e){let n=`${ce}:${e}`,t=5381;for(let r=0;r<n.length;r++)t=(t<<5)+t+n.charCodeAt(r)>>>0;return t.toString(16)}var Uc="tjs-metadata-cache",qc=1,ee="modules",Pn=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((n,t)=>{if(typeof indexedDB>"u"){n();return}let r=indexedDB.open(Uc,qc);r.onerror=()=>{console.warn("MetadataCache: Failed to open IndexedDB",r.error),n()},r.onsuccess=()=>{this.db=r.result,n()},r.onupgradeneeded=s=>{let i=s.target.result;if(!i.objectStoreNames.contains(ee)){let o=i.createObjectStore(ee,{keyPath:"hash"});o.createIndex("timestamp","timestamp"),o.createIndex("version","version")}}})}async get(n){if(!this.db){this.stats.misses++;return}let t=await Rn(n);return new Promise(r=>{let o=this.db.transaction(ee,"readonly").objectStore(ee).get(t);o.onerror=()=>{this.stats.misses++,r(void 0)},o.onsuccess=()=>{let a=o.result;if(a&&a.version!==ce){this.stats.misses++,r(void 0);return}a?this.stats.hits++:this.stats.misses++,r(a)}})}async getTranspile(n){return(await this.get(n))?.transpile}async getTJS(n){return(await this.get(n))?.tjs}async setTranspile(n,t){await this._set(n,{transpile:t})}async setTJS(n,t){await this._set(n,{tjs:t})}async _set(n,t){if(!this.db)return;let r=await Rn(n);return new Promise((s,i)=>{let a=this.db.transaction(ee,"readwrite").objectStore(ee),c=a.get(r);c.onsuccess=()=>{let l=c.result,u={hash:r,version:ce,timestamp:Date.now(),transpile:t.transpile??l?.transpile,tjs:t.tjs??l?.tjs},f=a.put(u);f.onerror=()=>i(f.error),f.onsuccess=()=>s()},c.onerror=()=>i(c.error)})}async delete(n){if(!this.db)return;let t=await Rn(n);return new Promise((r,s)=>{let a=this.db.transaction(ee,"readwrite").objectStore(ee).delete(t);a.onerror=()=>s(a.error),a.onsuccess=()=>r()})}async clear(){if(this.db)return new Promise((n,t)=>{let i=this.db.transaction(ee,"readwrite").objectStore(ee).clear();i.onerror=()=>t(i.error),i.onsuccess=()=>{this.stats={hits:0,misses:0},n()}})}async prune(n){if(!this.db)return 0;let t=Date.now()-n;return new Promise((r,s)=>{let a=this.db.transaction(ee,"readwrite").objectStore(ee).index("timestamp"),c=IDBKeyRange.upperBound(t),l=0,u=a.openCursor(c);u.onsuccess=f=>{let p=f.target.result;p?(p.delete(),l++,p.continue()):r(l)},u.onerror=()=>s(u.error)})}async pruneOldVersions(){return this.db?new Promise((n,t)=>{let s=this.db.transaction(ee,"readwrite").objectStore(ee),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(c.value.version!==ce&&(c.delete(),i++),c.continue()):n(i)},o.onerror=()=>t(o.error)}):0}async getStats(){let n=await this.count(),t=await this.estimateSize(),r=this.stats.hits+this.stats.misses,s=r>0?this.stats.hits/r:0;return{entries:n,bytes:t,hits:this.stats.hits,misses:this.stats.misses,hitRate:s}}async count(){return this.db?new Promise((n,t)=>{let i=this.db.transaction(ee,"readonly").objectStore(ee).count();i.onerror=()=>t(i.error),i.onsuccess=()=>n(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((n,t)=>{let s=this.db.transaction(ee,"readonly").objectStore(ee),i=0,o=s.openCursor();o.onsuccess=a=>{let c=a.target.result;c?(i+=JSON.stringify(c.value).length*2,c.continue()):n(i)},o.onerror=()=>t(o.error)})}close(){this.db&&(this.db.close(),this.db=null)}isAvailable(){return this.db!==null}resetStats(){this.stats={hits:0,misses:0}}},Dt=null;async function Nn(){return Dt||(Dt=new Pn,await Dt.open()),Dt}function Wc(e){Dt=e}var Jc={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function Vc(e,n={}){let t={...Jc,...n},r=[],s,i=new Map,o;try{let u=he(e,{filename:t.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=t.safeAssign!==void 0?t.safeAssign:o,c=t.strict?"error":"warning",l=[Oi()];if(ls(s,{FunctionDeclaration(u,f,p){let m=Oi();l.push(m);for(let d of u.params)zc(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 f=l[l.length-1];for(let p of u.declarations)p.id.type==="Identifier"&&f.declarations.set(p.id.name,{node:p.id,kind:u.kind,used:!1})}}),ye(s,{Identifier(u){for(let f=l.length-1;f>=0;f--){let p=l[f].declarations.get(u.name);if(p){p.used=!0;break}}}}),t.unusedVariables)for(let u of l)for(let[f,p]of u.declarations)f.startsWith("_")||!p.used&&p.kind!=="function"&&r.push({severity:"warning",message:`'${f}' is declared but never used`,line:p.node.loc?.start?.line,column:p.node.loc?.start?.column,rule:"no-unused-vars"});if(t.unreachableCode&&ye(s,{BlockStatement(u){let f=!1;for(let p of u.body){if(f){r.push({severity:"warning",message:"Unreachable code after return statement",line:p.loc?.start?.line,column:p.loc?.start?.column,rule:"no-unreachable"});break}p.type==="ReturnStatement"&&(f=!0)}}}),a){let u=new Set;ye(s,{VariableDeclaration(f){if(f.kind==="let")for(let p of f.declarations){if(p.id.type!=="Identifier")continue;let m=p.id.name,d=i.has(m),h=p.init;(d||h&&!Pr(h))&&u.add(m)}}}),ye(s,{VariableDeclaration(f){if(f.kind==="let")for(let p of f.declarations){if(p.id.type!=="Identifier")continue;let m=p.id.name;i.has(m)||(p.init?Pr(p.init)&&r.push({severity:c,message:`'let ${m}' is initialized to ${Bi(p.init)} with no type annotation. Annotate (let ${m}: <example>) to record the intended type.`,line:p.loc?.start?.line,column:p.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:p.loc?.start?.line,column:p.loc?.start?.column,rule:"safe-assign-let-needs-type"}))}}}),ye(s,{AssignmentExpression(f){if(f.operator!=="="||f.left.type!=="Identifier")return;let p=f.left.name;u.has(p)&&Pr(f.right)&&r.push({severity:c,message:`Cannot assign ${Bi(f.right)} to typed let '${p}'.`,line:f.loc?.start?.line,column:f.loc?.start?.column,rule:"safe-assign-no-nullish"})}})}return t.noExplicitNew&&ye(s,{NewExpression(u){let f="class";u.callee.type==="Identifier"?f=u.callee.name:u.callee.type==="MemberExpression"&&u.callee.property.type==="Identifier"&&(f=u.callee.property.name),r.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${f}(...) instead of new ${f}(...)`,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 Oi(){return{declarations:new Map}}function Pr(e){return e?e.type==="Identifier"&&e.name==="undefined"||e.type==="Literal"&&e.value===null||e.type==="UnaryExpression"&&e.operator==="void":!1}function Bi(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 zc(e,n,t){n.type==="Identifier"?e.declarations.set(n.name,{node:n,kind:t,used:!1}):n.type==="AssignmentPattern"&&n.left.type==="Identifier"&&e.declarations.set(n.left.name,{node:n.left,kind:t,used:!1})}function Gc(e){let n=new Array(e.length).fill(!1),t=0;for(;t<e.length;){let r=e[t],s=e[t+1];if(r==='"'||r==="'"||r==="`"){let i=r;for(t++;t<e.length;){if(e[t]==="\\"){t+=2;continue}if(e[t]===i){t++;break}t++}continue}if(r==="/"&&s==="/"){for(;t<e.length&&e[t]!==`
372
- `;)n[t]=!0,t++;continue}if(r==="/"&&s==="*"){let i=t;for(t+=2;t<e.length-1&&!(e[t]==="*"&&e[t+1]==="/");)t++;let o=Math.min(e.length,t+2);for(let a=i;a<o;a++)n[a]=!0;t=o;continue}t++}return n}function Fi(e){let n=[],t=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==="{"&&t++,i==="}"&&t--),n[s]=t}return n}function Li(e){let n=e.split(`
373
- `),t=n.filter(r=>r.trim().length>0).reduce((r,s)=>{let i=s.match(/^(\s*)/)?.[1].length||0;return Math.min(r,i)},1/0);return t===0||t===1/0?e:n.map(r=>r.slice(t)).join(`
374
- `)}function Zc(e){return e.split(`
375
- `).map((t,r)=>r===0?t:t.replace(/^[ \t]*\*[ \t]?/,"")).join(`
376
- `)}function Ui(e){let n=[],t=Fi(e),r=Gc(e),s=/(?<=^[ \t]*)\/\*#([\s\S]*?)\*\//gm,i=/(?<=^[ \t]*)\/\*\*([\s\S]*?)\*\//gm,o=/\bfunction\s+(\w+)\s*\(/g,a=/\bclass\s+(\w+)(?:\s+extends\s+(\w+))?\s*\{/g,c=[],l;for(;(l=s.exec(e))!==null;){if(t[l.index]!==0)continue;let f=Li(l[1]).trim();f&&c.push({type:"doc",index:l.index,data:f})}for(;(l=i.exec(e))!==null;){if(t[l.index]!==0)continue;let f=Li(Zc(l[1])).trim();f&&c.push({type:"doc",index:l.index,data:f})}for(;(l=o.exec(e))!==null;){if(r[l.index]||t[l.index]!==0)continue;let f=l[1],p=l.index+l[0].length-1,m=Dn(e,p+1);if(m===-1)continue;let d=e.slice(p+1,m),h=m+1,x="";for(;h<e.length&&/\s/.test(e[h]);)h++;if(e[h]===":"){let $=h;h++;let b=0,w=null,_=!1;for(;h<e.length;){let S=e[h],T=h>0?e[h-1]:"";if(w)S===w&&T!=="\\"&&(w=null);else if(S==='"'||S==="'"||S==="`")w=S,_=!0;else if(S==="{"){if(b===0&&_)break;b++,_=!0}else S==="("||S==="["?(b++,_=!0):S==="}"||S===")"||S==="]"?b--:/\s/.test(S)||(_=!0);h++}x=e.slice($,h).trimEnd()}let E=`function ${f}(${d})${x}`;c.push({type:"function",index:l.index,data:{name:f,signature:E}})}for(;(l=a.exec(e))!==null;){if(t[l.index]!==0||r[l.index])continue;let f=l[1],p=l[2]||void 0,m=l.index+l[0].length,d=Yc(e,m-1);if(d===-1)continue;let h=e.slice(m,d),x=Kc(h);c.push({type:"class",index:l.index,data:{name:f,extendsName:p,members:x}})}c.sort((f,p)=>f.index-p.index);for(let f of c)f.type==="doc"?n.push({type:"doc",content:f.data}):f.type==="function"?n.push({type:"function",name:f.data.name,signature:f.data.signature}):f.type==="class"&&n.push({type:"class",name:f.data.name,extendsName:f.data.extendsName,members:f.data.members});let u=n.map(f=>f.type==="doc"?f.content:f.type==="function"?`\`\`\`tjs
375
+ `}function Ne(e){let t=e.trim();if(Lc(t)){let n=Fc(t).map(r=>Ne(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 Lc(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 Fc(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 as Oi}from"tosijs-schema";function Bi(e){return e===null?"null":e===void 0?"undefined":Array.isArray(e)?"array":typeof e}function Rn(e){return Oi.infer(e)}function Dr(e){return Rn(e)}Dr.type=Bi;Dr.infer=Rn;var Uc=new Proxy(Dr,{get(e,t){return t==="type"?Bi:t==="infer"?Rn:Oi[t]},apply(e,t,n){return Rn(n[0])}});async function Pn(e){let t=`${ce}:${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 qc(e){let t=`${ce}:${e}`,n=5381;for(let r=0;r<t.length;r++)n=(n<<5)+n+t.charCodeAt(r)>>>0;return n.toString(16)}var Wc="tjs-metadata-cache",Jc=1,te="modules",Nn=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(Wc,Jc);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 Pn(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!==ce){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 Pn(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:ce,timestamp:Date.now(),transpile:n.transpile??l?.transpile,tjs:n.tjs??l?.tjs},f=a.put(u);f.onerror=()=>i(f.error),f.onsuccess=()=>s()},c.onerror=()=>i(c.error)})}async delete(t){if(!this.db)return;let n=await Pn(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=f=>{let p=f.target.result;p?(p.delete(),l++,p.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!==ce&&(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}}},Dt=null;async function Dn(){return Dt||(Dt=new Nn,await Dt.open()),Dt}function Vc(e){Dt=e}var zc={unusedVariables:!0,undefinedVariables:!0,unreachableCode:!0,noExplicitNew:!0};function Gc(e,t={}){let n={...zc,...t},r=[],s,i=new Map,o;try{let u=he(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=[Li()];if(fs(s,{FunctionDeclaration(u,f,p){let m=Li();l.push(m);for(let d of u.params)Zc(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 f=l[l.length-1];for(let p of u.declarations)p.id.type==="Identifier"&&f.declarations.set(p.id.name,{node:p.id,kind:u.kind,used:!1})}}),ye(s,{Identifier(u){for(let f=l.length-1;f>=0;f--){let p=l[f].declarations.get(u.name);if(p){p.used=!0;break}}}}),n.unusedVariables)for(let u of l)for(let[f,p]of u.declarations)f.startsWith("_")||!p.used&&p.kind!=="function"&&r.push({severity:"warning",message:`'${f}' is declared but never used`,line:p.node.loc?.start?.line,column:p.node.loc?.start?.column,rule:"no-unused-vars"});if(n.unreachableCode&&ye(s,{BlockStatement(u){let f=!1;for(let p of u.body){if(f){r.push({severity:"warning",message:"Unreachable code after return statement",line:p.loc?.start?.line,column:p.loc?.start?.column,rule:"no-unreachable"});break}p.type==="ReturnStatement"&&(f=!0)}}}),a){let u=new Set;ye(s,{VariableDeclaration(f){if(f.kind==="let")for(let p of f.declarations){if(p.id.type!=="Identifier")continue;let m=p.id.name,d=i.has(m),h=p.init;(d||h&&!Ir(h))&&u.add(m)}}}),ye(s,{VariableDeclaration(f){if(f.kind==="let")for(let p of f.declarations){if(p.id.type!=="Identifier")continue;let m=p.id.name;i.has(m)||(p.init?Ir(p.init)&&r.push({severity:c,message:`'let ${m}' is initialized to ${Fi(p.init)} with no type annotation. Annotate (let ${m}: <example>) to record the intended type.`,line:p.loc?.start?.line,column:p.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:p.loc?.start?.line,column:p.loc?.start?.column,rule:"safe-assign-let-needs-type"}))}}}),ye(s,{AssignmentExpression(f){if(f.operator!=="="||f.left.type!=="Identifier")return;let p=f.left.name;u.has(p)&&Ir(f.right)&&r.push({severity:c,message:`Cannot assign ${Fi(f.right)} to typed let '${p}'.`,line:f.loc?.start?.line,column:f.loc?.start?.column,rule:"safe-assign-no-nullish"})}})}return n.noExplicitNew&&ye(s,{NewExpression(u){let f="class";u.callee.type==="Identifier"?f=u.callee.name:u.callee.type==="MemberExpression"&&u.callee.property.type==="Identifier"&&(f=u.callee.property.name),r.push({severity:"warning",message:`Unnecessary 'new' keyword. In TJS, classes are callable without 'new': ${f}(...) instead of new ${f}(...)`,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 Li(){return{declarations:new Map}}function Ir(e){return e?e.type==="Identifier"&&e.name==="undefined"||e.type==="Literal"&&e.value===null||e.type==="UnaryExpression"&&e.operator==="void":!1}function Fi(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 Zc(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 Hc(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]!==`
376
+ `;)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 qi(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 Ui(e){let t=e.split(`
377
+ `),n=t.filter(r=>r.trim().length>0).reduce((r,s)=>{let i=s.match(/^(\s*)/)?.[1].length||0;return Math.min(r,i)},1/0);return n===0||n===1/0?e:t.map(r=>r.slice(n)).join(`
378
+ `)}function Yc(e){return e.split(`
379
+ `).map((n,r)=>r===0?n:n.replace(/^[ \t]*\*[ \t]?/,"")).join(`
380
+ `)}function Wi(e){let t=[],n=qi(e),r=Hc(e),s=/(?<=^[ \t]*)\/\*#([\s\S]*?)\*\//gm,i=/(?<=^[ \t]*)\/\*\*([\s\S]*?)\*\//gm,o=/\bfunction\s+(\w+)\s*\(/g,a=/\bclass\s+(\w+)(?:\s+extends\s+(\w+))?\s*\{/g,c=[],l;for(;(l=s.exec(e))!==null;){if(n[l.index]!==0)continue;let f=Ui(l[1]).trim();f&&c.push({type:"doc",index:l.index,data:f})}for(;(l=i.exec(e))!==null;){if(n[l.index]!==0)continue;let f=Ui(Yc(l[1])).trim();f&&c.push({type:"doc",index:l.index,data:f})}for(;(l=o.exec(e))!==null;){if(r[l.index]||n[l.index]!==0)continue;let f=l[1],p=l.index+l[0].length-1,m=In(e,p+1);if(m===-1)continue;let d=e.slice(p+1,m),h=m+1,x="";for(;h<e.length&&/\s/.test(e[h]);)h++;if(e[h]===":"){let E=h;h++;let b=0,w=null,T=!1;for(;h<e.length;){let S=e[h],$=h>0?e[h-1]:"";if(w)S===w&&$!=="\\"&&(w=null);else if(S==='"'||S==="'"||S==="`")w=S,T=!0;else if(S==="{"){if(b===0&&T)break;b++,T=!0}else S==="("||S==="["?(b++,T=!0):S==="}"||S===")"||S==="]"?b--:/\s/.test(S)||(T=!0);h++}x=e.slice(E,h).trimEnd()}let _=`function ${f}(${d})${x}`;c.push({type:"function",index:l.index,data:{name:f,signature:_}})}for(;(l=a.exec(e))!==null;){if(n[l.index]!==0||r[l.index])continue;let f=l[1],p=l[2]||void 0,m=l.index+l[0].length,d=Xc(e,m-1);if(d===-1)continue;let h=e.slice(m,d),x=Qc(h);c.push({type:"class",index:l.index,data:{name:f,extendsName:p,members:x}})}c.sort((f,p)=>f.index-p.index);for(let f of c)f.type==="doc"?t.push({type:"doc",content:f.data}):f.type==="function"?t.push({type:"function",name:f.data.name,signature:f.data.signature}):f.type==="class"&&t.push({type:"class",name:f.data.name,extendsName:f.data.extendsName,members:f.data.members});let u=t.map(f=>f.type==="doc"?f.content:f.type==="function"?`\`\`\`tjs
377
381
  ${f.signature}
378
382
  \`\`\``:`\`\`\`tjs
379
- ${Hc(f)}
383
+ ${Kc(f)}
380
384
  \`\`\``).join(`
381
385
 
382
- `);return{items:n,markdown:u}}function Hc(e){let n=e.extendsName?`class ${e.name} extends ${e.extendsName} {`:`class ${e.name} {`;if(e.members.length===0)return`${n}
383
- }`;let t=e.members.map(r=>` ${r}`).join(`
384
- `);return`${n}
385
- ${t}
386
- }`}function Yc(e,n){let t=0,r=n,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==="{")t++;else if(i==="}"&&(t--,t===0))return r;r++}return-1}function Kc(e){let n=[],t=Fi(e),r=/(?:^|\n)\s*((?:(?:static|async|get|set)\s+)*)(constructor|#?\w+)\s*\(/g,s;for(;(s=r.exec(e))!==null;){if(t[s.index]!==0)continue;let i=s[1].trim(),o=s[2],a=s.index+s[0].length-1,c=Dn(e,a+1);if(c===-1)continue;let l=e.slice(a,c+1),u=c+1,f="";for(;u<e.length&&/\s/.test(e[u]);)u++;if(e[u]===":"){let m=u;for(;u<e.length&&e[u]!=="{";)u++;f=e.slice(m,u).trimEnd()}let p=i?`${i} `:"";n.push(`${p}${o}${l}${f}`)}return n}function Xc(e,n){let t=Ui(e),r="";for(let i of t.items)if(i.type==="doc")r+=i.content+`
386
+ `);return{items:t,markdown:u}}function Kc(e){let t=e.extendsName?`class ${e.name} extends ${e.extendsName} {`:`class ${e.name} {`;if(e.members.length===0)return`${t}
387
+ }`;let n=e.members.map(r=>` ${r}`).join(`
388
+ `);return`${t}
389
+ ${n}
390
+ }`}function Xc(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 Qc(e){let t=[],n=qi(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=In(e,a+1);if(c===-1)continue;let l=e.slice(a,c+1),u=c+1,f="";for(;u<e.length&&/\s/.test(e[u]);)u++;if(e[u]===":"){let m=u;for(;u<e.length&&e[u]!=="{";)u++;f=e.slice(m,u).trimEnd()}let p=i?`${i} `:"";t.push(`${p}${o}${l}${f}`)}return t}function el(e,t){let n=Wi(e),r="";for(let i of n.items)if(i.type==="doc")r+=i.content+`
387
391
 
388
- `;else if(i.type==="function"){let o=n?.[i.name];if(r+=`## ${i.name}
392
+ `;else if(i.type==="function"){let o=t?.[i.name];if(r+=`## ${i.name}
389
393
 
390
394
  `,r+=`\`\`\`tjs
391
395
  ${i.signature}
392
396
  \`\`\`
393
397
 
394
398
  `,o?.params&&Object.keys(o.params).length>0){r+=`**Parameters:**
395
- `;for(let[a,c]of Object.entries(o.params)){let l=c.required?"":" *(optional)*",u=c.type?_e(c.type):"any",f=c.example!==void 0?el(c.example):null,p=f?` (e.g. \`${f}\`)`:"";r+=`- \`${a}\`: ${u}${l}${p}
399
+ `;for(let[a,c]of Object.entries(o.params)){let l=c.required?"":" *(optional)*",u=c.type?_e(c.type):"any",f=c.example!==void 0?nl(c.example):null,p=f?` (e.g. \`${f}\`)`:"";r+=`- \`${a}\`: ${u}${l}${p}
396
400
  `}r+=`
397
401
  `}o?.returns&&(r+=`**Returns:** ${o.returns.kind||"void"}
398
402
 
@@ -403,8 +407,8 @@ ${i.signature}
403
407
  `)+`
404
408
  `;r+="```tjs\n"+o+a+"}\n```\n\n"}let{tests:s}=Et(e);for(let i of s)i.description&&(/^test \d+$/.test(i.description)||(r+=`### ${i.description} (test cases)
405
409
 
406
- `,r+="```tjs\n",r+=Qc(i.body).trim()+`
407
- `,r+="```\n\n"));return r.trim()||"*No documentation available*"}function Qc(e){let n=0,t="",r=null;for(;n<e.length;){let s=e[n],i=n>0?e[n-1]:"";if(r){t+=s,s===r&&i!=="\\"&&(r=null),n++;continue}if(s==='"'||s==="'"||s==="`"){r=s,t+=s,n++;continue}if(e.slice(n).startsWith("expect(")){let o=n+7,a=Dn(e,o);if(a>o){let l=e.slice(a+1).match(/^\.(\w+)(\()?/);if(l&&l[2]==="("){let u=a+1+l[0].length,f=Dn(e,u);if(f>=u){let p=e.slice(o,a),m=l[1],d=e.slice(u,f);t+=tl(p,m,d),n=f+1;continue}}}}t+=s,n++}return t}function Dn(e,n){let t=1,r=n,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==="(")t++;else if(i===")"&&(t--,t===0))return r;r++}return-1}function el(e){if(typeof e=="function")return null;try{let n=JSON.stringify(e);return n===void 0?null:n}catch{return null}}function tl(e,n,t){let r=e.trim(),s=t.trim();switch(n){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} // .${n}(${s})`}}import{existsSync as nl,readFileSync as rl}from"node:fs";import{dirname as Nr,isAbsolute as sl,resolve as It,sep as il}from"node:path";var Dr=[".tjs",".ts",".js"],ol={readFile(e){try{return rl(e,"utf8")}catch{return null}},exists(e){try{return nl(e)}catch{return!1}}},Ir=class{cache=new Map;fs;baseDir;bareSpecifierRoots;cacheLimit;constructor(n={}){this.fs=n.fs??ol,this.baseDir=n.baseDir??process.cwd(),this.bareSpecifierRoots=n.bareSpecifierRoots??[],this.cacheLimit=n.cacheLimit??256}resolve(n,t){return n.startsWith("http://")||n.startsWith("https://")||n.startsWith("data:")||n.startsWith("file://")?null:n.startsWith("./")||n.startsWith("../")?this.tryExtensions(It(t?Nr(t):this.baseDir,n)):sl(n)?this.tryExtensions(n):this.resolveBare(n,t)}load(n,t){let r=this.resolve(n,t);if(!r)return null;let s=this.cache.get(r);if(s)return s;let i=this.fs.readFile(r);if(i===null)return null;let o;try{o=he(i,{filename:r})}catch{return null}let a=al(o.ast),c=cl(o.ast),l={path:r,source:i,parseResult:o,imports:a,exports:c};if(this.cacheLimit>0){if(this.cache.size>=this.cacheLimit){let u=this.cache.keys().next().value;u!==void 0&&this.cache.delete(u)}this.cache.set(r,l)}return l}clearCache(){this.cache.clear()}tryExtensions(n){if(Dr.some(t=>n.endsWith(t)))return this.fs.exists(n)?n:null;for(let t of Dr){let r=n+t;if(this.fs.exists(r))return r}for(let t of Dr){let r=It(n,"index"+t);if(this.fs.exists(r))return r}return null}resolveBare(n,t){for(let s of this.bareSpecifierRoots){let i=this.tryExtensions(It(s,n));if(i)return i}let r=t?Nr(t):this.baseDir;for(r=It(r);;){let s=this.tryExtensions(It(r,"node_modules",n));if(s)return s;let i=Nr(r);if(i===r)break;r=i}return null}};function al(e){let n=[];if(!e||!Array.isArray(e.body))return n;for(let t of e.body){if(t.type!=="ImportDeclaration")continue;let r=t.source?.value;if(typeof r=="string")for(let s of t.specifiers??[]){let i=s.local?.name;if(typeof i=="string")switch(s.type){case"ImportSpecifier":n.push({specifier:r,local:i,imported:s.imported?.name??i,namespace:!1});break;case"ImportDefaultSpecifier":n.push({specifier:r,local:i,imported:"default",namespace:!1});break;case"ImportNamespaceSpecifier":n.push({specifier:r,local:i,imported:"*",namespace:!0});break}}}return n}function cl(e){let n=[];if(!e||!Array.isArray(e.body))return n;for(let t of e.body)if(t.type==="ExportNamedDeclaration"){if(t.declaration){let r=t.declaration;if(r.type==="FunctionDeclaration"&&r.id?.name)n.push({name:r.id.name,kind:"function"});else if(r.type==="ClassDeclaration"&&r.id?.name)n.push({name:r.id.name,kind:"class"});else if(r.type==="VariableDeclaration")for(let s of r.declarations)s.id?.type==="Identifier"&&s.id.name&&n.push({name:s.id.name,kind:"variable"})}if(Array.isArray(t.specifiers))for(let r of t.specifiers){let s=r.exported?.name;typeof s=="string"&&n.push({name:s,kind:t.source?"re-export":"unknown",fromSpecifier:t.source?.value})}}else if(t.type==="ExportDefaultDeclaration"){let r=t.declaration,s=r?.type==="FunctionDeclaration"||r?.type==="FunctionExpression"||r?.type==="ArrowFunctionExpression"?"function":r?.type==="ClassDeclaration"||r?.type==="ClassExpression"?"class":"unknown";n.push({name:"default",kind:s})}else if(t.type==="ExportAllDeclaration"){let r=t.source?.value;typeof r=="string"&&n.push({name:"*",kind:"re-export",fromSpecifier:r})}return n}function ll(e){let n=e instanceof Map?e:new Map(Object.entries(e)),t=s=>s.split("/").join(il),r=s=>n.get(s)??n.get(t(s))??null;return{readFile:s=>r(s),exists:s=>r(s)!==null}}import{s as y,validate as Or,filter as Yi}from"tosijs-schema";function qi(e,n){return(e instanceof String||e instanceof Number||e instanceof Boolean)&&(e=e.valueOf()),(n instanceof String||n instanceof Number||n instanceof Boolean)&&(n=n.valueOf()),!!(e===n||typeof e=="number"&&typeof n=="number"&&isNaN(e)&&isNaN(n)||e==null&&n==null)}var re=class{$error=!0;message;op;cause;constructor(n,t,r){this.message=n,this.op=t,this.cause=r}toString(){return`AgentError[${this.op}]: ${this.message}`}toJSON(){return{$error:!0,message:this.message,op:this.op}}};function ul(e){return e instanceof re||e&&e.$error===!0}var ot=new Map,fl=3600*1e3,pl=100*1024,Br="proc_";function Lr(e){return typeof e=="string"&&e.startsWith(Br)}function Fr(e){let n=ot.get(e);if(!n)throw new Error(`Procedure not found: ${e}`);if(Date.now()>n.expiresAt)throw ot.delete(e),new Error(`Procedure expired: ${e}`);return n.ast}function ml(){return typeof crypto<"u"&&crypto.randomUUID?Br+crypto.randomUUID():Br+Math.random().toString(36).slice(2)+Date.now().toString(36)}var Ki=new Set(["__proto__","constructor","prototype"]);function Wi(e){if(Ki.has(e))throw new Error(`Security Error: Access to '${e}' is forbidden`)}var dl=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function gl(e){try{let n=new URL(e);if(n.protocol!=="http:"&&n.protocol!=="https:")return!0;let t=n.hostname.toLowerCase();return!!(dl.has(t)||t.endsWith(".internal")||t.endsWith(".local")||t==="169.254.169.254"||/^10\./.test(t)||/^192\.168\./.test(t)||/^172\.(1[6-9]|2\d|3[01])\./.test(t))}catch{return!0}}function yl(e){return!!(/\([^)]*[+*][^)]*\)[+*]/.test(e)||/\(([^|)]+)\|\1\)[+*]/.test(e)||/\(\.\*\)\+/.test(e)||/\(\.\+\)\+/.test(e)||/\(\[.*\]\+\)\+/.test(e))}function De(e){return{...e,state:Object.create(e.state)}}function hl(e,n){let t={},r=new Set([...Object.keys(e),...Object.keys(n)]);for(let s of r){let i=e[s],o=n[s];o!==i&&(t[s]=o)}return t}function j(e,n){if(e&&typeof e=="object"&&e.$kind==="arg")return n.args[e.path];if(e&&typeof e=="object"&&e.$expr)return Y(e,n);if(typeof e=="string"){if(e.startsWith("args.")&&!("args"in n.state))return n.args[e.replace("args.","")];if(e.includes(".")){let t=e.split(".");for(let s of t)if(Ki.has(s))throw new Error(`Security Error: Access to '${s}' is forbidden`);let r=n.state[t[0]];if(r!==void 0){for(let s=1;s<t.length;s++)r=r?.[t[s]];return r}}return e in n.state?n.state[e]:e}if(e&&typeof e=="object"&&!Array.isArray(e)&&e.constructor===Object){let t={};for(let r of Object.keys(e))t[r]=j(e[r],n);return t}return Array.isArray(e)?e.map(t=>j(t,n)):e}function Ze(e,n,t){return new Proxy(n,{get(r,s){if(s in r)return r[s];let i=t?.[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 n=typeof e;if(n==="string")return{type:"string"};if(n==="number")return Number.isInteger(e)?{type:"integer"}:{type:"number"};if(n==="boolean")return{type:"boolean"};if(Array.isArray(e))return e.length===0?{type:"array"}:{type:"array",items:it(e[0])};if(n==="object"){let t={},r=[];for(let[s,i]of Object.entries(e))t[s]=it(i),r.push(s);return{type:"object",properties:t,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,n,t)=>JSON.stringify(e,n,t)}),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,n,t)=>Array.from(e,n,t),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,...n)=>Object.assign({},e,...n),hasOwn:(e,n)=>Object.hasOwn(e,n)},{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,n)=>{let t=it(n),r=Yi(e,t);if(r instanceof Error)throw r;return r},Schema:{...y,response:(e,n)=>{let t=n?.schema!=null?n.schema:it(n);return{type:"json_schema",json_schema:{name:e,strict:!0,schema:t}}},fromExample:e=>it(e),isValid:(e,n)=>n?.schema!=null?Or(e,n):Or(e,it(n))},Set:(e=[])=>{let n=[...new globalThis.Set(e)];return{add(t){return n.includes(t)||n.push(t),this},remove(t){let r=n.indexOf(t);return r!==-1&&n.splice(r,1),this},clear(){return n.length=0,this},has(t){return n.includes(t)},get size(){return n.length},toArray(){return[...n]},union(t){let r=t?.toArray?.()??t??[];return Me.Set([...n,...r])},intersection(t){let r=t?.toArray?.()??t??[];return Me.Set(n.filter(s=>r.includes(s)))},diff(t){let r=t?.toArray?.()??t??[];return Me.Set(n.filter(s=>!r.includes(s)))},forEach(t){n.forEach(t)},map(t){return Me.Set(n.map(t))},filter(t){return Me.Set(n.filter(t))},toJSON(){return[...n]}}},Date:(()=>{let e=t=>({get value(){return t.toISOString()},get timestamp(){return t.getTime()},get year(){return t.getFullYear()},get month(){return t.getMonth()+1},get day(){return t.getDate()},get hours(){return t.getHours()},get minutes(){return t.getMinutes()},get seconds(){return t.getSeconds()},get dayOfWeek(){return t.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(t.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=t.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"?t.toISOString():r==="date"?t.toISOString().split("T")[0]:r==="time"?t.toISOString().split("T")[1].split(".")[0]:r.replace("YYYY",String(t.getFullYear())).replace("MM",String(t.getMonth()+1).padStart(2,"0")).replace("DD",String(t.getDate()).padStart(2,"0")).replace("HH",String(t.getHours()).padStart(2,"0")).replace("mm",String(t.getMinutes()).padStart(2,"0")).replace("ss",String(t.getSeconds()).padStart(2,"0"))},isBefore(r){let s=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime();return t.getTime()<s},isAfter(r){let s=typeof r=="object"&&r.timestamp?r.timestamp:new globalThis.Date(r).getTime();return t.getTime()>s},toString(){return t.toISOString()},toJSON(){return t.toISOString()}}),n=t=>{let r=t!==void 0?new globalThis.Date(t):new globalThis.Date;if(isNaN(r.getTime()))throw new Error(`Invalid date: ${t}`);return e(r)};return n.now=()=>globalThis.Date.now(),n.parse=t=>e(new globalThis.Date(t)),n})()},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."},bl=.01,Ji=1e-4,Vi=.001,xl=new Set(["concat","slice","map","filter","flatMap","flat","toReversed","toSorted","toSpliced","repeat","padStart","padEnd","split","join","replace","replaceAll","substring","substr","trim","trimStart","trimEnd","toLowerCase","toUpperCase","match","matchAll","parse","stringify"]);function Y(e,n){if(e==null||typeof e!="object"||!("$expr"in e))return e;if(n.fuel&&(n.fuel.current-=bl,n.fuel.current<=0))throw new Error("Out of Fuel");switch(e.$expr){case"literal":return e.value;case"ident":{if(e.name in n.state)return n.state[e.name];if(e.name in n.args)return n.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 t=Y(e.object,n);if(e.optional&&t==null)return;let r=typeof e.property=="object"&&e.property!==null?Y(e.property,n):e.property;return Wi(String(r)),t?.[r]}case"binary":{let t=Y(e.left,n),r=Y(e.right,n);switch(e.op){case"+":{let s=t+r;if(typeof s=="string"&&n.fuel&&(n.fuel.current-=s.length*Ji,n.fuel.current<=0)){n.error=new re("Out of Fuel","expr.concat");return}return s}case"-":return t-r;case"*":return t*r;case"/":return t/r;case"%":return t%r;case"**":return t**r;case">":return t>r;case"<":return t<r;case">=":return t>=r;case"<=":return t<=r;case"==":return qi(t,r);case"!=":return!qi(t,r);case"===":return t===r;case"!==":return t!==r;default:throw new Error(`Unknown binary operator: ${e.op}`)}}case"unary":{let t=Y(e.argument,n);switch(e.op){case"!":return!t;case"-":return-t;case"+":return+t;case"typeof":return typeof t;default:throw new Error(`Unknown unary operator: ${e.op}`)}}case"logical":{let t=Y(e.left,n);return e.op==="&&"?t&&Y(e.right,n):e.op==="??"?t??Y(e.right,n):t||Y(e.right,n)}case"conditional":{let t=Y(e.test,n);return Y(t?e.consequent:e.alternate,n)}case"array":return e.elements.map(t=>Y(t,n));case"object":{let t={};for(let r of e.properties)t[r.key]=Y(r.value,n);return t}case"call":{if(e.callee==="Error"){let r=e.arguments.map(i=>Y(i,n)),s=typeof r[0]=="string"?r[0]:"Error";n.error=new re(s,"Error");return}if(e.callee in Me){let r=Me[e.callee];if(typeof r=="function"){let s=e.arguments.map(i=>Y(i,n));return r(...s)}}throw n.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 t=Y(e.object,n);if(e.optional&&t==null)return;let r=e.method;if(Wi(r),t==null)throw new Error(`Cannot call method '${r}' on ${t}`);let s=t[r];if(typeof s!="function")throw new Error(`'${r}' is not a function`);let i=e.arguments.map(a=>Y(a,n)),o=s.apply(t,i);if(n.fuel&&xl.has(r)){let a=0;if(typeof o=="string"?a=o.length*Ji:Array.isArray(o)?a=o.length*Vi:typeof o=="object"&&o!==null&&(a=Object.keys(o).length*Vi),n.fuel.current-=a,n.fuel.current<=0){n.error=new re("Out of Fuel",`expr.${r}`);return}}return o}default:throw new Error(`Unknown expression type: ${e.$expr}`)}}function P(e,n,t,r,s={}){let{docs:i="",timeoutMs:o=1e3,cost:a=1,effects:c="pure"}=typeof s=="string"?{docs:s}:s;return{op:e,inputSchema:n,outputSchema:t,exec:async(u,f)=>{let{op:p,result:m,...d}=u;if(f.error)return;let h=f.trace?{...f.state}:null,x=f.fuel.current,E,$;try{let b=f.costOverrides?.[e],w=b!==void 0?b:a,_=typeof w=="function"?w(d,f):w;if((f.fuel.current-=_)<=0){f.error=new re("Out of Fuel",e);return}let S=f.timeoutOverrides?.[e],T=S!==void 0?S:o,k=typeof T=="function"?T(d,f):T,M,R=async()=>r(u,f);if(E=k>0?await Promise.race([R(),new Promise((C,I)=>{M=setTimeout(()=>I(new Error(`Atom '${e}' timed out`)),k)})]).finally(()=>clearTimeout(M)):await R(),u.result){if(f.consts.has(u.result))throw new Error(`Cannot reassign const variable '${u.result}'`);if(E!==void 0&&t&&!Or(E,t)){f.error=new re(`Output validation failed for '${e}'`,e);return}f.state[u.result]=E,u.resultConst&&f.consts.add(u.result)}}catch(b){$=b.message||String(b),f.error=new re($,e,b)}finally{if(f.trace&&h){let b=hl(h,f.state);f.trace.push({op:e,input:d,stateDiff:b,result:E,error:$,fuelBefore:x,fuelAfter:f.fuel.current,timestamp:new Date().toISOString()})}}},docs:i,timeoutMs:o,cost:a,effects:c,create:u=>({op:e,...u})}}var pe=P("seq",y.object({steps:y.array(y.any)}),void 0,async({steps:e},n)=>{for(let t of e){if(n.output!==void 0||n.error)return;let r=n.resolver(t.op);if(!r)throw new Error(`Unknown Atom: ${t.op}`);await r.exec(t,n)}},{docs:"Sequence",timeoutMs:0,cost:.1}),wl=P("if",y.object({condition:y.any,then:y.array(y.any),else:y.array(y.any).optional}),void 0,async(e,n)=>{Y(e.condition,n)?await pe.exec({op:"seq",steps:e.then},n):e.else&&await pe.exec({op:"seq",steps:e.else},n)},{docs:"If/Else",timeoutMs:0,cost:.1}),Sl=P("while",y.object({condition:y.any,body:y.array(y.any)}),void 0,async(e,n)=>{for(;Y(e.condition,n);){if(n.signal?.aborted)throw new Error("Execution aborted");if((n.fuel.current-=.1)<=0)throw new Error("Out of Fuel");if(await pe.exec({op:"seq",steps:e.body},n),n.output!==void 0||n.error)return}},{docs:"While Loop",timeoutMs:0,cost:.1}),_l=P("return",void 0,y.any,async(e,n)=>{if(n.error)return n.output=n.error,n.error;if("value"in e){let r=j(e.value,n);if(!n.localCall&&r!==void 0&&r!==null&&!ul(r)&&(typeof r!="object"||Array.isArray(r))){let s=new re(`Agent must return an object, got ${Array.isArray(r)?"array":typeof r}`,"return");return n.error=s,n.output=s,s}return n.output=r,r}let t={};if(e.schema?.properties){for(let r of Object.keys(e.schema.properties))t[r]=n.state[r];if(e.filter!==!1){let r=Yi(t,e.schema);r instanceof Error||(t=r)}}return n.output=t,t},{docs:"Return",cost:.1}),Tl=P("try",y.object({try:y.array(y.any),catch:y.array(y.any).optional,catchParam:y.string.optional}),void 0,async(e,n)=>{if(await pe.exec({op:"seq",steps:e.try},n),n.error&&e.catch){let t=e.catchParam||"error";n.state[t]=n.error.message,n.state.errorOp=n.error.op,n.error=void 0,await pe.exec({op:"seq",steps:e.catch},n)}},{docs:"Try/Catch",timeoutMs:0,cost:.1}),El=P("Error",y.object({args:y.array(y.any).optional}),void 0,async(e,n)=>{let t=e.args?.[0]??"Error";n.error=new re(String(t),"Error")},{docs:"Trigger error flow",cost:.1}),$l=P("varSet",y.object({key:y.string,value:y.any}),void 0,async({key:e,value:n},t)=>{if(t.consts.has(e))throw new Error(`Cannot reassign const variable '${e}'`);t.state[e]=j(n,t)},{docs:"Set Variable",cost:.1}),kl=P("constSet",y.object({key:y.string,value:y.any}),void 0,async({key:e,value:n},t)=>{if(t.consts.has(e))throw new Error(`Cannot reassign const variable '${e}'`);if(e in t.state)throw new Error(`Cannot redeclare variable '${e}' as const`);t.state[e]=j(n,t),t.consts.add(e)},{docs:"Set Const Variable (immutable)",cost:.1}),jl=P("varGet",y.object({key:y.string}),y.any,async({key:e},n)=>j(e,n),{docs:"Get Variable",cost:.1}),vl=P("varsImport",y.object({keys:y.union([y.array(y.string),y.record(y.string)])}),void 0,async({keys:e},n)=>{if(Array.isArray(e))for(let t of e)n.state[t]=j({$kind:"arg",path:t},n);else for(let[t,r]of Object.entries(e))n.state[t]=j({$kind:"arg",path:r},n)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:.2}),Ml=P("varsLet",y.record(y.any),void 0,async(e,n)=>{for(let t of Object.keys(e))t==="op"||t==="result"||(n.state[t]=j(e[t],n))},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:.1}),Al=P("varsExport",y.object({keys:y.union([y.array(y.string),y.record(y.string)])}),y.record(y.any),async({keys:e},n)=>{let t={};if(Array.isArray(e))for(let r of e)t[r]=j(r,n);else for(let[r,s]of Object.entries(e))t[r]=j(s,n);return t},{docs:"Export variables from the current scope, with optional renaming.",cost:.2}),Cl=P("scope",y.object({steps:y.array(y.any)}),void 0,async({steps:e},n)=>{let t=De(n);await pe.exec({op:"seq",steps:e},t),t.output!==void 0&&(n.output=t.output)},{docs:"Create new scope",timeoutMs:0,cost:.1}),zi=256,Rl=P("callLocal",y.object({name:y.string,args:y.array(y.any)}),void 0,async({name:e,args:n},t)=>{let r=t.helpers?.[e];if(!r)return t.error=new re(`Unknown helper: ${e}`,"callLocal"),t.error;let s=(t.callDepth??0)+1;if(s>zi)return t.error=new re(`Maximum helper call depth (${zi}) exceeded \u2014 likely infinite recursion in '${e}'`,"callLocal"),t.error;let i=n.map(a=>j(a,t)),o={...t,state:{},consts:new Set,output:void 0,error:void 0,localCall:!0,callDepth:s};for(let a=0;a<r.paramNames.length;a++)o.state[r.paramNames[a]]=i[a];return await pe.exec({op:"seq",steps:r.steps},o),o.error&&(t.error=o.error),o.output},{docs:"Invoke a local helper function by name",timeoutMs:0,cost:.1}),Pl=P("map",y.object({items:y.array(y.any),as:y.string,steps:y.array(y.any)}),y.array(y.any),async({items:e,as:n,steps:t},r)=>{let s=[],i=j(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=De(r);a.state[n]=o,await pe.exec({op:"seq",steps:t},a),s.push(a.state.result??null)}return s},{docs:"Map Array",timeoutMs:0,cost:1}),Nl=P("filter",y.object({items:y.array(y.any),as:y.string,condition:y.any}),y.array(y.any),async({items:e,as:n,condition:t},r)=>{let s=[],i=j(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=De(r);a.state[n]=o,Y(t,a)&&s.push(o)}return s},{docs:"Filter Array",timeoutMs:0,cost:1}),Dl=P("reduce",y.object({items:y.array(y.any),as:y.string,accumulator:y.string,initial:y.any,steps:y.array(y.any)}),y.any,async({items:e,as:n,accumulator:t,initial:r,steps:s},i)=>{let o=j(e,i),a=j(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=De(i);u.state[n]=l,u.state[t]=c,await pe.exec({op:"seq",steps:s},u),c=u.state.result??c}return c},{docs:"Reduce Array",timeoutMs:0,cost:1}),Il=P("find",y.object({items:y.array(y.any),as:y.string,condition:y.any}),y.any,async({items:e,as:n,condition:t},r)=>{let s=j(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=De(r);if(o.state[n]=i,Y(t,o))return i}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),Ol=P("push",y.object({list:y.array(y.any),item:y.any}),y.array(y.any),async({list:e,item:n},t)=>{let r=j(e,t),s=j(n,t);return Array.isArray(r)&&r.push(s),r},{docs:"Push to Array",cost:1}),Bl=P("len",y.object({list:y.any}),y.number,async({list:e},n)=>{let t=j(e,n);return Array.isArray(t)||typeof t=="string"?t.length:0},{docs:"Length",cost:1}),Ll=P("split",y.object({str:y.string,sep:y.string}),y.array(y.string),async({str:e,sep:n},t)=>j(e,t).split(j(n,t)),{docs:"Split String",cost:1}),Fl=P("join",y.object({list:y.array(y.string),sep:y.string}),y.string,async({list:e,sep:n},t)=>j(e,t).join(j(n,t)),{docs:"Join String",cost:1}),Ul=P("template",y.object({tmpl:y.string,vars:y.record(y.any)}),y.string,async({tmpl:e,vars:n},t)=>j(e,t).replace(/\{\{(\w+)\}\}/g,(s,i)=>String(j(n[i],t)??"")),{docs:"String Template",cost:1}),ql=P("regexMatch",y.object({pattern:y.string,value:y.any}),y.boolean,async({pattern:e,value:n},t)=>{if(yl(e))throw new Error(`Suspicious regex pattern rejected (potential ReDoS): ${e}`);let r=j(n,t);return new RegExp(e).test(r)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),Wl=P("pick",y.object({obj:y.record(y.any),keys:y.array(y.string)}),y.record(y.any),async({obj:e,keys:n},t)=>{let r=j(e,t),s=j(n,t),i={};return r&&Array.isArray(s)&&s.forEach(o=>i[o]=r[o]),i},{docs:"Pick Keys",cost:1}),Jl=P("omit",y.object({obj:y.record(y.any),keys:y.array(y.string)}),y.record(y.any),async({obj:e,keys:n},t)=>{let r=j(e,t),s=new Set(j(n,t)),i={};return r&&Object.keys(r).forEach(o=>{s.has(o)||(i[o]=r[o])}),i},{docs:"Omit Keys",cost:1}),Vl=P("merge",y.object({a:y.record(y.any),b:y.record(y.any)}),y.record(y.any),async({a:e,b:n},t)=>({...j(e,t),...j(n,t)}),{docs:"Merge Objects",cost:1}),zl=P("keys",y.object({obj:y.record(y.any)}),y.array(y.string),async({obj:e},n)=>Object.keys(j(e,n)??{}),{docs:"Object Keys",cost:1}),Gi=10,Zi="X-Agent-Depth";function Gl(e,n){try{let r=new URL(e).hostname.toLowerCase();for(let s of n){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 Zl=P("httpFetch",y.object({url:y.string,method:y.string.optional,headers:y.record(y.string).optional,body:y.any.optional,responseType:y.string.optional}),y.any,async(e,n)=>{let t=j(e.url,n),r=j(e.method,n),s=j(e.headers,n)||{},i=j(e.body,n),o=j(e.responseType,n),a=n.context?.requestDepth??0;if(a>=Gi)throw new Error(`Agent request depth exceeded (max ${Gi}). This prevents recursive agent loops.`);if(n.capabilities.fetch)return n.capabilities.fetch(t,{method:r,headers:{...s,[Zi]:String(a+1)},body:i,signal:n.signal,responseType:o});let c=n.context?.allowedFetchDomains;if(c){if(!Gl(t,c))throw new Error(`Fetch blocked: domain not in allowlist. Allowed: ${c.join(", ")}`)}else{if(gl(t))throw new Error("Blocked URL: private/internal addresses not allowed in default fetch");try{let u=new URL(t).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: ${t}`,{cause:l})}}if(typeof globalThis.fetch=="function"){let l=await globalThis.fetch(t,{method:r,headers:{...s,[Zi]:String(a+1)},body:i?JSON.stringify(i):void 0,signal:n.signal});if(o==="dataUrl"){let f=await l.arrayBuffer(),p=new Uint8Array(f),m="";for(let x=0;x<p.length;x++)m+=String.fromCharCode(p[x]);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}),Hl=P("storeGet",y.object({key:y.string}),y.any,async({key:e},n)=>{let t=j(e,n);return n.capabilities.store?.get(t)},{docs:"Store Get",cost:5}),Yl=P("storeSet",y.object({key:y.string,value:y.any}),void 0,async({key:e,value:n},t)=>{let r=j(e,t),s=j(n,t);return t.capabilities.store?.set(r,s)},{docs:"Store Set",cost:5}),Kl=P("storeQuery",y.object({query:y.any}),y.array(y.any),async({query:e},n)=>n.capabilities.store?.query?.(j(e,n))??[],{docs:"Store Query",cost:5}),Xl=P("storeVectorSearch",y.object({collection:y.string.optional,vector:y.array(y.number),k:y.number.optional}),y.array(y.any),async({collection:e,vector:n,k:t},r)=>r.capabilities.store?.vectorSearch?.(j(e,r),j(n,r),j(t,r))??[],{docs:"Vector Search",cost:(e,n)=>5+(j(e.k,n)??5)}),Ql=P("llmPredict",y.object({prompt:y.string,options:y.any.optional}),y.string,async({prompt:e,options:n},t)=>{if(!t.capabilities.llm?.predict)throw new Error("Capability 'llm.predict' missing");return t.capabilities.llm.predict(j(e,t),j(n,t))},{docs:"LLM Predict",timeoutMs:12e4,cost:100}),eu=P("agentRun",y.object({agentId:y.any,input:y.any}),y.any,async({agentId:e,input:n},t)=>{let r=j(e,t),s=j(n,t),i=s;if(s&&typeof s=="object"&&!Array.isArray(s)){i={};for(let a in s)i[a]=j(s[a],t)}if(Lr(r)){let a=Fr(r),c={...t,args:i,state:{},consts:new Set,output:void 0,error:void 0},l=t.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={...t,args:i,state:{},consts:new Set,output:void 0,error:void 0},c=t.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(!t.capabilities.agent?.run)throw new Error("Capability 'agent.run' missing");let o=await t.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}),tu=P("transpileCode",y.object({code:y.string}),y.any,async({code:e},n)=>{if(!n.capabilities.code?.transpile)throw new Error("Capability 'code.transpile' missing. Enable code transpilation by providing the code capability.");let t=j(e,n);try{return n.capabilities.code.transpile(t)}catch(r){throw new Error(`Code transpilation failed: ${r.message}`,{cause:r})}},{docs:"Transpile AsyncJS code to AST",cost:1}),Hi=10,nu=P("runCode",y.object({code:y.string,args:y.record(y.any).optional}),y.any,async({code:e,args:n},t)=>{let r=t.runCodeDepth??0;if(r>=Hi)throw new Error(`runCode recursion limit exceeded (max ${Hi}). This prevents infinite loops from dynamically generated code calling runCode.`);if(!t.capabilities.code?.transpile)throw new Error("Capability 'code.transpile' missing. Enable dynamic code execution by providing the code capability.");let s=j(e,t),i=n?j(n,t):{},o;try{o=t.capabilities.code.transpile(s)}catch(c){throw new Error(`Code transpilation failed: ${c.message}`,{cause:c})}if(o.op!=="seq")throw new Error("Transpiled code must be a seq node");let a=De(t);if(a.args=i,a.output=void 0,a.runCodeDepth=r+1,await pe.exec(o,a),a.error){t.error=a.error;return}return a.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),ru=P("jsonParse",y.object({str:y.string}),y.any,async({str:e},n)=>JSON.parse(j(e,n)),{docs:"Parse JSON",cost:1}),su=P("jsonStringify",y.object({value:y.any}),y.string,async({value:e},n)=>JSON.stringify(j(e,n)),{docs:"Stringify JSON",cost:1}),iu=P("xmlParse",y.object({str:y.string}),y.any,async({str:e},n)=>{if(!n.capabilities.xml?.parse)throw new Error("Capability 'xml.parse' missing");return n.capabilities.xml.parse(j(e,n))},{docs:"Parse XML",cost:1}),ou=P("memoize",y.object({key:y.string.optional,steps:y.array(y.any)}),y.any,async({key:e,steps:n},t)=>{t.memo||(t.memo=new Map);let r=j(e,t)??await Ur.exec({value:n,algorithm:"SHA-256"},t);if(t.memo.has(r))return t.memo.get(r);let s=De(t);await pe.exec({op:"seq",steps:n},s);let i=s.output??s.state.result;return t.memo.set(r,i),i},{docs:"Memoize steps result in memory",cost:1}),au=P("cache",y.object({key:y.string.optional,steps:y.array(y.any),ttlMs:y.number.optional}),y.any,async({key:e,steps:n,ttlMs:t},r)=>{if(!r.capabilities.store)throw new Error("Capability 'store' missing for caching");let i=`cache:${j(e,r)??await Ur.exec({value:n,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=De(r);await pe.exec({op:"seq",steps:n},a);let c=a.output??a.state.result,l=Date.now()+(t??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}),cu=P("random",y.object({min:y.number.optional,max:y.number.optional,format:y.string.optional,length:y.number.optional}),y.any,async({min:e,max:n,format:t,length:r},s)=>{let i=j(t,s)??"float",o=j(r,s)??10,a=j(e,s)??0,c=j(n,s)??1;if(i==="base36"){let p="0123456789abcdefghijklmnopqrstuvwxyz",m="";if(typeof crypto<"u"&&crypto.getRandomValues){let d=new Uint8Array(o);crypto.getRandomValues(d);for(let h=0;h<o;h++)m+=p[d[h]%36]}else for(let d=0;d<o;d++)m+=p.charAt(Math.floor(Math.random()*36));return m}let l;if(typeof crypto<"u"&&crypto.getRandomValues){let p=new Uint32Array(1);crypto.getRandomValues(p),l=p[0]/4294967296}else l=Math.random();let u=c-a,f=l*u+a;return i==="integer"?Math.floor(f):f},{docs:"Generate Random",cost:1}),lu=P("uuid",void 0,y.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 n=Array.from(e,t=>t.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let n=Math.random()*16|0;return(e==="x"?n:n&3|8).toString(16)})},{docs:"Generate UUID",cost:1}),Ur=P("hash",y.object({value:y.any,algorithm:y.string.optional}),y.string,async({value:e,algorithm:n},t)=>{let r=typeof e=="string"?e:JSON.stringify(j(e,t)),s=j(n,t)||"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}),uu=P("consoleLog",y.object({message:y.any}),void 0,async({message:e},n)=>{let t=j(e,n);n.trace&&n.trace.push({op:"console.log",input:{message:t},stateDiff:{},result:t,fuelBefore:n.fuel.current,fuelAfter:n.fuel.current,timestamp:new Date().toISOString()})},{docs:"Log to trace",cost:.1}),fu=P("consoleWarn",y.object({message:y.any}),void 0,async({message:e},n)=>{let t=j(e,n),r=typeof t=="string"?t:JSON.stringify(t);n.warnings||(n.warnings=[]),n.warnings.push(r),n.trace&&n.trace.push({op:"console.warn",input:{message:t},stateDiff:{},result:t,fuelBefore:n.fuel.current,fuelAfter:n.fuel.current,timestamp:new Date().toISOString()})},{docs:"Add warning",cost:.1}),pu=P("consoleError",y.object({message:y.any}),void 0,async({message:e},n)=>{let t=j(e,n),r=typeof t=="string"?t:JSON.stringify(t);n.error=new re(r,"console.error")},{docs:"Emit error and stop",cost:.1}),mu=P("storeProcedure",y.object({ast:y.any,ttl:y.number.optional,maxSize:y.number.optional}),y.string,async({ast:e,ttl:n,maxSize:t},r)=>{let s=j(e,r),i=n?j(n,r):fl,o=t?j(t,r):pl;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=ml(),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}),du=P("releaseProcedure",y.object({token:y.string}),y.boolean,async({token:e},n)=>{let t=j(e,n);return ot.delete(t)},{docs:"Release a stored procedure by token",cost:.1}),gu=P("clearExpiredProcedures",void 0,y.number,async()=>{let e=Date.now(),n=0;for(let[t,r]of ot)e>r.expiresAt&&(ot.delete(t),n++);return n},{docs:"Clear all expired procedures and return count",cost:.5}),Ot={seq:pe,if:wl,while:Sl,return:_l,try:Tl,Error:El,varSet:$l,constSet:kl,varGet:jl,varsImport:vl,varsLet:Ml,varsExport:Al,scope:Cl,callLocal:Rl,map:Pl,filter:Nl,reduce:Dl,find:Il,push:Ol,len:Bl,split:Ll,join:Fl,template:Ul,regexMatch:ql,pick:Wl,omit:Jl,merge:Vl,keys:zl,httpFetch:Zl,storeGet:Hl,storeSet:Yl,storeQuery:Kl,storeVectorSearch:Xl,llmPredict:Ql,agentRun:eu,transpileCode:tu,runCode:nu,jsonParse:ru,jsonStringify:su,xmlParse:iu,memoize:ou,cache:au,random:cu,uuid:lu,hash:Ur,consoleLog:uu,consoleWarn:fu,consoleError:pu,storeProcedure:mu,releaseProcedure:du,clearExpiredProcedures:gu},yu=["httpFetch","storeGet","storeSet","storeQuery","storeVectorSearch","llmPredict","agentRun","transpileCode","runCode","random","uuid","consoleLog","consoleWarn","consoleError","storeProcedure","releaseProcedure","clearExpiredProcedures","cache","memoize"];for(let e of yu){let n=Ot[e];n&&(n.effects="io")}var hu=new Set(["true","false","null","undefined","and","or","not"]);function bu(e,n){let t=e.replace(/"[^"]*"/g,'""').replace(/'[^']*'/g,"''"),r=[],s=/(?<![.])\b([a-zA-Z_][a-zA-Z0-9_]*)\b/g,i;for(;(i=s.exec(t))!==null;)r.push(i[1]);let a=[...new Set(r)].filter(c=>!hu.has(c)&&!(c in n)&&!new RegExp(`\\b${c}\\s*\\(`).test(t));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 On(e,n){bu(e,n);let t=xu(e),r=no(t,0,n);if(r.pos<t.length){let s=t.slice(r.pos).join(" ");throw new Error(`Unsupported condition syntax near '${s}' in: ${e}
408
- Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return r.node}function xu(e){let n=[],t=0;for(;t<e.length;){for(;t<e.length&&/\s/.test(e[t]);)t++;if(t>=e.length)break;if(e[t]==='"'||e[t]==="'"){let r=e[t++],s="";for(;t<e.length&&e[t]!==r;)e[t]==="\\"&&t+1<e.length&&t++,s+=e[t++];t++,n.push(JSON.stringify(s));continue}if(e.slice(t,t+2).match(/^(&&|\|\||==|!=|>=|<=)$/)){n.push(e.slice(t,t+2)),t+=2;continue}if("+-*/%><!().?:[]".includes(e[t])){n.push(e[t]),t++;continue}if(/\d/.test(e[t])){let r="";for(;t<e.length&&/[\d.]/.test(e[t]);)r+=e[t++];n.push(r);continue}if(/[a-zA-Z_]/.test(e[t])){let r="";for(;t<e.length&&/[a-zA-Z0-9_]/.test(e[t]);)r+=e[t++];n.push(r);continue}t++}return n}function no(e,n,t){return wu(e,n,t)}function wu(e,n,t){let{node:r,pos:s}=Xi(e,n,t);for(;e[s]==="||";){s++;let{node:i,pos:o}=Xi(e,s,t);r={$expr:"logical",op:"||",left:r,right:i},s=o}return{node:r,pos:s}}function Xi(e,n,t){let{node:r,pos:s}=Qi(e,n,t);for(;e[s]==="&&";){s++;let{node:i,pos:o}=Qi(e,s,t);r={$expr:"logical",op:"&&",left:r,right:i},s=o}return{node:r,pos:s}}function Qi(e,n,t){let{node:r,pos:s}=eo(e,n,t),i=["==","!=",">","<",">=","<="];for(;i.includes(e[s]);){let o=e[s++],{node:a,pos:c}=eo(e,s,t);r={$expr:"binary",op:o,left:r,right:a},s=c}return{node:r,pos:s}}function eo(e,n,t){let{node:r,pos:s}=to(e,n,t);for(;e[s]==="+"||e[s]==="-";){let i=e[s++],{node:o,pos:a}=to(e,s,t);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function to(e,n,t){let{node:r,pos:s}=qr(e,n,t);for(;e[s]==="*"||e[s]==="/"||e[s]==="%";){let i=e[s++],{node:o,pos:a}=qr(e,s,t);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function qr(e,n,t){if(e[n]==="!"||e[n]==="-"){let r=e[n++],{node:s,pos:i}=qr(e,n,t);return{node:{$expr:"unary",op:r,argument:s},pos:i}}return Su(e,n,t)}function Su(e,n,t){let r=e[n];if(r==="("){let{node:s,pos:i}=no(e,n+1,t);return{node:s,pos:i+1}}if(r&&r.startsWith('"'))return{node:{$expr:"literal",value:JSON.parse(r)},pos:n+1};if(r&&/^\d/.test(r))return{node:{$expr:"literal",value:parseFloat(r)},pos:n+1};if(r==="true")return{node:{$expr:"literal",value:!0},pos:n+1};if(r==="false")return{node:{$expr:"literal",value:!1},pos:n+1};if(r==="null")return{node:{$expr:"literal",value:null},pos:n+1};if(r&&/^[a-zA-Z_]/.test(r)){let s={$expr:"ident",name:r},i=n+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:n+1}}var He=class e{steps=[];atoms;proxy;constructor(n){return this.atoms=n,this.proxy=new Proxy(this,{get:(t,r,s)=>{if(r in t)return t[r];if(typeof r=="string"&&r in t.atoms)return i=>{let o=t.atoms[r];return t.add(o.create(i)),s}}}),this.proxy}add(n){return this.steps.push(n),this.proxy}as(n){if(this.steps.length===0)throw new Error("No step to capture");let t=this.steps[this.steps.length-1];return t.result=n,this.proxy}step(n){return this.add(n)}return(n){let t=this.atoms.return;if(!t)throw new Error("Atom 'return' not found");let r=n.schema??n;return this.add(t.create({schema:r}))}toJSON(){return{op:"seq",steps:[...this.steps]}}varsImport(n){return this.add(this.atoms.varsImport.create({keys:n}))}varsExport(n){return this.add(this.atoms.varsExport.create({keys:n}))}if(n,t,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=On(n,t),c=this.atoms.if;return this.add(c.create({condition:a,then:i.steps,else:o}))}while(n,t,r){let s=new e(this.atoms);r(s);let i=On(n,t),o=this.atoms.while;return this.add(o.create({condition:i,body:s.steps}))}scope(n){let t=new e(this.atoms);n(t);let r=this.atoms.scope;return this.add(r.create({steps:t.steps}))}map(n,t,r){let s=new e(this.atoms);r(s);let i=this.atoms.map;return this.add(i.create({items:n,as:t,steps:s.steps}))}filter(n,t,r,s={}){let i=On(r,s),o=this.atoms.filter;return this.add(o.create({items:n,as:t,condition:i}))}find(n,t,r,s={}){let i=On(r,s),o=this.atoms.find;return this.add(o.create({items:n,as:t,condition:i}))}reduce(n,t,r,s,i){let o=new e(this.atoms);i(o);let a=this.atoms.reduce;return this.add(a.create({items:n,as:t,accumulator:r,initial:s,steps:o.steps}))}memoize(n,t){let r=new e(this.atoms);n(r);let s=this.atoms.memoize;return this.add(s.create({key:t,steps:r.steps}))}cache(n,t,r){let s=new e(this.atoms);n(s);let i=this.atoms.cache;return this.add(i.create({key:t,steps:s.steps,ttlMs:r}))}try(n){let t=new e(this.atoms);n.try(t);let r;if(n.catch){let i=new e(this.atoms);n.catch(i),r=i.steps}let s=this.atoms.try;return this.add(s.create({try:t.steps,catch:r}))}},_u={take(e){return new He(Ot)},custom(e){return new He(e)},args(e){return{$kind:"arg",path:e}},val(e){return e}},gm=_u;import{validate as Tu}from"tosijs-schema";function Bt(e,n={}){let{ast:t,returnType:r,originalSource:s,requiredParams:i}=he(e,{filename:n.filename,colonShorthand:!0,vmTarget:!0}),{entry:o,helpers:a}=xt(t,n.filename),{ast:c,signature:l,warnings:u}=Tt(o,s,r,n,i,a.size>0?a:void 0);return{ast:c,signature:l,warnings:u}}var Eu=6e4,Bn=class{atoms;_defaultRunTimeout;constructor(n={}){this.atoms={...Ot,...n}}get defaultRunTimeout(){if(this._defaultRunTimeout===void 0){let n=0;for(let t of Object.values(this.atoms)){let r=t.timeoutMs??1e3;r>0&&r>n&&(n=r)}this._defaultRunTimeout=Math.max(Eu,n*2)}return this._defaultRunTimeout}get builder(){return new He(this.atoms)}get Agent(){return new He(this.atoms)}get A99(){return this.Agent}resolve(n){return this.atoms[n]}getTools(n="all"){let t=Object.values(this.atoms);if(Array.isArray(n))t=t.filter(r=>n.includes(r.op));else if(n==="flow"){let r=["seq","if","while","return","try","varSet","varGet","scope"];t=t.filter(s=>r.includes(s.op))}return t.map(r=>({type:"function",function:{name:r.op,description:r.docs,parameters:r.inputSchema?.schema??{}}}))}async run(n,t={},r={}){let s;if(typeof n=="string")if(Lr(n))s=Fr(n);else try{s=Bt(n).ast}catch(d){throw new Error(`AJS transpilation failed: ${d.message}`,{cause:d})}else s=n;let i=r.fuel??1e3,o=r.timeoutMs??this.defaultRunTimeout,a=r.capabilities??{},c=[];if(!a.store){let d=new Map,h=!1;a.store={get:async x=>(h||(h=!0,c.push("Using default in-memory store (not suitable for production)")),d.get(x)),set:async(x,E)=>{h||(h=!0,c.push("Using default in-memory store (not suitable for production)")),d.set(x,E)}}}let l=new AbortController,u=setTimeout(()=>l.abort(),o);r.signal&&r.signal.addEventListener("abort",()=>l.abort());let f={fuel:{current:i},args:t,state:{},consts:new Set,capabilities:a,resolver:d=>this.resolve(d),output:void 0,signal:l.signal,costOverrides:r.costOverrides,timeoutOverrides:r.timeoutOverrides,context:r.context,warnings:c,helpers:s.helpers};if(r.trace&&(f.trace=[]),s.op!=="seq")throw new Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let p=s.inputSchema;if(p&&!Tu(t,p)){let d=new re("Input validation failed: args do not match expected schema","vm.run");return{result:d,error:d,fuelUsed:0,trace:f.trace,warnings:c.length>0?c:void 0}}try{await Promise.race([this.resolve("seq")?.exec(s,f),new Promise((d,h)=>{l.signal.addEventListener("abort",()=>{h(new Error(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`))}),l.signal.aborted&&h(new Error(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`))})])}catch(d){if(d.message?.includes("timeout")||d.message?.includes("aborted")||l.signal.aborted)f.error=new re(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`,"vm.run");else throw d}finally{clearTimeout(u)}f.error&&f.output===void 0&&(f.output=f.error);let m=[...c,...f.warnings??[]];return{result:f.output,error:f.error,fuelUsed:i-f.fuel.current,trace:f.trace,warnings:m.length>0?m:void 0}}};var $u=null,ro=()=>$u??=new Bn;function Ye(e){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let n of e)Ye(n);return}e.op==="return"&&"value"in e&&(e.value={__result:e.value}),e.steps&&Ye(e.steps),e.then&&Ye(e.then),e.else&&Ye(e.else),e.body&&Ye(e.body)}}async function ku(e){let{code:n,context:t={},fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=ro(),c=/\breturn\b/.test(n)?`function __eval() { ${n} }`:`function __eval() { return (${n}) }`;try{let{ast:l}=Bt(c);Ye(l);let u=await o.run(l,t,{fuel:r,timeoutMs:s,capabilities:i}),f=u.result;return{result:f&&typeof f=="object"&&"__result"in f?f.__result:f,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 ju(e){let{body:n,params:t=[],fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=ro(),c=`function __safeFn(${t.join(", ")}) { ${n} }`,{ast:l}=Bt(c);return Ye(l),async(...u)=>{let f={};for(let p=0;p<t.length;p++)f[t[p]]=u[p];try{let p=await o.run(l,f,{fuel:r,timeoutMs:s,capabilities:i}),m=p.result;return{result:m&&typeof m=="object"&&"__result"in m?m.__result:m,fuelUsed:p.fuelUsed,error:p.error?{message:p.error.message||String(p.error)}:void 0}}catch(p){return{result:void 0,fuelUsed:r,error:{message:p.message||String(p)}}}}}function Ln(e,n={}){let{ast:t,returnType:r,originalSource:s,requiredParams:i}=he(e,{filename:n.filename,colonShorthand:!0,vmTarget:!0}),{entry:o,helpers:a}=xt(t,n.filename),{ast:c,signature:l,warnings:u}=Tt(o,s,r,n,i,a.size>0?a:void 0);return{ast:c,signature:l,warnings:u}}function Nm(e,...n){if(typeof e=="string")return Ln(e).ast;let t=e.reduce((r,s,i)=>r+s+(n[i]!==void 0?String(n[i]):""),"");return Ln(t).ast}function Im(e,n,...t){if(typeof e=="string")return Nt(e,n);let r=n!==void 0?[n,...t]:t,s=e.reduce((i,o,a)=>i+o+(r[a]!==void 0?String(r[a]):""),"");return Nt(s)}async function Om(e,n={},t){let r=t??await Nn(),s=await r.getTranspile(e);if(s)return{ast:s.ast,signature:s.signature,warnings:s.warnings};let i=Ln(e,n);return r.setTranspile(e,{ast:i.ast,signature:i.signature,warnings:i.warnings}),i}async function Bm(e,n={},t){let r=t??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=Nt(e,n);return r.setTJS(e,{code:i.code,types:i.types,testRunner:i.testRunner,testCount:i.testCount,warnings:i.warnings}),i}function Lm(e,n,t){let{ast:r,signature:s}=Ln(e),i=async o=>(await n.run(r,o,t)).result;return i.signature=s,i.ast=r,i}function Fm(e){return Object.entries(e).map(([n,t])=>{let r=t.signature,s={},i=[];for(let[o,a]of Object.entries(r.parameters))s[o]=ke(a.type),a.description&&(s[o].description=a.description),a.required&&i.push(o);return{type:"function",function:{name:r.name||n,description:r.description,parameters:{type:"object",properties:s,required:i}}}})}import{s as D}from"tosijs-schema";var Wr=P("storeVectorize",D.object({text:D.string,model:D.string.optional}),D.array(D.number),async({text:e},n)=>{let t=n.capabilities.vector;if(!t)throw new Error("Capability 'vector' missing. Ensure vector battery is loaded.");let r=j(e,n);return t.embed(r)},{docs:"Generate embeddings using vector battery",cost:20,timeoutMs:6e4}),Jr=P("storeCreateCollection",D.object({collection:D.string,dimension:D.number.optional}),void 0,async({collection:e,dimension:n},t)=>{let r=t.capabilities.store;if(!r?.createCollection)throw new Error("Capability 'store' missing or does not support createCollection.");let s=j(e,t),i=j(n,t);return r.createCollection(s,void 0,i)},{docs:"Create a vector store collection",cost:5}),Vr=P("storeVectorAdd",D.object({collection:D.string,doc:D.any}),void 0,async({collection:e,doc:n},t)=>{let r=t.capabilities.store;if(!r?.vectorAdd)throw new Error("Capability 'store' missing or does not support vectorAdd.");let s=j(e,t),i=j(n,t);return r.vectorAdd(s,i)},{docs:"Add a document to a vector store collection",cost:5,timeoutMs:6e4}),zr=P("storeSearch",D.object({collection:D.string,queryVector:D.array(D.number),k:D.number.optional,filter:D.record(D.any).optional}),D.array(D.any),async({collection:e,queryVector:n,k:t,filter:r},s)=>{let i=s.capabilities.store;if(!i?.vectorSearch)throw new Error("Capability 'store' missing or does not support vectorSearch.");let o=j(e,s),a=j(n,s),c=j(t,s)??5,l=j(r,s);return i.vectorSearch(o,a,c,l)},{docs:"Search vector store",cost:(e,n)=>5+(j(e.k,n)??5)}),Gr=P("llmPredictBattery",D.object({system:D.string.optional,user:D.union([D.string,D.array(D.any)]),tools:D.array(D.any).optional,responseFormat:D.any.optional}),D.object({role:D.string.optional,content:D.string.optional,tool_calls:D.array(D.any).optional}),async({system:e,user:n,tools:t,responseFormat:r},s)=>{let i=s.capabilities.llmBattery;if(!i?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let o=j(e,s)??"You are a helpful agent.",a=j(n,s),c=j(t,s),l=j(r,s);return i.predict(o,a,c,l)},{docs:"Generate completion using LLM battery",cost:100,timeoutMs:12e4}),Zr=P("llmVision",D.object({system:D.string.optional,prompt:D.string,images:D.array(D.string),responseFormat:D.any.optional}),D.object({role:D.string.optional,content:D.string.optional,tool_calls:D.array(D.any).optional}),async({system:e,prompt:n,images:t,responseFormat:r},s)=>{let i=s.capabilities.llmBattery;if(!i?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let o=j(e,s)??"You analyze images accurately and concisely.",a=j(n,s),c=j(t,s)??[],l=j(r,s);return i.predict(o,{text:a,images:c},void 0,l)},{docs:"Analyze images using a vision model",timeoutMs:12e4,cost:150});for(let e of[Wr,Jr,Vr,zr,Gr,Zr])e.effects="io";var pd={storeCreateCollection:Jr,storeSearch:zr,storeVectorAdd:Vr,storeVectorize:Wr,llmPredictBattery:Gr,llmVision:Zr};var so=new Map,Fn=new Map;function vu(e,n){if(e.length!==n.length)throw new Error("Vectors must have the same length for cosine similarity.");let t=0,r=0,s=0;for(let i=0;i<e.length;i++)t+=e[i]*n[i],r+=e[i]*e[i],s+=n[i]*n[i];return r=Math.sqrt(r),s=Math.sqrt(s),r===0||s===0?0:t/(r*s)}function Hr(){return{async get(e){return so.get(e)},async set(e,n){so.set(e,n)},async createCollection(e,n,t){Fn.has(e)&&console.warn(`Collection '${e}' already exists. Overwriting.`),Fn.set(e,[])},async vectorAdd(e,n){let t=Fn.get(e);if(!t)throw new Error(`Collection '${e}' not found. Create it first.`);if(!n.embedding||!Array.isArray(n.embedding))throw new Error("Document must have an 'embedding' property that is an array of numbers.");t.push(n)},async vectorSearch(e,n,t=5){let r=Fn.get(e);if(!r)throw new Error(`Collection '${e}' not found. Create it first.`);let s=r.map(i=>({doc:i,score:vu(n,i.embedding)}));return s.sort((i,o)=>o.score-i.score),s.slice(0,t).map(i=>i.doc)}}}function Mu(e){if(typeof e=="string")return{role:"user",content:e};let n=[{type:"text",text:e.text}];for(let t of e.images||[])n.push({type:"image_url",image_url:{url:t}});return{role:"user",content:n}}var Au="http://localhost:1234/v1";function io(e,n=Au){return{async predict(t,r,s,i){try{let o=i?e.getStructuredLLM():e.getLLM(),a=[{role:"system",content:t},Mu(r)],c=await fetch(`${n}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:o.id,messages:a,temperature:.7,...s&&s.length>0?{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.",{cause:o}):o}},async embed(t){try{let r=e.getEmbedding(),s=await fetch(`${n}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:r.id,input:t})});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.",{cause:r}):r}}}}var Un=".models.cache.json";var Lt=typeof window<"u"&&typeof window.localStorage<"u";async function Cu(e){try{if(Lt){let n=window.localStorage.getItem(Un);if(!n)return null;let t=JSON.parse(n);return t.baseUrl!==e||Date.now()-t.timestamp>864e5?null:t.models}else{let n=await import("node:fs/promises"),r=(await import("node:path")).join(process.cwd(),Un);try{let s=await n.readFile(r,"utf-8"),i=JSON.parse(s);return i.baseUrl!==e||Date.now()-i.timestamp>864e5?null:i.models}catch{return null}}}catch(n){return console.warn("\u26A0\uFE0F Error reading model cache:",n),null}}async function Ru(e,n){let t={timestamp:Date.now(),baseUrl:e,models:n};try{if(Lt)window.localStorage.setItem(Un,JSON.stringify(t));else{let r=await import("node:fs/promises"),i=(await import("node:path")).join(process.cwd(),Un);await r.writeFile(i,JSON.stringify(t,null,2))}}catch(r){console.error("\u274C Error writing model cache:",r)}}var Ft=async(e,n)=>{let t=new AbortController,r=setTimeout(()=>t.abort(),6e4);try{let s=await fetch(e,{...n,signal:t.signal});return clearTimeout(r),s}catch(s){throw clearTimeout(r),s}};async function Pu(e,n){try{let t={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},r=await Ft(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:n,messages:[{role:"system",content:"You respond in JSON."},{role:"user",content:'Return JSON: {"status": "ok"}'}],response_format:t,max_tokens:20})});if(!r.ok)return r.status===400?Nu(e,n):{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(t){return{ok:!1,msg:t.message||"Error"}}}async function Nu(e,n){try{return(await Ft(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:n,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 Du(e,n){try{return(await Ft(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:n,messages:[{role:"user",content:"hi"}],max_tokens:1})})).ok}catch{return!1}}async function Iu(e,n){try{let t=await Ft(`${e}/embeddings`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:n,input:"test"})});return t.ok?(await t.json()).data[0]?.embedding?.length??null:null}catch{return null}}var Ou="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAMUlEQVR4nGO4o6FBU8QwasFoEI2motF8MFpUjJamo/XBaJU52qoYbReNNh01hkg+AACGobA9N+tfoAAAAABJRU5ErkJggg==";async function Bu(e,n){try{return(await Ft(`${e}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:n,messages:[{role:"user",content:[{type:"text",text:"What color is this?"},{type:"image_url",image_url:{url:Ou}}]}],max_tokens:10})})).ok}catch{return!1}}async function oo(e){let n=await Cu(e),t;try{let o=await fetch(`${e}/models`);if(!o.ok)throw new Error("Could not connect");t=(await o.json()).data.map(c=>c.id).sort()}catch{return n?(console.log("\u26A0\uFE0F LM Studio unavailable, using cached model audit."),n):(console.error("\u274C Failed to connect to LM Studio."),[])}if(n){let o=n.map(a=>a.id).sort();if(JSON.stringify(t)===JSON.stringify(o))return console.log("\u2705 Using cached model audit."),n;console.log("\u{1F50D} Model list changed. Re-running audit...")}console.log("\u{1F50D} Scanning models (this may take a moment)...");let r=[],s=t.map(o=>({id:o})),i;Lt||(i=await import("node:readline"));for(let o of s){!Lt&&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,f,p=await Du(e,o.id),m=await Iu(e,o.id);if(m&&(f=m),p){a="LLM";let d=await Pu(e,o.id);c=d.ok,l=await Bu(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:f,status:u})}return!Lt&&i&&(i.cursorTo(process.stdout,0),i.clearLine(process.stdout,0)),console.log(`
409
- `),console.table(r),await Ru(e,r),console.log("\u{1F4DD} Audit results saved to cache."),r}var Lu="http://localhost:1234/v1",qn=class{constructor(n=Lu){this.baseUrl=n}baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;async audit(){this.models=await oo(this.baseUrl),this.selectDefaults()}selectDefaults(){this.defaultEmbedding=this.models.find(n=>n.type==="Embedding")||null,this.defaultLLM=this.models.find(n=>n.type==="LLM")||null,this.defaultStructuredLLM=this.models.find(n=>n.type==="LLM"&&n.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(n,t,r,s){let i=this.models.find(o=>o.id===n&&r(o));if(!i)throw new Error(`Model '${n}' not found or is not ${s}.`);this[t]=i}setDefaultLLM(n){this._setDefaultModel(n,"defaultLLM",t=>t.type==="LLM","an LLM")}setDefaultEmbedding(n){this._setDefaultModel(n,"defaultEmbedding",t=>t.dimension!==void 0,"an embedding model")}setDefaultStructuredLLM(n){this._setDefaultModel(n,"defaultStructuredLLM",t=>t.type==="LLM"&&t.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 Fu=typeof window<"u",Uu=Fu&&window.location.protocol==="https:",Ut=null,Yr=null,ao=!1;async function qu(){if(ao)return{localModels:Ut,llm:Yr};if(ao=!0,Uu)return console.log("\u{1F4E1} HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{Ut=new qn,await Ut.audit(),Yr=io(Ut)}catch(e){console.warn("\u26A0\uFE0F Could not connect to local LLM:",e)}return{localModels:Ut,llm:Yr}}async function Wu(){let{localModels:e,llm:n}=await qu();return{vector:n?{embed:n.embed}:void 0,store:Hr(),llmBattery:n,models:e}}async function _d(){return Wu()}var Td={store:Hr(),llmBattery:null,vector:void 0,models:null};function Ju(e){if(typeof e!="string")return!1;let n=new Date(e);return!isNaN(n.getTime())&&e.includes("T")}function Vu(){return new Date().toISOString()}function at(e,n,t,r=0,s=0,i=0,o=0){return new Date(Date.UTC(e,n-1,t,r,s,i,o)).toISOString()}function co(e){let n=new Date(e);if(isNaN(n.getTime()))throw new Error(`Invalid date string: ${e}`);return n.toISOString()}function zu(e){try{return co(e)}catch{return null}}function qt(e,n){let t=new Date(e);return t.setTime(t.getTime()+n),t.toISOString()}function Gu(e,n){return qt(e,n*1e3)}function Zu(e,n){return qt(e,n*60*1e3)}function Hu(e,n){return qt(e,n*60*60*1e3)}function lo(e,n){return qt(e,n*24*60*60*1e3)}function Yu(e,n){return lo(e,n*7)}function Ku(e,n){let t=new Date(e),r=t.getUTCMonth()+n;return t.setUTCMonth(r),t.getUTCMonth()!==(r%12+12)%12&&t.setUTCDate(0),t.toISOString()}function Xu(e,n){let t=new Date(e),r=t.getUTCDate();return t.setUTCFullYear(t.getUTCFullYear()+n),t.getUTCDate()!==r&&t.setUTCDate(0),t.toISOString()}function Ie(e,n){return new Date(e).getTime()-new Date(n).getTime()}function Qu(e,n){return Math.floor(Ie(e,n)/1e3)}function ef(e,n){return Math.floor(Ie(e,n)/(60*1e3))}function tf(e,n){return Math.floor(Ie(e,n)/(3600*1e3))}function nf(e,n){return Math.floor(Ie(e,n)/(1440*60*1e3))}function ct(e){return new Date(e).getUTCFullYear()}function Wn(e){return new Date(e).getUTCMonth()+1}function Kr(e){return new Date(e).getUTCDate()}function rf(e){return new Date(e).getUTCHours()}function sf(e){return new Date(e).getUTCMinutes()}function of(e){return new Date(e).getUTCSeconds()}function af(e){return new Date(e).getUTCMilliseconds()}function cf(e){let n=new Date(e).getUTCDay();return n===0?7:n}function Jn(e,n,t){let r=new Date(e),s={timeZone:n,...t};return new Intl.DateTimeFormat(void 0,s).format(r)}function lf(e,n){return Jn(e,n,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function uf(e,n){return Jn(e,n,{year:"numeric",month:"short",day:"numeric"})}function ff(e,n){return Jn(e,n,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function pf(e){return e.slice(0,10)}function uo(e,n){return Ie(e,n)<0}function fo(e,n){return Ie(e,n)>0}function mf(e,n){return Ie(e,n)===0}function df(e,n){return uo(e,n)?e:n}function gf(e,n){return fo(e,n)?e:n}function yf(e){return at(ct(e),Wn(e),Kr(e))}function hf(e){return at(ct(e),Wn(e),Kr(e),23,59,59,999)}function bf(e){return at(ct(e),Wn(e),1)}function xf(e){let n=new Date(e);return n.setUTCMonth(n.getUTCMonth()+1,0),n.setUTCHours(23,59,59,999),n.toISOString()}function wf(e){return at(ct(e),1,1)}function Sf(e){return at(ct(e),12,31,23,59,59,999)}var lt={isValid:Ju,now:Vu,from:at,parse:co,tryParse:zu,addMilliseconds:qt,addSeconds:Gu,addMinutes:Zu,addHours:Hu,addDays:lo,addWeeks:Yu,addMonths:Ku,addYears:Xu,diff:Ie,diffSeconds:Qu,diffMinutes:ef,diffHours:tf,diffDays:nf,year:ct,month:Wn,day:Kr,hour:rf,minute:sf,second:of,millisecond:af,dayOfWeek:cf,toLocal:Jn,format:lf,formatDate:uf,formatTime:ff,toDate:pf,isBefore:uo,isAfter:fo,isEqual:mf,min:df,max:gf,startOfDay:yf,endOfDay:hf,startOfMonth:bf,endOfMonth:xf,startOfYear:wf,endOfYear:Sf};function Xr(e){if(typeof e!="string"||!/^\d{4}-\d{2}-\d{2}$/.test(e))return!1;let n=parseInt(e.slice(0,4),10),t=parseInt(e.slice(5,7),10),r=parseInt(e.slice(8,10),10);if(t<1||t>12||r<1)return!1;let s=[31,28,31,30,31,30,31,31,30,31,30,31],i=t===2&&(n%4===0&&n%100!==0||n%400===0)?29:s[t-1];return r<=i}function _f(){return lt.toDate(lt.now())}function Tf(e){let n=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).format(n)}function de(e,n,t){let r=String(e).padStart(4,"0"),s=String(n).padStart(2,"0"),i=String(t).padStart(2,"0"),o=`${r}-${s}-${i}`;if(!Xr(o))throw new Error(`Invalid date: ${e}-${n}-${t}`);return o}function po(e){if(/^\d{4}-\d{2}-\d{2}$/.test(e)){if(!Xr(e))throw new Error(`Invalid date: ${e}`);return e}let n=new Date(e);if(isNaN(n.getTime()))throw new Error(`Invalid date string: ${e}`);let t=n.getUTCFullYear(),r=n.getUTCMonth()+1,s=n.getUTCDate();return de(t,r,s)}function Ef(e){try{return po(e)}catch{return null}}function Vn(e,n){let t=go(e);return lt.toDate(lt.addDays(t,n))}function $f(e,n){return Vn(e,n*7)}function kf(e,n){let t=ue(e),r=Oe(e),s=Qr(e),i=t*12+(r-1)+n,o=Math.floor(i/12),a=i%12+1,c=Wt(o,a),l=Math.min(s,c);return de(o,a,l)}function jf(e,n){let t=ue(e),r=Oe(e),s=Qr(e),i=t+n,o=Wt(i,r),a=Math.min(s,o);return de(i,r,a)}function mo(e,n){let r=new Date(e+"T00:00:00Z").getTime(),s=new Date(n+"T00:00:00Z").getTime();return Math.round((r-s)/864e5)}function vf(e,n){let t=ue(e),r=Oe(e),s=ue(n),i=Oe(n);return(t-s)*12+(r-i)}function Mf(e,n){return ue(e)-ue(n)}function ue(e){return parseInt(e.slice(0,4),10)}function Oe(e){return parseInt(e.slice(5,7),10)}function Qr(e){return parseInt(e.slice(8,10),10)}function es(e){let n=new Date(e+"T00:00:00Z").getUTCDay();return n===0?7:n}function Af(e){let n=new Date(e+"T00:00:00Z"),t=n.getUTCDay()||7;n.setUTCDate(n.getUTCDate()+4-t);let r=new Date(Date.UTC(n.getUTCFullYear(),0,1));return Math.ceil(((n.getTime()-r.getTime())/864e5+1)/7)}function Cf(e){let n=de(ue(e),1,1);return mo(e,n)+1}function ts(e){return Math.ceil(Oe(e)/3)}function ns(e){return e%4===0&&e%100!==0||e%400===0}function Wt(e,n){let t=[31,28,31,30,31,30,31,31,30,31,30,31];return n===2&&ns(e)?29:t[n-1]}function Rf(e){return ns(e)?366:365}function go(e){return e+"T00:00:00.000Z"}function Pf(e){return Math.floor(new Date(e+"T00:00:00Z").getTime()/1e3)}function Nf(e){let n=new Date(e*1e3);return de(n.getUTCFullYear(),n.getUTCMonth()+1,n.getUTCDate())}function rs(e,n){let t=new Date(e+"T00:00:00Z"),r={timeZone:"UTC",...n};return new Intl.DateTimeFormat(void 0,r).format(t)}function Df(e){return rs(e,{year:"numeric",month:"long",day:"numeric"})}function If(e){return rs(e,{year:"numeric",month:"short",day:"numeric"})}function Of(e,n){return e<n}function Bf(e,n){return e>n}function Lf(e,n){return e===n}function Ff(e,n){return e<n?e:n}function Uf(e,n){return e>n?e:n}function qf(e,n,t){return e>=n&&e<=t}function Wf(e){return de(ue(e),Oe(e),1)}function Jf(e){let n=ue(e),t=Oe(e);return de(n,t,Wt(n,t))}function Vf(e){let t=(ts(e)-1)*3+1;return de(ue(e),t,1)}function zf(e){let t=ts(e)*3;return de(ue(e),t,Wt(ue(e),t))}function Gf(e){return de(ue(e),1,1)}function Zf(e){return de(ue(e),12,31)}function Hf(e){let n=es(e);return Vn(e,-(n-1))}function Yf(e){let n=es(e);return Vn(e,7-n)}var Kf={isValid:Xr,today:_f,todayIn:Tf,from:de,parse:po,tryParse:Ef,addDays:Vn,addWeeks:$f,addMonths:kf,addYears:jf,diff:mo,diffMonths:vf,diffYears:Mf,year:ue,month:Oe,day:Qr,dayOfWeek:es,weekOfYear:Af,dayOfYear:Cf,quarter:ts,isLeapYear:ns,daysInMonth:Wt,daysInYear:Rf,toTimestamp:go,toUnix:Pf,fromUnix:Nf,format:rs,formatLong:Df,formatShort:If,isBefore:Of,isAfter:Bf,isEqual:Lf,min:Ff,max:Uf,isBetween:qf,startOfMonth:Wf,endOfMonth:Jf,startOfQuarter:Vf,endOfQuarter:zf,startOfYear:Gf,endOfYear:Zf,startOfWeek:Hf,endOfWeek:Yf};export{gm as A99,_u as Agent,re as AgentError,Bn as AgentVM,pl as DEFAULT_MAX_AST_SIZE,fl as DEFAULT_PROCEDURE_TTL,yu as EFFECTFUL_CORE_OPS,wn as Enum,ku as Eval,$t as FunctionPredicate,Qe as Generic,Kf as LegalDate,fr as LegalDateType,qn as LocalModels,zi as MAX_CALL_DEPTH,Pn as MetadataCache,Ir as ModuleLoader,dn as Nullable,gn as Optional,Br as PROCEDURE_TOKEN_PREFIX,pt as PredicateFuelExhausted,ju as SafeFunction,Lc as Schema,z as SyntaxError,hn as TArray,an as TBoolean,fn as TEmail,cn as TInteger,ce as TJS_VERSION,un as TNonEmptyString,on as TNumber,bn as TPair,ln as TPositiveInt,xn as TRecord,sn as TString,pn as TUrl,mn as TUuid,lt as Timestamp,ur as TimestampType,W as TranspileError,X as Type,cs as TypeError,He as TypedBuilder,yn as Union,eu as agentRun,Nm as ajs,Xs as assertFunction,Td as batteries,pd as batteryAtoms,Me as builtins,au as cache,Rl as callLocal,Ve as checkType,gu as clearExpiredProcedures,mt as compilePredicate,Ys as compilePredicateSchema,Ti as compileToWasm,gc as compileWasmBlocks,pu as consoleError,uu as consoleLog,fu as consoleWarn,kl as constSet,Ot as coreAtoms,Lm as createAgent,me as createChildContext,De as createChildScope,Ro as createPredicateEvaluator,P as defineAtom,ya as dialectForFilename,Ao as effectfulFromAtoms,Fa as emitRuntimeWrapper,Xn as emitVerifiedPredicate,Se as error,El as errorAtom,Y as evaluateExpr,Ue as exampleToJSONSchema,Qs as expectFunction,xt as extractFunctions,we as extractLiteralValue,wt as extractTDoc,Et as extractTests,Zl as fetch,Nl as filter,Il as find,Gt as formatPredicateDiagnostics,nn as functionMetaToJSONSchema,Ic as generateDTS,Ui as generateDocs,Xc as generateDocsMarkdown,Wu as getBatteries,Nn as getGlobalCache,io as getLLMCapability,G as getLocation,_d as getStandardCapabilities,Hr as getStoreCapabilityDefault,Fm as getToolDefinitions,Ur as hash,Rn as hashSource,Fc as hashSourceSync,wl as iff,ll as inMemoryFileSystem,se as inferTypeFromValue,Sr as installRuntime,$i as instantiateWasm,ul as isAgentError,je as isError,Lr as isProcedureToken,Ce as isRuntimeType,lr as isValidLegalDate,cr as isValidTimestamp,ar as isValidUrl,Fl as join,ru as jsonParse,su as jsonStringify,zl as keys,Bl as len,Vc as lint,Ql as llmPredict,Eo as lookupVariable,Pl as map,ou as memoize,Vl as merge,Jl as omit,he as parse,Ae as parseParameter,Js as parseReturnType,Wl as pick,en as preprocess,ot as procedureStore,Ol as push,cu as random,Dl as reduce,ql as regexMatch,ki as registerWasmBlock,du as releaseProcedure,Fr as resolveProcedureToken,j as resolveValue,_l as ret,nu as runCode,qe as runtime,Cl as scope,pe as seq,Wc as setGlobalCache,Zs as sourceKindForFilename,Ll as split,Hl as storeGet,mu as storeProcedure,Kl as storeQuery,Yl as storeSet,jn as stripModuleSyntax,yi as stripTjsPreamble,Co as suggest,Ul as template,_a as testUtils,Im as tjs,Bm as tjsWithCache,Tt as transformFunction,Ln as transpile,tu as transpileCode,Nt as transpileToJS,Om as transpileWithCache,Tl as tryCatch,ke as typeDescriptorToJSONSchema,_e as typeDescriptorToTS,nt as typeOf,sr as typeToString,lu as uuid,xr as validateArgs,ba as validatePredicateSchema,Vo as validateSingleFunction,jl as varGet,$l as varSet,Al as varsExport,vl as varsImport,Ml as varsLet,Xl as vectorSearch,Le as verifyPredicate,Sl as whileLoop,wr as wrap,iu as xmlParse};
410
+ `,r+="```tjs\n",r+=tl(i.body).trim()+`
411
+ `,r+="```\n\n"));return r.trim()||"*No documentation available*"}function tl(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=In(e,o);if(a>o){let l=e.slice(a+1).match(/^\.(\w+)(\()?/);if(l&&l[2]==="("){let u=a+1+l[0].length,f=In(e,u);if(f>=u){let p=e.slice(o,a),m=l[1],d=e.slice(u,f);n+=rl(p,m,d),t=f+1;continue}}}}n+=s,t++}return n}function In(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 nl(e){if(typeof e=="function")return null;try{let t=JSON.stringify(e);return t===void 0?null:t}catch{return null}}function rl(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{existsSync as sl,readFileSync as il}from"node:fs";import{dirname as Or,isAbsolute as ol,resolve as It,sep as al}from"node:path";var Br=[".tjs",".ts",".js"],cl={readFile(e){try{return il(e,"utf8")}catch{return null}},exists(e){try{return sl(e)}catch{return!1}}},Lr=class{cache=new Map;fs;baseDir;bareSpecifierRoots;cacheLimit;constructor(t={}){this.fs=t.fs??cl,this.baseDir=t.baseDir??process.cwd(),this.bareSpecifierRoots=t.bareSpecifierRoots??[],this.cacheLimit=t.cacheLimit??256}resolve(t,n){return t.startsWith("http://")||t.startsWith("https://")||t.startsWith("data:")||t.startsWith("file://")?null:t.startsWith("./")||t.startsWith("../")?this.tryExtensions(It(n?Or(n):this.baseDir,t)):ol(t)?this.tryExtensions(t):this.resolveBare(t,n)}load(t,n){let r=this.resolve(t,n);if(!r)return null;let s=this.cache.get(r);if(s)return s;let i=this.fs.readFile(r);if(i===null)return null;let o;try{o=he(i,{filename:r})}catch{return null}let a=ll(o.ast),c=ul(o.ast),l={path:r,source:i,parseResult:o,imports:a,exports:c};if(this.cacheLimit>0){if(this.cache.size>=this.cacheLimit){let u=this.cache.keys().next().value;u!==void 0&&this.cache.delete(u)}this.cache.set(r,l)}return l}clearCache(){this.cache.clear()}tryExtensions(t){if(Br.some(n=>t.endsWith(n)))return this.fs.exists(t)?t:null;for(let n of Br){let r=t+n;if(this.fs.exists(r))return r}for(let n of Br){let r=It(t,"index"+n);if(this.fs.exists(r))return r}return null}resolveBare(t,n){for(let s of this.bareSpecifierRoots){let i=this.tryExtensions(It(s,t));if(i)return i}let r=n?Or(n):this.baseDir;for(r=It(r);;){let s=this.tryExtensions(It(r,"node_modules",t));if(s)return s;let i=Or(r);if(i===r)break;r=i}return null}};function ll(e){let t=[];if(!e||!Array.isArray(e.body))return t;for(let n of e.body){if(n.type!=="ImportDeclaration")continue;let r=n.source?.value;if(typeof r=="string")for(let s of n.specifiers??[]){let i=s.local?.name;if(typeof i=="string")switch(s.type){case"ImportSpecifier":t.push({specifier:r,local:i,imported:s.imported?.name??i,namespace:!1});break;case"ImportDefaultSpecifier":t.push({specifier:r,local:i,imported:"default",namespace:!1});break;case"ImportNamespaceSpecifier":t.push({specifier:r,local:i,imported:"*",namespace:!0});break}}}return t}function ul(e){let t=[];if(!e||!Array.isArray(e.body))return t;for(let n of e.body)if(n.type==="ExportNamedDeclaration"){if(n.declaration){let r=n.declaration;if(r.type==="FunctionDeclaration"&&r.id?.name)t.push({name:r.id.name,kind:"function"});else if(r.type==="ClassDeclaration"&&r.id?.name)t.push({name:r.id.name,kind:"class"});else if(r.type==="VariableDeclaration")for(let s of r.declarations)s.id?.type==="Identifier"&&s.id.name&&t.push({name:s.id.name,kind:"variable"})}if(Array.isArray(n.specifiers))for(let r of n.specifiers){let s=r.exported?.name;typeof s=="string"&&t.push({name:s,kind:n.source?"re-export":"unknown",fromSpecifier:n.source?.value})}}else if(n.type==="ExportDefaultDeclaration"){let r=n.declaration,s=r?.type==="FunctionDeclaration"||r?.type==="FunctionExpression"||r?.type==="ArrowFunctionExpression"?"function":r?.type==="ClassDeclaration"||r?.type==="ClassExpression"?"class":"unknown";t.push({name:"default",kind:s})}else if(n.type==="ExportAllDeclaration"){let r=n.source?.value;typeof r=="string"&&t.push({name:"*",kind:"re-export",fromSpecifier:r})}return t}function fl(e){let t=e instanceof Map?e:new Map(Object.entries(e)),n=s=>s.split("/").join(al),r=s=>t.get(s)??t.get(n(s))??null;return{readFile:s=>r(s),exists:s=>r(s)!==null}}import{s as y,validate as Fr,filter as Xi}from"tosijs-schema";function Ji(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)}var re=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 pl(e){return e instanceof re||e&&e.$error===!0}var ot=new Map,ml=3600*1e3,dl=100*1024,Ur="proc_";function qr(e){return typeof e=="string"&&e.startsWith(Ur)}function Wr(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 gl(){return typeof crypto<"u"&&crypto.randomUUID?Ur+crypto.randomUUID():Ur+Math.random().toString(36).slice(2)+Date.now().toString(36)}var Qi=new Set(["__proto__","constructor","prototype"]);function Vi(e){if(Qi.has(e))throw new Error(`Security Error: Access to '${e}' is forbidden`)}var yl=new Set(["localhost","127.0.0.1","0.0.0.0","[::1]","metadata.google.internal"]);function hl(e){try{let t=new URL(e);if(t.protocol!=="http:"&&t.protocol!=="https:")return!0;let n=t.hostname.toLowerCase();return!!(yl.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 bl(e){return!!(/\([^)]*[+*][^)]*\)[+*]/.test(e)||/\(([^|)]+)\|\1\)[+*]/.test(e)||/\(\.\*\)\+/.test(e)||/\(\.\+\)\+/.test(e)||/\(\[.*\]\+\)\+/.test(e))}function De(e){return{...e,state:Object.create(e.state)}}function xl(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 v(e,t){if(e&&typeof e=="object"&&e.$kind==="arg")return t.args[e.path];if(e&&typeof e=="object"&&e.$expr)return K(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(Qi.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]=v(e[r],t);return n}return Array.isArray(e)?e.map(n=>v(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 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 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=it(t),r=Xi(e,n);if(r instanceof Error)throw r;return r},Schema:{...y,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?Fr(e,t):Fr(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 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})()},On={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."},wl=.01,zi=1e-4,Gi=.001,Sl=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 K(e,t){if(e==null||typeof e!="object"||!("$expr"in e))return e;if(t.fuel&&(t.fuel.current-=wl,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 On)throw new Error(On[e.name]);return}case"member":{let n=K(e.object,t);if(e.optional&&n==null)return;let r=typeof e.property=="object"&&e.property!==null?K(e.property,t):e.property;return Vi(String(r)),n?.[r]}case"binary":{let n=K(e.left,t),r=K(e.right,t);switch(e.op){case"+":{let s=n+r;if(typeof s=="string"&&t.fuel&&(t.fuel.current-=s.length*zi,t.fuel.current<=0)){t.error=new re("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 Ji(n,r);case"!=":return!Ji(n,r);case"===":return n===r;case"!==":return n!==r;default:throw new Error(`Unknown binary operator: ${e.op}`)}}case"unary":{let n=K(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=K(e.left,t);return e.op==="&&"?n&&K(e.right,t):e.op==="??"?n??K(e.right,t):n||K(e.right,t)}case"conditional":{let n=K(e.test,t);return K(n?e.consequent:e.alternate,t)}case"array":return e.elements.map(n=>K(n,t));case"object":{let n={};for(let r of e.properties)n[r.key]=K(r.value,t);return n}case"call":{if(e.callee==="Error"){let r=e.arguments.map(i=>K(i,t)),s=typeof r[0]=="string"?r[0]:"Error";t.error=new re(s,"Error");return}if(e.callee in Me){let r=Me[e.callee];if(typeof r=="function"){let s=e.arguments.map(i=>K(i,t));return r(...s)}}throw t.resolver(e.callee)?new Error(`Atom calls in expressions not yet supported: ${e.callee}`):e.callee in On?new Error(On[e.callee]):new Error(`Unknown function: ${e.callee}`)}case"methodCall":{let n=K(e.object,t);if(e.optional&&n==null)return;let r=e.method;if(Vi(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=>K(a,t)),o=s.apply(n,i);if(t.fuel&&Sl.has(r)){let a=0;if(typeof o=="string"?a=o.length*zi:Array.isArray(o)?a=o.length*Gi:typeof o=="object"&&o!==null&&(a=Object.keys(o).length*Gi),t.fuel.current-=a,t.fuel.current<=0){t.error=new re("Out of Fuel",`expr.${r}`);return}}return o}default:throw new Error(`Unknown expression type: ${e.$expr}`)}}function P(e,t,n,r,s={}){let{docs:i="",timeoutMs:o=1e3,cost:a=1,effects:c="pure"}=typeof s=="string"?{docs:s}:s;return{op:e,inputSchema:t,outputSchema:n,exec:async(u,f)=>{let{op:p,result:m,...d}=u;if(f.error)return;let h=f.trace?{...f.state}:null,x=f.fuel.current,_,E;try{let b=f.costOverrides?.[e],w=b!==void 0?b:a,T=typeof w=="function"?w(d,f):w;if((f.fuel.current-=T)<=0){f.error=new re("Out of Fuel",e);return}let S=f.timeoutOverrides?.[e],$=S!==void 0?S:o,j=typeof $=="function"?$(d,f):$,k,R=async()=>r(u,f);if(_=j>0?await Promise.race([R(),new Promise((C,I)=>{k=setTimeout(()=>I(new Error(`Atom '${e}' timed out`)),j)})]).finally(()=>clearTimeout(k)):await R(),u.result){if(f.consts.has(u.result))throw new Error(`Cannot reassign const variable '${u.result}'`);if(_!==void 0&&n&&!Fr(_,n)){f.error=new re(`Output validation failed for '${e}'`,e);return}f.state[u.result]=_,u.resultConst&&f.consts.add(u.result)}}catch(b){E=b.message||String(b),f.error=new re(E,e,b)}finally{if(f.trace&&h){let b=xl(h,f.state);f.trace.push({op:e,input:d,stateDiff:b,result:_,error:E,fuelBefore:x,fuelAfter:f.fuel.current,timestamp:new Date().toISOString()})}}},docs:i,timeoutMs:o,cost:a,effects:c,create:u=>({op:e,...u})}}var pe=P("seq",y.object({steps:y.array(y.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}),_l=P("if",y.object({condition:y.any,then:y.array(y.any),else:y.array(y.any).optional}),void 0,async(e,t)=>{K(e.condition,t)?await pe.exec({op:"seq",steps:e.then},t):e.else&&await pe.exec({op:"seq",steps:e.else},t)},{docs:"If/Else",timeoutMs:0,cost:.1}),Tl=P("while",y.object({condition:y.any,body:y.array(y.any)}),void 0,async(e,t)=>{for(;K(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 pe.exec({op:"seq",steps:e.body},t),t.output!==void 0||t.error)return}},{docs:"While Loop",timeoutMs:0,cost:.1}),El=P("return",void 0,y.any,async(e,t)=>{if(t.error)return t.output=t.error,t.error;if("value"in e){let r=v(e.value,t);if(!t.localCall&&r!==void 0&&r!==null&&!pl(r)&&(typeof r!="object"||Array.isArray(r))){let s=new re(`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=Xi(n,e.schema);r instanceof Error||(n=r)}}return t.output=n,n},{docs:"Return",cost:.1}),$l=P("try",y.object({try:y.array(y.any),catch:y.array(y.any).optional,catchParam:y.string.optional}),void 0,async(e,t)=>{if(await pe.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 pe.exec({op:"seq",steps:e.catch},t)}},{docs:"Try/Catch",timeoutMs:0,cost:.1}),kl=P("Error",y.object({args:y.array(y.any).optional}),void 0,async(e,t)=>{let n=e.args?.[0]??"Error";t.error=new re(String(n),"Error")},{docs:"Trigger error flow",cost:.1}),jl=P("varSet",y.object({key:y.string,value:y.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]=v(t,n)},{docs:"Set Variable",cost:.1}),vl=P("constSet",y.object({key:y.string,value:y.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]=v(t,n),n.consts.add(e)},{docs:"Set Const Variable (immutable)",cost:.1}),Ml=P("varGet",y.object({key:y.string}),y.any,async({key:e},t)=>v(e,t),{docs:"Get Variable",cost:.1}),Al=P("varsImport",y.object({keys:y.union([y.array(y.string),y.record(y.string)])}),void 0,async({keys:e},t)=>{if(Array.isArray(e))for(let n of e)t.state[n]=v({$kind:"arg",path:n},t);else for(let[n,r]of Object.entries(e))t.state[n]=v({$kind:"arg",path:r},t)},{docs:"Import variables from args into the current scope, with optional renaming.",cost:.2}),Cl=P("varsLet",y.record(y.any),void 0,async(e,t)=>{for(let n of Object.keys(e))n==="op"||n==="result"||(t.state[n]=v(e[n],t))},{docs:"Initialize a set of variables in the current scope from the step object properties.",cost:.1}),Rl=P("varsExport",y.object({keys:y.union([y.array(y.string),y.record(y.string)])}),y.record(y.any),async({keys:e},t)=>{let n={};if(Array.isArray(e))for(let r of e)n[r]=v(r,t);else for(let[r,s]of Object.entries(e))n[r]=v(s,t);return n},{docs:"Export variables from the current scope, with optional renaming.",cost:.2}),Pl=P("scope",y.object({steps:y.array(y.any)}),void 0,async({steps:e},t)=>{let n=De(t);await pe.exec({op:"seq",steps:e},n),n.output!==void 0&&(t.output=n.output)},{docs:"Create new scope",timeoutMs:0,cost:.1}),Zi=256,Nl=P("callLocal",y.object({name:y.string,args:y.array(y.any)}),void 0,async({name:e,args:t},n)=>{let r=n.helpers?.[e];if(!r)return n.error=new re(`Unknown helper: ${e}`,"callLocal"),n.error;let s=(n.callDepth??0)+1;if(s>Zi)return n.error=new re(`Maximum helper call depth (${Zi}) exceeded \u2014 likely infinite recursion in '${e}'`,"callLocal"),n.error;let i=t.map(a=>v(a,n)),o={...n,state:{},consts:new Set,output:void 0,error:void 0,localCall:!0,callDepth:s};for(let a=0;a<r.paramNames.length;a++)o.state[r.paramNames[a]]=i[a];return await pe.exec({op:"seq",steps:r.steps},o),o.error&&(n.error=o.error),o.output},{docs:"Invoke a local helper function by name",timeoutMs:0,cost:.1}),Dl=P("map",y.object({items:y.array(y.any),as:y.string,steps:y.array(y.any)}),y.array(y.any),async({items:e,as:t,steps:n},r)=>{let s=[],i=v(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=De(r);a.state[t]=o,await pe.exec({op:"seq",steps:n},a),s.push(a.state.result??null)}return s},{docs:"Map Array",timeoutMs:0,cost:1}),Il=P("filter",y.object({items:y.array(y.any),as:y.string,condition:y.any}),y.array(y.any),async({items:e,as:t,condition:n},r)=>{let s=[],i=v(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=De(r);a.state[t]=o,K(n,a)&&s.push(o)}return s},{docs:"Filter Array",timeoutMs:0,cost:1}),Ol=P("reduce",y.object({items:y.array(y.any),as:y.string,accumulator:y.string,initial:y.any,steps:y.array(y.any)}),y.any,async({items:e,as:t,accumulator:n,initial:r,steps:s},i)=>{let o=v(e,i),a=v(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=De(i);u.state[t]=l,u.state[n]=c,await pe.exec({op:"seq",steps:s},u),c=u.state.result??c}return c},{docs:"Reduce Array",timeoutMs:0,cost:1}),Bl=P("find",y.object({items:y.array(y.any),as:y.string,condition:y.any}),y.any,async({items:e,as:t,condition:n},r)=>{let s=v(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=De(r);if(o.state[t]=i,K(n,o))return i}return null},{docs:"Find in Array",timeoutMs:0,cost:1}),Ll=P("push",y.object({list:y.array(y.any),item:y.any}),y.array(y.any),async({list:e,item:t},n)=>{let r=v(e,n),s=v(t,n);return Array.isArray(r)&&r.push(s),r},{docs:"Push to Array",cost:1}),Fl=P("len",y.object({list:y.any}),y.number,async({list:e},t)=>{let n=v(e,t);return Array.isArray(n)||typeof n=="string"?n.length:0},{docs:"Length",cost:1}),Ul=P("split",y.object({str:y.string,sep:y.string}),y.array(y.string),async({str:e,sep:t},n)=>v(e,n).split(v(t,n)),{docs:"Split String",cost:1}),ql=P("join",y.object({list:y.array(y.string),sep:y.string}),y.string,async({list:e,sep:t},n)=>v(e,n).join(v(t,n)),{docs:"Join String",cost:1}),Wl=P("template",y.object({tmpl:y.string,vars:y.record(y.any)}),y.string,async({tmpl:e,vars:t},n)=>v(e,n).replace(/\{\{(\w+)\}\}/g,(s,i)=>String(v(t[i],n)??"")),{docs:"String Template",cost:1}),Jl=P("regexMatch",y.object({pattern:y.string,value:y.any}),y.boolean,async({pattern:e,value:t},n)=>{if(bl(e))throw new Error(`Suspicious regex pattern rejected (potential ReDoS): ${e}`);let r=v(t,n);return new RegExp(e).test(r)},{docs:"Returns true if the value matches the regex pattern.",cost:2}),Vl=P("pick",y.object({obj:y.record(y.any),keys:y.array(y.string)}),y.record(y.any),async({obj:e,keys:t},n)=>{let r=v(e,n),s=v(t,n),i={};return r&&Array.isArray(s)&&s.forEach(o=>i[o]=r[o]),i},{docs:"Pick Keys",cost:1}),zl=P("omit",y.object({obj:y.record(y.any),keys:y.array(y.string)}),y.record(y.any),async({obj:e,keys:t},n)=>{let r=v(e,n),s=new Set(v(t,n)),i={};return r&&Object.keys(r).forEach(o=>{s.has(o)||(i[o]=r[o])}),i},{docs:"Omit Keys",cost:1}),Gl=P("merge",y.object({a:y.record(y.any),b:y.record(y.any)}),y.record(y.any),async({a:e,b:t},n)=>({...v(e,n),...v(t,n)}),{docs:"Merge Objects",cost:1}),Zl=P("keys",y.object({obj:y.record(y.any)}),y.array(y.string),async({obj:e},t)=>Object.keys(v(e,t)??{}),{docs:"Object Keys",cost:1}),Hi=10,Yi="X-Agent-Depth";function Hl(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 Yl=P("httpFetch",y.object({url:y.string,method:y.string.optional,headers:y.record(y.string).optional,body:y.any.optional,responseType:y.string.optional}),y.any,async(e,t)=>{let n=v(e.url,t),r=v(e.method,t),s=v(e.headers,t)||{},i=v(e.body,t),o=v(e.responseType,t),a=t.context?.requestDepth??0;if(a>=Hi)throw new Error(`Agent request depth exceeded (max ${Hi}). This prevents recursive agent loops.`);if(t.capabilities.fetch)return t.capabilities.fetch(n,{method:r,headers:{...s,[Yi]:String(a+1)},body:i,signal:t.signal,responseType:o});let c=t.context?.allowedFetchDomains;if(c){if(!Hl(n,c))throw new Error(`Fetch blocked: domain not in allowlist. Allowed: ${c.join(", ")}`)}else{if(hl(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}`,{cause:l})}}if(typeof globalThis.fetch=="function"){let l=await globalThis.fetch(n,{method:r,headers:{...s,[Yi]:String(a+1)},body:i?JSON.stringify(i):void 0,signal:t.signal});if(o==="dataUrl"){let f=await l.arrayBuffer(),p=new Uint8Array(f),m="";for(let x=0;x<p.length;x++)m+=String.fromCharCode(p[x]);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}),Kl=P("storeGet",y.object({key:y.string}),y.any,async({key:e},t)=>{let n=v(e,t);return t.capabilities.store?.get(n)},{docs:"Store Get",cost:5}),Xl=P("storeSet",y.object({key:y.string,value:y.any}),void 0,async({key:e,value:t},n)=>{let r=v(e,n),s=v(t,n);return n.capabilities.store?.set(r,s)},{docs:"Store Set",cost:5}),Ql=P("storeQuery",y.object({query:y.any}),y.array(y.any),async({query:e},t)=>t.capabilities.store?.query?.(v(e,t))??[],{docs:"Store Query",cost:5}),eu=P("storeVectorSearch",y.object({collection:y.string.optional,vector:y.array(y.number),k:y.number.optional}),y.array(y.any),async({collection:e,vector:t,k:n},r)=>r.capabilities.store?.vectorSearch?.(v(e,r),v(t,r),v(n,r))??[],{docs:"Vector Search",cost:(e,t)=>5+(v(e.k,t)??5)}),tu=P("llmPredict",y.object({prompt:y.string,options:y.any.optional}),y.string,async({prompt:e,options:t},n)=>{if(!n.capabilities.llm?.predict)throw new Error("Capability 'llm.predict' missing");return n.capabilities.llm.predict(v(e,n),v(t,n))},{docs:"LLM Predict",timeoutMs:12e4,cost:100}),nu=P("agentRun",y.object({agentId:y.any,input:y.any}),y.any,async({agentId:e,input:t},n)=>{let r=v(e,n),s=v(t,n),i=s;if(s&&typeof s=="object"&&!Array.isArray(s)){i={};for(let a in s)i[a]=v(s[a],n)}if(qr(r)){let a=Wr(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}),ru=P("transpileCode",y.object({code:y.string}),y.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=v(e,t);try{return t.capabilities.code.transpile(n)}catch(r){throw new Error(`Code transpilation failed: ${r.message}`,{cause:r})}},{docs:"Transpile AsyncJS code to AST",cost:1}),Ki=10,su=P("runCode",y.object({code:y.string,args:y.record(y.any).optional}),y.any,async({code:e,args:t},n)=>{let r=n.runCodeDepth??0;if(r>=Ki)throw new Error(`runCode recursion limit exceeded (max ${Ki}). 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=v(e,n),i=t?v(t,n):{},o;try{o=n.capabilities.code.transpile(s)}catch(c){throw new Error(`Code transpilation failed: ${c.message}`,{cause:c})}if(o.op!=="seq")throw new Error("Transpiled code must be a seq node");let a=De(n);if(a.args=i,a.output=void 0,a.runCodeDepth=r+1,await pe.exec(o,a),a.error){n.error=a.error;return}return a.output},{docs:"Run dynamically generated AsyncJS code",cost:1}),iu=P("jsonParse",y.object({str:y.string}),y.any,async({str:e},t)=>JSON.parse(v(e,t)),{docs:"Parse JSON",cost:1}),ou=P("jsonStringify",y.object({value:y.any}),y.string,async({value:e},t)=>JSON.stringify(v(e,t)),{docs:"Stringify JSON",cost:1}),au=P("xmlParse",y.object({str:y.string}),y.any,async({str:e},t)=>{if(!t.capabilities.xml?.parse)throw new Error("Capability 'xml.parse' missing");return t.capabilities.xml.parse(v(e,t))},{docs:"Parse XML",cost:1}),cu=P("memoize",y.object({key:y.string.optional,steps:y.array(y.any)}),y.any,async({key:e,steps:t},n)=>{n.memo||(n.memo=new Map);let r=v(e,n)??await Jr.exec({value:t,algorithm:"SHA-256"},n);if(n.memo.has(r))return n.memo.get(r);let s=De(n);await pe.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}),lu=P("cache",y.object({key:y.string.optional,steps:y.array(y.any),ttlMs:y.number.optional}),y.any,async({key:e,steps:t,ttlMs:n},r)=>{if(!r.capabilities.store)throw new Error("Capability 'store' missing for caching");let i=`cache:${v(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=De(r);await pe.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}),uu=P("random",y.object({min:y.number.optional,max:y.number.optional,format:y.string.optional,length:y.number.optional}),y.any,async({min:e,max:t,format:n,length:r},s)=>{let i=v(n,s)??"float",o=v(r,s)??10,a=v(e,s)??0,c=v(t,s)??1;if(i==="base36"){let p="0123456789abcdefghijklmnopqrstuvwxyz",m="";if(typeof crypto<"u"&&crypto.getRandomValues){let d=new Uint8Array(o);crypto.getRandomValues(d);for(let h=0;h<o;h++)m+=p[d[h]%36]}else for(let d=0;d<o;d++)m+=p.charAt(Math.floor(Math.random()*36));return m}let l;if(typeof crypto<"u"&&crypto.getRandomValues){let p=new Uint32Array(1);crypto.getRandomValues(p),l=p[0]/4294967296}else l=Math.random();let u=c-a,f=l*u+a;return i==="integer"?Math.floor(f):f},{docs:"Generate Random",cost:1}),fu=P("uuid",void 0,y.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=P("hash",y.object({value:y.any,algorithm:y.string.optional}),y.string,async({value:e,algorithm:t},n)=>{let r=typeof e=="string"?e:JSON.stringify(v(e,n)),s=v(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}),pu=P("consoleLog",y.object({message:y.any}),void 0,async({message:e},t)=>{let n=v(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}),mu=P("consoleWarn",y.object({message:y.any}),void 0,async({message:e},t)=>{let n=v(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}),du=P("consoleError",y.object({message:y.any}),void 0,async({message:e},t)=>{let n=v(e,t),r=typeof n=="string"?n:JSON.stringify(n);t.error=new re(r,"console.error")},{docs:"Emit error and stop",cost:.1}),gu=P("storeProcedure",y.object({ast:y.any,ttl:y.number.optional,maxSize:y.number.optional}),y.string,async({ast:e,ttl:t,maxSize:n},r)=>{let s=v(e,r),i=t?v(t,r):ml,o=n?v(n,r):dl;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=gl(),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}),yu=P("releaseProcedure",y.object({token:y.string}),y.boolean,async({token:e},t)=>{let n=v(e,t);return ot.delete(n)},{docs:"Release a stored procedure by token",cost:.1}),hu=P("clearExpiredProcedures",void 0,y.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}),Ot={seq:pe,if:_l,while:Tl,return:El,try:$l,Error:kl,varSet:jl,constSet:vl,varGet:Ml,varsImport:Al,varsLet:Cl,varsExport:Rl,scope:Pl,callLocal:Nl,map:Dl,filter:Il,reduce:Ol,find:Bl,push:Ll,len:Fl,split:Ul,join:ql,template:Wl,regexMatch:Jl,pick:Vl,omit:zl,merge:Gl,keys:Zl,httpFetch:Yl,storeGet:Kl,storeSet:Xl,storeQuery:Ql,storeVectorSearch:eu,llmPredict:tu,agentRun:nu,transpileCode:ru,runCode:su,jsonParse:iu,jsonStringify:ou,xmlParse:au,memoize:cu,cache:lu,random:uu,uuid:fu,hash:Jr,consoleLog:pu,consoleWarn:mu,consoleError:du,storeProcedure:gu,releaseProcedure:yu,clearExpiredProcedures:hu},bu=["httpFetch","storeGet","storeSet","storeQuery","storeVectorSearch","llmPredict","agentRun","transpileCode","runCode","random","uuid","consoleLog","consoleWarn","consoleError","storeProcedure","releaseProcedure","clearExpiredProcedures","cache","memoize"];for(let e of bu){let t=Ot[e];t&&(t.effects="io")}var xu=new Set(["true","false","null","undefined","and","or","not"]);function wu(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=>!xu.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){wu(e,t);let n=Su(e),r=so(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}
412
+ Supported: comparisons, &&, ||, !, arithmetic, member access (a.b), literals`)}return r.node}function Su(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 so(e,t,n){return _u(e,t,n)}function _u(e,t,n){let{node:r,pos:s}=eo(e,t,n);for(;e[s]==="||";){s++;let{node:i,pos:o}=eo(e,s,n);r={$expr:"logical",op:"||",left:r,right:i},s=o}return{node:r,pos:s}}function eo(e,t,n){let{node:r,pos:s}=to(e,t,n);for(;e[s]==="&&";){s++;let{node:i,pos:o}=to(e,s,n);r={$expr:"logical",op:"&&",left:r,right:i},s=o}return{node:r,pos:s}}function to(e,t,n){let{node:r,pos:s}=no(e,t,n),i=["==","!=",">","<",">=","<="];for(;i.includes(e[s]);){let o=e[s++],{node:a,pos:c}=no(e,s,n);r={$expr:"binary",op:o,left:r,right:a},s=c}return{node:r,pos:s}}function no(e,t,n){let{node:r,pos:s}=ro(e,t,n);for(;e[s]==="+"||e[s]==="-";){let i=e[s++],{node:o,pos:a}=ro(e,s,n);r={$expr:"binary",op:i,left:r,right:o},s=a}return{node:r,pos:s}}function ro(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 Tu(e,t,n)}function Tu(e,t,n){let r=e[t];if(r==="("){let{node:s,pos:i}=so(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 He=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}))}},Eu={take(e){return new He(Ot)},custom(e){return new He(e)},args(e){return{$kind:"arg",path:e}},val(e){return e}},hm=Eu;import{validate as $u}from"tosijs-schema";function Bt(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=he(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),{entry:o,helpers:a}=xt(n,t.filename),{ast:c,signature:l,warnings:u}=Tt(o,s,r,t,i,a.size>0?a:void 0);return{ast:c,signature:l,warnings:u}}var ku=6e4,Ln=class{atoms;_defaultRunTimeout;constructor(t={}){this.atoms={...Ot,...t}}get defaultRunTimeout(){if(this._defaultRunTimeout===void 0){let t=0;for(let n of Object.values(this.atoms)){let r=n.timeoutMs??1e3;r>0&&r>t&&(t=r)}this._defaultRunTimeout=Math.max(ku,t*2)}return this._defaultRunTimeout}get builder(){return new He(this.atoms)}get Agent(){return new He(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(qr(t))s=Wr(t);else try{s=Bt(t).ast}catch(d){throw new Error(`AJS transpilation failed: ${d.message}`,{cause:d})}else s=t;let i=r.fuel??1e3,o=r.timeoutMs??this.defaultRunTimeout,a=r.capabilities??{},c=[];if(!a.store){let d=new Map,h=!1;a.store={get:async x=>(h||(h=!0,c.push("Using default in-memory store (not suitable for production)")),d.get(x)),set:async(x,_)=>{h||(h=!0,c.push("Using default in-memory store (not suitable for production)")),d.set(x,_)}}}let l=new AbortController,u=setTimeout(()=>l.abort(),o);r.signal&&r.signal.addEventListener("abort",()=>l.abort());let f={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,timeoutOverrides:r.timeoutOverrides,context:r.context,warnings:c,helpers:s.helpers};if(r.trace&&(f.trace=[]),s.op!=="seq")throw new Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let p=s.inputSchema;if(p&&!$u(n,p)){let d=new re("Input validation failed: args do not match expected schema","vm.run");return{result:d,error:d,fuelUsed:0,trace:f.trace,warnings:c.length>0?c:void 0}}try{await Promise.race([this.resolve("seq")?.exec(s,f),new Promise((d,h)=>{l.signal.addEventListener("abort",()=>{h(new Error(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`))}),l.signal.aborted&&h(new Error(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`))})])}catch(d){if(d.message?.includes("timeout")||d.message?.includes("aborted")||l.signal.aborted)f.error=new re(`Execution timeout after ${o}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`,"vm.run");else throw d}finally{clearTimeout(u)}f.error&&f.output===void 0&&(f.output=f.error);let m=[...c,...f.warnings??[]];return{result:f.output,error:f.error,fuelUsed:i-f.fuel.current,trace:f.trace,warnings:m.length>0?m:void 0}}};var ju=null,io=()=>ju??=new Ln;function Ye(e){if(!(!e||typeof e!="object")){if(Array.isArray(e)){for(let t of e)Ye(t);return}e.op==="return"&&"value"in e&&(e.value={__result:e.value}),e.steps&&Ye(e.steps),e.then&&Ye(e.then),e.else&&Ye(e.else),e.body&&Ye(e.body)}}async function vu(e){let{code:t,context:n={},fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=io(),c=/\breturn\b/.test(t)?`function __eval() { ${t} }`:`function __eval() { return (${t}) }`;try{let{ast:l}=Bt(c);Ye(l);let u=await o.run(l,n,{fuel:r,timeoutMs:s,capabilities:i}),f=u.result;return{result:f&&typeof f=="object"&&"__result"in f?f.__result:f,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 Mu(e){let{body:t,params:n=[],fuel:r=1e3,timeoutMs:s,capabilities:i={}}=e,o=io(),c=`function __safeFn(${n.join(", ")}) { ${t} }`,{ast:l}=Bt(c);return Ye(l),async(...u)=>{let f={};for(let p=0;p<n.length;p++)f[n[p]]=u[p];try{let p=await o.run(l,f,{fuel:r,timeoutMs:s,capabilities:i}),m=p.result;return{result:m&&typeof m=="object"&&"__result"in m?m.__result:m,fuelUsed:p.fuelUsed,error:p.error?{message:p.error.message||String(p.error)}:void 0}}catch(p){return{result:void 0,fuelUsed:r,error:{message:p.message||String(p)}}}}}function Fn(e,t={}){let{ast:n,returnType:r,originalSource:s,requiredParams:i}=he(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),{entry:o,helpers:a}=xt(n,t.filename),{ast:c,signature:l,warnings:u}=Tt(o,s,r,t,i,a.size>0?a:void 0);return{ast:c,signature:l,warnings:u}}function Im(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 Bm(e,t,...n){if(typeof e=="string")return Nt(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 Nt(s)}async function Lm(e,t={},n){let r=n??await Dn(),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 Fm(e,t={},n){let r=n??await Dn(),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=Nt(e,t);return r.setTJS(e,{code:i.code,types:i.types,testRunner:i.testRunner,testCount:i.testCount,warnings:i.warnings}),i}function Um(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 qm(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]=ke(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 D}from"tosijs-schema";var zr=P("storeVectorize",D.object({text:D.string,model:D.string.optional}),D.array(D.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=v(e,t);return n.embed(r)},{docs:"Generate embeddings using vector battery",cost:20,timeoutMs:6e4}),Gr=P("storeCreateCollection",D.object({collection:D.string,dimension:D.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=v(e,n),i=v(t,n);return r.createCollection(s,void 0,i)},{docs:"Create a vector store collection",cost:5}),Zr=P("storeVectorAdd",D.object({collection:D.string,doc:D.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=v(e,n),i=v(t,n);return r.vectorAdd(s,i)},{docs:"Add a document to a vector store collection",cost:5,timeoutMs:6e4}),Hr=P("storeSearch",D.object({collection:D.string,queryVector:D.array(D.number),k:D.number.optional,filter:D.record(D.any).optional}),D.array(D.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=v(e,s),a=v(t,s),c=v(n,s)??5,l=v(r,s);return i.vectorSearch(o,a,c,l)},{docs:"Search vector store",cost:(e,t)=>5+(v(e.k,t)??5)}),Yr=P("llmPredictBattery",D.object({system:D.string.optional,user:D.union([D.string,D.array(D.any)]),tools:D.array(D.any).optional,responseFormat:D.any.optional}),D.object({role:D.string.optional,content:D.string.optional,tool_calls:D.array(D.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=v(e,s)??"You are a helpful agent.",a=v(t,s),c=v(n,s),l=v(r,s);return i.predict(o,a,c,l)},{docs:"Generate completion using LLM battery",cost:100,timeoutMs:12e4}),Kr=P("llmVision",D.object({system:D.string.optional,prompt:D.string,images:D.array(D.string),responseFormat:D.any.optional}),D.object({role:D.string.optional,content:D.string.optional,tool_calls:D.array(D.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=v(e,s)??"You analyze images accurately and concisely.",a=v(t,s),c=v(n,s)??[],l=v(r,s);return i.predict(o,{text:a,images:c},void 0,l)},{docs:"Analyze images using a vision model",timeoutMs:12e4,cost:150});for(let e of[zr,Gr,Zr,Hr,Yr,Kr])e.effects="io";var dd={storeCreateCollection:Gr,storeSearch:Hr,storeVectorAdd:Zr,storeVectorize:zr,llmPredictBattery:Yr,llmVision:Kr};var oo=new Map,Un=new Map;function Au(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 Xr(){return{async get(e){return oo.get(e)},async set(e,t){oo.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:Au(t,i.embedding)}));return s.sort((i,o)=>o.score-i.score),s.slice(0,n).map(i=>i.doc)}}}function Cu(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 Ru="http://localhost:1234/v1";function ao(e,t=Ru){return{async predict(n,r,s,i){try{let o=i?e.getStructuredLLM():e.getLLM(),a=[{role:"system",content:n},Cu(r)],c=await fetch(`${t}/chat/completions`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:o.id,messages:a,temperature:.7,...s&&s.length>0?{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.",{cause:o}):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.",{cause:r}):r}}}}var qn=".models.cache.json";var Lt=typeof window<"u"&&typeof window.localStorage<"u";async function Pu(e){try{if(Lt){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 Nu(e,t){let n={timestamp:Date.now(),baseUrl:e,models:t};try{if(Lt)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 Ft=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 Du(e,t){try{let n={type:"json_schema",json_schema:{name:"test",strict:!1,schema:{type:"object",properties:{status:{type:"string"}}}}},r=await Ft(`${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?Iu(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 Iu(e,t){try{return(await Ft(`${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 Ou(e,t){try{return(await Ft(`${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 Bu(e,t){try{let n=await Ft(`${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 Lu="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAIAAAD8GO2jAAAAMUlEQVR4nGO4o6FBU8QwasFoEI2motF8MFpUjJamo/XBaJU52qoYbReNNh01hkg+AACGobA9N+tfoAAAAABJRU5ErkJggg==";async function Fu(e,t){try{return(await Ft(`${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:Lu}}]}],max_tokens:10})})).ok}catch{return!1}}async function co(e){let t=await Pu(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;Lt||(i=await import("node:readline"));for(let o of s){!Lt&&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,f,p=await Ou(e,o.id),m=await Bu(e,o.id);if(m&&(f=m),p){a="LLM";let d=await Du(e,o.id);c=d.ok,l=await Fu(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:f,status:u})}return!Lt&&i&&(i.cursorTo(process.stdout,0),i.clearLine(process.stdout,0)),console.log(`
413
+ `),console.table(r),await Nu(e,r),console.log("\u{1F4DD} Audit results saved to cache."),r}var Uu="http://localhost:1234/v1",Wn=class{constructor(t=Uu){this.baseUrl=t}baseUrl;models=[];defaultLLM=null;defaultEmbedding=null;defaultStructuredLLM=null;async audit(){this.models=await co(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 qu=typeof window<"u",Wu=qu&&window.location.protocol==="https:",Ut=null,Qr=null,lo=!1;async function Ju(){if(lo)return{localModels:Ut,llm:Qr};if(lo=!0,Wu)return console.log("\u{1F4E1} HTTPS detected - local LLM endpoints disabled. Use HTTP for local LLM support."),{localModels:null,llm:null};try{Ut=new Wn,await Ut.audit(),Qr=ao(Ut)}catch(e){console.warn("\u26A0\uFE0F Could not connect to local LLM:",e)}return{localModels:Ut,llm:Qr}}async function Vu(){let{localModels:e,llm:t}=await Ju();return{vector:t?{embed:t.embed}:void 0,store:Xr(),llmBattery:t,models:e}}async function Ed(){return Vu()}var $d={store:Xr(),llmBattery:null,vector:void 0,models:null};function zu(e){if(typeof e!="string")return!1;let t=new Date(e);return!isNaN(t.getTime())&&e.includes("T")}function Gu(){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 uo(e){let t=new Date(e);if(isNaN(t.getTime()))throw new Error(`Invalid date string: ${e}`);return t.toISOString()}function Zu(e){try{return uo(e)}catch{return null}}function qt(e,t){let n=new Date(e);return n.setTime(n.getTime()+t),n.toISOString()}function Hu(e,t){return qt(e,t*1e3)}function Yu(e,t){return qt(e,t*60*1e3)}function Ku(e,t){return qt(e,t*60*60*1e3)}function fo(e,t){return qt(e,t*24*60*60*1e3)}function Xu(e,t){return fo(e,t*7)}function Qu(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 ef(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 Ie(e,t){return new Date(e).getTime()-new Date(t).getTime()}function tf(e,t){return Math.floor(Ie(e,t)/1e3)}function nf(e,t){return Math.floor(Ie(e,t)/(60*1e3))}function rf(e,t){return Math.floor(Ie(e,t)/(3600*1e3))}function sf(e,t){return Math.floor(Ie(e,t)/(1440*60*1e3))}function ct(e){return new Date(e).getUTCFullYear()}function Jn(e){return new Date(e).getUTCMonth()+1}function es(e){return new Date(e).getUTCDate()}function of(e){return new Date(e).getUTCHours()}function af(e){return new Date(e).getUTCMinutes()}function cf(e){return new Date(e).getUTCSeconds()}function lf(e){return new Date(e).getUTCMilliseconds()}function uf(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 ff(e,t){return Vn(e,t,{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit"})}function pf(e,t){return Vn(e,t,{year:"numeric",month:"short",day:"numeric"})}function mf(e,t){return Vn(e,t,{hour:"2-digit",minute:"2-digit",second:"2-digit"})}function df(e){return e.slice(0,10)}function po(e,t){return Ie(e,t)<0}function mo(e,t){return Ie(e,t)>0}function gf(e,t){return Ie(e,t)===0}function yf(e,t){return po(e,t)?e:t}function hf(e,t){return mo(e,t)?e:t}function bf(e){return at(ct(e),Jn(e),es(e))}function xf(e){return at(ct(e),Jn(e),es(e),23,59,59,999)}function wf(e){return at(ct(e),Jn(e),1)}function Sf(e){let t=new Date(e);return t.setUTCMonth(t.getUTCMonth()+1,0),t.setUTCHours(23,59,59,999),t.toISOString()}function _f(e){return at(ct(e),1,1)}function Tf(e){return at(ct(e),12,31,23,59,59,999)}var lt={isValid:zu,now:Gu,from:at,parse:uo,tryParse:Zu,addMilliseconds:qt,addSeconds:Hu,addMinutes:Yu,addHours:Ku,addDays:fo,addWeeks:Xu,addMonths:Qu,addYears:ef,diff:Ie,diffSeconds:tf,diffMinutes:nf,diffHours:rf,diffDays:sf,year:ct,month:Jn,day:es,hour:of,minute:af,second:cf,millisecond:lf,dayOfWeek:uf,toLocal:Vn,format:ff,formatDate:pf,formatTime:mf,toDate:df,isBefore:po,isAfter:mo,isEqual:gf,min:yf,max:hf,startOfDay:bf,endOfDay:xf,startOfMonth:wf,endOfMonth:Sf,startOfYear:_f,endOfYear:Tf};function ts(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 Ef(){return lt.toDate(lt.now())}function $f(e){let t=new Date;return new Intl.DateTimeFormat("en-CA",{timeZone:e,year:"numeric",month:"2-digit",day:"2-digit"}).format(t)}function de(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(!ts(o))throw new Error(`Invalid date: ${e}-${t}-${n}`);return o}function go(e){if(/^\d{4}-\d{2}-\d{2}$/.test(e)){if(!ts(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 de(n,r,s)}function kf(e){try{return go(e)}catch{return null}}function zn(e,t){let n=ho(e);return lt.toDate(lt.addDays(n,t))}function jf(e,t){return zn(e,t*7)}function vf(e,t){let n=fe(e),r=Oe(e),s=ns(e),i=n*12+(r-1)+t,o=Math.floor(i/12),a=i%12+1,c=Wt(o,a),l=Math.min(s,c);return de(o,a,l)}function Mf(e,t){let n=fe(e),r=Oe(e),s=ns(e),i=n+t,o=Wt(i,r),a=Math.min(s,o);return de(i,r,a)}function yo(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 Af(e,t){let n=fe(e),r=Oe(e),s=fe(t),i=Oe(t);return(n-s)*12+(r-i)}function Cf(e,t){return fe(e)-fe(t)}function fe(e){return parseInt(e.slice(0,4),10)}function Oe(e){return parseInt(e.slice(5,7),10)}function ns(e){return parseInt(e.slice(8,10),10)}function rs(e){let t=new Date(e+"T00:00:00Z").getUTCDay();return t===0?7:t}function Rf(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 Pf(e){let t=de(fe(e),1,1);return yo(e,t)+1}function ss(e){return Math.ceil(Oe(e)/3)}function is(e){return e%4===0&&e%100!==0||e%400===0}function Wt(e,t){let n=[31,28,31,30,31,30,31,31,30,31,30,31];return t===2&&is(e)?29:n[t-1]}function Nf(e){return is(e)?366:365}function ho(e){return e+"T00:00:00.000Z"}function Df(e){return Math.floor(new Date(e+"T00:00:00Z").getTime()/1e3)}function If(e){let t=new Date(e*1e3);return de(t.getUTCFullYear(),t.getUTCMonth()+1,t.getUTCDate())}function os(e,t){let n=new Date(e+"T00:00:00Z"),r={timeZone:"UTC",...t};return new Intl.DateTimeFormat(void 0,r).format(n)}function Of(e){return os(e,{year:"numeric",month:"long",day:"numeric"})}function Bf(e){return os(e,{year:"numeric",month:"short",day:"numeric"})}function Lf(e,t){return e<t}function Ff(e,t){return e>t}function Uf(e,t){return e===t}function qf(e,t){return e<t?e:t}function Wf(e,t){return e>t?e:t}function Jf(e,t,n){return e>=t&&e<=n}function Vf(e){return de(fe(e),Oe(e),1)}function zf(e){let t=fe(e),n=Oe(e);return de(t,n,Wt(t,n))}function Gf(e){let n=(ss(e)-1)*3+1;return de(fe(e),n,1)}function Zf(e){let n=ss(e)*3;return de(fe(e),n,Wt(fe(e),n))}function Hf(e){return de(fe(e),1,1)}function Yf(e){return de(fe(e),12,31)}function Kf(e){let t=rs(e);return zn(e,-(t-1))}function Xf(e){let t=rs(e);return zn(e,7-t)}var Qf={isValid:ts,today:Ef,todayIn:$f,from:de,parse:go,tryParse:kf,addDays:zn,addWeeks:jf,addMonths:vf,addYears:Mf,diff:yo,diffMonths:Af,diffYears:Cf,year:fe,month:Oe,day:ns,dayOfWeek:rs,weekOfYear:Rf,dayOfYear:Pf,quarter:ss,isLeapYear:is,daysInMonth:Wt,daysInYear:Nf,toTimestamp:ho,toUnix:Df,fromUnix:If,format:os,formatLong:Of,formatShort:Bf,isBefore:Lf,isAfter:Ff,isEqual:Uf,min:qf,max:Wf,isBetween:Jf,startOfMonth:Vf,endOfMonth:zf,startOfQuarter:Gf,endOfQuarter:Zf,startOfYear:Hf,endOfYear:Yf,startOfWeek:Kf,endOfWeek:Xf};export{hm as A99,Eu as Agent,re as AgentError,Ln as AgentVM,dl as DEFAULT_MAX_AST_SIZE,ml as DEFAULT_PROCEDURE_TTL,bu as EFFECTFUL_CORE_OPS,wn as Enum,vu as Eval,$t as FunctionPredicate,Qe as Generic,Qf as LegalDate,gr as LegalDateType,Wn as LocalModels,Zi as MAX_CALL_DEPTH,Nn as MetadataCache,Lr as ModuleLoader,dn as Nullable,gn as Optional,Ur as PROCEDURE_TOKEN_PREFIX,pt as PredicateFuelExhausted,Mu as SafeFunction,Uc as Schema,z as SyntaxError,hn as TArray,an as TBoolean,fn as TEmail,cn as TInteger,ce as TJS_VERSION,un as TNonEmptyString,on as TNumber,bn as TPair,ln as TPositiveInt,xn as TRecord,sn as TString,pn as TUrl,mn as TUuid,lt as Timestamp,dr as TimestampType,W as TranspileError,Q as Type,us as TypeError,He as TypedBuilder,yn as Union,nu as agentRun,Im as ajs,ei as assertFunction,$d as batteries,dd as batteryAtoms,Me as builtins,lu as cache,Nl as callLocal,Ve as checkType,hu as clearExpiredProcedures,mt as compilePredicate,Xs as compilePredicateSchema,$i as compileToWasm,hc as compileWasmBlocks,du as consoleError,pu as consoleLog,mu as consoleWarn,vl as constSet,Ot as coreAtoms,Um as createAgent,me as createChildContext,De as createChildScope,No as createPredicateEvaluator,P as defineAtom,ba as dialectForFilename,Ro as effectfulFromAtoms,qa as emitRuntimeWrapper,nr as emitVerifiedPredicate,Se as error,kl as errorAtom,K as evaluateExpr,Ue as exampleToJSONSchema,ti as expectFunction,xt as extractFunctions,we as extractLiteralValue,wt as extractTDoc,Et as extractTests,Yl as fetch,Il as filter,Bl as find,Gt as formatPredicateDiagnostics,nn as functionMetaToJSONSchema,Bc as generateDTS,Wi as generateDocs,el as generateDocsMarkdown,Vu as getBatteries,Dn as getGlobalCache,ao as getLLMCapability,G as getLocation,Ed as getStandardCapabilities,Xr as getStoreCapabilityDefault,qm as getToolDefinitions,Jr as hash,Pn as hashSource,qc as hashSourceSync,_l as iff,fl as inMemoryFileSystem,se as inferTypeFromValue,$r as installRuntime,ji as instantiateWasm,pl as isAgentError,je as isError,qr as isProcedureToken,Ce as isRuntimeType,mr as isValidLegalDate,pr as isValidTimestamp,fr as isValidUrl,ql as join,iu as jsonParse,ou as jsonStringify,Zl as keys,Fl as len,Gc as lint,tu as llmPredict,ko as lookupVariable,Dl as map,cu as memoize,Gl as merge,zl as omit,he as parse,Ae as parseParameter,zs as parseReturnType,Vl as pick,en as preprocess,ot as procedureStore,Ll as push,uu as random,Ol as reduce,Jl as regexMatch,vi as registerWasmBlock,yu as releaseProcedure,Wr as resolveProcedureToken,v as resolveValue,El as ret,su as runCode,qe as runtime,Pl as scope,pe as seq,Vc as setGlobalCache,Ys as sourceKindForFilename,Ul as split,Kl as storeGet,gu as storeProcedure,Ql as storeQuery,Xl as storeSet,jn as stripModuleSyntax,bi as stripTjsPreamble,Po as suggest,Wl as template,Ea as testUtils,Bm as tjs,Fm as tjsWithCache,Tt as transformFunction,Fn as transpile,ru as transpileCode,Nt as transpileToJS,Lm as transpileWithCache,$l as tryCatch,ke as typeDescriptorToJSONSchema,_e as typeDescriptorToTS,nt as typeOf,cr as typeToString,fu as uuid,Tr as validateArgs,wa as validatePredicateSchema,Go as validateSingleFunction,Ml as varGet,jl as varSet,Rl as varsExport,Al as varsImport,Cl as varsLet,eu as vectorSearch,Le as verifyPredicate,Tl as whileLoop,Er as wrap,au as xmlParse};
410
414
  //# sourceMappingURL=index.js.map