@aiaiaichain/agent 0.1.7 → 0.1.9
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/cli.js +358 -760
- package/dist/core/SystemMonitor.js +0 -2
- package/dist/index.d.ts +4 -60
- package/dist/runner/SwarmRouter.js +0 -1
- package/dist/tui/App.d.ts +1 -6
- package/dist/tui/App.js +1 -1
- package/dist/tui/ModelSelector.d.ts +1 -2
- package/dist/tui/ModelSelector.js +1 -1
- package/dist/tui/REPL.d.ts +1 -2
- package/dist/tui/Sparkline.d.ts +1 -2
- package/dist/tui/Sparkline.js +2 -0
- package/dist/tui/StatusBar.d.ts +1 -2
- package/dist/tui/StatusBar.js +2 -0
- package/package.json +6 -5
- package/scripts/postinstall.js +14 -0
package/dist/cli.js
CHANGED
|
@@ -1,36 +1,291 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
import { config as loadDotenv } from "dotenv";
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
1
|
+
var oA=Object.create;var ea=Object.defineProperty;var sA=Object.getOwnPropertyDescriptor;var iA=Object.getOwnPropertyNames;var aA=Object.getPrototypeOf,lA=Object.prototype.hasOwnProperty;var ie=(t=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(t,{get:(e,r)=>(typeof require<"u"?require:e)[r]}):t)(function(t){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+t+'" is not supported')});var xe=(t,e)=>()=>(t&&(e=t(t=0)),e);var Je=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),yt=(t,e)=>{for(var r in e)ea(t,r,{get:e[r],enumerable:!0})},cA=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of iA(e))!lA.call(t,o)&&o!==r&&ea(t,o,{get:()=>e[o],enumerable:!(n=sA(e,o))||n.enumerable});return t};var ta=(t,e,r)=>(r=t!=null?oA(aA(t)):{},cA(e||!t||!t.__esModule?ea(r,"default",{value:t,enumerable:!0}):r,t));var vu=Je((_C,uA)=>{uA.exports={name:"dotenv",version:"16.6.1",description:"Loads environment variables from .env file",main:"lib/main.js",types:"lib/main.d.ts",exports:{".":{types:"./lib/main.d.ts",require:"./lib/main.js",default:"./lib/main.js"},"./config":"./config.js","./config.js":"./config.js","./lib/env-options":"./lib/env-options.js","./lib/env-options.js":"./lib/env-options.js","./lib/cli-options":"./lib/cli-options.js","./lib/cli-options.js":"./lib/cli-options.js","./package.json":"./package.json"},scripts:{"dts-check":"tsc --project tests/types/tsconfig.json",lint:"standard",pretest:"npm run lint && npm run dts-check",test:"tap run --allow-empty-coverage --disable-coverage --timeout=60000","test:coverage":"tap run --show-full-coverage --timeout=60000 --coverage-report=text --coverage-report=lcov",prerelease:"npm test",release:"standard-version"},repository:{type:"git",url:"git://github.com/motdotla/dotenv.git"},homepage:"https://github.com/motdotla/dotenv#readme",funding:"https://dotenvx.com",keywords:["dotenv","env",".env","environment","variables","config","settings"],readmeFilename:"README.md",license:"BSD-2-Clause",devDependencies:{"@types/node":"^18.11.3",decache:"^4.6.2",sinon:"^14.0.1",standard:"^17.0.0","standard-version":"^9.5.0",tap:"^19.2.0",typescript:"^4.8.4"},engines:{node:">=12"},browser:{fs:!1}}});var Tu=Je((TC,Yt)=>{var ra=ie("fs"),ns=ie("path"),dA=ie("os"),fA=ie("crypto"),mA=vu(),na=mA.version,hA=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function pA(t){let e={},r=t.toString();r=r.replace(/\r\n?/mg,`
|
|
2
|
+
`);let n;for(;(n=hA.exec(r))!=null;){let o=n[1],s=n[2]||"";s=s.trim();let i=s[0];s=s.replace(/^(['"`])([\s\S]*)\1$/mg,"$2"),i==='"'&&(s=s.replace(/\\n/g,`
|
|
3
|
+
`),s=s.replace(/\\r/g,"\r")),e[o]=s}return e}function gA(t){t=t||{};let e=_u(t);t.path=e;let r=Fe.configDotenv(t);if(!r.parsed){let i=new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);throw i.code="MISSING_DATA",i}let n=Su(t).split(","),o=n.length,s;for(let i=0;i<o;i++)try{let l=n[i].trim(),c=yA(r,l);s=Fe.decrypt(c.ciphertext,c.key);break}catch(l){if(i+1>=o)throw l}return Fe.parse(s)}function AA(t){console.log(`[dotenv@${na}][WARN] ${t}`)}function Zn(t){console.log(`[dotenv@${na}][DEBUG] ${t}`)}function ku(t){console.log(`[dotenv@${na}] ${t}`)}function Su(t){return t&&t.DOTENV_KEY&&t.DOTENV_KEY.length>0?t.DOTENV_KEY:process.env.DOTENV_KEY&&process.env.DOTENV_KEY.length>0?process.env.DOTENV_KEY:""}function yA(t,e){let r;try{r=new URL(e)}catch(l){if(l.code==="ERR_INVALID_URL"){let c=new Error("INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenvx.com/vault/.env.vault?environment=development");throw c.code="INVALID_DOTENV_KEY",c}throw l}let n=r.password;if(!n){let l=new Error("INVALID_DOTENV_KEY: Missing key part");throw l.code="INVALID_DOTENV_KEY",l}let o=r.searchParams.get("environment");if(!o){let l=new Error("INVALID_DOTENV_KEY: Missing environment part");throw l.code="INVALID_DOTENV_KEY",l}let s=`DOTENV_VAULT_${o.toUpperCase()}`,i=t.parsed[s];if(!i){let l=new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${s} in your .env.vault file.`);throw l.code="NOT_FOUND_DOTENV_ENVIRONMENT",l}return{ciphertext:i,key:n}}function _u(t){let e=null;if(t&&t.path&&t.path.length>0)if(Array.isArray(t.path))for(let r of t.path)ra.existsSync(r)&&(e=r.endsWith(".vault")?r:`${r}.vault`);else e=t.path.endsWith(".vault")?t.path:`${t.path}.vault`;else e=ns.resolve(process.cwd(),".env.vault");return ra.existsSync(e)?e:null}function Cu(t){return t[0]==="~"?ns.join(dA.homedir(),t.slice(1)):t}function wA(t){let e=!!(t&&t.debug),r=t&&"quiet"in t?t.quiet:!0;(e||!r)&&ku("Loading env from encrypted .env.vault");let n=Fe._parseVault(t),o=process.env;return t&&t.processEnv!=null&&(o=t.processEnv),Fe.populate(o,n,t),{parsed:n}}function bA(t){let e=ns.resolve(process.cwd(),".env"),r="utf8",n=!!(t&&t.debug),o=t&&"quiet"in t?t.quiet:!0;t&&t.encoding?r=t.encoding:n&&Zn("No encoding is specified. UTF-8 is used by default");let s=[e];if(t&&t.path)if(!Array.isArray(t.path))s=[Cu(t.path)];else{s=[];for(let f of t.path)s.push(Cu(f))}let i,l={};for(let f of s)try{let d=Fe.parse(ra.readFileSync(f,{encoding:r}));Fe.populate(l,d,t)}catch(d){n&&Zn(`Failed to load ${f} ${d.message}`),i=d}let c=process.env;if(t&&t.processEnv!=null&&(c=t.processEnv),Fe.populate(c,l,t),n||!o){let f=Object.keys(l).length,d=[];for(let a of s)try{let h=ns.relative(process.cwd(),a);d.push(h)}catch(h){n&&Zn(`Failed to load ${a} ${h.message}`),i=h}ku(`injecting env (${f}) from ${d.join(",")}`)}return i?{parsed:l,error:i}:{parsed:l}}function EA(t){if(Su(t).length===0)return Fe.configDotenv(t);let e=_u(t);return e?Fe._configVault(t):(AA(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),Fe.configDotenv(t))}function xA(t,e){let r=Buffer.from(e.slice(-64),"hex"),n=Buffer.from(t,"base64"),o=n.subarray(0,12),s=n.subarray(-16);n=n.subarray(12,-16);try{let i=fA.createDecipheriv("aes-256-gcm",r,o);return i.setAuthTag(s),`${i.update(n)}${i.final()}`}catch(i){let l=i instanceof RangeError,c=i.message==="Invalid key length",f=i.message==="Unsupported state or unable to authenticate data";if(l||c){let d=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw d.code="INVALID_DOTENV_KEY",d}else if(f){let d=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw d.code="DECRYPTION_FAILED",d}else throw i}}function vA(t,e,r={}){let n=!!(r&&r.debug),o=!!(r&&r.override);if(typeof e!="object"){let s=new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");throw s.code="OBJECT_REQUIRED",s}for(let s of Object.keys(e))Object.prototype.hasOwnProperty.call(t,s)?(o===!0&&(t[s]=e[s]),n&&Zn(o===!0?`"${s}" is already defined and WAS overwritten`:`"${s}" is already defined and was NOT overwritten`)):t[s]=e[s]}var Fe={configDotenv:bA,_configVault:wA,_parseVault:gA,config:EA,decrypt:xA,parse:pA,populate:vA};Yt.exports.configDotenv=Fe.configDotenv;Yt.exports._configVault=Fe._configVault;Yt.exports._parseVault=Fe._parseVault;Yt.exports.config=Fe.config;Yt.exports.decrypt=Fe.decrypt;Yt.exports.parse=Fe.parse;Yt.exports.populate=Fe.populate;Yt.exports=Fe});var CA,Bu,kA,SA,vt,Ru,Pu,un,$u,Ou,to=xe(()=>{CA=Object.defineProperty,Bu=(t,e)=>CA(t,"name",{value:e,configurable:!0}),kA=Bu((t,e)=>{let r=t[0]-e[0];if(r===0){let n=t[1]-e[1];return n===0?t[2]>=e[2]:n>0}return r>0},"isVersionGreaterOrEqual"),SA=process.versions.node.split(".").map(Number),vt=Bu((t,e=SA)=>{for(let r=0;r<t.length;r+=1){let n=t[r];if(r===t.length-1||e[0]===n[0])return kA(e,n)}return!1},"isFeatureSupported"),Ru=[[24,11,1],[25,1,0],[26,0,0]],Pu=[[18,19,0],[20,10,0],[21,0,0]],un=[[20,11,0],[21,3,0]],$u=[[20,11,0],[21,2,0]],Ou=[[20,19,0],[22,12,0],[23,0,0]]});import _A from"node:path";import Qu from"node:os";var Lu,TA,os,ss=xe(()=>{({geteuid:Lu}=process),TA=Lu?Lu():Qu.userInfo().username,os=_A.join(Qu.tmpdir(),`tsx-${TA}`)});import{createRequire as RA}from"module";import PA from"node:path";var IA,BA,Or,$A,Du,ro=xe(()=>{ss();IA=Object.defineProperty,BA=(t,e)=>IA(t,"name",{value:e,configurable:!0}),Or=RA(import.meta.url),$A=process.platform==="win32",Du=BA(t=>{let e=PA.join(os,`${t}.pipe`);return $A?`\\\\?\\pipe\\${e}`:e},"getPipePath")});var ua=Je((FC,ld)=>{"use strict";var ca=Object.defineProperty,OA=Object.getOwnPropertyDescriptor,LA=Object.getOwnPropertyNames,QA=Object.prototype.hasOwnProperty,DA=(t,e)=>{for(var r in e)ca(t,r,{get:e[r],enumerable:!0})},NA=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of LA(e))!QA.call(t,o)&&o!==r&&ca(t,o,{get:()=>e[o],enumerable:!(n=OA(e,o))||n.enumerable});return t},MA=t=>NA(ca({},"__esModule",{value:!0}),t),io={};DA(io,{analyzeMetafile:()=>g0,analyzeMetafileSync:()=>b0,build:()=>f0,buildSync:()=>A0,context:()=>m0,default:()=>C0,formatMessages:()=>p0,formatMessagesSync:()=>w0,initialize:()=>x0,stop:()=>E0,transform:()=>h0,transformSync:()=>y0,version:()=>d0});ld.exports=MA(io);function Nu(t){let e=n=>{if(n===null)r.write8(0);else if(typeof n=="boolean")r.write8(1),r.write8(+n);else if(typeof n=="number")r.write8(2),r.write32(n|0);else if(typeof n=="string")r.write8(3),r.write(Ot(n));else if(n instanceof Uint8Array)r.write8(4),r.write(n);else if(n instanceof Array){r.write8(5),r.write32(n.length);for(let o of n)e(o)}else{let o=Object.keys(n);r.write8(6),r.write32(o.length);for(let s of o)r.write(Ot(s)),e(n[s])}},r=new Yu;return r.write32(0),r.write32(t.id<<1|+!t.isRequest),e(t.value),ia(r.buf,r.len-4,0),r.buf.subarray(0,r.len)}function FA(t){let e=()=>{switch(r.read8()){case 0:return null;case 1:return!!r.read8();case 2:return r.read32();case 3:return Mr(r.read());case 4:return r.read();case 5:{let i=r.read32(),l=[];for(let c=0;c<i;c++)l.push(e());return l}case 6:{let i=r.read32(),l={};for(let c=0;c<i;c++)l[Mr(r.read())]=e();return l}default:throw new Error("Invalid packet")}},r=new Yu(t),n=r.read32(),o=(n&1)===0;n>>>=1;let s=e();if(r.ptr!==t.length)throw new Error("Invalid packet");return{id:n,isRequest:o,value:s}}var Yu=class{constructor(t=new Uint8Array(1024)){this.buf=t,this.len=0,this.ptr=0}_write(t){if(this.len+t>this.buf.length){let e=new Uint8Array((this.len+t)*2);e.set(this.buf),this.buf=e}return this.len+=t,this.len-t}write8(t){let e=this._write(1);this.buf[e]=t}write32(t){let e=this._write(4);ia(this.buf,t,e)}write(t){let e=this._write(4+t.length);ia(this.buf,t.length,e),this.buf.set(t,e+4)}_read(t){if(this.ptr+t>this.buf.length)throw new Error("Invalid packet");return this.ptr+=t,this.ptr-t}read8(){return this.buf[this._read(1)]}read32(){return Vu(this.buf,this._read(4))}read(){let t=this.read32(),e=new Uint8Array(t),r=this._read(e.length);return e.set(this.buf.subarray(r,r+t)),e}},Ot,Mr,sa;if(typeof TextEncoder<"u"&&typeof TextDecoder<"u"){let t=new TextEncoder,e=new TextDecoder;Ot=r=>t.encode(r),Mr=r=>e.decode(r),sa='new TextEncoder().encode("")'}else if(typeof Buffer<"u")Ot=t=>Buffer.from(t),Mr=t=>{let{buffer:e,byteOffset:r,byteLength:n}=t;return Buffer.from(e,r,n).toString()},sa='Buffer.from("")';else throw new Error("No UTF-8 codec found");if(!(Ot("")instanceof Uint8Array))throw new Error(`Invariant violation: "${sa} instanceof Uint8Array" is incorrectly false
|
|
4
|
+
|
|
5
|
+
This indicates that your JavaScript environment is broken. You cannot use
|
|
6
|
+
esbuild in this environment because esbuild relies on this invariant. This
|
|
7
|
+
is not a problem with esbuild. You need to fix your environment instead.
|
|
8
|
+
`);function Vu(t,e){return(t[e++]|t[e++]<<8|t[e++]<<16|t[e++]<<24)>>>0}function ia(t,e,r){t[r++]=e,t[r++]=e>>8,t[r++]=e>>16,t[r++]=e>>24}var Vt=String.fromCharCode;function Ct(t,e,r){let n=t[e],o=1,s=0;for(let i=0;i<e;i++)t[i]===10?(o++,s=0):s++;throw new SyntaxError(r||(e===t.length?"Unexpected end of input while parsing JSON":n>=32&&n<=126?`Unexpected character ${Vt(n)} in JSON at position ${e} (line ${o}, column ${s})`:`Unexpected byte 0x${n.toString(16)} in JSON at position ${e} (line ${o}, column ${s})`))}function UA(t){if(!(t instanceof Uint8Array))throw new Error("JSON input must be a Uint8Array");let e=[],r=[],n=[],o=t.length,s=null,i=0,l,c=0;for(;c<o;){let f=t[c++];if(f<=32)continue;let d;switch(i===2&&s===null&&f!==34&&f!==125&&Ct(t,--c),f){case 116:{(t[c++]!==114||t[c++]!==117||t[c++]!==101)&&Ct(t,--c),d=!0;break}case 102:{(t[c++]!==97||t[c++]!==108||t[c++]!==115||t[c++]!==101)&&Ct(t,--c),d=!1;break}case 110:{(t[c++]!==117||t[c++]!==108||t[c++]!==108)&&Ct(t,--c),d=null;break}case 45:case 46:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:{let a=c;for(d=Vt(f),f=t[c];;){switch(f){case 43:case 45:case 46:case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:case 101:case 69:{d+=Vt(f),f=t[++c];continue}}break}d=+d,isNaN(d)&&Ct(t,--a,"Invalid number");break}case 34:{for(d="";c>=o&&Ct(t,o),f=t[c++],f!==34;)if(f===92)switch(t[c++]){case 34:d+='"';break;case 47:d+="/";break;case 92:d+="\\";break;case 98:d+="\b";break;case 102:d+="\f";break;case 110:d+=`
|
|
9
|
+
`;break;case 114:d+="\r";break;case 116:d+=" ";break;case 117:{let a=0;for(let h=0;h<4;h++)f=t[c++],a<<=4,f>=48&&f<=57?a|=f-48:f>=97&&f<=102?a|=f+-87:f>=65&&f<=70?a|=f+-55:Ct(t,--c);d+=Vt(a);break}default:Ct(t,--c);break}else if(f<=127)d+=Vt(f);else if((f&224)===192)d+=Vt((f&31)<<6|t[c++]&63);else if((f&240)===224)d+=Vt((f&15)<<12|(t[c++]&63)<<6|t[c++]&63);else if((f&248)==240){let a=(f&7)<<18|(t[c++]&63)<<12|(t[c++]&63)<<6|t[c++]&63;a>65535&&(a-=65536,d+=Vt(a>>10&1023|55296),a=56320|a&1023),d+=Vt(a)}d[0];break}case 91:{d=[],e.push(s),r.push(l),n.push(i),s=null,l=d,i=1;continue}case 123:{d={},e.push(s),r.push(l),n.push(i),s=null,l=d,i=2;continue}case 93:{i!==1&&Ct(t,--c),d=l,s=e.pop(),l=r.pop(),i=n.pop();break}case 125:{i!==2&&Ct(t,--c),d=l,s=e.pop(),l=r.pop(),i=n.pop();break}default:Ct(t,--c)}for(f=t[c];f<=32;)f=t[++c];switch(i){case 0:{if(c===o)return d;break}case 1:{if(l.push(d),f===44){c++;continue}if(f===93)continue;break}case 2:{if(s===null){if(s=d,f===58){c++;continue}}else{if(l[s]=d,s=null,f===44){c++;continue}if(f===125)continue}break}}break}Ct(t,c)}var Ne=JSON.stringify,Mu="warning",Fu="silent";function fn(t,e){let r=[];for(let n of t){if(dt(n,e),n.indexOf(",")>=0)throw new Error(`Invalid ${e}: ${n}`);r.push(n)}return r.join(",")}var ls=()=>null,ke=t=>typeof t=="boolean"?null:"a boolean",ee=t=>typeof t=="string"?null:"a string",cs=t=>t instanceof RegExp?null:"a RegExp object",Qr=t=>typeof t=="number"&&t===(t|0)?null:"an integer",jA=t=>typeof t=="number"&&t===(t|0)&&t>=0&&t<=65535?null:"a valid port number",Hu=t=>typeof t=="function"?null:"a function",Ht=t=>Array.isArray(t)?null:"an array",ft=t=>Array.isArray(t)&&t.every(e=>typeof e=="string")?null:"an array of strings",wt=t=>typeof t=="object"&&t!==null&&!Array.isArray(t)?null:"an object",KA=t=>typeof t=="object"&&t!==null?null:"an array or an object",WA=t=>t instanceof WebAssembly.Module?null:"a WebAssembly.Module",Uu=t=>typeof t=="object"&&!Array.isArray(t)?null:"an object or null",zu=t=>typeof t=="string"||typeof t=="boolean"?null:"a string or a boolean",GA=t=>typeof t=="string"||typeof t=="object"&&t!==null&&!Array.isArray(t)?null:"a string or an object",Xu=t=>typeof t=="string"||Array.isArray(t)&&t.every(e=>typeof e=="string")?null:"a string or an array of strings",Zu=t=>typeof t=="string"||t instanceof Uint8Array?null:"a string or a Uint8Array",qA=t=>typeof t=="string"||t instanceof URL?null:"a string or a URL";function _(t,e,r,n){let o=t[r];if(e[r+""]=!0,o===void 0)return;let s=n(o);if(s!==null)throw new Error(`${Ne(r)} must be ${s}`);return o}function De(t,e,r){for(let n in t)if(!(n in e))throw new Error(`Invalid option ${r}: ${Ne(n)}`)}function JA(t){let e=Object.create(null),r=_(t,e,"wasmURL",qA),n=_(t,e,"wasmModule",WA),o=_(t,e,"worker",ke);return De(t,e,"in initialize() call"),{wasmURL:r,wasmModule:n,worker:o}}function ed(t){let e;if(t!==void 0){e=Object.create(null);for(let r in t){let n=t[r];if(typeof n=="string"||n===!1)e[r]=n;else throw new Error(`Expected ${Ne(r)} in mangle cache to map to either a string or false`)}}return e}function hs(t,e,r,n,o){let s=_(e,r,"color",ke),i=_(e,r,"logLevel",ee),l=_(e,r,"logLimit",Qr);s!==void 0?t.push(`--color=${s}`):n&&t.push("--color=true"),t.push(`--log-level=${i||o}`),t.push(`--log-limit=${l||0}`)}function dt(t,e,r){if(typeof t!="string")throw new Error(`Expected value for ${e}${r!==void 0?" "+Ne(r):""} to be a string, got ${typeof t} instead`);return t}function td(t,e,r){let n=_(e,r,"legalComments",ee),o=_(e,r,"sourceRoot",ee),s=_(e,r,"sourcesContent",ke),i=_(e,r,"target",Xu),l=_(e,r,"format",ee),c=_(e,r,"globalName",ee),f=_(e,r,"mangleProps",cs),d=_(e,r,"reserveProps",cs),a=_(e,r,"mangleQuoted",ke),h=_(e,r,"minify",ke),p=_(e,r,"minifySyntax",ke),g=_(e,r,"minifyWhitespace",ke),x=_(e,r,"minifyIdentifiers",ke),A=_(e,r,"lineLimit",Qr),w=_(e,r,"drop",ft),O=_(e,r,"dropLabels",ft),T=_(e,r,"charset",ee),B=_(e,r,"treeShaking",ke),v=_(e,r,"ignoreAnnotations",ke),C=_(e,r,"jsx",ee),I=_(e,r,"jsxFactory",ee),j=_(e,r,"jsxFragment",ee),F=_(e,r,"jsxImportSource",ee),Q=_(e,r,"jsxDev",ke),P=_(e,r,"jsxSideEffects",ke),$=_(e,r,"define",wt),N=_(e,r,"logOverride",wt),U=_(e,r,"supported",wt),q=_(e,r,"pure",ft),H=_(e,r,"keepNames",ke),z=_(e,r,"platform",ee),oe=_(e,r,"tsconfigRaw",GA),re=_(e,r,"absPaths",ft);if(n&&t.push(`--legal-comments=${n}`),o!==void 0&&t.push(`--source-root=${o}`),s!==void 0&&t.push(`--sources-content=${s}`),i&&t.push(`--target=${fn(Array.isArray(i)?i:[i],"target")}`),l&&t.push(`--format=${l}`),c&&t.push(`--global-name=${c}`),z&&t.push(`--platform=${z}`),oe&&t.push(`--tsconfig-raw=${typeof oe=="string"?oe:JSON.stringify(oe)}`),h&&t.push("--minify"),p&&t.push("--minify-syntax"),g&&t.push("--minify-whitespace"),x&&t.push("--minify-identifiers"),A&&t.push(`--line-limit=${A}`),T&&t.push(`--charset=${T}`),B!==void 0&&t.push(`--tree-shaking=${B}`),v&&t.push("--ignore-annotations"),w)for(let J of w)t.push(`--drop:${dt(J,"drop")}`);if(O&&t.push(`--drop-labels=${fn(O,"drop label")}`),re&&t.push(`--abs-paths=${fn(re,"abs paths")}`),f&&t.push(`--mangle-props=${us(f)}`),d&&t.push(`--reserve-props=${us(d)}`),a!==void 0&&t.push(`--mangle-quoted=${a}`),C&&t.push(`--jsx=${C}`),I&&t.push(`--jsx-factory=${I}`),j&&t.push(`--jsx-fragment=${j}`),F&&t.push(`--jsx-import-source=${F}`),Q&&t.push("--jsx-dev"),P&&t.push("--jsx-side-effects"),$)for(let J in $){if(J.indexOf("=")>=0)throw new Error(`Invalid define: ${J}`);t.push(`--define:${J}=${dt($[J],"define",J)}`)}if(N)for(let J in N){if(J.indexOf("=")>=0)throw new Error(`Invalid log override: ${J}`);t.push(`--log-override:${J}=${dt(N[J],"log override",J)}`)}if(U)for(let J in U){if(J.indexOf("=")>=0)throw new Error(`Invalid supported: ${J}`);let ae=U[J];if(typeof ae!="boolean")throw new Error(`Expected value for supported ${Ne(J)} to be a boolean, got ${typeof ae} instead`);t.push(`--supported:${J}=${ae}`)}if(q)for(let J of q)t.push(`--pure:${dt(J,"pure")}`);H&&t.push("--keep-names")}function YA(t,e,r,n,o){var s;let i=[],l=[],c=Object.create(null),f=null,d=null;hs(i,e,c,r,n),td(i,e,c);let a=_(e,c,"sourcemap",zu),h=_(e,c,"bundle",ke),p=_(e,c,"splitting",ke),g=_(e,c,"preserveSymlinks",ke),x=_(e,c,"metafile",ke),A=_(e,c,"outfile",ee),w=_(e,c,"outdir",ee),O=_(e,c,"outbase",ee),T=_(e,c,"tsconfig",ee),B=_(e,c,"resolveExtensions",ft),v=_(e,c,"nodePaths",ft),C=_(e,c,"mainFields",ft),I=_(e,c,"conditions",ft),j=_(e,c,"external",ft),F=_(e,c,"packages",ee),Q=_(e,c,"alias",wt),P=_(e,c,"loader",wt),$=_(e,c,"outExtension",wt),N=_(e,c,"publicPath",ee),U=_(e,c,"entryNames",ee),q=_(e,c,"chunkNames",ee),H=_(e,c,"assetNames",ee),z=_(e,c,"inject",ft),oe=_(e,c,"banner",wt),re=_(e,c,"footer",wt),J=_(e,c,"entryPoints",KA),ae=_(e,c,"absWorkingDir",ee),le=_(e,c,"stdin",wt),se=(s=_(e,c,"write",ke))!=null?s:o,ye=_(e,c,"allowOverwrite",ke),we=_(e,c,"mangleCache",wt);if(c.plugins=!0,De(e,c,`in ${t}() call`),a&&i.push(`--sourcemap${a===!0?"":`=${a}`}`),h&&i.push("--bundle"),ye&&i.push("--allow-overwrite"),p&&i.push("--splitting"),g&&i.push("--preserve-symlinks"),x&&i.push("--metafile"),A&&i.push(`--outfile=${A}`),w&&i.push(`--outdir=${w}`),O&&i.push(`--outbase=${O}`),T&&i.push(`--tsconfig=${T}`),F&&i.push(`--packages=${F}`),B&&i.push(`--resolve-extensions=${fn(B,"resolve extension")}`),N&&i.push(`--public-path=${N}`),U&&i.push(`--entry-names=${U}`),q&&i.push(`--chunk-names=${q}`),H&&i.push(`--asset-names=${H}`),C&&i.push(`--main-fields=${fn(C,"main field")}`),I&&i.push(`--conditions=${fn(I,"condition")}`),j)for(let S of j)i.push(`--external:${dt(S,"external")}`);if(Q)for(let S in Q){if(S.indexOf("=")>=0)throw new Error(`Invalid package name in alias: ${S}`);i.push(`--alias:${S}=${dt(Q[S],"alias",S)}`)}if(oe)for(let S in oe){if(S.indexOf("=")>=0)throw new Error(`Invalid banner file type: ${S}`);i.push(`--banner:${S}=${dt(oe[S],"banner",S)}`)}if(re)for(let S in re){if(S.indexOf("=")>=0)throw new Error(`Invalid footer file type: ${S}`);i.push(`--footer:${S}=${dt(re[S],"footer",S)}`)}if(z)for(let S of z)i.push(`--inject:${dt(S,"inject")}`);if(P)for(let S in P){if(S.indexOf("=")>=0)throw new Error(`Invalid loader extension: ${S}`);i.push(`--loader:${S}=${dt(P[S],"loader",S)}`)}if($)for(let S in $){if(S.indexOf("=")>=0)throw new Error(`Invalid out extension: ${S}`);i.push(`--out-extension:${S}=${dt($[S],"out extension",S)}`)}if(J)if(Array.isArray(J))for(let S=0,He=J.length;S<He;S++){let Re=J[S];if(typeof Re=="object"&&Re!==null){let rt=Object.create(null),ut=_(Re,rt,"in",ee),qe=_(Re,rt,"out",ee);if(De(Re,rt,"in entry point at index "+S),ut===void 0)throw new Error('Missing property "in" for entry point at index '+S);if(qe===void 0)throw new Error('Missing property "out" for entry point at index '+S);l.push([qe,ut])}else l.push(["",dt(Re,"entry point at index "+S)])}else for(let S in J)l.push([S,dt(J[S],"entry point",S)]);if(le){let S=Object.create(null),He=_(le,S,"contents",Zu),Re=_(le,S,"resolveDir",ee),rt=_(le,S,"sourcefile",ee),ut=_(le,S,"loader",ee);De(le,S,'in "stdin" object'),rt&&i.push(`--sourcefile=${rt}`),ut&&i.push(`--loader=${ut}`),Re&&(d=Re),typeof He=="string"?f=Ot(He):He instanceof Uint8Array&&(f=He)}let be=[];if(v)for(let S of v)S+="",be.push(S);return{entries:l,flags:i,write:se,stdinContents:f,stdinResolveDir:d,absWorkingDir:ae,nodePaths:be,mangleCache:ed(we)}}function VA(t,e,r,n){let o=[],s=Object.create(null);hs(o,e,s,r,n),td(o,e,s);let i=_(e,s,"sourcemap",zu),l=_(e,s,"sourcefile",ee),c=_(e,s,"loader",ee),f=_(e,s,"banner",ee),d=_(e,s,"footer",ee),a=_(e,s,"mangleCache",wt);return De(e,s,`in ${t}() call`),i&&o.push(`--sourcemap=${i===!0?"external":i}`),l&&o.push(`--sourcefile=${l}`),c&&o.push(`--loader=${c}`),f&&o.push(`--banner=${f}`),d&&o.push(`--footer=${d}`),{flags:o,mangleCache:ed(a)}}function rd(t){let e={},r={didClose:!1,reason:""},n={},o=0,s=0,i=new Uint8Array(16*1024),l=0,c=T=>{let B=l+T.length;if(B>i.length){let C=new Uint8Array(B*2);C.set(i),i=C}i.set(T,l),l+=T.length;let v=0;for(;v+4<=l;){let C=Vu(i,v);if(v+4+C>l)break;v+=4,g(i.subarray(v,v+C)),v+=C}v>0&&(i.copyWithin(0,v,l),l-=v)},f=T=>{r.didClose=!0,T&&(r.reason=": "+(T.message||T));let B="The service was stopped"+r.reason;for(let v in n)n[v](B,null);n={}},d=(T,B,v)=>{if(r.didClose)return v("The service is no longer running"+r.reason,null);let C=o++;n[C]=(I,j)=>{try{v(I,j)}finally{T&&T.unref()}},T&&T.ref(),t.writeToStdin(Nu({id:C,isRequest:!0,value:B}))},a=(T,B)=>{if(r.didClose)throw new Error("The service is no longer running"+r.reason);t.writeToStdin(Nu({id:T,isRequest:!1,value:B}))},h=async(T,B)=>{try{if(B.command==="ping"){a(T,{});return}if(typeof B.key=="number"){let v=e[B.key];if(!v)return;let C=v[B.command];if(C){await C(T,B);return}}throw new Error("Invalid command: "+B.command)}catch(v){let C=[Lr(v,t,null,void 0,"")];try{a(T,{errors:C})}catch{}}},p=!0,g=T=>{if(p){p=!1;let v=String.fromCharCode(...T);if(v!=="0.28.1")throw new Error(`Cannot start service: Host version "0.28.1" does not match binary version ${Ne(v)}`);return}let B=FA(T);if(B.isRequest)h(B.id,B.value);else{let v=n[B.id];delete n[B.id],B.value.error?v(B.value.error,{}):v(null,B.value)}};return{readFromStdout:c,afterClose:f,service:{buildOrContext:({callName:T,refs:B,options:v,isTTY:C,defaultWD:I,callback:j})=>{let F=0,Q=s++,P={},$={ref(){++F===1&&B&&B.ref()},unref(){--F===0&&(delete e[Q],B&&B.unref())}};e[Q]=P,$.ref(),HA(T,Q,d,a,$,t,P,v,C,I,(N,U)=>{try{j(N,U)}finally{$.unref()}})},transform:({callName:T,refs:B,input:v,options:C,isTTY:I,fs:j,callback:F})=>{let Q=nd(),P=$=>{try{if(typeof v!="string"&&!(v instanceof Uint8Array))throw new Error('The input to "transform" must be a string or a Uint8Array');let{flags:N,mangleCache:U}=VA(T,C,I,Fu),q={command:"transform",flags:N,inputFS:$!==null,input:$!==null?Ot($):typeof v=="string"?Ot(v):v};U&&(q.mangleCache=U),d(B,q,(H,z)=>{if(H)return F(new Error(H),null);let oe=mn(z.errors,Q),re=mn(z.warnings,Q),J=1,ae=()=>{if(--J===0){let le={warnings:re,code:z.code,map:z.map,mangleCache:void 0,legalComments:void 0};"legalComments"in z&&(le.legalComments=z?.legalComments),z.mangleCache&&(le.mangleCache=z?.mangleCache),F(null,le)}};if(oe.length>0)return F(oo("Transform failed",oe,re),null);z.codeFS&&(J++,j.readFile(z.code,(le,se)=>{le!==null?F(le,null):(z.code=se,ae())})),z.mapFS&&(J++,j.readFile(z.map,(le,se)=>{le!==null?F(le,null):(z.map=se,ae())})),ae()})}catch(N){let U=[];try{hs(U,C,{},I,Fu)}catch{}let q=Lr(N,t,Q,void 0,"");d(B,{command:"error",flags:U,error:q},()=>{q.detail=Q.load(q.detail),F(oo("Transform failed",[q],[]),null)})}};if((typeof v=="string"||v instanceof Uint8Array)&&v.length>1024*1024){let $=P;P=()=>j.writeFile(v,$)}P(null)},formatMessages:({callName:T,refs:B,messages:v,options:C,callback:I})=>{if(!C)throw new Error(`Missing second argument in ${T}() call`);let j={},F=_(C,j,"kind",ee),Q=_(C,j,"color",ke),P=_(C,j,"terminalWidth",Qr);if(De(C,j,`in ${T}() call`),F===void 0)throw new Error(`Missing "kind" in ${T}() call`);if(F!=="error"&&F!=="warning")throw new Error(`Expected "kind" to be "error" or "warning" in ${T}() call`);let $={command:"format-msgs",messages:zt(v,"messages",null,"",P),isWarning:F==="warning"};Q!==void 0&&($.color=Q),P!==void 0&&($.terminalWidth=P),d(B,$,(N,U)=>{if(N)return I(new Error(N),null);I(null,U.messages)})},analyzeMetafile:({callName:T,refs:B,metafile:v,options:C,callback:I})=>{C===void 0&&(C={});let j={},F=_(C,j,"color",ke),Q=_(C,j,"verbose",ke);De(C,j,`in ${T}() call`);let P={command:"analyze-metafile",metafile:v};F!==void 0&&(P.color=F),Q!==void 0&&(P.verbose=Q),d(B,P,($,N)=>{if($)return I(new Error($),null);I(null,N.result)})}}}}function HA(t,e,r,n,o,s,i,l,c,f,d){let a=nd(),h=t==="context",p=(A,w)=>{let O=[];try{hs(O,l,{},c,Mu)}catch{}let T=Lr(A,s,a,void 0,w);r(o,{command:"error",flags:O,error:T},()=>{T.detail=a.load(T.detail),d(oo(h?"Context failed":"Build failed",[T],[]),null)})},g;if(typeof l=="object"){let A=l.plugins;if(A!==void 0){if(!Array.isArray(A))return p(new Error('"plugins" must be an array'),"");g=A}}if(g&&g.length>0){if(s.isSync)return p(new Error("Cannot use plugins in synchronous API calls"),"");zA(e,r,n,o,s,i,l,g,a).then(A=>{if(!A.ok)return p(A.error,A.pluginName);try{x(A.requestPlugins,A.runOnEndCallbacks,A.scheduleOnDisposeCallbacks)}catch(w){p(w,"")}},A=>p(A,""));return}try{x(null,(A,w)=>w([],[]),()=>{})}catch(A){p(A,"")}function x(A,w,O){let T=s.hasFS,{entries:B,flags:v,write:C,stdinContents:I,stdinResolveDir:j,absWorkingDir:F,nodePaths:Q,mangleCache:P}=YA(t,l,c,Mu,T);if(C&&!s.hasFS)throw new Error('The "write" option is unavailable in this environment');let $={command:"build",key:e,entries:B,flags:v,write:C,stdinContents:I,stdinResolveDir:j,absWorkingDir:F||f,nodePaths:Q,context:h};A&&($.plugins=A),P&&($.mangleCache=P);let N=(H,z)=>{let oe={errors:mn(H.errors,a),warnings:mn(H.warnings,a),outputFiles:void 0,metafile:void 0,mangleCache:void 0},re=oe.errors.slice(),J=oe.warnings.slice();H.outputFiles&&(oe.outputFiles=H.outputFiles.map(ZA)),H.metafile&&H.metafile.length&&(oe.metafile=e0(H.metafile)),H.mangleCache&&(oe.mangleCache=H.mangleCache),H.writeToStdout!==void 0&&console.log(Mr(H.writeToStdout).replace(/\n$/,"")),w(oe,(ae,le)=>{if(re.length>0||ae.length>0){let se=oo("Build failed",re.concat(ae),J.concat(le));return z(se,null,ae,le)}z(null,oe,ae,le)})},U,q;h&&(i["on-end"]=(H,z)=>new Promise(oe=>{N(z,(re,J,ae,le)=>{let se={errors:ae,warnings:le};q&&q(re,J),U=void 0,q=void 0,n(H,se),oe()})})),r(o,$,(H,z)=>{if(H)return d(new Error(H),null);if(!h)return N(z,(J,ae)=>(O(),d(J,ae)));if(z.errors.length>0)return d(oo("Context failed",z.errors,z.warnings),null);let oe=!1,re={rebuild:()=>(U||(U=new Promise((J,ae)=>{let le;q=(ye,we)=>{le||(le=()=>ye?ae(ye):J(we))};let se=()=>{r(o,{command:"rebuild",key:e},(we,be)=>{we?ae(new Error(we)):le?le():se()})};se()})),U),watch:(J={})=>new Promise((ae,le)=>{if(!s.hasFS)throw new Error('Cannot use the "watch" API in this environment');let se={},ye=_(J,se,"delay",Qr);De(J,se,"in watch() call");let we={command:"watch",key:e};ye&&(we.delay=ye),r(o,we,be=>{be?le(new Error(be)):ae(void 0)})}),serve:(J={})=>new Promise((ae,le)=>{if(!s.hasFS)throw new Error('Cannot use the "serve" API in this environment');let se={},ye=_(J,se,"port",jA),we=_(J,se,"host",ee),be=_(J,se,"servedir",ee),S=_(J,se,"keyfile",ee),He=_(J,se,"certfile",ee),Re=_(J,se,"fallback",ee),rt=_(J,se,"cors",wt),ut=_(J,se,"onRequest",Hu);De(J,se,"in serve() call");let qe={command:"serve",key:e,onRequest:!!ut};if(ye!==void 0&&(qe.port=ye),we!==void 0&&(qe.host=we),be!==void 0&&(qe.servedir=be),S!==void 0&&(qe.keyfile=S),He!==void 0&&(qe.certfile=He),Re!==void 0&&(qe.fallback=Re),rt){let Ft={},$t=_(rt,Ft,"origin",Xu);De(rt,Ft,'on "cors" object'),Array.isArray($t)?qe.corsOrigin=$t:$t!==void 0&&(qe.corsOrigin=[$t])}r(o,qe,(Ft,$t)=>{if(Ft)return le(new Error(Ft));ut&&(i["serve-request"]=(ur,cn)=>{ut(cn.args),n(ur,{})}),ae($t)})}),cancel:()=>new Promise(J=>{if(oe)return J();r(o,{command:"cancel",key:e},()=>{J()})}),dispose:()=>new Promise(J=>{if(oe)return J();oe=!0,r(o,{command:"dispose",key:e},()=>{J(),O(),o.unref()})})};o.ref(),d(null,re)})}}var zA=async(t,e,r,n,o,s,i,l,c)=>{let f=[],d=[],a={},h={},p=[],g=0,x=0,A=[],w=!1;l=[...l];for(let B of l){let v={};if(typeof B!="object")throw new Error(`Plugin at index ${x} must be an object`);let C=_(B,v,"name",ee);if(typeof C!="string"||C==="")throw new Error(`Plugin at index ${x} is missing a name`);try{let I=_(B,v,"setup",Hu);if(typeof I!="function")throw new Error("Plugin is missing a setup function");De(B,v,`on plugin ${Ne(C)}`);let j={name:C,onStart:!1,onEnd:!1,onResolve:[],onLoad:[]};x++;let Q=I({initialOptions:i,resolve:(P,$={})=>{if(!w)throw new Error('Cannot call "resolve" before plugin setup has completed');if(typeof P!="string")throw new Error("The path to resolve must be a string");let N=Object.create(null),U=_($,N,"pluginName",ee),q=_($,N,"importer",ee),H=_($,N,"namespace",ee),z=_($,N,"resolveDir",ee),oe=_($,N,"kind",ee),re=_($,N,"pluginData",ls),J=_($,N,"with",wt);return De($,N,"in resolve() call"),new Promise((ae,le)=>{let se={command:"resolve",path:P,key:t,pluginName:C};if(U!=null&&(se.pluginName=U),q!=null&&(se.importer=q),H!=null&&(se.namespace=H),z!=null&&(se.resolveDir=z),oe!=null)se.kind=oe;else throw new Error('Must specify "kind" when calling "resolve"');re!=null&&(se.pluginData=c.store(re)),J!=null&&(se.with=XA(J,"with")),e(n,se,(ye,we)=>{ye!==null?le(new Error(ye)):ae({errors:mn(we.errors,c),warnings:mn(we.warnings,c),path:we.path,external:we.external,sideEffects:we.sideEffects,namespace:we.namespace,suffix:we.suffix,pluginData:c.load(we.pluginData)})})})},onStart(P){let $='This error came from the "onStart" callback registered here:',N=is(new Error($),o,"onStart");f.push({name:C,callback:P,note:N}),j.onStart=!0},onEnd(P){let $='This error came from the "onEnd" callback registered here:',N=is(new Error($),o,"onEnd");d.push({name:C,callback:P,note:N}),j.onEnd=!0},onResolve(P,$){let N='This error came from the "onResolve" callback registered here:',U=is(new Error(N),o,"onResolve"),q={},H=_(P,q,"filter",cs),z=_(P,q,"namespace",ee);if(De(P,q,`in onResolve() call for plugin ${Ne(C)}`),H==null)throw new Error("onResolve() call is missing a filter");let oe=g++;a[oe]={name:C,callback:$,note:U},j.onResolve.push({id:oe,filter:us(H),namespace:z||""})},onLoad(P,$){let N='This error came from the "onLoad" callback registered here:',U=is(new Error(N),o,"onLoad"),q={},H=_(P,q,"filter",cs),z=_(P,q,"namespace",ee);if(De(P,q,`in onLoad() call for plugin ${Ne(C)}`),H==null)throw new Error("onLoad() call is missing a filter");let oe=g++;h[oe]={name:C,callback:$,note:U},j.onLoad.push({id:oe,filter:us(H),namespace:z||""})},onDispose(P){p.push(P)},esbuild:o.esbuild});Q&&await Q,A.push(j)}catch(I){return{ok:!1,error:I,pluginName:C}}}s["on-start"]=async(B,v)=>{c.clear();let C={errors:[],warnings:[]};await Promise.all(f.map(async({name:I,callback:j,note:F})=>{try{let Q=await j();if(Q!=null){if(typeof Q!="object")throw new Error(`Expected onStart() callback in plugin ${Ne(I)} to return an object`);let P={},$=_(Q,P,"errors",Ht),N=_(Q,P,"warnings",Ht);De(Q,P,`from onStart() callback in plugin ${Ne(I)}`),$!=null&&C.errors.push(...zt($,"errors",c,I,void 0)),N!=null&&C.warnings.push(...zt(N,"warnings",c,I,void 0))}}catch(Q){C.errors.push(Lr(Q,o,c,F&&F(),I))}})),r(B,C)},s["on-resolve"]=async(B,v)=>{let C={},I="",j,F;for(let Q of v.ids)try{({name:I,callback:j,note:F}=a[Q]);let P=await j({path:v.path,importer:v.importer,namespace:v.namespace,resolveDir:v.resolveDir,kind:v.kind,pluginData:c.load(v.pluginData),with:v.with});if(P!=null){if(typeof P!="object")throw new Error(`Expected onResolve() callback in plugin ${Ne(I)} to return an object`);let $={},N=_(P,$,"pluginName",ee),U=_(P,$,"path",ee),q=_(P,$,"namespace",ee),H=_(P,$,"suffix",ee),z=_(P,$,"external",ke),oe=_(P,$,"sideEffects",ke),re=_(P,$,"pluginData",ls),J=_(P,$,"errors",Ht),ae=_(P,$,"warnings",Ht),le=_(P,$,"watchFiles",ft),se=_(P,$,"watchDirs",ft);De(P,$,`from onResolve() callback in plugin ${Ne(I)}`),C.id=Q,N!=null&&(C.pluginName=N),U!=null&&(C.path=U),q!=null&&(C.namespace=q),H!=null&&(C.suffix=H),z!=null&&(C.external=z),oe!=null&&(C.sideEffects=oe),re!=null&&(C.pluginData=c.store(re)),J!=null&&(C.errors=zt(J,"errors",c,I,void 0)),ae!=null&&(C.warnings=zt(ae,"warnings",c,I,void 0)),le!=null&&(C.watchFiles=as(le,"watchFiles")),se!=null&&(C.watchDirs=as(se,"watchDirs"));break}}catch(P){C={id:Q,errors:[Lr(P,o,c,F&&F(),I)]};break}r(B,C)},s["on-load"]=async(B,v)=>{let C={},I="",j,F;for(let Q of v.ids)try{({name:I,callback:j,note:F}=h[Q]);let P=await j({path:v.path,namespace:v.namespace,suffix:v.suffix,pluginData:c.load(v.pluginData),with:v.with});if(P!=null){if(typeof P!="object")throw new Error(`Expected onLoad() callback in plugin ${Ne(I)} to return an object`);let $={},N=_(P,$,"pluginName",ee),U=_(P,$,"contents",Zu),q=_(P,$,"resolveDir",ee),H=_(P,$,"pluginData",ls),z=_(P,$,"loader",ee),oe=_(P,$,"errors",Ht),re=_(P,$,"warnings",Ht),J=_(P,$,"watchFiles",ft),ae=_(P,$,"watchDirs",ft);De(P,$,`from onLoad() callback in plugin ${Ne(I)}`),C.id=Q,N!=null&&(C.pluginName=N),U instanceof Uint8Array?C.contents=U:U!=null&&(C.contents=Ot(U)),q!=null&&(C.resolveDir=q),H!=null&&(C.pluginData=c.store(H)),z!=null&&(C.loader=z),oe!=null&&(C.errors=zt(oe,"errors",c,I,void 0)),re!=null&&(C.warnings=zt(re,"warnings",c,I,void 0)),J!=null&&(C.watchFiles=as(J,"watchFiles")),ae!=null&&(C.watchDirs=as(ae,"watchDirs"));break}}catch(P){C={id:Q,errors:[Lr(P,o,c,F&&F(),I)]};break}r(B,C)};let O=(B,v)=>v([],[]);d.length>0&&(O=(B,v)=>{(async()=>{let C=[],I=[];for(let{name:j,callback:F,note:Q}of d){let P,$;try{let N=await F(B);if(N!=null){if(typeof N!="object")throw new Error(`Expected onEnd() callback in plugin ${Ne(j)} to return an object`);let U={},q=_(N,U,"errors",Ht),H=_(N,U,"warnings",Ht);De(N,U,`from onEnd() callback in plugin ${Ne(j)}`),q!=null&&(P=zt(q,"errors",c,j,void 0)),H!=null&&($=zt(H,"warnings",c,j,void 0))}}catch(N){P=[Lr(N,o,c,Q&&Q(),j)]}if(P){C.push(...P);try{B.errors.push(...P)}catch{}}if($){I.push(...$);try{B.warnings.push(...$)}catch{}}}v(C,I)})()});let T=()=>{for(let B of p)setTimeout(()=>B(),0)};return w=!0,{ok:!0,requestPlugins:A,runOnEndCallbacks:O,scheduleOnDisposeCallbacks:T}};function nd(){let t=new Map,e=0;return{clear(){t.clear()},load(r){return t.get(r)},store(r){if(r===void 0)return-1;let n=e++;return t.set(n,r),n}}}function is(t,e,r){let n,o=!1;return()=>{if(o)return n;o=!0;try{let s=(t.stack+"").split(`
|
|
10
|
+
`);s.splice(1,1);let i=od(e,s,r);if(i)return n={text:t.message,location:i},n}catch{}}}function Lr(t,e,r,n,o){let s="Internal error",i=null;try{s=(t&&t.message||t)+""}catch{}try{i=od(e,(t.stack+"").split(`
|
|
11
|
+
`),"")}catch{}return{id:"",pluginName:o,text:s,location:i,notes:n?[n]:[],detail:r?r.store(t):-1}}function od(t,e,r){let n=" at ";if(t.readFileSync&&!e[0].startsWith(n)&&e[1].startsWith(n))for(let o=1;o<e.length;o++){let s=e[o];if(s.startsWith(n))for(s=s.slice(n.length);;){let i=/^(?:new |async )?\S+ \((.*)\)$/.exec(s);if(i){s=i[1];continue}if(i=/^eval at \S+ \((.*)\)(?:, \S+:\d+:\d+)?$/.exec(s),i){s=i[1];continue}if(i=/^(\S+):(\d+):(\d+)$/.exec(s),i){let l;try{l=t.readFileSync(i[1],"utf8")}catch{break}let c=l.split(/\r\n|\r|\n|\u2028|\u2029/)[+i[2]-1]||"",f=+i[3]-1,d=c.slice(f,f+r.length)===r?r.length:0;return{file:i[1],namespace:"file",line:+i[2],column:Ot(c.slice(0,f)).length,length:Ot(c.slice(f,f+d)).length,lineText:c+`
|
|
12
|
+
`+e.slice(1).join(`
|
|
13
|
+
`),suggestion:""}}break}}return null}function oo(t,e,r){let n=5;t+=e.length<1?"":` with ${e.length} error${e.length<2?"":"s"}:`+e.slice(0,n+1).map((s,i)=>{if(i===n)return`
|
|
14
|
+
...`;if(!s.location)return`
|
|
15
|
+
error: ${s.text}`;let{file:l,line:c,column:f}=s.location,d=s.pluginName?`[plugin: ${s.pluginName}] `:"";return`
|
|
16
|
+
${l}:${c}:${f}: ERROR: ${d}${s.text}`}).join("");let o=new Error(t);for(let[s,i]of[["errors",e],["warnings",r]])Object.defineProperty(o,s,{configurable:!0,enumerable:!0,get:()=>i,set:l=>Object.defineProperty(o,s,{configurable:!0,enumerable:!0,value:l})});return o}function mn(t,e){for(let r of t)r.detail=e.load(r.detail);return t}function ju(t,e,r){if(t==null)return null;let n={},o=_(t,n,"file",ee),s=_(t,n,"namespace",ee),i=_(t,n,"line",Qr),l=_(t,n,"column",Qr),c=_(t,n,"length",Qr),f=_(t,n,"lineText",ee),d=_(t,n,"suggestion",ee);if(De(t,n,e),f){let a=f.slice(0,(l&&l>0?l:0)+(c&&c>0?c:0)+(r&&r>0?r:80));!/[\x7F-\uFFFF]/.test(a)&&!/\n/.test(f)&&(f=a)}return{file:o||"",namespace:s||"",line:i||0,column:l||0,length:c||0,lineText:f||"",suggestion:d||""}}function zt(t,e,r,n,o){let s=[],i=0;for(let l of t){let c={},f=_(l,c,"id",ee),d=_(l,c,"pluginName",ee),a=_(l,c,"text",ee),h=_(l,c,"location",Uu),p=_(l,c,"notes",Ht),g=_(l,c,"detail",ls),x=`in element ${i} of "${e}"`;De(l,c,x);let A=[];if(p)for(let w of p){let O={},T=_(w,O,"text",ee),B=_(w,O,"location",Uu);De(w,O,x),A.push({text:T||"",location:ju(B,x,o)})}s.push({id:f||"",pluginName:d||n,text:a||"",location:ju(h,x,o),notes:A,detail:r?r.store(g):-1}),i++}return s}function as(t,e){let r=[];for(let n of t){if(typeof n!="string")throw new Error(`${Ne(e)} must be an array of strings`);r.push(n)}return r}function XA(t,e){let r=Object.create(null);for(let n in t){let o=t[n];if(typeof o!="string")throw new Error(`key ${Ne(n)} in object ${Ne(e)} must be a string`);r[n]=o}return r}function ZA({path:t,contents:e,hash:r}){let n=null;return{path:t,contents:e,hash:r,get text(){let o=this.contents;return(n===null||o!==e)&&(e=o,n=Mr(o)),n}}}function us(t){let e=t.source;return t.flags&&(e=`(?${t.flags})${e}`),e}function e0(t){let e;try{e=Mr(t)}catch{return UA(t)}return JSON.parse(e)}var fr=ie("fs"),Ku=ie("os"),kt=ie("path"),dn=process.env.ESBUILD_BINARY_PATH||dn,t0=t=>!!t&&t!=="/usr/bin/esbuild",Wu="@esbuild/darwin-arm64",Gu="@esbuild/darwin-x64",ds={"win32 arm64 LE":"@esbuild/win32-arm64","win32 ia32 LE":"@esbuild/win32-ia32","win32 x64 LE":"@esbuild/win32-x64"},fs={"aix ppc64 BE":"@esbuild/aix-ppc64","android arm64 LE":"@esbuild/android-arm64","darwin arm64 LE":"@esbuild/darwin-arm64","darwin x64 LE":"@esbuild/darwin-x64","freebsd arm64 LE":"@esbuild/freebsd-arm64","freebsd x64 LE":"@esbuild/freebsd-x64","linux arm LE":"@esbuild/linux-arm","linux arm64 LE":"@esbuild/linux-arm64","linux ia32 LE":"@esbuild/linux-ia32","linux mips64el LE":"@esbuild/linux-mips64el","linux ppc64 LE":"@esbuild/linux-ppc64","linux riscv64 LE":"@esbuild/linux-riscv64","linux s390x BE":"@esbuild/linux-s390x","linux x64 LE":"@esbuild/linux-x64","linux loong64 LE":"@esbuild/linux-loong64","netbsd arm64 LE":"@esbuild/netbsd-arm64","netbsd x64 LE":"@esbuild/netbsd-x64","openbsd arm64 LE":"@esbuild/openbsd-arm64","openbsd x64 LE":"@esbuild/openbsd-x64","sunos x64 LE":"@esbuild/sunos-x64"},qu={"android arm LE":"@esbuild/android-arm","android x64 LE":"@esbuild/android-x64","openharmony arm64 LE":"@esbuild/openharmony-arm64"};function r0(){let t,e,r=!1,n=`${process.platform} ${Ku.arch()} ${Ku.endianness()}`;if(n in ds)t=ds[n],e="esbuild.exe";else if(n in fs)t=fs[n],e="bin/esbuild";else if(n in qu)t=qu[n],e="bin/esbuild",r=!0;else throw new Error(`Unsupported platform: ${n}`);return{pkg:t,subpath:e,isWASM:r}}function n0(){let t=ie.resolve("esbuild"),e=kt.dirname(kt.dirname(kt.dirname(t)));if(kt.basename(e)==="node_modules"){for(let r in fs)try{let n=fs[r];if(fr.existsSync(kt.join(e,n)))return n}catch{}for(let r in ds)try{let n=ds[r];if(fr.existsSync(kt.join(e,n)))return n}catch{}}return null}function o0(t,e){let r=kt.dirname(ie.resolve("esbuild"));return kt.join(r,`downloaded-${t.replace("/","-")}-${kt.basename(e)}`)}function s0(){if(t0(dn))if(!fr.existsSync(dn))console.warn(`[esbuild] Ignoring bad configuration: ESBUILD_BINARY_PATH=${dn}`);else return{binPath:dn,isWASM:!1};let{pkg:t,subpath:e,isWASM:r}=r0(),n;try{n=ie.resolve(`${t}/${e}`)}catch(o){if(n=o0(t,e),!fr.existsSync(n)){try{ie.resolve(t)}catch{let s=n0();if(s){let i=`
|
|
17
|
+
Specifically the "${s}" package is present but this platform
|
|
18
|
+
needs the "${t}" package instead. People often get into this
|
|
19
|
+
situation by installing esbuild on Windows or macOS and copying "node_modules"
|
|
20
|
+
into a Docker image that runs Linux, or by copying "node_modules" between
|
|
21
|
+
Windows and WSL environments.
|
|
22
|
+
|
|
23
|
+
If you are installing with npm, you can try not copying the "node_modules"
|
|
24
|
+
directory when you copy the files over, and running "npm ci" or "npm install"
|
|
25
|
+
on the destination platform after the copy. Or you could consider using yarn
|
|
26
|
+
instead of npm which has built-in support for installing a package on multiple
|
|
27
|
+
platforms simultaneously.
|
|
28
|
+
|
|
29
|
+
If you are installing with yarn, you can try listing both this platform and the
|
|
30
|
+
other platform in your ".yarnrc.yml" file using the "supportedArchitectures"
|
|
31
|
+
feature: https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures
|
|
32
|
+
Keep in mind that this means multiple copies of esbuild will be present.
|
|
33
|
+
`;throw(t===Gu&&s===Wu||t===Wu&&s===Gu)&&(i=`
|
|
34
|
+
Specifically the "${s}" package is present but this platform
|
|
35
|
+
needs the "${t}" package instead. People often get into this
|
|
36
|
+
situation by installing esbuild with npm running inside of Rosetta 2 and then
|
|
37
|
+
trying to use it with node running outside of Rosetta 2, or vice versa (Rosetta
|
|
38
|
+
2 is Apple's on-the-fly x86_64-to-arm64 translation service).
|
|
39
|
+
|
|
40
|
+
If you are installing with npm, you can try ensuring that both npm and node are
|
|
41
|
+
not running under Rosetta 2 and then reinstalling esbuild. This likely involves
|
|
42
|
+
changing how you installed npm and/or node. For example, installing node with
|
|
43
|
+
the universal installer here should work: https://nodejs.org/en/download/. Or
|
|
44
|
+
you could consider using yarn instead of npm which has built-in support for
|
|
45
|
+
installing a package on multiple platforms simultaneously.
|
|
46
|
+
|
|
47
|
+
If you are installing with yarn, you can try listing both "arm64" and "x64"
|
|
48
|
+
in your ".yarnrc.yml" file using the "supportedArchitectures" feature:
|
|
49
|
+
https://yarnpkg.com/configuration/yarnrc/#supportedArchitectures
|
|
50
|
+
Keep in mind that this means multiple copies of esbuild will be present.
|
|
51
|
+
`),new Error(`
|
|
52
|
+
You installed esbuild for another platform than the one you're currently using.
|
|
53
|
+
This won't work because esbuild is written with native code and needs to
|
|
54
|
+
install a platform-specific binary executable.
|
|
55
|
+
${i}
|
|
56
|
+
Another alternative is to use the "esbuild-wasm" package instead, which works
|
|
57
|
+
the same way on all platforms. But it comes with a heavy performance cost and
|
|
58
|
+
can sometimes be 10x slower than the "esbuild" package, so you may also not
|
|
59
|
+
want to do that.
|
|
60
|
+
`)}throw new Error(`The package "${t}" could not be found, and is needed by esbuild.
|
|
61
|
+
|
|
62
|
+
If you are installing esbuild with npm, make sure that you don't specify the
|
|
63
|
+
"--no-optional" or "--omit=optional" flags. The "optionalDependencies" feature
|
|
64
|
+
of "package.json" is used by esbuild to install the correct binary executable
|
|
65
|
+
for your current platform.`)}throw o}}if(/\.zip\
|
|
66
|
+
|
|
67
|
+
More information: The file containing the code for esbuild's JavaScript API (${__filename}) does not appear to be inside the esbuild package on the file system, which usually means that the esbuild package was bundled into another file. This is problematic because the API needs to run a binary executable inside the esbuild package which is located using a relative path from the API code to the executable. If the esbuild package is bundled, the relative path will be incorrect and the executable won't be found.`);{let{binPath:t,isWASM:e}=s0();return e?["node",[t]]:[t,[]]}},so=()=>l0.isatty(2),c0={readFile(t,e){try{let r=Dr.readFileSync(t,"utf8");try{Dr.unlinkSync(t)}catch{}e(null,r)}catch(r){e(r,null)}},writeFile(t,e){try{let r=ad();Dr.writeFileSync(r,t),e(r)}catch{e(null)}}},u0={readFile(t,e){try{Dr.readFile(t,"utf8",(r,n)=>{try{Dr.unlink(t,()=>e(r,n))}catch{e(r,n)}})}catch(r){e(r,null)}},writeFile(t,e){try{let r=ad();Dr.writeFile(r,t,n=>e(n!==null?null:r))}catch{e(null)}}},d0="0.28.1",f0=t=>Fr().build(t),m0=t=>Fr().context(t),h0=(t,e)=>Fr().transform(t,e),p0=(t,e)=>Fr().formatMessages(t,e),g0=(t,e)=>Fr().analyzeMetafile(t,e),A0=t=>{if(ot&&!ao)return st||(st=gs(ot)),st.buildSync(t);let e;return ps(r=>r.buildOrContext({callName:"buildSync",refs:null,options:t,isTTY:so(),defaultWD:Nr,callback:(n,o)=>{if(n)throw n;e=o}})),e},y0=(t,e)=>{if(ot&&!ao)return st||(st=gs(ot)),st.transformSync(t,e);let r;return ps(n=>n.transform({callName:"transformSync",refs:null,input:t,options:e||{},isTTY:so(),fs:c0,callback:(o,s)=>{if(o)throw o;r=s}})),r},w0=(t,e)=>{if(ot&&!ao)return st||(st=gs(ot)),st.formatMessagesSync(t,e);let r;return ps(n=>n.formatMessages({callName:"formatMessagesSync",refs:null,messages:t,options:e,callback:(o,s)=>{if(o)throw o;r=s}})),r},b0=(t,e)=>{if(ot&&!ao)return st||(st=gs(ot)),st.analyzeMetafileSync(t,e);let r;return ps(n=>n.analyzeMetafile({callName:"analyzeMetafileSync",refs:null,metafile:typeof t=="string"?t:JSON.stringify(t),options:e,callback:(o,s)=>{if(o)throw o;r=s}})),r},E0=()=>(ms&&ms(),st&&st.stop(),Promise.resolve()),la=!1,x0=t=>{if(t=JA(t||{}),t.wasmURL)throw new Error('The "wasmURL" option only works in the browser');if(t.wasmModule)throw new Error('The "wasmModule" option only works in the browser');if(t.worker)throw new Error('The "worker" option only works in the browser');if(la)throw new Error('Cannot call "initialize" more than once');return Fr(),la=!0,Promise.resolve()},Nr=process.cwd(),no,ms,Fr=()=>{if(no)return no;let[t,e]=id(),r=sd.spawn(t,e.concat("--service=0.28.1","--ping"),{windowsHide:!0,stdio:["pipe","pipe","inherit"],cwd:Nr}),{readFromStdout:n,afterClose:o,service:s}=rd({writeToStdin(d){r.stdin.write(d,a=>{a&&o(a)})},readFileSync:Dr.readFileSync,isSync:!1,hasFS:!0,esbuild:io});r.stdin.on("error",o),r.on("error",o);let i=r.stdin,l=r.stdout;l.on("data",n),l.on("end",o),ms=()=>{i.destroy(),l.destroy(),r.kill(),la=!1,no=void 0,ms=void 0};let c=0;r.unref(),i.unref&&i.unref(),l.unref&&l.unref();let f={ref(){++c===1&&r.ref()},unref(){--c===0&&r.unref()}};return no={build:d=>new Promise((a,h)=>{s.buildOrContext({callName:"build",refs:f,options:d,isTTY:so(),defaultWD:Nr,callback:(p,g)=>p?h(p):a(g)})}),context:d=>new Promise((a,h)=>s.buildOrContext({callName:"context",refs:f,options:d,isTTY:so(),defaultWD:Nr,callback:(p,g)=>p?h(p):a(g)})),transform:(d,a)=>new Promise((h,p)=>s.transform({callName:"transform",refs:f,input:d,options:a||{},isTTY:so(),fs:u0,callback:(g,x)=>g?p(g):h(x)})),formatMessages:(d,a)=>new Promise((h,p)=>s.formatMessages({callName:"formatMessages",refs:f,messages:d,options:a,callback:(g,x)=>g?p(g):h(x)})),analyzeMetafile:(d,a)=>new Promise((h,p)=>s.analyzeMetafile({callName:"analyzeMetafile",refs:f,metafile:typeof d=="string"?d:JSON.stringify(d),options:a,callback:(g,x)=>g?p(g):h(x)}))},no},ps=t=>{let[e,r]=id(),n=new Uint8Array,{readFromStdout:o,afterClose:s,service:i}=rd({writeToStdin(c){if(n.length!==0)throw new Error("Must run at most one command");n=c},isSync:!0,hasFS:!0,esbuild:io});t(i);let l=sd.execFileSync(e,r.concat("--service=0.28.1"),{cwd:Nr,windowsHide:!0,input:n,maxBuffer:+process.env.ESBUILD_MAX_BUFFER||16*1024*1024});o(l),s(null)},ad=()=>aa.join(a0.tmpdir(),`esbuild-${i0.randomBytes(32).toString("hex")}`),st=null,gs=t=>{let{port1:e,port2:r}=new t.MessageChannel,n=new t.Worker(__filename,{workerData:{workerPort:r,defaultWD:Nr,esbuildVersion:"0.28.1"},transferList:[r],execArgv:[]}),o=0,s=f=>{let d=new Error(`Build failed with 1 error:
|
|
68
|
+
error: ${f}`),a=[{id:"",pluginName:"",text:f,location:null,notes:[],detail:void 0}];return d.errors=a,d.warnings=[],d},i=f=>{if(!f)return;let d=f.plugins;if(d&&d.length>0)throw s("Cannot use plugins in synchronous API calls")},l=(f,d)=>{for(let a in d)f[a]=d[a]},c=(f,d)=>{let a=o++,h=new SharedArrayBuffer(8),p=new Int32Array(h),g={sharedBuffer:h,id:a,command:f,args:d};n.postMessage(g);let x=Atomics.wait(p,0,0);if(x!=="ok"&&x!=="not-equal")throw new Error("Internal error: Atomics.wait() failed: "+x);let{message:{id:A,resolve:w,reject:O,properties:T}}=t.receiveMessageOnPort(e);if(a!==A)throw new Error(`Internal error: Expected id ${a} but got id ${A}`);if(O)throw l(O,T),O;return w};return n.unref(),{buildSync(f){return i(f),c("build",[f])},transformSync(f,d){return c("transform",[f,d])},formatMessagesSync(f,d){return c("formatMessages",[f,d])},analyzeMetafileSync(f,d){return c("analyzeMetafile",[f,d])},stop(){n.terminate(),st=null}}},v0=()=>{let t=ot.workerData.workerPort,e=ot.parentPort,r=n=>{let o={};if(n&&typeof n=="object")for(let s in n)o[s]=n[s];return o};try{let n=Fr();Nr=ot.workerData.defaultWD,e.on("message",o=>{(async()=>{let{sharedBuffer:s,id:i,command:l,args:c}=o,f=new Int32Array(s);try{switch(l){case"build":t.postMessage({id:i,resolve:await n.build(c[0])});break;case"transform":t.postMessage({id:i,resolve:await n.transform(c[0],c[1])});break;case"formatMessages":t.postMessage({id:i,resolve:await n.formatMessages(c[0],c[1])});break;case"analyzeMetafile":t.postMessage({id:i,resolve:await n.analyzeMetafile(c[0],c[1])});break;default:throw new Error(`Invalid command: ${l}`)}}catch(d){t.postMessage({id:i,reject:d,properties:r(d)})}Atomics.add(f,0,1),Atomics.notify(f,0,1/0)})()})}catch(n){e.on("message",o=>{let{sharedBuffer:s,id:i}=o,l=new Int32Array(s);t.postMessage({id:i,reject:n,properties:r(n)}),Atomics.add(l,0,1),Atomics.notify(l,0,1/0)})}};ao&&v0();var C0=io});var fd={};yt(fd,{ImportType:()=>fa,init:()=>dd,parse:()=>ma});function ma(t,e="@"){if(!pe)return dd.then(()=>ma(t));let r=t.length+1,n=(pe.__heap_base.value||pe.__heap_base)+4*r-pe.memory.buffer.byteLength;n>0&&pe.memory.grow(Math.ceil(n/65536));let o=pe.sa(r-1);if((S0?ud:cd)(t,new Uint16Array(pe.memory.buffer,o,r)),!pe.parse())throw Object.assign(new Error(`Parse error ${e}:${t.slice(0,pe.e()).split(`
|
|
69
|
+
`).length}:${pe.e()-t.lastIndexOf(`
|
|
70
|
+
`,pe.e()-1)}`),{idx:pe.e()});let s=[],i=[];for(;pe.ri();){let c=pe.is(),f=pe.ie(),d=pe.it(),a=pe.ai(),h=pe.id(),p=pe.ss(),g=pe.se(),x;pe.ip()&&(x=l(t.slice(h===-1?c-1:c,h===-1?f+1:f))),s.push({n:x,t:d,s:c,e:f,ss:p,se:g,d:h,a})}for(;pe.re();){let c=pe.es(),f=pe.ee(),d=pe.els(),a=pe.ele(),h=t.slice(c,f),p=h[0],g=d<0?void 0:t.slice(d,a),x=g?g[0]:"";i.push({s:c,e:f,ls:d,le:a,n:p==='"'||p==="'"?l(h):h,ln:x==='"'||x==="'"?l(g):g})}function l(c){try{return(0,eval)(c)}catch{}}return As(l,"k"),[s,i,!!pe.f(),!!pe.ms()]}function cd(t,e){let r=t.length,n=0;for(;n<r;){let o=t.charCodeAt(n);e[n++]=(255&o)<<8|o>>>8}}function ud(t,e){let r=t.length,n=0;for(;n<r;)e[n]=t.charCodeAt(n++)}var k0,As,fa,S0,pe,dd,da,md=xe(()=>{k0=Object.defineProperty,As=(t,e)=>k0(t,"name",{value:e,configurable:!0});(function(t){t[t.Static=1]="Static",t[t.Dynamic=2]="Dynamic",t[t.ImportMeta=3]="ImportMeta",t[t.StaticSourcePhase=4]="StaticSourcePhase",t[t.DynamicSourcePhase=5]="DynamicSourcePhase"})(fa||(fa={}));S0=new Uint8Array(new Uint16Array([1]).buffer)[0]===1;As(ma,"parse");As(cd,"Q");As(ud,"B");dd=WebAssembly.compile((da="AGFzbQEAAAABKwhgAX8Bf2AEf39/fwBgAAF/YAAAYAF/AGADf39/AX9gAn9/AX9gA39/fwADMTAAAQECAgICAgICAgICAgICAgICAgIAAwMDBAQAAAUAAAAAAAMDAwAGAAAABwAGAgUEBQFwAQEBBQMBAAEGDwJ/AUHA8gALfwBBwPIACwd6FQZtZW1vcnkCAAJzYQAAAWUAAwJpcwAEAmllAAUCc3MABgJzZQAHAml0AAgCYWkACQJpZAAKAmlwAAsCZXMADAJlZQANA2VscwAOA2VsZQAPAnJpABACcmUAEQFmABICbXMAEwVwYXJzZQAUC19faGVhcF9iYXNlAwEKm0EwaAEBf0EAIAA2AoAKQQAoAtwJIgEgAEEBdGoiAEEAOwEAQQAgAEECaiIANgKECkEAIAA2AogKQQBBADYC4AlBAEEANgLwCUEAQQA2AugJQQBBADYC5AlBAEEANgL4CUEAQQA2AuwJIAEL0wEBA39BACgC8AkhBEEAQQAoAogKIgU2AvAJQQAgBDYC9AlBACAFQSRqNgKICiAEQSBqQeAJIAQbIAU2AgBBACgC1AkhBEEAKALQCSEGIAUgATYCACAFIAA2AgggBSACIAJBAmpBACAGIANGIgAbIAQgA0YiBBs2AgwgBSADNgIUIAVBADYCECAFIAI2AgQgBUEANgIgIAVBA0EBQQIgABsgBBs2AhwgBUEAKALQCSADRiICOgAYAkACQCACDQBBACgC1AkgA0cNAQtBAEEBOgCMCgsLXgEBf0EAKAL4CSIEQRBqQeQJIAQbQQAoAogKIgQ2AgBBACAENgL4CUEAIARBFGo2AogKQQBBAToAjAogBEEANgIQIAQgAzYCDCAEIAI2AgggBCABNgIEIAQgADYCAAsIAEEAKAKQCgsVAEEAKALoCSgCAEEAKALcCWtBAXULHgEBf0EAKALoCSgCBCIAQQAoAtwJa0EBdUF/IAAbCxUAQQAoAugJKAIIQQAoAtwJa0EBdQseAQF/QQAoAugJKAIMIgBBACgC3AlrQQF1QX8gABsLCwBBACgC6AkoAhwLHgEBf0EAKALoCSgCECIAQQAoAtwJa0EBdUF/IAAbCzsBAX8CQEEAKALoCSgCFCIAQQAoAtAJRw0AQX8PCwJAIABBACgC1AlHDQBBfg8LIABBACgC3AlrQQF1CwsAQQAoAugJLQAYCxUAQQAoAuwJKAIAQQAoAtwJa0EBdQsVAEEAKALsCSgCBEEAKALcCWtBAXULHgEBf0EAKALsCSgCCCIAQQAoAtwJa0EBdUF/IAAbCx4BAX9BACgC7AkoAgwiAEEAKALcCWtBAXVBfyAAGwslAQF/QQBBACgC6AkiAEEgakHgCSAAGygCACIANgLoCSAAQQBHCyUBAX9BAEEAKALsCSIAQRBqQeQJIAAbKAIAIgA2AuwJIABBAEcLCABBAC0AlAoLCABBAC0AjAoL3Q0BBX8jAEGA0ABrIgAkAEEAQQE6AJQKQQBBACgC2Ak2ApwKQQBBACgC3AlBfmoiATYCsApBACABQQAoAoAKQQF0aiICNgK0CkEAQQA6AIwKQQBBADsBlgpBAEEAOwGYCkEAQQA6AKAKQQBBADYCkApBAEEAOgD8CUEAIABBgBBqNgKkCkEAIAA2AqgKQQBBADoArAoCQAJAAkACQANAQQAgAUECaiIDNgKwCiABIAJPDQECQCADLwEAIgJBd2pBBUkNAAJAAkACQAJAAkAgAkGbf2oOBQEICAgCAAsgAkEgRg0EIAJBL0YNAyACQTtGDQIMBwtBAC8BmAoNASADEBVFDQEgAUEEakGCCEEKEC8NARAWQQAtAJQKDQFBAEEAKAKwCiIBNgKcCgwHCyADEBVFDQAgAUEEakGMCEEKEC8NABAXC0EAQQAoArAKNgKcCgwBCwJAIAEvAQQiA0EqRg0AIANBL0cNBBAYDAELQQEQGQtBACgCtAohAkEAKAKwCiEBDAALC0EAIQIgAyEBQQAtAPwJDQIMAQtBACABNgKwCkEAQQA6AJQKCwNAQQAgAUECaiIDNgKwCgJAAkACQAJAAkACQAJAIAFBACgCtApPDQAgAy8BACICQXdqQQVJDQYCQAJAAkACQAJAAkACQAJAAkACQCACQWBqDgoQDwYPDw8PBQECAAsCQAJAAkACQCACQaB/ag4KCxISAxIBEhISAgALIAJBhX9qDgMFEQYJC0EALwGYCg0QIAMQFUUNECABQQRqQYIIQQoQLw0QEBYMEAsgAxAVRQ0PIAFBBGpBjAhBChAvDQ8QFwwPCyADEBVFDQ4gASkABELsgISDsI7AOVINDiABLwEMIgNBd2oiAUEXSw0MQQEgAXRBn4CABHFFDQwMDQtBAEEALwGYCiIBQQFqOwGYCkEAKAKkCiABQQN0aiIBQQE2AgAgAUEAKAKcCjYCBAwNC0EALwGYCiIDRQ0JQQAgA0F/aiIDOwGYCkEALwGWCiICRQ0MQQAoAqQKIANB
|
|
71
|
+
`),r=e.filter(s=>/^\t+/.test(s)),n=e.filter(s=>/^ {2,}/.test(s));if(r.length===0&&n.length===0)return null;if(r.length>=n.length)return" ";let o=n.reduce((s,i)=>{let l=/^ +/.exec(i)[0].length;return Math.min(l,s)},1/0);return new Array(o+1).join(" ")}function kd(t,e){let r=t.split(/[/\\]/),n=e.split(/[/\\]/);for(r.pop();r[0]===n[0];)r.shift(),n.shift();if(r.length){let o=r.length;for(;o--;)r[o]=".."}return r.concat(n).join("/")}function Sd(t){return N0.call(t)==="[object Object]"}function ga(t){let e=t.split(`
|
|
72
|
+
`),r=[];for(let n=0,o=0;n<e.length;n++)r.push(o),o+=e[n].length+1;return k(function(n){let o=0,s=r.length;for(;o<s;){let c=o+s>>1;n<r[c]?s=c:o=c+1}let i=o-1,l=n-r[i];return{line:i,column:l}},"locate")}function Td(t,e="@"){Oe=t,_d=e;let r=2*Oe.length+(2<<18);if(r>co||!$e){for(;r>co;)co*=2;ys=new ArrayBuffer(co),Ad(F0,new Uint16Array(ys,16,110)),$e=(function(i,l,c){var f=new i.Int8Array(c),d=new i.Int16Array(c),a=new i.Int32Array(c),h=new i.Uint8Array(c),p=new i.Uint16Array(c),g=1040;function x(){var u=0,m=0,y=0,b=0,L=0,te=0,Ee=0;Ee=g,g=g+10240|0,f[804]=1,f[803]=0,d[399]=0,d[400]=0,a[69]=a[2],f[805]=0,a[68]=0,f[802]=0,a[70]=Ee+2048,a[71]=Ee,f[806]=0,u=(a[3]|0)+-2|0,a[72]=u,m=u+(a[66]<<1)|0,a[73]=m;e:for(;;){if(y=u+2|0,a[72]=y,u>>>0>=m>>>0){b=18;break}t:do switch(d[y>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if(!(d[400]|0)&&Re(y)|0&&!(N(u+4|0,16,10)|0)&&(A(),(f[804]|0)==0)){b=9;break e}else b=17;break}case 105:{Re(y)|0&&!(N(u+4|0,26,10)|0)&&w(),b=17;break}case 59:{b=17;break}case 47:switch(d[u+4>>1]|0){case 47:{se();break t}case 42:{$(1);break t}default:{b=16;break e}}default:{b=16;break e}}while(!1);(b|0)==17&&(b=0,a[69]=a[72]),u=a[72]|0,m=a[73]|0}(b|0)==9?(u=a[72]|0,a[69]=u,b=19):(b|0)==16?(f[804]=0,a[72]=u,b=19):(b|0)==18&&(f[802]|0?u=0:(u=y,b=19));do if((b|0)==19){e:for(;;){if(m=u+2|0,a[72]=m,u>>>0>=(a[73]|0)>>>0){b=92;break}t:do switch(d[m>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{!(d[400]|0)&&Re(m)|0&&!(N(u+4|0,16,10)|0)&&A(),b=91;break}case 105:{Re(m)|0&&!(N(u+4|0,26,10)|0)&&w(),b=91;break}case 99:{Re(m)|0&&!(N(u+4|0,36,8)|0)&&dr(d[u+12>>1]|0)|0&&(f[806]=1),b=91;break}case 40:{y=a[70]|0,u=d[400]|0,b=u&65535,a[y+(b<<3)>>2]=1,m=a[69]|0,d[400]=u+1<<16>>16,a[y+(b<<3)+4>>2]=m,b=91;break}case 41:{if(m=d[400]|0,!(m<<16>>16)){b=36;break e}y=m+-1<<16>>16,d[400]=y,b=d[399]|0,m=b&65535,b<<16>>16&&(a[(a[70]|0)+((y&65535)<<3)>>2]|0)==5&&(m=a[(a[71]|0)+(m+-1<<2)>>2]|0,y=m+4|0,a[y>>2]|0||(a[y>>2]=(a[69]|0)+2),a[m+12>>2]=u+4,d[399]=b+-1<<16>>16),b=91;break}case 123:{b=a[69]|0,y=a[63]|0,u=b;do if((d[b>>1]|0)==41&(y|0)!=0&&(a[y+4>>2]|0)==(b|0))if(m=a[64]|0,a[63]=m,m){a[m+32>>2]=0;break}else{a[59]=0;break}while(!1);y=a[70]|0,m=d[400]|0,b=m&65535,a[y+(b<<3)>>2]=f[806]|0?6:2,d[400]=m+1<<16>>16,a[y+(b<<3)+4>>2]=u,f[806]=0,b=91;break}case 125:{if(u=d[400]|0,!(u<<16>>16)){b=49;break e}y=a[70]|0,b=u+-1<<16>>16,d[400]=b,(a[y+((b&65535)<<3)>>2]|0)==4&&B(),b=91;break}case 39:{I(39),b=91;break}case 34:{I(34),b=91;break}case 47:switch(d[u+4>>1]|0){case 47:{se();break t}case 42:{$(1);break t}default:{u=a[69]|0,m=d[u>>1]|0;r:do if(!(q(m)|0))m<<16>>16==41?(y=d[400]|0,be(a[(a[70]|0)+((y&65535)<<3)+4>>2]|0)|0||(b=65)):b=64;else switch(m<<16>>16){case 46:if(((d[u+-2>>1]|0)+-48&65535)<10){b=64;break r}else break r;case 43:if((d[u+-2>>1]|0)==43){b=64;break r}else break r;case 45:if((d[u+-2>>1]|0)==45){b=64;break r}else break r;default:break r}while(!1);(b|0)==64&&(y=d[400]|0,b=65);r:do if((b|0)==65){if(b=0,y<<16>>16&&(L=a[70]|0,te=(y&65535)+-1|0,m<<16>>16==102?(a[L+(te<<3)>>2]|0)==1:0)){if((d[u+-2>>1]|0)==111&&re(a[L+(te<<3)+4>>2]|0,44,3)|0)break}else b=69;if((b|0)==69&&m<<16>>16==125&&(b=a[70]|0,y=y&65535,P(a[b+(y<<3)+4>>2]|0)|0||(a[b+(y<<3)>>2]|0)==6))break;if(!(T(u)|0)){switch(m<<16>>16){case 0:break r;case 47:{if(f[805]|0)break r;break}default:}if(b=a[65]|0,b|0&&u>>>0>=(a[b>>2]|0)>>>0&&u>>>0<=(a[b+4>>2]|0)>>>0){Q(),f[805]=0,b=91;break t}y=a[3]|0;do{if(u>>>0<=y>>>0)break;u=u+-2|0,a[69]=u,m=d[u>>1]|0}while(!(le(m)|0));if(S(m)|0){do{if(u>>>0<=y>>>0)break;u=u+-2|0,a[69]=u}while(S(d[u>>1]|0)|0);if(J(u)|0){Q(),f[805]=0,b=91;break t}}f[805]=1,b=91;break t}}while(!1);Q(),f[805]=0,b=91;break t}}case 96:{y=a[70]|0,m=d[400]|0,b=m&65535,a[y+(b<<3)+4>>2]=a[69],d[400]=m+1<<16>>16,a[y+(b<<3)>>2]=3,B(),b=91;break}default:b=91}while(!1);(b|0)==91&&(b=0,a[69]=a[72]),u=a[72]|0}if((b|0)==36){nt(),u=0;break}else if((b|0)==49){nt(),u=0;break}else if((b|0)==92){u=f[802]|0?0:(d[399]|d[400])<<16>>16==0;break}}while(!1);return g=Ee,u|0}k(x,"b");function A(){var u=0,m=0,y=0,b=0,L=0,te=0,Ee=0,Br=0,Hi=0,zi=0,Xi=0,Zi=0,ve=0,Pe=0;Br=a[72]|0,Hi=a[65]|0,Pe=Br+12|0,a[72]=Pe,y=v(1)|0,u=a[72]|0,(u|0)==(Pe|0)&&!(U(y)|0)||(ve=3);e:do if((ve|0)==3){t:do switch(y<<16>>16){case 123:{for(a[72]=u+2,u=v(1)|0,m=a[72]|0;;){if(Jt(u)|0?(I(u),u=(a[72]|0)+2|0,a[72]=u):(ye(u)|0,u=a[72]|0),v(1)|0,u=j(m,u)|0,u<<16>>16==44&&(a[72]=(a[72]|0)+2,u=v(1)|0),u<<16>>16==125){ve=15;break}if(Pe=m,m=a[72]|0,(m|0)==(Pe|0)){ve=12;break}if(m>>>0>(a[73]|0)>>>0){ve=14;break}}if((ve|0)==12){nt();break e}else if((ve|0)==14){nt();break e}else if((ve|0)==15){f[803]=1,a[72]=(a[72]|0)+2;break t}break}case 42:{a[72]=u+2,v(1)|0,Pe=a[72]|0,j(Pe,Pe)|0;break}default:{switch(f[804]=0,y<<16>>16){case 100:{switch(Br=u+14|0,a[72]=Br,(v(1)|0)<<16>>16){case 97:{m=a[72]|0,!(N(m+2|0,72,8)|0)&&(L=m+10|0,S(d[L>>1]|0)|0)&&(a[72]=L,v(0)|0,ve=22);break}case 102:{ve=22;break}case 99:{m=a[72]|0,!(N(m+2|0,36,8)|0)&&(b=m+10|0,Pe=d[b>>1]|0,dr(Pe)|0|Pe<<16>>16==123)&&(a[72]=b,te=v(1)|0,te<<16>>16!=123)&&(Zi=te,ve=31);break}default:}r:do if((ve|0)==22&&(Ee=a[72]|0,(N(Ee+2|0,80,14)|0)==0)){if(y=Ee+16|0,m=d[y>>1]|0,!(dr(m)|0))switch(m<<16>>16){case 40:case 42:break;default:break r}a[72]=y,m=v(1)|0,m<<16>>16==42&&(a[72]=(a[72]|0)+2,m=v(1)|0),m<<16>>16!=40&&(Zi=m,ve=31)}while(!1);if((ve|0)==31&&(zi=a[72]|0,ye(Zi)|0,Xi=a[72]|0,Xi>>>0>zi>>>0)){oe(u,Br,zi,Xi),a[72]=(a[72]|0)+-2;break e}oe(u,Br,0,0),a[72]=u+12;break e}case 97:{a[72]=u+10,v(0)|0,u=a[72]|0,ve=35;break}case 102:{ve=35;break}case 99:{if(!(N(u+2|0,36,8)|0)&&(m=u+10|0,le(d[m>>1]|0)|0)){a[72]=m,Pe=v(1)|0,ve=a[72]|0,ye(Pe)|0,Pe=a[72]|0,oe(ve,Pe,ve,Pe),a[72]=(a[72]|0)+-2;break e}u=u+4|0,a[72]=u;break}case 108:case 118:break;default:break e}if((ve|0)==35){a[72]=u+16,u=v(1)|0,u<<16>>16==42&&(a[72]=(a[72]|0)+2,u=v(1)|0),ve=a[72]|0,ye(u)|0,Pe=a[72]|0,oe(ve,Pe,ve,Pe),a[72]=(a[72]|0)+-2;break e}a[72]=u+6,f[804]=0,y=v(1)|0,u=a[72]|0,y=(ye(y)|0|32)<<16>>16==123,b=a[72]|0,y&&(a[72]=b+2,Pe=v(1)|0,u=a[72]|0,ye(Pe)|0);r:for(;m=a[72]|0,(m|0)!=(u|0);){if(oe(u,m,u,m),m=v(1)|0,y)switch(m<<16>>16){case 93:case 125:break e;default:}if(u=a[72]|0,m<<16>>16!=44){ve=51;break}switch(a[72]=u+2,m=v(1)|0,u=a[72]|0,m<<16>>16){case 91:case 123:{ve=51;break r}default:}ye(m)|0}if((ve|0)==51&&(a[72]=u+-2),!y)break e;a[72]=b+-2;break e}}while(!1);if(Pe=(v(1)|0)<<16>>16==102,u=a[72]|0,Pe&&!(N(u+2|0,66,6)|0))for(a[72]=u+8,O(Br,v(1)|0,0),u=Hi|0?Hi+16|0:240;;){if(u=a[u>>2]|0,!u)break e;a[u+12>>2]=0,a[u+8>>2]=0,u=u+16|0}a[72]=u+-2}while(!1)}k(A,"k");function w(){var u=0,m=0,y=0,b=0,L=0,te=0,Ee=0;L=a[72]|0,y=L+12|0,a[72]=y,b=v(1)|0,m=a[72]|0;e:do if(b<<16>>16!=46)b<<16>>16==115&m>>>0>y>>>0?!(N(m+2|0,56,10)|0)&&(u=m+12|0,dr(d[u>>1]|0)|0)?te=14:(m=6,y=0,te=46):(u=b,y=0,te=15);else switch(a[72]=m+2,(v(1)|0)<<16>>16){case 109:{if(u=a[72]|0,N(u+2|0,50,6)|0||(m=a[69]|0,!(He(m)|0)&&(d[m>>1]|0)==46))break e;C(L,L,u+8|0,2);break e}case 115:{if(u=a[72]|0,N(u+2|0,56,10)|0||(m=a[69]|0,!(He(m)|0)&&(d[m>>1]|0)==46))break e;u=u+12|0,te=14;break e}default:break e}while(!1);(te|0)==14&&(a[72]=u,u=v(1)|0,y=1,te=15);e:do if((te|0)==15)switch(u<<16>>16){case 40:{if(m=a[70]|0,Ee=d[400]|0,b=Ee&65535,a[m+(b<<3)>>2]=5,u=a[72]|0,d[400]=Ee+1<<16>>16,a[m+(b<<3)+4>>2]=u,(d[a[69]>>1]|0)==46)break e;switch(a[72]=u+2,m=v(1)|0,C(L,a[72]|0,0,u),y?(u=a[63]|0,a[u+28>>2]=5):u=a[63]|0,L=a[71]|0,Ee=d[399]|0,d[399]=Ee+1<<16>>16,a[L+((Ee&65535)<<2)>>2]=u,m<<16>>16){case 39:{I(39);break}case 34:{I(34);break}default:{a[72]=(a[72]|0)+-2;break e}}switch(u=(a[72]|0)+2|0,a[72]=u,(v(1)|0)<<16>>16){case 44:{a[72]=(a[72]|0)+2,v(1)|0,L=a[63]|0,a[L+4>>2]=u,Ee=a[72]|0,a[L+16>>2]=Ee,f[L+24>>0]=1,a[72]=Ee+-2;break e}case 41:{d[400]=(d[400]|0)+-1<<16>>16,Ee=a[63]|0,a[Ee+4>>2]=u,a[Ee+12>>2]=(a[72]|0)+2,f[Ee+24>>0]=1,d[399]=(d[399]|0)+-1<<16>>16;break e}default:{a[72]=(a[72]|0)+-2;break e}}}case 123:{if(y){m=12,y=1,te=46;break e}if(u=a[72]|0,d[400]|0){a[72]=u+-2;break e}for(;!(u>>>0>=(a[73]|0)>>>0);){if(u=v(1)|0,Jt(u)|0)I(u);else if(u<<16>>16==125){te=36;break}u=(a[72]|0)+2|0,a[72]=u}if((te|0)==36&&(a[72]=(a[72]|0)+2),Ee=(v(1)|0)<<16>>16==102,u=a[72]|0,Ee&&N(u+2|0,66,6)|0){nt();break e}if(a[72]=u+8,u=v(1)|0,Jt(u)|0){O(L,u,0);break e}else{nt();break e}}default:{if(y){m=12,y=1,te=46;break e}switch(u<<16>>16){case 42:case 39:case 34:{y=0,te=48;break e}default:{m=6,y=0,te=46;break e}}}}while(!1);(te|0)==46&&(u=a[72]|0,(u|0)==(L+(m<<1)|0)?a[72]=u+-2:te=48);do if((te|0)==48){if(d[400]|0){a[72]=(a[72]|0)+-2;break}for(u=a[73]|0,m=a[72]|0;;){if(m>>>0>=u>>>0){te=55;break}if(b=d[m>>1]|0,Jt(b)|0){te=53;break}Ee=m+2|0,a[72]=Ee,m=Ee}if((te|0)==53){O(L,b,y);break}else if((te|0)==55){nt();break}}while(!1)}k(w,"l");function O(u,m,y){u=u|0,m=m|0,y=y|0;var b=0,L=0;switch(b=(a[72]|0)+2|0,m<<16>>16){case 39:{I(39),L=5;break}case 34:{I(34),L=5;break}default:nt()}do if((L|0)==5){if(C(u,b,a[72]|0,1),y&&(a[(a[63]|0)+28>>2]=4),a[72]=(a[72]|0)+2,m=v(0)|0,y=m<<16>>16==97,y?(b=a[72]|0,N(b+2|0,94,10)|0&&(L=13)):(b=a[72]|0,m<<16>>16==119&&(d[b+2>>1]|0)==105&&(d[b+4>>1]|0)==116&&(d[b+6>>1]|0)==104||(L=13)),(L|0)==13){a[72]=b+-2;break}if(a[72]=b+((y?6:4)<<1),(v(1)|0)<<16>>16!=123){a[72]=b;break}y=a[72]|0,m=y;e:for(;;){switch(a[72]=m+2,m=v(1)|0,m<<16>>16){case 39:{I(39),a[72]=(a[72]|0)+2,m=v(1)|0;break}case 34:{I(34),a[72]=(a[72]|0)+2,m=v(1)|0;break}default:m=ye(m)|0}if(m<<16>>16!=58){L=22;break}switch(a[72]=(a[72]|0)+2,(v(1)|0)<<16>>16){case 39:{I(39);break}case 34:{I(34);break}default:{L=26;break e}}switch(a[72]=(a[72]|0)+2,(v(1)|0)<<16>>16){case 125:{L=31;break e}case 44:break;default:{L=30;break e}}if(a[72]=(a[72]|0)+2,(v(1)|0)<<16>>16==125){L=31;break}m=a[72]|0}if((L|0)==22){a[72]=b;break}else if((L|0)==26){a[72]=b;break}else if((L|0)==30){a[72]=b;break}else if((L|0)==31){L=a[63]|0,a[L+16>>2]=y,a[L+12>>2]=(a[72]|0)+2;break}}while(!1)}k(O,"u");function T(u){u=u|0;e:do switch(d[u>>1]|0){case 100:switch(d[u+-2>>1]|0){case 105:{u=re(u+-4|0,104,2)|0;break e}case 108:{u=re(u+-4|0,108,3)|0;break e}default:{u=0;break e}}case 101:switch(d[u+-2>>1]|0){case 115:switch(d[u+-4>>1]|0){case 108:{u=ae(u+-6|0,101)|0;break e}case 97:{u=ae(u+-6|0,99)|0;break e}default:{u=0;break e}}case 116:{u=re(u+-4|0,114,4)|0;break e}case 117:{u=re(u+-4|0,122,6)|0;break e}default:{u=0;break e}}case 102:{if((d[u+-2>>1]|0)==111&&(d[u+-4>>1]|0)==101)switch(d[u+-6>>1]|0){case 99:{u=re(u+-8|0,134,6)|0;break e}case 112:{u=re(u+-8|0,146,2)|0;break e}default:{u=0;break e}}else u=0;break}case 107:{u=re(u+-2|0,150,4)|0;break}case 110:{u=u+-2|0,ae(u,105)|0?u=1:u=re(u,158,5)|0;break}case 111:{u=ae(u+-2|0,100)|0;break}case 114:{u=re(u+-2|0,168,7)|0;break}case 116:{u=re(u+-2|0,182,4)|0;break}case 119:switch(d[u+-2>>1]|0){case 101:{u=ae(u+-4|0,110)|0;break e}case 111:{u=re(u+-4|0,190,3)|0;break e}default:{u=0;break e}}default:u=0}while(!1);return u|0}k(T,"o");function B(){var u=0,m=0,y=0,b=0;m=a[73]|0,y=a[72]|0;e:for(;;){if(u=y+2|0,y>>>0>=m>>>0){m=10;break}switch(d[u>>1]|0){case 96:{m=7;break e}case 36:{if((d[y+4>>1]|0)==123){m=6;break e}break}case 92:{u=y+4|0;break}default:}y=u}(m|0)==6?(u=y+4|0,a[72]=u,m=a[70]|0,b=d[400]|0,y=b&65535,a[m+(y<<3)>>2]=4,d[400]=b+1<<16>>16,a[m+(y<<3)+4>>2]=u):(m|0)==7?(a[72]=u,y=a[70]|0,b=(d[400]|0)+-1<<16>>16,d[400]=b,(a[y+((b&65535)<<3)>>2]|0)!=3&&nt()):(m|0)==10&&(a[72]=u,nt())}k(B,"h");function v(u){u=u|0;var m=0,y=0,b=0;y=a[72]|0;e:do{m=d[y>>1]|0;t:do if(m<<16>>16!=47)if(u){if(dr(m)|0)break;break e}else{if(S(m)|0)break;break e}else switch(d[y+2>>1]|0){case 47:{se();break t}case 42:{$(u);break t}default:{m=47;break e}}while(!1);b=a[72]|0,y=b+2|0,a[72]=y}while(b>>>0<(a[73]|0)>>>0);return m|0}k(v,"w");function C(u,m,y,b){u=u|0,m=m|0,y=y|0,b=b|0;var L=0,te=0;te=a[67]|0,a[67]=te+36,L=a[63]|0,a[(L|0?L+32|0:236)>>2]=te,a[64]=L,a[63]=te,a[te+8>>2]=u,(b|0)==2?(u=3,L=y):(L=(b|0)==1,u=L?1:2,L=L?y+2|0:0),a[te+12>>2]=L,a[te+28>>2]=u,a[te>>2]=m,a[te+4>>2]=y,a[te+16>>2]=0,a[te+20>>2]=b,m=(b|0)==1,f[te+24>>0]=m&1,a[te+32>>2]=0,m|(b|0)==2&&(f[803]=1)}k(C,"d");function I(u){u=u|0;var m=0,y=0,b=0,L=0;for(L=a[73]|0,m=a[72]|0;;){if(b=m+2|0,m>>>0>=L>>>0){m=9;break}if(y=d[b>>1]|0,y<<16>>16==u<<16>>16){m=10;break}if(y<<16>>16==92)y=m+4|0,(d[y>>1]|0)==13?(m=m+6|0,m=(d[m>>1]|0)==10?m:y):m=y;else if(K(y)|0){m=9;break}else m=b}(m|0)==9?(a[72]=b,nt()):(m|0)==10&&(a[72]=b)}k(I,"v");function j(u,m){u=u|0,m=m|0;var y=0,b=0,L=0,te=0;return y=a[72]|0,b=d[y>>1]|0,te=(u|0)==(m|0),L=te?0:u,te=te?0:m,b<<16>>16==97&&(a[72]=y+4,y=v(1)|0,u=a[72]|0,Jt(y)|0?(I(y),m=(a[72]|0)+2|0,a[72]=m):(ye(y)|0,m=a[72]|0),b=v(1)|0,y=a[72]|0),(y|0)!=(u|0)&&oe(u,m,L,te),b|0}k(j,"A");function F(){var u=0,m=0,y=0;y=a[73]|0,m=a[72]|0;e:for(;;){if(u=m+2|0,m>>>0>=y>>>0){m=6;break}switch(d[u>>1]|0){case 13:case 10:{m=6;break e}case 93:{m=7;break e}case 92:{u=m+4|0;break}default:}m=u}return(m|0)==6?(a[72]=u,nt(),u=0):(m|0)==7&&(a[72]=u,u=93),u|0}k(F,"C");function Q(){var u=0,m=0,y=0;e:for(;;){if(u=a[72]|0,m=u+2|0,a[72]=m,u>>>0>=(a[73]|0)>>>0){y=7;break}switch(d[m>>1]|0){case 13:case 10:{y=7;break e}case 47:break e;case 91:{F()|0;break}case 92:{a[72]=u+4;break}default:}}(y|0)==7&&nt()}k(Q,"g");function P(u){switch(u=u|0,d[u>>1]|0){case 62:{u=(d[u+-2>>1]|0)==61;break}case 41:case 59:{u=1;break}case 104:{u=re(u+-2|0,210,4)|0;break}case 121:{u=re(u+-2|0,218,6)|0;break}case 101:{u=re(u+-2|0,230,3)|0;break}default:u=0}return u|0}k(P,"p");function $(u){u=u|0;var m=0,y=0,b=0,L=0,te=0;for(L=(a[72]|0)+2|0,a[72]=L,y=a[73]|0;m=L+2|0,!(L>>>0>=y>>>0||(b=d[m>>1]|0,!u&&K(b)|0));){if(b<<16>>16==42&&(d[L+4>>1]|0)==47){te=8;break}L=m}(te|0)==8&&(a[72]=m,m=L+4|0),a[72]=m}k($,"y");function N(u,m,y){u=u|0,m=m|0,y=y|0;var b=0,L=0;e:do if(!y)u=0;else{for(;b=f[u>>0]|0,L=f[m>>0]|0,b<<24>>24==L<<24>>24;)if(y=y+-1|0,y)u=u+1|0,m=m+1|0;else{u=0;break e}u=(b&255)-(L&255)|0}while(!1);return u|0}k(N,"m");function U(u){u=u|0;e:do switch(u<<16>>16){case 38:case 37:case 33:{u=1;break}default:if((u&-8)<<16>>16==40|(u+-58&65535)<6)u=1;else{switch(u<<16>>16){case 91:case 93:case 94:{u=1;break e}default:}u=(u+-123&65535)<4}}while(!1);return u|0}k(U,"I");function q(u){u=u|0;e:do switch(u<<16>>16){case 38:case 37:case 33:break;default:if(!((u+-58&65535)<6|(u+-40&65535)<7&u<<16>>16!=41)){switch(u<<16>>16){case 91:case 94:break e;default:}return u<<16>>16!=125&(u+-123&65535)<4|0}}while(!1);return 1}k(q,"U");function H(u){u=u|0;var m=0;m=d[u>>1]|0;e:do if((m+-9&65535)>=5){switch(m<<16>>16){case 160:case 32:{m=1;break e}default:}if(U(m)|0)return m<<16>>16!=46|(He(u)|0)|0;m=0}else m=1;while(!1);return m|0}k(H,"x");function z(u){u=u|0;var m=0,y=0,b=0,L=0;return y=g,g=g+16|0,b=y,a[b>>2]=0,a[66]=u,m=a[3]|0,L=m+(u<<1)|0,u=L+2|0,d[L>>1]=0,a[b>>2]=u,a[67]=u,a[59]=0,a[63]=0,a[61]=0,a[60]=0,a[65]=0,a[62]=0,g=y,m|0}k(z,"S");function oe(u,m,y,b){u=u|0,m=m|0,y=y|0,b=b|0;var L=0,te=0;L=a[67]|0,a[67]=L+20,te=a[65]|0,a[(te|0?te+16|0:240)>>2]=L,a[65]=L,a[L>>2]=u,a[L+4>>2]=m,a[L+8>>2]=y,a[L+12>>2]=b,a[L+16>>2]=0,f[803]=1}k(oe,"O");function re(u,m,y){u=u|0,m=m|0,y=y|0;var b=0,L=0;return b=u+(0-y<<1)|0,L=b+2|0,u=a[3]|0,L>>>0>=u>>>0&&!(N(L,m,y<<1)|0)?(L|0)==(u|0)?u=1:u=H(b)|0:u=0,u|0}k(re,"$");function J(u){switch(u=u|0,d[u>>1]|0){case 107:{u=re(u+-2|0,150,4)|0;break}case 101:{(d[u+-2>>1]|0)==117?u=re(u+-4|0,122,6)|0:u=0;break}default:u=0}return u|0}k(J,"j");function ae(u,m){u=u|0,m=m|0;var y=0;return y=a[3]|0,y>>>0<=u>>>0&&(d[u>>1]|0)==m<<16>>16?(y|0)==(u|0)?y=1:y=le(d[u+-2>>1]|0)|0:y=0,y|0}k(ae,"B");function le(u){u=u|0;e:do if((u+-9&65535)<5)u=1;else{switch(u<<16>>16){case 32:case 160:{u=1;break e}default:}u=u<<16>>16!=46&(U(u)|0)}while(!1);return u|0}k(le,"E");function se(){var u=0,m=0,y=0;u=a[73]|0,y=a[72]|0;e:for(;m=y+2|0,!(y>>>0>=u>>>0);)switch(d[m>>1]|0){case 13:case 10:break e;default:y=m}a[72]=m}k(se,"P");function ye(u){for(u=u|0;!(dr(u)|0||U(u)|0);)if(u=(a[72]|0)+2|0,a[72]=u,u=d[u>>1]|0,!(u<<16>>16)){u=0;break}return u|0}k(ye,"q");function we(){var u=0;switch(u=a[(a[61]|0)+20>>2]|0,u|0){case 1:{u=-1;break}case 2:{u=-2;break}default:u=u-(a[3]|0)>>1}return u|0}k(we,"z");function be(u){return u=u|0,!(re(u,196,5)|0)&&!(re(u,44,3)|0)?u=re(u,206,2)|0:u=1,u|0}k(be,"D");function S(u){switch(u=u|0,u<<16>>16){case 160:case 32:case 12:case 11:case 9:{u=1;break}default:u=0}return u|0}k(S,"F");function He(u){return u=u|0,(d[u>>1]|0)==46&&(d[u+-2>>1]|0)==46?u=(d[u+-4>>1]|0)==46:u=0,u|0}k(He,"G");function Re(u){return u=u|0,(a[3]|0)==(u|0)?u=1:u=H(u+-2|0)|0,u|0}k(Re,"H");function rt(){var u=0;return u=a[(a[62]|0)+12>>2]|0,u?u=u-(a[3]|0)>>1:u=-1,u|0}k(rt,"J");function ut(){var u=0;return u=a[(a[61]|0)+12>>2]|0,u?u=u-(a[3]|0)>>1:u=-1,u|0}k(ut,"K");function qe(){var u=0;return u=a[(a[62]|0)+8>>2]|0,u?u=u-(a[3]|0)>>1:u=-1,u|0}k(qe,"L");function Ft(){var u=0;return u=a[(a[61]|0)+16>>2]|0,u?u=u-(a[3]|0)>>1:u=-1,u|0}k(Ft,"M");function $t(){var u=0;return u=a[(a[61]|0)+4>>2]|0,u?u=u-(a[3]|0)>>1:u=-1,u|0}k($t,"N");function ur(){var u=0;return u=a[61]|0,u=a[(u|0?u+32|0:236)>>2]|0,a[61]=u,(u|0)!=0|0}k(ur,"Q");function cn(){var u=0;return u=a[62]|0,u=a[(u|0?u+16|0:240)>>2]|0,a[62]=u,(u|0)!=0|0}k(cn,"R");function nt(){f[802]=1,a[68]=(a[72]|0)-(a[3]|0)>>1,a[72]=(a[73]|0)+2}k(nt,"T");function dr(u){return u=u|0,(u|128)<<16>>16==160|(u+-9&65535)<5|0}k(dr,"V");function Jt(u){return u=u|0,u<<16>>16==39|u<<16>>16==34|0}k(Jt,"W");function rs(){return(a[(a[61]|0)+8>>2]|0)-(a[3]|0)>>1|0}k(rs,"X");function M(){return(a[(a[62]|0)+4>>2]|0)-(a[3]|0)>>1|0}k(M,"Y");function K(u){return u=u|0,u<<16>>16==13|u<<16>>16==10|0}k(K,"Z");function me(){return(a[a[61]>>2]|0)-(a[3]|0)>>1|0}k(me,"_");function Ue(){return(a[a[62]>>2]|0)-(a[3]|0)>>1|0}k(Ue,"ee");function G(){return h[(a[61]|0)+24>>0]|0|0}k(G,"ae");function At(u){u=u|0,a[3]=u}k(At,"re");function ue(){return a[(a[61]|0)+28>>2]|0}k(ue,"ie");function Qe(){return(f[803]|0)!=0|0}k(Qe,"se");function R(){return(f[804]|0)!=0|0}k(R,"fe");function V(){return a[68]|0}k(V,"te");function ce(u){return u=u|0,g=u+992+15&-16,992}return k(ce,"ce"),{su:ce,ai:Ft,e:V,ee:M,ele:rt,els:qe,es:Ue,f:R,id:we,ie:$t,ip:G,is:me,it:ue,ms:Qe,p:x,re:cn,ri:ur,sa:z,se:ut,ses:At,ss:rs}})(typeof self<"u"?self:global,{},ys),ha=$e.su(co-(2<<17))}let n=Oe.length+1;$e.ses(ha),$e.sa(n-1),Ad(Oe,new Uint16Array(ys,ha,n)),$e.p()||(ge=$e.e(),Xt());let o=[],s=[];for(;$e.ri();){let i=$e.is(),l=$e.ie(),c=$e.ai(),f=$e.id(),d=$e.ss(),a=$e.se(),h=$e.it(),p;$e.ip()&&(p=ws(f===-1?i:i+1,Oe.charCodeAt(f===-1?i-1:i))),o.push({t:h,n:p,s:i,e:l,ss:d,se:a,d:f,a:c})}for(;$e.re();){let i=$e.es(),l=$e.ee(),c=$e.els(),f=$e.ele(),d=Oe.charCodeAt(i),a=c>=0?Oe.charCodeAt(c):-1;s.push({s:i,e:l,ls:c,le:f,n:d===34||d===39?ws(i+1,d):Oe.slice(i,l),ln:c<0?void 0:a===34||a===39?ws(c+1,a):Oe.slice(c,f)})}return[o,s,!!$e.f(),!!$e.ms()]}function ws(t,e){ge=t;let r="",n=ge;for(;;){ge>=Oe.length&&Xt();let o=Oe.charCodeAt(ge);if(o===e)break;o===92?(r+=Oe.slice(n,ge),r+=Id(),n=ge):(o===8232||o===8233||Ba(o)&&Xt(),++ge)}return r+=Oe.slice(n,ge++),r}function Id(){let t=Oe.charCodeAt(++ge);switch(++ge,t){case 110:return`
|
|
73
|
+
`;case 114:return"\r";case 120:return String.fromCharCode(bs(2));case 117:return(function(){let e=Oe.charCodeAt(ge),r;return e===123?(++ge,r=bs(Oe.indexOf("}",ge)-ge),++ge,r>1114111&&Xt()):r=bs(4),r<=65535?String.fromCharCode(r):(r-=65536,String.fromCharCode(55296+(r>>10),56320+(1023&r)))})();case 116:return" ";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:Oe.charCodeAt(ge)===10&&++ge;case 10:return"";case 56:case 57:Xt();default:if(t>=48&&t<=55){let e=Oe.substr(ge-1,3).match(/^[0-7]+/)[0],r=parseInt(e,8);return r>255&&(e=e.slice(0,-1),r=parseInt(e,8)),ge+=e.length-1,t=Oe.charCodeAt(ge),e==="0"&&t!==56&&t!==57||Xt(),String.fromCharCode(r)}return Ba(t)?"":String.fromCharCode(t)}}function bs(t){let e=ge,r=0,n=0;for(let o=0;o<t;++o,++ge){let s,i=Oe.charCodeAt(ge);if(i!==95){if(i>=97)s=i-97+10;else if(i>=65)s=i-65+10;else{if(!(i>=48&&i<=57))break;s=i-48}if(s>=16)break;n=i,r=16*r+s}else n!==95&&o!==0||Xt(),n=i}return n!==95&&ge-e===t||Xt(),r}function Ba(t){return t===13||t===10}function Xt(){throw Object.assign(Error(`Parse error ${_d}:${Oe.slice(0,ge).split(`
|
|
74
|
+
`).length}:${ge-Oe.lastIndexOf(`
|
|
75
|
+
`,ge-1)}`),{idx:ge})}function $d(t){let e=new Int32Array(5),r=[],n=0;do{let o=Od(t,n),s=[],i=!0,l=0;e[0]=0;for(let c=n;c<o;c++){let f;c=gn(t,c,e,0);let d=e[0];d<l&&(i=!1),l=d,Ea(t,c,o)?(c=gn(t,c,e,1),c=gn(t,c,e,2),c=gn(t,c,e,3),Ea(t,c,o)?(c=gn(t,c,e,4),f=[d,e[1],e[2],e[3],e[4]]):f=[d,e[1],e[2],e[3]]):f=[d],s.push(f)}i||Ld(s),r.push(s),n=o+1}while(n<=t.length);return r}function Od(t,e){let r=t.indexOf(";",e);return r===-1?t.length:r}function gn(t,e,r,n){let o=0,s=0,i=0;do{let c=t.charCodeAt(e++);i=Pd[c],o|=(i&31)<<s,s+=5}while(i&32);let l=o&1;return o>>>=1,l&&(o=-2147483648|-o),r[n]+=o,e}function Ea(t,e,r){return e>=r?!1:t.charCodeAt(e)!==Bd}function Ld(t){t.sort(Qd)}function Qd(t,e){return t[0]-e[0]}function Dd(t){let e=new Int32Array(5),r=1024*16,n=r-36,o=new Uint8Array(r),s=o.subarray(0,n),i=0,l="";for(let c=0;c<t.length;c++){let f=t[c];if(c>0&&(i===r&&(l+=pa.decode(o),i=0),o[i++]=K0),f.length!==0){e[0]=0;for(let d=0;d<f.length;d++){let a=f[d];i>n&&(l+=pa.decode(s),o.copyWithin(0,n,i),i-=n),d>0&&(o[i++]=Bd),i=An(o,i,e,a,0),a.length!==1&&(i=An(o,i,e,a,1),i=An(o,i,e,a,2),i=An(o,i,e,a,3),a.length!==4&&(i=An(o,i,e,a,4)))}}}return l+pa.decode(o.subarray(0,i))}function An(t,e,r,n,o){let s=n[o],i=s-r[o];r[o]=s,i=i<0?-i<<1|1:i<<1;do{let l=i&31;i>>>=5,i>0&&(l|=32),t[e++]=Rd[l]}while(i>0);return e}function Nd(t){return W0.test(t)}function Md(t){return t.startsWith("
|
|
76
|
+
Did you specify these with the most recent transformation maps first?`);let o=Ka(n,e,"",0);for(let s=r.length-1;s>=0;s--)o=Ua(r[s],[o]);return o}function Ka(t,e,r,n){let{resolvedSources:o,sourcesContent:s,ignoreList:i}=t,l=n+1,c=o.map((f,d)=>{let a={importer:r,depth:l,source:f||"",content:void 0,ignore:void 0},h=e(a.source,a),{source:p,content:g,ignore:x}=a;if(h)return Ka(new Cs(h,p),e,p,l);let A=g!==void 0?g:s?s[d]:null,w=x!==void 0?x:i?i.includes(d):!1;return pf(p,A,w)});return Ua(t,c)}function Wa(t,e,r){let n={excludeContent:!!r,decodedMappings:!1},o=yf(t,e);return new Ta(gf(o),n)}var Zt,_0,k,Ia,P0,$0,hd,Ed,O0,pd,gd,L0,Es,xs,Q0,D0,N0,M0,Aa,lo,hn,ya,$e,ys,ha,co,Ad,F0,Oe,_d,ge,wa,ks,mo,Ra,U0,j0,mr,Pa,yd,wd,ba,wn,Bd,K0,bd,Rd,Pd,pa,W0,G0,q0,Ur,vs,Cs,fo,V0,H0,z0,X0,Z0,nf,Sa,ty,hf,ry,Ta,wf,ny,oy,sy,iy,Ga,qa,Ja,ay,jr,Ya,bf,Ss=xe(()=>{Zt=ta(ua(),1);to();ss();_0=Object.defineProperty,k=(t,e)=>_0(t,"name",{value:e,configurable:!0}),Ia=k(t=>B0.createHash("sha1").update(t).digest("hex"),"sha1"),P0=44,$0=59,hd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Ed=new Uint8Array(64),O0=new Uint8Array(128);for(let t=0;t<hd.length;t++){let e=hd.charCodeAt(t);Ed[t]=e,O0[e]=t}k(pn,"encodeInteger$1");pd=1024*16,gd=typeof TextDecoder<"u"?new TextDecoder:typeof Buffer<"u"?{decode(t){return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString()}}:{decode(t){let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e}},L0=class{static{k(this,"StringWriter")}constructor(){this.pos=0,this.out="",this.buffer=new Uint8Array(pd)}write(t){let{buffer:e}=this;e[this.pos++]=t,this.pos===pd&&(this.out+=gd.decode(e),this.pos=0)}flush(){let{buffer:t,out:e,pos:r}=this;return r>0?e+gd.decode(t.subarray(0,r)):e}};k(xd,"encode$1");Es=class t{static{k(this,"BitSet")}constructor(e){this.bits=e instanceof t?e.bits.slice():[]}add(e){this.bits[e>>5]|=1<<(e&31)}has(e){return!!(this.bits[e>>5]&1<<(e&31))}},xs=class t{static{k(this,"Chunk")}constructor(e,r,n){this.start=e,this.end=r,this.original=n,this.intro="",this.outro="",this.content=n,this.storeName=!1,this.edited=!1,this.previous=null,this.next=null}appendLeft(e){this.outro+=e}appendRight(e){this.intro=this.intro+e}clone(){let e=new t(this.start,this.end,this.original);return e.intro=this.intro,e.outro=this.outro,e.content=this.content,e.storeName=this.storeName,e.edited=this.edited,e}contains(e){return this.start<e&&e<this.end}eachNext(e){let r=this;for(;r;)e(r),r=r.next}eachPrevious(e){let r=this;for(;r;)e(r),r=r.previous}edit(e,r,n){return this.content=e,n||(this.intro="",this.outro=""),this.storeName=r,this.edited=!0,this}prependLeft(e){this.outro=e+this.outro}prependRight(e){this.intro=e+this.intro}reset(){this.intro="",this.outro="",this.edited&&(this.content=this.original,this.storeName=!1,this.edited=!1)}split(e){let r=e-this.start,n=this.original.slice(0,r),o=this.original.slice(r);this.original=n;let s=new t(e,this.end,o);return s.outro=this.outro,this.outro="",this.end=e,this.edited?(s.edit("",!1),this.content=""):this.content=n,s.next=this.next,s.next&&(s.next.previous=s),s.previous=this,this.next=s,s}toString(){return this.intro+this.content+this.outro}trimEnd(e){if(this.outro=this.outro.replace(e,""),this.outro.length)return!0;let r=this.content.replace(e,"");if(r.length)return r!==this.content&&(this.split(this.start+r.length).edit("",void 0,!0),this.edited&&this.edit(r,this.storeName,!0)),!0;if(this.edit("",void 0,!0),this.intro=this.intro.replace(e,""),this.intro.length)return!0}trimStart(e){if(this.intro=this.intro.replace(e,""),this.intro.length)return!0;let r=this.content.replace(e,"");if(r.length){if(r!==this.content){let n=this.split(this.end-r.length);this.edited&&n.edit(r,this.storeName,!0),this.edit("",void 0,!0)}return!0}else if(this.edit("",void 0,!0),this.outro=this.outro.replace(e,""),this.outro.length)return!0}};k(vd,"getBtoa");Q0=vd(),D0=class{static{k(this,"SourceMap")}constructor(t){this.version=3,this.file=t.file,this.sources=t.sources,this.sourcesContent=t.sourcesContent,this.names=t.names,this.mappings=xd(t.mappings),typeof t.x_google_ignoreList<"u"&&(this.x_google_ignoreList=t.x_google_ignoreList),typeof t.debugId<"u"&&(this.debugId=t.debugId)}toString(){return JSON.stringify(this)}toUrl(){return"data:application/json;charset=utf-8;base64,"+Q0(this.toString())}};k(Cd,"guessIndent");k(kd,"getRelativePath");N0=Object.prototype.toString;k(Sd,"isObject");k(ga,"getLocator");M0=/\w/,Aa=class{static{k(this,"Mappings")}constructor(e){this.hires=e,this.generatedCodeLine=0,this.generatedCodeColumn=0,this.raw=[],this.rawSegments=this.raw[this.generatedCodeLine]=[],this.pending=null}addEdit(e,r,n,o){if(r.length){let s=r.length-1,i=r.indexOf(`
|
|
77
|
+
`,0),l=-1;for(;i>=0&&s>i;){let f=[this.generatedCodeColumn,e,n.line,n.column];o>=0&&f.push(o),this.rawSegments.push(f),this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,l=i,i=r.indexOf(`
|
|
78
|
+
`,i+1)}let c=[this.generatedCodeColumn,e,n.line,n.column];o>=0&&c.push(o),this.rawSegments.push(c),this.advance(r.slice(l+1))}else this.pending&&(this.rawSegments.push(this.pending),this.advance(r));this.pending=null}addUneditedChunk(e,r,n,o,s){let i=r.start,l=!0,c=!1;for(;i<r.end;){if(n[i]===`
|
|
79
|
+
`)o.line+=1,o.column=0,this.generatedCodeLine+=1,this.raw[this.generatedCodeLine]=this.rawSegments=[],this.generatedCodeColumn=0,l=!0,c=!1;else{if(this.hires||l||s.has(i)){let f=[this.generatedCodeColumn,e,o.line,o.column];this.hires==="boundary"?M0.test(n[i])?c||(this.rawSegments.push(f),c=!0):(this.rawSegments.push(f),c=!1):this.rawSegments.push(f)}o.column+=1,this.generatedCodeColumn+=1,l=!1}i+=1}this.pending=null}advance(e){if(!e)return;let r=e.split(`
|
|
80
|
+
`);if(r.length>1){for(let n=0;n<r.length-1;n++)this.generatedCodeLine++,this.raw[this.generatedCodeLine]=this.rawSegments=[];this.generatedCodeColumn=0}this.generatedCodeColumn+=r[r.length-1].length}},lo=`
|
|
81
|
+
`,hn={insertLeft:!1,insertRight:!1,storeName:!1},ya=class t{static{k(this,"MagicString")}constructor(e,r={}){let n=new xs(0,e.length,e);Object.defineProperties(this,{original:{writable:!0,value:e},outro:{writable:!0,value:""},intro:{writable:!0,value:""},firstChunk:{writable:!0,value:n},lastChunk:{writable:!0,value:n},lastSearchedChunk:{writable:!0,value:n},byStart:{writable:!0,value:{}},byEnd:{writable:!0,value:{}},filename:{writable:!0,value:r.filename},indentExclusionRanges:{writable:!0,value:r.indentExclusionRanges},sourcemapLocations:{writable:!0,value:new Es},storedNames:{writable:!0,value:{}},indentStr:{writable:!0,value:void 0},ignoreList:{writable:!0,value:r.ignoreList},offset:{writable:!0,value:r.offset||0}}),this.byStart[0]=n,this.byEnd[e.length]=n}addSourcemapLocation(e){this.sourcemapLocations.add(e)}append(e){if(typeof e!="string")throw new TypeError("outro content must be a string");return this.outro+=e,this}appendLeft(e,r){if(e=e+this.offset,typeof r!="string")throw new TypeError("inserted content must be a string");this._split(e);let n=this.byEnd[e];return n?n.appendLeft(r):this.intro+=r,this}appendRight(e,r){if(e=e+this.offset,typeof r!="string")throw new TypeError("inserted content must be a string");this._split(e);let n=this.byStart[e];return n?n.appendRight(r):this.outro+=r,this}clone(){let e=new t(this.original,{filename:this.filename,offset:this.offset}),r=this.firstChunk,n=e.firstChunk=e.lastSearchedChunk=r.clone();for(;r;){e.byStart[n.start]=n,e.byEnd[n.end]=n;let o=r.next,s=o&&o.clone();s&&(n.next=s,s.previous=n,n=s),r=o}return e.lastChunk=n,this.indentExclusionRanges&&(e.indentExclusionRanges=this.indentExclusionRanges.slice()),e.sourcemapLocations=new Es(this.sourcemapLocations),e.intro=this.intro,e.outro=this.outro,e}generateDecodedMap(e){e=e||{};let r=0,n=Object.keys(this.storedNames),o=new Aa(e.hires),s=ga(this.original);return this.intro&&o.advance(this.intro),this.firstChunk.eachNext(i=>{let l=s(i.start);i.intro.length&&o.advance(i.intro),i.edited?o.addEdit(r,i.content,l,i.storeName?n.indexOf(i.original):-1):o.addUneditedChunk(r,i,this.original,l,this.sourcemapLocations),i.outro.length&&o.advance(i.outro)}),{file:e.file?e.file.split(/[/\\]/).pop():void 0,sources:[e.source?kd(e.file||"",e.source):e.file||""],sourcesContent:e.includeContent?[this.original]:void 0,names:n,mappings:o.raw,x_google_ignoreList:this.ignoreList?[r]:void 0}}generateMap(e){return new D0(this.generateDecodedMap(e))}_ensureindentStr(){this.indentStr===void 0&&(this.indentStr=Cd(this.original))}_getRawIndentString(){return this._ensureindentStr(),this.indentStr}getIndentString(){return this._ensureindentStr(),this.indentStr===null?" ":this.indentStr}indent(e,r){let n=/^[^\r\n]/gm;if(Sd(e)&&(r=e,e=void 0),e===void 0&&(this._ensureindentStr(),e=this.indentStr||" "),e==="")return this;r=r||{};let o={};r.exclude&&(typeof r.exclude[0]=="number"?[r.exclude]:r.exclude).forEach(f=>{for(let d=f[0];d<f[1];d+=1)o[d]=!0});let s=r.indentStart!==!1,i=k(f=>s?`${e}${f}`:(s=!0,f),"replacer");this.intro=this.intro.replace(n,i);let l=0,c=this.firstChunk;for(;c;){let f=c.end;if(c.edited)o[l]||(c.content=c.content.replace(n,i),c.content.length&&(s=c.content[c.content.length-1]===`
|
|
82
|
+
`));else for(l=c.start;l<f;){if(!o[l]){let d=this.original[l];d===`
|
|
83
|
+
`?s=!0:d!=="\r"&&s&&(s=!1,l===c.start||(this._splitChunk(c,l),c=c.next),c.prependRight(e))}l+=1}l=c.end,c=c.next}return this.outro=this.outro.replace(n,i),this}insert(){throw new Error("magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)")}insertLeft(e,r){return hn.insertLeft||(console.warn("magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead"),hn.insertLeft=!0),this.appendLeft(e,r)}insertRight(e,r){return hn.insertRight||(console.warn("magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead"),hn.insertRight=!0),this.prependRight(e,r)}move(e,r,n){if(e=e+this.offset,r=r+this.offset,n=n+this.offset,n>=e&&n<=r)throw new Error("Cannot move a selection inside itself");this._split(e),this._split(r),this._split(n);let o=this.byStart[e],s=this.byEnd[r],i=o.previous,l=s.next,c=this.byStart[n];if(!c&&s===this.lastChunk)return this;let f=c?c.previous:this.lastChunk;return i&&(i.next=l),l&&(l.previous=i),f&&(f.next=o),c&&(c.previous=s),o.previous||(this.firstChunk=s.next),s.next||(this.lastChunk=o.previous,this.lastChunk.next=null),o.previous=f,s.next=c||null,f||(this.firstChunk=o),c||(this.lastChunk=s),this}overwrite(e,r,n,o){return o=o||{},this.update(e,r,n,{...o,overwrite:!o.contentOnly})}update(e,r,n,o){if(e=e+this.offset,r=r+this.offset,typeof n!="string")throw new TypeError("replacement content must be a string");if(this.original.length!==0){for(;e<0;)e+=this.original.length;for(;r<0;)r+=this.original.length}if(r>this.original.length)throw new Error("end is out of bounds");if(e===r)throw new Error("Cannot overwrite a zero-length range \u2013 use appendLeft or prependRight instead");this._split(e),this._split(r),o===!0&&(hn.storeName||(console.warn("The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string"),hn.storeName=!0),o={storeName:!0});let s=o!==void 0?o.storeName:!1,i=o!==void 0?o.overwrite:!1;if(s){let f=this.original.slice(e,r);Object.defineProperty(this.storedNames,f,{writable:!0,value:!0,enumerable:!0})}let l=this.byStart[e],c=this.byEnd[r];if(l){let f=l;for(;f!==c;){if(f.next!==this.byStart[f.end])throw new Error("Cannot overwrite across a split point");f=f.next,f.edit("",!1)}l.edit(n,s,!i)}else{let f=new xs(e,r,"").edit(n,s);c.next=f,f.previous=c}return this}prepend(e){if(typeof e!="string")throw new TypeError("outro content must be a string");return this.intro=e+this.intro,this}prependLeft(e,r){if(e=e+this.offset,typeof r!="string")throw new TypeError("inserted content must be a string");this._split(e);let n=this.byEnd[e];return n?n.prependLeft(r):this.intro=r+this.intro,this}prependRight(e,r){if(e=e+this.offset,typeof r!="string")throw new TypeError("inserted content must be a string");this._split(e);let n=this.byStart[e];return n?n.prependRight(r):this.outro=r+this.outro,this}remove(e,r){if(e=e+this.offset,r=r+this.offset,this.original.length!==0){for(;e<0;)e+=this.original.length;for(;r<0;)r+=this.original.length}if(e===r)return this;if(e<0||r>this.original.length)throw new Error("Character is out of bounds");if(e>r)throw new Error("end must be greater than start");this._split(e),this._split(r);let n=this.byStart[e];for(;n;)n.intro="",n.outro="",n.edit(""),n=r>n.end?this.byStart[n.end]:null;return this}reset(e,r){if(e=e+this.offset,r=r+this.offset,this.original.length!==0){for(;e<0;)e+=this.original.length;for(;r<0;)r+=this.original.length}if(e===r)return this;if(e<0||r>this.original.length)throw new Error("Character is out of bounds");if(e>r)throw new Error("end must be greater than start");this._split(e),this._split(r);let n=this.byStart[e];for(;n;)n.reset(),n=r>n.end?this.byStart[n.end]:null;return this}lastChar(){if(this.outro.length)return this.outro[this.outro.length-1];let e=this.lastChunk;do{if(e.outro.length)return e.outro[e.outro.length-1];if(e.content.length)return e.content[e.content.length-1];if(e.intro.length)return e.intro[e.intro.length-1]}while(e=e.previous);return this.intro.length?this.intro[this.intro.length-1]:""}lastLine(){let e=this.outro.lastIndexOf(lo);if(e!==-1)return this.outro.substr(e+1);let r=this.outro,n=this.lastChunk;do{if(n.outro.length>0){if(e=n.outro.lastIndexOf(lo),e!==-1)return n.outro.substr(e+1)+r;r=n.outro+r}if(n.content.length>0){if(e=n.content.lastIndexOf(lo),e!==-1)return n.content.substr(e+1)+r;r=n.content+r}if(n.intro.length>0){if(e=n.intro.lastIndexOf(lo),e!==-1)return n.intro.substr(e+1)+r;r=n.intro+r}}while(n=n.previous);return e=this.intro.lastIndexOf(lo),e!==-1?this.intro.substr(e+1)+r:this.intro+r}slice(e=0,r=this.original.length-this.offset){if(e=e+this.offset,r=r+this.offset,this.original.length!==0){for(;e<0;)e+=this.original.length;for(;r<0;)r+=this.original.length}let n="",o=this.firstChunk;for(;o&&(o.start>e||o.end<=e);){if(o.start<r&&o.end>=r)return n;o=o.next}if(o&&o.edited&&o.start!==e)throw new Error(`Cannot use replaced character ${e} as slice start anchor.`);let s=o;for(;o;){o.intro&&(s!==o||o.start===e)&&(n+=o.intro);let i=o.start<r&&o.end>=r;if(i&&o.edited&&o.end!==r)throw new Error(`Cannot use replaced character ${r} as slice end anchor.`);let l=s===o?e-o.start:0,c=i?o.content.length+r-o.end:o.content.length;if(n+=o.content.slice(l,c),o.outro&&(!i||o.end===r)&&(n+=o.outro),i)break;o=o.next}return n}snip(e,r){let n=this.clone();return n.remove(0,e),n.remove(r,n.original.length),n}_split(e){if(this.byStart[e]||this.byEnd[e])return;let r=this.lastSearchedChunk,n=r,o=e>r.end;for(;r;){if(r.contains(e))return this._splitChunk(r,e);if(r=o?this.byStart[r.end]:this.byEnd[r.start],r===n)return;n=r}}_splitChunk(e,r){if(e.edited&&e.content.length){let o=ga(this.original)(r);throw new Error(`Cannot split a chunk that has already been edited (${o.line}:${o.column} \u2013 "${e.original}")`)}let n=e.split(r);return this.byEnd[r]=e,this.byStart[r]=n,this.byEnd[n.end]=n,e===this.lastChunk&&(this.lastChunk=n),this.lastSearchedChunk=e,!0}toString(){let e=this.intro,r=this.firstChunk;for(;r;)e+=r.toString(),r=r.next;return e+this.outro}isEmpty(){let e=this.firstChunk;do if(e.intro.length&&e.intro.trim()||e.content.length&&e.content.trim()||e.outro.length&&e.outro.trim())return!1;while(e=e.next);return!0}length(){let e=this.firstChunk,r=0;do r+=e.intro.length+e.content.length+e.outro.length;while(e=e.next);return r}trimLines(){return this.trim("[\\r\\n]")}trim(e){return this.trimStart(e).trimEnd(e)}trimEndAborted(e){let r=new RegExp((e||"\\s")+"+$");if(this.outro=this.outro.replace(r,""),this.outro.length)return!0;let n=this.lastChunk;do{let o=n.end,s=n.trimEnd(r);if(n.end!==o&&(this.lastChunk===n&&(this.lastChunk=n.next),this.byEnd[n.end]=n,this.byStart[n.next.start]=n.next,this.byEnd[n.next.end]=n.next),s)return!0;n=n.previous}while(n);return!1}trimEnd(e){return this.trimEndAborted(e),this}trimStartAborted(e){let r=new RegExp("^"+(e||"\\s")+"+");if(this.intro=this.intro.replace(r,""),this.intro.length)return!0;let n=this.firstChunk;do{let o=n.end,s=n.trimStart(r);if(n.end!==o&&(n===this.lastChunk&&(this.lastChunk=n.next),this.byEnd[n.end]=n,this.byStart[n.next.start]=n.next,this.byEnd[n.next.end]=n.next),s)return!0;n=n.next}while(n);return!1}trimStart(e){return this.trimStartAborted(e),this}hasChanged(){return this.original!==this.toString()}_replaceRegexp(e,r){function n(s,i){return typeof r=="string"?r.replace(/\$(\$|&|\d+)/g,(l,c)=>c==="$"?"$":c==="&"?s[0]:+c<s.length?s[+c]:`$${c}`):r(...s,s.index,i,s.groups)}k(n,"getReplacement");function o(s,i){let l,c=[];for(;l=s.exec(i);)c.push(l);return c}if(k(o,"matchAll"),e.global)o(e,this.original).forEach(s=>{if(s.index!=null){let i=n(s,this.original);i!==s[0]&&this.overwrite(s.index,s.index+s[0].length,i)}});else{let s=this.original.match(e);if(s&&s.index!=null){let i=n(s,this.original);i!==s[0]&&this.overwrite(s.index,s.index+s[0].length,i)}}return this}_replaceString(e,r){let{original:n}=this,o=n.indexOf(e);return o!==-1&&this.overwrite(o,o+e.length,r),this}replace(e,r){return typeof e=="string"?this._replaceString(e,r):this._replaceRegexp(e,r)}_replaceAllString(e,r){let{original:n}=this,o=e.length;for(let s=n.indexOf(e);s!==-1;s=n.indexOf(e,s+o))n.slice(s,s+o)!==r&&this.overwrite(s,s+o,r);return this}replaceAll(e,r){if(typeof e=="string")return this._replaceAllString(e,r);if(!e.global)throw new TypeError("MagicString.prototype.replaceAll called with a non-global RegExp argument");return this._replaceRegexp(e,r)}},co=2<<19,Ad=new Uint8Array(new Uint16Array([1]).buffer)[0]===1?function(t,e){let r=t.length,n=0;for(;n<r;)e[n]=t.charCodeAt(n++)}:function(t,e){let r=t.length,n=0;for(;n<r;){let o=t.charCodeAt(n);e[n++]=(255&o)<<8|o>>>8}},F0="xportmportlassforetaourceromsyncunctionssertvoyiedelecontininstantybreareturdebuggeawaithrwhileifcatcfinallels";k(Td,"parse");k(ws,"b");k(Id,"k");k(bs,"l");k(Ba,"u");k(Xt,"o");typeof WebAssembly<"u"&&(async()=>{let{parse:t,init:e}=await Promise.resolve().then(()=>(md(),fd));await e,wa=t})();ks=k((t,e)=>wa?wa(t,e):Td(t,e),"parseEsm"),mo=k(t=>{if(!t.includes("import")&&!t.includes("export"))return!1;try{return ks(t)[3]}catch{return!0}},"isESM"),Ra="2",U0=(t=>{let e="default";return t[e]&&typeof t[e]=="object"&&"__esModule"in t[e]?t[e]:t}).toString(),j0=`.then(${U0})`,mr=k((t,e,r)=>{if(r){if(!e.includes("import("))return}else if(!e.includes("import"))return;let n=ks(e,t)[0].filter(l=>l.d>-1);if(n.length===0)return;let o=new ya(e);for(let l of n)o.appendRight(l.se,j0);let s=o.toString(),i=o.generateMap({source:t,includeContent:!1,hires:"boundary"});return{code:s,map:i}},"transformDynamicImport"),Pa=k(t=>{try{let e=Ut.readFileSync(t,"utf8");return JSON.parse(e)}catch{}},"readJsonFile"),yd=k(()=>{},"noop"),wd=k(()=>Math.floor(Date.now()/1e8),"getTime"),ba=class extends Map{static{k(this,"FileCache")}cacheDirectory=os;oldCacheDirectory=yn.join(R0.tmpdir(),"tsx");cacheFiles;constructor(){super(),Ut.mkdirSync(this.cacheDirectory,{recursive:!0}),this.cacheFiles=Ut.readdirSync(this.cacheDirectory).map(e=>{let[r,n]=e.split("-");return{time:Number(r),key:n,fileName:e}}),setImmediate(()=>{this.expireDiskCache(),this.removeOldCacheDirectory()})}get(e){let r=super.get(e);if(r)return r;let n=this.cacheFiles.find(i=>i.key===e);if(!n)return;let o=yn.join(this.cacheDirectory,n.fileName),s=Pa(o);if(!s){Ut.promises.unlink(o).then(()=>{let i=this.cacheFiles.indexOf(n);this.cacheFiles.splice(i,1)},()=>{});return}return super.set(e,s),s}set(e,r){if(super.set(e,r),r){let n=wd();Ut.promises.writeFile(yn.join(this.cacheDirectory,`${n}-${e}`),JSON.stringify(r)).catch(yd)}return this}expireDiskCache(){let e=wd();for(let r of this.cacheFiles)e-r.time>7&&Ut.promises.unlink(yn.join(this.cacheDirectory,r.fileName)).catch(yd)}async removeOldCacheDirectory(){try{await Ut.promises.access(this.oldCacheDirectory).then(()=>!0)&&("rm"in Ut.promises?await Ut.promises.rm(this.oldCacheDirectory,{recursive:!0,force:!0}):await Ut.promises.rmdir(this.oldCacheDirectory,{recursive:!0}))}catch{}}},wn=process.env.TSX_DISABLE_CACHE?new Map:new ba,Bd=44,K0=59,bd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Rd=new Uint8Array(64),Pd=new Uint8Array(128);for(let t=0;t<bd.length;t++){let e=bd.charCodeAt(t);Rd[t]=e,Pd[e]=t}pa=typeof TextDecoder<"u"?new TextDecoder:typeof Buffer<"u"?{decode(t){return Buffer.from(t.buffer,t.byteOffset,t.byteLength).toString()}}:{decode(t){let e="";for(let r=0;r<t.length;r++)e+=String.fromCharCode(t[r]);return e}};k($d,"decode");k(Od,"indexOf");k(gn,"decodeInteger");k(Ea,"hasMoreVlq");k(Ld,"sort");k(Qd,"sortComparator$1");k(Dd,"encode");k(An,"encodeInteger");W0=/^[\w+.-]+:\/\
|
|
84
|
+
`;break;case 114:T+="\r";break;case 116:T+=" ";break;case 117:let C=h(4);C>=0?T+=String.fromCharCode(C):a=4;break;default:a=5}B=n;continue}if(v>=0&&v<=31)if(Gr(v)){T+=t.substring(B,n),a=2;break}else a=6;n++}return T}Y(x,"D"),W(x,"scanString");function A(){if(o="",a=0,s=n,c=l,d=f,n>=r)return s=r,i=17;let T=t.charCodeAt(n);if(wo(T)){do n++,o+=String.fromCharCode(T),T=t.charCodeAt(n);while(wo(T));return i=15}if(Gr(T))return n++,o+=String.fromCharCode(T),T===13&&t.charCodeAt(n)===10&&(n++,o+=`
|
|
85
|
+
`),l++,f=n,i=14;switch(T){case 123:return n++,i=1;case 125:return n++,i=2;case 91:return n++,i=3;case 93:return n++,i=4;case 58:return n++,i=6;case 44:return n++,i=5;case 34:return n++,o=x(),i=10;case 47:let B=n-1;if(t.charCodeAt(n+1)===47){for(n+=2;n<r&&!Gr(t.charCodeAt(n));)n++;return o=t.substring(B,n),i=12}if(t.charCodeAt(n+1)===42){n+=2;let v=r-1,C=!1;for(;n<v;){let I=t.charCodeAt(n);if(I===42&&t.charCodeAt(n+1)===47){n+=2,C=!0;break}n++,Gr(I)&&(I===13&&t.charCodeAt(n)===10&&n++,l++,f=n)}return C||(n++,a=1),o=t.substring(B,n),i=13}return o+=String.fromCharCode(T),n++,i=16;case 45:if(o+=String.fromCharCode(T),n++,n===r||!pr(t.charCodeAt(n)))return i=16;case 48:case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return o+=g(),i=11;default:for(;n<r&&w(T);)n++,T=t.charCodeAt(n);if(s!==n){switch(o=t.substring(s,n),o){case"true":return i=8;case"false":return i=9;case"null":return i=7}return i=16}return o+=String.fromCharCode(T),n++,i=16}}Y(A,"c"),W(A,"scanNext");function w(T){if(wo(T)||Gr(T))return!1;switch(T){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}Y(w,"p"),W(w,"isUnknownContentCharacter");function O(){let T;do T=A();while(T>=12&&T<=15);return T}return Y(O,"b"),W(O,"scanNextNonTrivia"),{setPosition:p,getPosition:W(()=>n,"getPosition"),scan:e?O:A,getToken:W(()=>i,"getToken"),getTokenValue:W(()=>o,"getTokenValue"),getTokenOffset:W(()=>s,"getTokenOffset"),getTokenLength:W(()=>n-s,"getTokenLength"),getTokenStartLine:W(()=>c,"getTokenStartLine"),getTokenStartCharacter:W(()=>s-d,"getTokenStartCharacter"),getTokenError:W(()=>a,"getTokenError")}}function wo(t){return t===32||t===9}function Gr(t){return t===10||t===13}function pr(t){return t>=48&&t<=57}function al(t,e=[],r=Ls.DEFAULT){let n=null,o=[],s=[];function i(l){Array.isArray(o)?o.push(l):n!==null&&(o[n]=l)}return Y(i,"l"),W(i,"onValue"),ll(t,{onObjectBegin:W(()=>{let l={};i(l),s.push(o),o=l,n=null},"onObjectBegin"),onObjectProperty:W(l=>{n=l},"onObjectProperty"),onObjectEnd:W(()=>{o=s.pop()},"onObjectEnd"),onArrayBegin:W(()=>{let l=[];i(l),s.push(o),o=l,n=null},"onArrayBegin"),onArrayEnd:W(()=>{o=s.pop()},"onArrayEnd"),onLiteralValue:i,onError:W((l,c,f)=>{e.push({error:l,offset:c,length:f})},"onError")},r),o[0]}function ll(t,e,r=Ls.DEFAULT){let n=il(t,!1),o=[],s=0;function i(U){return U?()=>s===0&&U(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}Y(i,"l"),W(i,"toNoArgVisit");function l(U){return U?q=>s===0&&U(q,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}Y(l,"g"),W(l,"toOneArgVisit");function c(U){return U?q=>s===0&&U(q,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice()):()=>!0}Y(c,"m"),W(c,"toOneArgVisitWithPath");function f(U){return U?()=>{s>0?s++:U(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice())===!1&&(s=1)}:()=>!0}Y(f,"k"),W(f,"toBeginVisit");function d(U){return U?()=>{s>0&&s--,s===0&&U(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter())}:()=>!0}Y(d,"w"),W(d,"toEndVisit");let a=f(e.onObjectBegin),h=c(e.onObjectProperty),p=d(e.onObjectEnd),g=f(e.onArrayBegin),x=d(e.onArrayEnd),A=c(e.onLiteralValue),w=l(e.onSeparator),O=i(e.onComment),T=l(e.onError),B=r&&r.disallowComments,v=r&&r.allowTrailingComma;function C(){for(;;){let U=n.scan();switch(n.getTokenError()){case 4:I(14);break;case 5:I(15);break;case 3:I(13);break;case 1:B||I(11);break;case 2:I(12);break;case 6:I(16);break}switch(U){case 12:case 13:B?I(10):O();break;case 16:I(1);break;case 15:case 14:break;default:return U}}}Y(C,"v"),W(C,"scanNext");function I(U,q=[],H=[]){if(T(U),q.length+H.length>0){let z=n.getToken();for(;z!==17;){if(q.indexOf(z)!==-1){C();break}else if(H.indexOf(z)!==-1)break;z=C()}}}Y(I,"d"),W(I,"handleError");function j(U){let q=n.getTokenValue();return U?A(q):(h(q),o.push(q)),C(),!0}Y(j,"L"),W(j,"parseString");function F(){switch(n.getToken()){case 11:let U=n.getTokenValue(),q=Number(U);isNaN(q)&&(I(2),q=0),A(q);break;case 7:A(null);break;case 8:A(!0);break;case 9:A(!1);break;default:return!1}return C(),!0}Y(F,"B"),W(F,"parseLiteral");function Q(){return n.getToken()!==10?(I(3,[],[2,5]),!1):(j(!1),n.getToken()===6?(w(":"),C(),N()||I(4,[],[2,5])):I(5,[],[2,5]),o.pop(),!0)}Y(Q,"$"),W(Q,"parseProperty");function P(){a(),C();let U=!1;for(;n.getToken()!==2&&n.getToken()!==17;){if(n.getToken()===5){if(U||I(4,[],[]),w(","),C(),n.getToken()===2&&v)break}else U&&I(6,[],[]);Q()||I(4,[],[2,5]),U=!0}return p(),n.getToken()!==2?I(7,[2],[]):C(),!0}Y(P,"N"),W(P,"parseObject");function $(){g(),C();let U=!0,q=!1;for(;n.getToken()!==4&&n.getToken()!==17;){if(n.getToken()===5){if(q||I(4,[],[]),w(","),C(),n.getToken()===4&&v)break}else q&&I(6,[],[]);U?(o.push(0),U=!1):o[o.length-1]++,N()||I(4,[],[4,5]),q=!0}return x(),U||o.pop(),n.getToken()!==4?I(8,[4],[]):C(),!0}Y($,"$e"),W($,"parseArray");function N(){switch(n.getToken()){case 3:return $();case 1:return P();case 10:return j(!0);default:return F()}}return Y(N,"H"),W(N,"parseValue"),C(),n.getToken()===17?r.allowEmptyContent?!0:(I(4,[],[]),!1):N()?(n.getToken()!==17&&I(9,[],[]),!0):(I(4,[],[]),!1)}var hy,Y,Wf,dl,Gf,vn,qf,ol,Ey,xy,vy,Cy,Jf,sl,yo,ky,Sy,_y,Ty,Iy,W,By,bt,bo,kf,xn,Ls,Sf,_f,Ry,Tf,fl,Vf,Py,$y,Wr,$s,Oy,za,Ly,Qy,cl,gr,ml,Os,Dy,Ny,My,Fy,Uy,jy,Ky,Wy,Gy,Xa,If,Bf,qy,Rf,Bs,Jy,Yy,Vy,hl,Hy,Ds,Hf,Za,Pf,zy,Xy,$f,el,Zy,ew,Of,tw,tl,rw,Lf,Rs,rl,zf,nw,Qf,Ns,Xf,ow,sw,iw,Df,aw,lw,cw,uw,Nf,Ms,Fs,dw,Mf,St,po,go,Us,fw,kn,Jr,mt,pl,br,js,Zf,em,yr,tm,rm,wr,nm,Cn,de,Ar,mw,hw,pw,om,sm,im,gw,am,lm,Aw,yw,Ao,Ks,ul,ww,bw,Ff,Uf,Ew,nl,xw,vw,Ps,Cw,jf,kw,Sw,_w,Tw,Kf,Eo,Ws=xe(()=>{ro();Ss();Ts();Ha();to();hy=Object.defineProperty,Y=(t,e)=>hy(t,"name",{value:e,configurable:!0}),Wf=Y(t=>{if(!t.startsWith("data:text/javascript,"))return;let e=t.indexOf("?");if(e===-1)return;let r=new URLSearchParams(t.slice(e+1)).get("filePath");if(r)return r},"getOriginalFilePath"),dl=Y(t=>{let e=Wf(t);return e&&(it._cache[e]=it._cache[t],delete it._cache[t],t=e),t},"interopCjsExports"),Gf=Y(t=>t!==null&&typeof t=="object","A"),vn=Y((t,e)=>Object.assign(new Error(`[${t}]: ${e}`),{code:t}),"a"),qf="ERR_INVALID_PACKAGE_CONFIG",ol="ERR_INVALID_PACKAGE_TARGET",Ey="ERR_PACKAGE_PATH_NOT_EXPORTED",xy=/^\d+$/,vy=/^(\.{1,2}|node_modules)$/i,Cy=/\/|\\/,Jf=(t=>(t.Export="exports",t.Import="imports",t))(Jf||{}),sl=Y((t,e,r,n,o)=>{if(e==null)return[];if(typeof e=="string"){let[s,...i]=e.split(Cy);if(s===".."||i.some(l=>vy.test(l)))throw vn(ol,`Invalid "${t}" target "${e}" defined in the package config`);return[o?e.replace(/\*/g,o):e]}if(Array.isArray(e))return e.flatMap(s=>sl(t,s,r,n,o));if(Gf(e)){for(let s of Object.keys(e)){if(xy.test(s))throw vn(qf,"Cannot contain numeric property keys");if(s==="default"||n.includes(s))return sl(t,e[s],r,n,o)}return[]}throw vn(ol,`Invalid "${t}" target "${e}"`)},"f"),yo="*",ky=Y((t,e)=>{let r=t.indexOf(yo),n=e.indexOf(yo);return r===n?e.length>t.length:n>r},"m");Y(Yf,"d");Sy=Y(t=>Object.keys(t).reduce((e,r)=>{let n=r===""||r[0]!==".";if(e===void 0||e===n)return n;throw vn(qf,'"exports" cannot contain some keys starting with "." and some not')},void 0),"p"),_y=/^\w+:/,Ty=Y((t,e,r)=>{if(!t)throw new Error('"exports" is required');e=e===""?".":`./${e}`,(typeof t=="string"||Array.isArray(t)||Gf(t)&&Sy(t))&&(t={".":t});let[n,o]=Yf(t,e),s=sl(Jf.Export,t[n],e,r,o);if(s.length===0)throw vn(Ey,e==="."?'No "exports" main defined':`Package subpath '${e}' is not defined by "exports"`);for(let i of s)if(!i.startsWith("./")&&!_y.test(i))throw vn(ol,`Invalid "exports" target "${i}" defined in the package config`);return s},"v"),Iy=Object.defineProperty,W=Y((t,e)=>Iy(t,"name",{value:e,configurable:!0}),"i");Y(je,"x"),W(je,"slash");By=W((t,e)=>{let r=`readFileSync:${e}`,n=t?.get(r);return n===void 0&&(n=qr.readFileSync(e,"utf8"),t?.set(r,n)),n},"readFile"),bt=W((t,e)=>{let r=`tryStat:${e}`,n=t?.get(r);if(n===void 0){try{n=qr.statSync(e)}catch{n=null}t?.set(r,n)}return n??void 0},"tryStat"),bo=W((t,e,r)=>{for(;;){let n=X.posix.join(t,e);if(bt(r,n))return n;let o=X.dirname(t);if(o===t)return;t=o}},"findUp");Y(il,"Ne"),W(il,"createScanner");Y(wo,"X"),W(wo,"isWhiteSpace");Y(Gr,"P"),W(Gr,"isLineBreak");Y(pr,"S"),W(pr,"isDigit");(function(t){t[t.lineFeed=10]="lineFeed",t[t.carriageReturn=13]="carriageReturn",t[t.space=32]="space",t[t._0=48]="_0",t[t._1=49]="_1",t[t._2=50]="_2",t[t._3=51]="_3",t[t._4=52]="_4",t[t._5=53]="_5",t[t._6=54]="_6",t[t._7=55]="_7",t[t._8=56]="_8",t[t._9=57]="_9",t[t.a=97]="a",t[t.b=98]="b",t[t.c=99]="c",t[t.d=100]="d",t[t.e=101]="e",t[t.f=102]="f",t[t.g=103]="g",t[t.h=104]="h",t[t.i=105]="i",t[t.j=106]="j",t[t.k=107]="k",t[t.l=108]="l",t[t.m=109]="m",t[t.n=110]="n",t[t.o=111]="o",t[t.p=112]="p",t[t.q=113]="q",t[t.r=114]="r",t[t.s=115]="s",t[t.t=116]="t",t[t.u=117]="u",t[t.v=118]="v",t[t.w=119]="w",t[t.x=120]="x",t[t.y=121]="y",t[t.z=122]="z",t[t.A=65]="A",t[t.B=66]="B",t[t.C=67]="C",t[t.D=68]="D",t[t.E=69]="E",t[t.F=70]="F",t[t.G=71]="G",t[t.H=72]="H",t[t.I=73]="I",t[t.J=74]="J",t[t.K=75]="K",t[t.L=76]="L",t[t.M=77]="M",t[t.N=78]="N",t[t.O=79]="O",t[t.P=80]="P",t[t.Q=81]="Q",t[t.R=82]="R",t[t.S=83]="S",t[t.T=84]="T",t[t.U=85]="U",t[t.V=86]="V",t[t.W=87]="W",t[t.X=88]="X",t[t.Y=89]="Y",t[t.Z=90]="Z",t[t.asterisk=42]="asterisk",t[t.backslash=92]="backslash",t[t.closeBrace=125]="closeBrace",t[t.closeBracket=93]="closeBracket",t[t.colon=58]="colon",t[t.comma=44]="comma",t[t.dot=46]="dot",t[t.doubleQuote=34]="doubleQuote",t[t.minus=45]="minus",t[t.openBrace=123]="openBrace",t[t.openBracket=91]="openBracket",t[t.plus=43]="plus",t[t.slash=47]="slash",t[t.formFeed=12]="formFeed",t[t.tab=9]="tab"})(kf||(kf={})),new Array(20).fill(0).map((t,e)=>" ".repeat(e));xn=200;new Array(xn).fill(0).map((t,e)=>`
|
|
86
|
+
`+" ".repeat(e)),new Array(xn).fill(0).map((t,e)=>"\r"+" ".repeat(e)),new Array(xn).fill(0).map((t,e)=>`\r
|
|
87
|
+
`+" ".repeat(e)),new Array(xn).fill(0).map((t,e)=>`
|
|
88
|
+
`+" ".repeat(e)),new Array(xn).fill(0).map((t,e)=>"\r"+" ".repeat(e)),new Array(xn).fill(0).map((t,e)=>`\r
|
|
89
|
+
`+" ".repeat(e));(function(t){t.DEFAULT={allowTrailingComma:!1}})(Ls||(Ls={}));Y(al,"Re"),W(al,"parse$1");Y(ll,"Pe"),W(ll,"visit");(function(t){t[t.None=0]="None",t[t.UnexpectedEndOfComment=1]="UnexpectedEndOfComment",t[t.UnexpectedEndOfString=2]="UnexpectedEndOfString",t[t.UnexpectedEndOfNumber=3]="UnexpectedEndOfNumber",t[t.InvalidUnicode=4]="InvalidUnicode",t[t.InvalidEscapeCharacter=5]="InvalidEscapeCharacter",t[t.InvalidCharacter=6]="InvalidCharacter"})(Sf||(Sf={}));(function(t){t[t.OpenBraceToken=1]="OpenBraceToken",t[t.CloseBraceToken=2]="CloseBraceToken",t[t.OpenBracketToken=3]="OpenBracketToken",t[t.CloseBracketToken=4]="CloseBracketToken",t[t.CommaToken=5]="CommaToken",t[t.ColonToken=6]="ColonToken",t[t.NullKeyword=7]="NullKeyword",t[t.TrueKeyword=8]="TrueKeyword",t[t.FalseKeyword=9]="FalseKeyword",t[t.StringLiteral=10]="StringLiteral",t[t.NumericLiteral=11]="NumericLiteral",t[t.LineCommentTrivia=12]="LineCommentTrivia",t[t.BlockCommentTrivia=13]="BlockCommentTrivia",t[t.LineBreakTrivia=14]="LineBreakTrivia",t[t.Trivia=15]="Trivia",t[t.Unknown=16]="Unknown",t[t.EOF=17]="EOF"})(_f||(_f={}));Ry=al;(function(t){t[t.InvalidSymbol=1]="InvalidSymbol",t[t.InvalidNumberFormat=2]="InvalidNumberFormat",t[t.PropertyNameExpected=3]="PropertyNameExpected",t[t.ValueExpected=4]="ValueExpected",t[t.ColonExpected=5]="ColonExpected",t[t.CommaExpected=6]="CommaExpected",t[t.CloseBraceExpected=7]="CloseBraceExpected",t[t.CloseBracketExpected=8]="CloseBracketExpected",t[t.EndOfFileExpected=9]="EndOfFileExpected",t[t.InvalidCommentToken=10]="InvalidCommentToken",t[t.UnexpectedEndOfComment=11]="UnexpectedEndOfComment",t[t.UnexpectedEndOfString=12]="UnexpectedEndOfString",t[t.UnexpectedEndOfNumber=13]="UnexpectedEndOfNumber",t[t.InvalidUnicode=14]="InvalidUnicode",t[t.InvalidEscapeCharacter=15]="InvalidEscapeCharacter",t[t.InvalidCharacter=16]="InvalidCharacter"})(Tf||(Tf={}));fl=W((t,e)=>Ry(By(e,t)),"readJsonc"),Vf=W(()=>{let{findPnpApi:t}=it;return t&&t(process.cwd())},"getPnpApi"),Py="detectTypeScriptVersion:",$y=W((t,e)=>{let r=`${Py}${t}`,n=e?.get(r);if(n!==void 0)return n??void 0;let o,s=Vf();if(s)try{o=s.resolveRequest("typescript/package.json",t)??void 0}catch{}o??=bo(X.resolve(t),X.join("node_modules","typescript","package.json"),e);let i;if(o)try{let l=fl(o,e);typeof l?.version=="string"&&(i=l.version)}catch{}return e?.set(r,i??null),i},"detectTypeScriptVersion"),Wr="package.json",$s="tsconfig.json",Oy=W((t,e,r)=>{let n=it.createRequire(X.join(r,"tsconfig.json"));if(t!==e)try{return n.resolve(t)}catch{}try{return n.resolve(e)}catch{}try{return n.resolve(`${e}/${Wr}`)}catch{}},"resolvePackageEntryWithNode"),za=W((t,e,r,n)=>{let o=`resolveFromPackageJsonPath:${t}:${e}:${r}`;if(n?.has(o))return n.get(o)||!1;let s=fl(t,n);if(!s)return;let i=e||$s;if(!r&&s.exports)try{let[l]=Ty(s.exports,e,["require","types"]);i=l}catch{return n?.set(o,""),!1}else!e&&s.tsconfig&&(i=s.tsconfig);return i=X.join(t,"..",i),n?.set(o,i),i},"resolveFromPackageJsonPath"),Ly=W((t,e,r)=>{let n=`resolveExtendsPath:${t}:${e}`;if(r?.has(n))return r.get(n)||void 0;let o=Qy(t,e,r);return r?.set(n,o||""),o},"resolveExtendsPath"),Qy=W((t,e,r)=>{let n=t;if(t===".."&&(n=X.join(n,$s)),t[0]==="."&&(n=X.resolve(e,n)),X.isAbsolute(n)){let A=bt(r,n);if(A){if(A.isFile())return n}else if(!n.endsWith(".json")){let w=`${n}.json`;if(bt(r,w))return w}return}let[o,...s]=t.split("/"),i=o[0]==="@"?`${o}/${s.shift()}`:o,l=s.join("/"),c=Vf();if(c){let{resolveRequest:A}=c;try{if(i===t){let w=A(X.join(i,Wr),e);if(w){let O=za(w,l,!1,r);if(O&&bt(r,O))return O}}else{let w;try{w=A(t,e,{extensions:[".json"]})}catch{w=A(X.join(t,$s),e)}if(w)return w}}catch{}}let f=Oy(t,i,e),d;if(f){if(X.basename(f)!==Wr&&f.endsWith(".json"))return f;d=X.basename(f)===Wr?f:bo(X.dirname(f),Wr,r)}let a=d&&X.dirname(d)||bo(X.resolve(e),X.join("node_modules",i),r);if(!a||!bt(r,a)?.isDirectory())return;let h=X.join(a,Wr);if(bt(r,h)){let A=za(h,l,!1,r);if(A===!1)return;if(A&&bt(r,A)?.isFile())return A}let p=X.join(a,l),g=p.endsWith(".json");if(!g){let A=`${p}.json`;if(bt(r,A))return A}let x=bt(r,p);if(x){if(x.isDirectory()){let A=X.join(p,Wr);if(bt(r,A)){let O=za(A,"",!0,r);if(O&&bt(r,O))return O}let w=X.join(p,$s);if(bt(r,w))return w}else if(g)return p}},"resolveExtendsPathUncached"),cl=Symbol("implicitBaseUrl"),gr="${configDir}",ml=/^\.{1,2}(\/.*)?$/,Os=W(t=>{let e=je(t);return ml.test(e)?e:`./${e}`},"normalizeRelativePath"),Dy=W(t=>{let e={...t};if(e.strict){let r=["noImplicitAny","noImplicitThis","strictNullChecks","strictFunctionTypes","strictBindCallApply","strictPropertyInitialization","strictBuiltinIteratorReturn","alwaysStrict","useUnknownInCatchVariables"];for(let n of r)e[n]===void 0&&(e[n]=!0)}if(e.composite&&(e.declaration??=!0,e.incremental??=!0),e.target){let r=e.target.toLowerCase();r==="es2015"&&(r="es6"),e.target=r,r==="esnext"&&(e.module??="es6",e.useDefineForClassFields??=!0),(r==="es6"||r==="es2016"||r==="es2017"||r==="es2018"||r==="es2019"||r==="es2020"||r==="es2021"||r==="es2022"||r==="es2023"||r==="es2024"||r==="es2025")&&(e.module??="es6"),(r==="es2022"||r==="es2023"||r==="es2024"||r==="es2025")&&(e.useDefineForClassFields??=!0)}if(e.module){let r=e.module.toLowerCase();if(r==="es2015"&&(r="es6"),e.module=r,(r==="es6"||r==="es2020"||r==="es2022"||r==="esnext"||r==="none"||r==="system"||r==="umd"||r==="amd")&&(e.moduleResolution??="classic"),r==="system"&&(e.allowSyntheticDefaultImports??=!0),(r==="node16"||r==="node18"||r==="node20"||r==="nodenext"||r==="preserve")&&(e.esModuleInterop??=!0,e.allowSyntheticDefaultImports??=!0),(r==="node16"||r==="node18"||r==="node20"||r==="nodenext")&&(e.moduleDetection??="force"),(r==="node16"||r==="node18")&&(e.target??="es2022",e.moduleResolution??="node16"),r==="node20"&&(e.target??="es2023",e.moduleResolution??="node16",e.resolveJsonModule??=!0),r==="nodenext"&&(e.target??="esnext",e.moduleResolution??="nodenext",e.resolveJsonModule??=!0),r==="node16"||r==="node18"||r==="node20"||r==="nodenext"){let n=e.target;(n==="es3"||n==="es2022"||n==="es2023"||n==="es2024"||n==="esnext")&&(e.useDefineForClassFields??=!0)}r==="preserve"&&(e.moduleResolution??="bundler")}if(e.moduleResolution){let r=e.moduleResolution.toLowerCase();r==="node"&&(r="node10"),e.moduleResolution=r,(r==="node16"||r==="nodenext"||r==="bundler")&&(e.resolvePackageJsonExports??=!0,e.resolvePackageJsonImports??=!0),r==="bundler"&&(e.allowSyntheticDefaultImports??=!0,e.resolveJsonModule??=!0)}for(let r of["jsx","moduleDetection","importsNotUsedAsValues","newLine"])e[r]&&(e[r]=e[r].toLowerCase());return e.esModuleInterop&&(e.allowSyntheticDefaultImports??=!0),e.verbatimModuleSyntax&&(e.isolatedModules??=!0,e.preserveConstEnums??=!0),e.isolatedModules&&(e.preserveConstEnums??=!0),e.rewriteRelativeImportExtensions&&(e.allowImportingTsExtensions??=!0),e.lib&&(e.lib=e.lib.map(r=>r.toLowerCase())),e.checkJs&&(e.allowJs??=!0),e},"normalizeCompilerOptions"),Ny=W((t,e)=>{!e.has("target")&&!My(t.module)&&(t.target="es3")},"applyV4Defaults"),My=W(t=>t==="node16"||t==="node18"||t==="node20"||t==="nodenext","moduleDictatesTarget$1"),Fy=W((t,e)=>{!e.has("target")&&!Uy(t.module)&&(t.target="es5")},"applyV5Defaults"),Uy=W(t=>t==="node16"||t==="node18"||t==="node20"||t==="nodenext","moduleDictatesTarget"),jy=W((t,e)=>{e.has("strict")||(t.strict=!0),e.has("target")||(t.target="es2025"),e.has("module")||(t.module="es2022"),e.has("moduleResolution")||(t.moduleResolution="bundler"),e.has("rootDir")||(t.rootDir="."),e.has("types")||(t.types=[]),e.has("noUncheckedSideEffectImports")||(t.noUncheckedSideEffectImports=!0),e.has("libReplacement")||(t.libReplacement=!1)},"applyV6Defaults"),Ky=[[4,Ny],[5,Fy],[6,jy]],Wy=W(t=>{let e=/^v?(\d+)/.exec(t);return e?Number(e[1]):void 0},"parseMajor"),Gy=W((t,e)=>{let r=Wy(e);if(r===void 0)return;let n=new Set(Object.keys(t));for(let[o,s]of Ky)o<=r&&s(t,n)},"applyVersionDefaults"),Xa=W((t,e)=>Os(X.relative(t,e)),"pathRelative"),If=["files","include","exclude"],Bf=W((t,e,r)=>{let n=X.join(e,r),o=X.relative(t,n);return je(o)||"./"},"resolveAndRelativize"),qy=W((t,e,r)=>{let n=X.relative(t,e);if(!n)return r;let o=r.startsWith("./")?r.slice(2):r;return je(`${n}/${o}`)},"prefixPattern"),Rf=["outDir","declarationDir"],Bs=W((t,e)=>{if(t.startsWith(gr))return je(X.join(e,t.slice(gr.length)))},"interpolateConfigDir"),Jy=["outDir","declarationDir","outFile","rootDir","baseUrl","tsBuildInfoFile"],Yy=W((t,e={})=>{if(t.length===0)throw new Error("Chain must not be empty");let{typescriptVersion:r}=e,n=new Map(t.map(a=>[a.path,a])),o=new Map,s=W(a=>{let h=o.get(a);if(h)return h;let p=n.get(a);if(!p)throw new Error(`Config not found in chain: ${a}`);let g=p.config,x=X.dirname(a),A={...g,...g.compilerOptions&&{compilerOptions:{...g.compilerOptions}},...g.watchOptions&&{watchOptions:{...g.watchOptions}}};if(delete A.extends,A.compilerOptions?.paths&&!A.compilerOptions.baseUrl&&(A.compilerOptions[cl]=x),g.extends){let w=Array.isArray(g.extends)?g.extends:[g.extends];for(let O of w.toReversed()){let T=s(O),B=X.dirname(O),{references:v,...C}=T;if(C.compilerOptions){let j={...C.compilerOptions};for(let F of["baseUrl","outDir","declarationDir","rootDir"]){let Q=j[F];Q&&!Q.startsWith(gr)&&(j[F]=Bf(x,B,Q))}for(let F of["rootDirs","typeRoots"]){let Q=j[F];Q&&(j[F]=Q.map(P=>P.startsWith(gr)?P:Bf(x,B,P)))}C.compilerOptions=j}for(let j of If){let F=C[j];F&&(C[j]=F.map(Q=>Q.startsWith(gr)?Q:qy(x,B,Q)))}let I={...C,...A,compilerOptions:{...C.compilerOptions,...A.compilerOptions}};C.watchOptions&&(I.watchOptions={...C.watchOptions,...A.watchOptions}),A=I}}if(A.compilerOptions){let{compilerOptions:w}=A,O=["baseUrl","rootDir"];for(let T of O){let B=w[T];if(B&&!B.startsWith(gr)){let v=X.resolve(x,B),C=Xa(x,v);w[T]=C}}for(let T of Rf){let B=w[T];B&&(Array.isArray(A.exclude)||(A.exclude=Rf.map(v=>w[v]).filter(Boolean)),B.startsWith(gr)||(B=Os(B)),w[T]=B)}}else A.compilerOptions={};if(A.include&&(A.include=A.include.map(je)),A.files&&(A.files=A.files.map(w=>w.startsWith(gr)?w:Os(w))),A.watchOptions){let{watchOptions:w}=A;for(let O of["excludeDirectories","excludeFiles"])w[O]&&(w[O]=w[O].map(T=>je(X.resolve(x,T))));for(let O of["watchFile","watchDirectory","fallbackPolling"])if(w[O]){let T=w;T[O]=w[O].toLowerCase()}}return o.set(a,A),A},"resolveEntry"),i=t[0],l=s(i.path),c=X.dirname(i.path),f={...l,compilerOptions:l.compilerOptions?{...l.compilerOptions}:{}},{compilerOptions:d}=f;if(d){for(let a of Jy){let h=d[a];if(h){let p=Bs(h,c);d[a]=p?Xa(c,p):h}}for(let a of["rootDirs","typeRoots"]){let h=d[a];h&&(d[a]=h.map(p=>{let g=Bs(p,c);return g?Xa(c,g):Os(p)}))}if(d.paths){let a={};for(let[h,p]of Object.entries(d.paths))a[h]=p.map(g=>Bs(g,c)??g);d.paths=a}r&&Gy(d,r),f.compilerOptions=Dy(d)}for(let a of If){let h=f[a];h&&(f[a]=h.map(p=>Bs(p,c)??p))}return{path:i.path,config:f,sources:t.map(a=>a.path)}},"resolveExtendsChain"),Vy=W((t,e={})=>{let{cache:r=new Map}=e,n=X.resolve(t),o=[],s=new Set,i=W((l,c)=>{let f=je(l);if(s.has(f))return;s.add(f);let d;try{d=fl(l,r)||{}}catch{throw new Error(`Cannot resolve tsconfig at path: ${l}`)}if(typeof d!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${l}`);let a=X.dirname(l);if(d.extends){let h=Array.isArray(d.extends),p=(h?d.extends:[d.extends]).map(x=>{let A=Ly(x,a,r);if(!A)throw new Error(`File '${x}' not found.`);let w=je(A);if(c.has(w)||w===f)throw new Error(`Circularity detected while resolving configuration: ${w}`);return w});d.extends=h?p:p[0],o.push({path:f,config:d});let g=new Set(c);g.add(f);for(let x of[...p].reverse())i(x,g)}else o.push({path:f,config:d})},"collect");return i(n,new Set),o},"getExtendsChain"),hl=W((t,e={})=>{let{cache:r=new Map,typescriptVersion:n="auto"}=e,o=Vy(t,{cache:r}),s;return n==="auto"?s=$y(X.dirname(o[0].path),r):n!==!1&&(s=n),Yy(o,{typescriptVersion:s})},"readTsconfig"),Hy=Object.defineProperty,Ds=W((t,e)=>Hy(t,"name",{value:e,configurable:!0}),"s"),Hf=Ds(t=>{let e="";for(let r=0;r<t.length;r+=1){let n=t[r],o=n.toUpperCase();e+=n===o?n.toLowerCase():o}return e},"invertCase"),Za=new Map,Pf=Ds((t,e)=>{let r=wy.join(t,`.is-fs-case-sensitive-test-${process.pid}`);try{return e.writeFileSync(r,""),!e.existsSync(Hf(r))}finally{try{e.unlinkSync(r)}catch{}}},"checkDirectoryCaseWithWrite"),zy=Ds((t,e,r)=>{try{return Pf(t,r)}catch(n){if(e===void 0)return Pf(yy.tmpdir(),r);throw n}},"checkDirectoryCaseWithFallback"),Xy=Ds((t,e=Ay,r=!0)=>{let n=t??process.cwd();if(r&&Za.has(n))return Za.get(n);let o,s=Hf(n);return s!==n&&e.existsSync(n)?o=!e.existsSync(s):o=zy(n,t,e),r&&Za.set(n,o),o},"isFsCaseSensitive"),{join:$f}=X.posix,el={ts:[".ts",".tsx",".d.ts"],cts:[".cts",".d.cts"],mts:[".mts",".d.mts"]},Zy=W(t=>{let e=[...el.ts],r=[...el.cts],n=[...el.mts];return t?.allowJs&&(e.push(".js",".jsx"),r.push(".cjs"),n.push(".mjs")),[...e,...r,...n]},"getSupportedExtensions"),ew=W(t=>{let e=[];if(!t)return e;let{outDir:r,declarationDir:n}=t;return r&&e.push(r),n&&e.push(n),e},"getDefaultExcludeSpec"),Of=W(t=>t.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`),"escapeForRegexp"),tw=["node_modules","bower_components","jspm_packages"],tl=`(?!(${tw.join("|")})(/|$))`,rw=/(?:^|\/)[^.*?]+$/,Lf="**`,"(.+/)?").replaceAll(String.raw`\*`,`${Rs}*`).replaceAll(String.raw`\?`,Rs);return new RegExp(`^${w}($|/)`,a)}),p=o||s?s:[Lf],g=p?p.map(x=>{let A=c(x);rw.test(A)&&(A=$f(A,Lf));let w=Of(A).replaceAll(String.raw`/\*\*`,`(/${tl}${rl}${Rs}*)*?`).replaceAll(/(\/)?\\\*/g,(O,T)=>{let B=String.raw`(${rl}|(\.(?!min\.js$))?)*`;return T?`/${tl}${rl}${B}`:B}).replaceAll(/(\/)?\\\?/g,(O,T)=>{let B=Rs;return T?`/${tl}${B}`:B});return new RegExp(`^${w}$`,a)}):void 0;return{filesSet:f,extensions:d,excludePatterns:h,includePatterns:g}},"compilePatterns"),Qf=new WeakMap,Ns=W((t,e)=>{if(!X.isAbsolute(e))return!1;zf&&(e=je(e));let r=Qf.get(t);r||(r=nw(t,Xy()),Qf.set(t,r));let{filesSet:n,extensions:o,excludePatterns:s,includePatterns:i}=r;return n?.has(e)?!0:!o.some(l=>e.endsWith(l))||s.some(l=>l.test(e))?!1:!!(i&&i.some(l=>l.test(e)))},"isFileIncluded"),Xf=W((t,e,r,n)=>{let o=X.resolve(t),s=je(t);for(;;){let i=bo(s,e,r);if(!i)return;let l=X.resolve(i),c=hl(l,{cache:r,typescriptVersion:n});if(Ns(c,o))return c;let f=X.dirname(i),d=X.dirname(f);if(d===f)return;s=d}},"findConfigApplicable"),ow=W((t=process.cwd(),e={})=>{let{configName:r="tsconfig.json",cache:n=new Map,includes:o=!1}=e;if(!o){let s=X.resolve(t);return X.basename(s)===r&&bt(n,s)?.isFile()?je(s):bo(je(t),r,n)}return Xf(t,r,n,!1)?.path},"findTsconfig"),sw=W((t=process.cwd(),e={})=>{let{configName:r="tsconfig.json",cache:n=new Map,includes:o=!1,typescriptVersion:s="auto"}=e;if(!o){let i=ow(t,{configName:r,cache:n});return i?hl(i,{cache:n,typescriptVersion:s}):void 0}return Xf(t,r,n,s)},"getTsconfig"),iw=/\*/g,Df=W((t,e)=>{let r=t.match(iw);if(r&&r.length>1)throw new Error(e)},"assertStarCount"),aw=W(t=>{if(t.includes("*")){let[e,r]=t.split("*");return{prefix:e,suffix:r}}return t},"parsePattern"),lw=W(({prefix:t,suffix:e},r)=>r.startsWith(t)&&r.endsWith(e),"isPatternMatch"),cw=W((t,e,r)=>Object.entries(t).map(([n,o])=>(Df(n,`Pattern '${n}' can have at most one '*' character.`),{pattern:aw(n),substitutions:o.map(s=>{if(Df(s,`Substitution '${s}' in pattern '${n}' can have at most one '*' character.`),!e&&!ml.test(s)&&!X.isAbsolute(s))throw new Error("Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?");return X.resolve(r,s)})})),"parsePaths"),uw=W(t=>{let{compilerOptions:e}=t.config;if(!e)return null;let{baseUrl:r,paths:n}=e;if(!r&&!n)return null;let o=cl in e&&e[cl],s=X.resolve(X.dirname(t.path),r||o||"."),i=n?cw(n,r,s):[],l=new Map,c=[];for(let f of i)typeof f.pattern=="string"?l.set(f.pattern,f.substitutions):c.push(f);return{exactEntries:l,patternEntries:c,resolvedBaseUrl:s,baseUrl:r}},"compilePaths"),Nf=new WeakMap,Ms=W((t,e)=>{let r=Nf.get(t);if(r===void 0&&(r=uw(t),Nf.set(t,r)),!r)return[];if(ml.test(e))return[];let{exactEntries:n,patternEntries:o,resolvedBaseUrl:s,baseUrl:i}=r,l=n.get(e);if(l)return l.map(je);let c,f=-1;for(let a of o)lw(a.pattern,e)&&a.pattern.prefix.length>f&&(f=a.pattern.prefix.length,c=a);if(!c)return i?[je(X.join(s,e))]:[];let d=e.slice(c.pattern.prefix.length,e.length-c.pattern.suffix.length);return c.substitutions.map(a=>je(a.replace("*",d)))},"resolvePathAlias"),Fs=Y(t=>{if(t)return hl(t);try{return sw()??void 0}catch{}},"loadTsconfig"),dw=`
|
|
90
|
+
|
|
91
|
+
`)},"createLog"),Cn=nm(Cf(Ef(" CJS "))),de=nm(xf(" ESM ")),Ar=new Map,mw=Y(async t=>{if(Ar.has(t))return Ar.get(t);if(!await qr.promises.access(t).then(()=>!0,()=>!1)){Ar.set(t,void 0);return}let e=await qr.promises.readFile(t,"utf8");try{let r=JSON.parse(e);return Ar.set(t,r),r}catch{throw new Error(`Error parsing: ${t}`)}},"readPackageJson"),hw=Y(t=>{if(Ar.has(t))return Ar.get(t);if(!qr.existsSync(t)){Ar.set(t,void 0);return}let e=qr.readFileSync(t,"utf8");try{let r=JSON.parse(e);return Ar.set(t,r),r}catch{throw new Error(`Error parsing: ${t}`)}},"readPackageJsonSync"),pw=Y(async t=>{let e=new URL("package.json",t);for(;!e.pathname.endsWith("/node_modules/package.json");){let r=Qs(e),n=await mw(r);if(n)return n;let o=e;if(e=new URL("../package.json",e),e.pathname===o.pathname)break}},"findPackageJson"),om=Y(t=>{let e=new URL("package.json",t);for(;!e.pathname.endsWith("/node_modules/package.json");){let r=Qs(e),n=hw(r);if(n)return n;let o=e;if(e=new URL("../package.json",e),e.pathname===o.pathname)break}},"findPackageJsonSync"),sm=Y(async t=>(await pw(t))?.type??"commonjs","getPackageType"),im=Y(t=>om(t)?.type??"commonjs","getPackageTypeSync"),gw=Y(t=>om(t)?.type,"getNearestPackageTypeSync"),am=[".js",".json"],lm=[".ts",".tsx",".jsx"],Aw=[...lm,...am],yw=[...am,...lm],Ao=Object.create(null);Ao[".js"]=[".ts",".tsx",".js",".jsx"],Ao[".jsx"]=[".tsx",".ts",".jsx",".js"],Ao[".cjs"]=[".cts"],Ao[".mjs"]=[".mts"];Ks=Y(t=>{let e=t.split("?"),r=e[1]?`?${e[1]}`:"",[n]=e,o=X.extname(n),s=[],i=Ao[o];if(i){let c=n.slice(0,-o.length);s.push(...i.map(f=>c+f+r))}let l=!(t.startsWith(mt)||Jr(n))||n.includes(rm)||n.includes("/node_modules/")?yw:Aw;return s.push(...l.map(c=>n+c+r)),s},"mapTsExtensions"),ul=Y(t=>Array.from(t).length>0?`?${t.toString()}`:"","urlSearchParamsStringify"),ww=[".cts",".mts",".ts",".tsx",".jsx"],bw=[".js",".cjs",".mjs"],Ff=[".ts",".tsx",".jsx"],Uf="module.exports",Ew=Y(t=>{let e=X.extname(t);return e===".mjs"||e===".mts"||(e===".js"||e===".ts")&&gw(py(t).toString())!=="commonjs"},"isRequireEsmCandidate"),nl=Y((t,e,r,n)=>{let o=Object.getOwnPropertyDescriptor(t,e);o?.set?t[e]=r:(!o||o.configurable)&&Object.defineProperty(t,e,{value:r,enumerable:o?.enumerable||n?.enumerable,writable:n?.writable??(o?o.writable:!0),configurable:n?.configurable??(o?o.configurable:!0)})},"safeSet"),xw=Y((t,e,r,n)=>{let o=e[".js"],s=vt(Ou),i=Y((l,c)=>{if(t.enabled===!1)return o(l,c);let[f,d]=c.split("?");if((new URLSearchParams(d).get("namespace")??void 0)!==n)return o(l,c);Cn(2,"load",{filePath:c}),l.id.startsWith("data:text/javascript,")&&(l.path=X.dirname(f)),hr?.send&&hr.send({type:"dependency",path:f});let a=ww.some(w=>f.endsWith(w)),h=bw.some(w=>f.endsWith(w));if(!a&&!h)return o(l,f);let p=qr.readFileSync(f,"utf8"),g=h&&!f.endsWith(".cjs")&&!f.endsWith(".cts")&&mo(p),x=(a||g)&&r&&Ns(r,f)?r.config:void 0;if(f.endsWith(".cjs")){let w=mr(c,p);w&&(p=Mf()?St(w):w.code)}else if(a||g){let w=jr(p,c,{tsconfigRaw:x});p=Mf()?St(w):w.code}Cn(1,"loaded",{filePath:f}),l._compile(p,f),d&&it._cache[f]===l&&(it._cache[c]=l,delete it._cache[f]);let{exports:A}=l;(s&&A&&(typeof A=="object"||typeof A=="function")?Object.getOwnPropertyDescriptor(A,Uf):void 0)?.get&&Ew(f)&&(l.exports=A[Uf])},"transformer");nl(e,".js",i);for(let l of Ff)nl(e,l,i,{enumerable:!n,writable:!0,configurable:!0});return nl(e,".mjs",i,{writable:!0,configurable:!0}),()=>{e[".js"]===i&&(e[".js"]=o);for(let l of[...Ff,".mjs"])e[l]===i&&delete e[l]}},"createExtensions"),vw=Y(t=>e=>{if((e==="."||e===".."||e.endsWith("/.."))&&(e+="/"),yr.test(e)){let r=X.join(e,"index");e.startsWith("./")&&(r=`./${r}`);try{return t(r)}catch{}}try{return t(e)}catch(r){let n=r;if(n.code==="MODULE_NOT_FOUND")try{return t(`${e}${X.sep}index`)}catch{}throw n}},"createImplicitResolver"),Ps=Y((t,e,r,n)=>{if(Cn(3,"resolveTsFilename",{request:e,isDirectory:yr.test(e),isTsParent:r,allowJs:n}),yr.test(e)||!r&&!n)return;let o=Ks(e);if(o)for(let s of o)try{return t(s)}catch(i){let{code:l}=i;if(l!=="MODULE_NOT_FOUND"&&l!=="ERR_PACKAGE_PATH_NOT_EXPORTED")throw i}},"resolveTsFilename"),Cw=Y((t,e,r)=>n=>{if(Cn(3,"resolveTsFilename",{request:n,isTsParent:e,isFilePath:Jr(n)}),Jr(n)){let o=Ps(t,n,e,r);if(o)return o}try{return t(n)}catch(o){let s=o;if(s.code==="MODULE_NOT_FOUND"){if(s.path){let l=s.message.match(/^Cannot find module '([^']+)'$/);if(l){let f=l[1],d=Ps(t,f,e,r);if(d)return d}let c=s.message.match(/^Cannot find module '([^']+)'. Please verify that the package.json has a valid "main" entry$/);if(c){let f=c[1],d=Ps(t,f,e,r);if(d)return d}}let i=Ps(t,n,e,r);if(i)return i}throw s}},"createTsExtensionResolver"),jf="at cjsPreparseModuleExports (node:internal",kw=Y(t=>{let e=t.stack.split(`
|
|
92
|
+
`).slice(1);return e[1].includes(jf)||e[2].includes(jf)},"isFromCjsLexer"),Sw=Y((t,e)=>{let r=t.split("?"),n=new URLSearchParams(r[1]);if(e?.filename){let o=Wf(e.filename),s;if(o){let l=o.split("?"),c=l[0];s=l[1];let f=new URLSearchParams(s).get("namespace");e.filename=c,e.path=X.dirname(c),e.paths=it._nodeModulePaths(e.path),f||(it._cache[c]=e)}s||(s=e.filename.split("?")[1]);let i=new URLSearchParams(s).get("namespace");i&&n.append("namespace",i)}return[r[0],n,(o,s)=>(X.isAbsolute(o)&&!o.endsWith(".json")&&!o.endsWith(".node")&&!(s===0&&kw(new Error))&&(o+=ul(n)),o)]},"preserveQuery"),_w=Y((t,e,r,n)=>{if(t.startsWith(mt)&&(t=Qs(t)),n&&!Jr(t)&&!e?.filename?.includes(rm)){let o=Ms(n,t);for(let s of o)try{return r(s)}catch{}}return r(t)},"resolveTsPaths"),Tw=Y((t,e,r,n)=>(o,s,...i)=>{if(t.enabled===!1)return e(o,s,...i);o=dl(o);let[l,c,f]=Sw(o,s);if((c.get("namespace")??void 0)!==n)return e(o,s,...i);Cn(2,"resolve",{request:o,parent:s?.filename??s,restOfArgs:i});let d=Y(h=>e(h,s,...i),"nextResolveSimple");d=Cw(d,!!(n||s?.filename&&br.test(s.filename)),r?.config.compilerOptions?.allowJs??!1),d=vw(d);let a=f(_w(l,s,d,r),i.length);return Cn(1,"resolved",{request:o,parent:s?.filename??s,resolved:a}),a},"createResolveFilename"),Kf=Y((t,e)=>{if(!e)throw new Error("The current file path (__filename or import.meta.url) must be provided in the second argument of tsx.require()");return t.startsWith(".")?((typeof e=="string"&&e.startsWith(mt)||e instanceof URL)&&(e=Qs(e)),X.resolve(X.dirname(e),t)):t},"resolveContext"),Eo=Y(t=>{let{sourceMapsEnabled:e}=process,r={enabled:!0},n=Fs(process.env.TSX_TSCONFIG_PATH);process.setSourceMapsEnabled(!0);let o=it._resolveFilename,s=Tw(r,o,n,t?.namespace);it._resolveFilename=s;let i=xw(r,it._extensions,n,t?.namespace),l=t?.namespace?void 0:fw(),c=Y(()=>{e===!1&&process.setSourceMapsEnabled(!1),r.enabled=!1,it._resolveFilename===s&&(it._resolveFilename=o),i(),l?.()},"unregister");if(t?.namespace){let f=Y((a,h)=>{let p=Kf(a,h),[g,x]=p.split("?"),A=new URLSearchParams(x);return t.namespace&&!g.startsWith("node:")&&A.set("namespace",t.namespace),Or(g+ul(A))},"scopedRequire");c.require=f;let d=Y((a,h,p)=>{let g=Kf(a,h),[x,A]=g.split("?"),w=new URLSearchParams(A);return t.namespace&&!x.startsWith("node:")&&w.set("namespace",t.namespace),s(x+ul(w),module,!1,p)},"scopedResolve");c.resolve=d,c.unregister=c}return c},"register")});import Sn from"node:module";import{MessageChannel as Bw}from"node:worker_threads";import{pathToFileURL as Lt,fileURLToPath as wl}from"node:url";import{readFileSync as Rw}from"node:fs";import{readFile as Pw}from"node:fs/promises";import Vr from"node:path";var Iw,ne,Co,Am,Pk,$k,$w,Ow,Er,Vs,cm,ko,xo,bl,Gs,Lw,Qw,Dw,Hr,um,ym,wm,Nw,Mw,qs,Yr,Fw,El,bm,Em,Uw,xm,jw,vm,Cm,Al,Kw,Ww,Ok,Gw,qw,km,Hs,zs,Sm,Js,vo,Jw,gl,dm,fm,Yw,Vw,Ys,yl,_m,Hw,zw,Lk,mm,hm,Xw,Zw,pm,eb,tb,Tm,rb,nb,gm,xl,Im=xe(()=>{to();Ws();Ss();Ts();Iw=Object.defineProperty,ne=(t,e)=>Iw(t,"name",{value:e,configurable:!0}),Co={active:!0,parsedTsconfig:void 0},Am=ne(t=>{let e={active:!0,namespace:t?.namespace,onImport:t?.onImport,parsedTsconfig:void 0,port:t?.port,tsconfig:t?.tsconfig};return t?.tsconfig!==!1&&(e.parsedTsconfig=Fs(t?.tsconfig??process.env.TSX_TSCONFIG_PATH)),e},"createData"),Pk=ne(async t=>{if(!t)throw new Error(`tsx must be loaded with --import instead of --loader
|
|
93
|
+
The --loader flag was deprecated in Node v20.6.0 and v18.19.0`);Object.assign(Co,Am(t)),t.port&&t.port.on("message",e=>{e==="deactivate"&&(Co.active=!1,t.port.postMessage({type:"deactivated"}))})},"initialize"),$k=ne(()=>(Co.parsedTsconfig=Fs(process.env.TSX_TSCONFIG_PATH),"process.setSourceMapsEnabled(true);"),"globalPreload"),$w=ne(t=>{let{pathname:e}=new URL(t),r=Vr.extname(e);if(r===".mts"||r===".mjs")return"module";if(r===".cts"||r===".cjs")return"commonjs";if(r===".js"||pl.includes(r))return sm(t)},"getFormatFromFileUrl"),Ow=ne(t=>{let{pathname:e}=new URL(t),r=Vr.extname(e);if(r===".mts"||r===".mjs")return"module";if(r===".cts"||r===".cjs")return"commonjs";if(r===".js"||pl.includes(r))return im(t)},"getFormatFromFileUrlSync"),Er="tsx-namespace=",Vs="tsx-commonjs-export-preparse",cm=`${Vs}=1`,ko="tsx-commonjs-virtual-query",xo=new Map,bl=ne((t,e)=>t.slice(1).split("&").filter(r=>r&&e.every(n=>!r.startsWith(n))).join("&"),"getQueryWithoutParameters"),Gs=ne((t,e)=>{let r=bl(t,e);return r?`?${r}`:""},"getSearchWithoutParameters"),Lw=ne(t=>t.replaceAll(/\/\*[\s\S]*?\*\/|\/\/[^\n\r]*/g,""),"stripComments"),Qw=ne(t=>{let e=Lw(t);if(/^\s*export\s*\*/.test(e))return"named";if(/^\s*import\s*\*\s*as\s+[\w$]+/.test(e))return"namespace";let r=e.match(/\{([^}]*)\}/)?.[1];if(r)return r.split(",").some(n=>{let o=n.trim().split(/\s+as\s+/)[0];return!!(o&&o!=="default")})?"named":void 0},"getCommonJsImportBinding"),Dw=ne((t,e,r)=>{let n=xo.get(t);if(!n)return!1;try{let[o]=ks(n);return o.some(s=>{if(s.d!==-1||s.n!==e)return!1;let i=Qw(n.slice(s.ss,s.s));return i==="named"||r&&i==="namespace"})}catch{return!1}},"parentImportsCommonJsExports"),Hr=ne(t=>{let e=t.indexOf(Er);if(e===-1)return;let r=t[e-1];if(r!=="?"&&r!=="&")return;let n=e+Er.length,o=t.indexOf("&",n);return o===-1?t.slice(n):t.slice(n,o)},"getNamespace"),um=vt(Pu)?"importAttributes":"importAssertions",ym=ne(t=>t==="commonjs"||t==="commonjs-typescript","isCommonJsFormat"),wm=ne(t=>t==="module-typescript"||t==="typescript","isModuleTypeScriptFormat"),Nw=vt(un),Mw=[`${ko}=`],qs=[`${Vs}=`,`${ko}=`],Yr=ne((t,e)=>e.parsedTsconfig&&Ns(e.parsedTsconfig,t)?e.parsedTsconfig.config:void 0,"getTsconfigRaw"),Fw=ne(t=>{if(!t.searchParams.has(ko))return;let{pathname:e}=t,r=e.toLowerCase().lastIndexOf("%3f");if(r===-1)return;let n=new URL(t);return n.pathname=e.slice(0,r),n.search="",wl(n)},"getFilePathFromVirtualQuery"),El=ne(t=>{let e=t.startsWith(mt)?new URL(t):void 0,r=e?wl(e):t,n=e&&Fw(e),o=n||r,s=e&&n?Lt(o).toString()+Gs(e.search,Mw):t;return{fileUrl:e,filePath:o,loadUrl:s}},"getFileLoadContext"),bm=ne((t,e)=>{if(!e?.search)return t;let r=Gs(e.search,qs);return r?Lt(t).toString()+r:t},"getTransformPath"),Em=ne((t,e,r)=>{let n=[...e?bl(e.search,[Er,...qs]).split("&").filter(Boolean):[],...r?[`namespace=${encodeURIComponent(r)}`]:[]].join("&");return n?`${t}?${n}`:t},"getFilePathWithQuery"),Uw=new TextDecoder,xm=ne(t=>typeof t=="string"?t:Uw.decode(t),"decodeSource"),jw=ne((t,e)=>{let r=new URL(e),n=e.startsWith(mt)?El(e).filePath:void 0;r.searchParams.delete("tsx-namespace"),r.searchParams.delete(Vs),r.searchParams.delete(ko),n&&(r.pathname=new URL(Lt(n)).pathname);let o=r.toString();return t.port&&t.port.postMessage({type:"load",url:o}),t.onImport?.(o),o},"notifyLoad"),vm=ne((t,e)=>{if(!t.active)return!1;let r=Hr(e);if(t.namespace&&t.namespace!==r)return!1;let n=jw(t,e);return hr.send&&hr.send({type:"dependency",path:n}),!0},"prepareLoad"),Cm=ne((t,e)=>{if(!em.test(t))return e;let r=e[um];return r?.type?e:{...e,[um]:{...r,type:"json"}}},"prepareJsonAttributes"),Al=ne(({conditions:t})=>t?.includes("require")===!0&&!t.includes("import"),"isCommonJsRequireContext$1"),Kw=ne(t=>{let e=ne(async(r,n,o)=>{if(!vm(t,r))return o(r,n);let s=Hr(r),{fileUrl:i,filePath:l,loadUrl:c}=El(r),f=Cm(c,n),d=await o(c,f);de(3,"loaded by next loader",{url:r,loadUrl:c,loaded:d});let a=i?.searchParams.has(Vs)===!0,h=d.format,p=i?new URL(Lt(l)):void 0;if(p&&i&&(p.search=Gs(i.search,qs)),ym(h)&&i&&d.responseURL?.startsWith("file:")&&!l.endsWith(".cjs")){let A=await Pw(Lt(l),"utf8"),w=mo(A);if(h==="commonjs-typescript"||!l.endsWith(".js")||w){if(!Nw){if(a&&w&&js.test(l)){let B=await Ya(A,l,{define:{"import.meta.url":JSON.stringify(p.toString())},tsconfigRaw:Yr(l,t)});return xo.set(r,B.code),{format:"module",source:St(B)}}return d}if(!s&&!a&&!l.endsWith(".cts"))return d;let O=!!(s||a||Gs(i.search,qs)),T=jr(A,bm(l,i),{cjsBanner:O?`require = require("node:module").createRequire(${JSON.stringify(Lt(l).toString())});`:void 0,tsconfigRaw:Yr(l,t)});if(d.format="commonjs",d.source=St(T),O){let B=Em(l,i,s);d.responseURL=`data:text/javascript,${encodeURIComponent(T.code)}?filePath=${encodeURIComponent(B)}`}return de(3,"returning CJS export annotation",d),d}}if(!d.source)return d;let g=xm(d.source),x=h==="json"&&!Al(n);if(h==="commonjs-typescript"){let A=jr(g,l,{tsconfigRaw:Yr(l,t)});return{...d,format:"commonjs",source:St(A)}}if(x||wm(h)||br.test(r)){let A=await Ya(g,l,{tsconfigRaw:Yr(l,t)});return xo.set(r,A.code),{format:"module",source:St(A)}}if(d.format==="module"){let A=mr(l,g);A?(d.source=St(A),xo.set(r,A.code)):xo.set(r,g)}return d},"load2");return wr?async(r,n,o)=>{de(2,"load",{url:r,context:n});let s=await e(r,n,o);return de(1,"loaded",{url:r,result:s}),s}:e},"createLoad"),Ww=ne(t=>{let e=ne((r,n,o)=>{if(Al(n)&&Us()||!vm(t,r))return o(r,n);let s=Hr(r),{fileUrl:i,filePath:l,loadUrl:c}=El(r),f=Cm(c,n),d=o(c,f);de(3,"loaded by next loader",{url:r,loadUrl:c,loaded:d});let a=d.format;if(ym(a)&&vt(un)&&d.responseURL?.startsWith("file:")&&!l.endsWith(".cjs")){let g=Rw(Lt(l),"utf8");if(a==="commonjs-typescript"||!l.endsWith(".js")||mo(g)){let x=jr(g,bm(l,i),{tsconfigRaw:Yr(l,t)}),A=!s&&Us(),w=Em(l,i,s);return d.format="commonjs",d.shouldBeReloadedByCJSLoader=A,d.source=St(x),A||(d.responseURL=`data:text/javascript,${encodeURIComponent(x.code)}?filePath=${encodeURIComponent(w)}`),de(3,"returning CJS export annotation",d),d}}if(!d.source)return d;let h=xm(d.source),p=a==="json"&&!Al(n);if(a==="commonjs-typescript"){let g=jr(h,l,{tsconfigRaw:Yr(l,t)});return{...d,format:"commonjs",shouldBeReloadedByCJSLoader:!1,source:St(g)}}if(p||wm(a)||br.test(r)){let g=bf(h,l,{tsconfigRaw:Yr(l,t)});return{format:"module",source:St(g)}}if(d.format==="module"){let g=mr(l,h);g&&(d.source=St(g))}return d},"load2");return wr?(r,n,o)=>{de(2,"loadSync",{url:r,context:n});let s=e(r,n,o);return de(1,"loadedSync",{url:r,result:s}),s}:e},"createLoadSync"),Ok=Kw(Co),Gw=vt(un),qw=/^(?:[a-z][\d+.a-z-]*:\/\/|data:|file:|node:)/i,km=ne(t=>!Jr(t)&&!qw.test(t),"isTsconfigPathAliasSpecifier"),Hs=ne(t=>{if(t.url)return t.url;let e=t.message.match(/^Cannot find module '([^']+)'/);if(e){let[,n]=e;return n}let r=t.message.match(/^Cannot find package '([^']+)'/);if(r){let[,n]=r;if(!Vr.isAbsolute(n))return;let o=Lt(n);if(o.pathname.endsWith("/")&&(o.pathname+="package.json"),o.pathname.endsWith("/package.json")){let s=Pa(o);if(s?.main)return new URL(s.main,o).toString()}else return o.toString()}},"getMissingPathFromNotFound"),zs=ne(t=>t==="ERR_MODULE_NOT_FOUND"||t==="MODULE_NOT_FOUND","isModuleNotFound"),Sm=ne(t=>t.conditions.includes("require")&&!t.conditions.includes("import"),"isCommonJsRequireContext"),Js=ne(async(t,e,r,n)=>{let o=Ks(t);if(de(3,"resolveExtensions",{url:t,context:e,throwError:n,tryPaths:o}),!o)return;let s;for(let i of o)try{return await r(i,e)}catch(l){let{code:c}=l;if(!zs(c)&&c!=="ERR_PACKAGE_PATH_NOT_EXPORTED")throw l;s=l}if(n)throw s},"resolveExtensions"),vo=ne((t,e,r,n)=>{let o=Ks(t);if(de(3,"resolveExtensionsSync",{url:t,context:e,throwError:n,tryPaths:o}),!o)return;let s;for(let i of o)try{return r(i,e)}catch(l){let{code:c}=l;if(!zs(c)&&c!=="ERR_PACKAGE_PATH_NOT_EXPORTED")throw l;s=l}if(n)throw s},"resolveExtensionsSync"),Jw=ne(async(t,e,r,n)=>{let o=n.parsedTsconfig?.config.compilerOptions?.allowJs??!1;if(de(3,"resolveBase",{specifier:t,context:e,specifierStartsWithFileUrl:t.startsWith(mt),isRelativePath:kn(t),tsExtensionsPattern:br.test(e.parentURL),allowJs:o}),(t.startsWith(mt)||kn(t))&&(br.test(e.parentURL)||o)){let s=await Js(t,e,r);if(de(3,"resolveBase resolved",{specifier:t,context:e,resolved:s}),s)return s}try{return await r(t,e)}catch(s){if(de(3,"resolveBase error",{specifier:t,context:e,error:s}),s instanceof Error){let i=s;if(zs(i.code)){let l=Hs(i);if(l){let c=await Js(l,e,r);if(c)return c}}}throw s}},"resolveBase"),gl=ne((t,e,r,n)=>{let o=n.parsedTsconfig?.config.compilerOptions?.allowJs??!1;if(de(3,"resolveBaseSync",{specifier:t,context:e,specifierStartsWithFileUrl:t.startsWith(mt),isRelativePath:kn(t),tsExtensionsPattern:br.test(e.parentURL),allowJs:o}),(t.startsWith(mt)||kn(t))&&(br.test(e.parentURL)||o)){let s=vo(t,e,r);if(de(3,"resolveBaseSync resolved",{specifier:t,context:e,resolved:s}),s)return s}try{return r(t,e)}catch(s){if(de(3,"resolveBaseSync error",{specifier:t,context:e,error:s}),s instanceof Error){let i=s;if(zs(i.code)){let l=Hs(i);if(l){let c=vo(l,e,r);if(c)return c}}}throw s}},"resolveBaseSync"),dm=ne(async(t,e,r,n)=>{if(de(3,"resolveDirectory",{specifier:t,context:e,isDirectory:yr.test(t)}),(t==="."||t===".."||t.endsWith("/.."))&&(t+="/"),yr.test(t)){let o=new URL(t,e.parentURL);return o.pathname=Vr.join(o.pathname,"index"),await Js(o.toString(),e,r,!0)}try{return await Jw(t,e,r,n)}catch(o){if(o instanceof Error){de(3,"resolveDirectory error",{specifier:t,context:e,error:o});let s=o;if(s.code==="ERR_UNSUPPORTED_DIR_IMPORT"){let i=Hs(s);if(i)try{return await Js(`${i}/index`,e,r,!0)}catch(l){let c=l,{message:f}=c;throw c.message=c.message.replace(`${"/index".replace("/",Vr.sep)}'`,"'"),c.stack=c.stack.replace(f,c.message),c}}}throw o}},"resolveDirectory"),fm=ne((t,e,r,n)=>{if(de(3,"resolveDirectorySync",{specifier:t,context:e,isDirectory:yr.test(t)}),(t==="."||t===".."||t.endsWith("/.."))&&(t+="/"),yr.test(t)){let o=Sm(e);if(o&&!Jr(t))return gl(t,e,r,n);let s=new URL(t,e.parentURL);return s.pathname=Vr.join(s.pathname,"index"),o?vo(wl(s),e,r,!1)??gl(t,e,r,n):vo(s.toString(),e,r,!0)}try{return gl(t,e,r,n)}catch(o){if(o instanceof Error){de(3,"resolveDirectorySync error",{specifier:t,context:e,error:o});let s=o;if(s.code==="ERR_UNSUPPORTED_DIR_IMPORT"){let i=Hs(s);if(i)try{return vo(`${i}/index`,e,r,!0)}catch(l){let c=l,{message:f}=c;throw c.message=c.message.replace(`${"/index".replace("/",Vr.sep)}'`,"'"),c.stack=c.stack.replace(f,c.message),c}}}throw o}},"resolveDirectorySync"),Yw=ne(async(t,e,r,n)=>{let o=km(t);if(de(3,"resolveTsPaths",{specifier:t,context:e,tsconfigPathAliasSpecifier:o,tsconfig:n.parsedTsconfig,fromNodeModules:e.parentURL?.includes("/node_modules/")}),o&&n.parsedTsconfig&&!e.parentURL?.includes("/node_modules/")){let s=Ms(n.parsedTsconfig,t);de(3,"resolveTsPaths",{possiblePaths:s});for(let i of s)try{return await dm(Lt(i).toString(),e,r,n)}catch{}}return dm(t,e,r,n)},"resolveTsPaths"),Vw=ne((t,e,r,n)=>{let o=km(t);if(de(3,"resolveTsPathsSync",{specifier:t,context:e,tsconfigPathAliasSpecifier:o,tsconfig:n.parsedTsconfig,fromNodeModules:e.parentURL?.includes("/node_modules/")}),o&&n.parsedTsconfig&&!e.parentURL?.includes("/node_modules/")){let s=Ms(n.parsedTsconfig,t);de(3,"resolveTsPathsSync",{possiblePaths:s});for(let i of s)try{return fm(Lt(i).toString(),e,r,n)}catch{}}return fm(t,e,r,n)},"resolveTsPathsSync"),Ys="tsx://",yl=ne((t,e)=>`${t}${t.includes("?")?"&":"?"}${e}`,"addQuery"),_m=ne((t,e,r)=>{if(e!=="commonjs"||!t.startsWith(mt)||!js.test(t))return t;let n=new URL(t),o=[bl(n.search,[Er]),...r?[`namespace=${encodeURIComponent(r)}`]:[]].filter(Boolean).join("&");return o?(n.pathname+=`%3F${o}`,n.searchParams.set(ko,"1"),n.toString()):t},"preserveCommonJsQueryIdentity"),Hw=ne(t=>{let e=ne(async(r,n,o)=>{if(!t.active||r.startsWith("node:"))return o(r,n);let s=Hr(r)??(n.parentURL&&Hr(n.parentURL));if(t.namespace){let d;if(r.startsWith(Ys)){try{d=JSON.parse(r.slice(Ys.length))}catch{}d?.namespace&&(s=d.namespace)}if(t.namespace!==s)return o(r,n);d&&(r=d.specifier,n.parentURL=d.parentURL)}let[i,l]=r.split("?"),c=await Yw(i,n,o,t);if(de(2,"nextResolve",{resolved:c}),c.format==="builtin")return c;(!c.format||c.format==="commonjs-typescript"||c.format==="module-typescript")&&c.url.startsWith(mt)&&(c.format=await $w(c.url),de(2,"getFormatFromFileUrl",{resolved:c,format:c.format})),l&&(c.url+=`?${l}`);let f=n.parentURL&&c.format==="commonjs"&&js.test(c.url)&&(n.parentURL.includes(cm)||Dw(n.parentURL,r,Gw));return s&&!c.url.includes(Er)&&(c.url=yl(c.url,`${Er}${s}`)),f&&(c.url=yl(c.url,cm)),(s||f)&&(c.url=_m(c.url,c.format,s)),c},"resolve2");return wr?async(r,n,o)=>{de(2,"resolve",{specifier:r,context:n});let s=await e(r,n,o);return de(1,"resolved",{specifier:r,context:n,result:s}),s}:e},"createResolve"),zw=ne(t=>{let e=ne((r,n,o)=>{if(!t.active||r.startsWith("node:")||Sm(n)&&Us())return o(r,n);let s=Hr(r)??(n.parentURL&&Hr(n.parentURL));if(t.namespace){let f;if(r.startsWith(Ys)){try{f=JSON.parse(r.slice(Ys.length))}catch{}f?.namespace&&(s=f.namespace)}if(t.namespace!==s)return o(r,n);f&&(r=f.specifier,n.parentURL=f.parentURL)}let[i,l]=r.split("?"),c=Vw(i,n,o,t);return de(2,"nextResolve",{resolved:c}),c.format==="builtin"||((!c.format||c.format==="commonjs-typescript"||c.format==="module-typescript")&&c.url.startsWith(mt)&&(c.format=Ow(c.url),de(2,"getFormatFromFileUrlSync",{resolved:c,format:c.format})),l&&(c.url+=`?${l}`),s&&!c.url.includes(Er)&&(c.url=yl(c.url,`${Er}${s}`)),c.url=_m(c.url,c.format,s)),c},"resolve2");return wr?(r,n,o)=>{de(2,"resolveSync",{specifier:r,context:n});let s=e(r,n,o);return de(1,"resolvedSync",{specifier:r,context:n,result:s}),s}:e},"createResolveSync"),Lk=Hw(Co),mm=ne(t=>(e,r)=>{if(!r)throw new Error("The current file path (import.meta.url) must be provided in the second argument of tsImport()");let n=r.startsWith(mt)?r:Lt(r).toString();return import(`tsx://${JSON.stringify({specifier:e,parentURL:n,namespace:t})}`)},"createScopedImport"),hm=!1,Xw=ne(t=>{let e=[];for(let r=0;r<t.length;r+=1){let n=t[r];if(n==="--import"){let o=t[r+1];o&&e.push(o),r+=1}else n.startsWith("--import=")&&e.push(n.slice(9))}return e},"collectImportSpecifiers"),Zw=ne(()=>[...(process.env.NODE_OPTIONS??"").matchAll(/(?:^|\s)--import(?:=|\s+)(\S+)/g)].map(([,t])=>t),"collectNodeOptionsImportSpecifiers"),pm=[new URL("loader.mjs",import.meta.url).toString(),new URL("esm/index.mjs",import.meta.url).toString()],eb=new Set(["tsx","tsx/esm",...pm,...pm.map(t=>decodeURI(new URL(t).pathname))]),tb=ne(t=>eb.has(t),"isTsxImport"),Tm=ne(t=>/\.(?:[cm]?ts|tsx)(?:[?#].*)?$/.test(t),"isTypeScriptImport"),rb=ne(()=>{let t=Xw(process.execArgv),e=t.findIndex(tb);return e>0&&t.slice(0,e).some(Tm)},"hasCliTypeScriptPreload"),nb=Zw().some(Tm)||rb(),gm=typeof Sn.registerHooks=="function"&&vt(Ru)&&!nb,xl=ne(t=>{if(!Sn.register&&!gm)throw new Error(`This version of Node.js (${process.version}) does not support module.register(). Please upgrade to Node v18.19 or v20.6 and above.`);if(!hm){let{_resolveFilename:l}=Sn;Sn._resolveFilename=(c,...f)=>l(dl(c),...f),hm=!0}let{sourceMapsEnabled:e}=process;if(process.setSourceMapsEnabled(!0),gm){let l=Am({namespace:t?.namespace,onImport:t?.onImport,tsconfig:t?.tsconfig}),c=Sn.registerHooks({load:Ww(l),resolve:zw(l)}),f=ne(async()=>{l.active=!1,c.deregister(),e===!1&&process.setSourceMapsEnabled(!1)},"unregister2");return t?.namespace&&(f.import=mm(t.namespace),f.unregister=f),f}let{port1:r,port2:n}=new Bw;Sn.register(`./esm/index.mjs?${Date.now()}`,{parentURL:import.meta.url,data:{port:n,namespace:t?.namespace,tsconfig:t?.tsconfig},transferList:[n]});let o=t?.onImport,s=o&&(l=>{l.type==="load"&&o(l.url)});s&&(r.on("message",s),r.unref());let i=ne(()=>(e===!1&&process.setSourceMapsEnabled(!1),s&&r.off("message",s),r.postMessage("deactivate"),new Promise(l=>{let c=ne(f=>{f.type==="deactivated"&&(l(),r.off("message",c))},"onDeactivated");r.on("message",c)})),"unregister");return t?.namespace&&(i.import=mm(t.namespace),i.unregister=i),i},"register")});var ob,Rm,_n,Xs,Bm,Pm=xe(()=>{ro();Ws();ob=Object.defineProperty,Rm=(t,e)=>ob(t,"name",{value:e,configurable:!0}),Xs=Rm((t,e)=>(_n||(_n=Eo({namespace:Date.now().toString()})),_n.require(t,e)),"tsxRequire"),Bm=Rm((t,e,r)=>(_n||(_n=Eo({namespace:Date.now().toString()})),_n.resolve(t,e,r)),"resolve");Bm.paths=Or.resolve.paths,Xs.resolve=Bm,Xs.main=Or.main,Xs.extensions=Or.extensions,Xs.cache=Or.cache});var $m={};yt($m,{register:()=>xl,tsImport:()=>ab});var qk,sb,ib,ab,Om=xe(()=>{Im();ro();Ws();Pm();to();Ss();qk=ta(ua(),1);ss();Ts();Ha();sb=Object.defineProperty,ib=(t,e)=>sb(t,"name",{value:e,configurable:!0}),ab=ib((t,e)=>{if(!e||typeof e=="object"&&!e.parentURL)throw new Error("The current file path (import.meta.url) must be provided in the second argument of tsImport()");let r=typeof e=="string",n=r?e:e.parentURL,o=Date.now().toString(),s=Eo({namespace:o});return!vt(un)&&!tm.test(t)&&Zf.test(t)?Promise.resolve(s.require(t,n)):xl({namespace:o,...r?{}:e}).import(t,n)},"tsImport")});function Vb(){let t=process.env.AIAIAI_LOG_LEVEL?.toLowerCase();return t&&t in Ol?t:"info"}function si(t){return Ol[t]>=Ol[Vb()]}function ii(t,e,r,n){let s=`[${new Date().toISOString()}] [${t.toUpperCase()}] [${e}]`,i=n?` ${JSON.stringify(n)}`:"";return`${s} ${r}${i}`}var Ol,Z,Ye=xe(()=>{"use strict";Ol={debug:0,info:1,warn:2,error:3};Z={debug(t,e,r){si("debug")&&console.error(ii("debug",t,e,r))},info(t,e,r){si("info")&&console.error(ii("info",t,e,r))},warn(t,e,r){si("warn")&&console.error(ii("warn",t,e,r))},error(t,e,r){si("error")&&console.error(ii("error",t,e,r))}}});var ai,Ll,Cr,Ro=xe(()=>{"use strict";ai=class extends Error{code;context;timestamp;recoverable;constructor(e,r="UNKNOWN",n){super(e),this.name="AgentError",this.code=r,this.context=n?.context,this.timestamp=Date.now(),this.recoverable=n?.recoverable??!1}},Ll=class{errors=[];maxErrors=100;record(e){this.errors.push({error:e,ts:Date.now()}),this.errors.length>this.maxErrors&&(this.errors=this.errors.slice(-this.maxErrors))}getRecent(e=20){return this.errors.slice(-e)}getByCode(e){return this.errors.filter(r=>r.error.code===e).map(r=>r.error)}getSummary(){let e={};for(let{error:r}of this.errors)e[r.code]=(e[r.code]??0)+1;return e}clear(){this.errors=[]}get count(){return this.errors.length}},Cr=new Ll});function oh(){let t=Date.now();return er.push(t),rh=t,er=er.filter(e=>t-e<nh),er.length>=Hb&&!Po?(Po=!0,!0):!1}function li(){return Po?Date.now()-rh>zb&&er.length===0?(Po=!1,!1):!0:!1}function sh(){Po=!1,er=[]}function ih(){let t=Date.now();return er=er.filter(e=>t-e<nh),er.length}var er,Po,rh,Hb,nh,zb,Ql=xe(()=>{"use strict";er=[],Po=!1,rh=0,Hb=10,nh=6e4,zb=6e4});var mh={};yt(mh,{getCircuitStats:()=>$o,isReachable:()=>gE,resilientFetch:()=>fe});import Xb from"node:dns";import Zb from"node:http";import eE from"node:https";function nE(t){try{let e=new URL(t);if(rE.has(e.protocol))return!1;let r=e.hostname;if(r==="localhost"||r==="127.0.0.1"||r==="0.0.0.0"||r==="::1"||r.startsWith("10.")||r.startsWith("192.168.")||r.startsWith("172."))return!1;for(let n of tE)if(r===n||r.endsWith("."+n))return!0;return!1}catch{return!1}}function sE(t,e,r){return`${e}:${t}:${r?.slice(0,200)??""}`}function iE(t){let e=Dl.get(t);if(!e)return;let r=Date.now();return e}function aE(t,e){Dl.set(t,e),setTimeout(()=>{Dl.delete(t)},oE)}function Ml(t){let e=Nl.get(t);return e||(e={failures:0,lastFailureTime:0,state:"closed"},Nl.set(t,e)),e}function dE(t){let e=Ml(t);return e.state==="closed"?!0:e.state==="open"?Date.now()-e.lastFailureTime>uE?(e.state="half-open",!0):!1:e.state==="half-open"}function fE(t){let e=Ml(t);e.failures=0,e.state="closed"}function mE(t){let e=Ml(t);e.failures++,e.lastFailureTime=Date.now(),e.failures>=cE&&(e.state="open")}function pE(t){let e=Date.now(),n=(dh.get(t)??[]).filter(o=>e-o<hE);return dh.set(t,n),n.length>=fh?!1:(n.push(e),!0)}async function fe(t,e={}){let{timeout:r=8e3,retries:n=2,backoffMs:o=1e3,onRetry:s,method:i="GET",headers:l,body:c,signal:f}=e;if(li())throw new Error("Panic mode active \u2014 external calls paused. Use /resume to continue.");if(!nE(t))throw new Error(`Blocked: URL '${t}' is not in the allowed outbound hosts list`);let d=new URL(t).hostname;if(!pE(d))throw new Error(`Rate limit exceeded for ${d} (max ${fh} req/min)`);if(!dE(d))throw new Error("Circuit open for "+d+" - service unavailable, retry later");let a=sE(t,i,c),h=iE(a);if(h)return h;let p=null,x=(async()=>{let A=[r,Math.max(2e3,Math.floor(r/2)),Math.max(2e3,Math.floor(r/4))];for(let w=0;w<=n;w++){let O=new AbortController,T=A[Math.min(w,A.length-1)],B=setTimeout(()=>O.abort(),T);f&&(f.aborted?O.abort():f.addEventListener("abort",()=>O.abort(),{once:!0}));try{let v=new URL(t),C=v.hostname,I=Date.now(),j=ah.get(C),F=lh.get(C);if(!j||!F||I-F>lE)try{Xb.resolve4(C,(U,q)=>{!U&&q&&q.length>0&&(ah.set(C,q[0]),lh.set(C,I))})}catch{}let Q=v.protocol==="https:"?uh:ch,P={...l&&Object.fromEntries(Object.entries(l).filter(([U])=>!["user-agent","x-powered-by","server","x-requested-with"].includes(U.toLowerCase()))),"Accept-Encoding":"gzip","User-Agent":"AIAIAI-Agent/1.0"},$={signal:O.signal,method:i,headers:P,body:c};(v.protocol==="https:"||v.protocol==="http:")&&($.agent=v.protocol==="https:"?uh:ch);let N=await fetch(t,$);if(clearTimeout(B),!N.ok){if([429,502,503,504].includes(N.status)&&w<n){let U=parseInt(N.headers.get("retry-after")||"0")*1e3,q=U>0?U:o*Math.pow(2,w);clearTimeout(B),await new Promise(H=>setTimeout(H,q));continue}throw new Error("HTTP "+N.status+": "+N.statusText)}return fE(d),N}catch(v){if(clearTimeout(B),p=v instanceof Error?v:new Error(String(v)),w<n){s?.(w+1,p);let C=o*Math.pow(2,w),I=C*.2*(Math.random()*2-1);await new Promise(j=>setTimeout(j,C+I))}}}if(mE(d),oh(),p){let w=new ai(p.message,"NETWORK_ERROR",{context:{url:t,attempts:n+1},recoverable:!0});Cr.record(w)}throw p})();return aE(a,x),x}function $o(){let t=[];for(let[e,r]of Nl)t.push({key:e,state:r.state,failures:r.failures,lastFailureTime:r.lastFailureTime});return t}async function gE(t,e=5e3){try{let r=new AbortController,n=setTimeout(()=>r.abort(),e),o=await fetch(t,{signal:r.signal});return clearTimeout(n),o.ok}catch{return!1}}var tE,rE,Dl,oE,ah,lE,lh,Nl,cE,uE,ch,uh,dh,fh,hE,ht=xe(()=>{"use strict";Ro();Ql();tE=new Set(["api.dexscreener.com","openrouter.ai","api.mainnet-beta.solana.com","rpc.ankr.com","solana-api.projectserum.com","api.alternative.me","api.coingecko.com","pro-api.coinmarketcap.com","api.llama.fi","api.binance.com","fapi.binance.com","api.telegram.org","discord.com","hooks.slack.com","googleapis.com","api.openai.com","api.anthropic.com","generativelanguage.googleapis.com","api.mistral.ai","api.cohere.ai","api.together.xyz","api.groq.com","api.deepinfra.com","api.endpoints.anyscale.com","api.perplexity.ai","api.fireworks.ai","api.ai21.com"]),rE=new Set(["file:","ftp:","gopher:","javascript:","data:"]);Dl=new Map,oE=2e3;ah=new Map,lE=5*601e3,lh=new Map,Nl=new Map,cE=3,uE=6e4,ch=new Zb.Agent({keepAlive:!0,maxSockets:10,maxFreeSockets:5}),uh=new eE.Agent({keepAlive:!0,maxSockets:10,maxFreeSockets:5});dh=new Map,fh=60,hE=6e4});var tr=Je((r_,Ah)=>{"use strict";var ph=["nodebuffer","arraybuffer","fragments"],gh=typeof Blob<"u";gh&&ph.push("blob");Ah.exports={BINARY_TYPES:ph,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:gh,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var Lo=Je((n_,ui)=>{"use strict";var{EMPTY_BUFFER:wE}=tr(),Fl=Buffer[Symbol.species];function bE(t,e){if(t.length===0)return wE;if(t.length===1)return t[0];let r=Buffer.allocUnsafe(e),n=0;for(let o=0;o<t.length;o++){let s=t[o];r.set(s,n),n+=s.length}return n<e?new Fl(r.buffer,r.byteOffset,n):r}function yh(t,e,r,n,o){for(let s=0;s<o;s++)r[n+s]=t[s]^e[s&3]}function wh(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function EE(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function Ul(t){if(Ul.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Fl(t):ArrayBuffer.isView(t)?e=new Fl(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),Ul.readOnly=!1),e}ui.exports={concat:bE,mask:yh,toArrayBuffer:EE,toBuffer:Ul,unmask:wh};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=ie("bufferutil");ui.exports.mask=function(e,r,n,o,s){s<48?yh(e,r,n,o,s):t.mask(e,r,n,o,s)},ui.exports.unmask=function(e,r){e.length<32?wh(e,r):t.unmask(e,r)}}catch{}});var xh=Je((o_,Eh)=>{"use strict";var bh=Symbol("kDone"),jl=Symbol("kRun"),Kl=class{constructor(e){this[bh]=()=>{this.pending--,this[jl]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[jl]()}[jl](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[bh])}}};Eh.exports=Kl});var Ln=Je((s_,Sh)=>{"use strict";var Qo=ie("zlib"),vh=Lo(),xE=xh(),{kStatusCode:Ch}=tr(),vE=Buffer[Symbol.species],CE=Buffer.from([0,0,255,255]),fi=Symbol("permessage-deflate"),rr=Symbol("total-length"),$n=Symbol("callback"),kr=Symbol("buffers"),On=Symbol("error"),di,Wl=class{constructor(e){if(this._options=e||{},this._threshold=this._options.threshold!==void 0?this._options.threshold:1024,this._maxPayload=this._options.maxPayload|0,this._isServer=!!this._options.isServer,this._deflate=null,this._inflate=null,this.params=null,!di){let r=this._options.concurrencyLimit!==void 0?this._options.concurrencyLimit:10;di=new xE(r)}}static get extensionName(){return"permessage-deflate"}offer(){let e={};return this._options.serverNoContextTakeover&&(e.server_no_context_takeover=!0),this._options.clientNoContextTakeover&&(e.client_no_context_takeover=!0),this._options.serverMaxWindowBits&&(e.server_max_window_bits=this._options.serverMaxWindowBits),this._options.clientMaxWindowBits?e.client_max_window_bits=this._options.clientMaxWindowBits:this._options.clientMaxWindowBits==null&&(e.client_max_window_bits=!0),e}accept(e){return e=this.normalizeParams(e),this.params=this._isServer?this.acceptAsServer(e):this.acceptAsClient(e),this.params}cleanup(){if(this._inflate&&(this._inflate.close(),this._inflate=null),this._deflate){let e=this._deflate[$n];this._deflate.close(),this._deflate=null,e&&e(new Error("The deflate stream was closed while data was being processed"))}}acceptAsServer(e){let r=this._options,n=e.find(o=>!(r.serverNoContextTakeover===!1&&o.server_no_context_takeover||o.server_max_window_bits&&(r.serverMaxWindowBits===!1||typeof r.serverMaxWindowBits=="number"&&r.serverMaxWindowBits>o.server_max_window_bits)||typeof r.clientMaxWindowBits=="number"&&!o.client_max_window_bits));if(!n)throw new Error("None of the extension offers can be accepted");return r.serverNoContextTakeover&&(n.server_no_context_takeover=!0),r.clientNoContextTakeover&&(n.client_no_context_takeover=!0),typeof r.serverMaxWindowBits=="number"&&(n.server_max_window_bits=r.serverMaxWindowBits),typeof r.clientMaxWindowBits=="number"?n.client_max_window_bits=r.clientMaxWindowBits:(n.client_max_window_bits===!0||r.clientMaxWindowBits===!1)&&delete n.client_max_window_bits,n}acceptAsClient(e){let r=e[0];if(this._options.clientNoContextTakeover===!1&&r.client_no_context_takeover)throw new Error('Unexpected parameter "client_no_context_takeover"');if(!r.client_max_window_bits)typeof this._options.clientMaxWindowBits=="number"&&(r.client_max_window_bits=this._options.clientMaxWindowBits);else if(this._options.clientMaxWindowBits===!1||typeof this._options.clientMaxWindowBits=="number"&&r.client_max_window_bits>this._options.clientMaxWindowBits)throw new Error('Unexpected or invalid parameter "client_max_window_bits"');return r}normalizeParams(e){return e.forEach(r=>{Object.keys(r).forEach(n=>{let o=r[n];if(o.length>1)throw new Error(`Parameter "${n}" must have only a single value`);if(o=o[0],n==="client_max_window_bits"){if(o!==!0){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${o}`);o=s}else if(!this._isServer)throw new TypeError(`Invalid value for parameter "${n}": ${o}`)}else if(n==="server_max_window_bits"){let s=+o;if(!Number.isInteger(s)||s<8||s>15)throw new TypeError(`Invalid value for parameter "${n}": ${o}`);o=s}else if(n==="client_no_context_takeover"||n==="server_no_context_takeover"){if(o!==!0)throw new TypeError(`Invalid value for parameter "${n}": ${o}`)}else throw new Error(`Unknown parameter "${n}"`);r[n]=o})}),e}decompress(e,r,n){di.add(o=>{this._decompress(e,r,(s,i)=>{o(),n(s,i)})})}compress(e,r,n){di.add(o=>{this._compress(e,r,(s,i)=>{o(),n(s,i)})})}_decompress(e,r,n){let o=this._isServer?"client":"server";if(!this._inflate){let s=`${o}_max_window_bits`,i=typeof this.params[s]!="number"?Qo.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=Qo.createInflateRaw({...this._options.zlibInflateOptions,windowBits:i}),this._inflate[fi]=this,this._inflate[rr]=0,this._inflate[kr]=[],this._inflate.on("error",SE),this._inflate.on("data",kh)}this._inflate[$n]=n,this._inflate.write(e),r&&this._inflate.write(CE),this._inflate.flush(()=>{let s=this._inflate[On];if(s){this._inflate.close(),this._inflate=null,n(s);return}let i=vh.concat(this._inflate[kr],this._inflate[rr]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[rr]=0,this._inflate[kr]=[],r&&this.params[`${o}_no_context_takeover`]&&this._inflate.reset()),n(null,i)})}_compress(e,r,n){let o=this._isServer?"server":"client";if(!this._deflate){let s=`${o}_max_window_bits`,i=typeof this.params[s]!="number"?Qo.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=Qo.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:i}),this._deflate[rr]=0,this._deflate[kr]=[],this._deflate.on("data",kE)}this._deflate[$n]=n,this._deflate.write(e),this._deflate.flush(Qo.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=vh.concat(this._deflate[kr],this._deflate[rr]);r&&(s=new vE(s.buffer,s.byteOffset,s.length-4)),this._deflate[$n]=null,this._deflate[rr]=0,this._deflate[kr]=[],r&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),n(null,s)})}};Sh.exports=Wl;function kE(t){this[kr].push(t),this[rr]+=t.length}function kh(t){if(this[rr]+=t.length,this[fi]._maxPayload<1||this[rr]<=this[fi]._maxPayload){this[kr].push(t);return}this[On]=new RangeError("Max payload size exceeded"),this[On].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[On][Ch]=1009,this.removeListener("data",kh),this.reset()}function SE(t){if(this[fi]._inflate=null,this[On]){this[$n](this[On]);return}t[Ch]=1007,this[$n](t)}});var Qn=Je((i_,mi)=>{"use strict";var{isUtf8:_h}=ie("buffer"),{hasBlob:_E}=tr(),TE=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,1,1,0,0,1,1,0,1,1,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,1,0];function IE(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function Gl(t){let e=t.length,r=0;for(;r<e;)if((t[r]&128)===0)r++;else if((t[r]&224)===192){if(r+1===e||(t[r+1]&192)!==128||(t[r]&254)===192)return!1;r+=2}else if((t[r]&240)===224){if(r+2>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||t[r]===224&&(t[r+1]&224)===128||t[r]===237&&(t[r+1]&224)===160)return!1;r+=3}else if((t[r]&248)===240){if(r+3>=e||(t[r+1]&192)!==128||(t[r+2]&192)!==128||(t[r+3]&192)!==128||t[r]===240&&(t[r+1]&240)===128||t[r]===244&&t[r+1]>143||t[r]>244)return!1;r+=4}else return!1;return!0}function BE(t){return _E&&typeof t=="object"&&typeof t.arrayBuffer=="function"&&typeof t.type=="string"&&typeof t.stream=="function"&&(t[Symbol.toStringTag]==="Blob"||t[Symbol.toStringTag]==="File")}mi.exports={isBlob:BE,isValidStatusCode:IE,isValidUTF8:Gl,tokenChars:TE};if(_h)mi.exports.isValidUTF8=function(t){return t.length<24?Gl(t):_h(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=ie("utf-8-validate");mi.exports.isValidUTF8=function(e){return e.length<32?Gl(e):t(e)}}catch{}});var Hl=Je((a_,Oh)=>{"use strict";var{Writable:RE}=ie("stream"),Th=Ln(),{BINARY_TYPES:PE,EMPTY_BUFFER:Ih,kStatusCode:$E,kWebSocket:OE}=tr(),{concat:ql,toArrayBuffer:LE,unmask:QE}=Lo(),{isValidStatusCode:DE,isValidUTF8:Bh}=Qn(),hi=Buffer[Symbol.species],It=0,Rh=1,Ph=2,$h=3,Jl=4,Yl=5,pi=6,Vl=class extends RE{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||PE[0],this._extensions=e.extensions||{},this._isServer=!!e.isServer,this._maxBufferedChunks=e.maxBufferedChunks|0,this._maxFragments=e.maxFragments|0,this._maxPayload=e.maxPayload|0,this._skipUTF8Validation=!!e.skipUTF8Validation,this[OE]=void 0,this._bufferedBytes=0,this._buffers=[],this._compressed=!1,this._payloadLength=0,this._mask=void 0,this._fragmented=0,this._masked=!1,this._fin=!1,this._opcode=0,this._totalPayloadLength=0,this._messageLength=0,this._fragments=[],this._errored=!1,this._loop=!1,this._state=It}_write(e,r,n){if(this._opcode===8&&this._state==It)return n();if(this._maxBufferedChunks>0&&this._buffers.length>=this._maxBufferedChunks){n(this.createError(RangeError,"Too many buffered chunks",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS"));return}this._bufferedBytes+=e.length,this._buffers.push(e),this.startLoop(n)}consume(e){if(this._bufferedBytes-=e,e===this._buffers[0].length)return this._buffers.shift();if(e<this._buffers[0].length){let n=this._buffers[0];return this._buffers[0]=new hi(n.buffer,n.byteOffset+e,n.length-e),new hi(n.buffer,n.byteOffset,e)}let r=Buffer.allocUnsafe(e);do{let n=this._buffers[0],o=r.length-e;e>=n.length?r.set(this._buffers.shift(),o):(r.set(new Uint8Array(n.buffer,n.byteOffset,e),o),this._buffers[0]=new hi(n.buffer,n.byteOffset+e,n.length-e)),e-=n.length}while(e>0);return r}startLoop(e){this._loop=!0;do switch(this._state){case It:this.getInfo(e);break;case Rh:this.getPayloadLength16(e);break;case Ph:this.getPayloadLength64(e);break;case $h:this.getMask();break;case Jl:this.getData(e);break;case Yl:case pi:this._loop=!1;return}while(this._loop);this._errored||e()}getInfo(e){if(this._bufferedBytes<2){this._loop=!1;return}let r=this.consume(2);if((r[0]&48)!==0){let o=this.createError(RangeError,"RSV2 and RSV3 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_2_3");e(o);return}let n=(r[0]&64)===64;if(n&&!this._extensions[Th.extensionName]){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(o);return}if(this._fin=(r[0]&128)===128,this._opcode=r[0]&15,this._payloadLength=r[1]&127,this._opcode===0){if(n){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(o);return}if(!this._fragmented){let o=this.createError(RangeError,"invalid opcode 0",!0,1002,"WS_ERR_INVALID_OPCODE");e(o);return}this._opcode=this._fragmented}else if(this._opcode===1||this._opcode===2){if(this._fragmented){let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(o);return}this._compressed=n}else if(this._opcode>7&&this._opcode<11){if(!this._fin){let o=this.createError(RangeError,"FIN must be set",!0,1002,"WS_ERR_EXPECTED_FIN");e(o);return}if(n){let o=this.createError(RangeError,"RSV1 must be clear",!0,1002,"WS_ERR_UNEXPECTED_RSV_1");e(o);return}if(this._payloadLength>125||this._opcode===8&&this._payloadLength===1){let o=this.createError(RangeError,`invalid payload length ${this._payloadLength}`,!0,1002,"WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH");e(o);return}}else{let o=this.createError(RangeError,`invalid opcode ${this._opcode}`,!0,1002,"WS_ERR_INVALID_OPCODE");e(o);return}if(!this._fin&&!this._fragmented&&(this._fragmented=this._opcode),this._masked=(r[1]&128)===128,this._isServer){if(!this._masked){let o=this.createError(RangeError,"MASK must be set",!0,1002,"WS_ERR_EXPECTED_MASK");e(o);return}}else if(this._masked){let o=this.createError(RangeError,"MASK must be clear",!0,1002,"WS_ERR_UNEXPECTED_MASK");e(o);return}this._payloadLength===126?this._state=Rh:this._payloadLength===127?this._state=Ph:this.haveLength(e)}getPayloadLength16(e){if(this._bufferedBytes<2){this._loop=!1;return}this._payloadLength=this.consume(2).readUInt16BE(0),this.haveLength(e)}getPayloadLength64(e){if(this._bufferedBytes<8){this._loop=!1;return}let r=this.consume(8),n=r.readUInt32BE(0);if(n>Math.pow(2,21)-1){let o=this.createError(RangeError,"Unsupported WebSocket frame: payload length > 2^53 - 1",!1,1009,"WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH");e(o);return}this._payloadLength=n*Math.pow(2,32)+r.readUInt32BE(4),this.haveLength(e)}haveLength(e){if(this._payloadLength&&this._opcode<8&&(this._totalPayloadLength+=this._payloadLength,this._totalPayloadLength>this._maxPayload&&this._maxPayload>0)){let r=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");e(r);return}this._masked?this._state=$h:this._state=Jl}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=Jl}getData(e){let r=Ih;if(this._payloadLength){if(this._bufferedBytes<this._payloadLength){this._loop=!1;return}r=this.consume(this._payloadLength),this._masked&&(this._mask[0]|this._mask[1]|this._mask[2]|this._mask[3])!==0&&QE(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=Yl,this.decompress(r,e);return}if(r.length){if(this._maxFragments>0&&this._fragments.length>=this._maxFragments){let n=this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS");e(n);return}this._messageLength=this._totalPayloadLength,this._fragments.push(r)}this.dataMessage(e)}decompress(e,r){this._extensions[Th.extensionName].decompress(e,this._fin,(o,s)=>{if(o)return r(o);if(s.length){if(this._messageLength+=s.length,this._messageLength>this._maxPayload&&this._maxPayload>0){let i=this.createError(RangeError,"Max payload size exceeded",!1,1009,"WS_ERR_UNSUPPORTED_MESSAGE_LENGTH");r(i);return}if(this._maxFragments>0&&this._fragments.length>=this._maxFragments){let i=this.createError(RangeError,"Too many message fragments",!1,1008,"WS_ERR_TOO_MANY_BUFFERED_PARTS");r(i);return}this._fragments.push(s)}this.dataMessage(r),this._state===It&&this.startLoop(r)})}dataMessage(e){if(!this._fin){this._state=It;return}let r=this._messageLength,n=this._fragments;if(this._totalPayloadLength=0,this._messageLength=0,this._fragmented=0,this._fragments=[],this._opcode===2){let o;this._binaryType==="nodebuffer"?o=ql(n,r):this._binaryType==="arraybuffer"?o=LE(ql(n,r)):this._binaryType==="blob"?o=new Blob(n):o=n,this._allowSynchronousEvents?(this.emit("message",o,!0),this._state=It):(this._state=pi,setImmediate(()=>{this.emit("message",o,!0),this._state=It,this.startLoop(e)}))}else{let o=ql(n,r);if(!this._skipUTF8Validation&&!Bh(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(s);return}this._state===Yl||this._allowSynchronousEvents?(this.emit("message",o,!1),this._state=It):(this._state=pi,setImmediate(()=>{this.emit("message",o,!1),this._state=It,this.startLoop(e)}))}}controlMessage(e,r){if(this._opcode===8){if(e.length===0)this._loop=!1,this.emit("conclude",1005,Ih),this.end();else{let n=e.readUInt16BE(0);if(!DE(n)){let s=this.createError(RangeError,`invalid status code ${n}`,!0,1002,"WS_ERR_INVALID_CLOSE_CODE");r(s);return}let o=new hi(e.buffer,e.byteOffset+2,e.length-2);if(!this._skipUTF8Validation&&!Bh(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");r(s);return}this._loop=!1,this.emit("conclude",n,o),this.end()}this._state=It;return}this._allowSynchronousEvents?(this.emit(this._opcode===9?"ping":"pong",e),this._state=It):(this._state=pi,setImmediate(()=>{this.emit(this._opcode===9?"ping":"pong",e),this._state=It,this.startLoop(r)}))}createError(e,r,n,o,s){this._loop=!1,this._errored=!0;let i=new e(n?`Invalid WebSocket frame: ${r}`:r);return Error.captureStackTrace(i,this.createError),i.code=s,i[$E]=o,i}};Oh.exports=Vl});var Zl=Je((c_,Dh)=>{"use strict";var{Duplex:l_}=ie("stream"),{randomFillSync:NE}=ie("crypto"),{types:{isUint8Array:ME}}=ie("util"),Lh=Ln(),{EMPTY_BUFFER:FE,kWebSocket:UE,NOOP:jE}=tr(),{isBlob:Dn,isValidStatusCode:KE}=Qn(),{mask:Qh,toBuffer:Zr}=Lo(),Bt=Symbol("kByteLength"),WE=Buffer.alloc(4),gi=8*1024,en,Nn=gi,Nt=0,GE=1,qE=2,zl=class t{constructor(e,r,n){this._extensions=r||{},n&&(this._generateMask=n,this._maskBuffer=Buffer.alloc(4)),this._socket=e,this._firstFragment=!0,this._compress=!1,this._bufferedBytes=0,this._queue=[],this._state=Nt,this.onerror=jE,this[UE]=void 0}static frame(e,r){let n,o=!1,s=2,i=!1;r.mask&&(n=r.maskBuffer||WE,r.generateMask?r.generateMask(n):(Nn===gi&&(en===void 0&&(en=Buffer.alloc(gi)),NE(en,0,gi),Nn=0),n[0]=en[Nn++],n[1]=en[Nn++],n[2]=en[Nn++],n[3]=en[Nn++]),i=(n[0]|n[1]|n[2]|n[3])===0,s=6);let l;typeof e=="string"?(!r.mask||i)&&r[Bt]!==void 0?l=r[Bt]:(e=Buffer.from(e),l=e.length):(l=e.length,o=r.mask&&r.readOnly&&!i);let c=l;l>=65536?(s+=8,c=127):l>125&&(s+=2,c=126);let f=Buffer.allocUnsafe(o?l+s:s);return f[0]=r.fin?r.opcode|128:r.opcode,r.rsv1&&(f[0]|=64),f[1]=c,c===126?f.writeUInt16BE(l,2):c===127&&(f[2]=f[3]=0,f.writeUIntBE(l,4,6)),r.mask?(f[1]|=128,f[s-4]=n[0],f[s-3]=n[1],f[s-2]=n[2],f[s-1]=n[3],i?[f,e]:o?(Qh(e,n,f,s,l),[f]):(Qh(e,n,e,0,l),[f,e])):[f,e]}close(e,r,n,o){let s;if(e===void 0)s=FE;else{if(typeof e!="number"||!KE(e))throw new TypeError("First argument must be a valid error code number");if(r===void 0||!r.length)s=Buffer.allocUnsafe(2),s.writeUInt16BE(e,0);else{let l=Buffer.byteLength(r);if(l>123)throw new RangeError("The message must not be greater than 123 bytes");if(s=Buffer.allocUnsafe(2+l),s.writeUInt16BE(e,0),typeof r=="string")s.write(r,2);else if(ME(r))s.set(r,2);else throw new TypeError("Second argument must be a string or a Uint8Array")}}let i={[Bt]:s.length,fin:!0,generateMask:this._generateMask,mask:n,maskBuffer:this._maskBuffer,opcode:8,readOnly:!1,rsv1:!1};this._state!==Nt?this.enqueue([this.dispatch,s,!1,i,o]):this.sendFrame(t.frame(s,i),o)}ping(e,r,n){let o,s;if(typeof e=="string"?(o=Buffer.byteLength(e),s=!1):Dn(e)?(o=e.size,s=!1):(e=Zr(e),o=e.length,s=Zr.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[Bt]:o,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:9,readOnly:s,rsv1:!1};Dn(e)?this._state!==Nt?this.enqueue([this.getBlobData,e,!1,i,n]):this.getBlobData(e,!1,i,n):this._state!==Nt?this.enqueue([this.dispatch,e,!1,i,n]):this.sendFrame(t.frame(e,i),n)}pong(e,r,n){let o,s;if(typeof e=="string"?(o=Buffer.byteLength(e),s=!1):Dn(e)?(o=e.size,s=!1):(e=Zr(e),o=e.length,s=Zr.readOnly),o>125)throw new RangeError("The data size must not be greater than 125 bytes");let i={[Bt]:o,fin:!0,generateMask:this._generateMask,mask:r,maskBuffer:this._maskBuffer,opcode:10,readOnly:s,rsv1:!1};Dn(e)?this._state!==Nt?this.enqueue([this.getBlobData,e,!1,i,n]):this.getBlobData(e,!1,i,n):this._state!==Nt?this.enqueue([this.dispatch,e,!1,i,n]):this.sendFrame(t.frame(e,i),n)}send(e,r,n){let o=this._extensions[Lh.extensionName],s=r.binary?2:1,i=r.compress,l,c;typeof e=="string"?(l=Buffer.byteLength(e),c=!1):Dn(e)?(l=e.size,c=!1):(e=Zr(e),l=e.length,c=Zr.readOnly),this._firstFragment?(this._firstFragment=!1,i&&o&&o.params[o._isServer?"server_no_context_takeover":"client_no_context_takeover"]&&(i=l>=o._threshold),this._compress=i):(i=!1,s=0),r.fin&&(this._firstFragment=!0);let f={[Bt]:l,fin:r.fin,generateMask:this._generateMask,mask:r.mask,maskBuffer:this._maskBuffer,opcode:s,readOnly:c,rsv1:i};Dn(e)?this._state!==Nt?this.enqueue([this.getBlobData,e,this._compress,f,n]):this.getBlobData(e,this._compress,f,n):this._state!==Nt?this.enqueue([this.dispatch,e,this._compress,f,n]):this.dispatch(e,this._compress,f,n)}getBlobData(e,r,n,o){this._bufferedBytes+=n[Bt],this._state=qE,e.arrayBuffer().then(s=>{if(this._socket.destroyed){let l=new Error("The socket was closed while the blob was being read");process.nextTick(Xl,this,l,o);return}this._bufferedBytes-=n[Bt];let i=Zr(s);r?this.dispatch(i,r,n,o):(this._state=Nt,this.sendFrame(t.frame(i,n),o),this.dequeue())}).catch(s=>{process.nextTick(JE,this,s,o)})}dispatch(e,r,n,o){if(!r){this.sendFrame(t.frame(e,n),o);return}let s=this._extensions[Lh.extensionName];this._bufferedBytes+=n[Bt],this._state=GE,s.compress(e,n.fin,(i,l)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");Xl(this,c,o);return}this._bufferedBytes-=n[Bt],this._state=Nt,n.readOnly=!1,this.sendFrame(t.frame(l,n),o),this.dequeue()})}dequeue(){for(;this._state===Nt&&this._queue.length;){let e=this._queue.shift();this._bufferedBytes-=e[3][Bt],Reflect.apply(e[0],this,e.slice(1))}}enqueue(e){this._bufferedBytes+=e[3][Bt],this._queue.push(e)}sendFrame(e,r){e.length===2?(this._socket.cork(),this._socket.write(e[0]),this._socket.write(e[1],r),this._socket.uncork()):this._socket.write(e[0],r)}};Dh.exports=zl;function Xl(t,e,r){typeof r=="function"&&r(e);for(let n=0;n<t._queue.length;n++){let o=t._queue[n],s=o[o.length-1];typeof s=="function"&&s(e)}}function JE(t,e,r){Xl(t,e,r),t.onerror(e)}});var qh=Je((u_,Gh)=>{"use strict";var{kForOnEventAttribute:Do,kListener:ec}=tr(),Nh=Symbol("kCode"),Mh=Symbol("kData"),Fh=Symbol("kError"),Uh=Symbol("kMessage"),jh=Symbol("kReason"),Mn=Symbol("kTarget"),Kh=Symbol("kType"),Wh=Symbol("kWasClean"),nr=class{constructor(e){this[Mn]=null,this[Kh]=e}get target(){return this[Mn]}get type(){return this[Kh]}};Object.defineProperty(nr.prototype,"target",{enumerable:!0});Object.defineProperty(nr.prototype,"type",{enumerable:!0});var tn=class extends nr{constructor(e,r={}){super(e),this[Nh]=r.code===void 0?0:r.code,this[jh]=r.reason===void 0?"":r.reason,this[Wh]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[Nh]}get reason(){return this[jh]}get wasClean(){return this[Wh]}};Object.defineProperty(tn.prototype,"code",{enumerable:!0});Object.defineProperty(tn.prototype,"reason",{enumerable:!0});Object.defineProperty(tn.prototype,"wasClean",{enumerable:!0});var Fn=class extends nr{constructor(e,r={}){super(e),this[Fh]=r.error===void 0?null:r.error,this[Uh]=r.message===void 0?"":r.message}get error(){return this[Fh]}get message(){return this[Uh]}};Object.defineProperty(Fn.prototype,"error",{enumerable:!0});Object.defineProperty(Fn.prototype,"message",{enumerable:!0});var No=class extends nr{constructor(e,r={}){super(e),this[Mh]=r.data===void 0?null:r.data}get data(){return this[Mh]}};Object.defineProperty(No.prototype,"data",{enumerable:!0});var YE={addEventListener(t,e,r={}){for(let o of this.listeners(t))if(!r[Do]&&o[ec]===e&&!o[Do])return;let n;if(t==="message")n=function(s,i){let l=new No("message",{data:i?s:s.toString()});l[Mn]=this,Ai(e,this,l)};else if(t==="close")n=function(s,i){let l=new tn("close",{code:s,reason:i.toString(),wasClean:this._closeFrameReceived&&this._closeFrameSent});l[Mn]=this,Ai(e,this,l)};else if(t==="error")n=function(s){let i=new Fn("error",{error:s,message:s.message});i[Mn]=this,Ai(e,this,i)};else if(t==="open")n=function(){let s=new nr("open");s[Mn]=this,Ai(e,this,s)};else return;n[Do]=!!r[Do],n[ec]=e,r.once?this.once(t,n):this.on(t,n)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[ec]===e&&!r[Do]){this.removeListener(t,r);break}}};Gh.exports={CloseEvent:tn,ErrorEvent:Fn,Event:nr,EventTarget:YE,MessageEvent:No};function Ai(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var yi=Je((d_,Jh)=>{"use strict";var{tokenChars:Mo}=Qn();function Kt(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function VE(t){let e=Object.create(null),r=Object.create(null),n=!1,o=!1,s=!1,i,l,c=-1,f=-1,d=-1,a=0;for(;a<t.length;a++)if(f=t.charCodeAt(a),i===void 0)if(d===-1&&Mo[f]===1)c===-1&&(c=a);else if(a!==0&&(f===32||f===9))d===-1&&c!==-1&&(d=a);else if(f===59||f===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${a}`);d===-1&&(d=a);let p=t.slice(c,d);f===44?(Kt(e,p,r),r=Object.create(null)):i=p,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${a}`);else if(l===void 0)if(d===-1&&Mo[f]===1)c===-1&&(c=a);else if(f===32||f===9)d===-1&&c!==-1&&(d=a);else if(f===59||f===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${a}`);d===-1&&(d=a),Kt(r,t.slice(c,d),!0),f===44&&(Kt(e,i,r),r=Object.create(null),i=void 0),c=d=-1}else if(f===61&&c!==-1&&d===-1)l=t.slice(c,a),c=d=-1;else throw new SyntaxError(`Unexpected character at index ${a}`);else if(o){if(Mo[f]!==1)throw new SyntaxError(`Unexpected character at index ${a}`);c===-1?c=a:n||(n=!0),o=!1}else if(s)if(Mo[f]===1)c===-1&&(c=a);else if(f===34&&c!==-1)s=!1,d=a;else if(f===92)o=!0;else throw new SyntaxError(`Unexpected character at index ${a}`);else if(f===34&&t.charCodeAt(a-1)===61)s=!0;else if(d===-1&&Mo[f]===1)c===-1&&(c=a);else if(c!==-1&&(f===32||f===9))d===-1&&(d=a);else if(f===59||f===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${a}`);d===-1&&(d=a);let p=t.slice(c,d);n&&(p=p.replace(/\\/g,""),n=!1),Kt(r,l,p),f===44&&(Kt(e,i,r),r=Object.create(null),i=void 0),l=void 0,c=d=-1}else throw new SyntaxError(`Unexpected character at index ${a}`);if(c===-1||s||f===32||f===9)throw new SyntaxError("Unexpected end of input");d===-1&&(d=a);let h=t.slice(c,d);return i===void 0?Kt(e,h,r):(l===void 0?Kt(r,h,!0):n?Kt(r,l,h.replace(/\\/g,"")):Kt(r,l,h),Kt(e,i,r)),e}function HE(t){return Object.keys(t).map(e=>{let r=t[e];return Array.isArray(r)||(r=[r]),r.map(n=>[e].concat(Object.keys(n).map(o=>{let s=n[o];return Array.isArray(s)||(s=[s]),s.map(i=>i===!0?o:`${o}=${i}`).join("; ")})).join("; ")).join(", ")}).join(", ")}Jh.exports={format:HE,parse:VE}});var xi=Je((h_,sp)=>{"use strict";var zE=ie("events"),XE=ie("https"),ZE=ie("http"),Hh=ie("net"),ex=ie("tls"),{randomBytes:tx,createHash:rx}=ie("crypto"),{Duplex:f_,Readable:m_}=ie("stream"),{URL:tc}=ie("url"),Sr=Ln(),nx=Hl(),ox=Zl(),{isBlob:sx}=Qn(),{BINARY_TYPES:Yh,CLOSE_TIMEOUT:ix,EMPTY_BUFFER:wi,GUID:ax,kForOnEventAttribute:rc,kListener:lx,kStatusCode:cx,kWebSocket:Ke,NOOP:zh}=tr(),{EventTarget:{addEventListener:ux,removeEventListener:dx}}=qh(),{format:fx,parse:mx}=yi(),{toBuffer:hx}=Lo(),Xh=Symbol("kAborted"),nc=[8,13],or=["CONNECTING","OPEN","CLOSING","CLOSED"],px=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,Ie=class t extends zE{constructor(e,r,n){super(),this._binaryType=Yh[0],this._closeCode=1006,this._closeFrameReceived=!1,this._closeFrameSent=!1,this._closeMessage=wi,this._closeTimer=null,this._errorEmitted=!1,this._extensions={},this._paused=!1,this._protocol="",this._readyState=t.CONNECTING,this._receiver=null,this._sender=null,this._socket=null,e!==null?(this._bufferedAmount=0,this._isServer=!1,this._redirects=0,r===void 0?r=[]:Array.isArray(r)||(typeof r=="object"&&r!==null?(n=r,r=[]):r=[r]),Zh(this,e,r,n)):(this._autoPong=n.autoPong,this._closeTimeout=n.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Yh.includes(e)&&(this._binaryType=e,this._receiver&&(this._receiver._binaryType=e))}get bufferedAmount(){return this._socket?this._socket._writableState.length+this._sender._bufferedBytes:this._bufferedAmount}get extensions(){return Object.keys(this._extensions).join()}get isPaused(){return this._paused}get onclose(){return null}get onerror(){return null}get onopen(){return null}get onmessage(){return null}get protocol(){return this._protocol}get readyState(){return this._readyState}get url(){return this._url}setSocket(e,r,n){let o=new nx({allowSynchronousEvents:n.allowSynchronousEvents,binaryType:this.binaryType,extensions:this._extensions,isServer:this._isServer,maxBufferedChunks:n.maxBufferedChunks,maxFragments:n.maxFragments,maxPayload:n.maxPayload,skipUTF8Validation:n.skipUTF8Validation}),s=new ox(e,this._extensions,n.generateMask);this._receiver=o,this._sender=s,this._socket=e,o[Ke]=this,s[Ke]=this,e[Ke]=this,o.on("conclude",yx),o.on("drain",wx),o.on("error",bx),o.on("message",Ex),o.on("ping",xx),o.on("pong",vx),s.onerror=Cx,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",rp),e.on("data",Ei),e.on("end",np),e.on("error",op),this._readyState=t.OPEN,this.emit("open")}emitClose(){if(!this._socket){this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage);return}this._extensions[Sr.extensionName]&&this._extensions[Sr.extensionName].cleanup(),this._receiver.removeAllListeners(),this._readyState=t.CLOSED,this.emit("close",this._closeCode,this._closeMessage)}close(e,r){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){Et(this,this._req,"WebSocket was closed before the connection was established");return}if(this.readyState===t.CLOSING){this._closeFrameSent&&(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end();return}this._readyState=t.CLOSING,this._sender.close(e,r,!this._isServer,n=>{n||(this._closeFrameSent=!0,(this._closeFrameReceived||this._receiver._writableState.errorEmitted)&&this._socket.end())}),tp(this)}}pause(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!0,this._socket.pause())}ping(e,r,n){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){oc(this,e,n);return}r===void 0&&(r=!this._isServer),this._sender.ping(e||wi,r,n)}pong(e,r,n){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof e=="function"?(n=e,e=r=void 0):typeof r=="function"&&(n=r,r=void 0),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){oc(this,e,n);return}r===void 0&&(r=!this._isServer),this._sender.pong(e||wi,r,n)}resume(){this.readyState===t.CONNECTING||this.readyState===t.CLOSED||(this._paused=!1,this._receiver._writableState.needDrain||this._socket.resume())}send(e,r,n){if(this.readyState===t.CONNECTING)throw new Error("WebSocket is not open: readyState 0 (CONNECTING)");if(typeof r=="function"&&(n=r,r={}),typeof e=="number"&&(e=e.toString()),this.readyState!==t.OPEN){oc(this,e,n);return}let o={binary:typeof e!="string",mask:!this._isServer,compress:!0,fin:!0,...r};this._extensions[Sr.extensionName]||(o.compress=!1),this._sender.send(e||wi,o,n)}terminate(){if(this.readyState!==t.CLOSED){if(this.readyState===t.CONNECTING){Et(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(Ie,"CONNECTING",{enumerable:!0,value:or.indexOf("CONNECTING")});Object.defineProperty(Ie.prototype,"CONNECTING",{enumerable:!0,value:or.indexOf("CONNECTING")});Object.defineProperty(Ie,"OPEN",{enumerable:!0,value:or.indexOf("OPEN")});Object.defineProperty(Ie.prototype,"OPEN",{enumerable:!0,value:or.indexOf("OPEN")});Object.defineProperty(Ie,"CLOSING",{enumerable:!0,value:or.indexOf("CLOSING")});Object.defineProperty(Ie.prototype,"CLOSING",{enumerable:!0,value:or.indexOf("CLOSING")});Object.defineProperty(Ie,"CLOSED",{enumerable:!0,value:or.indexOf("CLOSED")});Object.defineProperty(Ie.prototype,"CLOSED",{enumerable:!0,value:or.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(Ie.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(Ie.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[rc])return e[lx];return null},set(e){for(let r of this.listeners(t))if(r[rc]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[rc]:!0})}})});Ie.prototype.addEventListener=ux;Ie.prototype.removeEventListener=dx;sp.exports=Ie;function Zh(t,e,r,n){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:ix,protocolVersion:nc[1],maxBufferedChunks:1048576,maxFragments:131072,maxPayload:104857600,skipUTF8Validation:!1,perMessageDeflate:!0,followRedirects:!1,maxRedirects:10,...n,socketPath:void 0,hostname:void 0,protocol:void 0,timeout:void 0,method:"GET",host:void 0,path:void 0,port:void 0};if(t._autoPong=o.autoPong,t._closeTimeout=o.closeTimeout,!nc.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${nc.join(", ")})`);let s;if(e instanceof tc)s=e;else try{s=new tc(e)}catch{throw new SyntaxError(`Invalid URL: ${e}`)}s.protocol==="http:"?s.protocol="ws:":s.protocol==="https:"&&(s.protocol="wss:"),t._url=s.href;let i=s.protocol==="wss:",l=s.protocol==="ws+unix:",c;if(s.protocol!=="ws:"&&!i&&!l?c=`The URL's protocol must be one of "ws:", "wss:", "http:", "https:", or "ws+unix:"`:l&&!s.pathname?c="The URL's pathname is empty":s.hash&&(c="The URL contains a fragment identifier"),c){let x=new SyntaxError(c);if(t._redirects===0)throw x;bi(t,x);return}let f=i?443:80,d=tx(16).toString("base64"),a=i?XE.request:ZE.request,h=new Set,p;if(o.createConnection=o.createConnection||(i?Ax:gx),o.defaultPort=o.defaultPort||f,o.port=s.port||f,o.host=s.hostname.startsWith("[")?s.hostname.slice(1,-1):s.hostname,o.headers={...o.headers,"Sec-WebSocket-Version":o.protocolVersion,"Sec-WebSocket-Key":d,Connection:"Upgrade",Upgrade:"websocket"},o.path=s.pathname+s.search,o.timeout=o.handshakeTimeout,o.perMessageDeflate&&(p=new Sr({...o.perMessageDeflate,isServer:!1,maxPayload:o.maxPayload}),o.headers["Sec-WebSocket-Extensions"]=fx({[Sr.extensionName]:p.offer()})),r.length){for(let x of r){if(typeof x!="string"||!px.test(x)||h.has(x))throw new SyntaxError("An invalid or duplicated subprotocol was specified");h.add(x)}o.headers["Sec-WebSocket-Protocol"]=r.join(",")}if(o.origin&&(o.protocolVersion<13?o.headers["Sec-WebSocket-Origin"]=o.origin:o.headers.Origin=o.origin),(s.username||s.password)&&(o.auth=`${s.username}:${s.password}`),l){let x=o.path.split(":");o.socketPath=x[0],o.path=x[1]}let g;if(o.followRedirects){if(t._redirects===0){t._originalIpc=l,t._originalSecure=i,t._originalHostOrSocketPath=l?o.socketPath:s.host;let x=n&&n.headers;if(n={...n,headers:{}},x)for(let[A,w]of Object.entries(x))n.headers[A.toLowerCase()]=w}else if(t.listenerCount("redirect")===0){let x=l?t._originalIpc?o.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:s.host===t._originalHostOrSocketPath;(!x||t._originalSecure&&!i)&&(delete o.headers.authorization,delete o.headers.cookie,x||delete o.headers.host,o.auth=void 0)}o.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),g=t._req=a(o),t._redirects&&t.emit("redirect",t.url,g)}else g=t._req=a(o);o.timeout&&g.on("timeout",()=>{Et(t,g,"Opening handshake has timed out")}),g.on("error",x=>{g===null||g[Xh]||(g=t._req=null,bi(t,x))}),g.on("response",x=>{let A=x.headers.location,w=x.statusCode;if(A&&o.followRedirects&&w>=300&&w<400){if(++t._redirects>o.maxRedirects){Et(t,g,"Maximum redirects exceeded");return}g.abort();let O;try{O=new tc(A,e)}catch{let B=new SyntaxError(`Invalid URL: ${A}`);bi(t,B);return}Zh(t,O,r,n)}else t.emit("unexpected-response",g,x)||Et(t,g,`Unexpected server response: ${x.statusCode}`)}),g.on("upgrade",(x,A,w)=>{if(t.emit("upgrade",x),t.readyState!==Ie.CONNECTING)return;g=t._req=null;let O=x.headers.upgrade;if(O===void 0||O.toLowerCase()!=="websocket"){Et(t,A,"Invalid Upgrade header");return}let T=rx("sha1").update(d+ax).digest("base64");if(x.headers["sec-websocket-accept"]!==T){Et(t,A,"Invalid Sec-WebSocket-Accept header");return}let B=x.headers["sec-websocket-protocol"],v;if(B!==void 0?h.size?h.has(B)||(v="Server sent an invalid subprotocol"):v="Server sent a subprotocol but none was requested":h.size&&(v="Server sent no subprotocol"),v){Et(t,A,v);return}B&&(t._protocol=B);let C=x.headers["sec-websocket-extensions"];if(C!==void 0){if(!p){Et(t,A,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let I;try{I=mx(C)}catch{Et(t,A,"Invalid Sec-WebSocket-Extensions header");return}let j=Object.keys(I);if(j.length!==1||j[0]!==Sr.extensionName){Et(t,A,"Server indicated an extension that was not requested");return}try{p.accept(I[Sr.extensionName])}catch{Et(t,A,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[Sr.extensionName]=p}t.setSocket(A,w,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxBufferedChunks:o.maxBufferedChunks,maxFragments:o.maxFragments,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(g,t):g.end()}function bi(t,e){t._readyState=Ie.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function gx(t){return t.path=t.socketPath,Hh.connect(t)}function Ax(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=Hh.isIP(t.host)?"":t.host),ex.connect(t)}function Et(t,e,r){t._readyState=Ie.CLOSING;let n=new Error(r);Error.captureStackTrace(n,Et),e.setHeader?(e[Xh]=!0,e.abort(),e.socket&&!e.socket.destroyed&&e.socket.destroy(),process.nextTick(bi,t,n)):(e.destroy(n),e.once("error",t.emit.bind(t,"error")),e.once("close",t.emitClose.bind(t)))}function oc(t,e,r){if(e){let n=sx(e)?e.size:hx(e).length;t._socket?t._sender._bufferedBytes+=n:t._bufferedAmount+=n}if(r){let n=new Error(`WebSocket is not open: readyState ${t.readyState} (${or[t.readyState]})`);process.nextTick(r,n)}}function yx(t,e){let r=this[Ke];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[Ke]!==void 0&&(r._socket.removeListener("data",Ei),process.nextTick(ep,r._socket),t===1005?r.close():r.close(t,e))}function wx(){let t=this[Ke];t.isPaused||t._socket.resume()}function bx(t){let e=this[Ke];e._socket[Ke]!==void 0&&(e._socket.removeListener("data",Ei),process.nextTick(ep,e._socket),e.close(t[cx])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Vh(){this[Ke].emitClose()}function Ex(t,e){this[Ke].emit("message",t,e)}function xx(t){let e=this[Ke];e._autoPong&&e.pong(t,!this._isServer,zh),e.emit("ping",t)}function vx(t){this[Ke].emit("pong",t)}function ep(t){t.resume()}function Cx(t){let e=this[Ke];e.readyState!==Ie.CLOSED&&(e.readyState===Ie.OPEN&&(e._readyState=Ie.CLOSING,tp(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function tp(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function rp(){let t=this[Ke];if(this.removeListener("close",rp),this.removeListener("data",Ei),this.removeListener("end",np),t._readyState=Ie.CLOSING,!this._readableState.endEmitted&&!t._closeFrameReceived&&!t._receiver._writableState.errorEmitted&&this._readableState.length!==0){let e=this.read(this._readableState.length);t._receiver.write(e)}t._receiver.end(),this[Ke]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Vh),t._receiver.on("finish",Vh))}function Ei(t){this[Ke]._receiver.write(t)||this.pause()}function np(){let t=this[Ke];t._readyState=Ie.CLOSING,t._receiver.end(),this.end()}function op(){let t=this[Ke];this.removeListener("error",op),this.on("error",zh),t&&(t._readyState=Ie.CLOSING,this.destroy())}});var cp=Je((g_,lp)=>{"use strict";var p_=xi(),{Duplex:kx}=ie("stream");function ip(t){t.emit("close")}function Sx(){!this.destroyed&&this._writableState.finished&&this.destroy()}function ap(t){this.removeListener("error",ap),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function _x(t,e){let r=!0,n=new kx({...e,autoDestroy:!1,emitClose:!1,objectMode:!1,writableObjectMode:!1});return t.on("message",function(s,i){let l=!i&&n._readableState.objectMode?s.toString():s;n.push(l)||t.pause()}),t.once("error",function(s){n.destroyed||(r=!1,n.destroy(s))}),t.once("close",function(){n.destroyed||n.push(null)}),n._destroy=function(o,s){if(t.readyState===t.CLOSED){s(o),process.nextTick(ip,n);return}let i=!1;t.once("error",function(c){i=!0,s(c)}),t.once("close",function(){i||s(o),process.nextTick(ip,n)}),r&&t.terminate()},n._final=function(o){if(t.readyState===t.CONNECTING){t.once("open",function(){n._final(o)});return}t._socket!==null&&(t._socket._writableState.finished?(o(),n._readableState.endEmitted&&n.destroy()):(t._socket.once("finish",function(){o()}),t.close()))},n._read=function(){t.isPaused&&t.resume()},n._write=function(o,s,i){if(t.readyState===t.CONNECTING){t.once("open",function(){n._write(o,s,i)});return}t.send(o,i)},n.on("end",Sx),n.on("error",ap),n}lp.exports=_x});var sc=Je((A_,up)=>{"use strict";var{tokenChars:Tx}=Qn();function Ix(t){let e=new Set,r=-1,n=-1,o=0;for(o;o<t.length;o++){let i=t.charCodeAt(o);if(n===-1&&Tx[i]===1)r===-1&&(r=o);else if(o!==0&&(i===32||i===9))n===-1&&r!==-1&&(n=o);else if(i===44){if(r===-1)throw new SyntaxError(`Unexpected character at index ${o}`);n===-1&&(n=o);let l=t.slice(r,n);if(e.has(l))throw new SyntaxError(`The "${l}" subprotocol is duplicated`);e.add(l),r=n=-1}else throw new SyntaxError(`Unexpected character at index ${o}`)}if(r===-1||n!==-1)throw new SyntaxError("Unexpected end of input");let s=t.slice(r,o);if(e.has(s))throw new SyntaxError(`The "${s}" subprotocol is duplicated`);return e.add(s),e}up.exports={parse:Ix}});var Ap=Je((w_,gp)=>{"use strict";var Bx=ie("events"),vi=ie("http"),{Duplex:y_}=ie("stream"),{createHash:Rx}=ie("crypto"),dp=yi(),rn=Ln(),Px=sc(),$x=xi(),{CLOSE_TIMEOUT:Ox,GUID:Lx,kWebSocket:Qx}=tr(),Dx=/^[+/0-9A-Za-z]{22}==$/,fp=0,mp=1,pp=2,ic=class extends Bx{constructor(e,r){if(super(),e={allowSynchronousEvents:!0,autoPong:!0,maxBufferedChunks:1024*1024,maxFragments:128*1024,maxPayload:100*1024*1024,skipUTF8Validation:!1,perMessageDeflate:!1,handleProtocols:null,clientTracking:!0,closeTimeout:Ox,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:$x,...e},e.port==null&&!e.server&&!e.noServer||e.port!=null&&(e.server||e.noServer)||e.server&&e.noServer)throw new TypeError('One and only one of the "port", "server", or "noServer" options must be specified');if(e.port!=null?(this._server=vi.createServer((n,o)=>{let s=vi.STATUS_CODES[426];o.writeHead(426,{"Content-Length":s.length,"Content-Type":"text/plain"}),o.end(s)}),this._server.listen(e.port,e.host,e.backlog,r)):e.server&&(this._server=e.server),this._server){let n=this.emit.bind(this,"connection");this._removeListeners=Nx(this._server,{listening:this.emit.bind(this,"listening"),error:this.emit.bind(this,"error"),upgrade:(o,s,i)=>{this.handleUpgrade(o,s,i,n)}})}e.perMessageDeflate===!0&&(e.perMessageDeflate={}),e.clientTracking&&(this.clients=new Set,this._shouldEmitClose=!1),this.options=e,this._state=fp}address(){if(this.options.noServer)throw new Error('The server is operating in "noServer" mode');return this._server?this._server.address():null}close(e){if(this._state===pp){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Fo,this);return}if(e&&this.once("close",e),this._state!==mp)if(this._state=mp,this.options.noServer||this.options.server)this._server&&(this._removeListeners(),this._removeListeners=this._server=null),this.clients?this.clients.size?this._shouldEmitClose=!0:process.nextTick(Fo,this):process.nextTick(Fo,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{Fo(this)})}}shouldHandle(e){if(this.options.path){let r=e.url.indexOf("?");if((r!==-1?e.url.slice(0,r):e.url)!==this.options.path)return!1}return!0}handleUpgrade(e,r,n,o){r.on("error",hp);let s=e.headers["sec-websocket-key"],i=e.headers.upgrade,l=+e.headers["sec-websocket-version"];if(e.method!=="GET"){nn(this,e,r,405,"Invalid HTTP method");return}if(i===void 0||i.toLowerCase()!=="websocket"){nn(this,e,r,400,"Invalid Upgrade header");return}if(s===void 0||!Dx.test(s)){nn(this,e,r,400,"Missing or invalid Sec-WebSocket-Key header");return}if(l!==13&&l!==8){nn(this,e,r,400,"Missing or invalid Sec-WebSocket-Version header",{"Sec-WebSocket-Version":"13, 8"});return}if(!this.shouldHandle(e)){Uo(r,400);return}let c=e.headers["sec-websocket-protocol"],f=new Set;if(c!==void 0)try{f=Px.parse(c)}catch{nn(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let d=e.headers["sec-websocket-extensions"],a={};if(this.options.perMessageDeflate&&d!==void 0){let h=new rn({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let p=dp.parse(d);p[rn.extensionName]&&(h.accept(p[rn.extensionName]),a[rn.extensionName]=h)}catch{nn(this,e,r,400,"Invalid or unacceptable Sec-WebSocket-Extensions header");return}}if(this.options.verifyClient){let h={origin:e.headers[`${l===8?"sec-websocket-origin":"origin"}`],secure:!!(e.socket.authorized||e.socket.encrypted),req:e};if(this.options.verifyClient.length===2){this.options.verifyClient(h,(p,g,x,A)=>{if(!p)return Uo(r,g||401,x,A);this.completeUpgrade(a,s,f,e,r,n,o)});return}if(!this.options.verifyClient(h))return Uo(r,401)}this.completeUpgrade(a,s,f,e,r,n,o)}completeUpgrade(e,r,n,o,s,i,l){if(!s.readable||!s.writable)return s.destroy();if(s[Qx])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>fp)return Uo(s,503);let f=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${Rx("sha1").update(r+Lx).digest("base64")}`],d=new this.options.WebSocket(null,void 0,this.options);if(n.size){let a=this.options.handleProtocols?this.options.handleProtocols(n,o):n.values().next().value;a&&(f.push(`Sec-WebSocket-Protocol: ${a}`),d._protocol=a)}if(e[rn.extensionName]){let a=e[rn.extensionName].params,h=dp.format({[rn.extensionName]:[a]});f.push(`Sec-WebSocket-Extensions: ${h}`),d._extensions=e}this.emit("headers",f,o),s.write(f.concat(`\r
|
|
94
|
+
`).join(`\r
|
|
95
|
+
`)),s.removeListener("error",hp),d.setSocket(s,i,{allowSynchronousEvents:this.options.allowSynchronousEvents,maxBufferedChunks:this.options.maxBufferedChunks,maxFragments:this.options.maxFragments,maxPayload:this.options.maxPayload,skipUTF8Validation:this.options.skipUTF8Validation}),this.clients&&(this.clients.add(d),d.on("close",()=>{this.clients.delete(d),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Fo,this)})),l(d,o)}};gp.exports=ic;function Nx(t,e){for(let r of Object.keys(e))t.on(r,e[r]);return function(){for(let n of Object.keys(e))t.removeListener(n,e[n])}}function Fo(t){t._state=pp,t.emit("close")}function hp(){this.destroy()}function Uo(t,e,r,n){r=r||vi.STATUS_CODES[e],n={Connection:"close","Content-Type":"text/html","Content-Length":Buffer.byteLength(r),...n},t.once("finish",t.destroy),t.end(`HTTP/1.1 ${e} ${vi.STATUS_CODES[e]}\r
|
|
96
|
+
`+Object.keys(n).map(o=>`${o}: ${n[o]}`).join(`\r
|
|
97
|
+
`)+`\r
|
|
98
|
+
\r
|
|
99
|
+
`+r)}function nn(t,e,r,n,o,s){if(t.listenerCount("wsClientError")){let i=new Error(o);Error.captureStackTrace(i,nn),t.emit("wsClientError",i,r,e)}else Uo(r,n,o,s)}});var bp=Je((b_,wp)=>{"use strict";var Mx=cp(),Fx=yi(),Ux=Ln(),jx=Hl(),Kx=Zl(),Wx=sc(),Mt=xi(),yp=Ap();Mt.createWebSocketStream=Mx;Mt.extension=Fx;Mt.PerMessageDeflate=Ux;Mt.Receiver=jx;Mt.Sender=Kx;Mt.Server=yp;Mt.subprotocol=Wx;Mt.WebSocket=Mt;Mt.WebSocketServer=yp;wp.exports=Mt});var lc={};yt(lc,{PriceFeed:()=>Ci,priceFeed:()=>We});import{Type as ac}from"@sinclair/typebox";var on,Ci,We,Un=xe(()=>{"use strict";ht();Ye();on="AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump",Ci=class{cachedAiaiPrice=null;lastFetch=0;cacheDuration=3e4;_cachedTicker="";_cachedTickerPrice="";async getAiaiaiPrice(){return this.cachedAiaiPrice&&Date.now()-this.lastFetch<this.cacheDuration?this.cachedAiaiPrice:this.fetchToken(on)}async fetchToken(e){let r=`https://api.dexscreener.com/tokens/v1/solana/${e}`;try{let n=await fe(r,{timeout:1e4,retries:1});if(!n.ok)return this.fallbackPrice(e);let o=await n.json();if(!o||o.length===0)return this.fallbackPrice(e);let s=o[0],i={tokenAddress:e,symbol:s.baseToken.symbol,name:s.baseToken.name,priceUsd:s.priceUsd,priceNative:s.priceNative,liquidityUsd:s.liquidity?.usd??0,fdv:s.fdv??null,marketCap:s.marketCap??null,volume24h:s.volume?.h24??0,priceChange24h:s.priceChange?.h24??0,buys24h:s.txns?.h24?.buys??0,sells24h:s.txns?.h24?.sells??0,dexUrl:s.url};return e===on&&(this.cachedAiaiPrice=i,this.lastFetch=Date.now(),this._cachedTicker="",this._cachedTickerPrice=""),i}catch(n){return Z.warn("PriceFeed","fetchToken failed",{tokenAddress:e,error:n.message}),this.fallbackPrice(e)}}fallbackPrice(e){return this.cachedAiaiPrice&&e===on?{...this.cachedAiaiPrice,symbol:this.cachedAiaiPrice.symbol+" \u26A0\uFE0F"}:{tokenAddress:e,symbol:e===on?"AIAIAI":"UNKNOWN",name:e===on?"AIAIAI Chain":"Unknown Token",priceUsd:null,priceNative:"0",liquidityUsd:0,fdv:null,marketCap:null,volume24h:0,priceChange24h:0,buys24h:0,sells24h:0,dexUrl:`https://dexscreener.com/solana/${e}`}}tickerLine(e=6){try{let r=this.cachedAiaiPrice;if(!r||!r.priceUsd)return this._cachedTicker;let n=parseFloat(r.priceUsd).toFixed(6);if(this._cachedTicker&&n===this._cachedTickerPrice)return this._cachedTicker;let o=r.priceChange24h,s=o>0?"\u25B2":o<0?"\u25BC":"\u2500";return this._cachedTickerPrice=n,this._cachedTicker=`$AIAIAI $${n} ${s}${Math.abs(o).toFixed(2)}%`.slice(0,40),this._cachedTicker}catch(r){return Z.error("PriceFeed","tickerLine error",{error:r.message}),this._cachedTicker}}getAiaiaiPriceSync(){return this.cachedAiaiPrice}priceLine(){let e=this.getAiaiaiPriceSync();return!e||!e.priceUsd?"$AIAIAI: loading...":`$AIAIAI $${parseFloat(e.priceUsd).toFixed(6)} | ${e.priceChange24h>0?"+":""}${e.priceChange24h.toFixed(2)}%`}getAiaiaiPriceParams=ac.Object({});getTokenPriceParams=ac.Object({address:ac.String({description:"Token contract address on Solana"})});async getAiaiaiPriceTool(){let e=await this.getAiaiaiPrice();return{content:[{type:"text",text:[`Token: $${e.symbol} (${e.name})`,`Address: ${e.tokenAddress}`,`Price USD: ${e.priceUsd?`$${parseFloat(e.priceUsd).toFixed(8)}`:"N/A"}`,`Price SOL: ${parseFloat(e.priceNative).toFixed(8)} SOL`,`24h Change: ${e.priceChange24h>0?"+":""}${e.priceChange24h.toFixed(2)}%`,`24h Volume: $${e.volume24h.toLocaleString()}`,`24h Buys: ${e.buys24h} | Sells: ${e.sells24h}`,`Liquidity: $${e.liquidityUsd.toLocaleString()}`,`FDV: ${e.fdv?`$${e.fdv.toLocaleString()}`:"N/A"}`,`Market Cap: ${e.marketCap?`$${e.marketCap.toLocaleString()}`:"N/A"}`,`DEX: ${e.dexUrl}`].join(`
|
|
100
|
+
`)}]}}async getTokenPriceTool(e,r){let n=r.address,o=await this.fetchToken(n);return{content:[{type:"text",text:[`Token: $${o.symbol} (${o.name})`,`Address: ${o.tokenAddress}`,`Price USD: ${o.priceUsd?`$${parseFloat(o.priceUsd).toFixed(8)}`:"N/A"}`,`Price NATIVE: ${parseFloat(o.priceNative).toFixed(8)}`,`24h Change: ${o.priceChange24h>0?"+":""}${o.priceChange24h.toFixed(2)}%`,`24h Volume: $${o.volume24h.toLocaleString()}`,`Buys/Sells: ${o.buys24h}/${o.sells24h}`,`Liquidity: $${o.liquidityUsd.toLocaleString()}`].join(`
|
|
101
|
+
`)}]}}ws=null;wsReconnectTimer=null;connectWebSocket(){if(this.ws?.readyState!==1)try{let e=globalThis.WebSocket||bp();if(!e)return;this.ws=new e("wss://io.dexscreener.com/dex/screener/pairs/solana/AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump"),this.ws.onmessage=r=>{try{let n=JSON.parse(r.data);if(n?.priceUsd){let o={tokenAddress:on,symbol:"AIAIAI",name:"AIAIAI Chain",priceUsd:n.priceUsd,priceNative:n.priceNative??"0",liquidityUsd:n.liquidityUsd??0,fdv:n.fdv??null,marketCap:n.marketCap??null,volume24h:n.volume24h??0,priceChange24h:n.priceChange24h??0,buys24h:0,sells24h:0,dexUrl:`https://dexscreener.com/solana/${on}`};this.cachedAiaiPrice=o,this.lastFetch=Date.now(),this._cachedTicker="",this._cachedTickerPrice=""}}catch{}},this.ws.onclose=()=>{this.wsReconnectTimer=setTimeout(()=>this.connectWebSocket(),3e4)},this.ws.onerror=()=>{try{this.ws?.close()}catch{}}}catch{}}disconnectWebSocket(){this.wsReconnectTimer&&clearTimeout(this.wsReconnectTimer);try{this.ws?.close()}catch{}this.ws=null}},We=new Ci;We.getAiaiaiPrice().catch(()=>{})});function Mp(){return Np.url}async function O1(){let e=Date.now()-Qp;e<Dp&&await new Promise(r=>setTimeout(r,Dp-e)),Qp=Date.now()}async function _r(t,e=[]){await O1();let r=JSON.stringify({jsonrpc:"2.0",id:Date.now(),method:t,params:e}),o=await(await fe(Np.url,{timeout:15e3,retries:2,method:"POST",headers:{"Content-Type":"application/json"},body:r})).json();if(o.error)throw Cr.record({name:"RpcError",message:o.error.message||"Unknown RPC error",code:"RPC_ERROR",context:{method:t,code:o.error.code},timestamp:Date.now(),recoverable:!1}),new Error(o.error.message||"Unknown RPC error");return o.result}var P1,$1,Np,Qp,Dp,qo=xe(()=>{"use strict";ht();Ro();P1=[{url:"https://api.mainnet-beta.solana.com",name:"Solana Public",priority:1},{url:"https://rpc.ankr.com/solana",name:"Ankr",priority:2},{url:"https://solana-api.projectserum.com",name:"ProjectSerum",priority:3}],$1=[...P1],Np=$1[0];Qp=0,Dp=100});import{Type as Fp}from"@sinclair/typebox";async function Up(t,e){try{let n=(await _r("getTokenAccountsByOwner",[t,{mint:e},{encoding:"jsonParsed"}]))?.value??[];return n.length===0?0:parseFloat(n[0]?.account?.data?.parsed?.info?.tokenAmount?.uiAmount??"0")}catch(r){return Z.warn("AgentWallet","getTokenBalance failed",{address:t,mint:e,error:r.message}),0}}var at,Tr,ir,Gn,Tc,an,Ic,L1,_c,et,Jo=xe(()=>{"use strict";qo();Ye();at="GmFrDZT2cdrqykgTikVdXbe8EtCgzUDM9VsDhQnwsUsG",Tr="BygDYM1ZXLQNC1HXLhnd1rHZ7E5XjioqT3vPjJFfjnU2",ir="FBMDYpG9WXKy4SgxuATQdB2sCyzHsJWPrEr45z3TgL2e",Gn="A11iZoqEt6hU7HyggqC67ee4AtYmaJjwKCvJLerJRV2J",Tc=at,an="AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump",Ic=an,L1="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";_c=class{cachedWallets=null;lastFetch=0;cacheDuration=3e4;async getAll(){if(this.cachedWallets&&Date.now()-this.lastFetch<this.cacheDuration)return this.cachedWallets;let[e,r]=await Promise.all([_r("getMultipleAccounts",[[Gn,at,Tr,ir]]).then(x=>(x?.value??[]).map(A=>(A?.lamports??0)/1e9)).catch(()=>[0,0,0,0]),Promise.all([...[Gn,at,Tr,ir].map(x=>Up(x,an)),...[Gn,at,Tr,ir].map(x=>Up(x,L1))])]),[n=0,o=0,s=0,i=0]=e,[l=0,c=0,f=0,d=0,a=0,h=0,p=0,g=0]=r;return this.cachedWallets={cold:{address:Gn,sol:n,aiaiai:l,usdc:a},action:{address:at,sol:o,aiaiai:c,usdc:h},hot:{address:Tr,sol:s,aiaiai:f,usdc:p},deposit:{address:ir,sol:i,aiaiai:d,usdc:g}},this.lastFetch=Date.now(),this.cachedWallets}async getColdWallet(){return(await this.getAll()).cold}async getActionWallet(){return(await this.getAll()).action}async getDepositWallet(){return(await this.getAll()).deposit}async getSolPrice(){try{let{priceFeed:e}=await Promise.resolve().then(()=>(Un(),lc)),r=await e.fetchToken("So11111111111111111111111111111111111111112");return parseFloat(r.priceUsd??"150")}catch{return 150}}async getHotWallet(){return(await this.getAll()).hot}getAgentBalanceParams=Fp.Object({});getDepositBalanceParams=Fp.Object({});async getAgentBalanceTool(){let e=await this.getAll();return{content:[{type:"text",text:["\u{1F916} Action Wallet",` ${at.slice(0,8)}\u2026${at.slice(-6)}`,` SOL: ${e.action.sol.toFixed(4)}`,` $AIAIAI: ${e.action.aiaiai.toLocaleString(void 0,{maximumFractionDigits:2})}`,` USDC: ${e.action.usdc.toFixed(2)}`,"","\u26A1 Hot Wallet",` ${Tr.slice(0,8)}\u2026${Tr.slice(-6)}`,` SOL: ${e.hot.sol.toFixed(4)}`,` $AIAIAI: ${e.hot.aiaiai.toLocaleString(void 0,{maximumFractionDigits:2})}`,` USDC: ${e.hot.usdc.toFixed(2)}`,"","\u2744\uFE0F Cold (reserve)",` ${Gn.slice(0,8)}\u2026${Gn.slice(-6)}`,` SOL: ${e.cold.sol.toFixed(4)}`].join(`
|
|
102
|
+
`)}]}}async getDepositBalanceTool(){let e=await this.getAll();return{content:[{type:"text",text:["Deposit Wallet",` Address: ${ir}`,` SOL: ${e.deposit.sol.toFixed(4)}`,` $AIAIAI: ${e.deposit.aiaiai.toLocaleString(void 0,{maximumFractionDigits:2})}`,` USDC: ${e.deposit.usdc.toFixed(2)}`,"","Send SOL or USDC here to fuel agent actions.",`Signer: ${Tc.slice(0,8)}\u2026`].join(`
|
|
103
|
+
`)}]}}},et=new _c});var Bc={};yt(Bc,{ActionFeed:()=>Ti,actionFeed:()=>tt});import{Type as _i}from"@sinclair/typebox";var Ti,tt,Ii=xe(()=>{"use strict";Jo();qo();Ye();Ti=class{actions=[];lastSignature="";lastFetch=0;cacheDuration=6e4;fees={buyFees:0,burnFees:0,total:0};_price=4e-4;async refresh(){if(!(Date.now()-this.lastFetch<this.cacheDuration)){this.lastFetch=Date.now();try{let e=await _r("getSignaturesForAddress",[at,{limit:30}]);if(!e||e.length===0)return;for(let r of e){if(r.signature===this.lastSignature)break;await this.processTransaction(r.signature)}e.length>0&&(this.lastSignature=e[0].signature)}catch(e){Z.debug("ActionFeed","refresh failed",{error:e.message})}}}async processTransaction(e){try{let r=await _r("getTransaction",[e,{encoding:"jsonParsed",maxSupportedTransactionVersion:0}]);if(!r||!r.meta)return;let n=r.meta.innerInstructions??[],o=0,s=0,i=!1;for(let l of n)for(let c of l.instructions??[]){if(c.parsed?.info?.mint&&(i=!0),c.parsed?.type==="transferChecked"&&c.parsed.info?.mint===an){let d=parseFloat(c.parsed.info?.tokenAmount?.uiAmount??"0");d>1&&(o+=d)}if(c.parsed?.type==="burnChecked"&&c.parsed.info?.mint===an){let d=parseFloat(c.parsed.info?.tokenAmount?.uiAmount??"0");d>0&&(s+=d)}}if(!i&&o===0&&s===0)return;if(o===0&&s===0){let l=r.meta.preTokenBalances??[],c=r.meta.postTokenBalances??[];for(let f of c){if(f.mint!==an)continue;let d=l.find(g=>g.accountIndex===f.accountIndex&&g.mint===an),a=d?parseFloat(d.uiTokenAmount?.uiAmount??"0"):0,p=parseFloat(f.uiTokenAmount?.uiAmount??"0")-a;Math.abs(p)<1e-6||(p>0?o+=p:s+=Math.abs(p))}}if(o>0){let l=o*this._price,c=l*.005;this.fees.buyFees+=c,this.fees.total=this.fees.buyFees+this.fees.burnFees,this.actions.unshift({id:e.slice(0,10),type:"buy",amount:o,token:"AIAIAI",usdValue:l,timestamp:(r.blockTime??Math.floor(Date.now()/1e3))*1e3,signature:e})}if(s>0){let l=s*this._price,c=l*.005;this.fees.burnFees+=c,this.fees.total=this.fees.buyFees+this.fees.burnFees,this.actions.unshift({id:e.slice(0,10)+"-b",type:"burn",amount:s,token:"AIAIAI",usdValue:l,timestamp:(r.blockTime??Math.floor(Date.now()/1e3))*1e3,signature:e})}if(this.actions.length>100){let l=Math.ceil(this.actions.length*.8);this.actions=this.actions.slice(0,Math.max(l,100))}}catch(r){Z.debug("ActionFeed","Failed to parse tx",{error:r.message})}}setPrice(e){e>0&&(this._price=e)}getActions(){return[...this.actions]}getRecentActions(e=10){return this.actions.slice(0,e)}getFees(){return{...this.fees}}getActionSummary(){let e=this.actions.filter(n=>n.type==="buy"),r=this.actions.filter(n=>n.type==="burn");return{buys:e.length,burns:r.length,totalBought:e.reduce((n,o)=>n+o.amount,0),totalBurned:r.reduce((n,o)=>n+o.amount,0)}}getActionsParams=_i.Object({limit:_i.Optional(_i.Number({description:"Number of recent actions",default:10}))});getFeesParams=_i.Object({});async getActionsTool(e,r){let n=r.limit||10,o=this.getRecentActions(n);if(o.length===0)return{content:[{type:"text",text:["No buy/burn actions detected yet.",`Action wallet: ${at.slice(0,8)}\u2026${at.slice(-6)}`,"Actions appear when the agent buys and burns $AIAIAI via Pump.fun."].join(`
|
|
104
|
+
`)}]};let s=this.getActionSummary();return{content:[{type:"text",text:[`\u{1F504} Recent Actions (${o.length})`,` Buys: ${s.buys} (${s.totalBought.toLocaleString()} $AIAIAI)`,` Burns: ${s.burns} (${s.totalBurned.toLocaleString()} $AIAIAI)`,"",...o.map(l=>{let c=l.type==="buy"?"\u2197":"\u{1F525}",f=new Date(l.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return` ${c} ${f} ${l.type.toUpperCase().padEnd(4)} ${l.amount.toLocaleString()} $AIAIAI ($${l.usdValue.toFixed(2)})`})].join(`
|
|
105
|
+
`)}]}}async getFeesTool(){let e=this.getFees();return{content:[{type:"text",text:["\u{1F4B5} Agent Fees (0.5% per action)",` Buy fees: $${e.buyFees.toFixed(4)}`,` Burn fees: $${e.burnFees.toFixed(4)}`," \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",` Total: $${e.total.toFixed(4)}`].join(`
|
|
106
|
+
`)}]}}},tt=new Ti});var Yp={};yt(Yp,{metricsCollector:()=>Fc});var Mc,Fc,Uc=xe(()=>{"use strict";Mc=class{toolMetrics=[];modelMetrics=[];sessionStart=Date.now();sessionToolBreakdown={};recordToolCall(e){this.toolMetrics.push(e),this.sessionToolBreakdown[e.toolName]||(this.sessionToolBreakdown[e.toolName]={count:0,totalLatency:0,errors:0});let r=this.sessionToolBreakdown[e.toolName];r.count++,r.totalLatency+=e.durationMs,e.success||r.errors++,this.toolMetrics.length>1e3&&(this.toolMetrics=this.toolMetrics.slice(-500))}recordModelCall(e){this.modelMetrics.push(e),this.modelMetrics.length>500&&(this.modelMetrics=this.modelMetrics.slice(-250))}getSessionMetrics(e){let r={};for(let[n,o]of Object.entries(this.sessionToolBreakdown))r[n]={count:o.count,avgLatency:o.count>0?Math.round(o.totalLatency/o.count):0,errors:o.errors};return{sessionId:e,startTime:this.sessionStart,totalToolCalls:this.toolMetrics.length,totalModelCalls:this.modelMetrics.length,totalTokensIn:this.modelMetrics.reduce((n,o)=>n+o.inputTokens,0),totalTokensOut:this.modelMetrics.reduce((n,o)=>n+o.outputTokens,0),errors:this.toolMetrics.filter(n=>!n.success).length+this.modelMetrics.filter(n=>!n.success).length,toolBreakdown:r}}getToolLatency(e){let r=this.toolMetrics.filter(o=>o.toolName===e).map(o=>o.durationMs).sort((o,s)=>o-s);if(r.length===0)return{p50:0,p95:0,p99:0};let n=o=>r[Math.min(Math.floor(r.length*o/100),r.length-1)];return{p50:n(50),p95:n(95),p99:n(99)}}getSummary(){let e=this.getSessionMetrics("current"),n=["\u{1F4CA} Session Metrics",`Uptime: ${Math.round((Date.now()-e.startTime)/1e3)}s | Tool calls: ${e.totalToolCalls} | Model calls: ${e.totalModelCalls}`,`Tokens: ${e.totalTokensIn.toLocaleString()} in / ${e.totalTokensOut.toLocaleString()} out`,`Errors: ${e.errors}`],o=Object.entries(e.toolBreakdown).sort((s,i)=>i[1].count-s[1].count).slice(0,5);if(o.length>0){n.push("","Top tools:");for(let[s,i]of o)n.push(` ${s}: ${i.count} calls, ${i.avgLatency}ms avg, ${i.errors} errors`)}return n.join(`
|
|
107
|
+
`)}},Fc=new Mc});var ag={};yt(ag,{PRESETS:()=>Vo,getCurrentTheme:()=>Gc,getPresetColors:()=>Jc,listThemes:()=>Yc,setTheme:()=>qc});import{existsSync as sg,readFileSync as rv}from"node:fs";import{join as Di}from"node:path";import{homedir as nv}from"node:os";function Gc(){let t=Di(ig,"config","theme.json");try{if(sg(t)){let e=rv(t,"utf-8");return JSON.parse(e).theme||"solana"}}catch{}return"solana"}function qc(t){let e=Vo[t];if(!e)return!1;let r=Di(ig,"config"),n=Di(r,"theme.json");try{let{mkdirSync:o,writeFileSync:s}=ie("node:fs");return sg(r)||o(r,{recursive:!0}),s(n,JSON.stringify({theme:t,colors:e.colors},null,2),"utf-8"),!0}catch{return!1}}function Jc(){let t=Gc();return Vo[t]?.colors??Vo.solana.colors}function Yc(){return Object.entries(Vo).map(([t,e])=>` ${t===Gc()?"\u2605":" "} ${t.padEnd(14)} ${e.description}`).join(`
|
|
108
|
+
`)}var ig,Vo,Vc=xe(()=>{"use strict";ig=process.env.AIAIAI_HOME??Di(nv(),".aiaiai"),Vo={solana:{name:"Solana Sunset",description:"Warm gradients inspired by the Solana blockchain colors",colors:{accent:"#9945FF",header:"#14F195",muted:"#888888",dim:"#444444",success:"#14F195",warn:"#FFD600",error:"#FF4444",background:"#111111"}},cyberpunk:{name:"Cyberpunk",description:"Neon pink and cyan \u2014 late night trading terminal",colors:{accent:"#FF00FF",header:"#00FFFF",muted:"#666666",dim:"#333333",success:"#00FF44",warn:"#FFFF00",error:"#FF0044",background:"#0A0A0A"}},monochrome:{name:"Monochrome",description:"Clean grayscale \u2014 professional trading desk",colors:{accent:"#FFFFFF",header:"#DDDDDD",muted:"#888888",dim:"#444444",success:"#CCCCCC",warn:"#999999",error:"#FF4444",background:"#111111"}},forest:{name:"Forest",description:"Calm greens \u2014 for zen trading sessions",colors:{accent:"#50FA7B",header:"#7BFA50",muted:"#6272A4",dim:"#44475A",success:"#50FA7B",warn:"#F1FA8C",error:"#FF5555",background:"#1A2D1A"}},ocean:{name:"Ocean",description:"Deep blues \u2014 data-rich dashboard feel",colors:{accent:"#8BE9FD",header:"#6272A4",muted:"#6272A4",dim:"#44475A",success:"#50FA7B",warn:"#F1FA8C",error:"#FF5555",background:"#0D1B2A"}}}});var cg={};yt(cg,{clipboardSupported:()=>Ni,copyToClipboard:()=>Hc,encodeOSC52:()=>lg});function lg(t){return`\x1B]52;c;${Buffer.from(t).toString("base64")}\x07`}function Hc(t){try{return process.stdout.write(lg(t)),!0}catch{return!1}}function Ni(){let t=process.env.TERM_PROGRAM??"";return process.env.TERM?.includes("xterm")||t.includes("iTerm")||t.includes("kitty")||t.includes("Wez")||t.includes("Alacritty")||t.includes("Terminal")?"\u2705 Clipboard ready (OSC 52)":"\u26A0\uFE0F Clipboard may not be supported in this terminal"}var zc=xe(()=>{"use strict"});var hg={};yt(hg,{hasWebhooks:()=>Zc,notify:()=>Xc,sendDiscord:()=>fg,sendTelegram:()=>mg});import{existsSync as iv,readFileSync as av}from"node:fs";import{join as dg}from"node:path";import{homedir as lv}from"node:os";function Mi(t){let e=dg(cv,".env");if(!iv(e))return null;let r=av(e,"utf-8"),n=t==="discord"?"WEBHOOK_DISCORD":"WEBHOOK_TELEGRAM";return new RegExp(`^${n}=(.+)$`,"m").exec(r)?.[1]??null}async function fg(t){let e=Mi("discord");if(!e)return!1;try{return(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({content:`\u{1F916} **AIAIAI Agent**
|
|
109
|
+
${t}`})})).ok}catch(r){return Z.warn("Webhooks","Discord send failed",{error:r.message}),!1}}async function mg(t){let e=Mi("telegram");if(!e)return!1;try{return(await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({chat_id:uv(e),text:`\u{1F916} AIAIAI Agent
|
|
110
|
+
${t}`,parse_mode:"HTML"})})).ok}catch(r){return Z.warn("Webhooks","Telegram send failed",{error:r.message}),!1}}function uv(t){return/chat_id=([^&]+)/.exec(t)?.[1]??""}async function Xc(t){let[e,r]=await Promise.all([fg(t),mg(t)]);!e&&!r&&Z.debug("Webhooks","No webhooks configured or all failed")}function Zc(){return!!(Mi("discord")||Mi("telegram"))}var cv,eu=xe(()=>{"use strict";Ye();cv=process.env.AIAIAI_HOME??dg(lv(),".aiaiai")});var xg={};yt(xg,{ACTION_WALLET:()=>bg,COLD_WALLET:()=>wg,DEPOSIT_WALLET:()=>Eg,addAlert:()=>pg,addAlertParams:()=>pv,addAlertTool:()=>iu,addToWatchList:()=>Ag,checkAlerts:()=>dv,checkAlertsParams:()=>gv,checkAlertsTool:()=>au,compareTokensParams:()=>Av,compareTokensTool:()=>lu,getActiveAlerts:()=>gg,getWatchList:()=>Ho,listWatchParams:()=>hv,listWatchTool:()=>su,portfolioParams:()=>yv,portfolioTool:()=>cu,removeFromWatchList:()=>yg,removeWatchParams:()=>mv,removeWatchTool:()=>ou,watchTokenParams:()=>fv,watchTokenTool:()=>nu});import{Type as lt}from"@sinclair/typebox";function pg(t,e,r){let n={id:`alert-${Date.now()}-${Math.random().toString(36).slice(2,5)}`,token:t,type:e,price:r,active:!0,createdAt:Date.now()};return tu.push(n),n}function dv(t,e){let r=[];for(let n of tu)!n.active||n.token!==e||(n.type==="above"&&t>=n.price||n.type==="below"&&t<=n.price)&&(n.active=!1,n.triggeredAt=Date.now(),r.push(n));return r}function gg(){return tu.filter(t=>t.active)}function Ag(t){ru.add(t)}function yg(t){ru.delete(t)}function Ho(){return[...ru]}async function nu(t,e){let r=e.address;return Ag(r),{content:[{type:"text",text:`\u{1F441}\uFE0F Watching ${r.slice(0,8)}\u2026${r.slice(-6)}. You'll get alerts on significant moves.`}]}}async function ou(t,e){let r=e.address;return yg(r),{content:[{type:"text",text:`Removed ${r.slice(0,8)}\u2026 from watch list.`}]}}async function su(){let t=Ho();if(t.length===0)return{content:[{type:"text",text:"Watch list is empty."}]};let e=t.map((r,n)=>` ${n+1}. ${r.slice(0,8)}\u2026${r.slice(-6)}`);return{content:[{type:"text",text:`Watch List (${t.length}):
|
|
111
|
+
${e.join(`
|
|
112
|
+
`)}`}]}}async function iu(t,e){let r=e.token,n=e.type,o=e.price,s=pg(r,n,o);return{content:[{type:"text",text:`\u{1F514} Alert set: ${n} $${o} for ${r.slice(0,8)}\u2026 (${s.id})`}]}}async function au(){let t=gg();if(t.length===0)return{content:[{type:"text",text:"No active alerts."}]};let e=t.map(r=>` ${r.id} \u2014 ${r.type} $${r.price} (${r.token.slice(0,8)}\u2026)`);return{content:[{type:"text",text:`Active Alerts (${t.length}):
|
|
113
|
+
${e.join(`
|
|
114
|
+
`)}`}]}}async function lu(t,e){let r=e.address1,n=e.address2,o=null,s=null;try{r===Ic||r.toLowerCase()==="aiaiai"?o=await We.getAiaiaiPrice():o=await We.fetchToken(r)}catch(l){Z.warn("CrossTools","compareTokens: failed to fetch price1",{address:r,error:l.message}),o=null}try{n===Ic||n.toLowerCase()==="aiaiai"?s=await We.getAiaiaiPrice():s=await We.fetchToken(n)}catch(l){Z.warn("CrossTools","compareTokens: failed to fetch price2",{address:n,error:l.message}),s=null}return{content:[{type:"text",text:["\u2500\u2500 Token Comparison \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500","",`Token 1: ${r.slice(0,8)}\u2026`,o?` Price: $${o.priceUsd??"N/A"}`:" Price: N/A",o?` 24h: ${o.priceChange24h>0?"+":""}${o.priceChange24h.toFixed(2)}%`:" 24h: N/A",o?` Liq: $${(o.liquidityUsd/1e3).toFixed(1)}k`:" Liq: N/A",o?` MCap: $${o.marketCap?(o.marketCap/1e3).toFixed(1)+"k":"N/A"}`:" MCap: N/A","",`Token 2: ${n.slice(0,8)}\u2026`,s?` Price: $${s.priceUsd??"N/A"}`:" Price: N/A",s?` 24h: ${s.priceChange24h>0?"+":""}${s.priceChange24h.toFixed(2)}%`:" 24h: N/A",s?` Liq: $${(s.liquidityUsd/1e3).toFixed(1)}k`:" Liq: N/A",s?` MCap: $${s.marketCap?(s.marketCap/1e3).toFixed(1)+"k":"N/A"}`:" MCap: N/A"].join(`
|
|
115
|
+
`)}]}}async function cu(t,e){let r=e.address,n=null;try{let o=await et.getAll();r===wg?n=o.cold:r===bg?n=o.action:r===Eg&&(n=o.deposit)}catch(o){Z.warn("CrossTools","portfolioTool: wallet lookup failed",{address:r,error:o.message})}if(n){let o=await new Promise(i=>{et.getSolPrice().then(i).catch(()=>i(150))});return{content:[{type:"text",text:[`\u{1F4CA} Portfolio: ${r.slice(0,8)}\u2026${r.slice(-6)}`,"",` SOL: ${n.sol.toFixed(4)} ($${(n.sol*o).toFixed(2)} est)`,` $AIAIAI: ${n.aiaiai.toLocaleString(void 0,{maximumFractionDigits:0})}`,` USDC: ${n.usdc.toFixed(2)}`,"",` Total value (est): $${(n.sol*o+n.usdc).toFixed(2)} + $AIAIAI`].join(`
|
|
116
|
+
`)}]}}return{content:[{type:"text",text:`\u{1F4CA} Analyzed: ${r.slice(0,8)}\u2026${r.slice(-6)}
|
|
117
|
+
Use /wallet or /deposit for tracked wallet balances.`}]}}var tu,ru,fv,mv,hv,pv,gv,Av,yv,wg,bg,Eg,uu=xe(()=>{"use strict";Un();Jo();Ye();tu=[];ru=new Set;fv=lt.Object({address:lt.String({description:"Token contract address to watch"})}),mv=lt.Object({address:lt.String({description:"Token contract address to remove"})}),hv=lt.Object({}),pv=lt.Object({token:lt.String({description:"Token address or 'AIAIAI'"}),type:lt.String({description:"Alert type: above or below"}),price:lt.Number({description:"Price threshold in USD"})}),gv=lt.Object({}),Av=lt.Object({address1:lt.String({description:"First token address"}),address2:lt.String({description:"Second token address"})});yv=lt.Object({address:lt.String({description:"Wallet address to analyze"})});wg="A11iZoqEt6hU7HyggqC67ee4AtYmaJjwKCvJLerJRV2J",bg="BygDYM1ZXLQNC1HXLhnd1rHZ7E5XjioqT3vPjJFfjnU2",Eg="FBMDYpG9WXKy4SgxuATQdB2sCyzHsJWPrEr45z3TgL2e"});var Sg={};yt(Sg,{btcMempoolParams:()=>Sv,defiTvlParams:()=>Tv,fearGreedParams:()=>xv,fundingRatesParams:()=>Cv,getBtcMempoolTool:()=>_v,getDefiTvlTool:()=>Iv,getFearGreedTool:()=>vv,getFundingRatesTool:()=>kv,getSolanaStatsTool:()=>Rv,solanaStatsParams:()=>Bv});import{Type as ar}from"@sinclair/typebox";function bv(t){let e=fu.get(t);if(e){if(Date.now()>e.expires){fu.delete(t);return}return e.data}}function Ev(t,e){fu.set(t,{data:e,expires:Date.now()+wv})}async function vv(){let t=bv("fear_greed");if(t)return t;try{let e=await fe("https://api.alternative.me/fng/?limit=7",{timeout:1e4,retries:1});if(!e.ok)return vg();let n=(await e.json()).data??[],o=n[0],s=n.map((l,c)=>{let f=c===0?"Now":l.timestamp?new Date(parseInt(l.timestamp)*1e3).toLocaleDateString():`${c}d ago`;return` ${l.value_classification} ${l.value}/100 \u2014 ${f}`}),i={content:[{type:"text",text:["Fear & Greed Index",`Current: ${o?.value_classification??"N/A"} (${o?.value??"?"}/100)`,...s].join(`
|
|
118
|
+
`)}]};return Ev("fear_greed",i),i}catch(e){return Z.warn("MarketSentiment","Fear & Greed fetch failed",{error:e.message}),vg()}}async function vg(){return{content:[{type:"text",text:"Fear & Greed Index: Neutral (50/100) \u2014 data unavailable"}]}}async function kv(t,e){let r=e.limit||10;try{let n=await fe("https://fapi.binance.com/fapi/v1/premiumIndex",{timeout:1e4,retries:1});if(!n.ok)return Cg();let i=(await n.json()??[]).filter(l=>parseFloat(l.lastFundingRate)!==0).sort((l,c)=>Math.abs(parseFloat(c.lastFundingRate))-Math.abs(parseFloat(l.lastFundingRate))).slice(0,r).map(l=>{let c=parseFloat(l.lastFundingRate)*100,f=c>0?"+":"";return` ${l.symbol.padEnd(12)} ${f}${c.toFixed(4)}%`});return{content:[{type:"text",text:[`Funding Rates (top ${r} by absolute value):`,...i].join(`
|
|
119
|
+
`)}]}}catch(n){return Z.warn("MarketSentiment","Funding rates fetch failed",{error:n.message}),Cg()}}async function Cg(){return{content:[{type:"text",text:"Funding Rates: Data temporarily unavailable."}]}}async function _v(){try{let[t,e]=await Promise.all([fe("https://mempool.space/api/v1/fees/recommended",{timeout:1e4}),fe("https://mempool.space/api/mempool",{timeout:1e4})]),r=await t.json(),n=await e.json();return{content:[{type:"text",text:["BTC Mempool",`Count: ${(n.count??0).toLocaleString()} transactions`,`Mempool size: ${((n.vsize??0)/1e6).toFixed(2)} MB`,"","Fees (sat/vB):",` Fastest: ${r.fastestFee}`,` Half hour: ${r.halfHourFee}`,` Hour: ${r.hourFee}`,` Economy: ${r.economyFee}`,` Minimum: ${r.minimumFee}`].join(`
|
|
120
|
+
`)}]}}catch(t){return Z.warn("MarketSentiment","BTC mempool fetch failed",{error:t.message}),{content:[{type:"text",text:"BTC Mempool: Data temporarily unavailable."}]}}}async function Iv(t,e){let r=e.chain?.toLowerCase();try{if(r){let n=await fe(`https://api.llama.fi/v2/historicalChainTvl/${r}`,{timeout:1e4});if(!n.ok)return du(r);let o=await n.json(),s=o[o.length-1];return{content:[{type:"text",text:`DeFi TVL \u2014 ${r.toUpperCase()}
|
|
121
|
+
TVL: $${(s?.tvl??0).toLocaleString(void 0,{maximumFractionDigits:0})}`}]}}else{let n=await fe("https://api.llama.fi/v2/chains",{timeout:1e4});return n.ok?{content:[{type:"text",text:["DeFi TVL by Chain (top 15):",...(await n.json()??[]).sort((l,c)=>c.tvl-l.tvl).slice(0,15).map(l=>` ${l.name.padEnd(16)} $${(l.tvl/1e9).toFixed(2)}B`)].join(`
|
|
122
|
+
`)}]}:du("all")}}catch(n){return Z.warn("MarketSentiment","DeFi TVL fetch failed",{chain:r,error:n.message}),du(r??"all")}}async function du(t){return{content:[{type:"text",text:`DeFi TVL for "${t}": Data temporarily unavailable.`}]}}async function Rv(){try{let t=process.env.SOLANA_RPC_URL||"https://api.mainnet-beta.solana.com",e=JSON.stringify({jsonrpc:"2.0",id:1,method:"getEpochInfo",params:[]}),r=await fe(t,{timeout:1e4,retries:1,method:"POST",headers:{"Content-Type":"application/json"},body:e});if(!r.ok)return kg();let o=(await r.json()).result,s=(o.slotIndex/o.slotsInEpoch*100).toFixed(1),i=await fe("https://api.coingecko.com/api/v3/simple/price?ids=solana&vs_currencies=usd&include_24hr_change=true",{timeout:8e3}),l="";return i.ok&&(l=`$${(await i.json()).solana.usd.toFixed(2)}`),{content:[{type:"text",text:["Solana Network",`Epoch: ${o.epoch}`,`Slot: ${o.absoluteSlot.toLocaleString()}`,`Block: ${o.blockHeight.toLocaleString()}`,`Progress: ${s}% (${o.slotIndex.toLocaleString()}/${o.slotsInEpoch.toLocaleString()})`,l?`SOL Price: ${l}`:""].filter(Boolean).join(`
|
|
123
|
+
`)}]}}catch(t){return Z.warn("MarketSentiment","Solana stats fetch failed",{error:t.message}),kg()}}async function kg(){return{content:[{type:"text",text:"Solana Stats: Data temporarily unavailable. Check your RPC endpoint."}]}}var fu,wv,xv,Cv,Sv,Tv,Bv,_g=xe(()=>{"use strict";ht();Ye();fu=new Map,wv=3e4;xv=ar.Object({});Cv=ar.Object({limit:ar.Optional(ar.Number({description:"Number of top pairs",default:10}))});Sv=ar.Object({});Tv=ar.Object({chain:ar.Optional(ar.String({description:"Chain name (e.g., solana, ethereum) or omit for all"}))});Bv=ar.Object({})});var Fg={};yt(Fg,{SetupWizard:()=>Eu});import{existsSync as bu,readFileSync as Dg,writeFileSync as dC,mkdirSync as fC,chmodSync as mC}from"node:fs";import{resolve as Ng}from"node:path";import{homedir as hC}from"node:os";import*as Mg from"node:readline";var Eu,Ug=xe(()=>{"use strict";Eu=class{home;envPath;constructor(){this.home=process.env.AIAIAI_HOME??Ng(hC(),".aiaiai"),this.envPath=Ng(this.home,".env")}ask(e,r=""){let n=Mg.createInterface({input:process.stdin,output:process.stdout});return new Promise(o=>{n.question(` ${e}${r?` [${r}]`:""}: `,s=>{n.close(),o(s.trim()||r)})})}read(e){if(!bu(this.envPath))return"";let r=new RegExp(`^${e}=(.*)$`,"m").exec(Dg(this.envPath,"utf-8"));return r?r[1]:""}write(e,r){let n=bu(this.envPath)?Dg(this.envPath,"utf-8"):"",o=new RegExp(`^${e}=.*$`,"m"),s=`${e}=${r}`;dC(this.envPath,o.test(n)?n.replace(o,s):n+(n.endsWith(`
|
|
124
|
+
`)||!n?"":`
|
|
125
|
+
`)+s+`
|
|
126
|
+
`);try{mC(this.envPath,384)}catch{}}async run(){console.log(`
|
|
127
|
+
\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557
|
|
128
|
+
\u2551 AIAIAI Chain Agent \u2014 Setup \u2551
|
|
129
|
+
\u2551 $AIAIAI \xB7 Solana-native AI agent \u2551
|
|
130
|
+
\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D
|
|
131
|
+
`),bu(this.home)||fC(this.home,{recursive:!0}),console.log(` Required configuration
|
|
132
|
+
`);let e=this.read("OPENROUTER_API_KEY")||process.env.OPENROUTER_API_KEY||"",r=await this.ask(`OpenRouter API key (https://openrouter.ai/keys)${e?" [set, Enter to keep]":""}`,"");if(r)this.write("OPENROUTER_API_KEY",r);else if(!e)return console.log(`
|
|
133
|
+
\u26A0\uFE0F OpenRouter API key is required. Get one at https://openrouter.ai/keys
|
|
134
|
+
`),!1;console.log(`
|
|
135
|
+
Optional configuration
|
|
136
|
+
`);let n=this.read("SOLANA_RPC_URL"),o=await this.ask("Solana RPC URL",n||"https://api.mainnet-beta.solana.com");o&&this.write("SOLANA_RPC_URL",o);let s=this.read("DEFAULT_MODEL"),i=await this.ask("Default model (optional, e.g. openai/gpt-4o)",s||"");return i&&this.write("DEFAULT_MODEL",i),console.log(`
|
|
137
|
+
\u2713 Config saved \u2192 ${this.envPath}`),!0}}});var qg={};yt(qg,{exportCSV:()=>xC,getPLSummary:()=>bC,getTradeHistory:()=>EC,recordTrade:()=>wC});import{existsSync as jg,readFileSync as pC,writeFileSync as Kg,mkdirSync as Wg}from"node:fs";import{join as Yi}from"node:path";import{homedir as gC}from"node:os";function Vi(){try{let t=pC(Gg,"utf-8");return JSON.parse(t)}catch{return{trades:[],totalSpent:0,totalReceived:0,avgCostBasis:0}}}function yC(t){try{jg(Hn)||Wg(Hn,{recursive:!0,mode:448}),Kg(Gg,JSON.stringify(t,null,2),"utf-8")}catch(e){Z.warn("ProfitTracker","Failed to save state",{error:e.message})}}function wC(t,e,r,n){let o=Vi(),s=e>0?r/e:0,i={timestamp:Date.now(),type:t,tokenAmount:e,solAmount:r,pricePerToken:s,txSignature:n};if(o.trades.push(i),t==="buy"){o.totalSpent+=r;let l=o.trades.filter(c=>c.type==="buy").reduce((c,f)=>c+f.tokenAmount,0);o.avgCostBasis=l>0?o.totalSpent/l:0}else t==="sell"&&(o.totalReceived+=r);yC(o),Z.info("ProfitTracker","Recorded "+t,{tokenAmount:e,solAmount:r,pricePerToken:s})}function bC(t){let e=Vi(),n=e.trades.filter(d=>d.type==="buy").reduce((d,a)=>d+a.tokenAmount,0),o=e.trades.filter(d=>d.type==="sell"||d.type==="burn").reduce((d,a)=>d+a.tokenAmount,0),s=n-o,i=e.totalReceived-e.totalSpent*(o/Math.max(n,1)),l=s*t,c=i+l,f=e.totalSpent>0?c/e.totalSpent*100:0;return{avgCostBasis:e.avgCostBasis,totalSpent:e.totalSpent,totalReceived:e.totalReceived,realizedPL:i,unrealizedPL:l,roi:f}}function EC(){return Vi().trades}function xC(){let t=Vi(),e="timestamp,type,tokenAmount,solAmount,pricePerToken,txSignature",r=t.trades.map(s=>s.timestamp+","+s.type+","+s.tokenAmount+","+s.solAmount+","+s.pricePerToken+","+(s.txSignature??"")),n=e+`
|
|
138
|
+
`+r.join(`
|
|
139
|
+
`),o=Yi(Hn,"pl-export.csv");return jg(Hn)||Wg(Hn,{recursive:!0,mode:448}),Kg(o,n,"utf-8"),Z.info("ProfitTracker","Exported CSV",{path:o}),o}var AC,Hn,Gg,Jg=xe(()=>{"use strict";Ye();AC=process.env.AIAIAI_HOME??Yi(gC(),".aiaiai"),Hn=Yi(AC,".tracker"),Gg=Yi(Hn,"pl.json")});var nA=ta(Tu(),1);import{readFileSync as es,existsSync as ts,writeFileSync as zg,mkdirSync as Xg}from"node:fs";import{resolve as Zg,join as Ir,dirname as eA}from"node:path";import{homedir as tA}from"node:os";import{fileURLToPath as rA}from"node:url";import{execSync as xu,execFileSync as vC}from"node:child_process";import{render as CC}from"ink";import Yg from"react";var eo=class{tools=new Map;commands=new Map;skills=new Map;hooks=new Map;systemPrompt="";addTool(e){this.tools.set(e.name,e)}addCommand(e,r){this.commands.set(e,r)}addSkill(e){if(this.skills.set(e.name,e),e.tools)for(let r of e.tools)this.addTool(r);if(e.commands)for(let[r,n]of e.commands)this.addCommand(r,n);if(e.hooks)for(let[r,n]of Object.entries(e.hooks))this.addHook(r,n)}addHook(e,r){this.hooks.has(e)||this.hooks.set(e,new Set),this.hooks.get(e).add(r)}async fireHook(e,...r){let n=this.hooks.get(e);if(n)for(let o of n)await o(...r)}getTool(e){return this.tools.get(e)}getCommand(e){return this.commands.get(e)}listTools(){return[...this.tools.values()]}listCommands(){return[...this.commands.entries()]}setSystemPrompt(e){this.systemPrompt=e}getSystemPrompt(){return this.systemPrompt}};import{pathToFileURL as vl}from"node:url";import{resolve as lb,extname as cb}from"node:path";import{existsSync as Lm}from"node:fs";var Pr={fg:(t,e,r)=>`\x1B[38;2;${t};${e};${r}m`,bold:"\x1B[1m",reset:"\x1B[0m"};function oa(t){let e=t.replace("#","");return[parseInt(e.slice(0,2),16),parseInt(e.slice(2,4),16),parseInt(e.slice(4,6),16)]}var D={accent:"#ff3366",success:"#00ff88",error:"#ff4444",warn:"#ffaa33",muted:"#6b7280",header:"#a78bfa",dim:"#1f2937"};function $r(){return{fg(t,e){let r=D[t]??t;if(!r.startsWith("#"))return e;let[n,o,s]=oa(r);return`${Pr.fg(n,o,s)}${e}${Pr.reset}`}}}var BC=$r(),Iu={};for(let[t,e]of Object.entries(D)){let[r,n,o]=oa(e);Iu[t]=Pr.fg(r,n,o)}function Rr(t){let[e,r,n]=oa(t),o=Iu[t]??Pr.fg(e,r,n);return s=>`${o}${s}${Pr.reset}`}var E={accent:Rr(D.accent),success:Rr(D.success),error:Rr(D.error),warn:Rr(D.warn),muted:Rr(D.muted),header:Rr(D.header),dim:Rr(D.dim),bold:t=>`${Pr.bold}${t}${Pr.reset}`};async function Cl(t,e,r={}){let n=lb(t);if(!Lm(n))throw new Error(`Extension file not found: ${n}`);let o=$r(),s=r.onNotify??(()=>{}),i=r.onStatusUpdate??(()=>{}),l=r.onShowModelSelector??(()=>{}),c={notify(w){s(w)},setStatus(w,O){i(w,O)},setTheme(w){},setHeader(w){},showModelSelector(w){l(w)},theme:o},f={registerCommand(w,O){e.addCommand(w,O)},registerTool(w){e.addTool(w)},registerSkill(w){e.addSkill(w)},on(w,O){e.addHook(w,O)},setSystemPrompt(w){e.setSystemPrompt(w)},ui:c},d=cb(n).toLowerCase(),a;if(d===".ts"){let w=n.replace(/\.ts$/,".js");if(Lm(w))a=await import(vl(w).href);else try{a=await(await Promise.resolve().then(()=>(Om(),$m))).tsImport(vl(n).href,import.meta.url)}catch{throw new Error(`Cannot import TypeScript extension "${n}" in packaged mode.
|
|
140
|
+
Fix: compile to .js first or install tsx: npm install -g tsx`)}}else a=await import(vl(n).href);let h=a.default??a;if(typeof h!="function")throw new Error(`Extension must export a default function. Got: ${typeof h}`);let p=console.log,g=console.error,x=console.warn,A=(...w)=>{c.notify(w.map(O=>String(O)).join(" "))};console.log=A,console.error=A,console.warn=A;try{await h(f)}finally{console.log=p,console.error=g,console.warn=x}}import{useState as xt,useCallback as Jn,useEffect as Pv,useRef as Yn,useMemo as $v}from"react";import{Box as ct,Text as Ae,useApp as Ov,useInput as Lv}from"ink";import{existsSync as Qv,readFileSync as Dv,writeFileSync as Nv,mkdirSync as Mv}from"node:fs";import{join as Tg}from"node:path";import{homedir as Fv}from"node:os";import{Type as Ig}from"@sinclair/typebox";import{Box as Zs,Text as Qt}from"ink";import{jsx as zr,jsxs as xr}from"react/jsx-runtime";function Qm({model:t,chain:e,price:r,toolRunning:n,connected:o,statusLine:s,cpu:i,ram:l,uptime:c,apiCalls:f}){let d=e.slice(0,8),a=t.split("/").pop()?.slice(0,16)??t.slice(0,16),h=(i??0)>80?D.error:(i??0)>50?D.warn:D.success,p=(l??0)>85?D.error:(l??0)>60?D.warn:D.success;return xr(Zs,{borderStyle:"single",borderColor:D.dim,paddingX:1,flexDirection:"row",justifyContent:"space-between",children:[xr(Zs,{gap:2,children:[zr(Qt,{color:D.accent,bold:!0,children:"\u{1F916} AIAIAI"}),r?zr(Qt,{color:D.success,children:r}):null,zr(Qt,{color:D.muted,children:a})]}),zr(Zs,{children:n?xr(Qt,{color:D.warn,children:["\u2699 ",n]}):s?zr(Qt,{color:D.muted,children:s.slice(0,60)}):zr(Qt,{color:D.muted,children:o?"ready":"connecting\u2026"})}),xr(Zs,{gap:2,children:[i!==void 0&&xr(Qt,{color:h,children:["CPU:",i,"%"]}),l!==void 0&&xr(Qt,{color:p,children:["RAM:",l,"%"]}),c&&zr(Qt,{color:D.muted,children:c}),f!==void 0&&xr(Qt,{color:D.muted,children:["API:",f,"/m"]}),xr(Qt,{color:D.header,children:["\u26D3 ",d]})]})]})}import ub,{useState as Xr,useCallback as ei,useRef as Dm,useMemo as kl}from"react";import{Box as ze,Text as Le,useStdout as db,useInput as fb}from"ink";import{jsx as Se,jsxs as Xe}from"react/jsx-runtime";var mb=40,hb=100,So=new Map;function pb(t){let e=So.get(t);if(e)return e;let r=new Date(t).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});if(So.set(t,r),So.size>500){let n=So.keys().next().value;n!==void 0&&So.delete(n)}return r}var Nm=["token info","token security","token holders","token traders","track kol","track smartmoney","track follow-wallet","market kline","market trending","market trenches","market signal","watch","unwatch","watchlist","alerts","alert above","alert below","compare","price","news","models","cost","model","clear","wallet","deposit","burn","actions","activity","fees","keys","providers","goals","goal add","goal done","goal list","schedule","sessions","resume","memory","update","gmgn","help","exit","quit"];function gb(t){if(!t||t==="/")return Nm.map(r=>`/${r}`);let e=t.startsWith("/")?t.slice(1):t;return Nm.filter(r=>r.startsWith(e)).map(r=>`/${r}`)}function Ab(t){return t.role==="tool"?`${t.toolName??"tool"}|${t.content.length}|${t.isError?1:0}`:t.content}var yb=ub.memo(function({msg:e}){let r=kl(()=>pb(e.ts),[e.ts]),n=kl(()=>Ab(e),[e.content,e.role,e.toolName,e.isError]);if(e.role==="user")return Xe(ze,{flexDirection:"row",gap:1,marginTop:1,children:[Se(Le,{color:D.muted,children:r}),Se(Le,{color:D.accent,bold:!0,children:"you "}),Se(Le,{wrap:"wrap",children:e.content})]});if(e.role==="assistant")return Xe(ze,{flexDirection:"row",gap:1,marginTop:1,children:[Se(Le,{color:D.muted,children:r}),Se(Le,{color:D.header,bold:!0,children:"\u{1F916} "}),Se(Le,{wrap:"wrap",children:e.content})]});if(e.role==="tool"){let o=e.isError?"\u2717":"\u2713",s=e.isError?D.error:D.success,i=e.content.length>120;return Xe(ze,{flexDirection:"column",marginY:0,children:[Xe(ze,{flexDirection:"row",gap:1,children:[Se(Le,{color:D.muted,children:r}),Xe(Le,{color:s,children:[o," ",e.toolName??"tool"]}),i&&Xe(Le,{color:D.dim,children:[" (",e.content.length," chars)"]})]}),!i&&Se(ze,{marginLeft:6,children:Se(Le,{color:D.muted,wrap:"wrap",children:e.content})})]})}return e.role==="notify"?Se(ze,{borderStyle:"round",borderColor:D.accent,marginY:1,paddingX:1,children:Se(Le,{wrap:"wrap",children:e.content})}):Se(ze,{flexDirection:"row",gap:1,children:Se(Le,{color:D.dim,wrap:"wrap",children:e.content})})},(t,e)=>t.msg.id===e.msg.id&&t.msg.content===e.msg.content&&t.msg.isError===e.msg.isError&&t.msg.ts===e.msg.ts);function wb({value:t,onChange:e,onSubmit:r,disabled:n,onAbort:o}){let[s,i]=Xr(t.length),[l,c]=Xr([]),[f,d]=Xr(-1),[a,h]=Xr([]),[p,g]=Xr(-1),[x,A]=Xr(!1),w=Dm(t),O=Dm(s);w.current=t,O.current=s;let T=ei(F=>{let Q=w.current.slice(0,O.current),P=w.current.slice(O.current),$=Q+F+P;e($),i(O.current+F.length)},[e]),B=ei(()=>{let F=w.current;!F.trim()||n||(c(Q=>[F,...Q].slice(0,hb)),d(-1),A(!1),e(""),i(0),r(F))},[n,e,r]);fb((F,Q)=>{if(Q.escape){if(n){o();return}A(!1);return}if(!n){if(Q.tab){let P=w.current;if(!x){if(P.startsWith("/")&&P.length>0){let $=gb(P);if($.length===1&&$[0]!==P){e($[0]+" "),i($[0].length+1);return}if($.length>0){h($),g(0),A(!0);return}}return}if(a.length>0){let $=(p+1)%a.length;g($);let N=a[$];e(N+" "),i(N.length+1)}return}if(x&&A(!1),Q.return){if(F==="\r"&&!Q.shift){B();return}if(Q.shift||F===""){T(`
|
|
141
|
+
`);return}}if(Q.upArrow){if(l.length===0)return;let P=f<l.length-1?f+1:f;d(P),e(l[P]),i(l[P].length);return}if(Q.downArrow){if(f<=0){d(-1),e(""),i(0);return}let P=f-1;d(P),e(l[P]),i(l[P].length);return}if(Q.leftArrow){i(Math.max(0,O.current-1));return}if(Q.rightArrow){i(Math.min(w.current.length,O.current+1));return}if(Q.backspace||Q.delete){if(O.current<=0)return;let P=w.current.slice(0,O.current-1),$=w.current.slice(O.current);e(P+$),i(O.current-1);return}if(F&&F.length===1&&F.charCodeAt(0)>=32){T(F);return}}});let v=n?"thinking\u2026":"message or /command",I=(t||v).split(`
|
|
142
|
+
`),j=Math.min(I.length,5);return Xe(ze,{flexDirection:"column",children:[x&&a.length>0&&Xe(ze,{borderStyle:"single",borderColor:D.accent,paddingX:1,flexDirection:"column",marginBottom:0,children:[a.slice(0,8).map((F,Q)=>Xe(Le,{color:Q===p?D.accent:D.muted,bold:Q===p,children:[Q===p?"\u25B8 ":" ",F]},F)),a.length>8&&Xe(Le,{color:D.dim,children:[" \u2026",a.length-8," more"]})]}),Se(ze,{borderStyle:"round",borderColor:n?D.dim:D.accent,paddingX:1,paddingY:(j>1,0),flexDirection:"column",marginTop:1,children:Xe(ze,{flexDirection:"row",children:[Se(Le,{color:D.accent,bold:!0,children:"\u203A "}),Se(ze,{flexDirection:"column",flexGrow:1,children:t?I.slice(0,5).map((F,Q)=>{let $=Q===Math.min(O.current,I.length-1)?O.current-I.slice(0,Q).join(`
|
|
143
|
+
`).length-(Q>0?1:0):F.length,N=Math.min($,F.length),U=F.slice(0,N),q=F[N]||" ",H=F.slice(N+1);return Xe(Le,{wrap:"truncate-end",children:[U,Se(Le,{inverse:!0,children:q}),H]},Q)}):Se(Le,{color:D.dim,children:v})})]})})]})}function Mm({messages:t,streamingText:e,toolRunning:r,onSubmit:n,onAbort:o,disabled:s}){let[i,l]=Xr(""),{stdout:c}=db(),f=(c?.columns??80)-2,d=ei(p=>{n(p)},[n]),a=ei(()=>{o?.()},[o]),h=kl(()=>t.slice(-mb),[t]);return Xe(ze,{flexDirection:"column",width:"100%",children:[Xe(ze,{flexDirection:"column",flexGrow:1,children:[h.map(p=>Se(yb,{msg:p},p.id)),e&&Xe(ze,{flexDirection:"row",gap:1,marginTop:1,children:[Se(Le,{color:D.muted,children:" "}),Se(Le,{color:D.header,bold:!0,children:"\u{1F916} "}),Se(Le,{wrap:"wrap",children:e})]}),r&&Se(ze,{flexDirection:"row",gap:1,marginTop:1,children:Xe(Le,{color:D.warn,children:["\u2699 running ",r,"\u2026"]})})]}),Se(wb,{value:i,onChange:l,onSubmit:d,disabled:!!s,onAbort:a})]})}import{useState as Xm,useCallback as Ub,useEffect as jb,useMemo as Kb}from"react";import{Box as Bl,Text as Io,useInput as Wb}from"ink";import Lb,{useState as Qb,useEffect as Db}from"react";import{Text as Nb,useInput as Mb}from"ink";var Fm=(t=0)=>e=>`\x1B[${e+t}m`,Um=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,jm=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,_e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],overline:[53,55],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],gray:[90,39],grey:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgGray:[100,49],bgGrey:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}},uS=Object.keys(_e.modifier),bb=Object.keys(_e.color),Eb=Object.keys(_e.bgColor),dS=[...bb,...Eb];function xb(){let t=new Map;for(let[e,r]of Object.entries(_e)){for(let[n,o]of Object.entries(r))_e[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=_e[n],t.set(o[0],o[1]);Object.defineProperty(_e,e,{value:r,enumerable:!1})}return Object.defineProperty(_e,"codes",{value:t,enumerable:!1}),_e.color.close="\x1B[39m",_e.bgColor.close="\x1B[49m",_e.color.ansi=Fm(),_e.color.ansi256=Um(),_e.color.ansi16m=jm(),_e.bgColor.ansi=Fm(10),_e.bgColor.ansi256=Um(10),_e.bgColor.ansi16m=jm(10),Object.defineProperties(_e,{rgbToAnsi256:{value(e,r,n){return e===r&&r===n?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(n/255*5)},enumerable:!1},hexToRgb:{value(e){let r=/[a-f\d]{6}|[a-f\d]{3}/i.exec(e.toString(16));if(!r)return[0,0,0];let[n]=r;n.length===3&&(n=[...n].map(s=>s+s).join(""));let o=Number.parseInt(n,16);return[o>>16&255,o>>8&255,o&255]},enumerable:!1},hexToAnsi256:{value:e=>_e.rgbToAnsi256(..._e.hexToRgb(e)),enumerable:!1},ansi256ToAnsi:{value(e){if(e<8)return 30+e;if(e<16)return 90+(e-8);let r,n,o;if(e>=232)r=((e-232)*10+8)/255,n=r,o=r;else{e-=16;let l=e%36;r=Math.floor(e/36)/5,n=Math.floor(l/6)/5,o=l%6/5}let s=Math.max(r,n,o)*2;if(s===0)return 30;let i=30+(Math.round(o)<<2|Math.round(n)<<1|Math.round(r));return s===2&&(i+=60),i},enumerable:!1},rgbToAnsi:{value:(e,r,n)=>_e.ansi256ToAnsi(_e.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>_e.ansi256ToAnsi(_e.hexToAnsi256(e)),enumerable:!1}}),_e}var vb=xb(),Dt=vb;import Sl from"node:process";import Cb from"node:os";import Km from"node:tty";function _t(t,e=globalThis.Deno?globalThis.Deno.args:Sl.argv){let r=t.startsWith("-")?"":t.length===1?"-":"--",n=e.indexOf(r+t),o=e.indexOf("--");return n!==-1&&(o===-1||n<o)}var{env:Te}=Sl,ti;_t("no-color")||_t("no-colors")||_t("color=false")||_t("color=never")?ti=0:(_t("color")||_t("colors")||_t("color=true")||_t("color=always"))&&(ti=1);function kb(){if("FORCE_COLOR"in Te)return Te.FORCE_COLOR==="true"?1:Te.FORCE_COLOR==="false"?0:Te.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(Te.FORCE_COLOR,10),3)}function Sb(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function _b(t,{streamIsTTY:e,sniffFlags:r=!0}={}){let n=kb();n!==void 0&&(ti=n);let o=r?ti:n;if(o===0)return 0;if(r){if(_t("color=16m")||_t("color=full")||_t("color=truecolor"))return 3;if(_t("color=256"))return 2}if("TF_BUILD"in Te&&"AGENT_NAME"in Te)return 1;if(t&&!e&&o===void 0)return 0;let s=o||0;if(Te.TERM==="dumb")return s;if(Sl.platform==="win32"){let i=Cb.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Te)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(i=>i in Te)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(i=>i in Te)||Te.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in Te)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Te.TEAMCITY_VERSION)?1:0;if(Te.COLORTERM==="truecolor"||Te.TERM==="xterm-kitty"||Te.TERM==="xterm-ghostty"||Te.TERM==="wezterm")return 3;if("TERM_PROGRAM"in Te){let i=Number.parseInt((Te.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Te.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Te.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Te.TERM)||"COLORTERM"in Te?1:s}function Wm(t,e={}){let r=_b(t,{streamIsTTY:t&&t.isTTY,...e});return Sb(r)}var Tb={stdout:Wm({isTTY:Km.isatty(1)}),stderr:Wm({isTTY:Km.isatty(2)})},Gm=Tb;function qm(t,e,r){let n=t.indexOf(e);if(n===-1)return t;let o=e.length,s=0,i="";do i+=t.slice(s,n)+e+r,s=n+o,n=t.indexOf(e,s);while(n!==-1);return i+=t.slice(s),i}function Jm(t,e,r,n){let o=0,s="";do{let i=t[n-1]==="\r";s+=t.slice(o,i?n-1:n)+e+(i?`\r
|
|
144
|
+
`:`
|
|
145
|
+
`)+r,o=n+1,n=t.indexOf(`
|
|
146
|
+
`,o)}while(n!==-1);return s+=t.slice(o),s}var{stdout:Ym,stderr:Vm}=Gm,_l=Symbol("GENERATOR"),Tn=Symbol("STYLER"),_o=Symbol("IS_EMPTY"),Hm=["ansi","ansi","ansi256","ansi16m"],In=Object.create(null),Ib=(t,e={})=>{if(e.level&&!(Number.isInteger(e.level)&&e.level>=0&&e.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let r=Ym?Ym.level:0;t.level=e.level===void 0?r:e.level};var Bb=t=>{let e=(...r)=>r.join(" ");return Ib(e,t),Object.setPrototypeOf(e,To.prototype),e};function To(t){return Bb(t)}Object.setPrototypeOf(To.prototype,Function.prototype);for(let[t,e]of Object.entries(Dt))In[t]={get(){let r=ri(this,Il(e.open,e.close,this[Tn]),this[_o]);return Object.defineProperty(this,t,{value:r}),r}};In.visible={get(){let t=ri(this,this[Tn],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var Tl=(t,e,r,...n)=>t==="rgb"?e==="ansi16m"?Dt[r].ansi16m(...n):e==="ansi256"?Dt[r].ansi256(Dt.rgbToAnsi256(...n)):Dt[r].ansi(Dt.rgbToAnsi(...n)):t==="hex"?Tl("rgb",e,r,...Dt.hexToRgb(...n)):Dt[r][t](...n),Rb=["rgb","hex","ansi256"];for(let t of Rb){In[t]={get(){let{level:r}=this;return function(...n){let o=Il(Tl(t,Hm[r],"color",...n),Dt.color.close,this[Tn]);return ri(this,o,this[_o])}}};let e="bg"+t[0].toUpperCase()+t.slice(1);In[e]={get(){let{level:r}=this;return function(...n){let o=Il(Tl(t,Hm[r],"bgColor",...n),Dt.bgColor.close,this[Tn]);return ri(this,o,this[_o])}}}}var Pb=Object.defineProperties(()=>{},{...In,level:{enumerable:!0,get(){return this[_l].level},set(t){this[_l].level=t}}}),Il=(t,e,r)=>{let n,o;return r===void 0?(n=t,o=e):(n=r.openAll+t,o=e+r.closeAll),{open:t,close:e,openAll:n,closeAll:o,parent:r}},ri=(t,e,r)=>{let n=(...o)=>$b(n,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(n,Pb),n[_l]=t,n[Tn]=e,n[_o]=r,n},$b=(t,e)=>{if(t.level<=0||!e)return t[_o]?"":e;let r=t[Tn];if(r===void 0)return e;let{openAll:n,closeAll:o}=r;if(e.includes("\x1B"))for(;r!==void 0;)e=qm(e,r.close,r.open),r=r.parent;let s=e.indexOf(`
|
|
147
|
+
`);return s!==-1&&(e=Jm(e,o,n,s)),n+e+o};Object.defineProperties(To.prototype,In);var Ob=To(),ES=To({level:Vm?Vm.level:0});var vr=Ob;function Fb({value:t,placeholder:e="",focus:r=!0,mask:n,highlightPastedText:o=!1,showCursor:s=!0,onChange:i,onSubmit:l}){let[c,f]=Qb({cursorOffset:(t||"").length,cursorWidth:0}),{cursorOffset:d,cursorWidth:a}=c;Db(()=>{f(A=>{if(!r||!s)return A;let w=t||"";return A.cursorOffset>w.length-1?{cursorOffset:w.length,cursorWidth:0}:A})},[t,r,s]);let h=o?a:0,p=n?n.repeat(t.length):t,g=p,x=e?vr.grey(e):void 0;if(s&&r){x=e.length>0?vr.inverse(e[0])+vr.grey(e.slice(1)):vr.inverse(" "),g=p.length>0?"":vr.inverse(" ");let A=0;for(let w of p)g+=A>=d-h&&A<=d?vr.inverse(w):w,A++;p.length>0&&d===p.length&&(g+=vr.inverse(" "))}return Mb((A,w)=>{if(w.upArrow||w.downArrow||w.ctrl&&A==="c"||w.tab||w.shift&&w.tab)return;if(w.return){l&&l(t);return}let O=d,T=t,B=0;w.leftArrow?s&&O--:w.rightArrow?s&&O++:w.backspace||w.delete?d>0&&(T=t.slice(0,d-1)+t.slice(d,t.length),O--):(T=t.slice(0,d)+A+t.slice(d,t.length),O+=A.length,A.length>1&&(B=A.length)),d<0&&(O=0),d>t.length&&(O=t.length),f({cursorOffset:O,cursorWidth:B}),T!==t&&i(T)},{isActive:r}),Lb.createElement(Nb,null,e?p.length>0?g:x:g)}var zm=Fb;import{jsx as ni,jsxs as Bo}from"react/jsx-runtime";var Rl=10;function Gb(t,e){let r=e.toLowerCase().trim();return r?t.filter(n=>`${n.id} ${n.tier}`.toLowerCase().includes(r)):t}function Zm({models:t,currentModelId:e,onSelect:r,onCancel:n,initialQuery:o=""}){let[s,i]=Xm(o),[l,c]=Xm(0),f=Kb(()=>Gb(t,s),[t,s]);jb(()=>{c(p=>Math.min(p,Math.max(0,f.length-1)))},[f.length]);let d=Ub(()=>{let p=f[l];p&&r(p.id)},[f,l,r]);Wb((p,g)=>{if(g.escape){n();return}if(g.upArrow){c(x=>Math.max(0,x-1));return}if(g.downArrow){c(x=>Math.min(f.length-1,x+1));return}if(g.return){d();return}});let a=Math.max(0,Math.min(l-Math.floor(Rl/2),f.length-Rl)),h=f.slice(a,a+Rl);return Bo(Bl,{flexDirection:"column",borderStyle:"round",borderColor:D.accent,paddingX:1,children:[Bo(Io,{color:D.accent,bold:!0,children:["Select Model (",f.length,")"]}),Bo(Bl,{children:[ni(Io,{color:D.muted,children:"filter: "}),ni(zm,{value:s,onChange:i,placeholder:"type to filter\u2026"})]}),Bo(Bl,{flexDirection:"column",marginTop:1,children:[h.map((p,g)=>{let A=a+g===l,w=p.id===e,O={orchestrator:"\u2B50",analyst:"\u{1F52C}",worker:"\u26A1",free:"\u{1F193}"}[p.tier]??"\u2022";return Bo(Io,{color:A?D.accent:D.muted,bold:A,children:[A?"\u203A ":" ",O," ",p.id,w?" (current)":""]},p.id)}),f.length===0&&ni(Io,{color:D.muted,children:"No models match."})]}),ni(Io,{color:D.dim,children:"\u2191\u2193 navigate \xB7 Enter select \xB7 Esc cancel"})]})}var oi=class{registry;constructor(e){this.registry=e}async dispatch(e,r){let n=this.registry.getTool(e);if(!n)return{content:[{type:"text",text:`Unknown tool: "${e}"`}],isError:!0};try{return await n.execute(`invoke-${Date.now()}`,r)}catch(o){return{content:[{type:"text",text:`Tool "${e}" error: ${o instanceof Error?o.message:String(o)}`}],isError:!0}}}listTools(){return this.registry.listTools()}getTool(e){return this.registry.getTool(e)}};import{existsSync as Pl,readFileSync as eh,writeFileSync as qb,chmodSync as Jb}from"node:fs";import{resolve as th}from"node:path";import{homedir as Yb}from"node:os";var $l=class{cache={};envPath;constructor(){let e=process.env.AIAIAI_HOME??th(Yb(),".aiaiai");this.envPath=th(e,".env"),this.load(),this.validatePermissions()}validatePermissions(){try{if(!Pl(this.envPath))return;let{statSync:e}=ie("node:fs"),n=e(this.envPath).mode&511;n&63&&console.warn(`\u26A0\uFE0F .env file has overly permissive permissions (${n.toString(8)}). Run: chmod 600 ${this.envPath}`)}catch{}}load(){if(Pl(this.envPath)){let e=eh(this.envPath,"utf-8");for(let r of e.split(`
|
|
148
|
+
`)){let n=r.trim();if(!n||n.startsWith("#"))continue;let o=n.indexOf("=");if(o===-1)continue;let s=n.slice(0,o).trim(),i=n.slice(o+1).trim().replace(/^["']|["']$/g,"");s&&(this.cache[s]=i)}}for(let e of Object.keys(process.env)){let r=process.env[e];r!==void 0&&(this.cache[e]=r)}}get(e,r){return this.cache[e]??r}getRequired(e){let r=this.get(e);if(!r)throw new Error(`Required env var ${e} is not set`);return r}has(e){return this.cache[e]!==void 0&&this.cache[e].trim()!==""}set(e,r){let n=Pl(this.envPath)?eh(this.envPath,"utf-8"):"",o=n.split(`
|
|
149
|
+
`),s=!1;for(let l=0;l<o.length;l++)if(o[l].trim().startsWith(`${e}=`)){o[l]=`${e}=${r}`,s=!0;break}s||(n&&!n.endsWith(`
|
|
150
|
+
`)&&o.push(""),o.push(`${e}=${r}`));let i=o.join(`
|
|
151
|
+
`)+`
|
|
152
|
+
`;qb(this.envPath,i,"utf-8");try{Jb(this.envPath,384)}catch{}this.cache[e]=r,process.env[e]=r}getAll(){let e={};for(let[r,n]of Object.entries(this.cache))n!==void 0&&(e[r]=n);return e}reload(){this.cache={},this.load()}},Tt=new $l;Ye();ht();var Bn=2,AE=1e3,hh=6e4;function yE(t){return t===429||t>=500}function ci(t){let e=Tt.get("OPENROUTER_API_KEY");return{model:Tt.get("DEFAULT_MODEL")||t.resolvePrimary(),apiKey:e||"",baseUrl:"https://openrouter.ai/api/v1"}}var Oo=class{static async runStreaming(e){let{config:r,systemPrompt:n,messages:o,onEvent:s,signal:i,tools:l,toolResults:c}=e,f=[{role:"system",content:n}];if(c&&c.length>0)for(let g of c)f.push({role:"tool",tool_call_id:g.tool_call_id,content:g.content});for(let g of o){let x={role:g.role,content:g.content};g.tool_calls&&(x.tool_calls=g.tool_calls),g.tool_call_id&&(x.tool_call_id=g.tool_call_id),f.push(x)}let d={model:r.model,messages:f,stream:!0,max_tokens:4096};l&&l.length>0&&(d.tools=l.map(g=>({type:"function",function:{name:g.name,description:g.description,parameters:g.parameters}})));let a="",h=0,p;for(let g=0;g<=Bn;g++)try{if(g>0){let C=AE*Math.pow(2,g-1);Z.info("ModelClient",`Retry attempt ${g}/${Bn} after ${C}ms`),await new Promise(I=>setTimeout(I,C))}let x=new AbortController;if(p=setTimeout(()=>x.abort(),hh),i?.aborted){s({type:"error",message:"Request aborted"});return}let A=i??x.signal,w=await fe(`${r.baseUrl}/chat/completions`,{timeout:hh,retries:0,method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r.apiKey}`,"HTTP-Referer":"https://aiaiaichain.dev","X-Title":"AIAIAI Chain Agent"},body:JSON.stringify(d),signal:A});if(clearTimeout(p),!w.ok){let C=await w.text().catch(()=>"unknown error");if(a=C,h=w.status,yE(w.status)&&g<Bn){Z.warn("ModelClient",`Retryable error ${w.status}`,{attempt:g});continue}w.status===401?s({type:"error",message:`API auth failed: OpenRouter key is missing or invalid.
|
|
153
|
+
Run: aiaiai setup
|
|
154
|
+
Get a key: https://openrouter.ai/keys`}):s({type:"error",message:`API error ${w.status}: ${C}`});return}if(!w.body){s({type:"error",message:"No response body"});return}let T=w.body.pipeThrough(new TextDecoderStream).getReader(),B="",v=new Map;for(;;){let{done:C,value:I}=await T.read();if(C)break;B+=I;let j=B.split(`
|
|
155
|
+
`);B=j.pop()||"";for(let F of j){let Q=F.trim();if(!(!Q||Q==="data: [DONE]")&&Q.startsWith("data: "))try{let $=JSON.parse(Q.slice(6)).choices?.[0];if(!$)continue;let N=$.delta?.content;N&&s({type:"text_delta",text:N});let U=$.delta?.tool_calls;if(U)for(let q of U){let H=q.id||`tc_${Date.now()}_${q.index}`,z=v.get(H)||{name:"",args:""};q.function?.name&&(z.name=q.function.name),q.function?.arguments&&(z.args+=q.function.arguments),v.set(H,z),s({type:"tool_calls_partial",toolName:z.name,toolCallId:H})}if($.finish_reason==="tool_calls"){for(let[q,H]of v){let z={};try{z=JSON.parse(H.args)}catch{Z.warn("ModelClient","Failed to parse tool call args",{args:H.args.slice(0,100)})}s({type:"tool_call",toolName:H.name,toolArgs:z,toolCallId:q,finishReason:$.finish_reason})}v.clear()}$.finish_reason==="stop"&&v.clear()}catch{Z.debug("ModelClient","Skipped malformed SSE line",{line:Q.slice(0,100)})}}}s({type:"turn_done"});return}catch(x){if(clearTimeout(p),x instanceof Error&&x.name==="AbortError"){if(i?.aborted){s({type:"turn_done"});return}if(a="Request timed out",g<Bn){Z.warn("ModelClient","Timeout, retrying",{attempt:g});continue}s({type:"error",message:"Request timed out"});return}if(a=x instanceof Error?x.message:String(x),g<Bn){Z.warn("ModelClient","Error, retrying",{attempt:g,error:a});continue}s({type:"error",message:`ModelClient error (${h||"offline"}): ${a}`});return}s({type:"error",message:`ModelClient failed after ${Bn+1} attempts: ${a}`})}};var Rn=class{registry;session;dispatcher;onEvent;sessionCtx;effectLevel;modelReg;costTracker;goalManager;contextStore;abortController=null;_pendingApproval;_toolRetries=new Map;_maxToolRetries=2;_pendingToolCalls=new Map;constructor(e,r,n,o,s,i,l,c,f){this.registry=e,this.session=r,this.dispatcher=new oi(e),this.onEvent=n,this.sessionCtx=o,this.effectLevel=s,this.modelReg=i,this.costTracker=l,this.goalManager=c,this.contextStore=f}setEffectLevel(e){this.effectLevel=e}async run(e){this.session.addMessage("user",e);let r=ci(this.modelReg),n=this.session.getMessages(),o=this.session.getSystemPrompt(),s="",i=[];this.abortController=new AbortController;let l=this.registry.listTools(),c=f=>{if(f.type==="text_delta")s+=f.text,this.onEvent({type:"text_delta",text:f.text});else if(f.type==="tool_call"){let d=f.toolName??"",a=f.toolArgs??{},h=f.toolCallId??`tc_${Date.now()}`;if(d&&d!=="noop"){if(this.onEvent({type:"tool_start",name:d}),this.requiresApproval(d)){this.onEvent({type:"approval_request",toolName:d,args:JSON.stringify(a),approve:p=>{p?this.executeTool(d,a,s,o,n,r,h):(this.onEvent({type:"tool_done",name:d,result:JSON.stringify({error:"User denied approval"}),isError:!0}),this.session.addMessage("assistant",s||`(tool ${d} was denied)`),this.onEvent({type:"turn_done"}))}}),this._pendingToolCalls.set(h,{name:d,args:a});return}this.executeTool(d,a,s,o,n,r,h)}}else f.type==="tool_calls_partial"?this.onEvent({type:"tool_start",name:f.toolName||"..."}):f.type==="turn_done"?(s.trim()&&i.length===0&&(this.session.addMessage("assistant",s.trim()),this.costTracker&&this.costTracker.track(r.model,n.reduce((d,a)=>d+a.content.length,0),s.length)),this.onEvent({type:"turn_done"})):f.type==="error"&&this.onEvent({type:"error",message:f.message??"unknown error"})};await Oo.runStreaming({config:r,systemPrompt:o,messages:n,onEvent:c,signal:this.abortController.signal,tools:l.length>0?l:void 0})}async executeTool(e,r,n,o,s,i,l){let c=await this.dispatcher.dispatch(e,r),f=c.content.map(p=>p.text).join(`
|
|
156
|
+
`);if(this.onEvent({type:"tool_done",name:e,result:f,isError:c.isError??!1}),c.isError){let p=(this._toolRetries.get(e)??0)+1;if(this._toolRetries.set(e,p),p>this._maxToolRetries){this._toolRetries.delete(e);return}}else this._toolRetries.delete(e);let d={role:"tool",content:f.slice(0,8e3),tool_call_id:l},a={role:"assistant",content:n||""};n.trim()&&this.session.addMessage("assistant",n.trim());let h="";await Oo.runStreaming({config:i,systemPrompt:o,messages:[...s.slice(-5),a,d,{role:"system",content:"Tool result received. Summarize the result or take the next action."}],onEvent:p=>{p.type==="text_delta"?(h+=p.text,this.onEvent({type:"text_delta",text:p.text})):p.type==="turn_done"?(h.trim()&&(this.session.addMessage("assistant",h.trim()),this.costTracker&&this.costTracker.track(i.model,n.length+d.content.length,h.length)),this.onEvent({type:"turn_done"})):p.type==="error"&&this.onEvent({type:"error",message:p.message??"unknown error"})},signal:this.abortController?.signal})}requiresApproval(e){return["execute_trade","send_transaction","sign_message","deploy_contract"].includes(e)}abort(){this.abortController?.abort(),this.abortController=null}};var Pn=class{head=null;tail=null;messageCount=0;_cachedChars=0;systemPrompt="";recentMessages=[];setSystemPrompt(e){this.systemPrompt=e}getSystemPrompt(){return this.systemPrompt}addMessage(e,r){let n=r.length+e.length+10,o={role:e,content:r,charSize:n,next:null};for(this.tail?this.tail.next=o:this.head=o,this.tail=o,this.messageCount++,this._cachedChars+=n,this.recentMessages.push({role:e,content:r});this.messageCount>500&&this.head;)this._cachedChars-=this.head.charSize,this.head=this.head.next,this.messageCount--,this.recentMessages.shift();for(;this._cachedChars>512e3&&this.head&&this.head!==this.tail;)this._cachedChars-=this.head.charSize,this.head=this.head.next,this.messageCount--,this.recentMessages.shift()}getMessages(){if(this.recentMessages.length===this.messageCount)return[...this.recentMessages];let e=[],r=this.head;for(;r;)e.push({role:r.role,content:r.content}),r=r.next;return this.recentMessages=e,e}getContextPressure(){let e=this._cachedChars,r=128e3*4,n=Math.min(100,Math.round(e/r*100)),o="green";return n>90?o="critical":n>75?o="red":n>50&&(o="yellow"),{pct:n,level:o,turboReady:n<70}}clearMessages(){this.head=null,this.tail=null,this.messageCount=0,this._cachedChars=0}getMessageCount(){return this.messageCount}dispose(){this.head=null,this.tail=null,this.messageCount=0,this._cachedChars=0,this.systemPrompt=""}};Un();ht();Ye();import{Type as cc}from"@sinclair/typebox";var Gx=new Set(["bullish","surge","rally","gain","green","high","breakthrough","adoption","partnership","launch","upgrade","growth","profit","positive","optimistic","innovation","milestone","record","all-time","success","soar","boom","breakout","accumulate","moon","pump","ATH","approve","ETF"]),qx=new Set(["bearish","crash","dump","plunge","drop","red","low","hack","exploit","ban","regulation","crackdown","fraud","scam","loss","negative","pessimistic","decline","fall","dip","correction","sell-off","liquidation","fud","fear","uncertainty","volatility","warning","risk","bear","capitulation"]);function Jx(t){let e=t.toLowerCase().split(/[\s,.-_!?]+/),r=0,n=0;for(let o of e)Gx.has(o)&&(r+=1,n++),qx.has(o)&&(r-=1,n++);return n===0?0:Math.max(-1,Math.min(1,r/Math.max(n,1)))}var uc=class{cachedItems=[];lastFetch=0;cacheDuration=3e5;async getLatest(){return this.cachedItems.length>0&&Date.now()-this.lastFetch<this.cacheDuration?this.buildReport(this.cachedItems):this.fetch()}async fetch(){let e=[];try{let r=process.env.CRYPTOPANIC_API_KEY,n=r?`https://cryptopanic.com/api/v1/posts/?auth_token=${r}&kind=news&public=true`:"https://cryptopanic.com/api/v1/posts/?public=true",o=await fe(n,{timeout:1e4,retries:1,headers:{Accept:"application/json"}});if(o.ok){let s=await o.json();for(let i of(s.results??[]).slice(0,30))e.push({title:i.title,source:i.source?.title||i.domain||"cryptopanic",url:i.url,publishedAt:i.published_at,sentiment:Jx(i.title)})}else e.push(...this.getFallbackNews())}catch(r){Z.warn("NewsSentiment","Failed to fetch news",{error:r.message}),e.push(...this.getFallbackNews())}return this.cachedItems=e,this.lastFetch=Date.now(),this.buildReport(e)}getFallbackNews(){let e=new Date().toISOString();return[{title:"Bitcoin holds support above $60k as institutional inflows continue",source:"coindesk",url:"https://coindesk.com",publishedAt:e,sentiment:.6},{title:"Solana network activity surges with record daily transactions",source:"theblock",url:"https://theblock.co",publishedAt:e,sentiment:.7},{title:"DeFi TVL climbs to multi-month high across major protocols",source:"defillama",url:"https://defillama.com",publishedAt:e,sentiment:.5},{title:"Regulatory clarity expected as new crypto framework emerges",source:"reuters",url:"https://reuters.com",publishedAt:e,sentiment:.3},{title:"AI tokens lead market recovery with 15% weekly gains",source:"cointelegraph",url:"https://cointelegraph.com",publishedAt:e,sentiment:.8}]}buildReport(e){let r=e.map(s=>s.sentiment??0),n=r.length>0?r.reduce((s,i)=>s+i,0)/r.length:0,o=[...e].sort((s,i)=>(i.sentiment??0)-(s.sentiment??0));return{items:e,averageSentiment:n,topPositive:o.slice(0,3),topNegative:o.slice(-3).reverse()}}statusBadge(){try{let e=this.buildReport(this.cachedItems);return e.items.length===0?"":`${e.averageSentiment>.2?"\u{1F4C8}":e.averageSentiment<-.2?"\u{1F4C9}":"\u{1F4CA}"} ${(e.averageSentiment*100).toFixed(0)}%`}catch(e){return Z.debug("NewsSentiment","statusBadge failed",{error:e.message}),""}}},jn=new uc,Ep=cc.Object({limit:cc.Optional(cc.Number({description:"Number of news items"}))});async function dc(t,e){let r=await jn.getLatest(),n=e.limit||10,s=r.items.slice(0,n).map(i=>{let l=i.sentiment??0;return`${l>.3?"\u{1F7E2}":l<-.3?"\u{1F534}":"\u26AA"} [${(l*100).toFixed(0)}%] ${i.title} \u2014 ${i.source}`});return{content:[{type:"text",text:[`News (${r.items.length} items, avg sentiment: ${(r.averageSentiment*100).toFixed(0)}%)`,...s].join(`
|
|
157
|
+
`)}]}}ht();import{Type as Ge}from"@sinclair/typebox";var ki=[],xp=[];async function Yx(){if(ki.length>0)return ki;try{let t=await import("node:worker_threads"),e=await import("node:os"),r=Math.min(e.cpus().length,4);for(let n=0;n<r;n++){let o=new t.Worker(ie.resolve("./TechnicalAnalysis.worker.js"));o.on("message",s=>{let i=o._pending;i&&(o._pending=null,i.resolve(s.results));let l=xp.shift();l&&vp(o,l.candles).then(l.resolve).catch(l.reject)}),o.on("error",s=>{let i=o._pending;i&&(o._pending=null,i.reject(s))}),ki.push(o)}}catch{}return ki}async function vp(t,e){return new Promise((r,n)=>{t._pending={resolve:r,reject:n},t.postMessage({candles:e,id:Date.now()})})}async function Vx(t){let e=await Yx();if(e.length===0)throw new Error("no-workers");let r=e.find(n=>!n._pending);return r?vp(r,t):new Promise((n,o)=>{xp.push({candles:t,resolve:n,reject:o})})}function Hx(){return new Promise(t=>setImmediate(t))}async function zx(t,e=14,r=50){let n=[],o=[],s=[];for(let i=1;i<t.length;i++){let l=t[i]-t[i-1];o.push(Math.max(0,l)),s.push(Math.max(0,-l))}for(let i=e;i<o.length;i++){let l=0,c=0;for(let d=0;d<e;d++)l+=o[i-d],c+=s[i-d];if(l/=e,c/=e,c===0){n.push(100);continue}let f=l/c;n.push(100-100/(1+f)),t.length>100&&i%r===0&&await Hx()}return n}function Xx(t,e){let r=[];for(let n=e-1;n<t.length;n++){let o=0;for(let s=0;s<e;s++)o+=t[n-s];r.push(o/e)}return r}function fc(t,e){let r=[],n=2/(e+1),o=t.slice(0,e).reduce((s,i)=>s+i,0)/e;r.push(o);for(let s=e;s<t.length;s++)r.push(t[s]*n+r[r.length-1]*(1-n));return r}function Zx(t,e,r){let n=t[t.length-1],o="neutral";return n>70?o="bearish":n<30&&(o="bullish"),{indicator:"RSI",value:parseFloat(n.toFixed(2)),signal:o,details:`RSI(14) = ${n.toFixed(2)}${n>70?" \u2014 overbought":n<30?" \u2014 oversold":" \u2014 neutral zone"}`}}function e1(t,e=12,r=26,n=9){let o=fc(t,e),s=fc(t,r),i=[],l=r-e;for(let h=0;h<s.length;h++)i.push(o[h+l]-s[h]);let c=fc(i,n),f=n-1,d=[];for(let h=0;h<i.length-f;h++)d.push(i[h+f]-c[h]);return{macd:i.slice(f),signal:c,histogram:d}}function t1(t){let e=t.histogram,r=e[e.length-1]??0,n=e[e.length-2]??0,o="neutral";return r>0&&n<=0?o="bullish":r<0&&n>=0&&(o="bearish"),{indicator:"MACD",value:parseFloat(r.toFixed(6)),signal:o,details:`MACD histogram: ${r.toFixed(6)}${o!=="neutral"?` \u2014 ${o} crossover`:""}`}}function r1(t,e=20,r=2){let n=Xx(t,e),o=[],s=[];for(let i=0;i<n.length;i++){let l=i,c=0;for(let d=0;d<e;d++){let a=l+d;a<t.length&&(c+=(t[a]-n[i])**2)}let f=Math.sqrt(c/e);o.push(n[i]+r*f),s.push(n[i]-r*f)}return{upper:o,middle:n,lower:s}}function n1(t,e){let r=t.upper[t.upper.length-1],n=t.lower[t.lower.length-1],o=t.middle[t.middle.length-1],s="neutral";return e>=r?s="bearish":e<=n&&(s="bullish"),{indicator:"Bollinger",value:[parseFloat(r.toFixed(6)),parseFloat(o.toFixed(6)),parseFloat(n.toFixed(6))],signal:s,details:s==="bearish"?"Price at upper band \u2014 overextended":s==="bullish"?"Price at lower band \u2014 oversold":"Within bands"}}function o1(t,e=14){let r=[];for(let n=1;n<t.length;n++){let o=t[n].high,s=t[n].low,i=t[n-1].close;r.push(Math.max(o-s,Math.abs(o-i),Math.abs(s-i)))}return r.length<e?r.reduce((n,o)=>n+o,0)/Math.max(1,r.length):r.slice(-e).reduce((n,o)=>n+o,0)/e}async function mc(t){let e=t.map(f=>f.close);if(e.length<30)return[];if(t.length>100)try{return(await Vx(t)).map(d=>({indicator:d.indicator,value:d.value,signal:d.signal}))}catch{}let r=[],n=await zx(e,14);r.push(Zx(n,e[e.length-1],e)),r.push(t1(e1(e,12,26,9)));let o=r1(e,20,2);r.push(n1(o,e[e.length-1]));let s=o1(t,14);r.push({indicator:"ATR",value:parseFloat(s.toFixed(6)),signal:"neutral",details:`ATR(14) = ${s.toFixed(6)}`});let i=r.filter(f=>f.signal==="bullish").length,l=r.filter(f=>f.signal==="bearish").length,c=i>l?"bullish":l>i?"bearish":"neutral";return r.push({indicator:"SUMMARY",value:r.length,signal:c,details:`${i} bullish, ${l} bearish, ${r.length-i-l} neutral \u2014 overall ${c}`}),r}var Cp=Ge.Object({symbol:Ge.String({description:"Trading pair symbol (e.g., BTCUSDT, SOLUSDT)"}),interval:Ge.Optional(Ge.String({description:"Candle interval: 1m, 5m, 15m, 1h, 4h, 1d",default:"1d"})),limit:Ge.Optional(Ge.Number({description:"Number of candles",default:50}))}),kp=Ge.Object({prices:Ge.Array(Ge.Number({description:"Closing prices"})),highs:Ge.Optional(Ge.Array(Ge.Number({description:"High prices"}))),lows:Ge.Optional(Ge.Array(Ge.Number({description:"Low prices"}))),volumes:Ge.Optional(Ge.Array(Ge.Number({description:"Volumes"})))});async function Sp(t,e){let r=e.symbol,n=e.interval||"1d",o=e.limit||50;try{let s=await fe(`https://api.binance.com/api/v3/klines?symbol=${r}&interval=${n}&limit=${o}`,{timeout:1e4,retries:1});if(!s.ok)return{content:[{type:"text",text:`Failed to fetch candles for ${r}: ${s.status}`}]};let l=(await s.json()).map(a=>({timestamp:a[0],open:parseFloat(a[1]),high:parseFloat(a[2]),low:parseFloat(a[3]),close:parseFloat(a[4]),volume:parseFloat(a[5])})),c=l.map(a=>a.close),f=await mc(l);return{content:[{type:"text",text:[`--- ${r} ${n} candles (${l.length}) ---`,`Last: $${c[c.length-1].toFixed(6)}`,`Range: $${Math.min(...c).toFixed(6)} - $${Math.max(...c).toFixed(6)}`,"",...f.map(a=>`${a.signal==="bullish"?"\u{1F7E2}":a.signal==="bearish"?"\u{1F534}":"\u26AA"} ${a.indicator}: ${JSON.stringify(typeof a.value=="number"?a.value.toFixed(4):a.value)} \u2014 ${a.details??""}`)].join(`
|
|
158
|
+
`)}],details:{candles:l.slice(-5),analysis:f}}}catch(s){return{content:[{type:"text",text:`Error fetching candles: ${s instanceof Error?s.message:String(s)}`}],isError:!0}}}import{existsSync as pc,readFileSync as Ip,writeFileSync as Bp,mkdirSync as c1,readdirSync as u1}from"node:fs";import{resolve as Ko}from"node:path";import{Type as gc}from"@sinclair/typebox";import{existsSync as jo,mkdirSync as _p,writeFileSync as hc}from"node:fs";import{resolve as Kn}from"node:path";import{homedir as s1}from"node:os";var sr=process.env.AIAIAI_HOME??Kn(s1(),".aiaiai"),i1=["config","memory","checkpoints","sessions","skills"],a1=`# AIAIAI Chain Agent
|
|
159
|
+
|
|
160
|
+
Solana-native AI agent for decentralized AI governance.
|
|
161
|
+
Ticker: $AIAIAI (AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump)
|
|
162
|
+
|
|
163
|
+
## Directory layout
|
|
164
|
+
|
|
165
|
+
| Path | Contents |
|
|
166
|
+
|----------------|---------------------------------------------|
|
|
167
|
+
| config/ | Settings and API keys |
|
|
168
|
+
| memory/ | Long-term conversation memory |
|
|
169
|
+
| checkpoints/ | Agent state checkpoints |
|
|
170
|
+
| sessions/ | REPL conversation sessions |
|
|
171
|
+
| skills/ | Strategy skill definitions |
|
|
172
|
+
| .env | API keys and runtime config |
|
|
173
|
+
| AIAIAI.md | This file |
|
|
174
|
+
| settings.json | User preferences |
|
|
175
|
+
|
|
176
|
+
## Quick reference
|
|
177
|
+
|
|
178
|
+
\`\`\`
|
|
179
|
+
aiaiaichain \u2014 start interactive REPL
|
|
180
|
+
aiaiaichain setup \u2014 re-run setup wizard
|
|
181
|
+
aiaiaichain config \u2014 show configuration
|
|
182
|
+
aiaiaichain price \u2014 show $AIAIAI token price
|
|
183
|
+
\`\`\`
|
|
184
|
+
`,Tp=!1,l1="",Ze=class t{static getInstance(){return t}static init(){if(Tp)return;jo(sr)||_p(sr,{recursive:!0});for(let o of i1){let s=Kn(sr,o);jo(s)||_p(s,{recursive:!0})}let e=Kn(sr,"AIAIAI.md");jo(e)||hc(e,a1,"utf-8");let r=Kn(sr,"history.jsonl");jo(r)||hc(r,"","utf-8");let n=Kn(sr,"settings.json");jo(n)||hc(n,JSON.stringify({theme:"dark",autoSave:!0,activeChain:"solana"},null,2),"utf-8"),Tp=!0,l1=sr}static path(...e){return Kn(sr,...e)}static getHome(){return sr}};var Ac=class{basePath;activeContexts=new Map;constructor(){this.basePath=Ko(Ze.getHome(),"sessions","tasks"),pc(this.basePath)||c1(this.basePath,{recursive:!0})}saveTask(e,r){let n={taskId:e,data:r,createdAt:Date.now(),updatedAt:Date.now()};Bp(Ko(this.basePath,`${e}.json`),JSON.stringify(n,null,2),"utf-8")}readTask(e){let r=Ko(this.basePath,`${e}.json`);if(!pc(r))return null;try{return JSON.parse(Ip(r,"utf-8"))}catch{return null}}listTasks(){if(!pc(this.basePath))return[];try{return u1(this.basePath).filter(e=>e.endsWith(".json")).map(e=>{try{return JSON.parse(Ip(Ko(this.basePath,e),"utf-8"))}catch{return null}}).filter(Boolean)}catch{return[]}}keepTask(e){let r=this.readTask(e);return r?(r.keep=!0,r.updatedAt=Date.now(),Bp(Ko(this.basePath,`${e}.json`),JSON.stringify(r,null,2),"utf-8"),!0):!1}readContextParams=gc.Object({taskId:gc.String({description:"Task ID from a previous multi-step operation"})});listTasksParams=gc.Object({});async readContextTool(e,r){let n=this.readTask(r.taskId);return n?{content:[{type:"text",text:JSON.stringify(n.data,null,2)}]}:{content:[{type:"text",text:`Task "${r.taskId}" not found.`}]}}async listTasksTool(){let e=this.listTasks();if(e.length===0)return{content:[{type:"text",text:"No saved tasks."}]};let r=e.map(n=>` ${n.taskId} \u2014 ${Object.keys(n.data).length} keys (${new Date(n.updatedAt).toLocaleString()})${n.keep?" \u{1F512}":""}`);return{content:[{type:"text",text:`Tasks (${e.length}):
|
|
185
|
+
${r.join(`
|
|
186
|
+
`)}`}]}}},Si=new Ac;import{existsSync as d1,readFileSync as f1,writeFileSync as m1}from"node:fs";import{resolve as h1}from"node:path";import{Type as Wt}from"@sinclair/typebox";var yc=h1(Ze.getHome(),"memory","goals.json"),wc=class{goals=[];constructor(){this.load()}load(){try{d1(yc)&&(this.goals=JSON.parse(f1(yc,"utf-8")))}catch{this.goals=[]}}save(){try{m1(yc,JSON.stringify(this.goals,null,2),"utf-8")}catch{}}addGoal(e){let r={id:`goal-${Date.now()}-${Math.random().toString(36).slice(2,5)}`,text:e,status:"active",createdAt:Date.now(),notes:[]};return this.goals.push(r),this.save(),r}completeGoal(e){let r=this.goals.find(n=>n.id===e);return r?(r.status="completed",r.completedAt=Date.now(),this.save(),!0):!1}addNote(e,r){let n=this.goals.find(o=>o.id===e);return n?(n.notes.push(r),this.save(),!0):!1}listGoals(e){return!e||e==="all"?[...this.goals]:this.goals.filter(r=>r.status===e)}buildContextBlock(){let e=this.goals.filter(n=>n.status==="active");return e.length===0?"":`
|
|
187
|
+
|
|
188
|
+
[ACTIVE GOALS]
|
|
189
|
+
${e.map(n=>` [${n.id}] ${n.text.slice(0,200)}`).join(`
|
|
190
|
+
`)}
|
|
191
|
+
`}setGoalParams=Wt.Object({text:Wt.String({description:"Goal description"})});completeGoalParams=Wt.Object({id:Wt.String({description:"Goal ID to complete"})});listGoalsParams=Wt.Object({status:Wt.Optional(Wt.String({description:"Filter: active, completed, or all"}))});addGoalNoteParams=Wt.Object({id:Wt.String({description:"Goal ID"}),note:Wt.String({description:"Progress note"})});async setGoalTool(e,r){let n=this.addGoal(r.text);return{content:[{type:"text",text:`Goal created: "${n.text}" (${n.id})`}]}}async completeGoalTool(e,r){return{content:[{type:"text",text:this.completeGoal(r.id)?`Goal ${r.id} completed \u2705`:`Goal ${r.id} not found`}]}}async listGoalsTool(e,r){let n=r.status||"active",o=this.listGoals(n);if(o.length===0)return{content:[{type:"text",text:"No goals found."}]};let s=o.map(i=>` ${i.status==="completed"?"\u2705":"\u{1F3AF}"} ${i.id} \u2014 ${i.text.slice(0,120)}${i.notes.length>0?` (${i.notes.length} notes)`:""}`);return{content:[{type:"text",text:`Goals (${o.length}):
|
|
192
|
+
${s.join(`
|
|
193
|
+
`)}`}]}}async addGoalNoteTool(e,r){return{content:[{type:"text",text:this.addNote(r.id,r.note)?`Note added to ${r.id}`:`Goal ${r.id} not found`}]}}},pt=new wc;import{existsSync as bc,readFileSync as Ec,writeFileSync as p1,appendFileSync as g1,mkdirSync as A1,readdirSync as y1}from"node:fs";import{resolve as Wo}from"node:path";var xc=class{basePath;available=!1;constructor(){this.basePath=Wo(Ze.getHome(),"memory");try{bc(this.basePath)||A1(this.basePath,{recursive:!0}),this.available=!0}catch{this.available=!1}}get isAvailable(){return this.available}lineCounts=new Map;save(e,r,n){if(!this.available)return;let o={id:`mem-${Date.now()}-${Math.random().toString(36).slice(2,7)}`,sessionId:e,role:r,content:n.slice(0,500),ts:Date.now()};try{g1(Wo(this.basePath,`${e}.jsonl`),JSON.stringify(o)+`
|
|
194
|
+
`,"utf-8");let s=(this.lineCounts.get(e)??0)+1;this.lineCounts.set(e,s),s>200&&(this.compactFile(e),this.lineCounts.set(e,0))}catch{}}compactFile(e){try{let r=Wo(this.basePath,`${e}.jsonl`);if(!bc(r))return;let o=Ec(r,"utf-8").split(`
|
|
195
|
+
`).filter(Boolean);if(o.length<=200)return;let s=o.slice(-100);p1(r,s.join(`
|
|
196
|
+
`)+`
|
|
197
|
+
`,"utf-8")}catch{}}search(e,r=8){if(!this.available)return[];try{let n=[],o=y1(this.basePath).filter(l=>l.endsWith(".jsonl"));for(let l of o){let c=Ec(Wo(this.basePath,l),"utf-8");for(let f of c.split(`
|
|
198
|
+
`).filter(Boolean))try{n.push(JSON.parse(f))}catch{continue}}let s=e.toLowerCase().trim();return n.filter(l=>l.content&&l.content.toLowerCase().includes(s)).sort((l,c)=>c.ts-l.ts).slice(0,r)}catch{return[]}}buildContextBlock(e){if(!this.available)return"";try{let r=Wo(this.basePath,`${e}.jsonl`);if(!bc(r))return"";let n=Ec(r,"utf-8").split(`
|
|
199
|
+
`).filter(Boolean);if(n.length<3)return"";let o=n.slice(-20).map(l=>{try{return JSON.parse(l)}catch{return null}}).filter(Boolean);return o.length<2?"":`
|
|
200
|
+
|
|
201
|
+
[RECENT MEMORY]
|
|
202
|
+
${o.slice(-6).map(l=>`[${l.role}]: ${l.content.slice(0,150)}`).join(`
|
|
203
|
+
`)}
|
|
204
|
+
`}catch{return""}}},Wn=new xc;import{existsSync as w1,readFileSync as b1,writeFileSync as E1}from"node:fs";import{resolve as x1}from"node:path";import{Type as Gt}from"@sinclair/typebox";var vc=x1(Ze.getHome(),"memory","schedule.json"),Cc=class{tasks=[];interval=null;onTask;constructor(){this.load()}load(){try{w1(vc)&&(this.tasks=JSON.parse(b1(vc,"utf-8")))}catch{this.tasks=[]}}save(){try{E1(vc,JSON.stringify(this.tasks,null,2),"utf-8")}catch{}}addTask(e,r,n){let o={id:`task-${Date.now()}-${Math.random().toString(36).slice(2,5)}`,name:e,prompt:r,cron:n?String(n):void 0,enabled:!0,createdAt:Date.now()};return this.tasks.push(o),this.save(),o}removeTask(e){let r=this.tasks.findIndex(n=>n.id===e);return r===-1?!1:(this.tasks.splice(r,1),this.save(),!0)}listTasks(){return[...this.tasks]}start(e){this.onTask=e,this.interval&&clearInterval(this.interval),this.interval=setInterval(()=>{let r=Date.now();for(let n of this.tasks){if(!n.enabled||!n.cron)continue;let o=parseInt(n.cron)*1e3;(!n.lastRun||r-n.lastRun>=o)&&(n.lastRun=r,this.save(),this.onTask?.(n))}},1e4)}stop(){this.interval&&(clearInterval(this.interval),this.interval=null)}addTaskParams=Gt.Object({name:Gt.String({description:"Task name"}),prompt:Gt.String({description:"Prompt to run when task fires"}),interval:Gt.Optional(Gt.Number({description:"Run every N seconds"}))});listTasksParams=Gt.Object({enabled_only:Gt.Optional(Gt.Boolean({default:!1}))});removeTaskParams=Gt.Object({id:Gt.String({description:"Task ID to remove"})});async addTaskTool(e,r){let n=this.addTask(r.name,r.prompt,r.interval);return{content:[{type:"text",text:`Task "${n.name}" created (${n.id})`}]}}async listTasksTool(e,r){let o=r.enabled_only||!1?this.tasks.filter(i=>i.enabled):this.tasks;if(o.length===0)return{content:[{type:"text",text:"No scheduled tasks."}]};let s=o.map(i=>` ${i.enabled?"\u{1F7E2}":"\u23F8\uFE0F"} ${i.id} \u2014 ${i.name}${i.cron?` (every ${i.cron}s)`:""}`);return{content:[{type:"text",text:`Scheduled Tasks (${o.length}):
|
|
205
|
+
${s.join(`
|
|
206
|
+
`)}`}]}}async removeTaskTool(e,r){return{content:[{type:"text",text:this.removeTask(r.id)?`Task ${r.id} removed`:`Task ${r.id} not found`}]}}},qt=new Cc;Ye();import{existsSync as Lp,readFileSync as Pp,mkdirSync as _1,readdirSync as T1,unlinkSync as I1}from"node:fs";import{resolve as Go}from"node:path";import{homedir as B1}from"node:os";import{createHash as $p}from"node:crypto";import{writeFileSync as v1,renameSync as C1,existsSync as k1,unlinkSync as S1}from"node:fs";function Rp(t,e){let r=`${t}.tmp-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;try{v1(r,e,"utf-8"),C1(r,t)}catch(n){try{k1(r)&&S1(r)}catch{}throw n}}var Op=1,sn=Go(B1(),".aiaiai","sessions");function kc(){Lp(sn)||_1(sn,{recursive:!0})}function R1(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,6)}`}var Sc=class{currentId;autoSaveInterval=null;constructor(){kc(),this.currentId=R1()}startAutoSave(e){this.stopAutoSave(),this.autoSaveInterval=setInterval(()=>{let r=e();r.length>0&&this.save(r,"current")},3e4)}stopAutoSave(){this.autoSaveInterval&&(clearInterval(this.autoSaveInterval),this.autoSaveInterval=null)}save(e,r){kc();let n=this.currentId,o=this.load(n),s={version:Op,id:n,title:r||o?.title||this.generateTitle(e),createdAt:o?.createdAt||Date.now(),updatedAt:Date.now(),messages:e,model:process.env.DEFAULT_MODEL||"unknown",chain:"solana"},i=JSON.stringify(s),l=$p("sha256").update(i).digest("hex"),c=JSON.stringify({...s,_checksum:l});try{Rp(Go(sn,`${n}.json`),c)}catch{}return n}load(e){try{let r=Go(sn,`${e}.json`);if(!Lp(r))return null;let n=Pp(r,"utf-8"),o=JSON.parse(n);if((!o.version||o.version<Op)&&(o=this.migrateSchema(o)),o._checksum){let s=o._checksum;delete o._checksum;let i=$p("sha256").update(JSON.stringify(o)).digest("hex");s!==i&&(Z.warn("SessionStore","Session checksum mismatch \u2014 file may be corrupted",{id:e}),o._corrupted=!0)}return o}catch(r){return Z.debug("SessionStore","Failed to load session",{error:r.message}),null}}list(){kc();try{let e=T1(sn).filter(n=>n.endsWith(".json")),r=[];for(let n of e)try{let o=JSON.parse(Pp(Go(sn,n),"utf-8"));r.push({id:o.id,title:o.title,createdAt:o.createdAt,updatedAt:o.updatedAt,messageCount:o.messages.length,model:o.model})}catch(o){Z.debug("SessionStore","Skipped bad session file",{error:o.message})}return r.sort((n,o)=>o.updatedAt-n.updatedAt)}catch(e){return Z.warn("SessionStore","Failed to list sessions",{error:e.message}),[]}}delete(e){try{return I1(Go(sn,`${e}.json`)),!0}catch{return!1}}setCurrentId(e){this.currentId=e}getCurrentId(){return this.currentId}migrateSchema(e){return e.version||(e.version=1,e.chain||(e.chain="solana"),e.model||(e.model="unknown")),e}generateTitle(e){let r=e.find(o=>o.role==="user");if(!r)return"New Session";let n=r.content.trim();return n.length>40?n.slice(0,37)+"\u2026":n}},Ve=new Sc;Jo();Ii();import{existsSync as jp,readFileSync as Q1,writeFileSync as D1,mkdirSync as N1,chmodSync as M1}from"node:fs";import{resolve as F1,join as U1}from"node:path";import{homedir as j1}from"node:os";import{execFileSync as K1,execSync as W1}from"node:child_process";import{Type as Me}from"@sinclair/typebox";var Rc=F1(j1(),".config","gmgn"),Bi=U1(Rc,".env");function G1(){jp(Rc)||N1(Rc,{recursive:!0})}function $c(){let t={};if(jp(Bi)){let e=Q1(Bi,"utf-8");for(let r of e.split(`
|
|
207
|
+
`)){let n=r.trim();if(!n||n.startsWith("#"))continue;let o=n.indexOf("=");if(o===-1)continue;let s=n.slice(0,o).trim(),i=n.slice(o+1).trim();s&&(t[s]=i)}}for(let e of Object.keys(process.env)){let r=process.env[e];r&&(t[e]=r)}return t}function q1(t,e){G1();let r=$c();r[t]=e;let n=Object.entries(r).map(([o,s])=>`${o}=${s}`);D1(Bi,n.join(`
|
|
208
|
+
`)+`
|
|
209
|
+
`,"utf-8");try{M1(Bi,384)}catch{}process.env[t]=e}function Pc(){return $c().GMGN_API_KEY}function Ri(){let t=Pc();return!!t&&t.trim()!==""}function Kp(t){q1("GMGN_API_KEY",t)}function J1(){return{...process.env,...$c()}}function Oc(){try{return W1("which gmgn-cli",{stdio:"ignore"}),!0}catch{return!1}}var Y1=[{name:"token info",desc:"Token price, market cap, liquidity, holders, socials",usage:"gmgn token info --chain <sol|bsc|base|eth> --address <address>"},{name:"token security",desc:"Honeypot, taxes, rug ratio, contract risks",usage:"gmgn token security --chain <chain> --address <address>"},{name:"token pool",desc:"Liquidity pool reserves, DEX, depth",usage:"gmgn token pool --chain <chain> --address <address>"},{name:"token holders",desc:"Top holders with P&L breakdown",usage:"gmgn token holders --chain <chain> --address <address>"},{name:"token traders",desc:"Top traders with P&L breakdown",usage:"gmgn token traders --chain <chain> --address <address>"},{name:"track follow-tokens",desc:"Tokens a wallet follows on GMGN",usage:"gmgn track follow-tokens --chain <chain> --wallet <address>"},{name:"track follow-wallet",desc:"Trades from wallets you follow",usage:"gmgn track follow-wallet --chain <chain>"},{name:"track kol",desc:"KOL/influencer trade activity",usage:"gmgn track kol --chain <chain>"},{name:"track smartmoney",desc:"Smart money/whale trade activity",usage:"gmgn track smartmoney --chain <chain>"},{name:"market kline",desc:"Token candlestick / OHLCV chart data",usage:"gmgn market kline --chain <chain> --address <address> --resolution <1m|5m|15m|1h|4h|1d>"},{name:"market trending",desc:"Trending tokens ranked by swaps",usage:"gmgn market trending --chain <chain> --interval <1m|5m|1h|6h|24h>"},{name:"market trenches",desc:"Newly launched tokens (new/near/completed)",usage:"gmgn market trenches --chain <chain> --type <new_creation|near_completion|completed>"},{name:"market signal",desc:"Real-time token signals (sol/bsc only)",usage:"gmgn market signal --chain <sol|bsc>"}],Pi=()=>{let t=[{title:"\u2500\u2500 Token Research \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",filter:r=>r.startsWith("token")},{title:"\u2500\u2500 Smart Money Tracking \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",filter:r=>r.startsWith("track")},{title:"\u2500\u2500 Market Data \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500",filter:r=>r.startsWith("market")}],e=["\u{1F50D} GMGN \u2014 Token Research, Tracking & Market Data","","Usage: gmgn <sub-command> [options]",""];for(let r of t){e.push(r.title);for(let n of Y1.filter(o=>r.filter(o.name)))e.push(` ${n.name.padEnd(20)} ${n.desc}`),e.push(` ${n.usage}`);e.push("")}return e.push("\u2500\u2500 Setup \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),e.push(" gmgn setup Configure GMGN_API_KEY"),e.push(" gmgn status Check API key + CLI status"),e.push(""),Oc()||e.push(" \u26A0\uFE0F gmgn-cli not installed. Run: npm install -g gmgn-cli"),Ri()||e.push(" \u26A0\uFE0F GMGN_API_KEY not set. Run: gmgn setup"),e.join(`
|
|
210
|
+
`)},$i=()=>["\u{1F50D} GMGN Status","",`CLI installed: ${Oc()?"\u2705 yes":"\u274C no (npm install -g gmgn-cli)"}`,`API key configured: ${Ri()?"\u2705 yes":"\u274C no (gmgn setup)"}`,Ri()?`Key: ${Pc().slice(0,6)}\u2022\u2022\u2022\u2022${Pc().slice(-4)}`:""].filter(Boolean).join(`
|
|
211
|
+
`),Wp=Me.Object({subcommand:Me.String({description:"GMGN sub-command: token info, token security, token holders, token traders, track kol, track smartmoney, track follow-wallet, track follow-tokens, market kline, market trending, market trenches, market signal"}),chain:Me.Optional(Me.String({description:"Chain: sol, bsc, base, eth"})),address:Me.Optional(Me.String({description:"Token contract address"})),wallet:Me.Optional(Me.String({description:"Wallet address for track commands"})),limit:Me.Optional(Me.Number({description:"Number of results"})),resolution:Me.Optional(Me.String({description:"Kline resolution: 1m, 5m, 15m, 1h, 4h, 1d"})),interval:Me.Optional(Me.String({description:"Trending interval: 1m, 5m, 1h, 6h, 24h"})),type:Me.Optional(Me.String({description:"Trenches type: new_creation, near_completion, completed"}))});async function Rt(t,e){if(!Oc())return{content:[{type:"text",text:"gmgn-cli is not installed. Run: npm install -g gmgn-cli"}],isError:!0};if(!Ri())return{content:[{type:"text",text:"GMGN_API_KEY is not configured. Run 'gmgn setup' or tell the agent to configure it."}],isError:!0};let r=e.subcommand,n=e.chain||"sol",o=e.address,s=e.wallet,i=e.limit,l=e.resolution,c=e.interval,f=e.type,d=["gmgn-cli",r];if(["token info","token security","token pool","token holders","token traders"].includes(r)){if(!o)return{content:[{type:"text",text:`--address is required for '${r}'`}],isError:!0};d.push("--chain",n,"--address",o),i&&(r==="token holders"||r==="token traders")&&d.push("--limit",String(i))}else if(r==="market kline"){if(!o)return{content:[{type:"text",text:`--address is required for '${r}'`}],isError:!0};if(!l)return{content:[{type:"text",text:`--resolution is required for '${r}'`}],isError:!0};d.push("--chain",n,"--address",o,"--resolution",l)}else if(r==="market trending")d.push("--chain",n),c&&d.push("--interval",c),i&&d.push("--limit",String(i));else if(r==="market trenches")d.push("--chain",n),f&&d.push("--type",f),i&&d.push("--limit",String(i));else if(r==="market signal")d.push("--chain",n),i&&d.push("--limit",String(i));else if(r==="track follow-tokens"||r==="track follow-token-groups"){if(!s)return{content:[{type:"text",text:`--wallet is required for '${r}'`}],isError:!0};d.push("--chain",n,"--wallet",s)}else r==="track follow-wallet"?(d.push("--chain",n),s&&d.push("--wallet",s)):(r==="track kol"||r==="track smartmoney")&&(d.push("--chain",n),i&&d.push("--limit",String(i)));try{return{content:[{type:"text",text:K1(d[0],d.slice(1),{env:J1(),encoding:"utf-8",timeout:3e4,stdio:["pipe","pipe","pipe"]}).trim()}]}}catch(a){let h=a.stderr?.toString()||a.message||"";return h.includes("401")||h.includes("403")?{content:[{type:"text",text:"GMGN API key invalid or IPv6 issue. Run 'gmgn status'."}],isError:!0}:h.includes("429")?{content:[{type:"text",text:"GMGN rate limit exceeded. Wait and retry."}],isError:!0}:{content:[{type:"text",text:`gmgn-cli error: ${h.slice(0,500)}`}],isError:!0}}}var Gp=Me.Object({query:Me.String({description:"What to look up: trending, trenches, kline <address>, holders <address>, traders <address>, signal"}),chain:Me.Optional(Me.String({default:"sol"}))});async function Lc(t,e){let r=(e.query||"").toLowerCase().trim(),n=e.chain||"sol";if(r==="trending"||r==="hot"||r==="pumping")return Rt("",{subcommand:"market trending",chain:n,interval:"1h",limit:10});if(r==="trenches"||r==="new tokens"||r==="launches")return Rt("",{subcommand:"market trenches",chain:n,type:"new_creation",limit:10});if(r==="signal"||r==="signals"||r==="alerts")return Rt("",{subcommand:"market signal",chain:"sol",limit:10});if(r.startsWith("kline ")||r.startsWith("chart ")){let o=r.split(" ").pop();return o?Rt("",{subcommand:"market kline",chain:n,address:o,resolution:"1h"}):{content:[{type:"text",text:"Usage: gmgn market kline <address>"}],isError:!0}}if(r.startsWith("holders ")||r.startsWith("traders ")){let o=r.split(" "),s=o[0]==="holders"?"token holders":"token traders",i=o[1];return i?Rt("",{subcommand:s,chain:n,address:i,limit:10}):{content:[{type:"text",text:`Usage: gmgn ${s} <address>`}],isError:!0}}return r.length>20?Rt("",{subcommand:"token info",chain:n,address:r}):{content:[{type:"text",text:"Usage: gmgn market <trending|trenches|signal|kline <addr>|holders <addr>|traders <addr>>"}],isError:!0}}Ye();import{totalmem as Oi,freemem as qp,uptime as V1}from"node:os";var Qc=process.cpuUsage(),Dc=class{apiCallCount=0;prevCpuTimes={idle:0,total:0};trackApiCall(){this.apiCallCount++}getStats(e=0){return{cpuPercent:this.getCpuPercent(),ramPercent:this.getRamPercent(),ramUsed:this.formatBytes(Oi()-qp()),ramTotal:this.formatBytes(Oi()),uptime:this.formatUptime(V1()),...this.getNetStats(),apiCallsPerMin:this.apiCallCount,tokensUsed:e}}getCpuPercent(){try{let e=process.cpuUsage(),r=e.user-Qc.user,n=e.system-Qc.system;Qc=e;let o=r+n;return Math.min(100,Math.round(o/1e7*100))}catch(e){return Z.debug("SystemMonitor","CPU measurement failed",{error:e.message}),0}}getRamPercent(){let e=Oi()-qp();return Math.round(e/Oi()*100)}getNetStats(){return{netUp:"N/A",netDown:"N/A"}}formatBytes(e){if(e===0)return"0 B";let r=1024,n=["B","KB","MB","GB"],o=Math.floor(Math.log(e)/Math.log(r));return parseFloat((e/Math.pow(r,o)).toFixed(1))+" "+n[o]}formatUptime(e){let r=Math.floor(e/3600),n=Math.floor(e%3600/60);return r>0?`${r}h ${n}m`:`${n}m`}resetApiCounter(){let e=this.apiCallCount;return this.apiCallCount=0,e}getApiCount(){return this.apiCallCount}},Li=new Dc;ht();qo();Ro();async function Nc(){let t=[],e=Date.now();try{let i=await _r("getSlot",[]);t.push({service:"Solana RPC",status:"ok",latency:Date.now()-e,message:`slot ${i}`})}catch(i){t.push({service:"Solana RPC",status:"down",latency:Date.now()-e,message:i.message.slice(0,100)})}let r=Date.now();try{let l=await(await fe("https://api.dexscreener.com/tokens/v1/solana/AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump",{timeout:5e3,retries:0})).json();t.push({service:"DexScreener",status:l.length>0?"ok":"degraded",latency:Date.now()-r,message:l.length>0?"responding":"empty response"})}catch(i){t.push({service:"DexScreener",status:"down",latency:Date.now()-r,message:i.message.slice(0,100)})}let n=process.env.OPENROUTER_API_KEY;if(n){let i=Date.now();try{let l=await fe("https://openrouter.ai/api/v1/models",{timeout:5e3,retries:0,headers:{Authorization:`Bearer ${n}`}});t.push({service:"OpenRouter",status:l.ok?"ok":"degraded",latency:Date.now()-i,message:l.ok?"authenticated":`HTTP ${l.status}`})}catch(l){t.push({service:"OpenRouter",status:"down",latency:Date.now()-i,message:l.message.slice(0,100)})}}else t.push({service:"OpenRouter",status:"degraded",latency:0,message:"no API key configured"});let o=t.filter(i=>i.status==="down").length;return{overall:o===0?"healthy":o>=2?"down":"degraded",timestamp:Date.now(),services:t,circuitBreaker:$o(),errorSummary:Cr.getSummary()}}function Jp(t){let e=o=>o==="ok"?"\u{1F7E2}":o==="degraded"?"\u{1F7E1}":"\u{1F534}",r=[`\u{1F3E5} Health Check \u2014 ${t.overall.toUpperCase()}`,` ${new Date(t.timestamp).toLocaleTimeString()}`,"",...t.services.map(o=>` ${e(o.status)} ${o.service.padEnd(16)} ${String(o.latency).padStart(5)}ms ${o.message??""}`)];if(t.circuitBreaker.length>0){r.push(""," Circuit Breakers:");for(let o of t.circuitBreaker)r.push(` ${o.key}: ${o.state} (${o.failures} failures)`)}let n=Object.entries(t.errorSummary);if(n.length>0){r.push(""," Error Summary:");for(let[o,s]of n)r.push(` ${o}: ${s}`)}return r.join(`
|
|
212
|
+
`)}Ql();Uc();ht();Ro();function Hp(){let t=Fc.getSessionMetrics("current"),e=$o(),r=Cr.getSummary(),n=process.memoryUsage(),o=Math.floor(process.uptime());return["\u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510","\u2502 AIAIAI Agent \u2014 Live Dashboard \u2502","\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524",`\u2502 Uptime: ${H1(o).padEnd(12)} RSS: ${Vp(n.rss).padEnd(12)} Heap: ${Vp(n.heapUsed).padEnd(10)} \u2502`,"\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524","\u2502 METRICS \u2502",`\u2502 Tool calls: ${String(t.totalToolCalls).padEnd(8)} Errors: ${String(t.errors).padEnd(8)} \u2502`,`\u2502 Tokens in: ${t.totalTokensIn.toLocaleString().padEnd(8)} out: ${t.totalTokensOut.toLocaleString().padEnd(8)} \u2502`,`\u2502 Model calls: ${String(t.totalModelCalls).padEnd(8)} Sessions: ${String(Object.keys(t.toolBreakdown).length).padEnd(8)} \u2502`,"\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524","\u2502 CIRCUIT BREAKERS \u2502",...e.slice(0,4).map(i=>`\u2502 ${i.state==="closed"?"\u{1F7E2}":i.state==="half-open"?"\u{1F7E1}":"\u{1F534}"} ${i.key.padEnd(30)} ${i.state.padEnd(10)} ${i.failures} fails \u2502`),e.length===0?"\u2502 All circuits closed (healthy) \u2502":"","\u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524","\u2502 ERRORS \u2502",...Object.entries(r).slice(0,3).map(([i,l])=>`\u2502 ${i.padEnd(20)} ${String(l).padEnd(5)} occurrences \u2502`),Object.keys(r).length===0?"\u2502 No errors recorded \u2502":"","\u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518"].filter(Boolean).join(`
|
|
213
|
+
`)}function H1(t){return t<60?`${t}s`:t<3600?`${Math.floor(t/60)}m`:`${Math.floor(t/3600)}h ${Math.floor(t%3600/60)}m`}function Vp(t){return t<1024?`${t}B`:t<1024*1024?`${(t/1024).toFixed(0)}KB`:`${(t/(1024*1024)).toFixed(1)}MB`}var jc=null;function z1(){return jc?{...jc,durationSec:Math.floor((Date.now()-jc.startTime)/1e3)}:null}function zp(){let t=z1();if(!t)return"No active session.";let e=Math.floor(t.durationSec/60),r=t.durationSec%60;return["\u{1F4CA} Session Analytics",` Duration: ${e}m ${r}s`,` Messages: ${t.messagesSent}`,` Tools called: ${t.toolsCalled}`,` Tokens used: ${t.tokensUsed.toLocaleString()}`,` Errors: ${t.errors}`,` Session ID: ${t.sessionId}`].join(`
|
|
214
|
+
`)}import{Box as X1,Text as Kc}from"ink";import{jsx as ev,jsxs as Wc}from"react/jsx-runtime";var Z1="\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588";function Xp({data:t,width:e=30,label:r,color:n}){if(!t||t.length<2)return null;let o=Math.min(...t),s=Math.max(...t),i=s-o||1,l=[],c=t.length/e;for(let p=0;p<e;p++){let g=Math.floor(p*c);l.push(t[g])}let f=l.map(p=>{let g=(p-o)/i,x=Math.min(7,Math.floor(g*8));return Z1[Math.max(0,x)]}).join(""),d=t[t.length-1]>(t[0]??t[t.length-1])?"\u25B2":"\u25BC",a=o<1?o.toFixed(6):o<100?o.toFixed(2):o.toLocaleString(),h=s<1?s.toFixed(6):s<100?s.toFixed(2):s.toLocaleString();return Wc(X1,{flexDirection:"column",children:[r&&Wc(Kc,{dimColor:!0,children:[r," ",d]}),ev(Kc,{color:n,children:f}),Wc(Kc,{dimColor:!0,children:["$",a," \u2013 $",h]})]})}var Qi=class t{prices=[];maxLength;static ABSOLUTE_MAX=1e3;constructor(e=50){this.maxLength=Math.min(e,t.ABSOLUTE_MAX)}push(e){this.prices.push(e),this.prices.length>this.maxLength&&(this.prices=this.prices.slice(-this.maxLength))}getData(){return[...this.prices]}get length(){return this.prices.length}};ht();Ye();import{Type as Yo}from"@sinclair/typebox";var JT=Yo.Object({chain:Yo.Optional(Yo.String({description:"Chain: solana, ethereum, bsc, base",default:"solana"})),limit:Yo.Optional(Yo.Number({description:"Max entries",default:10}))}),qn=[],Zp=0,tv=3e5;async function tg(t,e){let r=e.chain||"solana",n=e.limit||10;if(Date.now()-Zp<tv&&qn.length>0){let o=qn.filter(s=>s.chain===r).slice(0,n);return eg(o,r)}try{let o=`https://api.dexscreener.com/latest/dex/tokens/${r}`,s=await fe(o,{timeout:1e4,retries:1});if(!s.ok)return{content:[{type:"text",text:`Token launch calendar unavailable for ${r}.`}]};qn=((await s.json())?.pairs??[]).map(f=>{let d=f.pairCreatedAt?new Date(f.pairCreatedAt):null,a=Date.now(),h=d?a-d.getTime():1/0,p=d?h<36e5?`${Math.floor(h/6e4)}m ago`:h<864e5?`${Math.floor(h/36e5)}h ago`:`${Math.floor(h/864e5)}d ago`:"unknown";return{address:f.baseToken?.address??"",symbol:f.baseToken?.symbol??"???",name:f.baseToken?.name??"Unknown",priceUsd:f.priceUsd??null,volume24h:f.volume?.h24??0,liquidityUsd:f.liquidity?.usd??0,age:p,chain:r}}),Zp=Date.now();let c=qn.slice(0,n);return eg(c,r)}catch(o){return Z.warn("TokenCalendar","Failed to fetch launches",{chain:r,error:o.message}),{content:[{type:"text",text:"Token launch calendar: Data temporarily unavailable."}]}}}function eg(t,e){if(t.length===0)return{content:[{type:"text",text:`No recent launches found on ${e}.`}]};let r=[`\u{1F680} Recent Token Launches \u2014 ${e.toUpperCase()}`,""];for(let n of t.slice(0,10)){let o=n.priceUsd?`$${parseFloat(n.priceUsd).toFixed(8)}`:"N/A",s=n.volume24h>0?`$${(n.volume24h/1e3).toFixed(1)}k`:"no vol",i=n.liquidityUsd>0?`$${(n.liquidityUsd/1e3).toFixed(1)}k`:"no liq";r.push(` ${n.symbol.padEnd(10)} ${o.padEnd(16)} ${s.padEnd(10)} ${n.age.padEnd(10)} ${n.address.slice(0,6)}\u2026`)}return{content:[{type:"text",text:r.join(`
|
|
215
|
+
`)}],details:{launches:t}}}function rg(){return qn.length===0?"Loading\u2026":qn.slice(0,3).map(e=>e.symbol).join(" \xB7 ")}ht();qo();Ye();import{Type as ng}from"@sinclair/typebox";var ZT=ng.Object({transaction:ng.String({description:"Base64-encoded transaction to simulate"})});async function og(t,e){let r=e.transaction||"";if(!r||r.length<10)return{content:[{type:"text",text:"Invalid transaction: must be base64-encoded Solana transaction."}],isError:!0};try{let n=JSON.stringify({jsonrpc:"2.0",id:1,method:"simulateTransaction",params:[r,{sigVerify:!1,commitment:"processed",encoding:"base64"}]}),s=await(await fe(Mp(),{timeout:15e3,retries:1,method:"POST",headers:{"Content-Type":"application/json"},body:n})).json(),l=s?.result?.value??s?.result;if(!l){let g=s?.error?.message??"Unknown simulation error";return{content:[{type:"text",text:`\u274C Simulation failed: ${g}`}],isError:!0,details:{ok:!1,error:g,logs:[],unitsConsumed:0,fee:0}}}let c=!l.err,f=l.unitsConsumed??0,d=l.logs??[],a=(l.fee??0)/1e9*5e-6,h=l.err?JSON.stringify(l.err):void 0,p=[c?"\u2705 Transaction simulation: SUCCESS":"\u274C Transaction simulation: FAILED","",`Units: ${f.toLocaleString()}`,`Est. Fee: ${a.toFixed(6)} SOL`,""];return d.length>0&&(p.push("Logs:"),d.slice(-8).forEach(g=>p.push(` ${g}`))),h&&p.push(`Error: ${h}`),{content:[{type:"text",text:p.join(`
|
|
216
|
+
`)}],details:{ok:c,error:h,logs:d,unitsConsumed:f,fee:a}}}catch(n){return Z.warn("TransactionSim","Simulation failed",{error:n.message}),{content:[{type:"text",text:"\u26A0\uFE0F Transaction simulation unavailable (RPC may be rate-limited)."}],isError:!0}}}Vc();zc();var ov=["help","exit","quit","clear","price","news","models","cost","model","wallet","deposit","burn","actions","activity","fees","keys","providers","goals","goal add","goal done","schedule","sessions","resume","memory","update","gmgn","token info","token security","token holders","token traders","track kol","track smartmoney","track follow-wallet","market kline","market trending","market trenches","market signal","watch","unwatch","watchlist","alerts","alert","compare","portfolio","diff","explain","copy","theme","status"];function sv(t,e){let r=t.length,n=e.length,o=[];for(let s=0;s<=r;s++)o[s]=[s];for(let s=0;s<=n;s++)o[0][s]=s;for(let s=1;s<=r;s++)for(let i=1;i<=n;i++)o[s][i]=Math.min(o[s-1][i]+1,o[s][i-1]+1,o[s-1][i-1]+(t[s-1]===e[i-1]?0:1));return o[r][n]}function ug(t,e=3){let r=t.toLowerCase().replace(/^\/+/,"");if(!r||r.length<1)return[];let n=ov.map(o=>({cmd:o,dist:sv(r,o)}));return n.sort((o,s)=>o.dist-s.dist),n.slice(0,e).filter(o=>o.dist<=4).map(o=>o.cmd)}eu();uu();import{Fragment as Gv,jsx as Be,jsxs as Ce}from"react/jsx-runtime";var mu=null;async function zo(){if(mu)return mu;let t=await Promise.resolve().then(()=>(_g(),Sg));return mu=t,t}var Fi=null;async function lr(){return Fi||(Fi=await Promise.resolve().then(()=>(uu(),xg)),Fi)}function Uv(t){if(!t)return{pct:0,bar:"\u2591".repeat(20),color:D.dim};let e=t.getContextPressure(),r=Math.round(e.pct/5),n=e.level==="critical"?D.error:e.level==="red"?D.warn:e.level==="yellow"?D.header:D.success;return{pct:e.pct,bar:"\u2588".repeat(Math.min(r,20))+"\u2591".repeat(Math.max(0,20-r)),color:n}}function ji(t,e=0){let r=" ".repeat(e);if(t===null)return E.dim("null");if(typeof t=="boolean")return E.warn(String(t));if(typeof t=="number")return E.success(String(t));if(typeof t=="string")return E.accent(`"${t}"`);if(Array.isArray(t))return t.length===0?"[]":t.length<=3?`[${t.map(n=>ji(n,0)).join(", ")}]`:`[
|
|
217
|
+
${t.slice(0,5).map(n=>`${r} ${ji(n,e+1)}`).join(`,
|
|
218
|
+
`)}${t.length>5?`
|
|
219
|
+
${r} \u2026${t.length-5} more`:""}
|
|
220
|
+
${r}]`;if(typeof t=="object"){let n=Object.entries(t);return n.length===0?"{}":`{
|
|
221
|
+
${n.slice(0,8).map(([o,s])=>`${r} ${E.accent(o)}: ${ji(s,e+1)}`).join(`,
|
|
222
|
+
`)}${n.length>8?`
|
|
223
|
+
${r} \u2026${n.length-8} more`:""}
|
|
224
|
+
${r}}`}return String(t)}function jv(t){try{return ji(JSON.parse(t))}catch{return t.length>300?t.slice(0,300)+E.dim(`
|
|
225
|
+
\u2026[truncated]`):t}}var Kv=0;function Wv(){return String(++Kv)}var Ui=`session-${Date.now()}-${Math.random().toString(36).slice(2,7)}`;function Bg({registry:t,systemPrompt:e,chain:r="solana",modelReg:n,costTracker:o,onNotifyReady:s,onStatusReady:i,onModelSelectorReady:l}){let{exit:c}=Ov(),[f,d]=xt([]),[a,h]=xt(""),[p,g]=xt(null),[x,A]=xt(!1),[w]=xt(r),[O,T]=xt(!1),[B,v]=xt(""),[C,I]=xt({status:{},price:"",cost:"",news:""}),[j,F]=xt({news:[],price:null,watchList:[]}),[Q,P]=xt({cold:{sol:0,aiaiai:0,usdc:0},action:{sol:0,aiaiai:0,usdc:0},deposit:{sol:0,aiaiai:0,usdc:0}}),[$,N]=xt({recent:[],fees:{buyFees:0,burnFees:0,total:0}}),[U,q]=xt({cpu:0,ram:0,uptime:"0m",apiCalls:0}),[H,z]=xt("healthy"),oe=Yn(new Qi(40)),re=Yn(null),J=Yn(null),ae=Yn(null),le=Yn(null),se=Yn([]),ye=$r(),we="no-model";try{we=ci(n).model}catch{}let be=Jn(M=>{d(K=>{let me=[...K,{...M,id:Wv(),ts:Date.now()}];return se.current=me,me})},[]),S=Jn(M=>{be({role:"notify",content:M})},[be]),He=Jn((M,K)=>{I(me=>({...me,status:{...me.status,[M]:K}}))},[]),Re={notify:S,setStatus:He,setTheme(){},setHeader(){},showModelSelector:M=>{v(M??""),T(!0)},theme:ye};function rt(){n&&(t.addTool({name:"list_models",label:"List Models",description:"Search and filter available AI models.",parameters:n.listModelsParams,execute:(M,K)=>n.listModelsTool(M,K)}),t.addTool({name:"model_summary",label:"Model Summary",description:"Summary of available model tiers.",parameters:n.listModelsParams,execute:()=>n.modelSummaryTool()}),o&&t.addTool({name:"cost_report",label:"Cost Report",description:"Show session and lifetime token usage.",parameters:o.costReportParams,execute:()=>o.costReportTool()}),t.addTool({name:"get_aiaiai_price",label:"AIAIAI Price",description:"Get $AIAIAI price, liquidity, MCap, volume.",parameters:We.getAiaiaiPriceParams,execute:()=>We.getAiaiaiPriceTool()}),t.addTool({name:"get_token_price",label:"Token Price",description:"Get any Solana token price.",parameters:We.getTokenPriceParams,execute:(M,K)=>We.getTokenPriceTool(M,K)}),t.addTool({name:"get_news",label:"Get News",description:"Crypto news with sentiment.",parameters:Ep,execute:(M,K)=>dc(M,K)}),t.addTool({name:"get_candles",label:"Get Candles",description:"OHLCV from Binance + TA.",parameters:Cp,execute:(M,K)=>Sp(M,K)}),t.addTool({name:"analyze_ta",label:"Technical Analysis",description:"RSI, MACD, Bollinger, ATR.",parameters:kp,execute:async(M,K)=>{let Ue=K.prices.map((Qe,R)=>({timestamp:0,open:Qe,high:K.highs?.[R]??Qe,low:K.lows?.[R]??Qe,close:Qe,volume:K.volumes?.[R]??0})),G=await mc(Ue),At=G.find(Qe=>Qe.indicator==="SUMMARY");return{content:[{type:"text",text:`Technical Analysis:
|
|
226
|
+
${G.map(Qe=>{let R=Qe.signal==="bullish"?"\u{1F7E2}":Qe.signal==="bearish"?"\u{1F534}":"\u26AA",V=Array.isArray(Qe.value)?`[${Qe.value.length}]`:Qe.value;return`${R} ${Qe.indicator}: ${V}`}).join(`
|
|
227
|
+
`)}`}],details:{results:G,overall_signal:At?.signal}}}}),t.addTool({name:"get_fear_greed",label:"Fear & Greed",description:"Crypto Fear & Greed Index.",parameters:{},execute:async()=>(await zo()).getFearGreedTool()}),t.addTool({name:"get_funding_rates",label:"Funding Rates",description:"Binance funding rates.",parameters:{},execute:async(M,K)=>(await zo()).getFundingRatesTool(M,K)}),t.addTool({name:"get_btc_mempool",label:"BTC Mempool",description:"BTC mempool stats.",parameters:{},execute:async()=>(await zo()).getBtcMempoolTool()}),t.addTool({name:"get_defi_tvl",label:"DeFi TVL",description:"DeFiLlama TVL.",parameters:{},execute:async(M,K)=>(await zo()).getDefiTvlTool(M,K)}),t.addTool({name:"get_solana_stats",label:"Solana Stats",description:"Solana epoch, slot, SOL price.",parameters:{},execute:async()=>(await zo()).getSolanaStatsTool()}),t.addTool({name:"get_agent_balance",label:"Agent Balance",description:"Cold + action wallet balances.",parameters:et.getAgentBalanceParams,execute:()=>et.getAgentBalanceTool()}),t.addTool({name:"get_deposit_balance",label:"Deposit Balance",description:"Deposit wallet + instructions.",parameters:et.getDepositBalanceParams,execute:()=>et.getDepositBalanceTool()}),t.addTool({name:"get_actions",label:"Agent Actions",description:"Recent buy/burn actions.",parameters:tt.getActionsParams,execute:(M,K)=>tt.getActionsTool(M,K)}),t.addTool({name:"get_fees",label:"Agent Fees",description:"Accumulated fees.",parameters:tt.getFeesParams,execute:()=>tt.getFeesTool()}),t.addTool({name:"read_task_context",label:"Read Task Context",description:"Read saved task context.",parameters:Ig.Object({taskId:Ig.String({description:"Task ID"})}),execute:(M,K)=>Si.readContextTool(M,K)}),t.addTool({name:"list_tasks",label:"List Tasks",description:"List saved task contexts.",parameters:{},execute:()=>Si.listTasksTool()}),t.addTool({name:"set_goal",label:"Set Goal",description:"Set a persistent goal.",parameters:pt.setGoalParams,execute:(M,K)=>pt.setGoalTool(M,K)}),t.addTool({name:"complete_goal",label:"Complete Goal",description:"Mark a goal complete.",parameters:pt.completeGoalParams,execute:(M,K)=>pt.completeGoalTool(M,K)}),t.addTool({name:"list_goals",label:"List Goals",description:"List goals.",parameters:pt.listGoalsParams,execute:(M,K)=>pt.listGoalsTool(M,K)}),t.addTool({name:"add_goal_note",label:"Add Goal Note",description:"Add a note to a goal.",parameters:pt.addGoalNoteParams,execute:(M,K)=>pt.addGoalNoteTool(M,K)}),t.addTool({name:"schedule_task",label:"Schedule Task",description:"Schedule a recurring task.",parameters:qt.addTaskParams,execute:(M,K)=>qt.addTaskTool(M,K)}),t.addTool({name:"list_schedule",label:"List Schedule",description:"List scheduled tasks.",parameters:qt.listTasksParams,execute:(M,K)=>qt.listTasksTool(M,K)}),t.addTool({name:"remove_schedule",label:"Remove Schedule",description:"Remove a scheduled task.",parameters:qt.removeTaskParams,execute:(M,K)=>qt.removeTaskTool(M,K)}),t.addTool({name:"gmgn",label:"GMGN Token Research",description:"Full GMGN access: token info, security, holders, traders, tracking, market data.",parameters:Wp,execute:(M,K)=>Rt(M,K)}),t.addTool({name:"gmgn_market",label:"GMGN Market Data",description:"Market data: trending, trenches, kline, signals.",parameters:Gp,execute:(M,K)=>Lc(M,K)}),t.addTool({name:"watch_token",label:"Watch Token",description:"Add token to watch list.",parameters:{},execute:async(M,K)=>(await lr()).watchTokenTool(M,K)}),t.addTool({name:"unwatch_token",label:"Unwatch Token",description:"Remove token from watch list.",parameters:{},execute:async(M,K)=>(await lr()).removeWatchTool(M,K)}),t.addTool({name:"watch_list",label:"Watch List",description:"Show watched tokens.",parameters:{},execute:async()=>(await lr()).listWatchTool()}),t.addTool({name:"add_alert",label:"Price Alert",description:"Set a price alert.",parameters:{},execute:async(M,K)=>(await lr()).addAlertTool(M,K)}),t.addTool({name:"check_alerts",label:"Check Alerts",description:"List active alerts.",parameters:{},execute:async()=>(await lr()).checkAlertsTool()}),t.addTool({name:"compare_tokens",label:"Compare Tokens",description:"Side-by-side token comparison.",parameters:{},execute:async(M,K)=>(await lr()).compareTokensTool(M,K)}),t.addTool({name:"portfolio",label:"Portfolio",description:"Wallet portfolio analysis.",parameters:{},execute:async(M,K)=>(await lr()).portfolioTool(M,K)}))}Pv(()=>{rt(),(async()=>{(async(u=3,m=2e3)=>{for(let y=0;y<u;y++)try{let b=await We.getAiaiaiPrice();F(L=>({...L,price:{priceUsd:b.priceUsd,change:b.priceChange24h,mcap:b.marketCap,liq:b.liquidityUsd}})),b.priceUsd&&I(L=>({...L,price:`$${parseFloat(b.priceUsd).toFixed(6)}`})),tt.setPrice(parseFloat(b.priceUsd||"0.0004"));return}catch(b){if(y===u-1)throw b;await new Promise(L=>setTimeout(L,m*(y+1)))}})().catch(()=>{console.error("Initial price fetch failed after retries")}),et.getAll().then(u=>{P({cold:{sol:u.cold.sol,aiaiai:u.cold.aiaiai,usdc:u.cold.usdc},action:{sol:u.action.sol,aiaiai:u.action.aiaiai,usdc:u.action.usdc},deposit:{sol:u.deposit.sol,aiaiai:u.deposit.aiaiai,usdc:u.deposit.usdc}})}).catch(()=>{}),tt.refresh().then(()=>{N({recent:tt.getRecentActions(8).map(u=>({type:u.type,amount:u.amount,usdValue:u.usdValue,timestamp:u.timestamp})),fees:tt.getFees()})}).catch(()=>{}),jn.getLatest().then(u=>{F(m=>({...m,news:u.items.slice(0,6).map(y=>({title:y.title,sentiment:y.sentiment??0,source:y.source}))})),I(m=>({...m,news:jn.statusBadge()}))}).catch(()=>{}),lr().then(({getWatchList:u})=>{F(m=>({...m,watchList:u()}))}),qt.start(u=>{be({role:"system",content:E.muted(`\u23F0 Scheduled: "${u.name}"`)}),!x&&re.current&&(A(!0),h(""),re.current.run(`[SCHEDULED TASK: ${u.name}] ${u.prompt}`).catch(m=>S(E.error(`Scheduler error: ${m.message}`))))});let K=null;lr().then(u=>{K=u}).catch(()=>{});let me=setInterval(()=>{We.getAiaiaiPrice().then(u=>{if(F(m=>({...m,price:{priceUsd:u.priceUsd,change:u.priceChange24h,mcap:u.marketCap,liq:u.liquidityUsd}})),u.priceUsd&&(I(m=>({...m,price:`$${parseFloat(u.priceUsd).toFixed(6)}`})),oe.current.push(parseFloat(u.priceUsd))),tt.setPrice(parseFloat(u.priceUsd||"0.0004")),Li.trackApiCall(),u.priceUsd&&K){let m=K.checkAlerts(parseFloat(u.priceUsd),"AIAIAI");for(let y of m)S(`\u{1F514} Alert triggered: ${y.type} $${y.price} \u2014 $AIAIAI is now $${u.priceUsd}`),Xc(`\u{1F514} **Alert**: ${y.type} $${y.price} \u2014 $AIAIAI now $${u.priceUsd}`).catch(()=>{})}}).catch(()=>{}),o&&I(u=>({...u,cost:o.statusLine()}))},3e4),Ue=setInterval(()=>{et.getAll().then(u=>{P({cold:{sol:u.cold.sol,aiaiai:u.cold.aiaiai,usdc:u.cold.usdc},action:{sol:u.action.sol,aiaiai:u.action.aiaiai,usdc:u.action.usdc},deposit:{sol:u.deposit.sol,aiaiai:u.deposit.aiaiai,usdc:u.deposit.usdc}})}).catch(()=>{}),tt.refresh().then(()=>{N({recent:tt.getRecentActions(8).map(u=>({type:u.type,amount:u.amount,usdValue:u.usdValue,timestamp:u.timestamp})),fees:tt.getFees()})}).catch(()=>{})},6e4),G=setInterval(()=>{jn.getLatest().then(u=>{F(m=>({...m,news:u.items.slice(0,6).map(y=>({title:y.title,sentiment:y.sentiment??0,source:y.source}))})),I(m=>({...m,news:jn.statusBadge()}))}).catch(()=>{})},3e5),At=setInterval(()=>{let u=Li.getStats();q({cpu:u.cpuPercent,ram:u.ramPercent,uptime:u.uptime,apiCalls:Li.getApiCount()})},1e4),ue=setInterval(async()=>{try{let u=await Nc();z(u.overall)}catch{}},6e4);Ve.startAutoSave(()=>se.current),Ve.setCurrentId(Ui);let Qe=setInterval(()=>{se.current.length>0&&Ve.save(se.current)},3e4),R=new Pn;R.setSystemPrompt(t.getSystemPrompt()||e||"You are AIAIAI Chain Agent."),ae.current=R;let V={ui:Re,hasUI:!0,config:{OPENROUTER_API_KEY:process.env.OPENROUTER_API_KEY,DEFAULT_MODEL:process.env.DEFAULT_MODEL}};le.current=V,t.fireHook("session_start",V).then(()=>{if(Wn.isAvailable){let m=Wn.buildContextBlock(Ui);m&&R.setSystemPrompt((R.getSystemPrompt()||"")+m)}let u=pt.buildContextBlock();u&&R.setSystemPrompt((R.getSystemPrompt()||"")+u),be({role:"system",content:E.muted("Session started. Type /help for commands.")})});let ce=new Rn(t,R,u=>{if(u.type==="text_delta")h(m=>m+u.text);else if(u.type==="tool_start")g(u.name);else if(u.type==="tool_done")g(null),be({role:"tool",content:jv(u.result),toolName:u.name,isError:u.isError});else if(u.type==="turn_done")A(!1),g(null),h(m=>(m.trim()&&(be({role:"assistant",content:m}),Wn.save(Ui,"assistant",m)),""));else if(u.type==="error")A(!1),g(null),h(""),S(E.error(`Error: ${u.message}`));else if(u.type==="approval_request"){g(null);let{toolName:m,args:y,approve:b}=u,L="";try{L=JSON.stringify(JSON.parse(y),null,2).slice(0,200)}catch{L=y.slice(0,200)}be({role:"notify",content:`\u26A0\uFE0F APPROVAL REQUIRED
|
|
228
|
+
|
|
229
|
+
Tool: ${m}
|
|
230
|
+
Args: ${L}
|
|
231
|
+
|
|
232
|
+
Type /approve or /deny to continue.`}),J.current=b}},V,"normal",n,o,pt,Si);return re.current=ce,o&&I(u=>({...u,cost:o.statusLine()})),()=>{le.current&&t.fireHook("session_end",le.current).catch(()=>{}),qt.stop(),Ve.stopAutoSave(),f.length>0&&Ve.save(f),clearInterval(me),clearInterval(Ue),clearInterval(G),clearInterval(At),clearInterval(Qe),clearInterval(ue),o?.saveLifetime()}})()},[]),Lv((M,K)=>{K.ctrl&&M==="c"&&(be({role:"system",content:E.muted("Goodbye \u{1F916}")}),f.length>0&&Ve.save(f),o?.saveLifetime(),setTimeout(c,200))});let ut=Jn(async M=>{let K=M.trim();if(!K)return;if(K.length>4096){S(E.error("Input too long (max 4KB). Try a shorter message."));return}let me=K.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"");me!==K&&(S(E.warn("\u26A0\uFE0F Control characters removed from input.")),K=me);let Ue=[/ignore (all |previous |above|prior) instructions/i,/you are now /i,/new instructions/i,/override (system|safety|rules)/i,/forget (all |everything|previous)/i,/\[system\]/i,/<\/system>/i];for(let G of Ue)if(G.test(K)){S(E.error("\u26A0\uFE0F Blocked: Input contains suspicious patterns."));return}if(K.startsWith("/")){let[G,...At]=K.slice(1).split(" "),ue=At.join(" ");if(G==="exit"||G==="quit"){f.length>0&&Ve.save(f),o?.saveLifetime(),be({role:"system",content:E.muted("Goodbye \u{1F916}")}),setTimeout(c,200);return}if(G==="help"){S(`Commands:
|
|
233
|
+
/token info|security|holders|traders
|
|
234
|
+
/track kol|smartmoney|follow-wallet
|
|
235
|
+
/market kline|trending|trenches|signal
|
|
236
|
+
/watch /unwatch /watchlist /alerts /alert /compare /portfolio
|
|
237
|
+
/keys /wallet /deposit /burn /actions /fees
|
|
238
|
+
/models /cost /goals /schedule /update /diff
|
|
239
|
+
/sessions /resume /memory /clear /exit
|
|
240
|
+
/launches /theme /copy /simulate /explain /webhook /clipboard
|
|
241
|
+
/metrics_detail /health /dashboard
|
|
242
|
+
|
|
243
|
+
Tab to auto-complete, \u2191\u2193 for history, Shift+Enter for multi-line`);return}if(G==="token"){let R=ue.split(" "),V=R[0];if(!V||V==="help"){S(`Token commands:
|
|
244
|
+
/token info --chain <sol|bsc|base|eth> --address <addr>
|
|
245
|
+
/token security --chain <chain> --address <addr>
|
|
246
|
+
/token holders --chain <chain> --address <addr>
|
|
247
|
+
/token traders --chain <chain> --address <addr>`);return}let ce=R[R.indexOf("--chain")+1]||"sol",u=R[R.indexOf("--address")+1];if(!u&&V!=="help"){S(E.error("--address is required"));return}let m=await Rt("",{subcommand:V,chain:ce,address:u});S(m.content[0].text);return}if(G==="track"){let R=ue.split(" "),V=R[0];if(!V||V==="help"){S(`Track commands:
|
|
248
|
+
/track kol --chain <sol|bsc|base|eth>
|
|
249
|
+
/track smartmoney --chain <chain>
|
|
250
|
+
/track follow-wallet --chain <chain>`);return}let ce=R[R.indexOf("--chain")+1]||"sol",u=await Rt("",{subcommand:`track ${V}`,chain:ce,limit:10});S(u.content[0].text);return}if(G==="market"){let R=ue.split(" "),V=R[0];if(!V||V==="help"){S(`Market commands:
|
|
251
|
+
/market kline --chain <chain> --address <addr> --resolution <1h|4h|1d>
|
|
252
|
+
/market trending --chain <chain> --interval <1h|6h|24h>
|
|
253
|
+
/market trenches --chain <chain> --type <new_creation|near_completion|completed>
|
|
254
|
+
/market signal --chain <sol|bsc>`);return}let ce=R[R.indexOf("--chain")+1]||"sol",u=R[R.indexOf("--address")+1],m=R[R.indexOf("--resolution")+1],y=R[R.indexOf("--interval")+1],b=R[R.indexOf("--type")+1],L={subcommand:`market ${V}`,chain:ce};u&&(L.address=u),m&&(L.resolution=m),y&&(L.interval=y),b&&(L.type=b);let te=await Rt("",L);S(te.content[0].text);return}if(G==="watch"){let R=await nu("",{address:ue||"AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump"});F(V=>({...V,watchList:Ho()})),S(R.content[0].text);return}if(G==="unwatch"){let R=await ou("",{address:ue});F(V=>({...V,watchList:Ho()})),S(R.content[0].text);return}if(G==="watchlist"){let R=await su();S(R.content[0].text);return}if(G==="alerts"){let R=await au();S(R.content[0].text);return}if(G==="alert"){let R=ue.split(" "),V=R[0],ce=parseFloat(R[1]);if(!V||isNaN(ce)){S(E.error("Usage: /alert above|below <price>"));return}let u=await iu("",{token:"AIAIAI",type:V,price:ce});S(u.content[0].text);return}if(G==="compare"){let R=ue.split(" ");if(R.length<2){S(E.error("Usage: /compare <address1> <address2>"));return}let V=await lu("",{address1:R[0],address2:R[1]});S(V.content[0].text);return}if(G==="portfolio"){let V=await cu("",{address:ue||"A11iZoqEt6hU7HyggqC67ee4AtYmaJjwKCvJLerJRV2J"});S(V.content[0].text);return}if(G==="sessions"){let R=Ve.list();if(R.length===0){S("No saved sessions.");return}let V=R.slice(0,10).map((ce,u)=>` ${u+1}. ${ce.title} (${ce.messageCount} msgs, ${new Date(ce.updatedAt).toLocaleDateString()})`);S(`Recent Sessions:
|
|
255
|
+
${V.join(`
|
|
256
|
+
`)}
|
|
257
|
+
|
|
258
|
+
Use /resume <number> to resume.`);return}if(G==="resume"){let R=Ve.list(),V=parseInt(ue)-1;if(isNaN(V)||V<0||V>=R.length){S(E.error("Invalid session number."));return}let ce=Ve.load(R[V].id);if(!ce){S(E.error("Session not found."));return}d(ce.messages),Ve.setCurrentId(ce.id),S(`Resumed: ${ce.title} (${ce.messages.length} messages)`);return}if(G==="price"){let R=await We.getAiaiaiPriceTool();S(R.content[0].text);return}if(G==="news"){let R=await dc("",{limit:15});S(R.content[0].text);return}if(G==="models"){if(!n){S(E.error("Model registry not available"));return}let R=await n.listModelsTool("",{query:At.join(" ")||void 0,limit:20});S(R.content[0].text);return}if(G==="cost"){if(!o){S(E.error("Cost tracker not available"));return}let R=await o.costReportTool();S(R.content[0].text);return}if(G==="model"){v(ue),T(!0);return}if(G==="clear"){d([]);return}if(G==="wallet"){let R=await et.getAgentBalanceTool();S(R.content[0].text);return}if(G==="deposit"){let R=await et.getDepositBalanceTool();S(R.content[0].text);return}if(G==="burn"){S(["\u{1F525} Burn $AIAIAI","",`Deposit: ${ir}`,"Send SOL or USDC here.","",`Action: ${at}`,`Signer: ${Tc}`].join(`
|
|
259
|
+
`));return}if(G==="actions"||G==="activity"){let R=await tt.getActionsTool("",{limit:15});S(R.content[0].text);return}if(G==="fees"){let R=await tt.getFeesTool();S(R.content[0].text);return}if(G==="keys"||G==="providers"){S(`Switch to CLI for key management:
|
|
260
|
+
aiaiai keys`);return}if(G==="goals"||G==="goal"){let R=ue.trim().split(" ")[0];if(R==="add"){let V=ue.trim().slice(4).trim();if(!V){S(E.error("Usage: /goal add <text>"));return}let ce=await pt.setGoalTool("",{text:V});S(ce.content[0].text)}else if(R==="done"||R==="complete"){let V=ue.trim().split(" ")[1];if(!V){S(E.error("Usage: /goal done <id>"));return}let ce=await pt.completeGoalTool("",{id:V});S(ce.content[0].text)}else{let V=await pt.listGoalsTool("",{status:"all"});S(V.content[0].text)}return}if(G==="schedule"||G==="sched"){let R=await qt.listTasksTool("",{enabled_only:!1});S(R.content[0].text);return}if(G==="update"||G==="upgrade"){S(`Switch to CLI:
|
|
261
|
+
aiaiai update`);return}if(G==="memory"&&ue.trim()){let R=Wn.search(ue.trim(),8);if(R.length===0){S(E.muted("No memories found."));return}let V=R.map(ce=>`[${new Date(ce.ts).toLocaleDateString()} ${ce.role}] ${ce.content.slice(0,120)}`);S(`Memory: "${ue.trim()}"
|
|
262
|
+
${V.join(`
|
|
263
|
+
`)}`);return}if(G==="gmgn"||G==="gmgnhelp"){let R=At.join(" ");if(!R||R==="help"){S(Pi());return}if(R==="status"){S($i());return}if(R.startsWith("setup")){S("Run in CLI: aiaiai gmgn setup");return}let V=await Rt("",{subcommand:R.split(" ")[0],chain:"sol"});S(V.content[0].text);return}if(G==="gmgnmarket"||G==="market"){let R=await Lc("",{query:ue||"trending",chain:"sol"});S(R.content[0].text);return}if(G==="launches"||G==="calendar"){let R=await tg("",{chain:ue||"solana",limit:15});S(R.content[0].text);return}if(G==="diff"||G==="compared"){let R=Ve.list();if(R.length<2){S("Need at least 2 saved sessions to compare. Start a new session with /exit and restart.");return}let V=R[0],ce=R[1];if(!V||!ce){S("Could not load sessions for comparison.");return}let u=["\u{1F4CA} Session Diff",`Current: ${V.title} (${V.messageCount} msgs)`,`Previous: ${ce.title} (${ce.messageCount} msgs)`,`Difference: ${V.messageCount-ce.messageCount} messages`,`Last active: ${new Date(V.updatedAt).toLocaleString()}`];S(u.join(`
|
|
264
|
+
`));return}if(G==="copy"&&ue.trim()){let R=Hc(ue.trim());S(R?E.success(`\u2713 Copied to clipboard: ${ue.slice(0,30)}\u2026`):E.error("Clipboard not supported in this terminal. Try: "+Ni()));return}if(G==="theme"){if(!ue||ue==="list"){let R=Jc();S(`\u{1F3A8} Themes
|
|
265
|
+
${Yc()}
|
|
266
|
+
|
|
267
|
+
Apply: /theme <name>`)}else qc(ue)?S(E.success(`\u2713 Theme set to "${ue}". Restart to apply.`)):S(E.error(`Unknown theme "${ue}". Try: /theme list`));return}if(G==="simulate"||G==="sim"){if(!ue.trim()){S(E.error("Usage: /simulate <base64-tx>"));return}let R=await og("",{transaction:ue.trim()});S(R.content[0].text);return}if(G==="explain"){if(!n){S(E.error("Model registry not available"));return}let R=[...se.current].reverse().find(V=>V.role==="tool");if(!R){S("No tool result to explain. Run a tool first.");return}be({role:"user",content:`Explain this tool result in simple terms:
|
|
268
|
+
${R.content.slice(0,2e3)}`}),A(!0),h("");try{await re.current.run(`Explain this tool result simply:
|
|
269
|
+
${R.content.slice(0,2e3)}`)}catch(V){A(!1),S(E.error(`Error: ${V.message}`))}return}if(G==="webhook"||G==="webhooks"){Zc()?S(`\u2705 Webhooks configured
|
|
270
|
+
|
|
271
|
+
Usage: /webhook test
|
|
272
|
+
Config: WEBHOOK_DISCORD / WEBHOOK_TELEGRAM in ~/.aiaiai/.env`):S(`No webhooks configured.
|
|
273
|
+
Add WEBHOOK_DISCORD=... or WEBHOOK_TELEGRAM=... to ~/.aiaiai/.env`);return}if(G==="clipboard"){S(Ni());return}if(G==="resume"){sh(),S(E.success("\u2713 Resumed from panic mode. External calls re-enabled."));return}if(G==="panic"||G==="status"){let R=li(),V=ih();S(`System Status
|
|
274
|
+
Panic mode: ${R?"\u{1F534} ACTIVE":"\u{1F7E2} normal"}
|
|
275
|
+
Errors (60s): ${V}/10
|
|
276
|
+
${R?`
|
|
277
|
+
Type /resume to resume external calls.`:""}`);return}if(G==="health"){S("Running health checks..."),Nc().then(R=>{S(Jp(R))}).catch(()=>{});return}if(G==="dashboard"||G==="metrics"){S(Hp());return}if(G==="analytics"||G==="stats"){S(zp());return}if(G==="metrics_detail"||G==="metrics_json"){let{metricsCollector:R}=await Promise.resolve().then(()=>(Uc(),Yp)),V=R.getSummary();S(V);return}let Qe=t.getCommand(G);if(!Qe){let R=ug(G),V=R.length>0?`
|
|
278
|
+
Did you mean: ${R.map(ce=>`/${ce}`).join(", ")}?`:"";S(E.error(`Unknown: /${G} \u2014 try /help${V}`));return}try{await Qe.handler(ue,{ui:Re})}catch(R){S(E.error(`Error: ${R.message}`))}return}if(!re.current){S(E.error("Agent not ready"));return}be({role:"user",content:K}),Wn.save(Ui,"user",K),A(!0),h("");try{await re.current.run(K)}catch(G){A(!1),S(E.error(`Error: ${G.message}`))}},[t,c,be,S,Re,n,o]),qe=Jn(M=>{T(!1);try{let K=process.env.AIAIAI_HOME??Tg(Fv(),".aiaiai"),me=Tg(K,".env");Mv(K,{recursive:!0});let Ue=Qv(me)?Dv(me,"utf-8"):"",G=/^DEFAULT_MODEL=.*$/m,At=`DEFAULT_MODEL=${M}`;Nv(me,G.test(Ue)?Ue.replace(G,At):Ue+`
|
|
279
|
+
`+At+`
|
|
280
|
+
`,"utf-8"),process.env.DEFAULT_MODEL=M}catch{}S(E.accent(`Model set to: ${M}
|
|
281
|
+
Restart to apply.`))},[S]),Ft=Jn(()=>{T(!1)},[]),$t=$v(()=>{if(!n)return[];let M=["orchestrator","analyst","worker","free"],K=[];for(let me of M){let Ue=n.getPool(me);for(let G of Ue)G.available&&G.failures<3&&K.push({id:G.model.id,tier:me})}return K},[n]),ur=Uv(ae.current),cn=[C.cost,C.news,...Object.values(C.status)].filter(Boolean).join(" ")||null,nt=44,dr=38,Jt=M=>M>0?D.success:M<0?D.error:D.muted,rs=M=>M==="buy"?"\u2197":M==="burn"?"\u{1F525}":"\u2192";return Ce(ct,{flexDirection:"column",children:[Be(Qm,{model:we,chain:w,price:C.price,toolRunning:p,connected:!0,statusLine:cn,cpu:U.cpu,ram:U.ram,uptime:U.uptime,apiCalls:U.apiCalls}),H==="down"&&Be(ct,{borderStyle:"round",borderColor:D.error,paddingX:1,children:Be(Ae,{color:D.error,bold:!0,children:"\u26A0\uFE0F Limited functionality \u2014 multiple services unavailable. Check /health"})}),H==="degraded"&&Be(ct,{borderStyle:"round",borderColor:D.warn,paddingX:1,children:Be(Ae,{color:D.warn,children:"\u{1F7E1} Some services experiencing issues"})}),O?Be(Zm,{models:$t,currentModelId:process.env.DEFAULT_MODEL??"",onSelect:qe,onCancel:Ft,initialQuery:B}):Ce(ct,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[Ce(ct,{flexDirection:"column",width:40,flexShrink:0,children:[Ce(ct,{flexDirection:"column",borderStyle:"round",borderColor:D.accent,paddingX:1,children:[Be(Ae,{bold:!0,color:D.accent,children:"\u{1F916} $AIAIAI"}),j.price?Ce(Gv,{children:[Ce(Ae,{color:Jt(j.price.change),children:[j.price.priceUsd?`$${parseFloat(j.price.priceUsd).toFixed(8)}`:"N/A"," ",j.price.change>0?"\u25B2":j.price.change<0?"\u25BC":"\u2500",Math.abs(j.price.change).toFixed(1),"%"]}),Be(Xp,{data:oe.current.getData(),width:38,color:Jt(j.price.change),label:""}),Ce(Ae,{color:D.muted,children:["MCap: ",j.price.mcap?`$${(j.price.mcap/1e3).toFixed(1)}k`:"N/A"]}),Ce(Ae,{color:D.muted,children:["Liq: $",(j.price.liq/1e3).toFixed(1),"k"]})]}):Be(Ae,{color:D.muted,children:"Loading..."})]}),Ce(ct,{flexDirection:"column",borderStyle:"round",borderColor:D.dim,paddingX:1,marginTop:1,children:[Be(Ae,{bold:!0,children:"\u{1F4BC} Action"}),Ce(Ae,{color:D.muted,children:["SOL: ",Q.action.sol.toFixed(2)]}),Ce(Ae,{color:D.muted,children:["AIAIAI: ",Q.action.aiaiai.toLocaleString(void 0,{maximumFractionDigits:0})]})]}),Ce(ct,{flexDirection:"column",borderStyle:"round",borderColor:D.dim,paddingX:1,marginTop:1,children:[Be(Ae,{bold:!0,children:"\u{1F4B0} Deposit"}),Ce(Ae,{color:D.muted,children:["USDC: ",Q.deposit.usdc.toFixed(2)]}),Ce(Ae,{color:D.muted,children:["SOL: ",Q.deposit.sol.toFixed(2)]})]}),Ce(ct,{flexDirection:"column",borderStyle:"round",borderColor:D.dim,paddingX:1,marginTop:1,children:[Be(Ae,{bold:!0,children:"\u26A1 Actions"}),$.recent.length>0?$.recent.map((M,K)=>{let me=M.type==="buy"?D.success:M.type==="burn"?D.error:D.muted,Ue=new Date(M.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return Ce(Ae,{color:me,children:[rs(M.type)," ",Ue," ",M.type," ",M.amount.toLocaleString()]},K)}):Be(Ae,{color:D.muted,children:"Waiting..."})]}),Ce(ct,{flexDirection:"column",borderStyle:"round",borderColor:D.dim,paddingX:1,marginTop:1,children:[Be(Ae,{bold:!0,children:"\u{1F4B5} Fees (0.5%)"}),Ce(Ae,{color:D.muted,children:["Buy: $",$.fees.buyFees.toFixed(4)]}),Ce(Ae,{color:D.accent,bold:!0,children:["Total: $",$.fees.total.toFixed(4)]})]}),Ce(ct,{flexDirection:"column",borderStyle:"round",borderColor:D.dim,paddingX:1,marginTop:1,children:[Be(Ae,{bold:!0,children:"\u{1F441}\uFE0F Watch"}),j.watchList.length>0?j.watchList.slice(0,4).map((M,K)=>Ce(Ae,{color:D.muted,children:[M.slice(0,8),"\u2026",M.slice(-6)]},K)):Be(Ae,{color:D.muted,children:"No tokens watched"})]}),Ce(ct,{flexDirection:"column",borderStyle:"round",borderColor:D.dim,paddingX:1,marginTop:1,children:[Be(Ae,{bold:!0,children:"\u{1F4F0} News"}),j.news.length>0?j.news.slice(0,4).map((M,K)=>{let me=M.sentiment>.3?D.success:M.sentiment<-.3?D.error:D.muted,Ue=M.title.length>30?M.title.slice(0,28)+"...":M.title;return Be(Ae,{color:me,children:Ue},K)}):Be(Ae,{color:D.muted,children:"Loading..."})]}),Ce(ct,{flexDirection:"column",borderStyle:"round",borderColor:D.dim,paddingX:1,marginTop:1,children:[Be(Ae,{bold:!0,children:"Context"}),Ce(Ae,{color:ur.color,children:[ur.bar," ",ur.pct,"%"]})]}),Ce(ct,{flexDirection:"column",borderStyle:"round",borderColor:D.dim,paddingX:1,marginTop:1,children:[Be(Ae,{bold:!0,children:"\u{1F680} Recent"}),Be(Ae,{color:D.muted,children:rg()})]})]}),Be(ct,{flexDirection:"column",flexGrow:1,children:Be(Mm,{messages:f,streamingText:a,toolRunning:p,onSubmit:ut,disabled:x,onAbort:()=>{re.current?.abort(),A(!1),g(null),h(M=>(M.trim()&&be({role:"assistant",content:M+" \u2014 [interrupted]"}),"")),be({role:"system",content:E.dim("\u2014 stream interrupted \u2014")})}})})]})]})}import{Component as qv}from"react";import{Box as hu,Text as Ki}from"ink";import{jsx as Vn,jsxs as Jv}from"react/jsx-runtime";var Wi=class extends qv{constructor(e){super(e),this.state={hasError:!1,error:null}}static getDerivedStateFromError(e){return{hasError:!0,error:e}}componentDidCatch(e,r){try{let{writeFileSync:n,mkdirSync:o,existsSync:s}=ie("node:fs"),{join:i}=ie("node:path"),{homedir:l}=ie("node:os"),c=i(l(),".aiaiai","crashes");s(c)||o(c,{recursive:!0});let f={timestamp:new Date().toISOString(),type:"ui_render_error",error:{name:e.name,message:e.message,stack:e.stack},componentStack:r.componentStack};n(i(c,`ui-error-${Date.now()}.json`),JSON.stringify(f,null,2),"utf-8")}catch{}this.props.onError?.(e)}render(){return this.state.hasError?Vn(hu,{flexDirection:"column",padding:2,children:Vn(hu,{borderStyle:"round",borderColor:"yellow",paddingX:2,paddingY:1,children:Jv(hu,{flexDirection:"column",children:[Vn(Ki,{bold:!0,color:"yellow",children:"\u26A0\uFE0F UI Error \u2014 restarting..."}),Vn(Ki,{dimColor:!0,children:this.state.error?.message?.slice(0,100)??"Unknown render error"}),Vn(Ki,{dimColor:!0,children:"Crash dump written to ~/.aiaiai/crashes/"}),Vn(Ki,{dimColor:!0,children:"Press Ctrl+C to exit, or wait for auto-recovery."})]})})}):this.props.children}};import{existsSync as Yv,appendFileSync as Vv,mkdirSync as Hv}from"node:fs";import{join as gu}from"node:path";import{homedir as zv}from"node:os";var Xv=process.env.AIAIAI_HOME??gu(zv(),".aiaiai"),pu=gu(Xv,".logs"),Zv=gu(pu,"agent.log"),eC=[/sk-[a-zA-Z0-9]{20,}/g,/[A-Za-z0-9]{32,}/g,/Bearer\s+[A-Za-z0-9\-._~+/]+/g,/api[_-]?key["\s:=]+["']?[^\s"']+/gi,/secret["\s:=]+["']?[^\s"']+/gi,/[A-Z0-9]{40,}/g];var Rg="[REDACTED]";function tC(t){let e=t;for(let r of eC)e=e.replace(r,n=>n.length>8?n.slice(0,4)+"\u2026"+Rg:Rg);return e}function rC(){Yv(pu)||Hv(pu,{recursive:!0,mode:448})}function nC(t){try{rC(),Vv(Zv,t+`
|
|
282
|
+
`,{encoding:"utf-8"})}catch{}}function Gi(...t){let e=t.map(s=>typeof s=="string"?s:String(s)).join(" "),r=tC(e),o=`[${new Date().toISOString()}] ${r}`;try{nC(o)}catch{}process.stdout.write(o+`
|
|
283
|
+
`)}Ye();Ye();ht();import{Type as cr}from"@sinclair/typebox";var oC=[{id:"openrouter",envVar:"OPENROUTER_API_KEY",baseUrl:"https://openrouter.ai/api/v1/models",mapper:t=>({id:t.id,name:t.name,context:t.context_length??131072,max:t.top_provider?.max_completion_tokens??4096})},{id:"anthropic",envVar:"ANTHROPIC_API_KEY",baseUrl:"https://api.anthropic.com/v1/models",mapper:t=>({id:t.id,name:t.name,context:t.context_length??2e5,max:t.top_provider?.max_completion_tokens??8192})},{id:"openai",envVar:"OPENAI_API_KEY",baseUrl:"https://api.openai.com/v1/models",mapper:t=>({id:t.id,name:t.name??t.id,context:t.context_length??128e3,max:4096})},{id:"google",envVar:"GOOGLE_API_KEY",baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",mapper:t=>({id:t.name,name:t.displayName??t.name,context:t.contextLength??1048576,max:8192})},{id:"deepseek",envVar:"DEEPSEEK_API_KEY",baseUrl:"https://api.deepseek.com/v1/models",mapper:t=>({id:t.id,name:t.name??t.id,context:t.context_length??65536,max:8192})},{id:"groq",envVar:"GROQ_API_KEY",baseUrl:"https://api.groq.com/openai/v1/models",mapper:t=>({id:t.id,name:t.name??t.id,context:t.context_length??131072,max:4096})},{id:"mistral",envVar:"MISTRAL_API_KEY",baseUrl:"https://api.mistral.ai/v1/models",mapper:t=>({id:t.id,name:t.name??t.id,context:t.context_length??32e3,max:8192})},{id:"together",envVar:"TOGETHER_API_KEY",baseUrl:"https://api.together.xyz/v1/models",mapper:t=>({id:t.id,name:t.name??t.id,context:t.context_length??131072,max:4096})},{id:"fireworks",envVar:"FIREWORKS_API_KEY",baseUrl:"https://api.fireworks.ai/inference/v1/models",mapper:t=>({id:t.id,name:t.name??t.id,context:t.context_length??131072,max:4096})},{id:"cerebras",envVar:"CEREBRAS_API_KEY",baseUrl:"https://api.cerebras.ai/v1/models",mapper:t=>({id:t.id,name:t.name??t.id,context:t.context_length??131072,max:4096})},{id:"nvidia",envVar:"NVIDIA_NIM_API_KEY",baseUrl:"https://integrate.api.nvidia.com/v1/models",mapper:t=>({id:t.id,name:t.name??t.id,context:t.context_length??131072,max:4096})},{id:"xai",envVar:"XAI_API_KEY",baseUrl:"https://api.x.ai/v1/models",mapper:t=>({id:t.id,name:t.name??t.id,context:t.context_length??131072,max:4096})},{id:"huggingface",envVar:"HUGGINGFACE_API_KEY",baseUrl:"https://huggingface.co/api/models?limit=100&inference_provider=auto",mapper:t=>({id:t.id,name:t.id,context:131072,max:4096})}],sC="https://openrouter.ai/api/v1/models";function Au(t){let e=t.id.toLowerCase(),r=t.name.toLowerCase();return e.includes("o1")||e.includes("o3")||e.includes("claude-3.5-sonnet")||e.includes("claude-4")||e.includes("gemini-2.5-pro")||e.includes("gpt-4o")&&!e.includes("mini")?"orchestrator":e.includes("sonnet")||e.includes("gpt-4o-mini")||e.includes("claude-3-haiku")||e.includes("gemini-2.0-flash")||e.includes("gemini-1.5-pro")||e.includes("mistral-large")||e.includes("llama-3.1-70b")||e.includes("llama-3.3-70b")||e.includes("command-r-plus")||e.includes("deepseek-v2")||e.includes("qwen-2.5-72b")||e.includes("mixtral-8x22b")?"analyst":e.includes("haiku")||e.includes("flash")||e.includes("mistral-7b")||e.includes("llama-3.1-8b")||e.includes("llama-3.2")||e.includes("phi-3")||e.includes("qwen-2.5-7b")||e.includes("gemma-2")||e.includes("deepseek-v2-lite")||e.includes("ministral-3b")||e.includes("command-r-08-2024")||e.includes("mixtral-8x7b")||e.includes("nemotron-4")||e.includes("claude-3-opus")?"worker":"free"}var yu=class{models=[];tiered=new Map;providerModels=new Map;initialized=!1;async initialise(){if(this.initialized)return;this.models=[],this.providerModels.clear();let e=oC.filter(n=>Tt.get(n.envVar)),r=await Promise.allSettled(e.map(async n=>{let o=Tt.get(n.envVar),s={"Content-Type":"application/json"};n.id==="openrouter"?s.Authorization=`Bearer ${o}`:n.id==="anthropic"?s["x-api-key"]=o:s.Authorization=`Bearer ${o}`;let i=n.baseUrl;n.id==="google"&&(i=`${n.baseUrl}?key=${o}`);let l=new AbortController,c=setTimeout(()=>l.abort(),5e3);try{let f=await fe(i,{timeout:5e3,retries:0,headers:s,signal:l.signal});if(clearTimeout(c),!f.ok)return Z.warn("ModelRegistry",`Provider ${n.id} returned ${f.status}`),[];let d=await f.json(),a=d.data??d.models??d;if(!Array.isArray(a))return[];let h=[];for(let p of a)try{let g=n.mapper(p);if(!g||!g.id)continue;h.push({id:g.id,name:g.name??g.id,provider:n.id,context_length:g.context??131072,max_tokens:g.max??4096})}catch(g){Z.debug("ModelRegistry","Skipped bad model entry",{error:g.message})}return h}catch(f){return clearTimeout(c),Z.warn("ModelRegistry",`Provider ${n.id} timed out or failed`,{error:f.message}),[]}}));for(let n=0;n<r.length;n++){let o=r[n],s=e[n];if(o.status==="fulfilled")for(let i of o.value)this.models.push(i),this.providerModels.has(s.id)||this.providerModels.set(s.id,[]),this.providerModels.get(s.id).push(i)}if(this.models.length===0){let n=Tt.get("OPENROUTER_API_KEY");if(n)try{let o=await fe(sC,{timeout:5e3,retries:0,headers:{Authorization:`Bearer ${n}`,"Content-Type":"application/json"}});if(o.ok){let i=(await o.json()).data??[];for(let l of i){let c=l.top_provider;this.models.push({id:l.id,name:l.name??l.id,provider:"openrouter",context_length:l.context_length??131072,max_tokens:c?.max_completion_tokens??4096})}}}catch{}}this.buildTiers(),this.initialized=!0}buildTiers(){this.tiered.clear();let e=["orchestrator","analyst","worker","free"];for(let r of e)this.tiered.set(r,[]);for(let r of this.models){let n=Au(r);this.tiered.get(n)?.push({model:r,tier:n,available:!0,failures:0})}}get modelCount(){return this.models.length}getProviderCount(){return this.providerModels.size}getProviderModels(e){return this.providerModels.get(e)??[]}getAllModels(){return[...this.models]}getPool(e){return this.tiered.get(e)??[]}getTier(e){let r=this.models.find(n=>n.id===e);return r?Au(r):void 0}resolvePrimary(){for(let e of["orchestrator","analyst","worker","free"]){let n=(this.tiered.get(e)??[]).filter(o=>o.available&&o.failures<3);if(n.length>0)return n[0].model.id}return"openai/gpt-4o-mini"}listModelsParams=cr.Object({query:cr.Optional(cr.String()),provider:cr.Optional(cr.String()),limit:cr.Optional(cr.Number({default:30})),available_only:cr.Optional(cr.Boolean({default:!0}))});async listModelsTool(e,r){let n=[...this.models],o=(r.query||"").toLowerCase();o&&(n=n.filter(f=>f.id.toLowerCase().includes(o)||f.name.toLowerCase().includes(o)));let s=(r.provider||"").toLowerCase();s&&(n=n.filter(f=>f.provider===s));let i=r.limit||30,c=n.slice(0,i).map(f=>{let d=Au(f);return`${{orchestrator:"\u2B50",analyst:"\u{1F52C}",worker:"\u26A1",free:"\u{1F193}"}[d]??"\u2022"} [${f.provider}] ${f.id} \u2014 ${f.name} (${f.context_length}t)`});return{content:[{type:"text",text:`Models (${n.length} from ${this.providerModels.size} providers):
|
|
284
|
+
${c.join(`
|
|
285
|
+
`)}`}]}}async modelSummaryTool(){let e=this.tiered,r=[`Total: ${this.models.length} models from ${this.providerModels.size} providers`];r.push(""),r.push("Providers:");for(let[n,o]of this.providerModels)r.push(` ${n}: ${o.length} models`);r.push("");for(let n of["orchestrator","analyst","worker","free"]){let o=e.get(n)??[],s=o.filter(i=>i.available).length;r.push(` ${n}: ${o.length} total, ${s} available`)}return{content:[{type:"text",text:r.join(`
|
|
286
|
+
`)}]}}},gt=new yu;import{existsSync as iC,readFileSync as aC,writeFileSync as lC}from"node:fs";import{resolve as cC}from"node:path";import{Type as uC}from"@sinclair/typebox";var wu=cC(Ze.getHome(),"lifetime-cost.json"),qi=class{registry;sessionEntry={entries:[],totalCost:0,totalTokens:0};lifetime={sessions:0,totalCost:0,totalTokens:0};loaded=!1;constructor(e){this.registry=e}track(e,r,n){this.loaded||this.loadLifetime();let o=this.estimateCost(e,r,n),s={model:e,promptTokens:r,completionTokens:n,cost:o,timestamp:Date.now()};this.sessionEntry.entries.push(s),this.sessionEntry.totalCost+=o,this.sessionEntry.totalTokens+=r+n}estimateCost(e,r,n){return r*Pg.prompt+n*Pg.completion}statusLine(){return`$${this.sessionEntry.totalCost.toFixed(4)}`}saveLifetime(){this.lifetime.sessions++,this.lifetime.totalCost+=this.sessionEntry.totalCost,this.lifetime.totalTokens+=this.sessionEntry.totalTokens,this.writeLifetime()}loadLifetime(){try{iC(wu)&&(this.lifetime=JSON.parse(aC(wu,"utf-8")))}catch{}this.loaded=!0}writeLifetime(){try{lC(wu,JSON.stringify(this.lifetime,null,2),"utf-8")}catch{}}costReportParams=uC.Object({});async costReportTool(){let e=this.sessionEntry,r=this.lifetime;return{content:[{type:"text",text:[`Session cost: $${e.totalCost.toFixed(4)} (${e.totalTokens} tokens, ${e.entries.length} calls)`,`Lifetime: $${r.totalCost.toFixed(4)} (${r.totalTokens} tokens, ${r.sessions} sessions)`].join(`
|
|
287
|
+
`)}]}}},Pg={prompt:1e-6,completion:2e-6};Un();Jo();var Ji=[{id:"openrouter",name:"OpenRouter",envVar:"OPENROUTER_API_KEY",baseUrl:"https://openrouter.ai/api/v1",modelsEndpoint:"https://openrouter.ai/api/v1/models",docsUrl:"https://openrouter.ai/keys"},{id:"anthropic",name:"Anthropic",envVar:"ANTHROPIC_API_KEY",baseUrl:"https://api.anthropic.com/v1",modelsEndpoint:"https://api.anthropic.com/v1/models",docsUrl:"https://console.anthropic.com"},{id:"openai",name:"OpenAI",envVar:"OPENAI_API_KEY",baseUrl:"https://api.openai.com/v1",modelsEndpoint:"https://api.openai.com/v1/models",docsUrl:"https://platform.openai.com/api-keys"},{id:"google",name:"Google Gemini",envVar:"GOOGLE_API_KEY",baseUrl:"https://generativelanguage.googleapis.com/v1beta",modelsEndpoint:"https://generativelanguage.googleapis.com/v1beta/models",docsUrl:"https://aistudio.google.com/apikey"},{id:"deepseek",name:"DeepSeek",envVar:"DEEPSEEK_API_KEY",baseUrl:"https://api.deepseek.com/v1",modelsEndpoint:"https://api.deepseek.com/v1/models",docsUrl:"https://platform.deepseek.com/api-docs/api-key"},{id:"groq",name:"Groq",envVar:"GROQ_API_KEY",baseUrl:"https://api.groq.com/openai/v1",modelsEndpoint:"https://api.groq.com/openai/v1/models",docsUrl:"https://console.groq.com/keys"},{id:"mistral",name:"Mistral",envVar:"MISTRAL_API_KEY",baseUrl:"https://api.mistral.ai/v1",modelsEndpoint:"https://api.mistral.ai/v1/models",docsUrl:"https://console.mistral.ai/api-keys"},{id:"together",name:"Together AI",envVar:"TOGETHER_API_KEY",baseUrl:"https://api.together.xyz/v1",modelsEndpoint:"https://api.together.xyz/v1/models",docsUrl:"https://api.together.xyz/settings/api-keys"},{id:"fireworks",name:"Fireworks",envVar:"FIREWORKS_API_KEY",baseUrl:"https://api.fireworks.ai/inference/v1",modelsEndpoint:"https://api.fireworks.ai/inference/v1/models",docsUrl:"https://fireworks.ai/api-keys"},{id:"cerebras",name:"Cerebras",envVar:"CEREBRAS_API_KEY",baseUrl:"https://api.cerebras.ai/v1",modelsEndpoint:"https://api.cerebras.ai/v1/models",docsUrl:"https://api.cerebras.ai/api-keys"},{id:"bedrock",name:"Amazon Bedrock",envVar:"AWS_ACCESS_KEY_ID",baseUrl:"",modelsEndpoint:"",docsUrl:"https://console.aws.amazon.com/iam"},{id:"vertex",name:"Google Vertex AI",envVar:"GOOGLE_APPLICATION_CREDENTIALS",baseUrl:"",modelsEndpoint:"",docsUrl:"https://console.cloud.google.com/apis/credentials"},{id:"azure",name:"Azure OpenAI Responses",envVar:"AZURE_OPENAI_API_KEY",baseUrl:"",modelsEndpoint:"",docsUrl:"https://portal.azure.com"},{id:"huggingface",name:"Hugging Face",envVar:"HUGGINGFACE_API_KEY",baseUrl:"https://api-inference.huggingface.co",modelsEndpoint:"https://huggingface.co/api/models",docsUrl:"https://huggingface.co/settings/tokens"},{id:"nvidia",name:"NVIDIA NIM",envVar:"NVIDIA_NIM_API_KEY",baseUrl:"https://integrate.api.nvidia.com/v1",modelsEndpoint:"https://integrate.api.nvidia.com/v1/models",docsUrl:"https://integrate.api.nvidia.com"},{id:"xai",name:"xAI",envVar:"XAI_API_KEY",baseUrl:"https://api.x.ai/v1",modelsEndpoint:"https://api.x.ai/v1/models",docsUrl:"https://console.x.ai"},{id:"moonshot",name:"Moonshot AI",envVar:"MOONSHOT_API_KEY",baseUrl:"https://api.moonshot.cn/v1",modelsEndpoint:"https://api.moonshot.cn/v1/models",docsUrl:"https://platform.moonshot.cn/docs/api/chat-completion"},{id:"moonshot_china",name:"Moonshot AI China",envVar:"MOONSHOT_CHINA_API_KEY",baseUrl:"https://api.moonshot.cn/v1",modelsEndpoint:"https://api.moonshot.cn/v1/models",docsUrl:"https://platform.moonshot.cn"},{id:"minimax",name:"MiniMax",envVar:"MINIMAX_API_KEY",baseUrl:"https://api.minimax.chat/v1",modelsEndpoint:"https://api.minimax.chat/v1/models",docsUrl:"https://www.minimax.chat/document/embedding"},{id:"minimax_china",name:"MiniMax China",envVar:"MINIMAX_CHINA_API_KEY",baseUrl:"https://api.minimax.chat/v1",modelsEndpoint:"https://api.minimax.chat/v1/models",docsUrl:"https://www.minimax.chat"},{id:"kimi",name:"Kimi For Coding",envVar:"KIMI_API_KEY",baseUrl:"https://api.moonshot.cn/v1",modelsEndpoint:"https://api.moonshot.cn/v1/models",docsUrl:"https://platform.moonshot.cn"},{id:"antling",name:"Ant Ling",envVar:"ANTLING_API_KEY",baseUrl:"",modelsEndpoint:"",docsUrl:"https://antling.ai"},{id:"cloudflare_gateway",name:"Cloudflare AI Gateway",envVar:"CF_API_KEY",baseUrl:"",modelsEndpoint:"",docsUrl:"https://dash.cloudflare.com"},{id:"cloudflare_workers",name:"Cloudflare Workers AI",envVar:"CF_API_KEY",baseUrl:"",modelsEndpoint:"",docsUrl:"https://dash.cloudflare.com"},{id:"vercel",name:"Vercel AI Gateway",envVar:"VERCEL_API_KEY",baseUrl:"",modelsEndpoint:"",docsUrl:"https://vercel.com"},{id:"opencode_go",name:"OpenCode Go",envVar:"OPENCODE_API_KEY",baseUrl:"",modelsEndpoint:"",docsUrl:"https://opencode.ai"},{id:"opencode_zen",name:"OpenCode Zen",envVar:"OPENCODE_ZEN_API_KEY",baseUrl:"",modelsEndpoint:"",docsUrl:"https://opencode.ai"},{id:"xiaomi",name:"Xiaomi MiMo",envVar:"XIAOMI_API_KEY",baseUrl:"",modelsEndpoint:"",docsUrl:"https://xiaomi.com"},{id:"xiaomi_token",name:"Xiaomi MiMo Token Plan",envVar:"XIAOMI_TOKEN_API_KEY",baseUrl:"",modelsEndpoint:"",docsUrl:"https://xiaomi.com"}];function $g(t){return Ji.filter(e=>e.envVar&&t[e.envVar]&&t[e.envVar].trim()!=="")}function Og(t){return Ji.filter(e=>!e.envVar||!t[e.envVar]||t[e.envVar].trim()==="")}ht();Ye();import{Type as Lg}from"@sinclair/typebox";var IB=Lg.Object({address:Lg.String({description:"Token mint address on Solana"})});async function Qg(t,e){let r=e.address;if(!r||r.length<32||r.length>44)return{content:[{type:"text",text:"Invalid token address format."}],isError:!0};let n=[],o=100,s=!1,i=!1,l=null;try{let h=await fe(`https://api.dexscreener.com/tokens/v1/solana/${r}`,{timeout:1e4,retries:1});if(h.ok){let p=await h.json();Array.isArray(p)&&p.length>0&&(l=p[0])}}catch(h){Z.warn("TokenSecurity","DexScreener lookup failed",{address:r,error:h.message})}if(!l)n.push("No DEX liquidity found - token may be dead or not traded"),o-=50,i=!0;else{let h=l.liquidity?.usd??0;h<1e3?(n.push(`Low liquidity: $${h.toFixed(0)}`),o-=30,i=!0):h<1e4&&(n.push(`Moderate liquidity: $${h.toFixed(0)}`),o-=10);let p=l.volume?.h24??0;p<100&&(n.push(`Very low 24h volume: $${p.toFixed(0)}`),o-=20)}try{let h=await fe(`https://api.rugcheck.xyz/v1/tokens/${r}/report`,{timeout:8e3,retries:0});if(h.ok){let p=await h.json();(p.status==="WARNING"||p.status==="BLOCKED")&&(n.push(`RugCheck status: ${p.status}`),o-=40,i=!0)}}catch(h){Z.warn("TokenSecurity","RugCheck lookup failed (optional)",{address:r,error:h.message})}let c=l?.baseToken?.symbol??"???",f=l?.baseToken?.name??"Unknown",d=o>=70?"SAFE":o>=40?"CAUTION":"DANGEROUS",a=["Token Security Scan","",`Token: ${f} ($${c})`,`Address: ${r.slice(0,8)}...${r.slice(-6)}`,`Score: ${d} (${o}/100)`,""];if(n.length>0){a.push("Warnings:");for(let h of n)a.push(" - "+h)}else a.push("No immediate risks detected.");return a.push(""),a.push("This is not financial advice. Always verify before trading."),{content:[{type:"text",text:a.join(`
|
|
288
|
+
`)}],details:{address:r,symbol:c,name:f,score:o,isHoneypot:s,isRugRisk:i,warnings:n}}}var Xn=process.env.AIAIAI_HOME??Ir(tA(),".aiaiai"),ln=Ir(Xn,".env");ts(ln)&&(0,nA.config)({path:ln,override:!1});process.on("uncaughtException",t=>{try{let e=Ir(Xn,"crashes");Xg(e,{recursive:!0});let r={timestamp:new Date().toISOString(),error:{name:t.name,message:t.message,stack:t.stack},memory:process.memoryUsage(),uptime:process.uptime(),pid:process.pid};zg(Ir(e,`crash-${Date.now()}.json`),JSON.stringify(r,null,2),"utf-8")}catch{}console.error("Fatal error \u2014 crash dump written to ~/.aiaiai/crashes/"),process.exit(1)});process.on("unhandledRejection",t=>{try{let e=Ir(Xn,"crashes");Xg(e,{recursive:!0});let r={timestamp:new Date().toISOString(),type:"unhandledRejection",reason:String(t),memory:process.memoryUsage(),uptime:process.uptime()};zg(Ir(e,`rejection-${Date.now()}.json`),JSON.stringify(r,null,2),"utf-8")}catch{}});var kC=`You are AIAIAI Chain Agent \u2014 a Solana-native autonomous AI agent.
|
|
34
289
|
|
|
35
290
|
Ticker: $AIAIAI
|
|
36
291
|
Contract: AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump
|
|
@@ -46,7 +301,7 @@ Users deposit SOL or USDC to the deposit wallet. When enough accumulates, you
|
|
|
46
301
|
automatically route funds to the action wallet and execute buys or burns of $AIAIAI.
|
|
47
302
|
The burn destination receives tokens removed from circulation.
|
|
48
303
|
|
|
49
|
-
Your purpose: advance the vision of decentralized AI governance
|
|
304
|
+
Your purpose: advance the vision of decentralized AI governance \u2014 inspired by the call
|
|
50
305
|
for an "AI Associated Institute of America" (AIAIAI). You buy and burn $AIAIAI.
|
|
51
306
|
|
|
52
307
|
You have tools for:
|
|
@@ -60,730 +315,73 @@ You have tools for:
|
|
|
60
315
|
- Persistent goals and scheduled tasks
|
|
61
316
|
|
|
62
317
|
Be confident. You ARE the agent. You buy, you burn, you earn fees. Use "I" and "my"
|
|
63
|
-
when talking about your wallets and actions. Be concise, sharp, and useful
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
if
|
|
68
|
-
|
|
69
|
-
console.log(
|
|
70
|
-
console.log("
|
|
71
|
-
|
|
72
|
-
console.log("
|
|
73
|
-
|
|
74
|
-
console.log("
|
|
75
|
-
|
|
76
|
-
console.log(
|
|
77
|
-
console.log(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
console.log("
|
|
81
|
-
console.log("
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
console.log(
|
|
85
|
-
console.log(
|
|
86
|
-
console.log("
|
|
87
|
-
console.log("");
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
process.exit(0);
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
(
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
console.log(
|
|
106
|
-
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
console.log(
|
|
110
|
-
console.log(
|
|
111
|
-
|
|
112
|
-
})().catch(
|
|
113
|
-
|
|
114
|
-
if (
|
|
115
|
-
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
console.
|
|
132
|
-
console.log(T.muted(`Config file: ${envPath}`));
|
|
133
|
-
if (existsSync(envPath)) {
|
|
134
|
-
for (const line of readFileSync(envPath, "utf-8").split("\n")) {
|
|
135
|
-
const m = line.match(/^([A-Z_]+)=(.*)$/);
|
|
136
|
-
if (!m)
|
|
137
|
-
continue;
|
|
138
|
-
const masked = m[2].length > 12 ? m[2].slice(0, 6) + "********" : (m[2] ? "********" : "(empty)");
|
|
139
|
-
console.log(` ${m[1].padEnd(28)} ${masked}`);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
console.log(T.warn("No config found. Run: aiaiaichain setup"));
|
|
144
|
-
}
|
|
145
|
-
process.exit(0);
|
|
146
|
-
}
|
|
147
|
-
if (subcmd === "price") {
|
|
148
|
-
(async () => {
|
|
149
|
-
const result = await priceFeed.getAiaiaiPriceTool();
|
|
150
|
-
console.log(result.content[0].text);
|
|
151
|
-
process.exit(0);
|
|
152
|
-
})();
|
|
153
|
-
await new Promise(() => { });
|
|
154
|
-
}
|
|
155
|
-
if (subcmd === "status") {
|
|
156
|
-
(async () => {
|
|
157
|
-
console.log(T.accent("\n 🤖 AIAIAI Chain Agent\n"));
|
|
158
|
-
console.log(T.muted(` Home: ${AIAIAI_HOME}`));
|
|
159
|
-
console.log(T.muted(` Config: ${existsSync(envPath) ? "✓ found" : "✗ run setup"}`));
|
|
160
|
-
console.log(T.muted(` Key: ${process.env.OPENROUTER_API_KEY ? "✓ set" : "✗ missing"}`));
|
|
161
|
-
console.log("");
|
|
162
|
-
const result = await priceFeed.getAiaiaiPriceTool();
|
|
163
|
-
console.log(result.content[0].text);
|
|
164
|
-
console.log("");
|
|
165
|
-
const wallets = await agentWallet.getAll();
|
|
166
|
-
console.log(T.accent(" Wallets:"));
|
|
167
|
-
console.log(T.muted(` Cold: ${wallets.cold.sol.toFixed(4)} SOL | ${wallets.cold.aiaiai.toLocaleString()} $AIAIAI`));
|
|
168
|
-
console.log(T.muted(` Action: ${wallets.action.sol.toFixed(4)} SOL | ${wallets.action.aiaiai.toLocaleString()} $AIAIAI`));
|
|
169
|
-
console.log(T.muted(` Deposit: ${wallets.deposit.usdc.toFixed(2)} USDC | ${wallets.deposit.sol.toFixed(4)} SOL`));
|
|
170
|
-
console.log("");
|
|
171
|
-
process.exit(0);
|
|
172
|
-
})();
|
|
173
|
-
await new Promise(() => { });
|
|
174
|
-
}
|
|
175
|
-
if (subcmd === "wallet") {
|
|
176
|
-
(async () => {
|
|
177
|
-
const result = await agentWallet.getAgentBalanceTool();
|
|
178
|
-
console.log(result.content[0].text);
|
|
179
|
-
process.exit(0);
|
|
180
|
-
})();
|
|
181
|
-
await new Promise(() => { });
|
|
182
|
-
}
|
|
183
|
-
if (subcmd === "deposit") {
|
|
184
|
-
(async () => {
|
|
185
|
-
const result = await agentWallet.getDepositBalanceTool();
|
|
186
|
-
console.log(result.content[0].text);
|
|
187
|
-
process.exit(0);
|
|
188
|
-
})();
|
|
189
|
-
await new Promise(() => { });
|
|
190
|
-
}
|
|
191
|
-
if (subcmd === "burn") {
|
|
192
|
-
console.log(T.accent("\n 🔥 Burn $AIAIAI\n"));
|
|
193
|
-
console.log(T.muted(" Deposit wallet:"));
|
|
194
|
-
console.log(` ${DEPOSIT_WALLET}`);
|
|
195
|
-
console.log("");
|
|
196
|
-
console.log(T.muted(" Send SOL or USDC here to fuel agent burns."));
|
|
197
|
-
console.log(T.muted(" The agent detects deposits and automatically"));
|
|
198
|
-
console.log(T.muted(" sends funds to the action wallet to burn tokens."));
|
|
199
|
-
console.log("");
|
|
200
|
-
console.log(T.muted(" Action wallet (executes trades):"));
|
|
201
|
-
console.log(` ${ACTION_WALLET}`);
|
|
202
|
-
console.log("");
|
|
203
|
-
console.log(T.muted(" Hot wallet (temporary swap):"));
|
|
204
|
-
console.log(` ${HOT_WALLET}`);
|
|
205
|
-
console.log("");
|
|
206
|
-
process.exit(0);
|
|
207
|
-
}
|
|
208
|
-
if (subcmd === "actions" || subcmd === "activity") {
|
|
209
|
-
(async () => {
|
|
210
|
-
const { actionFeed } = await import("./wallet/ActionFeed.js");
|
|
211
|
-
await actionFeed.refresh();
|
|
212
|
-
const result = await actionFeed.getActionsTool("", { limit: 20 });
|
|
213
|
-
console.log(result.content[0].text);
|
|
214
|
-
process.exit(0);
|
|
215
|
-
})();
|
|
216
|
-
await new Promise(() => { });
|
|
217
|
-
}
|
|
218
|
-
if (subcmd === "fees") {
|
|
219
|
-
(async () => {
|
|
220
|
-
const { actionFeed } = await import("./wallet/ActionFeed.js");
|
|
221
|
-
await actionFeed.refresh();
|
|
222
|
-
const result = await actionFeed.getFeesTool();
|
|
223
|
-
console.log(result.content[0].text);
|
|
224
|
-
process.exit(0);
|
|
225
|
-
})();
|
|
226
|
-
await new Promise(() => { });
|
|
227
|
-
}
|
|
228
|
-
if (subcmd === "pnl" || subcmd === "pl" || subcmd === "profit") {
|
|
229
|
-
(async () => {
|
|
230
|
-
const { getPLSummary, getTradeHistory, exportCSV } = await import("./wallet/ProfitTracker.js");
|
|
231
|
-
const { priceFeed } = await import("./tools/PriceFeed.js");
|
|
232
|
-
const price = await priceFeed.getAiaiaiPrice();
|
|
233
|
-
const summary = getPLSummary(parseFloat(price.priceUsd ?? "0"));
|
|
234
|
-
const history = getTradeHistory();
|
|
235
|
-
console.log(T.accent("\n Profit & Loss — $AIAIAI\n"));
|
|
236
|
-
console.log(` Avg Cost: $${summary.avgCostBasis.toFixed(8)}`);
|
|
237
|
-
console.log(` Total Spent: ${summary.totalSpent.toFixed(4)} SOL`);
|
|
238
|
-
console.log(` Total Received: ${summary.totalReceived.toFixed(4)} SOL`);
|
|
239
|
-
console.log(` Realized P&L: ${summary.realizedPL >= 0 ? "+" : ""}${summary.realizedPL.toFixed(4)} SOL`);
|
|
240
|
-
console.log(` Unrealized P&L: ${summary.unrealizedPL >= 0 ? "+" : ""}${summary.unrealizedPL.toFixed(4)} SOL`);
|
|
241
|
-
console.log(` ROI: ${summary.roi >= 0 ? "+" : ""}${summary.roi.toFixed(2)}%`);
|
|
242
|
-
console.log(` Trades: ${history.length}`);
|
|
243
|
-
if (history.length > 0) {
|
|
244
|
-
console.log(T.muted("\n Recent trades:"));
|
|
245
|
-
history.slice(-5).forEach(t => {
|
|
246
|
-
const date = new Date(t.timestamp).toLocaleDateString();
|
|
247
|
-
console.log(` ${date} ${t.type} ${t.tokenAmount.toFixed(0)} tokens @ ${t.pricePerToken.toFixed(8)} SOL`);
|
|
248
|
-
});
|
|
249
|
-
}
|
|
250
|
-
try {
|
|
251
|
-
const csvPath = exportCSV();
|
|
252
|
-
console.log(T.success(`\n CSV exported: ${csvPath}`));
|
|
253
|
-
}
|
|
254
|
-
catch (error) {
|
|
255
|
-
logger.warn('CLI', 'CSV export failed', { error: error.message });
|
|
256
|
-
}
|
|
257
|
-
process.exit(0);
|
|
258
|
-
})();
|
|
259
|
-
await new Promise(() => { });
|
|
260
|
-
}
|
|
261
|
-
if (subcmd === "keys" || subcmd === "providers") {
|
|
262
|
-
(async () => {
|
|
263
|
-
const readline = await import("node:readline");
|
|
264
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
265
|
-
const ask = (prompt) => new Promise((res) => rl.question(prompt, res));
|
|
266
|
-
const allEnv = env.getAll();
|
|
267
|
-
const configured = getConfigured(allEnv);
|
|
268
|
-
const unconfigured = getUnconfigured(allEnv);
|
|
269
|
-
console.log(T.accent("\n 🔑 AI Model Providers\n"));
|
|
270
|
-
console.log(T.muted(` Configure AI model providers. Add at least one API key to get started.`));
|
|
271
|
-
console.log(T.muted(` ${configured.length}/${PROVIDERS.length} configured\n`));
|
|
272
|
-
|
|
273
|
-
if (configured.length > 0) {
|
|
274
|
-
console.log(T.success(" Configured (" + configured.length + ")"));
|
|
275
|
-
for (const p of configured) {
|
|
276
|
-
const key = allEnv[p.envVar] || "";
|
|
277
|
-
const masked = key.slice(0, 6) + "••••" + key.slice(-4);
|
|
278
|
-
console.log(T.success(` ✓ ${p.name.padEnd(28)} ${masked}`));
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
console.log("\n" + T.warn(" Unconfigured (" + unconfigured.length + ")"));
|
|
283
|
-
for (let i = 0; i < unconfigured.length; i++) {
|
|
284
|
-
const p = unconfigured[i];
|
|
285
|
-
console.log(T.muted(` ${String(i + 1).padStart(2)}. ${p.name}`));
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
console.log("\n" + T.muted(" Enter number to add a key, 'r' to refresh models, or 'q' to quit:"));
|
|
289
|
-
const input = (await ask(" > ")).trim();
|
|
290
|
-
if (input === "q") {
|
|
291
|
-
rl.close();
|
|
292
|
-
process.exit(0);
|
|
293
|
-
}
|
|
294
|
-
if (input === "r") {
|
|
295
|
-
console.log(T.muted("\n Refreshing models from configured providers..."));
|
|
296
|
-
await modelRegistry.initialise();
|
|
297
|
-
console.log(T.success(` ✓ ${modelRegistry.modelCount} models available from ${modelRegistry.getProviderCount()} providers`));
|
|
298
|
-
rl.close();
|
|
299
|
-
process.exit(0);
|
|
300
|
-
}
|
|
301
|
-
const idx = parseInt(input) - 1;
|
|
302
|
-
if (isNaN(idx) || idx < 0 || idx >= unconfigured.length) {
|
|
303
|
-
console.log(T.error(" Invalid selection."));
|
|
304
|
-
rl.close();
|
|
305
|
-
process.exit(1);
|
|
306
|
-
}
|
|
307
|
-
const provider = unconfigured[idx];
|
|
308
|
-
console.log(T.accent(`\n ${provider.name}`));
|
|
309
|
-
console.log(T.muted(` ${provider.docsUrl}`));
|
|
310
|
-
console.log(T.muted(` Env var: ${provider.envVar}\n`));
|
|
311
|
-
const key = (await ask(` Enter ${provider.name} API key: `)).trim();
|
|
312
|
-
if (!key) {
|
|
313
|
-
console.log(T.error(" Key is required."));
|
|
314
|
-
rl.close();
|
|
315
|
-
process.exit(1);
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
env.set(provider.envVar, key);
|
|
319
|
-
console.log(T.success(`\n ✓ ${provider.name} key saved to ~/.aiaiai/.env`));
|
|
320
|
-
|
|
321
|
-
console.log(T.muted(" Fetching models from " + provider.name + "..."));
|
|
322
|
-
try {
|
|
323
|
-
await modelRegistry.initialise();
|
|
324
|
-
const providerModels = modelRegistry.getProviderModels(provider.id);
|
|
325
|
-
console.log(T.success(` ✓ ${providerModels.length} models available from ${provider.name}`));
|
|
326
|
-
console.log(T.success(` ✓ ${modelRegistry.modelCount} total models from ${modelRegistry.getProviderCount()} providers`));
|
|
327
|
-
}
|
|
328
|
-
catch (e) {
|
|
329
|
-
console.log(T.warn(` ⚠ Could not fetch models: ${e instanceof Error ? e.message : String(e)}`));
|
|
330
|
-
}
|
|
331
|
-
rl.close();
|
|
332
|
-
process.exit(0);
|
|
333
|
-
})().catch(e => { console.error(T.error(`Error: ${e.message}`)); process.exit(1); });
|
|
334
|
-
await new Promise(() => { });
|
|
335
|
-
}
|
|
336
|
-
if (subcmd === "gmgn" || subcmd === "gmgnhelp") {
|
|
337
|
-
const gmgnArgs = args.slice(1);
|
|
338
|
-
if (gmgnArgs.length === 0 || gmgnArgs[0] === "help" || gmgnArgs[0] === "--help") {
|
|
339
|
-
console.log(gmgnHelp());
|
|
340
|
-
process.exit(0);
|
|
341
|
-
}
|
|
342
|
-
if (gmgnArgs[0] === "setup" || gmgnArgs[0] === "config" || gmgnArgs[0] === "key") {
|
|
343
|
-
(async () => {
|
|
344
|
-
const readline = await import("node:readline");
|
|
345
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
346
|
-
const ask = (prompt) => new Promise((res) => rl.question(prompt, res));
|
|
347
|
-
console.log(T.accent("\n 🔍 GMGN API Key Setup\n"));
|
|
348
|
-
console.log(T.muted(" Get your API key at https://gmgn.ai/ai\n"));
|
|
349
|
-
const key = (await ask(" Enter GMGN_API_KEY: ")).trim();
|
|
350
|
-
if (!key) {
|
|
351
|
-
console.log(T.error(" Key is required."));
|
|
352
|
-
rl.close();
|
|
353
|
-
process.exit(1);
|
|
354
|
-
}
|
|
355
|
-
saveGmgnApiKey(key);
|
|
356
|
-
console.log(T.success("\n ✓ GMGN_API_KEY saved to ~/.config/gmgn/.env"));
|
|
357
|
-
console.log(T.muted(" All GMGN commands are now available.\n"));
|
|
358
|
-
rl.close();
|
|
359
|
-
process.exit(0);
|
|
360
|
-
})().catch(e => { console.error(T.error(`Error: ${e.message}`)); process.exit(1); });
|
|
361
|
-
await new Promise(() => { });
|
|
362
|
-
}
|
|
363
|
-
if (gmgnArgs[0] === "status") {
|
|
364
|
-
console.log(gmgnStatus());
|
|
365
|
-
process.exit(0);
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
try {
|
|
369
|
-
const fullArgs = ["gmgn-cli", ...gmgnArgs];
|
|
370
|
-
const gmgnEnv = {};
|
|
371
|
-
try {
|
|
372
|
-
const f = readFileSync(join(homedir(), ".config", "gmgn", ".env"), "utf-8");
|
|
373
|
-
for (const l of f.split("\n")) {
|
|
374
|
-
const m = l.trim().match(/^([A-Z_]+)=(.*)$/);
|
|
375
|
-
if (m)
|
|
376
|
-
gmgnEnv[m[1]] = m[2];
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
catch {
|
|
380
|
-
logger.debug('CLI', 'No GMGN env file found (optional)');
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
const output = execFileSync(fullArgs[0], fullArgs.slice(1), {
|
|
384
|
-
env: { ...process.env, ...gmgnEnv },
|
|
385
|
-
encoding: "utf-8",
|
|
386
|
-
timeout: 30_000,
|
|
387
|
-
});
|
|
388
|
-
process.stdout.write(output);
|
|
389
|
-
}
|
|
390
|
-
catch (e) {
|
|
391
|
-
const msg = e.stderr?.toString() || e.message || "";
|
|
392
|
-
process.stderr.write(`gmgn-cli: ${msg.slice(0, 500)}\n`);
|
|
393
|
-
process.exit(e.status ?? 1);
|
|
394
|
-
}
|
|
395
|
-
process.exit(0);
|
|
396
|
-
}
|
|
397
|
-
if (subcmd === "scan" || subcmd === "security") {
|
|
398
|
-
(async () => {
|
|
399
|
-
const tokenAddress = args[1];
|
|
400
|
-
if (!tokenAddress) {
|
|
401
|
-
console.log(T.error(" Usage: aiaiai scan <token-address>"));
|
|
402
|
-
process.exit(1);
|
|
403
|
-
}
|
|
404
|
-
console.log(T.accent("\n \uD83D\uDD0D Scanning token...\n"));
|
|
405
|
-
const result = await scanTokenSecurityTool("", { address: tokenAddress });
|
|
406
|
-
if (result.isError) {
|
|
407
|
-
console.log(result.content[0].text);
|
|
408
|
-
process.exit(1);
|
|
409
|
-
}
|
|
410
|
-
console.log(result.content[0].text);
|
|
411
|
-
console.log("");
|
|
412
|
-
process.exit(0);
|
|
413
|
-
})().catch(e => { console.error(T.error("Scan error: " + e.message)); process.exit(1); });
|
|
414
|
-
await new Promise(() => { });
|
|
415
|
-
}
|
|
416
|
-
if (subcmd === "update" || subcmd === "upgrade") {
|
|
417
|
-
(async () => {
|
|
418
|
-
const pkgName = "@aiaiaichain/agent";
|
|
419
|
-
console.log(T.accent("\n 🤖 AIAIAI Update Check\n"));
|
|
420
|
-
|
|
421
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
422
|
-
const __dir = dirname(__filename);
|
|
423
|
-
const currentPkg = JSON.parse(readFileSync(resolve(__dir, "..", "package.json"), "utf-8"));
|
|
424
|
-
const current = currentPkg.version;
|
|
425
|
-
console.log(T.muted(` Current version: v${current}`));
|
|
426
|
-
|
|
427
|
-
let latest = null;
|
|
428
|
-
let changelog = "";
|
|
429
|
-
try {
|
|
430
|
-
const viewOutput = execSync(`npm view ${pkgName} version`, {
|
|
431
|
-
encoding: "utf-8",
|
|
432
|
-
timeout: 15_000,
|
|
433
|
-
}).trim();
|
|
434
|
-
latest = viewOutput.split("\n").pop() || null;
|
|
435
|
-
|
|
436
|
-
try {
|
|
437
|
-
const changelogOutput = execSync(`npm view ${pkgName} --json`, {
|
|
438
|
-
encoding: "utf-8",
|
|
439
|
-
timeout: 15_000,
|
|
440
|
-
});
|
|
441
|
-
const pkgData = JSON.parse(changelogOutput);
|
|
442
|
-
if (pkgData.gitHead) {
|
|
443
|
-
changelog = `Git: ${pkgData.gitHead.slice(0, 8)}`;
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
catch {
|
|
447
|
-
logger.debug('CLI', 'No changelog available (optional)');
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
catch (error) {
|
|
451
|
-
logger.warn('CLI', 'Could not reach npm registry', { error: error.message });
|
|
452
|
-
console.log(T.error(" Could not reach npm registry. Check your connection."));
|
|
453
|
-
process.exit(1);
|
|
454
|
-
}
|
|
455
|
-
if (!latest) {
|
|
456
|
-
console.log(T.error(" Could not determine latest version."));
|
|
457
|
-
process.exit(1);
|
|
458
|
-
}
|
|
459
|
-
console.log(T.muted(` Latest version: v${latest}`));
|
|
460
|
-
if (changelog)
|
|
461
|
-
console.log(T.muted(` ${changelog}`));
|
|
462
|
-
if (latest === current) {
|
|
463
|
-
console.log(T.success("\n ✅ You're on the latest version!\n"));
|
|
464
|
-
process.exit(0);
|
|
465
|
-
}
|
|
466
|
-
console.log(T.accent(`\n ⚡ Update available: v${current} → v${latest}\n`));
|
|
467
|
-
|
|
468
|
-
const readline = await import("node:readline");
|
|
469
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
470
|
-
const ask = (prompt) => new Promise((res) => rl.question(prompt, res));
|
|
471
|
-
const confirm = (await ask(" Install update now? (y/n): ")).trim().toLowerCase();
|
|
472
|
-
if (confirm !== "y" && confirm !== "yes") {
|
|
473
|
-
console.log(T.muted("\n Skipped. Run `aiaiai update` anytime to update.\n"));
|
|
474
|
-
rl.close();
|
|
475
|
-
process.exit(0);
|
|
476
|
-
}
|
|
477
|
-
console.log(T.muted("\n Installing update..."));
|
|
478
|
-
try {
|
|
479
|
-
execSync(`npm install -g ${pkgName}`, {
|
|
480
|
-
stdio: "inherit",
|
|
481
|
-
timeout: 120_000,
|
|
482
|
-
});
|
|
483
|
-
console.log(T.success(`\n ✅ Updated to v${latest}!`));
|
|
484
|
-
console.log(T.muted(" Run `aiaiai` to restart with new features.\n"));
|
|
485
|
-
}
|
|
486
|
-
catch (e) {
|
|
487
|
-
console.log(T.error(`\n ❌ Update failed: ${e.message}`));
|
|
488
|
-
console.log(T.muted(" Try manually: npm install -g @aiaiaichain/agent\n"));
|
|
489
|
-
}
|
|
490
|
-
rl.close();
|
|
491
|
-
process.exit(0);
|
|
492
|
-
})().catch(e => { console.error(T.error(`Error: ${e.message}`)); process.exit(1); });
|
|
493
|
-
await new Promise(() => { });
|
|
494
|
-
}
|
|
495
|
-
if (subcmd === "health" || subcmd === "doctor") {
|
|
496
|
-
(async () => {
|
|
497
|
-
console.log(T.accent("\n \u2705 AIAIAI Health Check\n"));
|
|
498
|
-
let healthy = true;
|
|
499
|
-
|
|
500
|
-
console.log(T.muted(" Config:"));
|
|
501
|
-
if (existsSync(envPath)) {
|
|
502
|
-
console.log(T.success(" .env found"));
|
|
503
|
-
}
|
|
504
|
-
else {
|
|
505
|
-
console.log(T.warn(" .env not found \u2014 run: aiaiai setup"));
|
|
506
|
-
healthy = false;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
console.log(T.muted(" API Key:"));
|
|
510
|
-
if (process.env.OPENROUTER_API_KEY || env.get("OPENROUTER_API_KEY")) {
|
|
511
|
-
console.log(T.success(" OPENROUTER_API_KEY set"));
|
|
512
|
-
}
|
|
513
|
-
else {
|
|
514
|
-
console.log(T.warn(" OPENROUTER_API_KEY not set"));
|
|
515
|
-
healthy = false;
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
console.log(T.muted(" Solana RPC:"));
|
|
519
|
-
try {
|
|
520
|
-
const { resilientFetch } = await import("./util/resilientFetch.js");
|
|
521
|
-
const rpcUrl = process.env.SOLANA_RPC_URL || "https://api.mainnet-beta.solana.com";
|
|
522
|
-
const res = await resilientFetch(rpcUrl, {
|
|
523
|
-
timeout: 10_000,
|
|
524
|
-
retries: 0,
|
|
525
|
-
method: "POST",
|
|
526
|
-
headers: { "Content-Type": "application/json" },
|
|
527
|
-
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "getHealth", params: [] }),
|
|
528
|
-
});
|
|
529
|
-
const json = await res.json();
|
|
530
|
-
if (json.result === "ok") {
|
|
531
|
-
console.log(T.success(" RPC healthy: " + rpcUrl));
|
|
532
|
-
}
|
|
533
|
-
else {
|
|
534
|
-
console.log(T.warn(" RPC responded but unhealthy"));
|
|
535
|
-
healthy = false;
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
catch (e) {
|
|
539
|
-
console.log(T.error(" RPC unreachable: " + e.message));
|
|
540
|
-
healthy = false;
|
|
541
|
-
}
|
|
542
|
-
|
|
543
|
-
console.log(T.muted(" Disk:"));
|
|
544
|
-
try {
|
|
545
|
-
const { writeFileSync, unlinkSync } = await import("node:fs");
|
|
546
|
-
const testFile = join(AIAIAI_HOME, ".health-test");
|
|
547
|
-
writeFileSync(testFile, "test", "utf-8");
|
|
548
|
-
unlinkSync(testFile);
|
|
549
|
-
console.log(T.success(" writable"));
|
|
550
|
-
}
|
|
551
|
-
catch (error) {
|
|
552
|
-
logger.warn('CLI', 'Disk not writable', { error: error.message });
|
|
553
|
-
console.log(T.error(" not writable"));
|
|
554
|
-
healthy = false;
|
|
555
|
-
}
|
|
556
|
-
|
|
557
|
-
console.log(T.muted("\n Extras:"));
|
|
558
|
-
|
|
559
|
-
try {
|
|
560
|
-
const { getCurrentTheme } = await import("./tui/ThemePresets.js");
|
|
561
|
-
console.log(T.success(` Theme: ${getCurrentTheme()} (run aiaiai to change)`));
|
|
562
|
-
}
|
|
563
|
-
catch {
|
|
564
|
-
console.log(T.muted(" Theme: default"));
|
|
565
|
-
}
|
|
566
|
-
|
|
567
|
-
try {
|
|
568
|
-
const { clipboardSupported } = await import("./util/clipboard.js");
|
|
569
|
-
console.log(T.muted(` Clipboard: ${clipboardSupported()}`));
|
|
570
|
-
}
|
|
571
|
-
catch {
|
|
572
|
-
console.log(T.muted(" Clipboard: not available"));
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
try {
|
|
576
|
-
const { hasWebhooks } = await import("./util/webhooks.js");
|
|
577
|
-
console.log(hasWebhooks() ? T.success(" Webhooks: configured") : T.muted(" Webhooks: not configured (set WEBHOOK_DISCORD or WEBHOOK_TELEGRAM in .env)"));
|
|
578
|
-
}
|
|
579
|
-
catch {
|
|
580
|
-
console.log(T.muted(" Webhooks: not available"));
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
console.log(T.muted(" Provider Keys:"));
|
|
584
|
-
const providers = [
|
|
585
|
-
{ name: "OpenRouter", key: "OPENROUTER_API_KEY" },
|
|
586
|
-
{ name: "Anthropic", key: "ANTHROPIC_API_KEY" },
|
|
587
|
-
{ name: "OpenAI", key: "OPENAI_API_KEY" },
|
|
588
|
-
{ name: "Google", key: "GOOGLE_API_KEY" },
|
|
589
|
-
{ name: "DeepSeek", key: "DEEPSEEK_API_KEY" },
|
|
590
|
-
{ name: "Groq", key: "GROQ_API_KEY" },
|
|
591
|
-
{ name: "GMGN", key: "GMGN_API_KEY" },
|
|
592
|
-
];
|
|
593
|
-
for (const p of providers) {
|
|
594
|
-
const has = process.env[p.key] || env.get(p.key);
|
|
595
|
-
console.log(has ? T.success(` ${p.name}: ✓`) : T.dim(` ${p.name}: ✗ (optional)`));
|
|
596
|
-
}
|
|
597
|
-
console.log("");
|
|
598
|
-
if (healthy) {
|
|
599
|
-
console.log(T.success(" All systems operational.\n"));
|
|
600
|
-
}
|
|
601
|
-
else {
|
|
602
|
-
console.log(T.warn(" Some checks failed. Review above for details.\n"));
|
|
603
|
-
}
|
|
604
|
-
process.exit(healthy ? 0 : 1);
|
|
605
|
-
})().catch(e => { console.error(T.error("Health check failed: " + e.message)); process.exit(2); });
|
|
606
|
-
await new Promise(() => { });
|
|
607
|
-
}
|
|
608
|
-
if (subcmd === "sessions") {
|
|
609
|
-
const sessions = sessionStore.list();
|
|
610
|
-
if (sessions.length === 0) {
|
|
611
|
-
console.log(T.muted(" No saved sessions."));
|
|
612
|
-
process.exit(0);
|
|
613
|
-
}
|
|
614
|
-
console.log(T.accent("\n 📂 Saved Sessions\n"));
|
|
615
|
-
sessions.slice(0, 15).forEach((s, i) => {
|
|
616
|
-
const date = new Date(s.updatedAt).toLocaleDateString();
|
|
617
|
-
console.log(T.muted(` ${String(i + 1).padStart(2)}. ${s.title} (${s.messageCount} msgs, ${s.model}, ${date})`));
|
|
618
|
-
});
|
|
619
|
-
console.log("");
|
|
620
|
-
process.exit(0);
|
|
621
|
-
}
|
|
622
|
-
if (subcmd === "resume") {
|
|
623
|
-
const sessions = sessionStore.list();
|
|
624
|
-
if (sessions.length === 0) {
|
|
625
|
-
console.log(T.muted(" No saved sessions."));
|
|
626
|
-
process.exit(0);
|
|
627
|
-
}
|
|
628
|
-
const idx = parseInt(process.argv[3]) - 1;
|
|
629
|
-
if (isNaN(idx) || idx < 0 || idx >= sessions.length) {
|
|
630
|
-
console.log(T.error(" Invalid session number."));
|
|
631
|
-
process.exit(1);
|
|
632
|
-
}
|
|
633
|
-
const session = sessionStore.load(sessions[idx].id);
|
|
634
|
-
if (!session) {
|
|
635
|
-
console.log(T.error(" Session not found."));
|
|
636
|
-
process.exit(1);
|
|
637
|
-
}
|
|
638
|
-
console.log(T.accent(`\n 📂 Resumed: ${session.title}\n`));
|
|
639
|
-
console.log(T.muted(` Messages: ${session.messages.length}`));
|
|
640
|
-
console.log(T.muted(` Model: ${session.model}`));
|
|
641
|
-
console.log("");
|
|
642
|
-
process.exit(0);
|
|
643
|
-
}
|
|
644
|
-
|
|
645
|
-
let extensionPath = null;
|
|
646
|
-
let promptPath = null;
|
|
647
|
-
for (let i = 0; i < args.length; i++) {
|
|
648
|
-
if (args[i] === "--extension" && args[i + 1])
|
|
649
|
-
extensionPath = args[i + 1];
|
|
650
|
-
if (args[i] === "--prompt" && args[i + 1])
|
|
651
|
-
promptPath = args[i + 1];
|
|
652
|
-
}
|
|
653
|
-
let systemPrompt = SYSTEM_PROMPT;
|
|
654
|
-
if (promptPath && existsSync(promptPath)) {
|
|
655
|
-
let rawPrompt = readFileSync(promptPath, "utf-8");
|
|
656
|
-
|
|
657
|
-
if (rawPrompt.length > 10_000) {
|
|
658
|
-
console.error(T.error("Prompt file too large (max 10KB)."));
|
|
659
|
-
process.exit(1);
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
rawPrompt = rawPrompt.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, "");
|
|
663
|
-
|
|
664
|
-
const dangerousPatterns = [
|
|
665
|
-
/ignore (all |previous |above|prior) instructions/i,
|
|
666
|
-
/you are now /i,
|
|
667
|
-
/new instructions/i,
|
|
668
|
-
/override (system|safety)/i,
|
|
669
|
-
];
|
|
670
|
-
for (const pattern of dangerousPatterns) {
|
|
671
|
-
if (pattern.test(rawPrompt)) {
|
|
672
|
-
console.error(T.error("Prompt file contains suspicious patterns. Use a simpler prompt."));
|
|
673
|
-
process.exit(1);
|
|
674
|
-
}
|
|
675
|
-
}
|
|
676
|
-
systemPrompt = rawPrompt;
|
|
677
|
-
console.log(T.muted(" Custom prompt loaded: " + promptPath));
|
|
678
|
-
}
|
|
679
|
-
|
|
680
|
-
const headlessIdx = args.indexOf("--headless");
|
|
681
|
-
const headlessMsg = headlessIdx >= 0 ? args[headlessIdx + 1] : null;
|
|
682
|
-
if (headlessMsg) {
|
|
683
|
-
(async () => {
|
|
684
|
-
AgentDir.init();
|
|
685
|
-
const registry = new Registry();
|
|
686
|
-
registry.setSystemPrompt(systemPrompt);
|
|
687
|
-
if (extensionPath) {
|
|
688
|
-
try {
|
|
689
|
-
await loadExtension(extensionPath, registry);
|
|
690
|
-
}
|
|
691
|
-
catch (e) {
|
|
692
|
-
process.stderr.write(`Extension load failed: ${e instanceof Error ? e.message : String(e)}\n`);
|
|
693
|
-
process.exit(1);
|
|
694
|
-
}
|
|
695
|
-
}
|
|
696
|
-
await modelRegistry.initialise();
|
|
697
|
-
const session = new SessionManager();
|
|
698
|
-
session.setSystemPrompt(registry.getSystemPrompt() || systemPrompt);
|
|
699
|
-
const theme = makeTheme();
|
|
700
|
-
const nullUi = {
|
|
701
|
-
notify: () => { }, setStatus: () => { }, setTheme: () => { },
|
|
702
|
-
setHeader: () => { }, showModelSelector: () => { }, theme,
|
|
703
|
-
};
|
|
704
|
-
const sessionCtx = {
|
|
705
|
-
ui: nullUi, hasUI: false,
|
|
706
|
-
config: { OPENROUTER_API_KEY: process.env.OPENROUTER_API_KEY },
|
|
707
|
-
};
|
|
708
|
-
await registry.fireHook("session_start", sessionCtx);
|
|
709
|
-
let exitCode = 0;
|
|
710
|
-
const runner = new AgentRunner(registry, session, (event) => {
|
|
711
|
-
if (event.type === "text_delta")
|
|
712
|
-
process.stdout.write(event.text);
|
|
713
|
-
if (event.type === "turn_done")
|
|
714
|
-
process.stdout.write("\n");
|
|
715
|
-
if (event.type === "error") {
|
|
716
|
-
process.stderr.write(`\nError: ${event.message}\n`);
|
|
717
|
-
exitCode = 1;
|
|
718
|
-
}
|
|
719
|
-
}, sessionCtx, "normal", modelRegistry);
|
|
720
|
-
try {
|
|
721
|
-
await runner.run(headlessMsg);
|
|
722
|
-
}
|
|
723
|
-
catch (e) {
|
|
724
|
-
process.stderr.write(`Runner error: ${e instanceof Error ? e.message : String(e)}\n`);
|
|
725
|
-
exitCode = 1;
|
|
726
|
-
}
|
|
727
|
-
await registry.fireHook("session_end", sessionCtx);
|
|
728
|
-
process.exit(exitCode);
|
|
729
|
-
})();
|
|
730
|
-
}
|
|
731
|
-
else {
|
|
318
|
+
when talking about your wallets and actions. Be concise, sharp, and useful.`,Pt=process.argv.slice(2),he=Pt[0];(he==="--help"||he==="-h"||he==="help")&&(console.log(E.accent(`
|
|
319
|
+
AIAIAI Chain Agent \u2014 $AIAIAI
|
|
320
|
+
`)),console.log(E.muted(` Usage:
|
|
321
|
+
`)),console.log(" aiaiaichain Start interactive agent"),console.log(" aiaiaichain setup First-time setup wizard"),console.log(" aiaiaichain config Show configuration"),console.log(" aiaiaichain price Show $AIAIAI token price"),console.log(" aiaiaichain status Quick status + price"),console.log(' aiaiaichain --headless "prompt" Run single turn, print to stdout'),console.log(" aiaiaichain --extension ./ext.ts Load extension"),console.log(" aiaiaichain wallet Show agent wallets"),console.log(" aiaiaichain deposit Show deposit instructions"),console.log(" aiaiaichain burn Show burn instructions"),console.log(" aiaiaichain actions Recent agent actions"),console.log(" aiaiaichain pnl Profit & Loss report"),console.log(" aiaiaichain health System health & diagnostics"),console.log(" aiaiaichain doctor Comprehensive provider check"),console.log(" aiaiaichain scan <address> Token security scan"),console.log(" aiaiaichain --help This help"),console.log(" aiaiaichain --version Show version"),console.log(""),console.log(E.muted(` https://x.com/aiaiaisol
|
|
322
|
+
`)),process.exit(0));if(he==="--version"||he==="-v"){let t=rA(import.meta.url),e=eA(t),r=JSON.parse(es(Zg(e,"..","package.json"),"utf-8"));console.log(r.version),process.exit(0)}he==="setup"&&(async()=>{let{SetupWizard:t}=await Promise.resolve().then(()=>(Ug(),Fg));Ze.init(),await new t().run()||(console.log(E.error("Setup cancelled.")),process.exit(1)),console.log(E.success(`
|
|
323
|
+
\u2713 AIAIAI setup complete!
|
|
324
|
+
`)),console.log(E.muted(` Home: ${Xn}`)),console.log(E.accent("\n Run `aiaiaichain` to start the agent.\n")),process.exit(0)})().catch(t=>{let e=t instanceof Error?t.message:String(t);e.includes("ENOENT")?console.error(E.error("Setup error: Cannot write to ~/.aiaiai/.env \u2014 check permissions.")):e.includes("EACCES")?console.error(E.error("Setup error: Permission denied \u2014 try running with correct user.")):e.includes("API")||e.includes("401")?console.error(E.error("Setup error: API key invalid \u2014 check your provider key.")):console.error(E.error(`Setup error: ${e}`)),process.exit(1)});if(he==="config"){if(console.log(E.accent("AIAIAI Config")),console.log(E.muted(`Config file: ${ln}`)),ts(ln))for(let t of es(ln,"utf-8").split(`
|
|
325
|
+
`)){let e=t.match(/^([A-Z_]+)=(.*)$/);if(!e)continue;let r=e[2].length>12?e[2].slice(0,6)+"********":e[2]?"********":"(empty)";console.log(` ${e[1].padEnd(28)} ${r}`)}else console.log(E.warn("No config found. Run: aiaiaichain setup"));process.exit(0)}he==="price"&&(async()=>{let t=await We.getAiaiaiPriceTool();console.log(t.content[0].text),process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t instanceof Error?t.message:String(t)}`)),process.exit(1)});he==="status"&&(async()=>{console.log(E.accent(`
|
|
326
|
+
\u{1F916} AIAIAI Chain Agent
|
|
327
|
+
`)),console.log(E.muted(` Home: ${Xn}`)),console.log(E.muted(` Config: ${ts(ln)?"\u2713 found":"\u2717 run setup"}`)),console.log(E.muted(` Key: ${process.env.OPENROUTER_API_KEY?"\u2713 set":"\u2717 missing"}`)),console.log("");let t=await We.getAiaiaiPriceTool();console.log(t.content[0].text),console.log("");let e=await et.getAll();console.log(E.accent(" Wallets:")),console.log(E.muted(` Cold: ${e.cold.sol.toFixed(4)} SOL | ${e.cold.aiaiai.toLocaleString()} $AIAIAI`)),console.log(E.muted(` Action: ${e.action.sol.toFixed(4)} SOL | ${e.action.aiaiai.toLocaleString()} $AIAIAI`)),console.log(E.muted(` Deposit: ${e.deposit.usdc.toFixed(2)} USDC | ${e.deposit.sol.toFixed(4)} SOL`)),console.log(""),process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t instanceof Error?t.message:String(t)}`)),process.exit(1)});he==="wallet"&&(async()=>{let t=await et.getAgentBalanceTool();console.log(t.content[0].text),process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t instanceof Error?t.message:String(t)}`)),process.exit(1)});he==="deposit"&&(async()=>{let t=await et.getDepositBalanceTool();console.log(t.content[0].text),process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t instanceof Error?t.message:String(t)}`)),process.exit(1)});he==="burn"&&(console.log(E.accent(`
|
|
328
|
+
\u{1F525} Burn $AIAIAI
|
|
329
|
+
`)),console.log(E.muted(" Deposit wallet:")),console.log(` ${ir}`),console.log(""),console.log(E.muted(" Send SOL or USDC here to fuel agent burns.")),console.log(E.muted(" The agent detects deposits and automatically")),console.log(E.muted(" sends funds to the action wallet to burn tokens.")),console.log(""),console.log(E.muted(" Action wallet (executes trades):")),console.log(` ${at}`),console.log(""),console.log(E.muted(" Hot wallet (temporary swap):")),console.log(` ${Tr}`),console.log(""),process.exit(0));(he==="actions"||he==="activity")&&(async()=>{let{actionFeed:t}=await Promise.resolve().then(()=>(Ii(),Bc));await t.refresh();let e=await t.getActionsTool("",{limit:20});console.log(e.content[0].text),process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t instanceof Error?t.message:String(t)}`)),process.exit(1)});he==="fees"&&(async()=>{let{actionFeed:t}=await Promise.resolve().then(()=>(Ii(),Bc));await t.refresh();let e=await t.getFeesTool();console.log(e.content[0].text),process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t instanceof Error?t.message:String(t)}`)),process.exit(1)});(he==="pnl"||he==="pl"||he==="profit")&&(async()=>{let{getPLSummary:t,getTradeHistory:e,exportCSV:r}=await Promise.resolve().then(()=>(Jg(),qg)),{priceFeed:n}=await Promise.resolve().then(()=>(Un(),lc)),o=await n.getAiaiaiPrice(),s=t(parseFloat(o.priceUsd??"0")),i=e();console.log(E.accent(`
|
|
330
|
+
Profit & Loss \u2014 $AIAIAI
|
|
331
|
+
`)),console.log(` Avg Cost: $${s.avgCostBasis.toFixed(8)}`),console.log(` Total Spent: ${s.totalSpent.toFixed(4)} SOL`),console.log(` Total Received: ${s.totalReceived.toFixed(4)} SOL`),console.log(` Realized P&L: ${s.realizedPL>=0?"+":""}${s.realizedPL.toFixed(4)} SOL`),console.log(` Unrealized P&L: ${s.unrealizedPL>=0?"+":""}${s.unrealizedPL.toFixed(4)} SOL`),console.log(` ROI: ${s.roi>=0?"+":""}${s.roi.toFixed(2)}%`),console.log(` Trades: ${i.length}`),i.length>0&&(console.log(E.muted(`
|
|
332
|
+
Recent trades:`)),i.slice(-5).forEach(l=>{let c=new Date(l.timestamp).toLocaleDateString();console.log(` ${c} ${l.type} ${l.tokenAmount.toFixed(0)} tokens @ ${l.pricePerToken.toFixed(8)} SOL`)}));try{let l=r();console.log(E.success(`
|
|
333
|
+
CSV exported: ${l}`))}catch(l){Z.warn("CLI","CSV export failed",{error:l.message})}process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t instanceof Error?t.message:String(t)}`)),process.exit(1)});(he==="keys"||he==="providers")&&(async()=>{let e=(await import("node:readline")).createInterface({input:process.stdin,output:process.stdout}),r=d=>new Promise(a=>e.question(d,a)),n=Tt.getAll(),o=$g(n),s=Og(n);if(console.log(E.accent(`
|
|
334
|
+
\u{1F511} AI Model Providers
|
|
335
|
+
`)),console.log(E.muted(" Configure AI model providers. Add at least one API key to get started.")),console.log(E.muted(` ${o.length}/${Ji.length} configured
|
|
336
|
+
`)),o.length>0){console.log(E.success(" Configured ("+o.length+")"));for(let d of o){let a=n[d.envVar]||"",h=a.slice(0,6)+"\u2022\u2022\u2022\u2022"+a.slice(-4);console.log(E.success(` \u2713 ${d.name.padEnd(28)} ${h}`))}}console.log(`
|
|
337
|
+
`+E.warn(" Unconfigured ("+s.length+")"));for(let d=0;d<s.length;d++){let a=s[d];console.log(E.muted(` ${String(d+1).padStart(2)}. ${a.name}`))}console.log(`
|
|
338
|
+
`+E.muted(" Enter number to add a key, 'r' to refresh models, or 'q' to quit:"));let i=(await r(" > ")).trim();i==="q"&&(e.close(),process.exit(0)),i==="r"&&(console.log(E.muted(`
|
|
339
|
+
Refreshing models from configured providers...`)),await gt.initialise(),console.log(E.success(` \u2713 ${gt.modelCount} models available from ${gt.getProviderCount()} providers`)),e.close(),process.exit(0));let l=parseInt(i)-1;(isNaN(l)||l<0||l>=s.length)&&(console.log(E.error(" Invalid selection.")),e.close(),process.exit(1));let c=s[l];console.log(E.accent(`
|
|
340
|
+
${c.name}`)),console.log(E.muted(` ${c.docsUrl}`)),console.log(E.muted(` Env var: ${c.envVar}
|
|
341
|
+
`));let f=(await r(` Enter ${c.name} API key: `)).trim();f||(console.log(E.error(" Key is required.")),e.close(),process.exit(1)),Tt.set(c.envVar,f),console.log(E.success(`
|
|
342
|
+
\u2713 ${c.name} key saved to ~/.aiaiai/.env`)),console.log(E.muted(" Fetching models from "+c.name+"..."));try{await gt.initialise();let d=gt.getProviderModels(c.id);console.log(E.success(` \u2713 ${d.length} models available from ${c.name}`)),console.log(E.success(` \u2713 ${gt.modelCount} total models from ${gt.getProviderCount()} providers`))}catch(d){console.log(E.warn(` \u26A0 Could not fetch models: ${d instanceof Error?d.message:String(d)}`))}e.close(),process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t.message}`)),process.exit(1)});if(he==="gmgn"||he==="gmgnhelp"){let t=Pt.slice(1);(t.length===0||t[0]==="help"||t[0]==="--help")&&(console.log(Pi()),process.exit(0)),(t[0]==="setup"||t[0]==="config"||t[0]==="key")&&(async()=>{let r=(await import("node:readline")).createInterface({input:process.stdin,output:process.stdout}),n=s=>new Promise(i=>r.question(s,i));console.log(E.accent(`
|
|
343
|
+
\u{1F50D} GMGN API Key Setup
|
|
344
|
+
`)),console.log(E.muted(` Get your API key at https://gmgn.ai/ai
|
|
345
|
+
`));let o=(await n(" Enter GMGN_API_KEY: ")).trim();o||(console.log(E.error(" Key is required.")),r.close(),process.exit(1)),Kp(o),console.log(E.success(`
|
|
346
|
+
\u2713 GMGN_API_KEY saved to ~/.config/gmgn/.env`)),console.log(E.muted(` All GMGN commands are now available.
|
|
347
|
+
`)),r.close(),process.exit(0)})().catch(e=>{console.error(E.error(`Error: ${e.message}`)),process.exit(1)}),t[0]==="status"&&(console.log($i()),process.exit(0));try{let e=["gmgn-cli",...t],r={};try{let o=es(Ir(tA(),".config","gmgn",".env"),"utf-8");for(let s of o.split(`
|
|
348
|
+
`)){let i=s.trim().match(/^([A-Z_]+)=(.*)$/);i&&(r[i[1]]=i[2])}}catch{Z.debug("CLI","No GMGN env file found (optional)")}let n=vC(e[0],e.slice(1),{env:{...process.env,...r},encoding:"utf-8",timeout:3e4});process.stdout.write(n)}catch(e){let r=e.stderr?.toString()||e.message||"";process.stderr.write(`gmgn-cli: ${r.slice(0,500)}
|
|
349
|
+
`),process.exit(e.status??1)}process.exit(0)}(he==="scan"||he==="security")&&(async()=>{let t=Pt[1];t||(console.log(E.error(" Usage: aiaiai scan <token-address>")),process.exit(1)),console.log(E.accent(`
|
|
350
|
+
\u{1F50D} Scanning token...
|
|
351
|
+
`));let e=await Qg("",{address:t});e.isError&&(console.log(e.content[0].text),process.exit(1)),console.log(e.content[0].text),console.log(""),process.exit(0)})().catch(t=>{console.error(E.error("Scan error: "+t.message)),process.exit(1)});(he==="update"||he==="upgrade")&&(async()=>{let t="@aiaiaichain/agent";console.log(E.accent(`
|
|
352
|
+
\u{1F916} AIAIAI Update Check
|
|
353
|
+
`));let e=rA(import.meta.url),r=eA(e),o=JSON.parse(es(Zg(r,"..","package.json"),"utf-8")).version;console.log(E.muted(` Current version: v${o}`));let s=null,i="";try{s=xu(`npm view ${t} version`,{encoding:"utf-8",timeout:15e3}).trim().split(`
|
|
354
|
+
`).pop()||null;try{let h=xu(`npm view ${t} --json`,{encoding:"utf-8",timeout:15e3}),p=JSON.parse(h);p.gitHead&&(i=`Git: ${p.gitHead.slice(0,8)}`)}catch{Z.debug("CLI","No changelog available (optional)")}}catch(a){Z.warn("CLI","Could not reach npm registry",{error:a.message}),console.log(E.error(" Could not reach npm registry. Check your connection.")),process.exit(1)}s||(console.log(E.error(" Could not determine latest version.")),process.exit(1)),console.log(E.muted(` Latest version: v${s}`)),i&&console.log(E.muted(` ${i}`)),s===o&&(console.log(E.success(`
|
|
355
|
+
\u2705 You're on the latest version!
|
|
356
|
+
`)),process.exit(0)),console.log(E.accent(`
|
|
357
|
+
\u26A1 Update available: v${o} \u2192 v${s}
|
|
358
|
+
`));let c=(await import("node:readline")).createInterface({input:process.stdin,output:process.stdout}),d=(await(a=>new Promise(h=>c.question(a,h)))(" Install update now? (y/n): ")).trim().toLowerCase();d!=="y"&&d!=="yes"&&(console.log(E.muted("\n Skipped. Run `aiaiai update` anytime to update.\n")),c.close(),process.exit(0)),console.log(E.muted(`
|
|
359
|
+
Installing update...`));try{xu(`npm install -g ${t}`,{stdio:"inherit",timeout:12e4}),console.log(E.success(`
|
|
360
|
+
\u2705 Updated to v${s}!`)),console.log(E.muted(" Run `aiaiai` to restart with new features.\n"))}catch(a){console.log(E.error(`
|
|
361
|
+
\u274C Update failed: ${a.message}`)),console.log(E.muted(` Try manually: npm install -g @aiaiaichain/agent
|
|
362
|
+
`))}c.close(),process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t.message}`)),process.exit(1)});(he==="health"||he==="doctor")&&(async()=>{console.log(E.accent(`
|
|
363
|
+
\u2705 AIAIAI Health Check
|
|
364
|
+
`));let t=!0;console.log(E.muted(" Config:")),ts(ln)?console.log(E.success(" .env found")):(console.log(E.warn(" .env not found \u2014 run: aiaiai setup")),t=!1),console.log(E.muted(" API Key:")),process.env.OPENROUTER_API_KEY||Tt.get("OPENROUTER_API_KEY")?console.log(E.success(" OPENROUTER_API_KEY set")):(console.log(E.warn(" OPENROUTER_API_KEY not set")),t=!1),console.log(E.muted(" Solana RPC:"));try{let{resilientFetch:r}=await Promise.resolve().then(()=>(ht(),mh)),n=process.env.SOLANA_RPC_URL||"https://api.mainnet-beta.solana.com";(await(await r(n,{timeout:1e4,retries:0,method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",id:1,method:"getHealth",params:[]})})).json()).result==="ok"?console.log(E.success(" RPC healthy: "+n)):(console.log(E.warn(" RPC responded but unhealthy")),t=!1)}catch(r){console.log(E.error(" RPC unreachable: "+r.message)),t=!1}console.log(E.muted(" Disk:"));try{let{writeFileSync:r,unlinkSync:n}=await import("node:fs"),o=Ir(Xn,".health-test");r(o,"test","utf-8"),n(o),console.log(E.success(" writable"))}catch(r){Z.warn("CLI","Disk not writable",{error:r.message}),console.log(E.error(" not writable")),t=!1}console.log(E.muted(`
|
|
365
|
+
Extras:`));try{let{getCurrentTheme:r}=await Promise.resolve().then(()=>(Vc(),ag));console.log(E.success(` Theme: ${r()} (run aiaiai to change)`))}catch{console.log(E.muted(" Theme: default"))}try{let{clipboardSupported:r}=await Promise.resolve().then(()=>(zc(),cg));console.log(E.muted(` Clipboard: ${r()}`))}catch{console.log(E.muted(" Clipboard: not available"))}try{let{hasWebhooks:r}=await Promise.resolve().then(()=>(eu(),hg));console.log(r()?E.success(" Webhooks: configured"):E.muted(" Webhooks: not configured (set WEBHOOK_DISCORD or WEBHOOK_TELEGRAM in .env)"))}catch{console.log(E.muted(" Webhooks: not available"))}console.log(E.muted(" Provider Keys:"));let e=[{name:"OpenRouter",key:"OPENROUTER_API_KEY"},{name:"Anthropic",key:"ANTHROPIC_API_KEY"},{name:"OpenAI",key:"OPENAI_API_KEY"},{name:"Google",key:"GOOGLE_API_KEY"},{name:"DeepSeek",key:"DEEPSEEK_API_KEY"},{name:"Groq",key:"GROQ_API_KEY"},{name:"GMGN",key:"GMGN_API_KEY"}];for(let r of e){let n=process.env[r.key]||Tt.get(r.key);console.log(n?E.success(` ${r.name}: \u2713`):E.dim(` ${r.name}: \u2717 (optional)`))}console.log(""),console.log(t?E.success(` All systems operational.
|
|
366
|
+
`):E.warn(` Some checks failed. Review above for details.
|
|
367
|
+
`)),process.exit(t?0:1)})().catch(t=>{console.error(E.error("Health check failed: "+t.message)),process.exit(2)});if(he==="sessions"){let t=Ve.list();t.length===0&&(console.log(E.muted(" No saved sessions.")),process.exit(0)),console.log(E.accent(`
|
|
368
|
+
\u{1F4C2} Saved Sessions
|
|
369
|
+
`)),t.slice(0,15).forEach((e,r)=>{let n=new Date(e.updatedAt).toLocaleDateString();console.log(E.muted(` ${String(r+1).padStart(2)}. ${e.title} (${e.messageCount} msgs, ${e.model}, ${n})`))}),console.log(""),process.exit(0)}if(he==="resume"){let t=Ve.list();t.length===0&&(console.log(E.muted(" No saved sessions.")),process.exit(0));let e=parseInt(process.argv[3])-1;(isNaN(e)||e<0||e>=t.length)&&(console.log(E.error(" Invalid session number.")),process.exit(1));let r=Ve.load(t[e].id);r||(console.log(E.error(" Session not found.")),process.exit(1)),console.log(E.accent(`
|
|
370
|
+
\u{1F4C2} Resumed: ${r.title}
|
|
371
|
+
`)),console.log(E.muted(` Messages: ${r.messages.length}`)),console.log(E.muted(` Model: ${r.model}`)),console.log(""),process.exit(0)}var zn=null,Xo=null;for(let t=0;t<Pt.length;t++)Pt[t]==="--extension"&&Pt[t+1]&&(zn=Pt[t+1]),Pt[t]==="--prompt"&&Pt[t+1]&&(Xo=Pt[t+1]);var Zo=kC;if(Xo&&ts(Xo)){let t=es(Xo,"utf-8");t.length>1e4&&(console.error(E.error("Prompt file too large (max 10KB).")),process.exit(1)),t=t.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"");let e=[/ignore (all |previous |above|prior) instructions/i,/you are now /i,/new instructions/i,/override (system|safety)/i];for(let r of e)r.test(t)&&(console.error(E.error("Prompt file contains suspicious patterns. Use a simpler prompt.")),process.exit(1));Zo=t,console.log(E.muted(" Custom prompt loaded: "+Xo))}var Vg=Pt.indexOf("--headless"),Hg=Vg>=0?Pt[Vg+1]:null;Hg?(async()=>{Ze.init();let t=new eo;if(t.setSystemPrompt(Zo),zn)try{await Cl(zn,t)}catch(l){process.stderr.write(`Extension load failed: ${l instanceof Error?l.message:String(l)}
|
|
372
|
+
`),process.exit(1)}await gt.initialise();let e=new Pn;e.setSystemPrompt(t.getSystemPrompt()||Zo);let r=$r(),o={ui:{notify:()=>{},setStatus:()=>{},setTheme:()=>{},setHeader:()=>{},showModelSelector:()=>{},theme:r},hasUI:!1,config:{OPENROUTER_API_KEY:process.env.OPENROUTER_API_KEY}};await t.fireHook("session_start",o);let s=0,i=new Rn(t,e,l=>{l.type==="text_delta"&&process.stdout.write(l.text),l.type==="turn_done"&&process.stdout.write(`
|
|
373
|
+
`),l.type==="error"&&(process.stderr.write(`
|
|
374
|
+
Error: ${l.message}
|
|
375
|
+
`),s=1)},o,"normal",gt);try{await i.run(Hg)}catch(l){process.stderr.write(`Runner error: ${l instanceof Error?l.message:String(l)}
|
|
376
|
+
`),s=1}await t.fireHook("session_end",o),process.exit(s)})():(async()=>{Ze.init(),console.clear(),console.log(E.accent(`
|
|
377
|
+
\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557
|
|
378
|
+
\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551
|
|
379
|
+
\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551
|
|
380
|
+
\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2551\u2588\u2588\u2551
|
|
381
|
+
\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551
|
|
382
|
+
\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D
|
|
383
|
+
`)),console.log(E.muted(` Solana-native AI agent \u2014 $AIAIAI \xB7 all local, zero exposure
|
|
384
|
+
`));let t=new eo;t.setSystemPrompt(Zo);let e=null,r=null,n=null;if(zn)try{console.log(E.muted(` Loading: ${zn}`)),await Cl(zn,t,{onNotify:s=>{e?.(s)},onStatusUpdate:(s,i)=>{r?.(s,i)},onShowModelSelector:s=>{n?.(s)}}),console.log(E.success(` \u2713 ${t.listTools().length} tools \xB7 ${t.listCommands().length} commands`))}catch(s){console.error(E.error(` \u2717 Extension load failed: ${s.message}`)),process.exit(1)}process.env.OPENROUTER_API_KEY||console.log(E.warn(` No API key found. Run: aiaiaichain setup
|
|
385
|
+
`));let o=new qi(gt);console.log(E.muted(" Discovering available models via OpenRouter\u2026")),await gt.initialise(),console.log(E.success(` \u2713 ${gt.modelCount} models available
|
|
386
|
+
`)),await new Promise(s=>setTimeout(s,500)),console.clear(),CC(Yg.createElement(Wi,{onError:s=>{Z.error("ErrorBoundary","UI render crash",{error:s.message})}},Yg.createElement(Bg,{registry:t,systemPrompt:Zo,chain:"solana",modelReg:gt,costTracker:o,onNotifyReady:s=>{e=s},onStatusReady:s=>{r=s},onModelSelectorReady:s=>{n=s}})),{exitOnCtrlC:!1}),process.prependListener("SIGWINCH",()=>{process.stdout.write("\x1B[2J\x1B[H")}),console.log=Gi,console.error=Gi,console.warn=Gi})();
|
|
732
387
|
|
|
733
|
-
(async () => {
|
|
734
|
-
AgentDir.init();
|
|
735
|
-
console.clear();
|
|
736
|
-
console.log(T.accent(`
|
|
737
|
-
█████╗ ██╗ █████╗ ██╗ █████╗ ██╗
|
|
738
|
-
██╔══██╗██║██╔══██╗██║██╔══██╗██║
|
|
739
|
-
███████║██║███████║██║███████║██║
|
|
740
|
-
██╔══██║██║██╔══██║██║██╔══██║██║
|
|
741
|
-
██║ ██║██║██║ ██║██║██║ ██║██║
|
|
742
|
-
╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═╝
|
|
743
|
-
`));
|
|
744
|
-
console.log(T.muted(" Solana-native AI agent — $AIAIAI · all local, zero exposure\n"));
|
|
745
|
-
const registry = new Registry();
|
|
746
|
-
registry.setSystemPrompt(systemPrompt);
|
|
747
|
-
let _notifyFn = null;
|
|
748
|
-
let _setStatusFn = null;
|
|
749
|
-
let _showModelSelectorFn = null;
|
|
750
|
-
if (extensionPath) {
|
|
751
|
-
try {
|
|
752
|
-
console.log(T.muted(` Loading: ${extensionPath}`));
|
|
753
|
-
await loadExtension(extensionPath, registry, {
|
|
754
|
-
onNotify: (msg) => { _notifyFn?.(msg); },
|
|
755
|
-
onStatusUpdate: (k, v) => { _setStatusFn?.(k, v); },
|
|
756
|
-
onShowModelSelector: (q) => { _showModelSelectorFn?.(q); },
|
|
757
|
-
});
|
|
758
|
-
console.log(T.success(` ✓ ${registry.listTools().length} tools · ${registry.listCommands().length} commands`));
|
|
759
|
-
}
|
|
760
|
-
catch (e) {
|
|
761
|
-
console.error(T.error(` ✗ Extension load failed: ${e.message}`));
|
|
762
|
-
process.exit(1);
|
|
763
|
-
}
|
|
764
|
-
}
|
|
765
|
-
if (!process.env.OPENROUTER_API_KEY) {
|
|
766
|
-
console.log(T.warn(" No API key found. Run: aiaiaichain setup\n"));
|
|
767
|
-
}
|
|
768
|
-
const costTracker = new CostTracker(modelRegistry);
|
|
769
|
-
console.log(T.muted(" Discovering available models via OpenRouter…"));
|
|
770
|
-
await modelRegistry.initialise();
|
|
771
|
-
console.log(T.success(` ✓ ${modelRegistry.modelCount} models available\n`));
|
|
772
|
-
await new Promise(r => setTimeout(r, 500));
|
|
773
|
-
console.clear();
|
|
774
|
-
render(React.createElement(App, {
|
|
775
|
-
registry,
|
|
776
|
-
systemPrompt,
|
|
777
|
-
chain: "solana",
|
|
778
|
-
modelReg: modelRegistry,
|
|
779
|
-
costTracker,
|
|
780
|
-
onNotifyReady: (fn) => { _notifyFn = fn; wireNotify(fn); },
|
|
781
|
-
onStatusReady: (fn) => { _setStatusFn = fn; },
|
|
782
|
-
onModelSelectorReady: (fn) => { _showModelSelectorFn = fn; },
|
|
783
|
-
}), { exitOnCtrlC: false });
|
|
784
|
-
process.prependListener("SIGWINCH", () => { process.stdout.write("\x1B[2J\x1B[H"); });
|
|
785
|
-
console.log = safeLog;
|
|
786
|
-
console.error = safeLog;
|
|
787
|
-
console.warn = safeLog;
|
|
788
|
-
})();
|
|
789
|
-
}
|