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/CLAUDE.md +7 -1
- package/dist/index.js +111 -107
- package/dist/index.js.map +3 -3
- package/dist/src/lang/emitters/js-wasm.d.ts +2 -0
- package/dist/src/lang/parser-types.d.ts +7 -0
- package/dist/tjs-browser-from-ts.js +1 -1
- package/dist/tjs-browser-from-ts.js.map +1 -1
- package/dist/tjs-browser.js +93 -89
- package/dist/tjs-browser.js.map +3 -3
- package/dist/tjs-eval.js +14 -14
- package/dist/tjs-eval.js.map +2 -2
- package/dist/tjs-from-ts.js +1 -1
- package/dist/tjs-from-ts.js.map +1 -1
- package/dist/tjs-lang.js +94 -90
- package/dist/tjs-lang.js.map +3 -3
- package/dist/tjs-runtime.js +1 -1
- package/dist/tjs-runtime.js.map +1 -1
- package/dist/tjs-vm.js +2 -2
- package/dist/tjs-vm.js.map +2 -2
- package/docs/type-system-north-star.md +100 -0
- package/package.json +1 -1
- package/src/lang/emitters/js-wasm.ts +8 -4
- package/src/lang/emitters/js.ts +36 -11
- package/src/lang/parser-transforms.ts +4 -1
- package/src/lang/parser-types.ts +7 -0
- package/src/lang/parser.ts +9 -1
- package/src/lang/predicate-report.test.ts +24 -0
- package/src/lang/wasm-fallback-warning.test.ts +50 -0
- package/src/lang/wasm-intdiv-lint.test.ts +45 -0
- package/src/lang/wasm-ready.test.ts +94 -0
- package/src/lang/wasm-simd-ops.test.ts +84 -0
- package/src/lang/wasm.ts +61 -2
package/dist/tjs-vm.js
CHANGED
|
@@ -10,7 +10,7 @@ Defaulting to 2020, but this will stop working in the future.`)),t.ecmaVersion=1
|
|
|
10
10
|
`;case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return me(this.readCodePoint());case 116:return" ";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:this.input.charCodeAt(this.pos)===10&&++this.pos;case 10:return this.options.locations&&(this.lineStart=this.pos,++this.curLine),"";case 56:case 57:if(this.strict&&this.invalidStringToken(this.pos-1,"Invalid escape sequence"),e){var n=this.pos-1;this.invalidStringToken(n,"Invalid escape sequence in template string")}default:if(t>=48&&t<=55){var r=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(r,8);return i>255&&(r=r.slice(0,-1),i=parseInt(r,8)),this.pos+=r.length-1,t=this.input.charCodeAt(this.pos),(r!=="0"||t===56||t===57)&&(this.strict||e)&&this.invalidStringToken(this.pos-1-r.length,e?"Octal literal in template string":"Octal literal in strict mode"),String.fromCharCode(i)}return Ie(t)?(this.options.locations&&(this.lineStart=this.pos,++this.curLine),""):String.fromCharCode(t)}};O.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return n===null&&this.invalidStringToken(t,"Bad character escape sequence"),n};O.readWord1=function(){this.containsEsc=!1;for(var e="",t=!0,n=this.pos,r=this.options.ecmaVersion>=6;this.pos<this.input.length;){var i=this.fullCharCodeAtPos();if(Se(i,r))this.pos+=i<=65535?1:2;else if(i===92){this.containsEsc=!0,e+=this.input.slice(n,this.pos);var s=this.pos;this.input.charCodeAt(++this.pos)!==117&&this.invalidStringToken(this.pos,"Expecting Unicode escape sequence \\uXXXX"),++this.pos;var a=this.readCodePoint();(t?ue:Se)(a,r)||this.invalidStringToken(s,"Invalid Unicode escape"),e+=me(a),n=this.pos}else break;t=!1}return e+this.input.slice(n,this.pos)};O.readWord=function(){var e=this.readWord1(),t=u.name;return this.keywords.test(e)&&(t=Pt[e]),this.finishToken(t,e)};var Vs="8.15.0";H.acorn={Parser:H,version:Vs,defaultOptions:At,Position:Le,SourceLocation:tt,getLineInfo:wn,Node:st,TokenType:L,tokTypes:u,keywordTypes:Pt,TokContext:le,tokContexts:W,isIdentifierChar:Se,isIdentifierStart:ue,Token:jt,isNewLine:Ie,lineBreak:X,lineBreakG:cs,nonASCIIwhitespace:xn};function qe(e,t){return H.parse(e,t)}function Qn(e,t,n){return H.parseExpressionAt(e,t,n)}var U=class extends Error{line;column;source;filename;constructor(t,n,r,i){let s=`${i||"<source>"}:${n.line}:${n.column}`;super(`${t} at ${s}`),this.name="TranspileError",this.line=n.line,this.column=n.column,this.source=r,this.filename=i}},G=class extends U{constructor(t,n,r,i){super(t,n,r,i),this.name="SyntaxError"}formatWithContext(t=2){if(!this.source)return this.message;let n=this.source.split(`
|
|
11
11
|
`),r=this.line-1,i=Math.max(0,r-t),s=Math.min(n.length-1,r+t),a=[],o=String(s+1).length;for(let l=i;l<=s;l++){let c=String(l+1).padStart(o),p=l===r?">":" ";if(a.push(`${p} ${c} | ${n[l]}`),l===r){let f=" ".repeat(o+4+this.column);a.push(`${f}^ ${this.message.split(" at ")[0]}`)}}return a.join(`
|
|
12
12
|
`)}};function oe(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 q(e){return e.loc?{line:e.loc.start.line,column:e.loc.start.column}:{line:1,column:0}}function Bt(e,t,n,r,i){n||(n=k),(function s(a,o,l){var c=l||a.type;n[c](a,o,s),t[c]&&t[c](a,o)})(e,r,i)}function Ot(e,t,n){n(e,t)}function Ae(e,t,n){}var k={};k.Program=k.BlockStatement=k.StaticBlock=function(e,t,n){for(var r=0,i=e.body;r<i.length;r+=1){var s=i[r];n(s,t,"Statement")}};k.Statement=Ot;k.EmptyStatement=Ae;k.ExpressionStatement=k.ParenthesizedExpression=k.ChainExpression=function(e,t,n){return n(e.expression,t,"Expression")};k.IfStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Statement"),e.alternate&&n(e.alternate,t,"Statement")};k.LabeledStatement=function(e,t,n){return n(e.body,t,"Statement")};k.BreakStatement=k.ContinueStatement=Ae;k.WithStatement=function(e,t,n){n(e.object,t,"Expression"),n(e.body,t,"Statement")};k.SwitchStatement=function(e,t,n){n(e.discriminant,t,"Expression");for(var r=0,i=e.cases;r<i.length;r+=1){var s=i[r];n(s,t)}};k.SwitchCase=function(e,t,n){e.test&&n(e.test,t,"Expression");for(var r=0,i=e.consequent;r<i.length;r+=1){var s=i[r];n(s,t,"Statement")}};k.ReturnStatement=k.YieldExpression=k.AwaitExpression=function(e,t,n){e.argument&&n(e.argument,t,"Expression")};k.ThrowStatement=k.SpreadElement=function(e,t,n){return n(e.argument,t,"Expression")};k.TryStatement=function(e,t,n){n(e.block,t,"Statement"),e.handler&&n(e.handler,t),e.finalizer&&n(e.finalizer,t,"Statement")};k.CatchClause=function(e,t,n){e.param&&n(e.param,t,"Pattern"),n(e.body,t,"Statement")};k.WhileStatement=k.DoWhileStatement=function(e,t,n){n(e.test,t,"Expression"),n(e.body,t,"Statement")};k.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")};k.ForInStatement=k.ForOfStatement=function(e,t,n){n(e.left,t,"ForInit"),n(e.right,t,"Expression"),n(e.body,t,"Statement")};k.ForInit=function(e,t,n){e.type==="VariableDeclaration"?n(e,t):n(e,t,"Expression")};k.DebuggerStatement=Ae;k.FunctionDeclaration=function(e,t,n){return n(e,t,"Function")};k.VariableDeclaration=function(e,t,n){for(var r=0,i=e.declarations;r<i.length;r+=1){var s=i[r];n(s,t)}};k.VariableDeclarator=function(e,t,n){n(e.id,t,"Pattern"),e.init&&n(e.init,t,"Expression")};k.Function=function(e,t,n){e.id&&n(e.id,t,"Pattern");for(var r=0,i=e.params;r<i.length;r+=1){var s=i[r];n(s,t,"Pattern")}n(e.body,t,e.expression?"Expression":"Statement")};k.Pattern=function(e,t,n){e.type==="Identifier"?n(e,t,"VariablePattern"):e.type==="MemberExpression"?n(e,t,"MemberPattern"):n(e,t)};k.VariablePattern=Ae;k.MemberPattern=Ot;k.RestElement=function(e,t,n){return n(e.argument,t,"Pattern")};k.ArrayPattern=function(e,t,n){for(var r=0,i=e.elements;r<i.length;r+=1){var s=i[r];s&&n(s,t,"Pattern")}};k.ObjectPattern=function(e,t,n){for(var r=0,i=e.properties;r<i.length;r+=1){var s=i[r];s.type==="Property"?(s.computed&&n(s.key,t,"Expression"),n(s.value,t,"Pattern")):s.type==="RestElement"&&n(s.argument,t,"Pattern")}};k.Expression=Ot;k.ThisExpression=k.Super=k.MetaProperty=Ae;k.ArrayExpression=function(e,t,n){for(var r=0,i=e.elements;r<i.length;r+=1){var s=i[r];s&&n(s,t,"Expression")}};k.ObjectExpression=function(e,t,n){for(var r=0,i=e.properties;r<i.length;r+=1){var s=i[r];n(s,t)}};k.FunctionExpression=k.ArrowFunctionExpression=k.FunctionDeclaration;k.SequenceExpression=function(e,t,n){for(var r=0,i=e.expressions;r<i.length;r+=1){var s=i[r];n(s,t,"Expression")}};k.TemplateLiteral=function(e,t,n){for(var r=0,i=e.quasis;r<i.length;r+=1){var s=i[r];n(s,t)}for(var a=0,o=e.expressions;a<o.length;a+=1){var l=o[a];n(l,t,"Expression")}};k.TemplateElement=Ae;k.UnaryExpression=k.UpdateExpression=function(e,t,n){n(e.argument,t,"Expression")};k.BinaryExpression=k.LogicalExpression=function(e,t,n){n(e.left,t,"Expression"),n(e.right,t,"Expression")};k.AssignmentExpression=k.AssignmentPattern=function(e,t,n){n(e.left,t,"Pattern"),n(e.right,t,"Expression")};k.ConditionalExpression=function(e,t,n){n(e.test,t,"Expression"),n(e.consequent,t,"Expression"),n(e.alternate,t,"Expression")};k.NewExpression=k.CallExpression=function(e,t,n){if(n(e.callee,t,"Expression"),e.arguments)for(var r=0,i=e.arguments;r<i.length;r+=1){var s=i[r];n(s,t,"Expression")}};k.MemberExpression=function(e,t,n){n(e.object,t,"Expression"),e.computed&&n(e.property,t,"Expression")};k.ExportNamedDeclaration=k.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")};k.ExportAllDeclaration=function(e,t,n){e.exported&&n(e.exported,t),n(e.source,t,"Expression")};k.ImportDeclaration=function(e,t,n){for(var r=0,i=e.specifiers;r<i.length;r+=1){var s=i[r];n(s,t)}n(e.source,t,"Expression")};k.ImportExpression=function(e,t,n){n(e.source,t,"Expression")};k.ImportSpecifier=k.ImportDefaultSpecifier=k.ImportNamespaceSpecifier=k.Identifier=k.PrivateIdentifier=k.Literal=Ae;k.TaggedTemplateExpression=function(e,t,n){n(e.tag,t,"Expression"),n(e.quasi,t,"Expression")};k.ClassDeclaration=k.ClassExpression=function(e,t,n){return n(e,t,"Class")};k.Class=function(e,t,n){e.id&&n(e.id,t,"Pattern"),e.superClass&&n(e.superClass,t,"Expression"),n(e.body,t)};k.ClassBody=function(e,t,n){for(var r=0,i=e.body;r<i.length;r+=1){var s=i[r];n(s,t)}};k.MethodDefinition=k.PropertyDefinition=k.Property=function(e,t,n){e.computed&&n(e.key,t,"Expression"),e.value&&n(e.value,t,"Expression")};var Us=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURIComponent","decodeURIComponent","String","Number","Boolean","Array","Object","Eq","NotEq","Is","IsNot","TypeOf"]),qs=new Set(["Math","JSON","Object","Array","String","Number"]),Ws=new Set(["Math.random","Date.now"]);function Xn(e,t){let n=e[t],r=0;if(n==="*"||n==="+")r=1;else if(n==="{"){let i=e.slice(t).match(/^\{\d+,\}/);i&&(r=i[0].length)}return r===0?0:(e[t+r]==="?"&&r++,r)}function zs(e){let t=[],n=0,r=!1;for(;n<e.length;){let i=e[n];if(i==="\\"){n+=2;continue}if(r){i==="]"&&(r=!1),n++;continue}if(i==="["){r=!0,n++;continue}if(i==="("){t.push({hadUnbounded:!1}),n++;continue}if(i===")"){let a=t.pop()??{hadUnbounded:!1},o=Xn(e,n+1);if(o>0){if(a.hadUnbounded)return"an unbounded quantifier is nested inside another (e.g. `(a+)+`)";t.length&&(t[t.length-1].hadUnbounded=!0),n+=1+o;continue}a.hadUnbounded&&t.length&&(t[t.length-1].hadUnbounded=!0),n++;continue}let s=Xn(e,n);if(s>0){t.length&&(t[t.length-1].hadUnbounded=!0),n+=s;continue}n++}return null}var Gs=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"]),Hs=["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 Js(e,t={}){let n=t.effectful??new Set(Hs),r;try{r=qe(e,{ecmaVersion:"latest",locations:!0})}catch(a){return{safe:!1,predicates:[],diagnostics:[{predicate:"<source>",message:`parse error: ${a.message}`,line:a.loc?.line??0,column:a.loc?.column??0}]}}let i=new Set(t.knownPredicates??[]);for(let a of r.body)a.type==="FunctionDeclaration"&&a.id&&i.add(a.id.name);let s=[];for(let a of r.body){if(a.type!=="FunctionDeclaration"||!a.id)continue;let o=a.id.name,l=(p,f)=>s.push({predicate:o,message:p,line:f?.loc?.start?.line??0,column:f?.loc?.start?.column??0}),c=p=>l("loops are not allowed \u2014 iterate with recursion or array methods (every/some/map/filter/reduce) so work stays fuel-bounded",p);Bt(a,{AwaitExpression(p){l("`await` not allowed \u2014 predicates must be synchronous",p)},NewExpression(p){l("`new` not allowed in a predicate (non-pure construction)",p)},WhileStatement:c,DoWhileStatement:c,ForStatement:c,ForInStatement:c,ForOfStatement:c,Literal(p){if(p.regex&&typeof p.regex.pattern=="string"){let f=zs(p.regex.pattern);f&&l(`regex /${p.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.`,p)}},CallExpression(p){let f=p.callee;if(f.type==="Identifier"){let h=f.name;n.has(h)?l(`'${h}' is effectful \u2014 not allowed in a predicate`,f):i.has(h)||Us.has(h)||l(`unknown reference '${h}' \u2014 not a predicate or pure builtin`,f);return}if(f.type==="MemberExpression"&&!f.computed){let h=f.property.name,m=f.object;m.type==="Identifier"&&n.has(m.name)?l(`'${m.name}.${h}' is effectful`,f):m.type==="Identifier"&&qs.has(m.name)?Ws.has(`${m.name}.${h}`)&&l(`'${m.name}.${h}' is nondeterministic`,f):Gs.has(h)||l(`method '.${h}()' is not a known pure method`,f.property);return}l("unsupported call form in a predicate",f)}})}return{safe:s.length===0,predicates:[...i],diagnostics:s}}function er(e){return e.map(t=>` ${t.predicate} (${t.line}:${t.column}): ${t.message}`).join(`
|
|
13
|
-
`)}function Ks(e){let t=qe(e,{ecmaVersion:"latest"}),n=[],r=s=>n.push([s.body.start+1,"__fuel();"]);Bt(t,{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression(s){s.body.type==="BlockStatement"?n.push([s.body.start+1,"__fuel();"]):(n.push([s.body.start,"(__fuel(), "]),n.push([s.body.end,")"]))}}),n.sort((s,a)=>a[0]-s[0]);let i=e;for(let[s,a]of n)i=i.slice(0,s)+a+i.slice(s);return i}function tr(e,t,n={}){let r=Js(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 i=n.fuel??1e6;return{safe:!0,code:`(() => {let __f = 0;const __fuel = () => { if (--__f < 0) throw new RangeError('tjs:predicate-fuel'); };${Ks(e)}return (...__a) => {__f = ${i};try { return !!${t}(...__a); }catch (e) {if (e instanceof RangeError && /tjs:predicate-fuel|stack/i.test(e.message)) return false;throw e;}};})()`,diagnostics:[]}}function Zs(e,t){let n=e.match(t);if(!n)return null;let r=n.index+n[0].length-1,i=1,s=r+1;for(;s<e.length&&i>0;)e[s]==="{"?i++:e[s]==="}"&&i--,s++;if(i!==0)return null;let a=e.slice(r,s),o=[n[0].slice(0,-1)+a,a];return o.index=n.index,o}function Dt(e,t,n,r,i,s){let a=`__pred_${e}`,o=`function ${a}(${n}) { ${r} }`,l=tr(o,a,i?{knownPredicates:new Set(i)}:{});return l.safe?(s?.push({name:e,kind:t,verified:!0}),l.code):(s?.push({name:e,kind:t,verified:!1,reason:er(l.diagnostics).replace(/__pred_/g,"")}),null)}function ar(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\btry\s*\{/);if(r){let s=n+r[0].length-1+1,a=1,o=s;for(;o<e.length&&a>0;){let c=e[o];c==="{"?a++:c==="}"&&a--,o++}if(a!==0){t+=e[n],n++;continue}if(e.slice(o).match(/^\s*(catch|finally)\b/))t+=e.slice(n,o),n=o;else{let c=e.slice(s,o-1);t+=`try {${c}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,n=o}}else t+=e[n],n++}return t}function or(e){let t=[],n="",r=0,i=0;for(;r<e.length;){let s=e.slice(r).match(/^\bwasm\s*\{/);if(s){let a=r,o=r+s[0].length,l=1,c=o;for(;c<e.length&&l>0;){let x=e[c];x==="{"?l++:x==="}"&&l--,c++}if(l!==0){n+=e[r],r++;continue}let p=e.slice(o,c-1),f,h=c,m=e.slice(c).match(/^\s*fallback\s*\{/);if(m){let x=c+m[0].length;l=1;let _=x;for(;_<e.length&&l>0;){let $=e[_];$==="{"?l++:$==="}"&&l--,_++}l===0&&(f=e.slice(x,_-1),h=_)}let b=Xs(p).map(x=>{let _=ea(e,a,x);return _?`${x}: ${_}`:x}),v={id:`__tjs_wasm_${i}`,body:p,fallback:f,captures:b,start:a,end:h};t.push(v);let S=f??p,A=b.map(x=>x.split(":")[0].trim()),y=A.length>0?A.join(", "):"",C=A.length>0?`globalThis.${v.id}(${y})`:`globalThis.${v.id}()`,E=`(globalThis.${v.id} ? ${C} : (() => {${S}})())`;n+=E,r=h,i++}else n+=e[r],r++}return{source:n,blocks:t}}function lr(e){let t=[],n="",r=0;for(;r<e.length;){let i=/^\b(export\s+)?wasm\s+function\s+(\w+)\s*\(/,s=e.slice(r).match(i);if(!s){n+=e[r],r++;continue}let a=!!s[1],o=s[2],l=r,c=r+s[0].length,p=1,f=c;for(;f<e.length&&p>0;)e[f]==="("?p++:e[f]===")"&&p--,f++;if(p!==0){n+=e[r],r++;continue}let h=e.slice(c,f-1);if(h.match(/^\s*!/))throw new G(`Unsafe wasm functions (with \`!\` marker) are reserved for a future phase. Remove the bang from \`wasm function ${o}\` to declare it as a regular (pure) wasm function, or wait until the unsafe variant is implemented.`,be(e,l));let g,b=f,v=e.slice(f).match(/^\s*:\s*(\w+)/);v&&(g=v[1],b=f+v[0].length);let S=e.slice(b).match(/^\s*\{/);if(!S){n+=e[r],r++;continue}let A=b+S[0].length,y=1,C=A;for(;C<e.length&&y>0;)e[C]==="{"?y++:e[C]==="}"&&y--,C++;if(y!==0){n+=e[r],r++;continue}let E=e.slice(A,C-1),x=Qs(h),_=`__tjs_wasm_${o}`,$={id:_,name:o,returnType:g,body:E,captures:x,start:l,end:C};t.push($);let T=x.map(V=>V.split(":")[0].trim()),R=`${a?"export ":""}function ${o}(${T.join(", ")}) { return globalThis.${_}(${T.join(", ")}) }`;n+=R,r=C}return{source:n,blocks:t}}function cr(e,t){let{loader:n,importerPath:r}=t;if(!n)return{source:e,blocks:[]};let i=[],s=new Set;function a(c,p){if(!s.has(c.id)){i.push(c),s.add(c.id);for(let[f,h]of p){if(f===c.name||s.has(h.id))continue;new RegExp(`\\b${f}\\s*\\(`).test(c.body)&&a(h,p)}}}let o=/^(\s*)import\s*\{([^}]*?)\}\s*from\s*(['"])([^'"]+)\3\s*;?\s*$/gm;return{source:e.replace(o,(c,p,f,h,m)=>{let g=n.load(m,r);if(!g)return c;let b=new Map;for(let E of g.parseResult.wasmBlocks)E.name&&b.set(E.name,E);if(b.size===0)return c;let v=f.split(",").map(E=>E.trim()).filter(E=>E.length>0),S=[],A=[];for(let E of v){let x=E.match(/^(\w+)(?:\s+as\s+(\w+))?$/);if(!x){A.push(E);continue}let _=x[1],$=x[2]??x[1],T=b.get(_);if(!T){A.push(E);continue}a(T,b);let M=T.captures.map(R=>R.split(":")[0].trim());S.push(`function ${$}(${M.join(", ")}) { return globalThis.${T.id}(${M.join(", ")}) }`)}let y=S.join(`
|
|
13
|
+
`)}function Ks(e){let t=qe(e,{ecmaVersion:"latest"}),n=[],r=s=>n.push([s.body.start+1,"__fuel();"]);Bt(t,{FunctionDeclaration:r,FunctionExpression:r,ArrowFunctionExpression(s){s.body.type==="BlockStatement"?n.push([s.body.start+1,"__fuel();"]):(n.push([s.body.start,"(__fuel(), "]),n.push([s.body.end,")"]))}}),n.sort((s,a)=>a[0]-s[0]);let i=e;for(let[s,a]of n)i=i.slice(0,s)+a+i.slice(s);return i}function tr(e,t,n={}){let r=Js(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 i=n.fuel??1e6;return{safe:!0,code:`(() => {let __f = 0;const __fuel = () => { if (--__f < 0) throw new RangeError('tjs:predicate-fuel'); };${Ks(e)}return (...__a) => {__f = ${i};try { return !!${t}(...__a); }catch (e) {if (e instanceof RangeError && /tjs:predicate-fuel|stack/i.test(e.message)) return false;throw e;}};})()`,diagnostics:[]}}function Zs(e,t){let n=e.match(t);if(!n)return null;let r=n.index+n[0].length-1,i=1,s=r+1;for(;s<e.length&&i>0;)e[s]==="{"?i++:e[s]==="}"&&i--,s++;if(i!==0)return null;let a=e.slice(r,s),o=[n[0].slice(0,-1)+a,a];return o.index=n.index,o}function Dt(e,t,n,r,i,s){let a=`__pred_${e}`,o=`function ${a}(${n}) { ${r} }`,l=tr(o,a,i?{knownPredicates:new Set(i)}:{});return l.safe?(s?.push({name:e,kind:t,verified:!0}),l.code):(s?.push({name:e,kind:t,verified:!1,reason:er(l.diagnostics).replace(/__pred_/g,"")}),null)}function ar(e){let t="",n=0;for(;n<e.length;){let r=e.slice(n).match(/^\btry\s*\{/);if(r){let s=n+r[0].length-1+1,a=1,o=s;for(;o<e.length&&a>0;){let c=e[o];c==="{"?a++:c==="}"&&a--,o++}if(a!==0){t+=e[n],n++;continue}if(e.slice(o).match(/^\s*(catch|finally)\b/))t+=e.slice(n,o),n=o;else{let c=e.slice(s,o-1);t+=`try {${c}} catch (__try_err) { return new (__tjs?.MonadicError ?? Error)(__try_err?.message || String(__try_err), 'try', undefined, undefined, __tjs?.getStack?.()) }`,n=o}}else t+=e[n],n++}return t}function or(e){let t=[],n="",r=0,i=0;for(;r<e.length;){let s=e.slice(r).match(/^\bwasm\s*\{/);if(s){let a=r,o=r+s[0].length,l=1,c=o;for(;c<e.length&&l>0;){let x=e[c];x==="{"?l++:x==="}"&&l--,c++}if(l!==0){n+=e[r],r++;continue}let p=e.slice(o,c-1),f,h=c,m=e.slice(c).match(/^\s*fallback\s*\{/);if(m){let x=c+m[0].length;l=1;let _=x;for(;_<e.length&&l>0;){let $=e[_];$==="{"?l++:$==="}"&&l--,_++}l===0&&(f=e.slice(x,_-1),h=_)}let b=Xs(p).map(x=>{let _=ea(e,a,x);return _?`${x}: ${_}`:x}),v={id:`__tjs_wasm_${i}`,body:p,fallback:f,captures:b,start:a,end:h};t.push(v);let S=f??p,A=b.map(x=>x.split(":")[0].trim()),y=A.length>0?A.join(", "):"",C=A.length>0?`globalThis.${v.id}(${y})`:`globalThis.${v.id}()`,E=`((globalThis.__tjs_wasm_enabled !== false && globalThis.${v.id}) ? ${C} : (() => {${S}})())`;n+=E,r=h,i++}else n+=e[r],r++}return{source:n,blocks:t}}function lr(e){let t=[],n="",r=0;for(;r<e.length;){let i=/^\b(export\s+)?wasm\s+function\s+(\w+)\s*\(/,s=e.slice(r).match(i);if(!s){n+=e[r],r++;continue}let a=!!s[1],o=s[2],l=r,c=r+s[0].length,p=1,f=c;for(;f<e.length&&p>0;)e[f]==="("?p++:e[f]===")"&&p--,f++;if(p!==0){n+=e[r],r++;continue}let h=e.slice(c,f-1);if(h.match(/^\s*!/))throw new G(`Unsafe wasm functions (with \`!\` marker) are reserved for a future phase. Remove the bang from \`wasm function ${o}\` to declare it as a regular (pure) wasm function, or wait until the unsafe variant is implemented.`,be(e,l));let g,b=f,v=e.slice(f).match(/^\s*:\s*(\w+)/);v&&(g=v[1],b=f+v[0].length);let S=e.slice(b).match(/^\s*\{/);if(!S){n+=e[r],r++;continue}let A=b+S[0].length,y=1,C=A;for(;C<e.length&&y>0;)e[C]==="{"?y++:e[C]==="}"&&y--,C++;if(y!==0){n+=e[r],r++;continue}let E=e.slice(A,C-1),x=Qs(h),_=`__tjs_wasm_${o}`,$={id:_,name:o,returnType:g,body:E,captures:x,start:l,end:C};t.push($);let T=x.map(V=>V.split(":")[0].trim()),R=`${a?"export ":""}function ${o}(${T.join(", ")}) { return globalThis.${_}(${T.join(", ")}) }`;n+=R,r=C}return{source:n,blocks:t}}function cr(e,t){let{loader:n,importerPath:r}=t;if(!n)return{source:e,blocks:[]};let i=[],s=new Set;function a(c,p){if(!s.has(c.id)){i.push(c),s.add(c.id);for(let[f,h]of p){if(f===c.name||s.has(h.id))continue;new RegExp(`\\b${f}\\s*\\(`).test(c.body)&&a(h,p)}}}let o=/^(\s*)import\s*\{([^}]*?)\}\s*from\s*(['"])([^'"]+)\3\s*;?\s*$/gm;return{source:e.replace(o,(c,p,f,h,m)=>{let g=n.load(m,r);if(!g)return c;let b=new Map;for(let E of g.parseResult.wasmBlocks)E.name&&b.set(E.name,E);if(b.size===0)return c;let v=f.split(",").map(E=>E.trim()).filter(E=>E.length>0),S=[],A=[];for(let E of v){let x=E.match(/^(\w+)(?:\s+as\s+(\w+))?$/);if(!x){A.push(E);continue}let _=x[1],$=x[2]??x[1],T=b.get(_);if(!T){A.push(E);continue}a(T,b);let M=T.captures.map(R=>R.split(":")[0].trim());S.push(`function ${$}(${M.join(", ")}) { return globalThis.${T.id}(${M.join(", ")}) }`)}let y=S.join(`
|
|
14
14
|
`);if(A.length===0)return y?`${p}${y}`:`${p}`;let C=`${p}import { ${A.join(", ")} } from '${m}'`;return y?`${C}
|
|
15
15
|
${p}${y}`:C}),blocks:i}}function Qs(e){let t=e.trim();return t?t.split(",").map(n=>n.trim()).filter(n=>n.length>0):[]}function Ys(e){return e.startsWith("f32x4_")||e.startsWith("v128_")}function Xs(e){let t=e.replace(/\/\/[^\n]*/g,"").replace(/\/\*[\s\S]*?\*\//g,""),n=new Set,r=/\.([a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,i;for(;(i=r.exec(t))!==null;)n.add(i[1]);let s=/(?<!\.)(\b[a-zA-Z_$][a-zA-Z0-9_$]*)\b/g,a=new Set;for(;(i=s.exec(t))!==null;)a.add(i[1]);for(let h of n){if(!a.has(h))continue;let m=new RegExp(`(?<!\\.)\\b${h}\\b`,"g"),g=new RegExp(`\\.${h}\\b`,"g"),b=t.match(m)?.length||0,v=t.match(g)?.length||0;b<=v&&a.delete(h)}let o=new Set,l=/\b(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(i=l.exec(t))!==null;)o.add(i[1]);let c=/\bfor\s*\(\s*(?:let|const|var)\s+([a-zA-Z_$][a-zA-Z0-9_$]*)/g;for(;(i=c.exec(t))!==null;)o.add(i[1]);let p=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 h of a)!o.has(h)&&!p.has(h)&&!Ys(h)&&f.push(h);return f.sort()}function ea(e,t,n){let r=e.slice(0,t),i=/function\s+\w+\s*\(([^)]*)\)\s*(?:->.*?)?\s*\{[^}]*$/,s=r.match(i);if(!s){let a=/(?:const|let|var)?\s*\w+\s*=\s*(?:async\s*)?\(([^)]*)\)\s*(?:=>|->)?\s*\{[^}]*$/,o=r.match(a);return o?nr(o[1],n):void 0}return nr(s[1],n)}function nr(e,t){let n=e.split(",").map(r=>r.trim());for(let r of n){let i=r.match(new RegExp(`^${t}\\s*:\\s*([A-Za-z][A-Za-z0-9]*)`));if(i)return i[1];let s=r.match(new RegExp(`^${t}\\s*=\\s*(Float32Array|Float64Array|Int32Array|Uint8Array|Int8Array|Int16Array|Uint16Array|Uint32Array)`));if(s)return s[1]}}function ur(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 pr(e){let t=/^[\s]*[([`]/,n=/[{([,;:+\-*/%=&|?<>!~^]\s*$|^\s*$/,r=/\b(return|throw|yield|await|case|default|extends|new|typeof|void|delete|in|of|instanceof)\s*$/,i=e.split(`
|
|
16
16
|
`),s=[],a=!1;for(let o=0;o<i.length;o++){let l=i[o],c=o>0?i[o-1]:"";if(a){s.push(l),l.includes("*/")&&(a=!1);continue}let p=l.indexOf("/*"),f=l.indexOf("*/");if(p!==-1&&(f===-1||f<p)){a=!0,s.push(l);continue}if(o>0&&t.test(l)){let h=c.replace(/\/\/.*$/,"").replace(/\/\*.*\*\/\s*$/,"");if(!n.test(h)&&!r.test(h)){let m=l.match(/^(\s*)/),g=m?m[1]:"",b=l.slice(g.length);s.push(g+";"+b);continue}}s.push(l)}return s.join(`
|
|
@@ -57,7 +57,7 @@ function ${l}$dispatch(t, a) {
|
|
|
57
57
|
`&&(a="normal"),r++;continue;case"block-comment":if(n+=h,h==="*"&&m==="/"){n+=m,r+=2,a="normal";continue}r++;continue;case"regex":if(n+=h,h==="\\"&&r+1<e.length){n+=m,r+=2;continue}if(h==="["){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(h==="/"){for(r++;r<e.length&&/[gimsuy]/.test(e[r]);)n+=e[r],r++;a="normal";continue}r++;continue;case"normal":if(o.length>0){if(h==="{")o[o.length-1]++;else if(h==="}"&&(o[o.length-1]--,o[o.length-1]===0)){o.pop(),n+=h,r++,a="template-string";continue}}if(h==="'"){n+=h,r++,a="single-string";continue}if(h==='"'){n+=h,r++,a="double-string";continue}if(h==="`"){n+=h,r++,a="template-string";continue}if(h==="/"&&m==="/"){n+=h+m,r+=2,a="line-comment";continue}if(h==="/"&&m==="*"){n+=h+m,r+=2,a="block-comment";continue}if(h==="/"){let y=n.trimEnd();if(!y[y.length-1]||/[=(!,;:{[&|?+\-*%<>~^]$/.test(y)||/\b(return|case|throw|in|of|typeof|instanceof|new|delete|void)\s*$/.test(y)){n+=h,r++,a="regex";continue}}break}if(h==="{"){c++,n+=h,r++;continue}if(h==="}"){c--;let y=l[l.length-1];y&&c===y.braceDepth&&l.pop(),n+=h,r++;continue}let g=e.slice(r).match(/^class\s+\w+(?:\s+extends\s+\w+)?\s*\{/);if(g){let y=g[0].slice(0,-1);n+=y,r+=y.length,l.push({type:"class-body",braceDepth:c});continue}let b=e.slice(r).match(/^function\s+(\w+)\s*\(/);if(b){let y=b[1],C=b[0].length,E=e[r+C],x,_=r+C;(E==="?"||E==="!")&&(x=E,_++,x==="!"?t.unsafeFunctions.add(y):t.safeFunctions.add(y)),n+=`function ${y}(`,r=_;let $=lt(e,r,"(",")");if(!$){n+=e[r],r++;continue}let{content:T,endPos:M}=$;r=M;let R=Ft(T,t,!0);n+=R+")";let V=r;for(;V<e.length&&/\s/.test(e[V]);)V++;if(e[V]===":"){let Me=e.slice(V,V+2),je;for(Me===":?"||Me===":!"?(V+=2,je=Me===":?"?"safe":"unsafe"):V+=1;V<e.length&&/\s/.test(e[V]);)V++;let Be=Vt(e,V);Be&&(i===void 0&&(i=Be.type,je&&(s=je)),r=Be.endPos)}let ne=r;for(;ne<e.length&&/\s/.test(e[ne]);)ne++;if(e[ne]==="="&&e[ne+1]===">")throw new G("Unexpected '=>' after function declaration. Function declarations use `function name(params) { body }`, not arrow syntax. Remove the `=>`.",be(t.originalSource,ne),t.originalSource);continue}let v=e.slice(r).match(/^(constructor|(?:get|set)\s+\w+|async\s+\w+|\w+)\s*\(/),S=(()=>{for(let y=n.length-1;y>=0;y--)if(!/\s/.test(n[y]))return n[y];return`
|
|
58
58
|
`})(),A=S!=="="&&S!==","&&S!=="("&&S!=="["&&S!==">";if(v&&f()&&!A){let y=v[1].length;n+=e.slice(r,r+y),r+=y;continue}if(v&&f()&&A){let y=v[1],C=v[0].length,E=r+C;n+=y+"(",r=E;let x=lt(e,r,"(",")");if(!x){n+=e[r],r++;continue}let{content:_,endPos:$}=x;r=$;let T=Ft(_,t,!0);n+=T+")";let M=r;for(;M<e.length&&/\s/.test(e[M]);)M++;if(e[M]===":"){let V=e.slice(M,M+2);for(V===":?"||V===":!"?M+=2:M++;M<e.length&&/\s/.test(e[M]);)M++;let ne=Vt(e,M);ne&&(r=ne.endPos)}let R=r;for(;R<e.length&&/\s/.test(e[R]);)R++;if(e[R]==="="&&e[R+1]===">")throw new G("Unexpected '=>' after method declaration. Methods use `name(params) { body }`, not arrow syntax. Remove the `=>`.",be(t.originalSource,R),t.originalSource);continue}if(e[r]==="("){let y=lt(e,r+1,"(",")");if(!y){n+=e[r],r++;continue}let C=y.content,E=y.endPos,x=E;for(;x<e.length&&/\s/.test(e[x]);)x++;let _;if(e[x]===":"){let $=e.slice(x,x+2);for($===":?"||$===":!"?x+=2:x++;x<e.length&&/\s/.test(e[x]);)x++;let T=Vt(e,x);if(T)for(_=T.type,x=T.endPos;x<e.length&&/\s/.test(e[x]);)x++}if(e.slice(x,x+2)==="=>"){let $=null,T=C,M=C.trimStart();M.startsWith("?")&&(M.length===1||/\s/.test(M[1]))?($="?",T=M.slice(1)):M.startsWith("!")&&(M.length===1||/\s/.test(M[1]))&&($="!",T=M.slice(1));let R=Ft(T,t,!1);for(n+=`(${$==="?"?"/* safe */ ":$==="!"?"/* unsafe */ ":""}${R})`,r=E;r<x&&/\s/.test(e[r]);)n+=e[r],r++;_&&(r=x)}else{let $=pt(C,t);n+=`(${$.source})`,r=E}continue}n+=e[r],r++}return{source:n,returnType:i,returnSafety:s}}function lt(e,t,n,r){let i=1,s=t,a=!1,o="";for(;s<e.length&&i>0;){let l=e[s];!a&&(l==="'"||l==='"'||l==="`")?(a=!0,o=l):a&&l===o&&e[s-1]!=="\\"?a=!1:a||(l===n?i++:l===r&&i--),s++}return i!==0?null:{content:e.slice(t,s-1),endPos:s}}function Rr(e,t){let n=t;for(;n<e.length&&/\s/.test(e[n]);)n++;if(n>=e.length)return null;let r=n,i=e[n];if(i==="{"||i==="["){let a=i==="{"?"}":"]",o=lt(e,n+1,i,a);return o?{value:e.slice(r,o.endPos),endPos:o.endPos}:null}if(i==="'"||i==='"'||i==="`"){for(n++;n<e.length;){if(e[n]===i&&e[n-1]!=="\\")return n++,{value:e.slice(r,n),endPos:n};n++}return null}if(/[-+\d]/.test(i)){for(;n<e.length&&/[\d.eE+-]/.test(e[n]);)n++;return{value:e.slice(r,n),endPos:n}}let s=e.slice(n).match(/^(true|false|null|undefined)\b/);return s?{value:s[1],endPos:n+s[1].length}:null}function ze(e){return e.replace(/(?<!\|)\|(?!\|)/g," || ")}function Vt(e,t){let n=t,r=0,i=!1,s="",a=!1,o=l=>({type:ze(e.slice(t,l).trim()),endPos:l});for(;n<e.length;){let l=e[n];if(!i&&(l==="'"||l==='"'||l==="`")){i=!0,s=l,a=!0,n++;continue}if(i){if(l===s&&e[n-1]!=="\\"){if(i=!1,n++,r===0){let c=n;for(;c<e.length&&/\s/.test(e[c]);)c++;if(e[c]==="{"&&!e.slice(c+1).match(/^\s*(\w+)\s*:/)||e[c]!=="|"&&e[c]!=="&")return o(n)}continue}n++;continue}if(l==="{"||l==="["||l==="("){r++,a=!0,n++;continue}if(l==="}"||l==="]"||l===")"){if(r--,r===0){n++;let c=n;for(;c<e.length&&/\s/.test(e[c]);)c++;if(e[c]==="|"||e[c]==="&")continue;return o(n)}n++;continue}if(r===0&&l==="{"){if(a)return o(n);if(e.slice(n+1).match(/^\s*(\w+)\s*:/)){r++,a=!0,n++;continue}return o(n)}if(r===0&&(l==="|"||l==="&")){for(n++,n<e.length&&e[n]==="|"&&n++;n<e.length&&/\s/.test(e[n]);)n++;continue}if(r===0&&(/\d/.test(l)||l==="-"&&/\d/.test(e[n+1]))){let c=n;for(e[c]==="-"&&c++;c<e.length&&/\d/.test(e[c]);)c++;if(c<e.length&&e[c]==="."&&/\d/.test(e[c+1]))for(c++;c<e.length&&/\d/.test(e[c]);)c++;if(c<e.length&&(e[c]==="e"||e[c]==="E"))for(c++,c<e.length&&(e[c]==="+"||e[c]==="-")&&c++;c<e.length&&/\d/.test(e[c]);)c++;for(a=!0,n=c;n<e.length&&/\s/.test(e[n]);)n++;if(n<e.length&&e[n]==="{")return{type:ze(e.slice(t,c).trim()),endPos:c};if(e[n]!=="|"&&e[n]!=="&")return{type:ze(e.slice(t,c).trim()),endPos:c};continue}if(r===0&&/[a-zA-Z_]/.test(l)){let c=n;for(;c<e.length&&/\w/.test(e[c]);)c++;for(a=!0,n=c;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=c;for(;f>t&&/\s/.test(e[f-1]);)f--;return{type:ze(e.slice(t,f).trim()),endPos:c}}if(e[n]!=="|"&&e[n]!=="&")return{type:ze(e.slice(t,c).trim()),endPos:c};continue}n++}return a?o(n):null}function ft(e){let t=[],n="",r=0,i=!1,s=!1,a=0;for(;a<e.length;){let o=e[a],l=e[a+1];if(!s&&o==="/"&&l==="/"){i=!0,n+="//",a+=2;continue}if(!i&&o==="/"&&l==="*"){s=!0,n+="/*",a+=2;continue}if(i&&o===`
|
|
59
59
|
`){i=!1,n+=o,a++;continue}if(s&&o==="*"&&l==="/"){s=!1,n+="*/",a+=2;continue}if(i||s){n+=o,a++;continue}o==="("||o==="{"||o==="["?(r++,n+=o):o===")"||o==="}"||o==="]"?(r--,n+=o):o===","&&r===0?(t.push(n),n=""):n+=o,a++}return n.trim()&&t.push(n),t}function Ft(e,t,n){let r=pt(e,{originalSource:e,requiredParams:t.requiredParams,unsafeFunctions:t.unsafeFunctions,safeFunctions:t.safeFunctions}).source,i=ft(r),s=!1,a=new Set,o=c=>{if(n&&/^\w+$/.test(c)){if(a.has(c))throw new Error(`Duplicate parameter name '${c}'`);a.add(c)}};return i.map(c=>{let p=c.trim();if(!p)return c;if(n&&p.startsWith("{")&&p.endsWith("}")){let m=p.slice(1,-1);return`{ ${$r(m,t)} }`}if(n&&p.startsWith("[")&&p.endsWith("]")){let m=p.slice(1,-1);return`[ ${$r(m,t)} ]`}if(p.startsWith("...")){let m=Mr(p);return m!==-1?p.slice(0,m).trim():c}let f=p.match(/^(\w+)\s*\?\s*:\s*(.+)$/);if(f){let[,m,g]=f;return o(m),s=!0,`${m} = ${g}`}if(!oa(p)){let m=p.match(/^(\w+)\s*=/);return m&&o(m[1]),s=!0,c}let h=Mr(p);if(h!==-1){let m=p.slice(0,h).trim(),g=p.slice(h+1).trim();return o(m),s&&n&&/^\w+$/.test(m),n&&/^\w+$/.test(m)&&t.requiredParams.add(m),`${m} = ${g}`}return c}).join(",")}function $r(e,t){return ft(e).map(i=>{let s=i.trim();if(!s)return i;let a=s.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(a){let[,c,p]=a;t.requiredParams.add(c);let f=ct(p);return`${c} = ${f}`}let o=s.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(o){let[,c,p]=o;t.requiredParams.add(c);let f=ut(p);return`${c} = ${f}`}let l=s.match(/^(\w+)\s*:\s*([\s\S]+)$/);if(l){let[,c,p]=l;return t.requiredParams.add(c),`${c} = ${p}`}return i}).join(", ")}function ct(e){let t=e.slice(1,-1).trim();return`{ ${ft(t).map(i=>{let s=i.trim();if(!s)return i;let a=s.match(/^(\w+)\s*:\s*(\{[\s\S]*\})$/);if(a){let[,f,h]=a;return`${f}: ${ct(h)}`}let o=s.match(/^(\w+)\s*=\s*(\{[\s\S]*\})$/);if(o){let[,f,h]=o;return`${f}: ${ct(h)}`}let l=s.match(/^(\w+)\s*:\s*(\[[\s\S]*\])$/);if(l){let[,f,h]=l;return`${f}: ${ut(h)}`}let c=s.match(/^(\w+)\s*=\s*(\[[\s\S]*\])$/);if(c){let[,f,h]=c;return`${f}: ${ut(h)}`}let p=s.match(/^(\w+)\s*=\s*([\s\S]+)$/);if(p){let[,f,h]=p;return`${f}: ${h}`}return i}).join(", ")} }`}function ut(e){let t=e.slice(1,-1).trim();return`[ ${ft(t).map(i=>{let s=i.trim();return s?s.startsWith("{")&&s.endsWith("}")?ct(s):s.startsWith("[")&&s.endsWith("]")?ut(s):i:i}).join(", ")} ]`}function oa(e){let t=0,n=!1,r=!1,i=!1,s="";for(let a=0;a<e.length;a++){let o=e[a];if(!i&&(o==="'"||o==='"'||o==="`")){i=!0,s=o;continue}if(i){o===s&&e[a-1]!=="\\"&&(i=!1);continue}o==="("||o==="{"||o==="["?t++:o===")"||o==="}"||o==="]"?t--:t===0&&(o===":"&&(n=!0),o==="="&&e[a+1]!==">"&&(r=!0))}return n&&!r}function Mr(e){let t=0,n=!1,r="";for(let i=0;i<e.length;i++){let s=e[i];if(!n&&(s==="'"||s==='"'||s==="`")){n=!0,r=s;continue}if(n){s===r&&e[i-1]!=="\\"&&(n=!1);continue}if(s==="("||s==="{"||s==="[")t++;else if(s===")"||s==="}"||s==="]")t--;else if(t===0&&s===":")return i}return-1}function la(e){let t="",n=0;for(;n<e.length;){let r=e[n];if(r==="'"||r==='"'||r==="`"){let i=r;for(t+=r,n++;n<e.length&&e[n]!==i;)e[n]==="\\"&&(t+=e[n++]),n<e.length&&(t+=e[n++]);n<e.length&&(t+=e[n++]);continue}if(r==="/"&&e[n+1]==="*"){let i=e.indexOf("*/",n+2),s=i===-1?e.slice(n):e.slice(n,i+2);t+=s,n+=s.length;continue}if(r==="/"&&e[n+1]==="/"){let i=e.indexOf(`
|
|
60
|
-
`,n),s=i===-1?e.length:i;t+=" ".repeat(s-n),n=s;continue}t+=r,n++}return t}function ca(e,t={}){let n=e,r,i=new Set,s=new Set,a=new Set,o=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e),l=t.dialect==="js"?!0:t.dialect==="tjs"?!1:o||t.vmTarget,c=l?{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};l&&(r="none");let p=e.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);p&&(r=p[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/,h;for(;h=e.match(f);){let R=h[2];R==="TjsStrict"?(c.tjsEquals=!0,c.tjsClass=!0,c.tjsDate=!0,c.tjsNoeval=!0,c.tjsNoVar=!0,c.tjsStandard=!0,c.tjsSafeAssign=!0):R==="TjsCompat"?(c.tjsEquals=!1,c.tjsClass=!1,c.tjsDate=!1,c.tjsNoeval=!1,c.tjsNoVar=!1,c.tjsStandard=!1,c.tjsSafeEval=!1,c.tjsSafeAssign=!1):R==="TjsEquals"?c.tjsEquals=!0:R==="TjsClass"?c.tjsClass=!0:R==="TjsDate"?c.tjsDate=!0:R==="TjsNoeval"?c.tjsNoeval=!0:R==="TjsNoVar"?c.tjsNoVar=!0:R==="TjsStandard"?c.tjsStandard=!0:R==="TjsSafeEval"?c.tjsSafeEval=!0:R==="TjsSafeAssign"&&(c.tjsSafeAssign=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${R}\\s*`),"$1")}e=la(e),c.tjsStandard&&(e=pr(e)),e=_r(e),e=Ir(e);let m=Nr(e);e=m.source;let g=m.annotations,b=lr(e);e=b.source,e=ur(e),c.tjsEquals&&!t.vmTarget&&(e=fr(e));let v=[];e=hr(e,v),e=mr(e,v),e=dr(e),e=gr(e),e=yr(e),c.tjsSafeAssign&&(e=Sr(e));let S=cr(e,{loader:t.moduleLoader,importerPath:t.filename});e=S.source;let{source:A,returnType:y,returnSafety:C}=pt(e,{originalSource:n,requiredParams:i,unsafeFunctions:s,safeFunctions:a});e=A;let E=br(e);e=E.source,e=ar(e);let x=wr(e,i);e=x.source;let _=or(e);e=_.source;let $=[...b.blocks,...S.blocks,..._.blocks],T=Er(e,t.dangerouslySkipTests);e=T.source;let M=kr(e,i);e=M.source;for(let R of M.polyCtorClasses)s.add(`${R}$dispatch`);return c.tjsClass&&(e=Cr(e,M.polyCtorClasses)),c.tjsDate&&(e=Ar(e)),c.tjsNoeval&&(e=Pr(e)),c.tjsNoVar&&(e=Tr(e)),e=xr(e,E.extensions),{source:e,returnType:y,returnSafety:C,moduleSafety:r,tjsModes:c,originalSource:n,requiredParams:i,unsafeFunctions:s,safeFunctions:a,wasmBlocks:$,tests:T.tests,testErrors:T.errors,polymorphicNames:x.polymorphicNames,extensions:E.extensions,letAnnotations:g,predicates:v}}function jr(e,t={}){let{filename:n="<source>",colonShorthand:r=!0,vmTarget:i=!1,dialect:s}=t,{source:a,returnType:o,returnSafety:l,moduleSafety:c,originalSource:p,requiredParams:f,unsafeFunctions:h,safeFunctions:m,wasmBlocks:g,tests:b,testErrors:v,letAnnotations:S,tjsModes:A}=r?ca(e,{vmTarget:i,dialect:s,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}};try{return{ast:qe(a,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:o,returnSafety:l,moduleSafety:c,originalSource:p,requiredParams:f,unsafeFunctions:h,safeFunctions:m,wasmBlocks:g,tests:b,testErrors:v,letAnnotations:S,tjsModes:A}}catch(y){let C=y.loc||{line:1,column:0};throw new G(y.message.replace(/\s*\(\d+:\d+\)$/,""),C,p,n)}}function Br(e,t){for(let s of e.body){if(s.type==="ImportDeclaration")throw new G("Imports are not supported. All atoms must be registered with the VM.",s.loc?.start||{line:1,column:0},void 0,t);if(s.type==="ExportNamedDeclaration"||s.type==="ExportDefaultDeclaration")throw new G("Exports are not supported. The function is automatically exported.",s.loc?.start||{line:1,column:0},void 0,t);if(s.type==="ClassDeclaration")throw new G("Classes are not supported. Agent99 uses functional composition.",s.loc?.start||{line:1,column:0},void 0,t)}let n=e.body.filter(s=>s.type==="FunctionDeclaration");if(n.length===0)throw new G("Source must contain a function declaration",{line:1,column:0},void 0,t);let r=n[n.length-1],i=new Map;for(let s=0;s<n.length-1;s++){let a=n[s],o=a.id?.name;if(!o)throw new G("Helper function must have a name",a.loc?.start||{line:1,column:0},void 0,t);if(i.has(o))throw new G(`Duplicate helper function name: ${o}`,a.loc?.start||{line:1,column:0},void 0,t);if(o===r.id?.name)throw new G(`Helper function cannot share a name with the entry function: ${o}`,a.loc?.start||{line:1,column:0},void 0,t);i.set(o,a)}return{entry:r,helpers:i}}function Or(e,t){let n={params:{}};if(!t.loc)return n;let r=e.substring(0,t.start),i=[...r.matchAll(/(?<=^[ \t]*)\/\*#([\s\S]*?)\*\//gm)];if(i.length>0){let p=i[i.length-1],f=r.substring(p.index+p[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(f)){let h=p[1],m=h.split(`
|
|
60
|
+
`,n),s=i===-1?e.length:i;t+=" ".repeat(s-n),n=s;continue}t+=r,n++}return t}function ca(e,t={}){let n=e,r,i=new Set,s=new Set,a=new Set,o=/\/\*\s*tjs\s*<-\s*\S+\s*\*\//.test(e),l=t.dialect==="js"?!0:t.dialect==="tjs"?!1:o||t.vmTarget,c=l?{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};l&&(r="none");let p=e.match(/^(\s*(?:\/\/[^\n]*\n|\/\*[\s\S]*?\*\/\s*)*)\s*safety\s+(none|inputs|all)\b/);p&&(r=p[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/,h;for(;h=e.match(f);){let R=h[2];R==="TjsStrict"?(c.tjsEquals=!0,c.tjsClass=!0,c.tjsDate=!0,c.tjsNoeval=!0,c.tjsNoVar=!0,c.tjsStandard=!0,c.tjsSafeAssign=!0,c.tjsStrict=!0):R==="TjsCompat"?(c.tjsEquals=!1,c.tjsClass=!1,c.tjsDate=!1,c.tjsNoeval=!1,c.tjsNoVar=!1,c.tjsStandard=!1,c.tjsSafeEval=!1,c.tjsSafeAssign=!1):R==="TjsEquals"?c.tjsEquals=!0:R==="TjsClass"?c.tjsClass=!0:R==="TjsDate"?c.tjsDate=!0:R==="TjsNoeval"?c.tjsNoeval=!0:R==="TjsNoVar"?c.tjsNoVar=!0:R==="TjsStandard"?c.tjsStandard=!0:R==="TjsSafeEval"?c.tjsSafeEval=!0:R==="TjsSafeAssign"&&(c.tjsSafeAssign=!0),e=e.replace(new RegExp(`^(\\s*(?:\\/\\/[^\\n]*\\n|\\/\\*[\\s\\S]*?\\*\\/\\s*)*)\\s*${R}\\s*`),"$1")}e=la(e),c.tjsStandard&&(e=pr(e)),e=_r(e),e=Ir(e);let m=Nr(e);e=m.source;let g=m.annotations,b=lr(e);e=b.source,e=ur(e),c.tjsEquals&&!t.vmTarget&&(e=fr(e));let v=[];e=hr(e,v),e=mr(e,v),e=dr(e),e=gr(e),e=yr(e),c.tjsSafeAssign&&(e=Sr(e));let S=cr(e,{loader:t.moduleLoader,importerPath:t.filename});e=S.source;let{source:A,returnType:y,returnSafety:C}=pt(e,{originalSource:n,requiredParams:i,unsafeFunctions:s,safeFunctions:a});e=A;let E=br(e);e=E.source,e=ar(e);let x=wr(e,i);e=x.source;let _=or(e);e=_.source;let $=[...b.blocks,...S.blocks,..._.blocks],T=Er(e,t.dangerouslySkipTests);e=T.source;let M=kr(e,i);e=M.source;for(let R of M.polyCtorClasses)s.add(`${R}$dispatch`);return c.tjsClass&&(e=Cr(e,M.polyCtorClasses)),c.tjsDate&&(e=Ar(e)),c.tjsNoeval&&(e=Pr(e)),c.tjsNoVar&&(e=Tr(e)),e=xr(e,E.extensions),{source:e,returnType:y,returnSafety:C,moduleSafety:r,tjsModes:c,originalSource:n,requiredParams:i,unsafeFunctions:s,safeFunctions:a,wasmBlocks:$,tests:T.tests,testErrors:T.errors,polymorphicNames:x.polymorphicNames,extensions:E.extensions,letAnnotations:g,predicates:v}}function jr(e,t={}){let{filename:n="<source>",colonShorthand:r=!0,vmTarget:i=!1,dialect:s}=t,{source:a,returnType:o,returnSafety:l,moduleSafety:c,originalSource:p,requiredParams:f,unsafeFunctions:h,safeFunctions:m,wasmBlocks:g,tests:b,testErrors:v,letAnnotations:S,tjsModes:A}=r?ca(e,{vmTarget:i,dialect:s,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:qe(a,{ecmaVersion:2022,sourceType:"module",locations:!0,allowReturnOutsideFunction:!1}),returnType:o,returnSafety:l,moduleSafety:c,originalSource:p,requiredParams:f,unsafeFunctions:h,safeFunctions:m,wasmBlocks:g,tests:b,testErrors:v,letAnnotations:S,tjsModes:A}}catch(y){let C=y.loc||{line:1,column:0};throw new G(y.message.replace(/\s*\(\d+:\d+\)$/,""),C,p,n)}}function Br(e,t){for(let s of e.body){if(s.type==="ImportDeclaration")throw new G("Imports are not supported. All atoms must be registered with the VM.",s.loc?.start||{line:1,column:0},void 0,t);if(s.type==="ExportNamedDeclaration"||s.type==="ExportDefaultDeclaration")throw new G("Exports are not supported. The function is automatically exported.",s.loc?.start||{line:1,column:0},void 0,t);if(s.type==="ClassDeclaration")throw new G("Classes are not supported. Agent99 uses functional composition.",s.loc?.start||{line:1,column:0},void 0,t)}let n=e.body.filter(s=>s.type==="FunctionDeclaration");if(n.length===0)throw new G("Source must contain a function declaration",{line:1,column:0},void 0,t);let r=n[n.length-1],i=new Map;for(let s=0;s<n.length-1;s++){let a=n[s],o=a.id?.name;if(!o)throw new G("Helper function must have a name",a.loc?.start||{line:1,column:0},void 0,t);if(i.has(o))throw new G(`Duplicate helper function name: ${o}`,a.loc?.start||{line:1,column:0},void 0,t);if(o===r.id?.name)throw new G(`Helper function cannot share a name with the entry function: ${o}`,a.loc?.start||{line:1,column:0},void 0,t);i.set(o,a)}return{entry:r,helpers:i}}function Or(e,t){let n={params:{}};if(!t.loc)return n;let r=e.substring(0,t.start),i=[...r.matchAll(/(?<=^[ \t]*)\/\*#([\s\S]*?)\*\//gm)];if(i.length>0){let p=i[i.length-1],f=r.substring(p.index+p[0].length);if(/^(?:\s|\/\/[^\n]*)*$/.test(f)){let h=p[1],m=h.split(`
|
|
61
61
|
`),g=m.filter(b=>b.trim().length>0).reduce((b,v)=>{let S=v.match(/^(\s*)/)?.[1].length||0;return Math.min(b,S)},1/0);return g>0&&g<1/0&&(h=m.map(b=>b.slice(g)).join(`
|
|
62
62
|
`)),n.description=h.trim(),n}}let s=r.match(/\/\*\*[\s\S]*?\*\/\s*$/);if(!s)return n;let a=s[0],o=a.match(/\/\*\*\s*\n?\s*\*?\s*([^@\n][^\n]*)/m);o&&(n.description=o[1].trim());let l=/@param\s+(?:\{[^}]+\}\s+)?(\w+)\s*-?\s*(.*)/g,c;for(;(c=l.exec(a))!==null;)n.params[c[1]]=c[2].trim();return n}function te(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(a=>a!=null).map(a=>te(a));if(n.length===0)return{kind:"array",items:{kind:"any"}};let r=new Map;for(let a of n){let o=JSON.stringify(a);r.has(o)||r.set(o,a)}let i=[...r.values()];return{kind:"array",items:i.length===1?i[0]:{kind:"union",members:i}}}case"ObjectExpression":{let t=e.properties,n={};for(let r of t)if(r.type==="Property"&&r.key.type==="Identifier"){let i=r.key.name;n[i]=te(r.value)}return{kind:"object",shape:n}}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="||"?te(n):t==="&&"||t==="??"?te(r):{kind:"any"}}case"BinaryExpression":{let{operator:t,left:n,right:r}=e;if(t==="|"){let i=te(n),s=te(r);return s.kind==="null"?{...i,nullable:!0}:i.kind==="null"?{...s,nullable:!0}:{kind:"union",members:[i,s]}}return{kind:"any"}}case"Identifier":return e.name==="undefined"?{kind:"undefined"}:{kind:"any"};case"ArrowFunctionExpression":case"FunctionExpression":{let t=e,n=t.params.map(i=>ua(i)),r={kind:"any"};return t.type==="ArrowFunctionExpression"&&t.body&&t.body.type!=="BlockStatement"&&(r=te(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 i=n.raw;return i&&i.includes(".")?{kind:"number"}:{kind:"integer"}}return{kind:"any"}}default:return{kind:"any"}}}function ua(e){return e.type==="Identifier"?{name:e.name,type:{kind:"any"}}:e.type==="AssignmentPattern"&&e.left?.type==="Identifier"?{name:e.left.name,type:te(e.right)}:e.type==="RestElement"&&e.argument?.type==="Identifier"?{name:`...${e.argument.name}`,type:{kind:"array",items:{kind:"any"}}}:{name:"?",type:{kind:"any"}}}function Ut(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 U("Only simple parameter names are supported",q(e));let i=n.name,s=t?.has(i)??!1,a=te(r),o=he(r);return{name:i,type:a,required:s,default:s?null:o,example:o,loc:{start:e.start,end:e.end}}}if(e.type==="ObjectPattern"){let n=e.properties,r={},i={};for(let s of n)if(s.type==="Property"){let a=s.key.type==="Identifier"?s.key.name:String(s.key.value);if(s.value.type==="Identifier")r[a]={kind:"any"},i[a]={name:a,type:{kind:"any"},required:!0};else if(s.value.type==="AssignmentPattern"){let o=Ut(s.value,t),l=t?.has(a)??!1;r[a]=o.type,i[a]={name:a,type:o.type,required:l,default:l?null:o.example,example:o.example}}}return{name:"__destructured__",type:{kind:"object",shape:r,destructuredParams:i},required:!0}}throw new U(`Unsupported parameter pattern: ${e.type}`,q(e))}function he(e){switch(e.type){case"Literal":return e.value;case"ArrayExpression":return e.elements.map(t=>t?he(t):null);case"ObjectExpression":{let t={};for(let n of e.properties)n.type==="Property"&&n.key.type==="Identifier"&&(t[n.key.name]=he(n.value));return t}case"UnaryExpression":if(e.operator==="-"){let t=he(e.argument);return typeof t=="number"?-t:void 0}if(e.operator==="+"){let t=he(e.argument);return typeof t=="number"?+t:void 0}return;case"BinaryExpression":{let{operator:t,left:n}=e;return t==="|"?he(n):void 0}case"LogicalExpression":{let{operator:t,left:n,right:r}=e;return t==="&&"&&n.type==="Literal"&&n.value===null?null:t==="||"||t==="??"?he(n)??he(r):void 0}default:return}}function Dr(e){try{let t=Qn(e,0,{ecmaVersion:2022});return te(t)}catch{return{kind:"any"}}}function ht(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?ht(e.items):{}};case"object":if(e.shape){let t={};for(let[n,r]of Object.entries(e.shape))t[n]=ht(r);return{type:"object",properties:t,additionalProperties:!1}}return{type:"object"};case"union":return e.members?{oneOf:e.members.map(ht)}:{};default:return{}}}function pa(e){let t={},n=[];for(let[r,i]of Object.entries(e))t[r]=ht(i.type),i.required&&n.push(r);return{type:"object",properties:t,required:n.length>0?n:void 0,additionalProperties:!1}}function Vr(e,t,n,r={},i,s){let a=Or(t,e),o=new Map;for(let A of e.params){let y=Ut(A,i);if(y.name==="__destructured__"&&y.type.kind==="object"&&y.type.destructuredParams)for(let[C,E]of Object.entries(y.type.destructuredParams))o.set(C,{...E,description:a.params[C]});else y.description=a.params[y.name],o.set(y.name,y)}let l;n&&(l=Dr(n));let c={depth:0,locals:new Map,parameters:o,atoms:new Set(Object.keys(r.atoms||{})),warnings:[],source:t,filename:r.filename||"<source>",options:r,helpers:s,helperSteps:s?new Map:void 0,helperTransforming:s?new Set:void 0},p=ce(e.body,c),f=[],h=[],m=[];for(let[A,y]of o.entries())y.required?h.push(A):y.default!==void 0?m.push({name:A,defaultValue:y.default}):h.push(A);h.length>0&&f.push({op:"varsImport",keys:h});for(let{name:A,defaultValue:y}of m)f.push({op:"varsImport",keys:[A]}),f.push({op:"if",condition:{$expr:"binary",op:"==",left:{$expr:"ident",name:A},right:{$expr:"literal",value:null}},then:[{op:"varSet",key:A,value:y}]});f.push(...p);let g=Object.fromEntries(o),b={name:e.id?.name||"anonymous",description:a.description,parameters:g,returns:l},v=pa(g),S=c.helperSteps&&c.helperSteps.size>0?Object.fromEntries(c.helperSteps):void 0;return{ast:{op:"seq",steps:f,inputSchema:v,...S&&{helpers:S}},signature:b,warnings:c.warnings}}function ce(e,t){let n=[];for(let r of e.body){let i=Ge(r,t);i&&(Array.isArray(i)?n.push(...i):n.push(i))}return n}function Ge(e,t){switch(e.type){case"VariableDeclaration":return fa(e,t);case"ExpressionStatement":return ha(e,t);case"IfStatement":return ma(e,t);case"WhileStatement":return ga(e,t);case"ForOfStatement":return ya(e,t);case"TryStatement":return ba(e,t);case"ReturnStatement":return xa(e,t);case"ThrowStatement":throw new U("'throw' is not supported in AsyncJS. Use Error('message') to trigger error flow",q(e),t.source,t.filename);case"BlockStatement":return{op:"scope",steps:ce(e,oe(t))};case"EmptyStatement":return null;default:throw new U(`Unsupported statement type: ${e.type}`,q(e),t.source,t.filename)}}function fa(e,t){let n=[],r=e.kind==="const",i=r?"constSet":"varSet";for(let s of e.declarations){if(s.id.type!=="Identifier")throw new U("Only simple variable names are supported",q(s),t.source,t.filename);let a=s.id.name;if(s.init){let{step:o,resultVar:l}=_e(s.init,t,a,r);o?n.push(o):l!==a&&n.push({op:i,key:a,value:l});let c=te(s.init);t.locals.set(a,c)}else{if(r)throw new U("const declarations must be initialized",q(s),t.source,t.filename);n.push({op:"varSet",key:a,value:null}),t.locals.set(a,{kind:"any",nullable:!0})}}return n}function ha(e,t){let n=e.expression;if(n.type==="AssignmentExpression")return da(n,t);if(n.type==="CallExpression"){let{step:r,resultVar:i}=_e(n,t);return r||(i?{op:"varSet",key:"_",value:i}:null)}return t.warnings.push({message:"Expression statement has no effect",line:q(e).line,column:q(e).column}),null}function da(e,t){if(e.left.type!=="Identifier")throw new U("Only simple variable assignment is supported",q(e),t.source,t.filename);let n=e.left.name,{step:r,resultVar:i}=_e(e.right,t,n);return r||{op:"varSet",key:n,value:i}}function ma(e,t){let n=F(e.test,t),r=e.consequent.type==="BlockStatement"?ce(e.consequent,oe(t)):[Ge(e.consequent,t)].filter(Boolean),i;return e.alternate&&(i=e.alternate.type==="BlockStatement"?ce(e.alternate,oe(t)):[Ge(e.alternate,t)].filter(Boolean)),{op:"if",condition:n,then:r,...i&&{else:i}}}function ga(e,t){let n=F(e.test,t),r=e.body.type==="BlockStatement"?ce(e.body,oe(t)):[Ge(e.body,t)].filter(Boolean);return{op:"while",condition:n,body:r}}function ya(e,t){let n;if(e.left.type==="VariableDeclaration"){let a=e.left.declarations[0];if(a.id.type!=="Identifier")throw new U("Only simple variable names are supported in for...of",q(e.left),t.source,t.filename);n=a.id.name}else if(e.left.type==="Identifier")n=e.left.name;else throw new U("Unsupported for...of left-hand side",q(e.left),t.source,t.filename);let r=K(e.right,t),i=oe(t);i.locals.set(n,{kind:"any"});let s=e.body.type==="BlockStatement"?ce(e.body,i):[Ge(e.body,i)].filter(Boolean);return{op:"map",items:r,as:n,steps:s}}function ba(e,t){let n=ce(e.block,oe(t)),r,i;if(e.handler){let s=oe(t);e.handler.param?.type==="Identifier"&&(i=e.handler.param.name,s.locals.set(i,{kind:"any"})),r=ce(e.handler.body,s)}return{op:"try",try:n,...r&&{catch:r},...i&&{catchParam:i}}}function xa(e,t){if(!e.argument)return{op:"return",value:{}};let{step:n,resultVar:r}=_e(e.argument,t,"__returnVal__");return n?[n,{op:"return",value:r}]:{op:"return",value:K(e.argument,t)}}var Fr=new Set(["Math","JSON","Array","Object","String","Number","console","Date","Schema"]),va=new Set(["parseInt","parseFloat","isNaN","isFinite","encodeURI","decodeURI","encodeURIComponent","decodeURIComponent","Set","Date","filter"]),He=new Set(["RegExp","Promise","Map","WeakSet","WeakMap","Symbol","Proxy","Reflect","Function","eval","setTimeout","setInterval","fetch","require","import","process","window","document","global","globalThis"]),wa=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 Sa(e){if(e.callee.type==="Identifier"){let t=e.callee.name;return va.has(t)||He.has(t)}if(e.callee.type==="MemberExpression"){let t=e.callee;if(t.object.type==="Identifier"){let n=t.object.name;if(Fr.has(n)||He.has(n))return!0}if(t.property.type==="Identifier"){let n=t.property.name;if(wa.has(n))return!0}}return!1}function Ea(e){if(e.object.type==="Identifier"){let t=e.object.name;return Fr.has(t)||He.has(t)}return!1}var Lr={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 ka(e){if(e.callee.type==="Identifier"){let t=e.callee.name;if(He.has(t))return Lr[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(He.has(n))return Lr[n]||`${n} is not available in AsyncJS.`}}return null}function Ur(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 _e(e,t,n,r){let i=r?"constSet":"varSet";if(e.type==="ChainExpression")return _e(e.expression,t,n,r);if(e.type==="NewExpression"){let a=e,o="constructor";a.callee.type==="Identifier"&&(o=a.callee.name);let l=Ur(o);throw new U(`The 'new' keyword is not supported in AsyncJS.${l}`,q(e),t.source,t.filename)}if(e.type==="CallExpression"){let a=ka(e);if(a)throw new U(a,q(e),t.source,t.filename)}if(e.type==="CallExpression"&&Sa(e)){let a=F(e,t);return n?{step:{op:i,key:n,value:a},resultVar:n}:{step:null,resultVar:a}}if(e.type==="MemberExpression"&&Ea(e)){let a=F(e,t);return n?{step:{op:i,key:n,value:a},resultVar:n}:{step:null,resultVar:a}}if(e.type==="CallExpression")return Ca(e,t,n,r);if(e.type==="TemplateLiteral")return Ta(e,t,n,r);if(e.type==="BinaryExpression"||e.type==="LogicalExpression"||e.type==="UnaryExpression"){let a=F(e,t);return n?{step:{op:i,key:n,value:a},resultVar:n}:{step:null,resultVar:a}}return{step:null,resultVar:K(e,t)}}function Ca(e,t,n,r){let i,s=!1,a;if(e.callee.type==="Identifier")i=e.callee.name;else if(e.callee.type==="MemberExpression"){let l=e.callee;if(l.property.type==="Identifier")i=l.property.name,s=!0,a=K(l.object,t);else throw new U("Computed method names are not supported",q(e),t.source,t.filename)}else throw new U("Only named function calls are supported",q(e),t.source,t.filename);if(s)return _a(i,a,e.arguments,t,n,r);if(i==="console"&&e.callee.type,t.helpers?.has(i)){let l=Aa(i,t,e),c=e.arguments.map(p=>K(p,t));if(c.length!==l.length)throw new U(`Helper '${i}' expects ${l.length} argument(s), got ${c.length}`,q(e),t.source,t.filename);return{step:{op:"callLocal",name:i,args:c,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}let o=Pa(e,t);return{step:{op:i,...o,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function Aa(e,t,n){let r=t.helpers.get(e),i=[];for(let s of r.params){let a;if(s.type==="Identifier"?a=s:s.type==="AssignmentPattern"&&s.left?.type==="Identifier"&&(a=s.left),!a)throw new U(`Helper '${e}' parameters must be plain identifiers (optionally with an example value); destructuring is not supported`,s.loc?.start??q(n),t.source,t.filename);i.push(a.name)}if(t.helperSteps.has(e)||t.helperTransforming.has(e))return i;t.helperTransforming.add(e);try{let s={depth:0,locals:new Map,parameters:new Map(i.map(o=>[o,{name:o,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},a=ce(r.body,s);t.helperSteps.set(e,{steps:a,paramNames:i})}finally{t.helperTransforming.delete(e)}return i}function _a(e,t,n,r,i,s){switch(e){case"map":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let a=n[0],o=a.params[0],l=o?.type==="Identifier"?o.name:"item",c=oe(r);c.locals.set(l,{kind:"any"});let p;if(a.body.type==="BlockStatement")p=ce(a.body,c);else{let{step:f,resultVar:h}=_e(a.body,c,"result");p=f?[f]:[{op:"varSet",key:"result",value:h}]}return{step:{op:"map",items:t,as:l,steps:p,...i&&{result:i},...i&&s&&{resultConst:!0}},resultVar:i}}break;case"filter":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let a=n[0],o=a.params[0],l=o?.type==="Identifier"?o.name:"item",c=oe(r);c.locals.set(l,{kind:"any"});let p;if(a.body.type==="BlockStatement")throw new U("filter callback must be an expression, not a block",q(n[0]),r.source,r.filename);return p=F(a.body,c),{step:{op:"filter",items:t,as:l,condition:p,...i&&{result:i},...i&&s&&{resultConst:!0}},resultVar:i}}break;case"find":if(n.length>0&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let a=n[0],o=a.params[0],l=o?.type==="Identifier"?o.name:"item",c=oe(r);c.locals.set(l,{kind:"any"});let p;if(a.body.type==="BlockStatement")throw new U("find callback must be an expression, not a block",q(n[0]),r.source,r.filename);return p=F(a.body,c),{step:{op:"find",items:t,as:l,condition:p,...i&&{result:i},...i&&s&&{resultConst:!0}},resultVar:i}}break;case"reduce":if(n.length>=2&&(n[0].type==="ArrowFunctionExpression"||n[0].type==="FunctionExpression")){let a=n[0],o=a.params[0],l=a.params[1],c=o?.type==="Identifier"?o.name:"acc",p=l?.type==="Identifier"?l.name:"item",f=oe(r);f.locals.set(c,{kind:"any"}),f.locals.set(p,{kind:"any"});let h;if(a.body.type==="BlockStatement")h=ce(a.body,f);else{let{step:g,resultVar:b}=_e(a.body,f,"result");h=g?[g]:[{op:"varSet",key:"result",value:b}]}let m=K(n[1],r);return{step:{op:"reduce",items:t,as:p,accumulator:c,initial:m,steps:h,...i&&{result:i},...i&&s&&{resultConst:!0}},resultVar:i}}break;case"slice":break;case"push":return{step:{op:"push",list:t,item:K(n[0],r),...i&&{result:i},...i&&s&&{resultConst:!0}},resultVar:i};case"join":return{step:{op:"join",list:t,sep:n.length>0?K(n[0],r):"",...i&&{result:i},...i&&s&&{resultConst:!0}},resultVar:i};case"split":return{step:{op:"split",str:t,sep:n.length>0?K(n[0],r):"",...i&&{result:i},...i&&s&&{resultConst:!0}},resultVar:i}}return r.warnings.push({message:`Unknown method '${e}' - treating as atom call`,line:0,column:0}),{step:{op:e,receiver:t,args:n.map(a=>K(a,r)),...i&&{result:i},...i&&s&&{resultConst:!0}},resultVar:i}}function Ta(e,t,n,r){let i="",s={};for(let a=0;a<e.quasis.length;a++)if(i+=e.quasis[a].value.cooked||e.quasis[a].value.raw,a<e.expressions.length){let o=e.expressions[a],l=`_${a}`;s[l]=K(o,t),i+=`{{${l}}}`}return{step:{op:"template",tmpl:i,vars:s,...n&&{result:n},...n&&r&&{resultConst:!0}},resultVar:n}}function F(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=F(n.object,t),i=n.optional===!0;if(n.computed){let a=n.property;return a.type==="Literal"?{$expr:"member",object:r,property:String(a.value),computed:!0,...i&&{optional:!0}}:{$expr:"member",object:r,property:F(a,t),computed:!0,...i&&{optional:!0}}}let s=n.property.name;return{$expr:"member",object:r,property:s,...i&&{optional:!0}}}case"ChainExpression":return F(e.expression,t);case"BinaryExpression":{let n=e;return{$expr:"binary",op:n.operator,left:F(n.left,t),right:F(n.right,t)}}case"LogicalExpression":{let n=e;return{$expr:"logical",op:n.operator,left:F(n.left,t),right:F(n.right,t)}}case"UnaryExpression":{let n=e;return{$expr:"unary",op:n.operator,argument:F(n.argument,t)}}case"ConditionalExpression":{let n=e;return{$expr:"conditional",test:F(n.test,t),consequent:F(n.consequent,t),alternate:F(n.alternate,t)}}case"ArrayExpression":return{$expr:"array",elements:e.elements.filter(r=>r!==null).map(r=>F(r,t))};case"ObjectExpression":{let n=e,r=[];for(let i of n.properties)if(i.type==="Property"){let s=i.key.type==="Identifier"?i.key.name:String(i.key.value);r.push({key:s,value:F(i.value,t)})}return{$expr:"object",properties:r}}case"CallExpression":{let n=e;if(n.callee.type==="MemberExpression"){let r=n.callee,i=r.property.type==="Identifier"?r.property.name:String(r.property.value),s=r.optional===!0||n.optional===!0;return{$expr:"methodCall",object:F(r.object,t),method:i,arguments:n.arguments.map(a=>F(a,t)),...s&&{optional:!0}}}if(n.callee.type==="Identifier"){let r=n.callee.name;if(t.helpers?.has(r))throw new U(`Helper '${r}' cannot be called inside an expression. Assign its result to a variable first: const result = ${r}(...); then use result.`,q(e),t.source,t.filename);return{$expr:"call",callee:r,arguments:n.arguments.map(i=>F(i,t))}}throw new U("Complex function calls in expressions should be lifted to statements",q(e),t.source,t.filename)}case"NewExpression":{let n=e,r="constructor";n.callee.type==="Identifier"&&(r=n.callee.name);let i=Ur(r);throw new U(`The 'new' keyword is not supported in AsyncJS.${i}`,q(e),t.source,t.filename)}case"TemplateLiteral":throw new U("Template literals inside expressions are not supported. Assign to a variable first: const msg = `hello ${name}`; then use msg",q(e),t.source,t.filename);default:throw new U(`Unsupported expression type in condition: ${e.type}`,q(e),t.source,t.filename)}}function K(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 F(e,t);let i=K(n.object,t);if(i&&typeof i=="object"&&i.$expr){let a=n.computed?String(n.property.value):n.property.name;return{$expr:"member",object:i,property:a,...n.computed&&{computed:!0}}}if(n.computed)return F(e,t);let s=n.property.name;return typeof i=="string"?`${i}.${s}`:i&&i.$kind==="arg"?{$kind:"arg",path:`${i.path}.${s}`}:`${i}.${s}`}case"ChainExpression":return K(e.expression,t);case"ArrayExpression":return e.elements.map(n=>n?K(n,t):null);case"ObjectExpression":{let n={};for(let r of e.properties)if(r.type==="Property"){let i=r.key.type==="Identifier"?r.key.name:String(r.key.value);n[i]=K(r.value,t)}return n}case"TemplateLiteral":return F(e,t);case"CallExpression":return F(e,t);case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"ConditionalExpression":return F(e,t);default:return null}}function Pa(e,t){if(e.arguments.length===1&&e.arguments[0].type==="ObjectExpression"){let n=e.arguments[0],r={};for(let i of n.properties)if(i.type==="Property"){let s=i.key.type==="Identifier"?i.key.name:String(i.key.value);r[s]=K(i.value,t)}return r}return{args:e.arguments.map(n=>K(n,t))}}function qr(e,t={}){let{ast:n,returnType:r,originalSource:i,requiredParams:s}=jr(e,{filename:t.filename,colonShorthand:!0,vmTarget:!0}),{entry:a,helpers:o}=Br(n,t.filename),{ast:l,signature:c,warnings:p}=Vr(a,i,r,t,s,o.size>0?o:void 0);return{ast:l,signature:c,warnings:p}}var Na=6e4,Wr=class{atoms;_defaultRunTimeout;constructor(t={}){this.atoms={...vt,...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(Na,t*2)}return this._defaultRunTimeout}get builder(){return new Oe(this.atoms)}get Agent(){return new Oe(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(i=>r.includes(i.op))}return n.map(r=>({type:"function",function:{name:r.op,description:r.docs,parameters:r.inputSchema?.schema??{}}}))}async run(t,n={},r={}){let i;if(typeof t=="string")if(yt(t))i=bt(t);else try{i=qr(t).ast}catch(g){throw new Error(`AJS transpilation failed: ${g.message}`,{cause:g})}else i=t;let s=r.fuel??1e3,a=r.timeoutMs??this.defaultRunTimeout,o=r.capabilities??{},l=[];if(!o.store){let g=new Map,b=!1;o.store={get:async v=>(b||(b=!0,l.push("Using default in-memory store (not suitable for production)")),g.get(v)),set:async(v,S)=>{b||(b=!0,l.push("Using default in-memory store (not suitable for production)")),g.set(v,S)}}}let c=new AbortController,p=setTimeout(()=>c.abort(),a);r.signal&&r.signal.addEventListener("abort",()=>c.abort());let f={fuel:{current:s},args:n,state:{},consts:new Set,capabilities:o,resolver:g=>this.resolve(g),output:void 0,signal:c.signal,costOverrides:r.costOverrides,timeoutOverrides:r.timeoutOverrides,context:r.context,warnings:l,helpers:i.helpers};if(r.trace&&(f.trace=[]),i.op!=="seq")throw new Error("Root AST must be 'seq'. Ensure you're passing a transpiled agent (use ajs`...` or transpile()).");let h=i.inputSchema;if(h&&!Ia(n,h)){let g=new J("Input validation failed: args do not match expected schema","vm.run");return{result:g,error:g,fuelUsed:0,trace:f.trace,warnings:l.length>0?l:void 0}}try{await Promise.race([this.resolve("seq")?.exec(i,f),new Promise((g,b)=>{c.signal.addEventListener("abort",()=>{b(new Error(`Execution timeout after ${a}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`))}),c.signal.aborted&&b(new Error(`Execution timeout after ${a}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`))})])}catch(g){if(g.message?.includes("timeout")||g.message?.includes("aborted")||c.signal.aborted)f.error=new J(`Execution timeout after ${a}ms. Pass a higher \`timeoutMs\` to vm.run() or set per-atom \`timeoutOverrides\` for slow IO atoms.`,"vm.run");else throw g}finally{clearTimeout(p)}f.error&&f.output===void 0&&(f.output=f.error);let m=[...l,...f.warnings??[]];return{result:f.output,error:f.error,fuelUsed:s-f.fuel.current,trace:f.trace,warnings:m.length>0?m:void 0}}};import{s as B}from"tosijs-schema";var qt=N("storeVectorize",B.object({text:B.string,model:B.string.optional}),B.array(B.number),async({text:e},t)=>{let n=t.capabilities.vector;if(!n)throw new Error("Capability 'vector' missing. Ensure vector battery is loaded.");let r=w(e,t);return n.embed(r)},{docs:"Generate embeddings using vector battery",cost:20,timeoutMs:6e4}),Wt=N("storeCreateCollection",B.object({collection:B.string,dimension:B.number.optional}),void 0,async({collection:e,dimension:t},n)=>{let r=n.capabilities.store;if(!r?.createCollection)throw new Error("Capability 'store' missing or does not support createCollection.");let i=w(e,n),s=w(t,n);return r.createCollection(i,void 0,s)},{docs:"Create a vector store collection",cost:5}),zt=N("storeVectorAdd",B.object({collection:B.string,doc:B.any}),void 0,async({collection:e,doc:t},n)=>{let r=n.capabilities.store;if(!r?.vectorAdd)throw new Error("Capability 'store' missing or does not support vectorAdd.");let i=w(e,n),s=w(t,n);return r.vectorAdd(i,s)},{docs:"Add a document to a vector store collection",cost:5,timeoutMs:6e4}),Gt=N("storeSearch",B.object({collection:B.string,queryVector:B.array(B.number),k:B.number.optional,filter:B.record(B.any).optional}),B.array(B.any),async({collection:e,queryVector:t,k:n,filter:r},i)=>{let s=i.capabilities.store;if(!s?.vectorSearch)throw new Error("Capability 'store' missing or does not support vectorSearch.");let a=w(e,i),o=w(t,i),l=w(n,i)??5,c=w(r,i);return s.vectorSearch(a,o,l,c)},{docs:"Search vector store",cost:(e,t)=>5+(w(e.k,t)??5)}),Ht=N("llmPredictBattery",B.object({system:B.string.optional,user:B.union([B.string,B.array(B.any)]),tools:B.array(B.any).optional,responseFormat:B.any.optional}),B.object({role:B.string.optional,content:B.string.optional,tool_calls:B.array(B.any).optional}),async({system:e,user:t,tools:n,responseFormat:r},i)=>{let s=i.capabilities.llmBattery;if(!s?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let a=w(e,i)??"You are a helpful agent.",o=w(t,i),l=w(n,i),c=w(r,i);return s.predict(a,o,l,c)},{docs:"Generate completion using LLM battery",cost:100,timeoutMs:12e4}),Jt=N("llmVision",B.object({system:B.string.optional,prompt:B.string,images:B.array(B.string),responseFormat:B.any.optional}),B.object({role:B.string.optional,content:B.string.optional,tool_calls:B.array(B.any).optional}),async({system:e,prompt:t,images:n,responseFormat:r},i)=>{let s=i.capabilities.llmBattery;if(!s?.predict)throw new Error("Capability 'llmBattery' missing or invalid.");let a=w(e,i)??"You analyze images accurately and concisely.",o=w(t,i),l=w(n,i)??[],c=w(r,i);return s.predict(a,{text:o,images:l},void 0,c)},{docs:"Analyze images using a vision model",timeoutMs:12e4,cost:150});for(let e of[qt,Wt,zt,Gt,Ht,Jt])e.effects="io";var mo={storeCreateCollection:Wt,storeSearch:Gt,storeVectorAdd:zt,storeVectorize:qt,llmPredictBattery:Ht,llmVision:Jt};export{J as AgentError,Wr as AgentVM,Hr as DEFAULT_MAX_AST_SIZE,Gr as DEFAULT_PROCEDURE_TTL,Qi as EFFECTFUL_CORE_OPS,Xt as MAX_CALL_DEPTH,gt as PROCEDURE_TOKEN_PREFIX,ji as agentRun,mo as batteryAtoms,de as builtins,Ui as cache,hi as callLocal,Zi as clearExpiredProcedures,Hi as consoleError,zi as consoleLog,Gi as consoleWarn,oi as constSet,vt as coreAtoms,ve as createChildScope,N as defineAtom,si as errorAtom,z as evaluateExpr,Pi as fetch,mi as filter,yi as find,xt as hash,ti as iff,zr as isAgentError,yt as isProcedureToken,wi as join,Di as jsonParse,Li as jsonStringify,_i as keys,xi as len,Mi as llmPredict,di as map,Fi as memoize,Ai as merge,Ci as omit,ki as pick,Pe as procedureStore,bi as push,qi as random,gi as reduce,Ei as regexMatch,Ki as releaseProcedure,bt as resolveProcedureToken,w as resolveValue,ri as ret,Oi as runCode,fi as scope,ee as seq,vi as split,Ii as storeGet,Ji as storeProcedure,Ri as storeQuery,Ni as storeSet,Si as template,Bi as transpileCode,ii as tryCatch,Wi as uuid,li as varGet,ai as varSet,pi as varsExport,ci as varsImport,ui as varsLet,$i as vectorSearch,ni as whileLoop,Vi as xmlParse};
|
|
63
63
|
//# sourceMappingURL=tjs-vm.js.map
|