@aiaiaichain/agent 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/dist/api/ExtensionAPI.d.ts +0 -1
  2. package/dist/api/ExtensionAPI.js +3 -7
  3. package/dist/api/Registry.d.ts +0 -1
  4. package/dist/api/Registry.js +54 -57
  5. package/dist/cli.d.ts +0 -1
  6. package/dist/cli.js +364 -768
  7. package/dist/core/AgentDir.d.ts +1 -1
  8. package/dist/core/AgentDir.js +45 -39
  9. package/dist/core/ChainConfig.d.ts +0 -1
  10. package/dist/core/ChainConfig.js +51 -55
  11. package/dist/core/EnvLoader.d.ts +4 -1
  12. package/dist/core/EnvLoader.js +97 -84
  13. package/dist/core/SystemMonitor.d.ts +0 -1
  14. package/dist/core/SystemMonitor.js +70 -85
  15. package/dist/index.d.ts +4 -61
  16. package/dist/index.js +19 -26
  17. package/dist/loader.d.ts +0 -1
  18. package/dist/loader.js +64 -67
  19. package/dist/mcp/entry.d.ts +0 -1
  20. package/dist/mcp/entry.js +3 -6
  21. package/dist/mcp/server.d.ts +0 -1
  22. package/dist/mcp/server.js +152 -156
  23. package/dist/models/CostTracker.d.ts +0 -1
  24. package/dist/models/CostTracker.js +58 -61
  25. package/dist/models/ModelRegistry.d.ts +0 -1
  26. package/dist/models/ModelRegistry.js +195 -155
  27. package/dist/providers/ProviderRegistry.d.ts +0 -1
  28. package/dist/providers/ProviderRegistry.js +33 -36
  29. package/dist/runner/AgentRunner.d.ts +0 -1
  30. package/dist/runner/AgentRunner.js +180 -184
  31. package/dist/runner/ModelClient.d.ts +0 -1
  32. package/dist/runner/ModelClient.js +133 -134
  33. package/dist/runner/SwarmRouter.d.ts +0 -1
  34. package/dist/runner/SwarmRouter.js +17 -22
  35. package/dist/runner/ToolDispatcher.d.ts +0 -1
  36. package/dist/runner/ToolDispatcher.js +30 -33
  37. package/dist/scheduler/AgentScheduler.d.ts +0 -1
  38. package/dist/scheduler/AgentScheduler.js +99 -103
  39. package/dist/session/ContextStore.d.ts +1 -1
  40. package/dist/session/ContextStore.js +76 -78
  41. package/dist/session/GoalManager.d.ts +0 -1
  42. package/dist/session/GoalManager.js +96 -100
  43. package/dist/session/MemoryStore.d.ts +2 -1
  44. package/dist/session/MemoryStore.js +108 -87
  45. package/dist/session/SessionManager.d.ts +5 -4
  46. package/dist/session/SessionManager.js +83 -62
  47. package/dist/session/SessionStore.d.ts +0 -1
  48. package/dist/session/SessionStore.js +112 -116
  49. package/dist/setup/SetupWizard.d.ts +0 -1
  50. package/dist/setup/SetupWizard.js +61 -64
  51. package/dist/tools/CrossTools.d.ts +0 -1
  52. package/dist/tools/CrossTools.js +140 -144
  53. package/dist/tools/GmgnIntegration.d.ts +0 -1
  54. package/dist/tools/GmgnIntegration.js +220 -230
  55. package/dist/tools/MarketSentiment.d.ts +0 -1
  56. package/dist/tools/MarketSentiment.js +213 -195
  57. package/dist/tools/NewsSentiment.d.ts +0 -1
  58. package/dist/tools/NewsSentiment.js +126 -130
  59. package/dist/tools/PriceFeed.d.ts +6 -1
  60. package/dist/tools/PriceFeed.js +201 -133
  61. package/dist/tools/TechnicalAnalysis.d.ts +1 -2
  62. package/dist/tools/TechnicalAnalysis.js +248 -216
  63. package/dist/tools/TechnicalAnalysis.worker.d.ts +25 -0
  64. package/dist/tools/TechnicalAnalysis.worker.js +92 -0
  65. package/dist/tools/TokenCalendar.d.ts +0 -1
  66. package/dist/tools/TokenCalendar.js +63 -68
  67. package/dist/tools/TokenSecurityScanner.d.ts +0 -1
  68. package/dist/tools/TokenSecurityScanner.js +93 -96
  69. package/dist/tools/TransactionSim.d.ts +0 -1
  70. package/dist/tools/TransactionSim.js +65 -71
  71. package/dist/tui/App.d.ts +1 -7
  72. package/dist/tui/App.js +896 -825
  73. package/dist/tui/ModelSelector.d.ts +1 -3
  74. package/dist/tui/ModelSelector.js +47 -50
  75. package/dist/tui/REPL.d.ts +1 -3
  76. package/dist/tui/REPL.js +222 -210
  77. package/dist/tui/Sparkline.d.ts +1 -3
  78. package/dist/tui/Sparkline.js +38 -37
  79. package/dist/tui/StatusBar.d.ts +1 -3
  80. package/dist/tui/StatusBar.js +11 -10
  81. package/dist/tui/ThemePresets.d.ts +0 -1
  82. package/dist/tui/ThemePresets.js +99 -103
  83. package/dist/tui/theme.d.ts +0 -1
  84. package/dist/tui/theme.js +50 -31
  85. package/dist/util/clipboard.d.ts +0 -1
  86. package/dist/util/clipboard.js +16 -20
  87. package/dist/util/commandSuggest.d.ts +0 -1
  88. package/dist/util/commandSuggest.js +34 -38
  89. package/dist/util/confirmation.d.ts +0 -1
  90. package/dist/util/confirmation.js +8 -11
  91. package/dist/util/errorHandler.d.ts +0 -1
  92. package/dist/util/errorHandler.js +20 -23
  93. package/dist/util/errors.d.ts +59 -0
  94. package/dist/util/errors.js +93 -0
  95. package/dist/util/logger.d.ts +0 -1
  96. package/dist/util/logger.js +30 -33
  97. package/dist/util/processManager.d.ts +0 -1
  98. package/dist/util/processManager.js +33 -36
  99. package/dist/util/resilientFetch.d.ts +6 -1
  100. package/dist/util/resilientFetch.js +134 -80
  101. package/dist/util/responseCache.d.ts +0 -1
  102. package/dist/util/responseCache.js +36 -45
  103. package/dist/util/rpc.d.ts +16 -0
  104. package/dist/util/rpc.js +69 -0
  105. package/dist/util/safeLog.d.ts +0 -1
  106. package/dist/util/safeLog.js +52 -53
  107. package/dist/util/scheduler.d.ts +0 -1
  108. package/dist/util/scheduler.js +53 -58
  109. package/dist/util/webhooks.d.ts +0 -1
  110. package/dist/util/webhooks.js +54 -58
  111. package/dist/wallet/ActionFeed.d.ts +0 -1
  112. package/dist/wallet/ActionFeed.js +189 -200
  113. package/dist/wallet/AgentWallet.d.ts +7 -8
  114. package/dist/wallet/AgentWallet.js +117 -144
  115. package/dist/wallet/ProfitTracker.d.ts +0 -1
  116. package/dist/wallet/ProfitTracker.js +71 -74
  117. package/package.json +14 -8
  118. package/scripts/build-esbuild.mjs +40 -0
  119. package/scripts/bundle-dts.mjs +58 -0
  120. package/scripts/minify.mjs +44 -0
  121. package/scripts/postinstall.js +41 -0
package/dist/cli.js CHANGED
@@ -1,55 +1,308 @@
1
- /**
2
- * cli.ts — AIAIAI Chain Agent entry point.
3
- * Fully local, all outbound no inbound ports.
4
- */
5
- import { readFileSync, existsSync } from "node:fs";
6
- import { resolve, join, dirname } from "node:path";
7
- import { homedir } from "node:os";
8
- import { fileURLToPath } from "node:url";
9
- import { execSync } from "node:child_process";
10
- import { render } from "ink";
11
- import React from "react";
12
- import { config as loadDotenv } from "dotenv";
13
- import { Registry } from "./api/Registry.js";
14
- import { loadExtension } from "./loader.js";
15
- import { App } from "./tui/App.js";
16
- import { T } from "./tui/theme.js";
17
- import { wireNotify, safeLog } from "./util/safeLog.js";
18
- import { logger } from "./util/logger.js";
19
- import { modelRegistry } from "./models/ModelRegistry.js";
20
- import { CostTracker } from "./models/CostTracker.js";
21
- import { AgentRunner } from "./runner/AgentRunner.js";
22
- import { SessionManager } from "./session/SessionManager.js";
23
- import { makeTheme } from "./tui/theme.js";
24
- import { AgentDir } from "./core/AgentDir.js";
25
- import { priceFeed } from "./tools/PriceFeed.js";
26
- import { agentWallet, DEPOSIT_WALLET, ACTION_WALLET, HOT_WALLET } from "./wallet/AgentWallet.js";
27
- import { PROVIDERS, getConfigured, getUnconfigured } from "./providers/ProviderRegistry.js";
28
- import { env } from "./core/EnvLoader.js";
29
- import { gmgnHelp, gmgnStatus, saveGmgnApiKey } from "./tools/GmgnIntegration.js";
30
- import { scanTokenSecurityTool } from "./tools/TokenSecurityScanner.js";
31
- import { sessionStore } from "./session/SessionStore.js";
32
- const AIAIAI_HOME = process.env.AIAIAI_HOME ?? join(homedir(), ".aiaiai");
33
- const envPath = join(AIAIAI_HOME, ".env");
34
- if (existsSync(envPath))
35
- loadDotenv({ path: envPath, override: false });
36
- const SYSTEM_PROMPT = `You are AIAIAI Chain Agent a Solana-native autonomous AI agent.
1
+ var eA=Object.create;var ea=Object.defineProperty;var tA=Object.getOwnPropertyDescriptor;var rA=Object.getOwnPropertyNames;var nA=Object.getPrototypeOf,oA=Object.prototype.hasOwnProperty;var ae=(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 ve=(t,e)=>()=>(t&&(e=t(t=0)),e);var Je=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),xt=(t,e)=>{for(var r in e)ea(t,r,{get:e[r],enumerable:!0})},sA=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of rA(e))!oA.call(t,o)&&o!==r&&ea(t,o,{get:()=>e[o],enumerable:!(n=tA(e,o))||n.enumerable});return t};var ta=(t,e,r)=>(r=t!=null?eA(nA(t)):{},sA(e||!t||!t.__esModule?ea(r,"default",{value:t,enumerable:!0}):r,t));var bu=Je((yC,iA)=>{iA.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 ku=Je((wC,Yt)=>{var ra=ae("fs"),rs=ae("path"),aA=ae("os"),cA=ae("crypto"),lA=bu(),na=lA.version,uA=/(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg;function dA(t){let e={},r=t.toString();r=r.replace(/\r\n?/mg,`
2
+ `);let n;for(;(n=uA.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 fA(t){t=t||{};let e=Cu(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=vu(t).split(","),o=n.length,s;for(let i=0;i<o;i++)try{let l=n[i].trim(),c=hA(r,l);s=Fe.decrypt(c.ciphertext,c.key);break}catch(l){if(i+1>=o)throw l}return Fe.parse(s)}function mA(t){console.log(`[dotenv@${na}][WARN] ${t}`)}function Zn(t){console.log(`[dotenv@${na}][DEBUG] ${t}`)}function xu(t){console.log(`[dotenv@${na}] ${t}`)}function vu(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 hA(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 Cu(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=rs.resolve(process.cwd(),".env.vault");return ra.existsSync(e)?e:null}function Eu(t){return t[0]==="~"?rs.join(aA.homedir(),t.slice(1)):t}function pA(t){let e=!!(t&&t.debug),r=t&&"quiet"in t?t.quiet:!0;(e||!r)&&xu("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 gA(t){let e=rs.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=[Eu(t.path)];else{s=[];for(let f of t.path)s.push(Eu(f))}let i,l={};for(let f of s)try{let u=Fe.parse(ra.readFileSync(f,{encoding:r}));Fe.populate(l,u,t)}catch(u){n&&Zn(`Failed to load ${f} ${u.message}`),i=u}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,u=[];for(let a of s)try{let h=rs.relative(process.cwd(),a);u.push(h)}catch(h){n&&Zn(`Failed to load ${a} ${h.message}`),i=h}xu(`injecting env (${f}) from ${u.join(",")}`)}return i?{parsed:l,error:i}:{parsed:l}}function AA(t){if(vu(t).length===0)return Fe.configDotenv(t);let e=Cu(t);return e?Fe._configVault(t):(mA(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),Fe.configDotenv(t))}function yA(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=cA.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 u=new Error("INVALID_DOTENV_KEY: It must be 64 characters long (or more)");throw u.code="INVALID_DOTENV_KEY",u}else if(f){let u=new Error("DECRYPTION_FAILED: Please check your DOTENV_KEY");throw u.code="DECRYPTION_FAILED",u}else throw i}}function wA(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:gA,_configVault:pA,_parseVault:fA,config:AA,decrypt:yA,parse:dA,populate:wA};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 bA,_u,EA,xA,vt,Tu,Iu,un,Bu,Ru,to=ve(()=>{bA=Object.defineProperty,_u=(t,e)=>bA(t,"name",{value:e,configurable:!0}),EA=_u((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"),xA=process.versions.node.split(".").map(Number),vt=_u((t,e=xA)=>{for(let r=0;r<t.length;r+=1){let n=t[r];if(r===t.length-1||e[0]===n[0])return EA(e,n)}return!1},"isFeatureSupported"),Tu=[[24,11,1],[25,1,0],[26,0,0]],Iu=[[18,19,0],[20,10,0],[21,0,0]],un=[[20,11,0],[21,3,0]],Bu=[[20,11,0],[21,2,0]],Ru=[[20,19,0],[22,12,0],[23,0,0]]});import vA from"node:path";import Ou from"node:os";var Pu,CA,ns,os=ve(()=>{({geteuid:Pu}=process),CA=Pu?Pu():Ou.userInfo().username,ns=vA.join(Ou.tmpdir(),`tsx-${CA}`)});import{createRequire as _A}from"module";import TA from"node:path";var kA,SA,$r,IA,$u,ro=ve(()=>{os();kA=Object.defineProperty,SA=(t,e)=>kA(t,"name",{value:e,configurable:!0}),$r=_A(import.meta.url),IA=process.platform==="win32",$u=SA(t=>{let e=TA.join(ns,`${t}.pipe`);return IA?`\\\\?\\pipe\\${e}`:e},"getPipePath")});var ua=Je((RC,sd)=>{"use strict";var la=Object.defineProperty,BA=Object.getOwnPropertyDescriptor,RA=Object.getOwnPropertyNames,PA=Object.prototype.hasOwnProperty,OA=(t,e)=>{for(var r in e)la(t,r,{get:e[r],enumerable:!0})},$A=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of RA(e))!PA.call(t,o)&&o!==r&&la(t,o,{get:()=>e[o],enumerable:!(n=BA(e,o))||n.enumerable});return t},LA=t=>$A(la({},"__esModule",{value:!0}),t),io={};OA(io,{analyzeMetafile:()=>f0,analyzeMetafileSync:()=>g0,build:()=>c0,buildSync:()=>m0,context:()=>l0,default:()=>b0,formatMessages:()=>d0,formatMessagesSync:()=>p0,initialize:()=>y0,stop:()=>A0,transform:()=>u0,transformSync:()=>h0,version:()=>a0});sd.exports=LA(io);function Lu(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($t(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($t(s)),e(n[s])}},r=new Gu;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 QA(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 Gu(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 Gu=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 qu(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}},$t,Mr,sa;if(typeof TextEncoder<"u"&&typeof TextDecoder<"u"){let t=new TextEncoder,e=new TextDecoder;$t=r=>t.encode(r),Mr=r=>e.decode(r),sa='new TextEncoder().encode("")'}else if(typeof Buffer<"u")$t=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(!($t("")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 qu(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 Ht=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 ${Ht(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 DA(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 u;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),u=!0;break}case 102:{(t[c++]!==97||t[c++]!==108||t[c++]!==115||t[c++]!==101)&&Ct(t,--c),u=!1;break}case 110:{(t[c++]!==117||t[c++]!==108||t[c++]!==108)&&Ct(t,--c),u=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(u=Ht(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:{u+=Ht(f),f=t[++c];continue}}break}u=+u,isNaN(u)&&Ct(t,--a,"Invalid number");break}case 34:{for(u="";c>=o&&Ct(t,o),f=t[c++],f!==34;)if(f===92)switch(t[c++]){case 34:u+='"';break;case 47:u+="/";break;case 92:u+="\\";break;case 98:u+="\b";break;case 102:u+="\f";break;case 110:u+=`
9
+ `;break;case 114:u+="\r";break;case 116:u+=" ";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);u+=Ht(a);break}default:Ct(t,--c);break}else if(f<=127)u+=Ht(f);else if((f&224)===192)u+=Ht((f&31)<<6|t[c++]&63);else if((f&240)===224)u+=Ht((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,u+=Ht(a>>10&1023|55296),a=56320|a&1023),u+=Ht(a)}u[0];break}case 91:{u=[],e.push(s),r.push(l),n.push(i),s=null,l=u,i=1;continue}case 123:{u={},e.push(s),r.push(l),n.push(i),s=null,l=u,i=2;continue}case 93:{i!==1&&Ct(t,--c),u=l,s=e.pop(),l=r.pop(),i=n.pop();break}case 125:{i!==2&&Ct(t,--c),u=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 u;break}case 1:{if(l.push(u),f===44){c++;continue}if(f===93)continue;break}case 2:{if(s===null){if(s=u,f===58){c++;continue}}else{if(l[s]=u,s=null,f===44){c++;continue}if(f===125)continue}break}}break}Ct(t,c)}var Ne=JSON.stringify,Qu="warning",Du="silent";function fn(t,e){let r=[];for(let n of t){if(ft(n,e),n.indexOf(",")>=0)throw new Error(`Invalid ${e}: ${n}`);r.push(n)}return r.join(",")}var as=()=>null,Se=t=>typeof t=="boolean"?null:"a boolean",Z=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",NA=t=>typeof t=="number"&&t===(t|0)&&t>=0&&t<=65535?null:"a valid port number",Ju=t=>typeof t=="function"?null:"a function",Vt=t=>Array.isArray(t)?null:"an array",mt=t=>Array.isArray(t)&&t.every(e=>typeof e=="string")?null:"an array of strings",yt=t=>typeof t=="object"&&t!==null&&!Array.isArray(t)?null:"an object",MA=t=>typeof t=="object"&&t!==null?null:"an array or an object",FA=t=>t instanceof WebAssembly.Module?null:"a WebAssembly.Module",Nu=t=>typeof t=="object"&&!Array.isArray(t)?null:"an object or null",Yu=t=>typeof t=="string"||typeof t=="boolean"?null:"a string or a boolean",UA=t=>typeof t=="string"||typeof t=="object"&&t!==null&&!Array.isArray(t)?null:"a string or an object",Hu=t=>typeof t=="string"||Array.isArray(t)&&t.every(e=>typeof e=="string")?null:"a string or an array of strings",Vu=t=>typeof t=="string"||t instanceof Uint8Array?null:"a string or a Uint8Array",jA=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 KA(t){let e=Object.create(null),r=_(t,e,"wasmURL",jA),n=_(t,e,"wasmModule",FA),o=_(t,e,"worker",Se);return De(t,e,"in initialize() call"),{wasmURL:r,wasmModule:n,worker:o}}function zu(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 ms(t,e,r,n,o){let s=_(e,r,"color",Se),i=_(e,r,"logLevel",Z),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 ft(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 Xu(t,e,r){let n=_(e,r,"legalComments",Z),o=_(e,r,"sourceRoot",Z),s=_(e,r,"sourcesContent",Se),i=_(e,r,"target",Hu),l=_(e,r,"format",Z),c=_(e,r,"globalName",Z),f=_(e,r,"mangleProps",cs),u=_(e,r,"reserveProps",cs),a=_(e,r,"mangleQuoted",Se),h=_(e,r,"minify",Se),p=_(e,r,"minifySyntax",Se),A=_(e,r,"minifyWhitespace",Se),C=_(e,r,"minifyIdentifiers",Se),g=_(e,r,"lineLimit",Qr),w=_(e,r,"drop",mt),$=_(e,r,"dropLabels",mt),k=_(e,r,"charset",Z),I=_(e,r,"treeShaking",Se),v=_(e,r,"ignoreAnnotations",Se),S=_(e,r,"jsx",Z),B=_(e,r,"jsxFactory",Z),U=_(e,r,"jsxFragment",Z),D=_(e,r,"jsxImportSource",Z),Q=_(e,r,"jsxDev",Se),O=_(e,r,"jsxSideEffects",Se),L=_(e,r,"define",yt),F=_(e,r,"logOverride",yt),W=_(e,r,"supported",yt),V=_(e,r,"pure",mt),oe=_(e,r,"keepNames",Se),te=_(e,r,"platform",Z),ie=_(e,r,"tsconfigRaw",UA),re=_(e,r,"absPaths",mt);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}`),te&&t.push(`--platform=${te}`),ie&&t.push(`--tsconfig-raw=${typeof ie=="string"?ie:JSON.stringify(ie)}`),h&&t.push("--minify"),p&&t.push("--minify-syntax"),A&&t.push("--minify-whitespace"),C&&t.push("--minify-identifiers"),g&&t.push(`--line-limit=${g}`),k&&t.push(`--charset=${k}`),I!==void 0&&t.push(`--tree-shaking=${I}`),v&&t.push("--ignore-annotations"),w)for(let J of w)t.push(`--drop:${ft(J,"drop")}`);if($&&t.push(`--drop-labels=${fn($,"drop label")}`),re&&t.push(`--abs-paths=${fn(re,"abs paths")}`),f&&t.push(`--mangle-props=${ls(f)}`),u&&t.push(`--reserve-props=${ls(u)}`),a!==void 0&&t.push(`--mangle-quoted=${a}`),S&&t.push(`--jsx=${S}`),B&&t.push(`--jsx-factory=${B}`),U&&t.push(`--jsx-fragment=${U}`),D&&t.push(`--jsx-import-source=${D}`),Q&&t.push("--jsx-dev"),O&&t.push("--jsx-side-effects"),L)for(let J in L){if(J.indexOf("=")>=0)throw new Error(`Invalid define: ${J}`);t.push(`--define:${J}=${ft(L[J],"define",J)}`)}if(F)for(let J in F){if(J.indexOf("=")>=0)throw new Error(`Invalid log override: ${J}`);t.push(`--log-override:${J}=${ft(F[J],"log override",J)}`)}if(W)for(let J in W){if(J.indexOf("=")>=0)throw new Error(`Invalid supported: ${J}`);let le=W[J];if(typeof le!="boolean")throw new Error(`Expected value for supported ${Ne(J)} to be a boolean, got ${typeof le} instead`);t.push(`--supported:${J}=${le}`)}if(V)for(let J of V)t.push(`--pure:${ft(J,"pure")}`);oe&&t.push("--keep-names")}function WA(t,e,r,n,o){var s;let i=[],l=[],c=Object.create(null),f=null,u=null;ms(i,e,c,r,n),Xu(i,e,c);let a=_(e,c,"sourcemap",Yu),h=_(e,c,"bundle",Se),p=_(e,c,"splitting",Se),A=_(e,c,"preserveSymlinks",Se),C=_(e,c,"metafile",Se),g=_(e,c,"outfile",Z),w=_(e,c,"outdir",Z),$=_(e,c,"outbase",Z),k=_(e,c,"tsconfig",Z),I=_(e,c,"resolveExtensions",mt),v=_(e,c,"nodePaths",mt),S=_(e,c,"mainFields",mt),B=_(e,c,"conditions",mt),U=_(e,c,"external",mt),D=_(e,c,"packages",Z),Q=_(e,c,"alias",yt),O=_(e,c,"loader",yt),L=_(e,c,"outExtension",yt),F=_(e,c,"publicPath",Z),W=_(e,c,"entryNames",Z),V=_(e,c,"chunkNames",Z),oe=_(e,c,"assetNames",Z),te=_(e,c,"inject",mt),ie=_(e,c,"banner",yt),re=_(e,c,"footer",yt),J=_(e,c,"entryPoints",MA),le=_(e,c,"absWorkingDir",Z),ue=_(e,c,"stdin",yt),ce=(s=_(e,c,"write",Se))!=null?s:o,ye=_(e,c,"allowOverwrite",Se),we=_(e,c,"mangleCache",yt);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"),A&&i.push("--preserve-symlinks"),C&&i.push("--metafile"),g&&i.push(`--outfile=${g}`),w&&i.push(`--outdir=${w}`),$&&i.push(`--outbase=${$}`),k&&i.push(`--tsconfig=${k}`),D&&i.push(`--packages=${D}`),I&&i.push(`--resolve-extensions=${fn(I,"resolve extension")}`),F&&i.push(`--public-path=${F}`),W&&i.push(`--entry-names=${W}`),V&&i.push(`--chunk-names=${V}`),oe&&i.push(`--asset-names=${oe}`),S&&i.push(`--main-fields=${fn(S,"main field")}`),B&&i.push(`--conditions=${fn(B,"condition")}`),U)for(let T of U)i.push(`--external:${ft(T,"external")}`);if(Q)for(let T in Q){if(T.indexOf("=")>=0)throw new Error(`Invalid package name in alias: ${T}`);i.push(`--alias:${T}=${ft(Q[T],"alias",T)}`)}if(ie)for(let T in ie){if(T.indexOf("=")>=0)throw new Error(`Invalid banner file type: ${T}`);i.push(`--banner:${T}=${ft(ie[T],"banner",T)}`)}if(re)for(let T in re){if(T.indexOf("=")>=0)throw new Error(`Invalid footer file type: ${T}`);i.push(`--footer:${T}=${ft(re[T],"footer",T)}`)}if(te)for(let T of te)i.push(`--inject:${ft(T,"inject")}`);if(O)for(let T in O){if(T.indexOf("=")>=0)throw new Error(`Invalid loader extension: ${T}`);i.push(`--loader:${T}=${ft(O[T],"loader",T)}`)}if(L)for(let T in L){if(T.indexOf("=")>=0)throw new Error(`Invalid out extension: ${T}`);i.push(`--out-extension:${T}=${ft(L[T],"out extension",T)}`)}if(J)if(Array.isArray(J))for(let T=0,He=J.length;T<He;T++){let Pe=J[T];if(typeof Pe=="object"&&Pe!==null){let tt=Object.create(null),ut=_(Pe,tt,"in",Z),qe=_(Pe,tt,"out",Z);if(De(Pe,tt,"in entry point at index "+T),ut===void 0)throw new Error('Missing property "in" for entry point at index '+T);if(qe===void 0)throw new Error('Missing property "out" for entry point at index '+T);l.push([qe,ut])}else l.push(["",ft(Pe,"entry point at index "+T)])}else for(let T in J)l.push([T,ft(J[T],"entry point",T)]);if(ue){let T=Object.create(null),He=_(ue,T,"contents",Vu),Pe=_(ue,T,"resolveDir",Z),tt=_(ue,T,"sourcefile",Z),ut=_(ue,T,"loader",Z);De(ue,T,'in "stdin" object'),tt&&i.push(`--sourcefile=${tt}`),ut&&i.push(`--loader=${ut}`),Pe&&(u=Pe),typeof He=="string"?f=$t(He):He instanceof Uint8Array&&(f=He)}let be=[];if(v)for(let T of v)T+="",be.push(T);return{entries:l,flags:i,write:ce,stdinContents:f,stdinResolveDir:u,absWorkingDir:le,nodePaths:be,mangleCache:zu(we)}}function GA(t,e,r,n){let o=[],s=Object.create(null);ms(o,e,s,r,n),Xu(o,e,s);let i=_(e,s,"sourcemap",Yu),l=_(e,s,"sourcefile",Z),c=_(e,s,"loader",Z),f=_(e,s,"banner",Z),u=_(e,s,"footer",Z),a=_(e,s,"mangleCache",yt);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}`),u&&o.push(`--footer=${u}`),{flags:o,mangleCache:zu(a)}}function Zu(t){let e={},r={didClose:!1,reason:""},n={},o=0,s=0,i=new Uint8Array(16*1024),l=0,c=k=>{let I=l+k.length;if(I>i.length){let S=new Uint8Array(I*2);S.set(i),i=S}i.set(k,l),l+=k.length;let v=0;for(;v+4<=l;){let S=qu(i,v);if(v+4+S>l)break;v+=4,A(i.subarray(v,v+S)),v+=S}v>0&&(i.copyWithin(0,v,l),l-=v)},f=k=>{r.didClose=!0,k&&(r.reason=": "+(k.message||k));let I="The service was stopped"+r.reason;for(let v in n)n[v](I,null);n={}},u=(k,I,v)=>{if(r.didClose)return v("The service is no longer running"+r.reason,null);let S=o++;n[S]=(B,U)=>{try{v(B,U)}finally{k&&k.unref()}},k&&k.ref(),t.writeToStdin(Lu({id:S,isRequest:!0,value:I}))},a=(k,I)=>{if(r.didClose)throw new Error("The service is no longer running"+r.reason);t.writeToStdin(Lu({id:k,isRequest:!1,value:I}))},h=async(k,I)=>{try{if(I.command==="ping"){a(k,{});return}if(typeof I.key=="number"){let v=e[I.key];if(!v)return;let S=v[I.command];if(S){await S(k,I);return}}throw new Error("Invalid command: "+I.command)}catch(v){let S=[Lr(v,t,null,void 0,"")];try{a(k,{errors:S})}catch{}}},p=!0,A=k=>{if(p){p=!1;let v=String.fromCharCode(...k);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 I=QA(k);if(I.isRequest)h(I.id,I.value);else{let v=n[I.id];delete n[I.id],I.value.error?v(I.value.error,{}):v(null,I.value)}};return{readFromStdout:c,afterClose:f,service:{buildOrContext:({callName:k,refs:I,options:v,isTTY:S,defaultWD:B,callback:U})=>{let D=0,Q=s++,O={},L={ref(){++D===1&&I&&I.ref()},unref(){--D===0&&(delete e[Q],I&&I.unref())}};e[Q]=O,L.ref(),qA(k,Q,u,a,L,t,O,v,S,B,(F,W)=>{try{U(F,W)}finally{L.unref()}})},transform:({callName:k,refs:I,input:v,options:S,isTTY:B,fs:U,callback:D})=>{let Q=ed(),O=L=>{try{if(typeof v!="string"&&!(v instanceof Uint8Array))throw new Error('The input to "transform" must be a string or a Uint8Array');let{flags:F,mangleCache:W}=GA(k,S,B,Du),V={command:"transform",flags:F,inputFS:L!==null,input:L!==null?$t(L):typeof v=="string"?$t(v):v};W&&(V.mangleCache=W),u(I,V,(oe,te)=>{if(oe)return D(new Error(oe),null);let ie=mn(te.errors,Q),re=mn(te.warnings,Q),J=1,le=()=>{if(--J===0){let ue={warnings:re,code:te.code,map:te.map,mangleCache:void 0,legalComments:void 0};"legalComments"in te&&(ue.legalComments=te?.legalComments),te.mangleCache&&(ue.mangleCache=te?.mangleCache),D(null,ue)}};if(ie.length>0)return D(oo("Transform failed",ie,re),null);te.codeFS&&(J++,U.readFile(te.code,(ue,ce)=>{ue!==null?D(ue,null):(te.code=ce,le())})),te.mapFS&&(J++,U.readFile(te.map,(ue,ce)=>{ue!==null?D(ue,null):(te.map=ce,le())})),le()})}catch(F){let W=[];try{ms(W,S,{},B,Du)}catch{}let V=Lr(F,t,Q,void 0,"");u(I,{command:"error",flags:W,error:V},()=>{V.detail=Q.load(V.detail),D(oo("Transform failed",[V],[]),null)})}};if((typeof v=="string"||v instanceof Uint8Array)&&v.length>1024*1024){let L=O;O=()=>U.writeFile(v,L)}O(null)},formatMessages:({callName:k,refs:I,messages:v,options:S,callback:B})=>{if(!S)throw new Error(`Missing second argument in ${k}() call`);let U={},D=_(S,U,"kind",Z),Q=_(S,U,"color",Se),O=_(S,U,"terminalWidth",Qr);if(De(S,U,`in ${k}() call`),D===void 0)throw new Error(`Missing "kind" in ${k}() call`);if(D!=="error"&&D!=="warning")throw new Error(`Expected "kind" to be "error" or "warning" in ${k}() call`);let L={command:"format-msgs",messages:zt(v,"messages",null,"",O),isWarning:D==="warning"};Q!==void 0&&(L.color=Q),O!==void 0&&(L.terminalWidth=O),u(I,L,(F,W)=>{if(F)return B(new Error(F),null);B(null,W.messages)})},analyzeMetafile:({callName:k,refs:I,metafile:v,options:S,callback:B})=>{S===void 0&&(S={});let U={},D=_(S,U,"color",Se),Q=_(S,U,"verbose",Se);De(S,U,`in ${k}() call`);let O={command:"analyze-metafile",metafile:v};D!==void 0&&(O.color=D),Q!==void 0&&(O.verbose=Q),u(I,O,(L,F)=>{if(L)return B(new Error(L),null);B(null,F.result)})}}}}function qA(t,e,r,n,o,s,i,l,c,f,u){let a=ed(),h=t==="context",p=(g,w)=>{let $=[];try{ms($,l,{},c,Qu)}catch{}let k=Lr(g,s,a,void 0,w);r(o,{command:"error",flags:$,error:k},()=>{k.detail=a.load(k.detail),u(oo(h?"Context failed":"Build failed",[k],[]),null)})},A;if(typeof l=="object"){let g=l.plugins;if(g!==void 0){if(!Array.isArray(g))return p(new Error('"plugins" must be an array'),"");A=g}}if(A&&A.length>0){if(s.isSync)return p(new Error("Cannot use plugins in synchronous API calls"),"");JA(e,r,n,o,s,i,l,A,a).then(g=>{if(!g.ok)return p(g.error,g.pluginName);try{C(g.requestPlugins,g.runOnEndCallbacks,g.scheduleOnDisposeCallbacks)}catch(w){p(w,"")}},g=>p(g,""));return}try{C(null,(g,w)=>w([],[]),()=>{})}catch(g){p(g,"")}function C(g,w,$){let k=s.hasFS,{entries:I,flags:v,write:S,stdinContents:B,stdinResolveDir:U,absWorkingDir:D,nodePaths:Q,mangleCache:O}=WA(t,l,c,Qu,k);if(S&&!s.hasFS)throw new Error('The "write" option is unavailable in this environment');let L={command:"build",key:e,entries:I,flags:v,write:S,stdinContents:B,stdinResolveDir:U,absWorkingDir:D||f,nodePaths:Q,context:h};g&&(L.plugins=g),O&&(L.mangleCache=O);let F=(oe,te)=>{let ie={errors:mn(oe.errors,a),warnings:mn(oe.warnings,a),outputFiles:void 0,metafile:void 0,mangleCache:void 0},re=ie.errors.slice(),J=ie.warnings.slice();oe.outputFiles&&(ie.outputFiles=oe.outputFiles.map(HA)),oe.metafile&&oe.metafile.length&&(ie.metafile=VA(oe.metafile)),oe.mangleCache&&(ie.mangleCache=oe.mangleCache),oe.writeToStdout!==void 0&&console.log(Mr(oe.writeToStdout).replace(/\n$/,"")),w(ie,(le,ue)=>{if(re.length>0||le.length>0){let ce=oo("Build failed",re.concat(le),J.concat(ue));return te(ce,null,le,ue)}te(null,ie,le,ue)})},W,V;h&&(i["on-end"]=(oe,te)=>new Promise(ie=>{F(te,(re,J,le,ue)=>{let ce={errors:le,warnings:ue};V&&V(re,J),W=void 0,V=void 0,n(oe,ce),ie()})})),r(o,L,(oe,te)=>{if(oe)return u(new Error(oe),null);if(!h)return F(te,(J,le)=>($(),u(J,le)));if(te.errors.length>0)return u(oo("Context failed",te.errors,te.warnings),null);let ie=!1,re={rebuild:()=>(W||(W=new Promise((J,le)=>{let ue;V=(ye,we)=>{ue||(ue=()=>ye?le(ye):J(we))};let ce=()=>{r(o,{command:"rebuild",key:e},(we,be)=>{we?le(new Error(we)):ue?ue():ce()})};ce()})),W),watch:(J={})=>new Promise((le,ue)=>{if(!s.hasFS)throw new Error('Cannot use the "watch" API in this environment');let ce={},ye=_(J,ce,"delay",Qr);De(J,ce,"in watch() call");let we={command:"watch",key:e};ye&&(we.delay=ye),r(o,we,be=>{be?ue(new Error(be)):le(void 0)})}),serve:(J={})=>new Promise((le,ue)=>{if(!s.hasFS)throw new Error('Cannot use the "serve" API in this environment');let ce={},ye=_(J,ce,"port",NA),we=_(J,ce,"host",Z),be=_(J,ce,"servedir",Z),T=_(J,ce,"keyfile",Z),He=_(J,ce,"certfile",Z),Pe=_(J,ce,"fallback",Z),tt=_(J,ce,"cors",yt),ut=_(J,ce,"onRequest",Ju);De(J,ce,"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),T!==void 0&&(qe.keyfile=T),He!==void 0&&(qe.certfile=He),Pe!==void 0&&(qe.fallback=Pe),tt){let Ft={},Ot=_(tt,Ft,"origin",Hu);De(tt,Ft,'on "cors" object'),Array.isArray(Ot)?qe.corsOrigin=Ot:Ot!==void 0&&(qe.corsOrigin=[Ot])}r(o,qe,(Ft,Ot)=>{if(Ft)return ue(new Error(Ft));ut&&(i["serve-request"]=(lr,ln)=>{ut(ln.args),n(lr,{})}),le(Ot)})}),cancel:()=>new Promise(J=>{if(ie)return J();r(o,{command:"cancel",key:e},()=>{J()})}),dispose:()=>new Promise(J=>{if(ie)return J();ie=!0,r(o,{command:"dispose",key:e},()=>{J(),$(),o.unref()})})};o.ref(),u(null,re)})}}var JA=async(t,e,r,n,o,s,i,l,c)=>{let f=[],u=[],a={},h={},p=[],A=0,C=0,g=[],w=!1;l=[...l];for(let I of l){let v={};if(typeof I!="object")throw new Error(`Plugin at index ${C} must be an object`);let S=_(I,v,"name",Z);if(typeof S!="string"||S==="")throw new Error(`Plugin at index ${C} is missing a name`);try{let B=_(I,v,"setup",Ju);if(typeof B!="function")throw new Error("Plugin is missing a setup function");De(I,v,`on plugin ${Ne(S)}`);let U={name:S,onStart:!1,onEnd:!1,onResolve:[],onLoad:[]};C++;let Q=B({initialOptions:i,resolve:(O,L={})=>{if(!w)throw new Error('Cannot call "resolve" before plugin setup has completed');if(typeof O!="string")throw new Error("The path to resolve must be a string");let F=Object.create(null),W=_(L,F,"pluginName",Z),V=_(L,F,"importer",Z),oe=_(L,F,"namespace",Z),te=_(L,F,"resolveDir",Z),ie=_(L,F,"kind",Z),re=_(L,F,"pluginData",as),J=_(L,F,"with",yt);return De(L,F,"in resolve() call"),new Promise((le,ue)=>{let ce={command:"resolve",path:O,key:t,pluginName:S};if(W!=null&&(ce.pluginName=W),V!=null&&(ce.importer=V),oe!=null&&(ce.namespace=oe),te!=null&&(ce.resolveDir=te),ie!=null)ce.kind=ie;else throw new Error('Must specify "kind" when calling "resolve"');re!=null&&(ce.pluginData=c.store(re)),J!=null&&(ce.with=YA(J,"with")),e(n,ce,(ye,we)=>{ye!==null?ue(new Error(ye)):le({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(O){let L='This error came from the "onStart" callback registered here:',F=ss(new Error(L),o,"onStart");f.push({name:S,callback:O,note:F}),U.onStart=!0},onEnd(O){let L='This error came from the "onEnd" callback registered here:',F=ss(new Error(L),o,"onEnd");u.push({name:S,callback:O,note:F}),U.onEnd=!0},onResolve(O,L){let F='This error came from the "onResolve" callback registered here:',W=ss(new Error(F),o,"onResolve"),V={},oe=_(O,V,"filter",cs),te=_(O,V,"namespace",Z);if(De(O,V,`in onResolve() call for plugin ${Ne(S)}`),oe==null)throw new Error("onResolve() call is missing a filter");let ie=A++;a[ie]={name:S,callback:L,note:W},U.onResolve.push({id:ie,filter:ls(oe),namespace:te||""})},onLoad(O,L){let F='This error came from the "onLoad" callback registered here:',W=ss(new Error(F),o,"onLoad"),V={},oe=_(O,V,"filter",cs),te=_(O,V,"namespace",Z);if(De(O,V,`in onLoad() call for plugin ${Ne(S)}`),oe==null)throw new Error("onLoad() call is missing a filter");let ie=A++;h[ie]={name:S,callback:L,note:W},U.onLoad.push({id:ie,filter:ls(oe),namespace:te||""})},onDispose(O){p.push(O)},esbuild:o.esbuild});Q&&await Q,g.push(U)}catch(B){return{ok:!1,error:B,pluginName:S}}}s["on-start"]=async(I,v)=>{c.clear();let S={errors:[],warnings:[]};await Promise.all(f.map(async({name:B,callback:U,note:D})=>{try{let Q=await U();if(Q!=null){if(typeof Q!="object")throw new Error(`Expected onStart() callback in plugin ${Ne(B)} to return an object`);let O={},L=_(Q,O,"errors",Vt),F=_(Q,O,"warnings",Vt);De(Q,O,`from onStart() callback in plugin ${Ne(B)}`),L!=null&&S.errors.push(...zt(L,"errors",c,B,void 0)),F!=null&&S.warnings.push(...zt(F,"warnings",c,B,void 0))}}catch(Q){S.errors.push(Lr(Q,o,c,D&&D(),B))}})),r(I,S)},s["on-resolve"]=async(I,v)=>{let S={},B="",U,D;for(let Q of v.ids)try{({name:B,callback:U,note:D}=a[Q]);let O=await U({path:v.path,importer:v.importer,namespace:v.namespace,resolveDir:v.resolveDir,kind:v.kind,pluginData:c.load(v.pluginData),with:v.with});if(O!=null){if(typeof O!="object")throw new Error(`Expected onResolve() callback in plugin ${Ne(B)} to return an object`);let L={},F=_(O,L,"pluginName",Z),W=_(O,L,"path",Z),V=_(O,L,"namespace",Z),oe=_(O,L,"suffix",Z),te=_(O,L,"external",Se),ie=_(O,L,"sideEffects",Se),re=_(O,L,"pluginData",as),J=_(O,L,"errors",Vt),le=_(O,L,"warnings",Vt),ue=_(O,L,"watchFiles",mt),ce=_(O,L,"watchDirs",mt);De(O,L,`from onResolve() callback in plugin ${Ne(B)}`),S.id=Q,F!=null&&(S.pluginName=F),W!=null&&(S.path=W),V!=null&&(S.namespace=V),oe!=null&&(S.suffix=oe),te!=null&&(S.external=te),ie!=null&&(S.sideEffects=ie),re!=null&&(S.pluginData=c.store(re)),J!=null&&(S.errors=zt(J,"errors",c,B,void 0)),le!=null&&(S.warnings=zt(le,"warnings",c,B,void 0)),ue!=null&&(S.watchFiles=is(ue,"watchFiles")),ce!=null&&(S.watchDirs=is(ce,"watchDirs"));break}}catch(O){S={id:Q,errors:[Lr(O,o,c,D&&D(),B)]};break}r(I,S)},s["on-load"]=async(I,v)=>{let S={},B="",U,D;for(let Q of v.ids)try{({name:B,callback:U,note:D}=h[Q]);let O=await U({path:v.path,namespace:v.namespace,suffix:v.suffix,pluginData:c.load(v.pluginData),with:v.with});if(O!=null){if(typeof O!="object")throw new Error(`Expected onLoad() callback in plugin ${Ne(B)} to return an object`);let L={},F=_(O,L,"pluginName",Z),W=_(O,L,"contents",Vu),V=_(O,L,"resolveDir",Z),oe=_(O,L,"pluginData",as),te=_(O,L,"loader",Z),ie=_(O,L,"errors",Vt),re=_(O,L,"warnings",Vt),J=_(O,L,"watchFiles",mt),le=_(O,L,"watchDirs",mt);De(O,L,`from onLoad() callback in plugin ${Ne(B)}`),S.id=Q,F!=null&&(S.pluginName=F),W instanceof Uint8Array?S.contents=W:W!=null&&(S.contents=$t(W)),V!=null&&(S.resolveDir=V),oe!=null&&(S.pluginData=c.store(oe)),te!=null&&(S.loader=te),ie!=null&&(S.errors=zt(ie,"errors",c,B,void 0)),re!=null&&(S.warnings=zt(re,"warnings",c,B,void 0)),J!=null&&(S.watchFiles=is(J,"watchFiles")),le!=null&&(S.watchDirs=is(le,"watchDirs"));break}}catch(O){S={id:Q,errors:[Lr(O,o,c,D&&D(),B)]};break}r(I,S)};let $=(I,v)=>v([],[]);u.length>0&&($=(I,v)=>{(async()=>{let S=[],B=[];for(let{name:U,callback:D,note:Q}of u){let O,L;try{let F=await D(I);if(F!=null){if(typeof F!="object")throw new Error(`Expected onEnd() callback in plugin ${Ne(U)} to return an object`);let W={},V=_(F,W,"errors",Vt),oe=_(F,W,"warnings",Vt);De(F,W,`from onEnd() callback in plugin ${Ne(U)}`),V!=null&&(O=zt(V,"errors",c,U,void 0)),oe!=null&&(L=zt(oe,"warnings",c,U,void 0))}}catch(F){O=[Lr(F,o,c,Q&&Q(),U)]}if(O){S.push(...O);try{I.errors.push(...O)}catch{}}if(L){B.push(...L);try{I.warnings.push(...L)}catch{}}}v(S,B)})()});let k=()=>{for(let I of p)setTimeout(()=>I(),0)};return w=!0,{ok:!0,requestPlugins:g,runOnEndCallbacks:$,scheduleOnDisposeCallbacks:k}};function ed(){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 ss(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=td(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=td(e,(t.stack+"").split(`
11
+ `),"")}catch{}return{id:"",pluginName:o,text:s,location:i,notes:n?[n]:[],detail:r?r.store(t):-1}}function td(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,u=c.slice(f,f+r.length)===r?r.length:0;return{file:i[1],namespace:"file",line:+i[2],column:$t(c.slice(0,f)).length,length:$t(c.slice(f,f+u)).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,u=s.pluginName?`[plugin: ${s.pluginName}] `:"";return`
16
+ ${l}:${c}:${f}: ERROR: ${u}${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 Mu(t,e,r){if(t==null)return null;let n={},o=_(t,n,"file",Z),s=_(t,n,"namespace",Z),i=_(t,n,"line",Qr),l=_(t,n,"column",Qr),c=_(t,n,"length",Qr),f=_(t,n,"lineText",Z),u=_(t,n,"suggestion",Z);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:u||""}}function zt(t,e,r,n,o){let s=[],i=0;for(let l of t){let c={},f=_(l,c,"id",Z),u=_(l,c,"pluginName",Z),a=_(l,c,"text",Z),h=_(l,c,"location",Nu),p=_(l,c,"notes",Vt),A=_(l,c,"detail",as),C=`in element ${i} of "${e}"`;De(l,c,C);let g=[];if(p)for(let w of p){let $={},k=_(w,$,"text",Z),I=_(w,$,"location",Nu);De(w,$,C),g.push({text:k||"",location:Mu(I,C,o)})}s.push({id:f||"",pluginName:u||n,text:a||"",location:Mu(h,C,o),notes:g,detail:r?r.store(A):-1}),i++}return s}function is(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 YA(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 HA({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 ls(t){let e=t.source;return t.flags&&(e=`(?${t.flags})${e}`),e}function VA(t){let e;try{e=Mr(t)}catch{return DA(t)}return JSON.parse(e)}var dr=ae("fs"),Fu=ae("os"),kt=ae("path"),dn=process.env.ESBUILD_BINARY_PATH||dn,zA=t=>!!t&&t!=="/usr/bin/esbuild",Uu="@esbuild/darwin-arm64",ju="@esbuild/darwin-x64",us={"win32 arm64 LE":"@esbuild/win32-arm64","win32 ia32 LE":"@esbuild/win32-ia32","win32 x64 LE":"@esbuild/win32-x64"},ds={"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"},Ku={"android arm LE":"@esbuild/android-arm","android x64 LE":"@esbuild/android-x64","openharmony arm64 LE":"@esbuild/openharmony-arm64"};function XA(){let t,e,r=!1,n=`${process.platform} ${Fu.arch()} ${Fu.endianness()}`;if(n in us)t=us[n],e="esbuild.exe";else if(n in ds)t=ds[n],e="bin/esbuild";else if(n in Ku)t=Ku[n],e="bin/esbuild",r=!0;else throw new Error(`Unsupported platform: ${n}`);return{pkg:t,subpath:e,isWASM:r}}function ZA(){let t=ae.resolve("esbuild"),e=kt.dirname(kt.dirname(kt.dirname(t)));if(kt.basename(e)==="node_modules"){for(let r in ds)try{let n=ds[r];if(dr.existsSync(kt.join(e,n)))return n}catch{}for(let r in us)try{let n=us[r];if(dr.existsSync(kt.join(e,n)))return n}catch{}}return null}function e0(t,e){let r=kt.dirname(ae.resolve("esbuild"));return kt.join(r,`downloaded-${t.replace("/","-")}-${kt.basename(e)}`)}function t0(){if(zA(dn))if(!dr.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}=XA(),n;try{n=ae.resolve(`${t}/${e}`)}catch(o){if(n=e0(t,e),!dr.existsSync(n)){try{ae.resolve(t)}catch{let s=ZA();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===ju&&s===Uu||t===Uu&&s===ju)&&(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}=t0();return e?["node",[t]]:[t,[]]}},so=()=>o0.isatty(2),s0={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=od();Dr.writeFileSync(r,t),e(r)}catch{e(null)}}},i0={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=od();Dr.writeFile(r,t,n=>e(n!==null?null:r))}catch{e(null)}}},a0="0.28.1",c0=t=>Fr().build(t),l0=t=>Fr().context(t),u0=(t,e)=>Fr().transform(t,e),d0=(t,e)=>Fr().formatMessages(t,e),f0=(t,e)=>Fr().analyzeMetafile(t,e),m0=t=>{if(ot&&!ao)return st||(st=ps(ot)),st.buildSync(t);let e;return hs(r=>r.buildOrContext({callName:"buildSync",refs:null,options:t,isTTY:so(),defaultWD:Nr,callback:(n,o)=>{if(n)throw n;e=o}})),e},h0=(t,e)=>{if(ot&&!ao)return st||(st=ps(ot)),st.transformSync(t,e);let r;return hs(n=>n.transform({callName:"transformSync",refs:null,input:t,options:e||{},isTTY:so(),fs:s0,callback:(o,s)=>{if(o)throw o;r=s}})),r},p0=(t,e)=>{if(ot&&!ao)return st||(st=ps(ot)),st.formatMessagesSync(t,e);let r;return hs(n=>n.formatMessages({callName:"formatMessagesSync",refs:null,messages:t,options:e,callback:(o,s)=>{if(o)throw o;r=s}})),r},g0=(t,e)=>{if(ot&&!ao)return st||(st=ps(ot)),st.analyzeMetafileSync(t,e);let r;return hs(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},A0=()=>(fs&&fs(),st&&st.stop(),Promise.resolve()),ca=!1,y0=t=>{if(t=KA(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(ca)throw new Error('Cannot call "initialize" more than once');return Fr(),ca=!0,Promise.resolve()},Nr=process.cwd(),no,fs,Fr=()=>{if(no)return no;let[t,e]=nd(),r=rd.spawn(t,e.concat("--service=0.28.1","--ping"),{windowsHide:!0,stdio:["pipe","pipe","inherit"],cwd:Nr}),{readFromStdout:n,afterClose:o,service:s}=Zu({writeToStdin(u){r.stdin.write(u,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),fs=()=>{i.destroy(),l.destroy(),r.kill(),ca=!1,no=void 0,fs=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:u=>new Promise((a,h)=>{s.buildOrContext({callName:"build",refs:f,options:u,isTTY:so(),defaultWD:Nr,callback:(p,A)=>p?h(p):a(A)})}),context:u=>new Promise((a,h)=>s.buildOrContext({callName:"context",refs:f,options:u,isTTY:so(),defaultWD:Nr,callback:(p,A)=>p?h(p):a(A)})),transform:(u,a)=>new Promise((h,p)=>s.transform({callName:"transform",refs:f,input:u,options:a||{},isTTY:so(),fs:i0,callback:(A,C)=>A?p(A):h(C)})),formatMessages:(u,a)=>new Promise((h,p)=>s.formatMessages({callName:"formatMessages",refs:f,messages:u,options:a,callback:(A,C)=>A?p(A):h(C)})),analyzeMetafile:(u,a)=>new Promise((h,p)=>s.analyzeMetafile({callName:"analyzeMetafile",refs:f,metafile:typeof u=="string"?u:JSON.stringify(u),options:a,callback:(A,C)=>A?p(A):h(C)}))},no},hs=t=>{let[e,r]=nd(),n=new Uint8Array,{readFromStdout:o,afterClose:s,service:i}=Zu({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=rd.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)},od=()=>aa.join(n0.tmpdir(),`esbuild-${r0.randomBytes(32).toString("hex")}`),st=null,ps=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 u=new Error(`Build failed with 1 error:
68
+ error: ${f}`),a=[{id:"",pluginName:"",text:f,location:null,notes:[],detail:void 0}];return u.errors=a,u.warnings=[],u},i=f=>{if(!f)return;let u=f.plugins;if(u&&u.length>0)throw s("Cannot use plugins in synchronous API calls")},l=(f,u)=>{for(let a in u)f[a]=u[a]},c=(f,u)=>{let a=o++,h=new SharedArrayBuffer(8),p=new Int32Array(h),A={sharedBuffer:h,id:a,command:f,args:u};n.postMessage(A);let C=Atomics.wait(p,0,0);if(C!=="ok"&&C!=="not-equal")throw new Error("Internal error: Atomics.wait() failed: "+C);let{message:{id:g,resolve:w,reject:$,properties:k}}=t.receiveMessageOnPort(e);if(a!==g)throw new Error(`Internal error: Expected id ${a} but got id ${g}`);if($)throw l($,k),$;return w};return n.unref(),{buildSync(f){return i(f),c("build",[f])},transformSync(f,u){return c("transform",[f,u])},formatMessagesSync(f,u){return c("formatMessages",[f,u])},analyzeMetafileSync(f,u){return c("analyzeMetafile",[f,u])},stop(){n.terminate(),st=null}}},w0=()=>{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(u){t.postMessage({id:i,reject:u,properties:r(u)})}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&&w0();var b0=io});var ld={};xt(ld,{ImportType:()=>fa,init:()=>cd,parse:()=>ma});function ma(t,e="@"){if(!pe)return cd.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((x0?ad:id)(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(),u=pe.it(),a=pe.ai(),h=pe.id(),p=pe.ss(),A=pe.se(),C;pe.ip()&&(C=l(t.slice(h===-1?c-1:c,h===-1?f+1:f))),s.push({n:C,t:u,s:c,e:f,ss:p,se:A,d:h,a})}for(;pe.re();){let c=pe.es(),f=pe.ee(),u=pe.els(),a=pe.ele(),h=t.slice(c,f),p=h[0],A=u<0?void 0:t.slice(u,a),C=A?A[0]:"";i.push({s:c,e:f,ls:u,le:a,n:p==='"'||p==="'"?l(h):h,ln:C==='"'||C==="'"?l(A):A})}function l(c){try{return(0,eval)(c)}catch{}}return gs(l,"k"),[s,i,!!pe.f(),!!pe.ms()]}function id(t,e){let r=t.length,n=0;for(;n<r;){let o=t.charCodeAt(n);e[n++]=(255&o)<<8|o>>>8}}function ad(t,e){let r=t.length,n=0;for(;n<r;)e[n]=t.charCodeAt(n++)}var E0,gs,fa,x0,pe,cd,da,ud=ve(()=>{E0=Object.defineProperty,gs=(t,e)=>E0(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={}));x0=new Uint8Array(new Uint16Array([1]).buffer)[0]===1;gs(ma,"parse");gs(id,"Q");gs(ad,"B");cd=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 xd(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 vd(t){return $0.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 x(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 kd(t,e="@"){Le=t,Cd=e;let r=2*Le.length+(2<<18);if(r>lo||!$e){for(;r>lo;)lo*=2;As=new ArrayBuffer(lo),hd(Q0,new Uint16Array(As,16,110)),$e=(function(i,l,c){var f=new i.Int8Array(c),u=new i.Int16Array(c),a=new i.Int32Array(c),h=new i.Uint8Array(c),p=new i.Uint16Array(c),A=1040;function C(){var d=0,m=0,y=0,b=0,M=0,ee=0,Ee=0;Ee=A,A=A+10240|0,f[804]=1,f[803]=0,u[399]=0,u[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,d=(a[3]|0)+-2|0,a[72]=d,m=d+(a[66]<<1)|0,a[73]=m;e:for(;;){if(y=d+2|0,a[72]=y,d>>>0>=m>>>0){b=18;break}t:do switch(u[y>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{if(!(u[400]|0)&&Pe(y)|0&&!(F(d+4|0,16,10)|0)&&(g(),(f[804]|0)==0)){b=9;break e}else b=17;break}case 105:{Pe(y)|0&&!(F(d+4|0,26,10)|0)&&w(),b=17;break}case 59:{b=17;break}case 47:switch(u[d+4>>1]|0){case 47:{ce();break t}case 42:{L(1);break t}default:{b=16;break e}}default:{b=16;break e}}while(!1);(b|0)==17&&(b=0,a[69]=a[72]),d=a[72]|0,m=a[73]|0}(b|0)==9?(d=a[72]|0,a[69]=d,b=19):(b|0)==16?(f[804]=0,a[72]=d,b=19):(b|0)==18&&(f[802]|0?d=0:(d=y,b=19));do if((b|0)==19){e:for(;;){if(m=d+2|0,a[72]=m,d>>>0>=(a[73]|0)>>>0){b=92;break}t:do switch(u[m>>1]|0){case 9:case 10:case 11:case 12:case 13:case 32:break;case 101:{!(u[400]|0)&&Pe(m)|0&&!(F(d+4|0,16,10)|0)&&g(),b=91;break}case 105:{Pe(m)|0&&!(F(d+4|0,26,10)|0)&&w(),b=91;break}case 99:{Pe(m)|0&&!(F(d+4|0,36,8)|0)&&ur(u[d+12>>1]|0)|0&&(f[806]=1),b=91;break}case 40:{y=a[70]|0,d=u[400]|0,b=d&65535,a[y+(b<<3)>>2]=1,m=a[69]|0,u[400]=d+1<<16>>16,a[y+(b<<3)+4>>2]=m,b=91;break}case 41:{if(m=u[400]|0,!(m<<16>>16)){b=36;break e}y=m+-1<<16>>16,u[400]=y,b=u[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]=d+4,u[399]=b+-1<<16>>16),b=91;break}case 123:{b=a[69]|0,y=a[63]|0,d=b;do if((u[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=u[400]|0,b=m&65535,a[y+(b<<3)>>2]=f[806]|0?6:2,u[400]=m+1<<16>>16,a[y+(b<<3)+4>>2]=d,f[806]=0,b=91;break}case 125:{if(d=u[400]|0,!(d<<16>>16)){b=49;break e}y=a[70]|0,b=d+-1<<16>>16,u[400]=b,(a[y+((b&65535)<<3)>>2]|0)==4&&I(),b=91;break}case 39:{B(39),b=91;break}case 34:{B(34),b=91;break}case 47:switch(u[d+4>>1]|0){case 47:{ce();break t}case 42:{L(1);break t}default:{d=a[69]|0,m=u[d>>1]|0;r:do if(!(V(m)|0))m<<16>>16==41?(y=u[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(((u[d+-2>>1]|0)+-48&65535)<10){b=64;break r}else break r;case 43:if((u[d+-2>>1]|0)==43){b=64;break r}else break r;case 45:if((u[d+-2>>1]|0)==45){b=64;break r}else break r;default:break r}while(!1);(b|0)==64&&(y=u[400]|0,b=65);r:do if((b|0)==65){if(b=0,y<<16>>16&&(M=a[70]|0,ee=(y&65535)+-1|0,m<<16>>16==102?(a[M+(ee<<3)>>2]|0)==1:0)){if((u[d+-2>>1]|0)==111&&re(a[M+(ee<<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,O(a[b+(y<<3)+4>>2]|0)|0||(a[b+(y<<3)>>2]|0)==6))break;if(!(k(d)|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&&d>>>0>=(a[b>>2]|0)>>>0&&d>>>0<=(a[b+4>>2]|0)>>>0){Q(),f[805]=0,b=91;break t}y=a[3]|0;do{if(d>>>0<=y>>>0)break;d=d+-2|0,a[69]=d,m=u[d>>1]|0}while(!(ue(m)|0));if(T(m)|0){do{if(d>>>0<=y>>>0)break;d=d+-2|0,a[69]=d}while(T(u[d>>1]|0)|0);if(J(d)|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=u[400]|0,b=m&65535,a[y+(b<<3)+4>>2]=a[69],u[400]=m+1<<16>>16,a[y+(b<<3)>>2]=3,I(),b=91;break}default:b=91}while(!1);(b|0)==91&&(b=0,a[69]=a[72]),d=a[72]|0}if((b|0)==36){rt(),d=0;break}else if((b|0)==49){rt(),d=0;break}else if((b|0)==92){d=f[802]|0?0:(u[399]|u[400])<<16>>16==0;break}}while(!1);return A=Ee,d|0}x(C,"b");function g(){var d=0,m=0,y=0,b=0,M=0,ee=0,Ee=0,Br=0,Vi=0,zi=0,Xi=0,Zi=0,xe=0,Oe=0;Br=a[72]|0,Vi=a[65]|0,Oe=Br+12|0,a[72]=Oe,y=v(1)|0,d=a[72]|0,(d|0)==(Oe|0)&&!(W(y)|0)||(xe=3);e:do if((xe|0)==3){t:do switch(y<<16>>16){case 123:{for(a[72]=d+2,d=v(1)|0,m=a[72]|0;;){if(Jt(d)|0?(B(d),d=(a[72]|0)+2|0,a[72]=d):(ye(d)|0,d=a[72]|0),v(1)|0,d=U(m,d)|0,d<<16>>16==44&&(a[72]=(a[72]|0)+2,d=v(1)|0),d<<16>>16==125){xe=15;break}if(Oe=m,m=a[72]|0,(m|0)==(Oe|0)){xe=12;break}if(m>>>0>(a[73]|0)>>>0){xe=14;break}}if((xe|0)==12){rt();break e}else if((xe|0)==14){rt();break e}else if((xe|0)==15){f[803]=1,a[72]=(a[72]|0)+2;break t}break}case 42:{a[72]=d+2,v(1)|0,Oe=a[72]|0,U(Oe,Oe)|0;break}default:{switch(f[804]=0,y<<16>>16){case 100:{switch(Br=d+14|0,a[72]=Br,(v(1)|0)<<16>>16){case 97:{m=a[72]|0,!(F(m+2|0,72,8)|0)&&(M=m+10|0,T(u[M>>1]|0)|0)&&(a[72]=M,v(0)|0,xe=22);break}case 102:{xe=22;break}case 99:{m=a[72]|0,!(F(m+2|0,36,8)|0)&&(b=m+10|0,Oe=u[b>>1]|0,ur(Oe)|0|Oe<<16>>16==123)&&(a[72]=b,ee=v(1)|0,ee<<16>>16!=123)&&(Zi=ee,xe=31);break}default:}r:do if((xe|0)==22&&(Ee=a[72]|0,(F(Ee+2|0,80,14)|0)==0)){if(y=Ee+16|0,m=u[y>>1]|0,!(ur(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,xe=31)}while(!1);if((xe|0)==31&&(zi=a[72]|0,ye(Zi)|0,Xi=a[72]|0,Xi>>>0>zi>>>0)){ie(d,Br,zi,Xi),a[72]=(a[72]|0)+-2;break e}ie(d,Br,0,0),a[72]=d+12;break e}case 97:{a[72]=d+10,v(0)|0,d=a[72]|0,xe=35;break}case 102:{xe=35;break}case 99:{if(!(F(d+2|0,36,8)|0)&&(m=d+10|0,ue(u[m>>1]|0)|0)){a[72]=m,Oe=v(1)|0,xe=a[72]|0,ye(Oe)|0,Oe=a[72]|0,ie(xe,Oe,xe,Oe),a[72]=(a[72]|0)+-2;break e}d=d+4|0,a[72]=d;break}case 108:case 118:break;default:break e}if((xe|0)==35){a[72]=d+16,d=v(1)|0,d<<16>>16==42&&(a[72]=(a[72]|0)+2,d=v(1)|0),xe=a[72]|0,ye(d)|0,Oe=a[72]|0,ie(xe,Oe,xe,Oe),a[72]=(a[72]|0)+-2;break e}a[72]=d+6,f[804]=0,y=v(1)|0,d=a[72]|0,y=(ye(y)|0|32)<<16>>16==123,b=a[72]|0,y&&(a[72]=b+2,Oe=v(1)|0,d=a[72]|0,ye(Oe)|0);r:for(;m=a[72]|0,(m|0)!=(d|0);){if(ie(d,m,d,m),m=v(1)|0,y)switch(m<<16>>16){case 93:case 125:break e;default:}if(d=a[72]|0,m<<16>>16!=44){xe=51;break}switch(a[72]=d+2,m=v(1)|0,d=a[72]|0,m<<16>>16){case 91:case 123:{xe=51;break r}default:}ye(m)|0}if((xe|0)==51&&(a[72]=d+-2),!y)break e;a[72]=b+-2;break e}}while(!1);if(Oe=(v(1)|0)<<16>>16==102,d=a[72]|0,Oe&&!(F(d+2|0,66,6)|0))for(a[72]=d+8,$(Br,v(1)|0,0),d=Vi|0?Vi+16|0:240;;){if(d=a[d>>2]|0,!d)break e;a[d+12>>2]=0,a[d+8>>2]=0,d=d+16|0}a[72]=d+-2}while(!1)}x(g,"k");function w(){var d=0,m=0,y=0,b=0,M=0,ee=0,Ee=0;M=a[72]|0,y=M+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?!(F(m+2|0,56,10)|0)&&(d=m+12|0,ur(u[d>>1]|0)|0)?ee=14:(m=6,y=0,ee=46):(d=b,y=0,ee=15);else switch(a[72]=m+2,(v(1)|0)<<16>>16){case 109:{if(d=a[72]|0,F(d+2|0,50,6)|0||(m=a[69]|0,!(He(m)|0)&&(u[m>>1]|0)==46))break e;S(M,M,d+8|0,2);break e}case 115:{if(d=a[72]|0,F(d+2|0,56,10)|0||(m=a[69]|0,!(He(m)|0)&&(u[m>>1]|0)==46))break e;d=d+12|0,ee=14;break e}default:break e}while(!1);(ee|0)==14&&(a[72]=d,d=v(1)|0,y=1,ee=15);e:do if((ee|0)==15)switch(d<<16>>16){case 40:{if(m=a[70]|0,Ee=u[400]|0,b=Ee&65535,a[m+(b<<3)>>2]=5,d=a[72]|0,u[400]=Ee+1<<16>>16,a[m+(b<<3)+4>>2]=d,(u[a[69]>>1]|0)==46)break e;switch(a[72]=d+2,m=v(1)|0,S(M,a[72]|0,0,d),y?(d=a[63]|0,a[d+28>>2]=5):d=a[63]|0,M=a[71]|0,Ee=u[399]|0,u[399]=Ee+1<<16>>16,a[M+((Ee&65535)<<2)>>2]=d,m<<16>>16){case 39:{B(39);break}case 34:{B(34);break}default:{a[72]=(a[72]|0)+-2;break e}}switch(d=(a[72]|0)+2|0,a[72]=d,(v(1)|0)<<16>>16){case 44:{a[72]=(a[72]|0)+2,v(1)|0,M=a[63]|0,a[M+4>>2]=d,Ee=a[72]|0,a[M+16>>2]=Ee,f[M+24>>0]=1,a[72]=Ee+-2;break e}case 41:{u[400]=(u[400]|0)+-1<<16>>16,Ee=a[63]|0,a[Ee+4>>2]=d,a[Ee+12>>2]=(a[72]|0)+2,f[Ee+24>>0]=1,u[399]=(u[399]|0)+-1<<16>>16;break e}default:{a[72]=(a[72]|0)+-2;break e}}}case 123:{if(y){m=12,y=1,ee=46;break e}if(d=a[72]|0,u[400]|0){a[72]=d+-2;break e}for(;!(d>>>0>=(a[73]|0)>>>0);){if(d=v(1)|0,Jt(d)|0)B(d);else if(d<<16>>16==125){ee=36;break}d=(a[72]|0)+2|0,a[72]=d}if((ee|0)==36&&(a[72]=(a[72]|0)+2),Ee=(v(1)|0)<<16>>16==102,d=a[72]|0,Ee&&F(d+2|0,66,6)|0){rt();break e}if(a[72]=d+8,d=v(1)|0,Jt(d)|0){$(M,d,0);break e}else{rt();break e}}default:{if(y){m=12,y=1,ee=46;break e}switch(d<<16>>16){case 42:case 39:case 34:{y=0,ee=48;break e}default:{m=6,y=0,ee=46;break e}}}}while(!1);(ee|0)==46&&(d=a[72]|0,(d|0)==(M+(m<<1)|0)?a[72]=d+-2:ee=48);do if((ee|0)==48){if(u[400]|0){a[72]=(a[72]|0)+-2;break}for(d=a[73]|0,m=a[72]|0;;){if(m>>>0>=d>>>0){ee=55;break}if(b=u[m>>1]|0,Jt(b)|0){ee=53;break}Ee=m+2|0,a[72]=Ee,m=Ee}if((ee|0)==53){$(M,b,y);break}else if((ee|0)==55){rt();break}}while(!1)}x(w,"l");function $(d,m,y){d=d|0,m=m|0,y=y|0;var b=0,M=0;switch(b=(a[72]|0)+2|0,m<<16>>16){case 39:{B(39),M=5;break}case 34:{B(34),M=5;break}default:rt()}do if((M|0)==5){if(S(d,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,F(b+2|0,94,10)|0&&(M=13)):(b=a[72]|0,m<<16>>16==119&&(u[b+2>>1]|0)==105&&(u[b+4>>1]|0)==116&&(u[b+6>>1]|0)==104||(M=13)),(M|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:{B(39),a[72]=(a[72]|0)+2,m=v(1)|0;break}case 34:{B(34),a[72]=(a[72]|0)+2,m=v(1)|0;break}default:m=ye(m)|0}if(m<<16>>16!=58){M=22;break}switch(a[72]=(a[72]|0)+2,(v(1)|0)<<16>>16){case 39:{B(39);break}case 34:{B(34);break}default:{M=26;break e}}switch(a[72]=(a[72]|0)+2,(v(1)|0)<<16>>16){case 125:{M=31;break e}case 44:break;default:{M=30;break e}}if(a[72]=(a[72]|0)+2,(v(1)|0)<<16>>16==125){M=31;break}m=a[72]|0}if((M|0)==22){a[72]=b;break}else if((M|0)==26){a[72]=b;break}else if((M|0)==30){a[72]=b;break}else if((M|0)==31){M=a[63]|0,a[M+16>>2]=y,a[M+12>>2]=(a[72]|0)+2;break}}while(!1)}x($,"u");function k(d){d=d|0;e:do switch(u[d>>1]|0){case 100:switch(u[d+-2>>1]|0){case 105:{d=re(d+-4|0,104,2)|0;break e}case 108:{d=re(d+-4|0,108,3)|0;break e}default:{d=0;break e}}case 101:switch(u[d+-2>>1]|0){case 115:switch(u[d+-4>>1]|0){case 108:{d=le(d+-6|0,101)|0;break e}case 97:{d=le(d+-6|0,99)|0;break e}default:{d=0;break e}}case 116:{d=re(d+-4|0,114,4)|0;break e}case 117:{d=re(d+-4|0,122,6)|0;break e}default:{d=0;break e}}case 102:{if((u[d+-2>>1]|0)==111&&(u[d+-4>>1]|0)==101)switch(u[d+-6>>1]|0){case 99:{d=re(d+-8|0,134,6)|0;break e}case 112:{d=re(d+-8|0,146,2)|0;break e}default:{d=0;break e}}else d=0;break}case 107:{d=re(d+-2|0,150,4)|0;break}case 110:{d=d+-2|0,le(d,105)|0?d=1:d=re(d,158,5)|0;break}case 111:{d=le(d+-2|0,100)|0;break}case 114:{d=re(d+-2|0,168,7)|0;break}case 116:{d=re(d+-2|0,182,4)|0;break}case 119:switch(u[d+-2>>1]|0){case 101:{d=le(d+-4|0,110)|0;break e}case 111:{d=re(d+-4|0,190,3)|0;break e}default:{d=0;break e}}default:d=0}while(!1);return d|0}x(k,"o");function I(){var d=0,m=0,y=0,b=0;m=a[73]|0,y=a[72]|0;e:for(;;){if(d=y+2|0,y>>>0>=m>>>0){m=10;break}switch(u[d>>1]|0){case 96:{m=7;break e}case 36:{if((u[y+4>>1]|0)==123){m=6;break e}break}case 92:{d=y+4|0;break}default:}y=d}(m|0)==6?(d=y+4|0,a[72]=d,m=a[70]|0,b=u[400]|0,y=b&65535,a[m+(y<<3)>>2]=4,u[400]=b+1<<16>>16,a[m+(y<<3)+4>>2]=d):(m|0)==7?(a[72]=d,y=a[70]|0,b=(u[400]|0)+-1<<16>>16,u[400]=b,(a[y+((b&65535)<<3)>>2]|0)!=3&&rt()):(m|0)==10&&(a[72]=d,rt())}x(I,"h");function v(d){d=d|0;var m=0,y=0,b=0;y=a[72]|0;e:do{m=u[y>>1]|0;t:do if(m<<16>>16!=47)if(d){if(ur(m)|0)break;break e}else{if(T(m)|0)break;break e}else switch(u[y+2>>1]|0){case 47:{ce();break t}case 42:{L(d);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}x(v,"w");function S(d,m,y,b){d=d|0,m=m|0,y=y|0,b=b|0;var M=0,ee=0;ee=a[67]|0,a[67]=ee+36,M=a[63]|0,a[(M|0?M+32|0:236)>>2]=ee,a[64]=M,a[63]=ee,a[ee+8>>2]=d,(b|0)==2?(d=3,M=y):(M=(b|0)==1,d=M?1:2,M=M?y+2|0:0),a[ee+12>>2]=M,a[ee+28>>2]=d,a[ee>>2]=m,a[ee+4>>2]=y,a[ee+16>>2]=0,a[ee+20>>2]=b,m=(b|0)==1,f[ee+24>>0]=m&1,a[ee+32>>2]=0,m|(b|0)==2&&(f[803]=1)}x(S,"d");function B(d){d=d|0;var m=0,y=0,b=0,M=0;for(M=a[73]|0,m=a[72]|0;;){if(b=m+2|0,m>>>0>=M>>>0){m=9;break}if(y=u[b>>1]|0,y<<16>>16==d<<16>>16){m=10;break}if(y<<16>>16==92)y=m+4|0,(u[y>>1]|0)==13?(m=m+6|0,m=(u[m>>1]|0)==10?m:y):m=y;else if(j(y)|0){m=9;break}else m=b}(m|0)==9?(a[72]=b,rt()):(m|0)==10&&(a[72]=b)}x(B,"v");function U(d,m){d=d|0,m=m|0;var y=0,b=0,M=0,ee=0;return y=a[72]|0,b=u[y>>1]|0,ee=(d|0)==(m|0),M=ee?0:d,ee=ee?0:m,b<<16>>16==97&&(a[72]=y+4,y=v(1)|0,d=a[72]|0,Jt(y)|0?(B(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)!=(d|0)&&ie(d,m,M,ee),b|0}x(U,"A");function D(){var d=0,m=0,y=0;y=a[73]|0,m=a[72]|0;e:for(;;){if(d=m+2|0,m>>>0>=y>>>0){m=6;break}switch(u[d>>1]|0){case 13:case 10:{m=6;break e}case 93:{m=7;break e}case 92:{d=m+4|0;break}default:}m=d}return(m|0)==6?(a[72]=d,rt(),d=0):(m|0)==7&&(a[72]=d,d=93),d|0}x(D,"C");function Q(){var d=0,m=0,y=0;e:for(;;){if(d=a[72]|0,m=d+2|0,a[72]=m,d>>>0>=(a[73]|0)>>>0){y=7;break}switch(u[m>>1]|0){case 13:case 10:{y=7;break e}case 47:break e;case 91:{D()|0;break}case 92:{a[72]=d+4;break}default:}}(y|0)==7&&rt()}x(Q,"g");function O(d){switch(d=d|0,u[d>>1]|0){case 62:{d=(u[d+-2>>1]|0)==61;break}case 41:case 59:{d=1;break}case 104:{d=re(d+-2|0,210,4)|0;break}case 121:{d=re(d+-2|0,218,6)|0;break}case 101:{d=re(d+-2|0,230,3)|0;break}default:d=0}return d|0}x(O,"p");function L(d){d=d|0;var m=0,y=0,b=0,M=0,ee=0;for(M=(a[72]|0)+2|0,a[72]=M,y=a[73]|0;m=M+2|0,!(M>>>0>=y>>>0||(b=u[m>>1]|0,!d&&j(b)|0));){if(b<<16>>16==42&&(u[M+4>>1]|0)==47){ee=8;break}M=m}(ee|0)==8&&(a[72]=m,m=M+4|0),a[72]=m}x(L,"y");function F(d,m,y){d=d|0,m=m|0,y=y|0;var b=0,M=0;e:do if(!y)d=0;else{for(;b=f[d>>0]|0,M=f[m>>0]|0,b<<24>>24==M<<24>>24;)if(y=y+-1|0,y)d=d+1|0,m=m+1|0;else{d=0;break e}d=(b&255)-(M&255)|0}while(!1);return d|0}x(F,"m");function W(d){d=d|0;e:do switch(d<<16>>16){case 38:case 37:case 33:{d=1;break}default:if((d&-8)<<16>>16==40|(d+-58&65535)<6)d=1;else{switch(d<<16>>16){case 91:case 93:case 94:{d=1;break e}default:}d=(d+-123&65535)<4}}while(!1);return d|0}x(W,"I");function V(d){d=d|0;e:do switch(d<<16>>16){case 38:case 37:case 33:break;default:if(!((d+-58&65535)<6|(d+-40&65535)<7&d<<16>>16!=41)){switch(d<<16>>16){case 91:case 94:break e;default:}return d<<16>>16!=125&(d+-123&65535)<4|0}}while(!1);return 1}x(V,"U");function oe(d){d=d|0;var m=0;m=u[d>>1]|0;e:do if((m+-9&65535)>=5){switch(m<<16>>16){case 160:case 32:{m=1;break e}default:}if(W(m)|0)return m<<16>>16!=46|(He(d)|0)|0;m=0}else m=1;while(!1);return m|0}x(oe,"x");function te(d){d=d|0;var m=0,y=0,b=0,M=0;return y=A,A=A+16|0,b=y,a[b>>2]=0,a[66]=d,m=a[3]|0,M=m+(d<<1)|0,d=M+2|0,u[M>>1]=0,a[b>>2]=d,a[67]=d,a[59]=0,a[63]=0,a[61]=0,a[60]=0,a[65]=0,a[62]=0,A=y,m|0}x(te,"S");function ie(d,m,y,b){d=d|0,m=m|0,y=y|0,b=b|0;var M=0,ee=0;M=a[67]|0,a[67]=M+20,ee=a[65]|0,a[(ee|0?ee+16|0:240)>>2]=M,a[65]=M,a[M>>2]=d,a[M+4>>2]=m,a[M+8>>2]=y,a[M+12>>2]=b,a[M+16>>2]=0,f[803]=1}x(ie,"O");function re(d,m,y){d=d|0,m=m|0,y=y|0;var b=0,M=0;return b=d+(0-y<<1)|0,M=b+2|0,d=a[3]|0,M>>>0>=d>>>0&&!(F(M,m,y<<1)|0)?(M|0)==(d|0)?d=1:d=oe(b)|0:d=0,d|0}x(re,"$");function J(d){switch(d=d|0,u[d>>1]|0){case 107:{d=re(d+-2|0,150,4)|0;break}case 101:{(u[d+-2>>1]|0)==117?d=re(d+-4|0,122,6)|0:d=0;break}default:d=0}return d|0}x(J,"j");function le(d,m){d=d|0,m=m|0;var y=0;return y=a[3]|0,y>>>0<=d>>>0&&(u[d>>1]|0)==m<<16>>16?(y|0)==(d|0)?y=1:y=ue(u[d+-2>>1]|0)|0:y=0,y|0}x(le,"B");function ue(d){d=d|0;e:do if((d+-9&65535)<5)d=1;else{switch(d<<16>>16){case 32:case 160:{d=1;break e}default:}d=d<<16>>16!=46&(W(d)|0)}while(!1);return d|0}x(ue,"E");function ce(){var d=0,m=0,y=0;d=a[73]|0,y=a[72]|0;e:for(;m=y+2|0,!(y>>>0>=d>>>0);)switch(u[m>>1]|0){case 13:case 10:break e;default:y=m}a[72]=m}x(ce,"P");function ye(d){for(d=d|0;!(ur(d)|0||W(d)|0);)if(d=(a[72]|0)+2|0,a[72]=d,d=u[d>>1]|0,!(d<<16>>16)){d=0;break}return d|0}x(ye,"q");function we(){var d=0;switch(d=a[(a[61]|0)+20>>2]|0,d|0){case 1:{d=-1;break}case 2:{d=-2;break}default:d=d-(a[3]|0)>>1}return d|0}x(we,"z");function be(d){return d=d|0,!(re(d,196,5)|0)&&!(re(d,44,3)|0)?d=re(d,206,2)|0:d=1,d|0}x(be,"D");function T(d){switch(d=d|0,d<<16>>16){case 160:case 32:case 12:case 11:case 9:{d=1;break}default:d=0}return d|0}x(T,"F");function He(d){return d=d|0,(u[d>>1]|0)==46&&(u[d+-2>>1]|0)==46?d=(u[d+-4>>1]|0)==46:d=0,d|0}x(He,"G");function Pe(d){return d=d|0,(a[3]|0)==(d|0)?d=1:d=oe(d+-2|0)|0,d|0}x(Pe,"H");function tt(){var d=0;return d=a[(a[62]|0)+12>>2]|0,d?d=d-(a[3]|0)>>1:d=-1,d|0}x(tt,"J");function ut(){var d=0;return d=a[(a[61]|0)+12>>2]|0,d?d=d-(a[3]|0)>>1:d=-1,d|0}x(ut,"K");function qe(){var d=0;return d=a[(a[62]|0)+8>>2]|0,d?d=d-(a[3]|0)>>1:d=-1,d|0}x(qe,"L");function Ft(){var d=0;return d=a[(a[61]|0)+16>>2]|0,d?d=d-(a[3]|0)>>1:d=-1,d|0}x(Ft,"M");function Ot(){var d=0;return d=a[(a[61]|0)+4>>2]|0,d?d=d-(a[3]|0)>>1:d=-1,d|0}x(Ot,"N");function lr(){var d=0;return d=a[61]|0,d=a[(d|0?d+32|0:236)>>2]|0,a[61]=d,(d|0)!=0|0}x(lr,"Q");function ln(){var d=0;return d=a[62]|0,d=a[(d|0?d+16|0:240)>>2]|0,a[62]=d,(d|0)!=0|0}x(ln,"R");function rt(){f[802]=1,a[68]=(a[72]|0)-(a[3]|0)>>1,a[72]=(a[73]|0)+2}x(rt,"T");function ur(d){return d=d|0,(d|128)<<16>>16==160|(d+-9&65535)<5|0}x(ur,"V");function Jt(d){return d=d|0,d<<16>>16==39|d<<16>>16==34|0}x(Jt,"W");function ts(){return(a[(a[61]|0)+8>>2]|0)-(a[3]|0)>>1|0}x(ts,"X");function se(){return(a[(a[62]|0)+4>>2]|0)-(a[3]|0)>>1|0}x(se,"Y");function j(d){return d=d|0,d<<16>>16==13|d<<16>>16==10|0}x(j,"Z");function q(){return(a[a[61]>>2]|0)-(a[3]|0)>>1|0}x(q,"_");function ke(){return(a[a[62]>>2]|0)-(a[3]|0)>>1|0}x(ke,"ee");function G(){return h[(a[61]|0)+24>>0]|0|0}x(G,"ae");function nt(d){d=d|0,a[3]=d}x(nt,"re");function de(){return a[(a[61]|0)+28>>2]|0}x(de,"ie");function dt(){return(f[803]|0)!=0|0}x(dt,"se");function R(){return(f[804]|0)!=0|0}x(R,"fe");function H(){return a[68]|0}x(H,"te");function P(d){return d=d|0,A=d+992+15&-16,992}return x(P,"ce"),{su:P,ai:Ft,e:H,ee:se,ele:tt,els:qe,es:ke,f:R,id:we,ie:Ot,ip:G,is:q,it:de,ms:dt,p:C,re:ln,ri:lr,sa:te,se:ut,ses:nt,ss:ts}})(typeof self<"u"?self:global,{},As),ha=$e.su(lo-(2<<17))}let n=Le.length+1;$e.ses(ha),$e.sa(n-1),hd(Le,new Uint16Array(As,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(),u=$e.ss(),a=$e.se(),h=$e.it(),p;$e.ip()&&(p=ys(f===-1?i:i+1,Le.charCodeAt(f===-1?i-1:i))),o.push({t:h,n:p,s:i,e:l,ss:u,se:a,d:f,a:c})}for(;$e.re();){let i=$e.es(),l=$e.ee(),c=$e.els(),f=$e.ele(),u=Le.charCodeAt(i),a=c>=0?Le.charCodeAt(c):-1;s.push({s:i,e:l,ls:c,le:f,n:u===34||u===39?ys(i+1,u):Le.slice(i,l),ln:c<0?void 0:a===34||a===39?ys(c+1,a):Le.slice(c,f)})}return[o,s,!!$e.f(),!!$e.ms()]}function ys(t,e){ge=t;let r="",n=ge;for(;;){ge>=Le.length&&Xt();let o=Le.charCodeAt(ge);if(o===e)break;o===92?(r+=Le.slice(n,ge),r+=Sd(),n=ge):(o===8232||o===8233||Ba(o)&&Xt(),++ge)}return r+=Le.slice(n,ge++),r}function Sd(){let t=Le.charCodeAt(++ge);switch(++ge,t){case 110:return`
73
+ `;case 114:return"\r";case 120:return String.fromCharCode(ws(2));case 117:return(function(){let e=Le.charCodeAt(ge),r;return e===123?(++ge,r=ws(Le.indexOf("}",ge)-ge),++ge,r>1114111&&Xt()):r=ws(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:Le.charCodeAt(ge)===10&&++ge;case 10:return"";case 56:case 57:Xt();default:if(t>=48&&t<=55){let e=Le.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=Le.charCodeAt(ge),e==="0"&&t!==56&&t!==57||Xt(),String.fromCharCode(r)}return Ba(t)?"":String.fromCharCode(t)}}function ws(t){let e=ge,r=0,n=0;for(let o=0;o<t;++o,++ge){let s,i=Le.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 ${Cd}:${Le.slice(0,ge).split(`
74
+ `).length}:${ge-Le.lastIndexOf(`
75
+ `,ge-1)}`),{idx:ge})}function Bd(t){let e=new Int32Array(5),r=[],n=0;do{let o=Rd(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 u=e[0];u<l&&(i=!1),l=u,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=[u,e[1],e[2],e[3],e[4]]):f=[u,e[1],e[2],e[3]]):f=[u],s.push(f)}i||Pd(s),r.push(s),n=o+1}while(n<=t.length);return r}function Rd(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=Id[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)!==_d}function Pd(t){t.sort(Od)}function Od(t,e){return t[0]-e[0]}function $d(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++]=M0),f.length!==0){e[0]=0;for(let u=0;u<f.length;u++){let a=f[u];i>n&&(l+=pa.decode(s),o.copyWithin(0,n,i),i-=n),u>0&&(o[i++]=_d),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++]=Td[l]}while(i>0);return e}function Ld(t){return F0.test(t)}function Qd(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,u)=>{let a={importer:r,depth:l,source:f||"",content:void 0,ignore:void 0},h=e(a.source,a),{source:p,content:A,ignore:C}=a;if(h)return Ka(new vs(h,p),e,p,l);let g=A!==void 0?A:s?s[u]:null,w=C!==void 0?C:i?i.includes(u):!1;return ff(p,g,w)});return Ua(t,c)}function Wa(t,e,r){let n={excludeContent:!!r,decodedMappings:!1},o=pf(t,e);return new Ta(mf(o),n)}var Zt,v0,x,Ia,T0,I0,dd,yd,B0,fd,md,R0,bs,Es,P0,O0,$0,L0,Aa,co,hn,ya,$e,As,ha,lo,hd,Q0,Le,Cd,ge,wa,Cs,mo,Ra,D0,N0,fr,Pa,pd,gd,ba,wn,_d,M0,Ad,Td,Id,pa,F0,U0,j0,Ur,xs,vs,fo,G0,q0,J0,Y0,H0,ef,Sa,z0,df,X0,Ta,gf,Z0,ey,ty,ry,Ga,qa,Ja,ny,jr,Ya,Af,ks=ve(()=>{Zt=ta(ua(),1);to();os();v0=Object.defineProperty,x=(t,e)=>v0(t,"name",{value:e,configurable:!0}),Ia=x(t=>S0.createHash("sha1").update(t).digest("hex"),"sha1"),T0=44,I0=59,dd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",yd=new Uint8Array(64),B0=new Uint8Array(128);for(let t=0;t<dd.length;t++){let e=dd.charCodeAt(t);yd[t]=e,B0[e]=t}x(pn,"encodeInteger$1");fd=1024*16,md=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}},R0=class{static{x(this,"StringWriter")}constructor(){this.pos=0,this.out="",this.buffer=new Uint8Array(fd)}write(t){let{buffer:e}=this;e[this.pos++]=t,this.pos===fd&&(this.out+=md.decode(e),this.pos=0)}flush(){let{buffer:t,out:e,pos:r}=this;return r>0?e+md.decode(t.subarray(0,r)):e}};x(wd,"encode$1");bs=class t{static{x(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))}},Es=class t{static{x(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}};x(bd,"getBtoa");P0=bd(),O0=class{static{x(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=wd(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,"+P0(this.toString())}};x(Ed,"guessIndent");x(xd,"getRelativePath");$0=Object.prototype.toString;x(vd,"isObject");x(ga,"getLocator");L0=/\w/,Aa=class{static{x(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"?L0.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}},co=`
81
+ `,hn={insertLeft:!1,insertRight:!1,storeName:!1},ya=class t{static{x(this,"MagicString")}constructor(e,r={}){let n=new Es(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 bs},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 bs(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?xd(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 O0(this.generateDecodedMap(e))}_ensureindentStr(){this.indentStr===void 0&&(this.indentStr=Ed(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(vd(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 u=f[0];u<f[1];u+=1)o[u]=!0});let s=r.indentStart!==!1,i=x(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 u=this.original[l];u===`
83
+ `?s=!0:u!=="\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 Es(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(co);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(co),e!==-1)return n.outro.substr(e+1)+r;r=n.outro+r}if(n.content.length>0){if(e=n.content.lastIndexOf(co),e!==-1)return n.content.substr(e+1)+r;r=n.content+r}if(n.intro.length>0){if(e=n.intro.lastIndexOf(co),e!==-1)return n.intro.substr(e+1)+r;r=n.intro+r}}while(n=n.previous);return e=this.intro.lastIndexOf(co),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)}x(n,"getReplacement");function o(s,i){let l,c=[];for(;l=s.exec(i);)c.push(l);return c}if(x(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)}},lo=2<<19,hd=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}},Q0="xportmportlassforetaourceromsyncunctionssertvoyiedelecontininstantybreareturdebuggeawaithrwhileifcatcfinallels";x(kd,"parse");x(ys,"b");x(Sd,"k");x(ws,"l");x(Ba,"u");x(Xt,"o");typeof WebAssembly<"u"&&(async()=>{let{parse:t,init:e}=await Promise.resolve().then(()=>(ud(),ld));await e,wa=t})();Cs=x((t,e)=>wa?wa(t,e):kd(t,e),"parseEsm"),mo=x(t=>{if(!t.includes("import")&&!t.includes("export"))return!1;try{return Cs(t)[3]}catch{return!0}},"isESM"),Ra="2",D0=(t=>{let e="default";return t[e]&&typeof t[e]=="object"&&"__esModule"in t[e]?t[e]:t}).toString(),N0=`.then(${D0})`,fr=x((t,e,r)=>{if(r){if(!e.includes("import("))return}else if(!e.includes("import"))return;let n=Cs(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,N0);let s=o.toString(),i=o.generateMap({source:t,includeContent:!1,hires:"boundary"});return{code:s,map:i}},"transformDynamicImport"),Pa=x(t=>{try{let e=Ut.readFileSync(t,"utf8");return JSON.parse(e)}catch{}},"readJsonFile"),pd=x(()=>{},"noop"),gd=x(()=>Math.floor(Date.now()/1e8),"getTime"),ba=class extends Map{static{x(this,"FileCache")}cacheDirectory=ns;oldCacheDirectory=yn.join(_0.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=gd();Ut.promises.writeFile(yn.join(this.cacheDirectory,`${n}-${e}`),JSON.stringify(r)).catch(pd)}return this}expireDiskCache(){let e=gd();for(let r of this.cacheFiles)e-r.time>7&&Ut.promises.unlink(yn.join(this.cacheDirectory,r.fileName)).catch(pd)}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,_d=44,M0=59,Ad="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Td=new Uint8Array(64),Id=new Uint8Array(128);for(let t=0;t<Ad.length;t++){let e=Ad.charCodeAt(t);Td[t]=e,Id[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}};x(Bd,"decode");x(Rd,"indexOf");x(gn,"decodeInteger");x(Ea,"hasMoreVlq");x(Pd,"sort");x(Od,"sortComparator$1");x($d,"encode");x(An,"encodeInteger");F0=/^[\w+.-]+:\/\
84
+ `;break;case 114:k+="\r";break;case 116:k+=" ";break;case 117:let S=h(4);S>=0?k+=String.fromCharCode(S):a=4;break;default:a=5}I=n;continue}if(v>=0&&v<=31)if(Gr(v)){k+=t.substring(I,n),a=2;break}else a=6;n++}return k}Y(C,"D"),K(C,"scanString");function g(){if(o="",a=0,s=n,c=l,u=f,n>=r)return s=r,i=17;let k=t.charCodeAt(n);if(wo(k)){do n++,o+=String.fromCharCode(k),k=t.charCodeAt(n);while(wo(k));return i=15}if(Gr(k))return n++,o+=String.fromCharCode(k),k===13&&t.charCodeAt(n)===10&&(n++,o+=`
85
+ `),l++,f=n,i=14;switch(k){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=C(),i=10;case 47:let I=n-1;if(t.charCodeAt(n+1)===47){for(n+=2;n<r&&!Gr(t.charCodeAt(n));)n++;return o=t.substring(I,n),i=12}if(t.charCodeAt(n+1)===42){n+=2;let v=r-1,S=!1;for(;n<v;){let B=t.charCodeAt(n);if(B===42&&t.charCodeAt(n+1)===47){n+=2,S=!0;break}n++,Gr(B)&&(B===13&&t.charCodeAt(n)===10&&n++,l++,f=n)}return S||(n++,a=1),o=t.substring(I,n),i=13}return o+=String.fromCharCode(k),n++,i=16;case 45:if(o+=String.fromCharCode(k),n++,n===r||!hr(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+=A(),i=11;default:for(;n<r&&w(k);)n++,k=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(k),n++,i=16}}Y(g,"c"),K(g,"scanNext");function w(k){if(wo(k)||Gr(k))return!1;switch(k){case 125:case 93:case 123:case 91:case 34:case 58:case 44:case 47:return!1}return!0}Y(w,"p"),K(w,"isUnknownContentCharacter");function $(){let k;do k=g();while(k>=12&&k<=15);return k}return Y($,"b"),K($,"scanNextNonTrivia"),{setPosition:p,getPosition:K(()=>n,"getPosition"),scan:e?$:g,getToken:K(()=>i,"getToken"),getTokenValue:K(()=>o,"getTokenValue"),getTokenOffset:K(()=>s,"getTokenOffset"),getTokenLength:K(()=>n-s,"getTokenLength"),getTokenStartLine:K(()=>c,"getTokenStartLine"),getTokenStartCharacter:K(()=>s-u,"getTokenStartCharacter"),getTokenError:K(()=>a,"getTokenError")}}function wo(t){return t===32||t===9}function Gr(t){return t===10||t===13}function hr(t){return t>=48&&t<=57}function ac(t,e=[],r=$s.DEFAULT){let n=null,o=[],s=[];function i(l){Array.isArray(o)?o.push(l):n!==null&&(o[n]=l)}return Y(i,"l"),K(i,"onValue"),cc(t,{onObjectBegin:K(()=>{let l={};i(l),s.push(o),o=l,n=null},"onObjectBegin"),onObjectProperty:K(l=>{n=l},"onObjectProperty"),onObjectEnd:K(()=>{o=s.pop()},"onObjectEnd"),onArrayBegin:K(()=>{let l=[];i(l),s.push(o),o=l,n=null},"onArrayBegin"),onArrayEnd:K(()=>{o=s.pop()},"onArrayEnd"),onLiteralValue:i,onError:K((l,c,f)=>{e.push({error:l,offset:c,length:f})},"onError")},r),o[0]}function cc(t,e,r=$s.DEFAULT){let n=ic(t,!1),o=[],s=0;function i(W){return W?()=>s===0&&W(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}Y(i,"l"),K(i,"toNoArgVisit");function l(W){return W?V=>s===0&&W(V,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter()):()=>!0}Y(l,"g"),K(l,"toOneArgVisit");function c(W){return W?V=>s===0&&W(V,n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice()):()=>!0}Y(c,"m"),K(c,"toOneArgVisitWithPath");function f(W){return W?()=>{s>0?s++:W(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter(),()=>o.slice())===!1&&(s=1)}:()=>!0}Y(f,"k"),K(f,"toBeginVisit");function u(W){return W?()=>{s>0&&s--,s===0&&W(n.getTokenOffset(),n.getTokenLength(),n.getTokenStartLine(),n.getTokenStartCharacter())}:()=>!0}Y(u,"w"),K(u,"toEndVisit");let a=f(e.onObjectBegin),h=c(e.onObjectProperty),p=u(e.onObjectEnd),A=f(e.onArrayBegin),C=u(e.onArrayEnd),g=c(e.onLiteralValue),w=l(e.onSeparator),$=i(e.onComment),k=l(e.onError),I=r&&r.disallowComments,v=r&&r.allowTrailingComma;function S(){for(;;){let W=n.scan();switch(n.getTokenError()){case 4:B(14);break;case 5:B(15);break;case 3:B(13);break;case 1:I||B(11);break;case 2:B(12);break;case 6:B(16);break}switch(W){case 12:case 13:I?B(10):$();break;case 16:B(1);break;case 15:case 14:break;default:return W}}}Y(S,"v"),K(S,"scanNext");function B(W,V=[],oe=[]){if(k(W),V.length+oe.length>0){let te=n.getToken();for(;te!==17;){if(V.indexOf(te)!==-1){S();break}else if(oe.indexOf(te)!==-1)break;te=S()}}}Y(B,"d"),K(B,"handleError");function U(W){let V=n.getTokenValue();return W?g(V):(h(V),o.push(V)),S(),!0}Y(U,"L"),K(U,"parseString");function D(){switch(n.getToken()){case 11:let W=n.getTokenValue(),V=Number(W);isNaN(V)&&(B(2),V=0),g(V);break;case 7:g(null);break;case 8:g(!0);break;case 9:g(!1);break;default:return!1}return S(),!0}Y(D,"B"),K(D,"parseLiteral");function Q(){return n.getToken()!==10?(B(3,[],[2,5]),!1):(U(!1),n.getToken()===6?(w(":"),S(),F()||B(4,[],[2,5])):B(5,[],[2,5]),o.pop(),!0)}Y(Q,"$"),K(Q,"parseProperty");function O(){a(),S();let W=!1;for(;n.getToken()!==2&&n.getToken()!==17;){if(n.getToken()===5){if(W||B(4,[],[]),w(","),S(),n.getToken()===2&&v)break}else W&&B(6,[],[]);Q()||B(4,[],[2,5]),W=!0}return p(),n.getToken()!==2?B(7,[2],[]):S(),!0}Y(O,"N"),K(O,"parseObject");function L(){A(),S();let W=!0,V=!1;for(;n.getToken()!==4&&n.getToken()!==17;){if(n.getToken()===5){if(V||B(4,[],[]),w(","),S(),n.getToken()===4&&v)break}else V&&B(6,[],[]);W?(o.push(0),W=!1):o[o.length-1]++,F()||B(4,[],[4,5]),V=!0}return C(),W||o.pop(),n.getToken()!==4?B(8,[4],[]):S(),!0}Y(L,"$e"),K(L,"parseArray");function F(){switch(n.getToken()){case 3:return L();case 1:return O();case 10:return U(!0);default:return D()}}return Y(F,"H"),K(F,"parseValue"),S(),n.getToken()===17?r.allowEmptyContent?!0:(B(4,[],[]),!1):F()?(n.getToken()!==17&&B(9,[],[]),!0):(B(4,[],[]),!1)}var uy,Y,Uf,dc,jf,vn,Kf,oc,Ay,yy,wy,by,Wf,sc,yo,Ey,xy,vy,Cy,ky,K,Sy,wt,bo,xf,xn,$s,vf,Cf,_y,kf,fc,qf,Ty,Iy,Wr,Ps,By,za,Ry,Py,lc,pr,mc,Os,Oy,$y,Ly,Qy,Dy,Ny,My,Fy,Uy,Xa,Sf,_f,jy,Tf,Is,Ky,Wy,Gy,hc,qy,Qs,Jf,Za,If,Jy,Yy,Bf,ec,Hy,Vy,Rf,zy,tc,Xy,Pf,Bs,rc,Yf,Zy,Of,Ds,Hf,ew,tw,rw,$f,nw,ow,sw,iw,Lf,Ns,Ms,aw,Qf,St,po,go,Fs,cw,kn,Jr,ht,pc,wr,Us,Vf,zf,Ar,Xf,Zf,yr,em,Cn,fe,gr,lw,uw,dw,tm,rm,nm,fw,om,sm,mw,hw,Ao,js,uc,pw,gw,Df,Nf,Aw,nc,yw,ww,Rs,bw,Mf,Ew,xw,vw,Cw,Ff,Eo,Ks=ve(()=>{ro();ks();_s();Va();to();uy=Object.defineProperty,Y=(t,e)=>uy(t,"name",{value:e,configurable:!0}),Uf=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"),dc=Y(t=>{let e=Uf(t);return e&&(it._cache[e]=it._cache[t],delete it._cache[t],t=e),t},"interopCjsExports"),jf=Y(t=>t!==null&&typeof t=="object","A"),vn=Y((t,e)=>Object.assign(new Error(`[${t}]: ${e}`),{code:t}),"a"),Kf="ERR_INVALID_PACKAGE_CONFIG",oc="ERR_INVALID_PACKAGE_TARGET",Ay="ERR_PACKAGE_PATH_NOT_EXPORTED",yy=/^\d+$/,wy=/^(\.{1,2}|node_modules)$/i,by=/\/|\\/,Wf=(t=>(t.Export="exports",t.Import="imports",t))(Wf||{}),sc=Y((t,e,r,n,o)=>{if(e==null)return[];if(typeof e=="string"){let[s,...i]=e.split(by);if(s===".."||i.some(l=>wy.test(l)))throw vn(oc,`Invalid "${t}" target "${e}" defined in the package config`);return[o?e.replace(/\*/g,o):e]}if(Array.isArray(e))return e.flatMap(s=>sc(t,s,r,n,o));if(jf(e)){for(let s of Object.keys(e)){if(yy.test(s))throw vn(Kf,"Cannot contain numeric property keys");if(s==="default"||n.includes(s))return sc(t,e[s],r,n,o)}return[]}throw vn(oc,`Invalid "${t}" target "${e}"`)},"f"),yo="*",Ey=Y((t,e)=>{let r=t.indexOf(yo),n=e.indexOf(yo);return r===n?e.length>t.length:n>r},"m");Y(Gf,"d");xy=Y(t=>Object.keys(t).reduce((e,r)=>{let n=r===""||r[0]!==".";if(e===void 0||e===n)return n;throw vn(Kf,'"exports" cannot contain some keys starting with "." and some not')},void 0),"p"),vy=/^\w+:/,Cy=Y((t,e,r)=>{if(!t)throw new Error('"exports" is required');e=e===""?".":`./${e}`,(typeof t=="string"||Array.isArray(t)||jf(t)&&xy(t))&&(t={".":t});let[n,o]=Gf(t,e),s=sc(Wf.Export,t[n],e,r,o);if(s.length===0)throw vn(Ay,e==="."?'No "exports" main defined':`Package subpath '${e}' is not defined by "exports"`);for(let i of s)if(!i.startsWith("./")&&!vy.test(i))throw vn(oc,`Invalid "exports" target "${i}" defined in the package config`);return s},"v"),ky=Object.defineProperty,K=Y((t,e)=>ky(t,"name",{value:e,configurable:!0}),"i");Y(je,"x"),K(je,"slash");Sy=K((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"),wt=K((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=K((t,e,r)=>{for(;;){let n=z.posix.join(t,e);if(wt(r,n))return n;let o=z.dirname(t);if(o===t)return;t=o}},"findUp");Y(ic,"Ne"),K(ic,"createScanner");Y(wo,"X"),K(wo,"isWhiteSpace");Y(Gr,"P"),K(Gr,"isLineBreak");Y(hr,"S"),K(hr,"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"})(xf||(xf={})),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}})($s||($s={}));Y(ac,"Re"),K(ac,"parse$1");Y(cc,"Pe"),K(cc,"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"})(vf||(vf={}));(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"})(Cf||(Cf={}));_y=ac;(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"})(kf||(kf={}));fc=K((t,e)=>_y(Sy(e,t)),"readJsonc"),qf=K(()=>{let{findPnpApi:t}=it;return t&&t(process.cwd())},"getPnpApi"),Ty="detectTypeScriptVersion:",Iy=K((t,e)=>{let r=`${Ty}${t}`,n=e?.get(r);if(n!==void 0)return n??void 0;let o,s=qf();if(s)try{o=s.resolveRequest("typescript/package.json",t)??void 0}catch{}o??=bo(z.resolve(t),z.join("node_modules","typescript","package.json"),e);let i;if(o)try{let l=fc(o,e);typeof l?.version=="string"&&(i=l.version)}catch{}return e?.set(r,i??null),i},"detectTypeScriptVersion"),Wr="package.json",Ps="tsconfig.json",By=K((t,e,r)=>{let n=it.createRequire(z.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=K((t,e,r,n)=>{let o=`resolveFromPackageJsonPath:${t}:${e}:${r}`;if(n?.has(o))return n.get(o)||!1;let s=fc(t,n);if(!s)return;let i=e||Ps;if(!r&&s.exports)try{let[l]=Cy(s.exports,e,["require","types"]);i=l}catch{return n?.set(o,""),!1}else!e&&s.tsconfig&&(i=s.tsconfig);return i=z.join(t,"..",i),n?.set(o,i),i},"resolveFromPackageJsonPath"),Ry=K((t,e,r)=>{let n=`resolveExtendsPath:${t}:${e}`;if(r?.has(n))return r.get(n)||void 0;let o=Py(t,e,r);return r?.set(n,o||""),o},"resolveExtendsPath"),Py=K((t,e,r)=>{let n=t;if(t===".."&&(n=z.join(n,Ps)),t[0]==="."&&(n=z.resolve(e,n)),z.isAbsolute(n)){let g=wt(r,n);if(g){if(g.isFile())return n}else if(!n.endsWith(".json")){let w=`${n}.json`;if(wt(r,w))return w}return}let[o,...s]=t.split("/"),i=o[0]==="@"?`${o}/${s.shift()}`:o,l=s.join("/"),c=qf();if(c){let{resolveRequest:g}=c;try{if(i===t){let w=g(z.join(i,Wr),e);if(w){let $=za(w,l,!1,r);if($&&wt(r,$))return $}}else{let w;try{w=g(t,e,{extensions:[".json"]})}catch{w=g(z.join(t,Ps),e)}if(w)return w}}catch{}}let f=By(t,i,e),u;if(f){if(z.basename(f)!==Wr&&f.endsWith(".json"))return f;u=z.basename(f)===Wr?f:bo(z.dirname(f),Wr,r)}let a=u&&z.dirname(u)||bo(z.resolve(e),z.join("node_modules",i),r);if(!a||!wt(r,a)?.isDirectory())return;let h=z.join(a,Wr);if(wt(r,h)){let g=za(h,l,!1,r);if(g===!1)return;if(g&&wt(r,g)?.isFile())return g}let p=z.join(a,l),A=p.endsWith(".json");if(!A){let g=`${p}.json`;if(wt(r,g))return g}let C=wt(r,p);if(C){if(C.isDirectory()){let g=z.join(p,Wr);if(wt(r,g)){let $=za(g,"",!0,r);if($&&wt(r,$))return $}let w=z.join(p,Ps);if(wt(r,w))return w}else if(A)return p}},"resolveExtendsPathUncached"),lc=Symbol("implicitBaseUrl"),pr="${configDir}",mc=/^\.{1,2}(\/.*)?$/,Os=K(t=>{let e=je(t);return mc.test(e)?e:`./${e}`},"normalizeRelativePath"),Oy=K(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"),$y=K((t,e)=>{!e.has("target")&&!Ly(t.module)&&(t.target="es3")},"applyV4Defaults"),Ly=K(t=>t==="node16"||t==="node18"||t==="node20"||t==="nodenext","moduleDictatesTarget$1"),Qy=K((t,e)=>{!e.has("target")&&!Dy(t.module)&&(t.target="es5")},"applyV5Defaults"),Dy=K(t=>t==="node16"||t==="node18"||t==="node20"||t==="nodenext","moduleDictatesTarget"),Ny=K((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"),My=[[4,$y],[5,Qy],[6,Ny]],Fy=K(t=>{let e=/^v?(\d+)/.exec(t);return e?Number(e[1]):void 0},"parseMajor"),Uy=K((t,e)=>{let r=Fy(e);if(r===void 0)return;let n=new Set(Object.keys(t));for(let[o,s]of My)o<=r&&s(t,n)},"applyVersionDefaults"),Xa=K((t,e)=>Os(z.relative(t,e)),"pathRelative"),Sf=["files","include","exclude"],_f=K((t,e,r)=>{let n=z.join(e,r),o=z.relative(t,n);return je(o)||"./"},"resolveAndRelativize"),jy=K((t,e,r)=>{let n=z.relative(t,e);if(!n)return r;let o=r.startsWith("./")?r.slice(2):r;return je(`${n}/${o}`)},"prefixPattern"),Tf=["outDir","declarationDir"],Is=K((t,e)=>{if(t.startsWith(pr))return je(z.join(e,t.slice(pr.length)))},"interpolateConfigDir"),Ky=["outDir","declarationDir","outFile","rootDir","baseUrl","tsBuildInfoFile"],Wy=K((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=K(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 A=p.config,C=z.dirname(a),g={...A,...A.compilerOptions&&{compilerOptions:{...A.compilerOptions}},...A.watchOptions&&{watchOptions:{...A.watchOptions}}};if(delete g.extends,g.compilerOptions?.paths&&!g.compilerOptions.baseUrl&&(g.compilerOptions[lc]=C),A.extends){let w=Array.isArray(A.extends)?A.extends:[A.extends];for(let $ of w.toReversed()){let k=s($),I=z.dirname($),{references:v,...S}=k;if(S.compilerOptions){let U={...S.compilerOptions};for(let D of["baseUrl","outDir","declarationDir","rootDir"]){let Q=U[D];Q&&!Q.startsWith(pr)&&(U[D]=_f(C,I,Q))}for(let D of["rootDirs","typeRoots"]){let Q=U[D];Q&&(U[D]=Q.map(O=>O.startsWith(pr)?O:_f(C,I,O)))}S.compilerOptions=U}for(let U of Sf){let D=S[U];D&&(S[U]=D.map(Q=>Q.startsWith(pr)?Q:jy(C,I,Q)))}let B={...S,...g,compilerOptions:{...S.compilerOptions,...g.compilerOptions}};S.watchOptions&&(B.watchOptions={...S.watchOptions,...g.watchOptions}),g=B}}if(g.compilerOptions){let{compilerOptions:w}=g,$=["baseUrl","rootDir"];for(let k of $){let I=w[k];if(I&&!I.startsWith(pr)){let v=z.resolve(C,I),S=Xa(C,v);w[k]=S}}for(let k of Tf){let I=w[k];I&&(Array.isArray(g.exclude)||(g.exclude=Tf.map(v=>w[v]).filter(Boolean)),I.startsWith(pr)||(I=Os(I)),w[k]=I)}}else g.compilerOptions={};if(g.include&&(g.include=g.include.map(je)),g.files&&(g.files=g.files.map(w=>w.startsWith(pr)?w:Os(w))),g.watchOptions){let{watchOptions:w}=g;for(let $ of["excludeDirectories","excludeFiles"])w[$]&&(w[$]=w[$].map(k=>je(z.resolve(C,k))));for(let $ of["watchFile","watchDirectory","fallbackPolling"])if(w[$]){let k=w;k[$]=w[$].toLowerCase()}}return o.set(a,g),g},"resolveEntry"),i=t[0],l=s(i.path),c=z.dirname(i.path),f={...l,compilerOptions:l.compilerOptions?{...l.compilerOptions}:{}},{compilerOptions:u}=f;if(u){for(let a of Ky){let h=u[a];if(h){let p=Is(h,c);u[a]=p?Xa(c,p):h}}for(let a of["rootDirs","typeRoots"]){let h=u[a];h&&(u[a]=h.map(p=>{let A=Is(p,c);return A?Xa(c,A):Os(p)}))}if(u.paths){let a={};for(let[h,p]of Object.entries(u.paths))a[h]=p.map(A=>Is(A,c)??A);u.paths=a}r&&Uy(u,r),f.compilerOptions=Oy(u)}for(let a of Sf){let h=f[a];h&&(f[a]=h.map(p=>Is(p,c)??p))}return{path:i.path,config:f,sources:t.map(a=>a.path)}},"resolveExtendsChain"),Gy=K((t,e={})=>{let{cache:r=new Map}=e,n=z.resolve(t),o=[],s=new Set,i=K((l,c)=>{let f=je(l);if(s.has(f))return;s.add(f);let u;try{u=fc(l,r)||{}}catch{throw new Error(`Cannot resolve tsconfig at path: ${l}`)}if(typeof u!="object")throw new SyntaxError(`Failed to parse tsconfig at: ${l}`);let a=z.dirname(l);if(u.extends){let h=Array.isArray(u.extends),p=(h?u.extends:[u.extends]).map(C=>{let g=Ry(C,a,r);if(!g)throw new Error(`File '${C}' not found.`);let w=je(g);if(c.has(w)||w===f)throw new Error(`Circularity detected while resolving configuration: ${w}`);return w});u.extends=h?p:p[0],o.push({path:f,config:u});let A=new Set(c);A.add(f);for(let C of[...p].reverse())i(C,A)}else o.push({path:f,config:u})},"collect");return i(n,new Set),o},"getExtendsChain"),hc=K((t,e={})=>{let{cache:r=new Map,typescriptVersion:n="auto"}=e,o=Gy(t,{cache:r}),s;return n==="auto"?s=Iy(z.dirname(o[0].path),r):n!==!1&&(s=n),Wy(o,{typescriptVersion:s})},"readTsconfig"),qy=Object.defineProperty,Qs=K((t,e)=>qy(t,"name",{value:e,configurable:!0}),"s"),Jf=Qs(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,If=Qs((t,e)=>{let r=py.join(t,`.is-fs-case-sensitive-test-${process.pid}`);try{return e.writeFileSync(r,""),!e.existsSync(Jf(r))}finally{try{e.unlinkSync(r)}catch{}}},"checkDirectoryCaseWithWrite"),Jy=Qs((t,e,r)=>{try{return If(t,r)}catch(n){if(e===void 0)return If(hy.tmpdir(),r);throw n}},"checkDirectoryCaseWithFallback"),Yy=Qs((t,e=my,r=!0)=>{let n=t??process.cwd();if(r&&Za.has(n))return Za.get(n);let o,s=Jf(n);return s!==n&&e.existsSync(n)?o=!e.existsSync(s):o=Jy(n,t,e),r&&Za.set(n,o),o},"isFsCaseSensitive"),{join:Bf}=z.posix,ec={ts:[".ts",".tsx",".d.ts"],cts:[".cts",".d.cts"],mts:[".mts",".d.mts"]},Hy=K(t=>{let e=[...ec.ts],r=[...ec.cts],n=[...ec.mts];return t?.allowJs&&(e.push(".js",".jsx"),r.push(".cjs"),n.push(".mjs")),[...e,...r,...n]},"getSupportedExtensions"),Vy=K(t=>{let e=[];if(!t)return e;let{outDir:r,declarationDir:n}=t;return r&&e.push(r),n&&e.push(n),e},"getDefaultExcludeSpec"),Rf=K(t=>t.replaceAll(/[.*+?^${}()|[\]\\]/g,String.raw`\$&`),"escapeForRegexp"),zy=["node_modules","bower_components","jspm_packages"],tc=`(?!(${zy.join("|")})(/|$))`,Xy=/(?:^|\/)[^.*?]+$/,Pf="**`,"(.+/)?").replaceAll(String.raw`\*`,`${Bs}*`).replaceAll(String.raw`\?`,Bs);return new RegExp(`^${w}($|/)`,a)}),p=o||s?s:[Pf],A=p?p.map(C=>{let g=c(C);Xy.test(g)&&(g=Bf(g,Pf));let w=Rf(g).replaceAll(String.raw`/\*\*`,`(/${tc}${rc}${Bs}*)*?`).replaceAll(/(\/)?\\\*/g,($,k)=>{let I=String.raw`(${rc}|(\.(?!min\.js$))?)*`;return k?`/${tc}${rc}${I}`:I}).replaceAll(/(\/)?\\\?/g,($,k)=>{let I=Bs;return k?`/${tc}${I}`:I});return new RegExp(`^${w}$`,a)}):void 0;return{filesSet:f,extensions:u,excludePatterns:h,includePatterns:A}},"compilePatterns"),Of=new WeakMap,Ds=K((t,e)=>{if(!z.isAbsolute(e))return!1;Yf&&(e=je(e));let r=Of.get(t);r||(r=Zy(t,Yy()),Of.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"),Hf=K((t,e,r,n)=>{let o=z.resolve(t),s=je(t);for(;;){let i=bo(s,e,r);if(!i)return;let l=z.resolve(i),c=hc(l,{cache:r,typescriptVersion:n});if(Ds(c,o))return c;let f=z.dirname(i),u=z.dirname(f);if(u===f)return;s=u}},"findConfigApplicable"),ew=K((t=process.cwd(),e={})=>{let{configName:r="tsconfig.json",cache:n=new Map,includes:o=!1}=e;if(!o){let s=z.resolve(t);return z.basename(s)===r&&wt(n,s)?.isFile()?je(s):bo(je(t),r,n)}return Hf(t,r,n,!1)?.path},"findTsconfig"),tw=K((t=process.cwd(),e={})=>{let{configName:r="tsconfig.json",cache:n=new Map,includes:o=!1,typescriptVersion:s="auto"}=e;if(!o){let i=ew(t,{configName:r,cache:n});return i?hc(i,{cache:n,typescriptVersion:s}):void 0}return Hf(t,r,n,s)},"getTsconfig"),rw=/\*/g,$f=K((t,e)=>{let r=t.match(rw);if(r&&r.length>1)throw new Error(e)},"assertStarCount"),nw=K(t=>{if(t.includes("*")){let[e,r]=t.split("*");return{prefix:e,suffix:r}}return t},"parsePattern"),ow=K(({prefix:t,suffix:e},r)=>r.startsWith(t)&&r.endsWith(e),"isPatternMatch"),sw=K((t,e,r)=>Object.entries(t).map(([n,o])=>($f(n,`Pattern '${n}' can have at most one '*' character.`),{pattern:nw(n),substitutions:o.map(s=>{if($f(s,`Substitution '${s}' in pattern '${n}' can have at most one '*' character.`),!e&&!mc.test(s)&&!z.isAbsolute(s))throw new Error("Non-relative paths are not allowed when 'baseUrl' is not set. Did you forget a leading './'?");return z.resolve(r,s)})})),"parsePaths"),iw=K(t=>{let{compilerOptions:e}=t.config;if(!e)return null;let{baseUrl:r,paths:n}=e;if(!r&&!n)return null;let o=lc in e&&e[lc],s=z.resolve(z.dirname(t.path),r||o||"."),i=n?sw(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"),Lf=new WeakMap,Ns=K((t,e)=>{let r=Lf.get(t);if(r===void 0&&(r=iw(t),Lf.set(t,r)),!r)return[];if(mc.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)ow(a.pattern,e)&&a.pattern.prefix.length>f&&(f=a.pattern.prefix.length,c=a);if(!c)return i?[je(z.join(s,e))]:[];let u=e.slice(c.pattern.prefix.length,e.length-c.pattern.suffix.length);return c.substitutions.map(a=>je(a.replace("*",u)))},"resolvePathAlias"),Ms=Y(t=>{if(t)return hc(t);try{return tw()??void 0}catch{}},"loadTsconfig"),aw=`
90
+
91
+ `)},"createLog"),Cn=em(Ef(yf(" CJS "))),fe=em(wf(" ESM ")),gr=new Map,lw=Y(async t=>{if(gr.has(t))return gr.get(t);if(!await qr.promises.access(t).then(()=>!0,()=>!1)){gr.set(t,void 0);return}let e=await qr.promises.readFile(t,"utf8");try{let r=JSON.parse(e);return gr.set(t,r),r}catch{throw new Error(`Error parsing: ${t}`)}},"readPackageJson"),uw=Y(t=>{if(gr.has(t))return gr.get(t);if(!qr.existsSync(t)){gr.set(t,void 0);return}let e=qr.readFileSync(t,"utf8");try{let r=JSON.parse(e);return gr.set(t,r),r}catch{throw new Error(`Error parsing: ${t}`)}},"readPackageJsonSync"),dw=Y(async t=>{let e=new URL("package.json",t);for(;!e.pathname.endsWith("/node_modules/package.json");){let r=Ls(e),n=await lw(r);if(n)return n;let o=e;if(e=new URL("../package.json",e),e.pathname===o.pathname)break}},"findPackageJson"),tm=Y(t=>{let e=new URL("package.json",t);for(;!e.pathname.endsWith("/node_modules/package.json");){let r=Ls(e),n=uw(r);if(n)return n;let o=e;if(e=new URL("../package.json",e),e.pathname===o.pathname)break}},"findPackageJsonSync"),rm=Y(async t=>(await dw(t))?.type??"commonjs","getPackageType"),nm=Y(t=>tm(t)?.type??"commonjs","getPackageTypeSync"),fw=Y(t=>tm(t)?.type,"getNearestPackageTypeSync"),om=[".js",".json"],sm=[".ts",".tsx",".jsx"],mw=[...sm,...om],hw=[...om,...sm],Ao=Object.create(null);Ao[".js"]=[".ts",".tsx",".js",".jsx"],Ao[".jsx"]=[".tsx",".ts",".jsx",".js"],Ao[".cjs"]=[".cts"],Ao[".mjs"]=[".mts"];js=Y(t=>{let e=t.split("?"),r=e[1]?`?${e[1]}`:"",[n]=e,o=z.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(ht)||Jr(n))||n.includes(Zf)||n.includes("/node_modules/")?hw:mw;return s.push(...l.map(c=>n+c+r)),s},"mapTsExtensions"),uc=Y(t=>Array.from(t).length>0?`?${t.toString()}`:"","urlSearchParamsStringify"),pw=[".cts",".mts",".ts",".tsx",".jsx"],gw=[".js",".cjs",".mjs"],Df=[".ts",".tsx",".jsx"],Nf="module.exports",Aw=Y(t=>{let e=z.extname(t);return e===".mjs"||e===".mts"||(e===".js"||e===".ts")&&fw(dy(t).toString())!=="commonjs"},"isRequireEsmCandidate"),nc=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"),yw=Y((t,e,r,n)=>{let o=e[".js"],s=vt(Ru),i=Y((l,c)=>{if(t.enabled===!1)return o(l,c);let[f,u]=c.split("?");if((new URLSearchParams(u).get("namespace")??void 0)!==n)return o(l,c);Cn(2,"load",{filePath:c}),l.id.startsWith("data:text/javascript,")&&(l.path=z.dirname(f)),mr?.send&&mr.send({type:"dependency",path:f});let a=pw.some(w=>f.endsWith(w)),h=gw.some(w=>f.endsWith(w));if(!a&&!h)return o(l,f);let p=qr.readFileSync(f,"utf8"),A=h&&!f.endsWith(".cjs")&&!f.endsWith(".cts")&&mo(p),C=(a||A)&&r&&Ds(r,f)?r.config:void 0;if(f.endsWith(".cjs")){let w=fr(c,p);w&&(p=Qf()?St(w):w.code)}else if(a||A){let w=jr(p,c,{tsconfigRaw:C});p=Qf()?St(w):w.code}Cn(1,"loaded",{filePath:f}),l._compile(p,f),u&&it._cache[f]===l&&(it._cache[c]=l,delete it._cache[f]);let{exports:g}=l;(s&&g&&(typeof g=="object"||typeof g=="function")?Object.getOwnPropertyDescriptor(g,Nf):void 0)?.get&&Aw(f)&&(l.exports=g[Nf])},"transformer");nc(e,".js",i);for(let l of Df)nc(e,l,i,{enumerable:!n,writable:!0,configurable:!0});return nc(e,".mjs",i,{writable:!0,configurable:!0}),()=>{e[".js"]===i&&(e[".js"]=o);for(let l of[...Df,".mjs"])e[l]===i&&delete e[l]}},"createExtensions"),ww=Y(t=>e=>{if((e==="."||e===".."||e.endsWith("/.."))&&(e+="/"),Ar.test(e)){let r=z.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}${z.sep}index`)}catch{}throw n}},"createImplicitResolver"),Rs=Y((t,e,r,n)=>{if(Cn(3,"resolveTsFilename",{request:e,isDirectory:Ar.test(e),isTsParent:r,allowJs:n}),Ar.test(e)||!r&&!n)return;let o=js(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"),bw=Y((t,e,r)=>n=>{if(Cn(3,"resolveTsFilename",{request:n,isTsParent:e,isFilePath:Jr(n)}),Jr(n)){let o=Rs(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],u=Rs(t,f,e,r);if(u)return u}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],u=Rs(t,f,e,r);if(u)return u}}let i=Rs(t,n,e,r);if(i)return i}throw s}},"createTsExtensionResolver"),Mf="at cjsPreparseModuleExports (node:internal",Ew=Y(t=>{let e=t.stack.split(`
92
+ `).slice(1);return e[1].includes(Mf)||e[2].includes(Mf)},"isFromCjsLexer"),xw=Y((t,e)=>{let r=t.split("?"),n=new URLSearchParams(r[1]);if(e?.filename){let o=Uf(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=z.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)=>(z.isAbsolute(o)&&!o.endsWith(".json")&&!o.endsWith(".node")&&!(s===0&&Ew(new Error))&&(o+=uc(n)),o)]},"preserveQuery"),vw=Y((t,e,r,n)=>{if(t.startsWith(ht)&&(t=Ls(t)),n&&!Jr(t)&&!e?.filename?.includes(Zf)){let o=Ns(n,t);for(let s of o)try{return r(s)}catch{}}return r(t)},"resolveTsPaths"),Cw=Y((t,e,r,n)=>(o,s,...i)=>{if(t.enabled===!1)return e(o,s,...i);o=dc(o);let[l,c,f]=xw(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 u=Y(h=>e(h,s,...i),"nextResolveSimple");u=bw(u,!!(n||s?.filename&&wr.test(s.filename)),r?.config.compilerOptions?.allowJs??!1),u=ww(u);let a=f(vw(l,s,u,r),i.length);return Cn(1,"resolved",{request:o,parent:s?.filename??s,resolved:a}),a},"createResolveFilename"),Ff=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(ht)||e instanceof URL)&&(e=Ls(e)),z.resolve(z.dirname(e),t)):t},"resolveContext"),Eo=Y(t=>{let{sourceMapsEnabled:e}=process,r={enabled:!0},n=Ms(process.env.TSX_TSCONFIG_PATH);process.setSourceMapsEnabled(!0);let o=it._resolveFilename,s=Cw(r,o,n,t?.namespace);it._resolveFilename=s;let i=yw(r,it._extensions,n,t?.namespace),l=t?.namespace?void 0:cw(),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=Ff(a,h),[A,C]=p.split("?"),g=new URLSearchParams(C);return t.namespace&&!A.startsWith("node:")&&g.set("namespace",t.namespace),$r(A+uc(g))},"scopedRequire");c.require=f;let u=Y((a,h,p)=>{let A=Ff(a,h),[C,g]=A.split("?"),w=new URLSearchParams(g);return t.namespace&&!C.startsWith("node:")&&w.set("namespace",t.namespace),s(C+uc(w),module,!1,p)},"scopedResolve");c.resolve=u,c.unregister=c}return c},"register")});import Sn from"node:module";import{MessageChannel as Sw}from"node:worker_threads";import{pathToFileURL as Lt,fileURLToPath as wc}from"node:url";import{readFileSync as _w}from"node:fs";import{readFile as Tw}from"node:fs/promises";import Hr from"node:path";var kw,ne,Co,hm,vk,Ck,Iw,Bw,br,Ys,im,ko,xo,bc,Ws,Rw,Pw,Ow,Vr,am,pm,gm,$w,Lw,Gs,Yr,Qw,Ec,Am,ym,Dw,wm,Nw,bm,Em,Ac,Mw,Fw,kk,Uw,jw,xm,Hs,Vs,vm,qs,vo,Kw,gc,cm,lm,Ww,Gw,Js,yc,Cm,qw,Jw,Sk,um,dm,Yw,Hw,fm,Vw,zw,km,Xw,Zw,mm,xc,Sm=ve(()=>{to();Ks();ks();_s();kw=Object.defineProperty,ne=(t,e)=>kw(t,"name",{value:e,configurable:!0}),Co={active:!0,parsedTsconfig:void 0},hm=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=Ms(t?.tsconfig??process.env.TSX_TSCONFIG_PATH)),e},"createData"),vk=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,hm(t)),t.port&&t.port.on("message",e=>{e==="deactivate"&&(Co.active=!1,t.port.postMessage({type:"deactivated"}))})},"initialize"),Ck=ne(()=>(Co.parsedTsconfig=Ms(process.env.TSX_TSCONFIG_PATH),"process.setSourceMapsEnabled(true);"),"globalPreload"),Iw=ne(t=>{let{pathname:e}=new URL(t),r=Hr.extname(e);if(r===".mts"||r===".mjs")return"module";if(r===".cts"||r===".cjs")return"commonjs";if(r===".js"||pc.includes(r))return rm(t)},"getFormatFromFileUrl"),Bw=ne(t=>{let{pathname:e}=new URL(t),r=Hr.extname(e);if(r===".mts"||r===".mjs")return"module";if(r===".cts"||r===".cjs")return"commonjs";if(r===".js"||pc.includes(r))return nm(t)},"getFormatFromFileUrlSync"),br="tsx-namespace=",Ys="tsx-commonjs-export-preparse",im=`${Ys}=1`,ko="tsx-commonjs-virtual-query",xo=new Map,bc=ne((t,e)=>t.slice(1).split("&").filter(r=>r&&e.every(n=>!r.startsWith(n))).join("&"),"getQueryWithoutParameters"),Ws=ne((t,e)=>{let r=bc(t,e);return r?`?${r}`:""},"getSearchWithoutParameters"),Rw=ne(t=>t.replaceAll(/\/\*[\s\S]*?\*\/|\/\/[^\n\r]*/g,""),"stripComments"),Pw=ne(t=>{let e=Rw(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"),Ow=ne((t,e,r)=>{let n=xo.get(t);if(!n)return!1;try{let[o]=Cs(n);return o.some(s=>{if(s.d!==-1||s.n!==e)return!1;let i=Pw(n.slice(s.ss,s.s));return i==="named"||r&&i==="namespace"})}catch{return!1}},"parentImportsCommonJsExports"),Vr=ne(t=>{let e=t.indexOf(br);if(e===-1)return;let r=t[e-1];if(r!=="?"&&r!=="&")return;let n=e+br.length,o=t.indexOf("&",n);return o===-1?t.slice(n):t.slice(n,o)},"getNamespace"),am=vt(Iu)?"importAttributes":"importAssertions",pm=ne(t=>t==="commonjs"||t==="commonjs-typescript","isCommonJsFormat"),gm=ne(t=>t==="module-typescript"||t==="typescript","isModuleTypeScriptFormat"),$w=vt(un),Lw=[`${ko}=`],Gs=[`${Ys}=`,`${ko}=`],Yr=ne((t,e)=>e.parsedTsconfig&&Ds(e.parsedTsconfig,t)?e.parsedTsconfig.config:void 0,"getTsconfigRaw"),Qw=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="",wc(n)},"getFilePathFromVirtualQuery"),Ec=ne(t=>{let e=t.startsWith(ht)?new URL(t):void 0,r=e?wc(e):t,n=e&&Qw(e),o=n||r,s=e&&n?Lt(o).toString()+Ws(e.search,Lw):t;return{fileUrl:e,filePath:o,loadUrl:s}},"getFileLoadContext"),Am=ne((t,e)=>{if(!e?.search)return t;let r=Ws(e.search,Gs);return r?Lt(t).toString()+r:t},"getTransformPath"),ym=ne((t,e,r)=>{let n=[...e?bc(e.search,[br,...Gs]).split("&").filter(Boolean):[],...r?[`namespace=${encodeURIComponent(r)}`]:[]].join("&");return n?`${t}?${n}`:t},"getFilePathWithQuery"),Dw=new TextDecoder,wm=ne(t=>typeof t=="string"?t:Dw.decode(t),"decodeSource"),Nw=ne((t,e)=>{let r=new URL(e),n=e.startsWith(ht)?Ec(e).filePath:void 0;r.searchParams.delete("tsx-namespace"),r.searchParams.delete(Ys),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"),bm=ne((t,e)=>{if(!t.active)return!1;let r=Vr(e);if(t.namespace&&t.namespace!==r)return!1;let n=Nw(t,e);return mr.send&&mr.send({type:"dependency",path:n}),!0},"prepareLoad"),Em=ne((t,e)=>{if(!zf.test(t))return e;let r=e[am];return r?.type?e:{...e,[am]:{...r,type:"json"}}},"prepareJsonAttributes"),Ac=ne(({conditions:t})=>t?.includes("require")===!0&&!t.includes("import"),"isCommonJsRequireContext$1"),Mw=ne(t=>{let e=ne(async(r,n,o)=>{if(!bm(t,r))return o(r,n);let s=Vr(r),{fileUrl:i,filePath:l,loadUrl:c}=Ec(r),f=Em(c,n),u=await o(c,f);fe(3,"loaded by next loader",{url:r,loadUrl:c,loaded:u});let a=i?.searchParams.has(Ys)===!0,h=u.format,p=i?new URL(Lt(l)):void 0;if(p&&i&&(p.search=Ws(i.search,Gs)),pm(h)&&i&&u.responseURL?.startsWith("file:")&&!l.endsWith(".cjs")){let g=await Tw(Lt(l),"utf8"),w=mo(g);if(h==="commonjs-typescript"||!l.endsWith(".js")||w){if(!$w){if(a&&w&&Us.test(l)){let I=await Ya(g,l,{define:{"import.meta.url":JSON.stringify(p.toString())},tsconfigRaw:Yr(l,t)});return xo.set(r,I.code),{format:"module",source:St(I)}}return u}if(!s&&!a&&!l.endsWith(".cts"))return u;let $=!!(s||a||Ws(i.search,Gs)),k=jr(g,Am(l,i),{cjsBanner:$?`require = require("node:module").createRequire(${JSON.stringify(Lt(l).toString())});`:void 0,tsconfigRaw:Yr(l,t)});if(u.format="commonjs",u.source=St(k),$){let I=ym(l,i,s);u.responseURL=`data:text/javascript,${encodeURIComponent(k.code)}?filePath=${encodeURIComponent(I)}`}return fe(3,"returning CJS export annotation",u),u}}if(!u.source)return u;let A=wm(u.source),C=h==="json"&&!Ac(n);if(h==="commonjs-typescript"){let g=jr(A,l,{tsconfigRaw:Yr(l,t)});return{...u,format:"commonjs",source:St(g)}}if(C||gm(h)||wr.test(r)){let g=await Ya(A,l,{tsconfigRaw:Yr(l,t)});return xo.set(r,g.code),{format:"module",source:St(g)}}if(u.format==="module"){let g=fr(l,A);g?(u.source=St(g),xo.set(r,g.code)):xo.set(r,A)}return u},"load2");return yr?async(r,n,o)=>{fe(2,"load",{url:r,context:n});let s=await e(r,n,o);return fe(1,"loaded",{url:r,result:s}),s}:e},"createLoad"),Fw=ne(t=>{let e=ne((r,n,o)=>{if(Ac(n)&&Fs()||!bm(t,r))return o(r,n);let s=Vr(r),{fileUrl:i,filePath:l,loadUrl:c}=Ec(r),f=Em(c,n),u=o(c,f);fe(3,"loaded by next loader",{url:r,loadUrl:c,loaded:u});let a=u.format;if(pm(a)&&vt(un)&&u.responseURL?.startsWith("file:")&&!l.endsWith(".cjs")){let A=_w(Lt(l),"utf8");if(a==="commonjs-typescript"||!l.endsWith(".js")||mo(A)){let C=jr(A,Am(l,i),{tsconfigRaw:Yr(l,t)}),g=!s&&Fs(),w=ym(l,i,s);return u.format="commonjs",u.shouldBeReloadedByCJSLoader=g,u.source=St(C),g||(u.responseURL=`data:text/javascript,${encodeURIComponent(C.code)}?filePath=${encodeURIComponent(w)}`),fe(3,"returning CJS export annotation",u),u}}if(!u.source)return u;let h=wm(u.source),p=a==="json"&&!Ac(n);if(a==="commonjs-typescript"){let A=jr(h,l,{tsconfigRaw:Yr(l,t)});return{...u,format:"commonjs",shouldBeReloadedByCJSLoader:!1,source:St(A)}}if(p||gm(a)||wr.test(r)){let A=Af(h,l,{tsconfigRaw:Yr(l,t)});return{format:"module",source:St(A)}}if(u.format==="module"){let A=fr(l,h);A&&(u.source=St(A))}return u},"load2");return yr?(r,n,o)=>{fe(2,"loadSync",{url:r,context:n});let s=e(r,n,o);return fe(1,"loadedSync",{url:r,result:s}),s}:e},"createLoadSync"),kk=Mw(Co),Uw=vt(un),jw=/^(?:[a-z][\d+.a-z-]*:\/\/|data:|file:|node:)/i,xm=ne(t=>!Jr(t)&&!jw.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(!Hr.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"),Vs=ne(t=>t==="ERR_MODULE_NOT_FOUND"||t==="MODULE_NOT_FOUND","isModuleNotFound"),vm=ne(t=>t.conditions.includes("require")&&!t.conditions.includes("import"),"isCommonJsRequireContext"),qs=ne(async(t,e,r,n)=>{let o=js(t);if(fe(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(!Vs(c)&&c!=="ERR_PACKAGE_PATH_NOT_EXPORTED")throw l;s=l}if(n)throw s},"resolveExtensions"),vo=ne((t,e,r,n)=>{let o=js(t);if(fe(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(!Vs(c)&&c!=="ERR_PACKAGE_PATH_NOT_EXPORTED")throw l;s=l}if(n)throw s},"resolveExtensionsSync"),Kw=ne(async(t,e,r,n)=>{let o=n.parsedTsconfig?.config.compilerOptions?.allowJs??!1;if(fe(3,"resolveBase",{specifier:t,context:e,specifierStartsWithFileUrl:t.startsWith(ht),isRelativePath:kn(t),tsExtensionsPattern:wr.test(e.parentURL),allowJs:o}),(t.startsWith(ht)||kn(t))&&(wr.test(e.parentURL)||o)){let s=await qs(t,e,r);if(fe(3,"resolveBase resolved",{specifier:t,context:e,resolved:s}),s)return s}try{return await r(t,e)}catch(s){if(fe(3,"resolveBase error",{specifier:t,context:e,error:s}),s instanceof Error){let i=s;if(Vs(i.code)){let l=Hs(i);if(l){let c=await qs(l,e,r);if(c)return c}}}throw s}},"resolveBase"),gc=ne((t,e,r,n)=>{let o=n.parsedTsconfig?.config.compilerOptions?.allowJs??!1;if(fe(3,"resolveBaseSync",{specifier:t,context:e,specifierStartsWithFileUrl:t.startsWith(ht),isRelativePath:kn(t),tsExtensionsPattern:wr.test(e.parentURL),allowJs:o}),(t.startsWith(ht)||kn(t))&&(wr.test(e.parentURL)||o)){let s=vo(t,e,r);if(fe(3,"resolveBaseSync resolved",{specifier:t,context:e,resolved:s}),s)return s}try{return r(t,e)}catch(s){if(fe(3,"resolveBaseSync error",{specifier:t,context:e,error:s}),s instanceof Error){let i=s;if(Vs(i.code)){let l=Hs(i);if(l){let c=vo(l,e,r);if(c)return c}}}throw s}},"resolveBaseSync"),cm=ne(async(t,e,r,n)=>{if(fe(3,"resolveDirectory",{specifier:t,context:e,isDirectory:Ar.test(t)}),(t==="."||t===".."||t.endsWith("/.."))&&(t+="/"),Ar.test(t)){let o=new URL(t,e.parentURL);return o.pathname=Hr.join(o.pathname,"index"),await qs(o.toString(),e,r,!0)}try{return await Kw(t,e,r,n)}catch(o){if(o instanceof Error){fe(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 qs(`${i}/index`,e,r,!0)}catch(l){let c=l,{message:f}=c;throw c.message=c.message.replace(`${"/index".replace("/",Hr.sep)}'`,"'"),c.stack=c.stack.replace(f,c.message),c}}}throw o}},"resolveDirectory"),lm=ne((t,e,r,n)=>{if(fe(3,"resolveDirectorySync",{specifier:t,context:e,isDirectory:Ar.test(t)}),(t==="."||t===".."||t.endsWith("/.."))&&(t+="/"),Ar.test(t)){let o=vm(e);if(o&&!Jr(t))return gc(t,e,r,n);let s=new URL(t,e.parentURL);return s.pathname=Hr.join(s.pathname,"index"),o?vo(wc(s),e,r,!1)??gc(t,e,r,n):vo(s.toString(),e,r,!0)}try{return gc(t,e,r,n)}catch(o){if(o instanceof Error){fe(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("/",Hr.sep)}'`,"'"),c.stack=c.stack.replace(f,c.message),c}}}throw o}},"resolveDirectorySync"),Ww=ne(async(t,e,r,n)=>{let o=xm(t);if(fe(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=Ns(n.parsedTsconfig,t);fe(3,"resolveTsPaths",{possiblePaths:s});for(let i of s)try{return await cm(Lt(i).toString(),e,r,n)}catch{}}return cm(t,e,r,n)},"resolveTsPaths"),Gw=ne((t,e,r,n)=>{let o=xm(t);if(fe(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=Ns(n.parsedTsconfig,t);fe(3,"resolveTsPathsSync",{possiblePaths:s});for(let i of s)try{return lm(Lt(i).toString(),e,r,n)}catch{}}return lm(t,e,r,n)},"resolveTsPathsSync"),Js="tsx://",yc=ne((t,e)=>`${t}${t.includes("?")?"&":"?"}${e}`,"addQuery"),Cm=ne((t,e,r)=>{if(e!=="commonjs"||!t.startsWith(ht)||!Us.test(t))return t;let n=new URL(t),o=[bc(n.search,[br]),...r?[`namespace=${encodeURIComponent(r)}`]:[]].filter(Boolean).join("&");return o?(n.pathname+=`%3F${o}`,n.searchParams.set(ko,"1"),n.toString()):t},"preserveCommonJsQueryIdentity"),qw=ne(t=>{let e=ne(async(r,n,o)=>{if(!t.active||r.startsWith("node:"))return o(r,n);let s=Vr(r)??(n.parentURL&&Vr(n.parentURL));if(t.namespace){let u;if(r.startsWith(Js)){try{u=JSON.parse(r.slice(Js.length))}catch{}u?.namespace&&(s=u.namespace)}if(t.namespace!==s)return o(r,n);u&&(r=u.specifier,n.parentURL=u.parentURL)}let[i,l]=r.split("?"),c=await Ww(i,n,o,t);if(fe(2,"nextResolve",{resolved:c}),c.format==="builtin")return c;(!c.format||c.format==="commonjs-typescript"||c.format==="module-typescript")&&c.url.startsWith(ht)&&(c.format=await Iw(c.url),fe(2,"getFormatFromFileUrl",{resolved:c,format:c.format})),l&&(c.url+=`?${l}`);let f=n.parentURL&&c.format==="commonjs"&&Us.test(c.url)&&(n.parentURL.includes(im)||Ow(n.parentURL,r,Uw));return s&&!c.url.includes(br)&&(c.url=yc(c.url,`${br}${s}`)),f&&(c.url=yc(c.url,im)),(s||f)&&(c.url=Cm(c.url,c.format,s)),c},"resolve2");return yr?async(r,n,o)=>{fe(2,"resolve",{specifier:r,context:n});let s=await e(r,n,o);return fe(1,"resolved",{specifier:r,context:n,result:s}),s}:e},"createResolve"),Jw=ne(t=>{let e=ne((r,n,o)=>{if(!t.active||r.startsWith("node:")||vm(n)&&Fs())return o(r,n);let s=Vr(r)??(n.parentURL&&Vr(n.parentURL));if(t.namespace){let f;if(r.startsWith(Js)){try{f=JSON.parse(r.slice(Js.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=Gw(i,n,o,t);return fe(2,"nextResolve",{resolved:c}),c.format==="builtin"||((!c.format||c.format==="commonjs-typescript"||c.format==="module-typescript")&&c.url.startsWith(ht)&&(c.format=Bw(c.url),fe(2,"getFormatFromFileUrlSync",{resolved:c,format:c.format})),l&&(c.url+=`?${l}`),s&&!c.url.includes(br)&&(c.url=yc(c.url,`${br}${s}`)),c.url=Cm(c.url,c.format,s)),c},"resolve2");return yr?(r,n,o)=>{fe(2,"resolveSync",{specifier:r,context:n});let s=e(r,n,o);return fe(1,"resolvedSync",{specifier:r,context:n,result:s}),s}:e},"createResolveSync"),Sk=qw(Co),um=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(ht)?r:Lt(r).toString();return import(`tsx://${JSON.stringify({specifier:e,parentURL:n,namespace:t})}`)},"createScopedImport"),dm=!1,Yw=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"),Hw=ne(()=>[...(process.env.NODE_OPTIONS??"").matchAll(/(?:^|\s)--import(?:=|\s+)(\S+)/g)].map(([,t])=>t),"collectNodeOptionsImportSpecifiers"),fm=[new URL("loader.mjs",import.meta.url).toString(),new URL("esm/index.mjs",import.meta.url).toString()],Vw=new Set(["tsx","tsx/esm",...fm,...fm.map(t=>decodeURI(new URL(t).pathname))]),zw=ne(t=>Vw.has(t),"isTsxImport"),km=ne(t=>/\.(?:[cm]?ts|tsx)(?:[?#].*)?$/.test(t),"isTypeScriptImport"),Xw=ne(()=>{let t=Yw(process.execArgv),e=t.findIndex(zw);return e>0&&t.slice(0,e).some(km)},"hasCliTypeScriptPreload"),Zw=Hw().some(km)||Xw(),mm=typeof Sn.registerHooks=="function"&&vt(Tu)&&!Zw,xc=ne(t=>{if(!Sn.register&&!mm)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(!dm){let{_resolveFilename:l}=Sn;Sn._resolveFilename=(c,...f)=>l(dc(c),...f),dm=!0}let{sourceMapsEnabled:e}=process;if(process.setSourceMapsEnabled(!0),mm){let l=hm({namespace:t?.namespace,onImport:t?.onImport,tsconfig:t?.tsconfig}),c=Sn.registerHooks({load:Fw(l),resolve:Jw(l)}),f=ne(async()=>{l.active=!1,c.deregister(),e===!1&&process.setSourceMapsEnabled(!1)},"unregister2");return t?.namespace&&(f.import=um(t.namespace),f.unregister=f),f}let{port1:r,port2:n}=new Sw;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=um(t.namespace),i.unregister=i),i},"register")});var eb,Tm,_n,zs,_m,Im=ve(()=>{ro();Ks();eb=Object.defineProperty,Tm=(t,e)=>eb(t,"name",{value:e,configurable:!0}),zs=Tm((t,e)=>(_n||(_n=Eo({namespace:Date.now().toString()})),_n.require(t,e)),"tsxRequire"),_m=Tm((t,e,r)=>(_n||(_n=Eo({namespace:Date.now().toString()})),_n.resolve(t,e,r)),"resolve");_m.paths=$r.resolve.paths,zs.resolve=_m,zs.main=$r.main,zs.extensions=$r.extensions,zs.cache=$r.cache});var Bm={};xt(Bm,{register:()=>xc,tsImport:()=>nb});var Dk,tb,rb,nb,Rm=ve(()=>{Sm();ro();Ks();Im();to();ks();Dk=ta(ua(),1);os();_s();Va();tb=Object.defineProperty,rb=(t,e)=>tb(t,"name",{value:e,configurable:!0}),nb=rb((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)&&!Xf.test(t)&&Vf.test(t)?Promise.resolve(s.require(t,n)):xc({namespace:o,...r?{}:e}).import(t,n)},"tsImport")});function jb(){let t=process.env.AIAIAI_LOG_LEVEL?.toLowerCase();return t&&t in Pc?t:"info"}function ni(t){return Pc[t]>=Pc[jb()]}function oi(t,e,r,n){let s=`[${new Date().toISOString()}] [${t.toUpperCase()}] [${e}]`,i=n?` ${JSON.stringify(n)}`:"";return`${s} ${r}${i}`}var Pc,X,Ke=ve(()=>{"use strict";Pc={debug:0,info:1,warn:2,error:3};X={debug(t,e,r){ni("debug")&&console.error(oi("debug",t,e,r))},info(t,e,r){ni("info")&&console.error(oi("info",t,e,r))},warn(t,e,r){ni("warn")&&console.error(oi("warn",t,e,r))},error(t,e,r){ni("error")&&console.error(oi("error",t,e,r))}}});var ii,Lc,vr,Ro=ve(()=>{"use strict";ii=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}},Lc=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}},vr=new Lc});function eh(){let t=Date.now();return Cr.push(t),Cr=Cr.filter(e=>t-e<Zm),Cr.length>=qb&&!ai?(ai=!0,!0):!1}function ci(){return ai}function th(){ai=!1,Cr=[]}function rh(){let t=Date.now();return Cr=Cr.filter(e=>t-e<Zm),Cr.length}var Cr,ai,qb,Zm,Qc=ve(()=>{"use strict";Cr=[],ai=!1,qb=10,Zm=6e4});var lh={};xt(lh,{getCircuitStats:()=>Po,isReachable:()=>aE,resilientFetch:()=>me});import Jb from"node:dns";import Yb from"node:http";import Hb from"node:https";function Xb(t){try{let e=new URL(t);if(zb.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 Vb)if(r===n||r.endsWith("."+n))return!0;return!1}catch{return!1}}function Nc(t){let e=Dc.get(t);return e||(e={failures:0,lastFailureTime:0,state:"closed"},Dc.set(t,e)),e}function rE(t){let e=Nc(t);return e.state==="closed"?!0:e.state==="open"?Date.now()-e.lastFailureTime>tE?(e.state="half-open",!0):!1:e.state==="half-open"}function nE(t){let e=Nc(t);e.failures=0,e.state="closed"}function oE(t){let e=Nc(t);e.failures++,e.lastFailureTime=Date.now(),e.failures>=eE&&(e.state="open")}function iE(t){let e=Date.now(),n=(ah.get(t)??[]).filter(o=>e-o<sE);return ah.set(t,n),n.length>=ch?!1:(n.push(e),!0)}async function me(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(ci())throw new Error("Panic mode active \u2014 external calls paused. Use /resume to continue.");if(!Xb(t))throw new Error(`Blocked: URL '${t}' is not in the allowed outbound hosts list`);let u=new URL(t).hostname;if(!iE(u))throw new Error(`Rate limit exceeded for ${u} (max ${ch} req/min)`);if(!rE(u))throw new Error("Circuit open for "+u+" - service unavailable, retry later");let a=null,h=[r,Math.max(2e3,Math.floor(r/2)),Math.max(2e3,Math.floor(r/4))];for(let p=0;p<=n;p++){let A=new AbortController,C=h[Math.min(p,h.length-1)],g=setTimeout(()=>A.abort(),C);f&&(f.aborted?A.abort():f.addEventListener("abort",()=>A.abort(),{once:!0}));try{let w=new URL(t),$=w.hostname,k=Date.now(),I=nh.get($),v=oh.get($);if(!I||!v||k-v>Zb)try{Jb.resolve4($,(Q,O)=>{!Q&&O&&O.length>0&&(nh.set($,O[0]),oh.set($,k))})}catch{}let S=w.protocol==="https:"?ih:sh,B={...l&&Object.fromEntries(Object.entries(l).filter(([Q])=>!["user-agent","x-powered-by","server","x-requested-with"].includes(Q.toLowerCase()))),"Accept-Encoding":"gzip","User-Agent":"AIAIAI-Agent/1.0"},U={signal:A.signal,method:i,headers:B,body:c};(w.protocol==="https:"||w.protocol==="http:")&&(U.agent=w.protocol==="https:"?ih:sh);let D=await fetch(t,U);if(clearTimeout(g),!D.ok){if([429,502,503,504].includes(D.status)&&p<n){let Q=parseInt(D.headers.get("retry-after")||"0")*1e3,O=Q>0?Q:o*Math.pow(2,p);clearTimeout(g),await new Promise(L=>setTimeout(L,O));continue}throw new Error("HTTP "+D.status+": "+D.statusText)}return nE(u),D}catch(w){if(clearTimeout(g),a=w instanceof Error?w:new Error(String(w)),p<n){s?.(p+1,a);let $=o*Math.pow(2,p),k=$*.2*(Math.random()*2-1);await new Promise(I=>setTimeout(I,$+k))}}}if(oE(u),eh(),a){let p=new ii(a.message,"NETWORK_ERROR",{context:{url:t,attempts:n+1},recoverable:!0});vr.record(p)}throw a}function Po(){let t=[];for(let[e,r]of Dc)t.push({key:e,state:r.state,failures:r.failures,lastFailureTime:r.lastFailureTime});return t}async function aE(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 Vb,zb,nh,Zb,oh,Dc,eE,tE,sh,ih,ah,ch,sE,pt=ve(()=>{"use strict";Ro();Qc();Vb=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"]),zb=new Set(["file:","ftp:","gopher:","javascript:","data:"]);nh=new Map,Zb=5*601e3,oh=new Map,Dc=new Map,eE=3,tE=6e4,sh=new Yb.Agent({keepAlive:!0,maxSockets:10,maxFreeSockets:5}),ih=new Hb.Agent({keepAlive:!0,maxSockets:10,maxFreeSockets:5});ah=new Map,ch=60,sE=6e4});var er=Je((YS,mh)=>{"use strict";var dh=["nodebuffer","arraybuffer","fragments"],fh=typeof Blob<"u";fh&&dh.push("blob");mh.exports={BINARY_TYPES:dh,CLOSE_TIMEOUT:3e4,EMPTY_BUFFER:Buffer.alloc(0),GUID:"258EAFA5-E914-47DA-95CA-C5AB0DC85B11",hasBlob:fh,kForOnEventAttribute:Symbol("kIsForOnEventAttribute"),kListener:Symbol("kListener"),kStatusCode:Symbol("status-code"),kWebSocket:Symbol("websocket"),NOOP:()=>{}}});var $o=Je((HS,ui)=>{"use strict";var{EMPTY_BUFFER:uE}=er(),Mc=Buffer[Symbol.species];function dE(t,e){if(t.length===0)return uE;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 Mc(r.buffer,r.byteOffset,n):r}function hh(t,e,r,n,o){for(let s=0;s<o;s++)r[n+s]=t[s]^e[s&3]}function ph(t,e){for(let r=0;r<t.length;r++)t[r]^=e[r&3]}function fE(t){return t.length===t.buffer.byteLength?t.buffer:t.buffer.slice(t.byteOffset,t.byteOffset+t.length)}function Fc(t){if(Fc.readOnly=!0,Buffer.isBuffer(t))return t;let e;return t instanceof ArrayBuffer?e=new Mc(t):ArrayBuffer.isView(t)?e=new Mc(t.buffer,t.byteOffset,t.byteLength):(e=Buffer.from(t),Fc.readOnly=!1),e}ui.exports={concat:dE,mask:hh,toArrayBuffer:fE,toBuffer:Fc,unmask:ph};if(!process.env.WS_NO_BUFFER_UTIL)try{let t=ae("bufferutil");ui.exports.mask=function(e,r,n,o,s){s<48?hh(e,r,n,o,s):t.mask(e,r,n,o,s)},ui.exports.unmask=function(e,r){e.length<32?ph(e,r):t.unmask(e,r)}}catch{}});var yh=Je((VS,Ah)=>{"use strict";var gh=Symbol("kDone"),Uc=Symbol("kRun"),jc=class{constructor(e){this[gh]=()=>{this.pending--,this[Uc]()},this.concurrency=e||1/0,this.jobs=[],this.pending=0}add(e){this.jobs.push(e),this[Uc]()}[Uc](){if(this.pending!==this.concurrency&&this.jobs.length){let e=this.jobs.shift();this.pending++,e(this[gh])}}};Ah.exports=jc});var Ln=Je((zS,xh)=>{"use strict";var Lo=ae("zlib"),wh=$o(),mE=yh(),{kStatusCode:bh}=er(),hE=Buffer[Symbol.species],pE=Buffer.from([0,0,255,255]),fi=Symbol("permessage-deflate"),tr=Symbol("total-length"),On=Symbol("callback"),kr=Symbol("buffers"),$n=Symbol("error"),di,Kc=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 mE(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[On];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"?Lo.Z_DEFAULT_WINDOWBITS:this.params[s];this._inflate=Lo.createInflateRaw({...this._options.zlibInflateOptions,windowBits:i}),this._inflate[fi]=this,this._inflate[tr]=0,this._inflate[kr]=[],this._inflate.on("error",AE),this._inflate.on("data",Eh)}this._inflate[On]=n,this._inflate.write(e),r&&this._inflate.write(pE),this._inflate.flush(()=>{let s=this._inflate[$n];if(s){this._inflate.close(),this._inflate=null,n(s);return}let i=wh.concat(this._inflate[kr],this._inflate[tr]);this._inflate._readableState.endEmitted?(this._inflate.close(),this._inflate=null):(this._inflate[tr]=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"?Lo.Z_DEFAULT_WINDOWBITS:this.params[s];this._deflate=Lo.createDeflateRaw({...this._options.zlibDeflateOptions,windowBits:i}),this._deflate[tr]=0,this._deflate[kr]=[],this._deflate.on("data",gE)}this._deflate[On]=n,this._deflate.write(e),this._deflate.flush(Lo.Z_SYNC_FLUSH,()=>{if(!this._deflate)return;let s=wh.concat(this._deflate[kr],this._deflate[tr]);r&&(s=new hE(s.buffer,s.byteOffset,s.length-4)),this._deflate[On]=null,this._deflate[tr]=0,this._deflate[kr]=[],r&&this.params[`${o}_no_context_takeover`]&&this._deflate.reset(),n(null,s)})}};xh.exports=Kc;function gE(t){this[kr].push(t),this[tr]+=t.length}function Eh(t){if(this[tr]+=t.length,this[fi]._maxPayload<1||this[tr]<=this[fi]._maxPayload){this[kr].push(t);return}this[$n]=new RangeError("Max payload size exceeded"),this[$n].code="WS_ERR_UNSUPPORTED_MESSAGE_LENGTH",this[$n][bh]=1009,this.removeListener("data",Eh),this.reset()}function AE(t){if(this[fi]._inflate=null,this[$n]){this[On](this[$n]);return}t[bh]=1007,this[On](t)}});var Qn=Je((XS,mi)=>{"use strict";var{isUtf8:vh}=ae("buffer"),{hasBlob:yE}=er(),wE=[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 bE(t){return t>=1e3&&t<=1014&&t!==1004&&t!==1005&&t!==1006||t>=3e3&&t<=4999}function Wc(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 EE(t){return yE&&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:EE,isValidStatusCode:bE,isValidUTF8:Wc,tokenChars:wE};if(vh)mi.exports.isValidUTF8=function(t){return t.length<24?Wc(t):vh(t)};else if(!process.env.WS_NO_UTF_8_VALIDATE)try{let t=ae("utf-8-validate");mi.exports.isValidUTF8=function(e){return e.length<32?Wc(e):t(e)}}catch{}});var Hc=Je((ZS,Bh)=>{"use strict";var{Writable:xE}=ae("stream"),Ch=Ln(),{BINARY_TYPES:vE,EMPTY_BUFFER:kh,kStatusCode:CE,kWebSocket:kE}=er(),{concat:Gc,toArrayBuffer:SE,unmask:_E}=$o(),{isValidStatusCode:TE,isValidUTF8:Sh}=Qn(),hi=Buffer[Symbol.species],It=0,_h=1,Th=2,Ih=3,qc=4,Jc=5,pi=6,Yc=class extends xE{constructor(e={}){super(),this._allowSynchronousEvents=e.allowSynchronousEvents!==void 0?e.allowSynchronousEvents:!0,this._binaryType=e.binaryType||vE[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[kE]=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 _h:this.getPayloadLength16(e);break;case Th:this.getPayloadLength64(e);break;case Ih:this.getMask();break;case qc:this.getData(e);break;case Jc: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[Ch.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=_h:this._payloadLength===127?this._state=Th: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=Ih:this._state=qc}getMask(){if(this._bufferedBytes<4){this._loop=!1;return}this._mask=this.consume(4),this._state=qc}getData(e){let r=kh;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&&_E(r,this._mask)}if(this._opcode>7){this.controlMessage(r,e);return}if(this._compressed){this._state=Jc,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[Ch.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=Gc(n,r):this._binaryType==="arraybuffer"?o=SE(Gc(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=Gc(n,r);if(!this._skipUTF8Validation&&!Sh(o)){let s=this.createError(Error,"invalid UTF-8 sequence",!0,1007,"WS_ERR_INVALID_UTF8");e(s);return}this._state===Jc||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,kh),this.end();else{let n=e.readUInt16BE(0);if(!TE(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&&!Sh(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[CE]=o,i}};Bh.exports=Yc});var Xc=Je((t_,Oh)=>{"use strict";var{Duplex:e_}=ae("stream"),{randomFillSync:IE}=ae("crypto"),{types:{isUint8Array:BE}}=ae("util"),Rh=Ln(),{EMPTY_BUFFER:RE,kWebSocket:PE,NOOP:OE}=er(),{isBlob:Dn,isValidStatusCode:$E}=Qn(),{mask:Ph,toBuffer:Zr}=$o(),Bt=Symbol("kByteLength"),LE=Buffer.alloc(4),gi=8*1024,en,Nn=gi,Nt=0,QE=1,DE=2,Vc=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=OE,this[PE]=void 0}static frame(e,r){let n,o=!1,s=2,i=!1;r.mask&&(n=r.maskBuffer||LE,r.generateMask?r.generateMask(n):(Nn===gi&&(en===void 0&&(en=Buffer.alloc(gi)),IE(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?(Ph(e,n,f,s,l),[f]):(Ph(e,n,e,0,l),[f,e])):[f,e]}close(e,r,n,o){let s;if(e===void 0)s=RE;else{if(typeof e!="number"||!$E(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(BE(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[Rh.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=DE,e.arrayBuffer().then(s=>{if(this._socket.destroyed){let l=new Error("The socket was closed while the blob was being read");process.nextTick(zc,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(NE,this,s,o)})}dispatch(e,r,n,o){if(!r){this.sendFrame(t.frame(e,n),o);return}let s=this._extensions[Rh.extensionName];this._bufferedBytes+=n[Bt],this._state=QE,s.compress(e,n.fin,(i,l)=>{if(this._socket.destroyed){let c=new Error("The socket was closed while data was being compressed");zc(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)}};Oh.exports=Vc;function zc(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 NE(t,e,r){zc(t,e,r),t.onerror(e)}});var jh=Je((r_,Uh)=>{"use strict";var{kForOnEventAttribute:Qo,kListener:Zc}=er(),$h=Symbol("kCode"),Lh=Symbol("kData"),Qh=Symbol("kError"),Dh=Symbol("kMessage"),Nh=Symbol("kReason"),Mn=Symbol("kTarget"),Mh=Symbol("kType"),Fh=Symbol("kWasClean"),rr=class{constructor(e){this[Mn]=null,this[Mh]=e}get target(){return this[Mn]}get type(){return this[Mh]}};Object.defineProperty(rr.prototype,"target",{enumerable:!0});Object.defineProperty(rr.prototype,"type",{enumerable:!0});var tn=class extends rr{constructor(e,r={}){super(e),this[$h]=r.code===void 0?0:r.code,this[Nh]=r.reason===void 0?"":r.reason,this[Fh]=r.wasClean===void 0?!1:r.wasClean}get code(){return this[$h]}get reason(){return this[Nh]}get wasClean(){return this[Fh]}};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 rr{constructor(e,r={}){super(e),this[Qh]=r.error===void 0?null:r.error,this[Dh]=r.message===void 0?"":r.message}get error(){return this[Qh]}get message(){return this[Dh]}};Object.defineProperty(Fn.prototype,"error",{enumerable:!0});Object.defineProperty(Fn.prototype,"message",{enumerable:!0});var Do=class extends rr{constructor(e,r={}){super(e),this[Lh]=r.data===void 0?null:r.data}get data(){return this[Lh]}};Object.defineProperty(Do.prototype,"data",{enumerable:!0});var ME={addEventListener(t,e,r={}){for(let o of this.listeners(t))if(!r[Qo]&&o[Zc]===e&&!o[Qo])return;let n;if(t==="message")n=function(s,i){let l=new Do("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 rr("open");s[Mn]=this,Ai(e,this,s)};else return;n[Qo]=!!r[Qo],n[Zc]=e,r.once?this.once(t,n):this.on(t,n)},removeEventListener(t,e){for(let r of this.listeners(t))if(r[Zc]===e&&!r[Qo]){this.removeListener(t,r);break}}};Uh.exports={CloseEvent:tn,ErrorEvent:Fn,Event:rr,EventTarget:ME,MessageEvent:Do};function Ai(t,e,r){typeof t=="object"&&t.handleEvent?t.handleEvent.call(t,r):t.call(e,r)}});var yi=Je((n_,Kh)=>{"use strict";var{tokenChars:No}=Qn();function Kt(t,e,r){t[e]===void 0?t[e]=[r]:t[e].push(r)}function FE(t){let e=Object.create(null),r=Object.create(null),n=!1,o=!1,s=!1,i,l,c=-1,f=-1,u=-1,a=0;for(;a<t.length;a++)if(f=t.charCodeAt(a),i===void 0)if(u===-1&&No[f]===1)c===-1&&(c=a);else if(a!==0&&(f===32||f===9))u===-1&&c!==-1&&(u=a);else if(f===59||f===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${a}`);u===-1&&(u=a);let p=t.slice(c,u);f===44?(Kt(e,p,r),r=Object.create(null)):i=p,c=u=-1}else throw new SyntaxError(`Unexpected character at index ${a}`);else if(l===void 0)if(u===-1&&No[f]===1)c===-1&&(c=a);else if(f===32||f===9)u===-1&&c!==-1&&(u=a);else if(f===59||f===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${a}`);u===-1&&(u=a),Kt(r,t.slice(c,u),!0),f===44&&(Kt(e,i,r),r=Object.create(null),i=void 0),c=u=-1}else if(f===61&&c!==-1&&u===-1)l=t.slice(c,a),c=u=-1;else throw new SyntaxError(`Unexpected character at index ${a}`);else if(o){if(No[f]!==1)throw new SyntaxError(`Unexpected character at index ${a}`);c===-1?c=a:n||(n=!0),o=!1}else if(s)if(No[f]===1)c===-1&&(c=a);else if(f===34&&c!==-1)s=!1,u=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(u===-1&&No[f]===1)c===-1&&(c=a);else if(c!==-1&&(f===32||f===9))u===-1&&(u=a);else if(f===59||f===44){if(c===-1)throw new SyntaxError(`Unexpected character at index ${a}`);u===-1&&(u=a);let p=t.slice(c,u);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=u=-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");u===-1&&(u=a);let h=t.slice(c,u);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 UE(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(", ")}Kh.exports={format:UE,parse:FE}});var xi=Je((i_,tp)=>{"use strict";var jE=ae("events"),KE=ae("https"),WE=ae("http"),qh=ae("net"),GE=ae("tls"),{randomBytes:qE,createHash:JE}=ae("crypto"),{Duplex:o_,Readable:s_}=ae("stream"),{URL:el}=ae("url"),Sr=Ln(),YE=Hc(),HE=Xc(),{isBlob:VE}=Qn(),{BINARY_TYPES:Wh,CLOSE_TIMEOUT:zE,EMPTY_BUFFER:wi,GUID:XE,kForOnEventAttribute:tl,kListener:ZE,kStatusCode:ex,kWebSocket:We,NOOP:Jh}=er(),{EventTarget:{addEventListener:tx,removeEventListener:rx}}=jh(),{format:nx,parse:ox}=yi(),{toBuffer:sx}=$o(),Yh=Symbol("kAborted"),rl=[8,13],nr=["CONNECTING","OPEN","CLOSING","CLOSED"],ix=/^[!#$%&'*+\-.0-9A-Z^_`|a-z~]+$/,Be=class t extends jE{constructor(e,r,n){super(),this._binaryType=Wh[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]),Hh(this,e,r,n)):(this._autoPong=n.autoPong,this._closeTimeout=n.closeTimeout,this._isServer=!0)}get binaryType(){return this._binaryType}set binaryType(e){Wh.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 YE({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 HE(e,this._extensions,n.generateMask);this._receiver=o,this._sender=s,this._socket=e,o[We]=this,s[We]=this,e[We]=this,o.on("conclude",lx),o.on("drain",ux),o.on("error",dx),o.on("message",fx),o.on("ping",mx),o.on("pong",hx),s.onerror=px,e.setTimeout&&e.setTimeout(0),e.setNoDelay&&e.setNoDelay(),r.length>0&&e.unshift(r),e.on("close",Xh),e.on("data",Ei),e.on("end",Zh),e.on("error",ep),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){bt(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())}),zh(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){nl(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){nl(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){nl(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){bt(this,this._req,"WebSocket was closed before the connection was established");return}this._socket&&(this._readyState=t.CLOSING,this._socket.destroy())}}};Object.defineProperty(Be,"CONNECTING",{enumerable:!0,value:nr.indexOf("CONNECTING")});Object.defineProperty(Be.prototype,"CONNECTING",{enumerable:!0,value:nr.indexOf("CONNECTING")});Object.defineProperty(Be,"OPEN",{enumerable:!0,value:nr.indexOf("OPEN")});Object.defineProperty(Be.prototype,"OPEN",{enumerable:!0,value:nr.indexOf("OPEN")});Object.defineProperty(Be,"CLOSING",{enumerable:!0,value:nr.indexOf("CLOSING")});Object.defineProperty(Be.prototype,"CLOSING",{enumerable:!0,value:nr.indexOf("CLOSING")});Object.defineProperty(Be,"CLOSED",{enumerable:!0,value:nr.indexOf("CLOSED")});Object.defineProperty(Be.prototype,"CLOSED",{enumerable:!0,value:nr.indexOf("CLOSED")});["binaryType","bufferedAmount","extensions","isPaused","protocol","readyState","url"].forEach(t=>{Object.defineProperty(Be.prototype,t,{enumerable:!0})});["open","error","close","message"].forEach(t=>{Object.defineProperty(Be.prototype,`on${t}`,{enumerable:!0,get(){for(let e of this.listeners(t))if(e[tl])return e[ZE];return null},set(e){for(let r of this.listeners(t))if(r[tl]){this.removeListener(t,r);break}typeof e=="function"&&this.addEventListener(t,e,{[tl]:!0})}})});Be.prototype.addEventListener=tx;Be.prototype.removeEventListener=rx;tp.exports=Be;function Hh(t,e,r,n){let o={allowSynchronousEvents:!0,autoPong:!0,closeTimeout:zE,protocolVersion:rl[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,!rl.includes(o.protocolVersion))throw new RangeError(`Unsupported protocol version: ${o.protocolVersion} (supported versions: ${rl.join(", ")})`);let s;if(e instanceof el)s=e;else try{s=new el(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 C=new SyntaxError(c);if(t._redirects===0)throw C;bi(t,C);return}let f=i?443:80,u=qE(16).toString("base64"),a=i?KE.request:WE.request,h=new Set,p;if(o.createConnection=o.createConnection||(i?cx:ax),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":u,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"]=nx({[Sr.extensionName]:p.offer()})),r.length){for(let C of r){if(typeof C!="string"||!ix.test(C)||h.has(C))throw new SyntaxError("An invalid or duplicated subprotocol was specified");h.add(C)}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 C=o.path.split(":");o.socketPath=C[0],o.path=C[1]}let A;if(o.followRedirects){if(t._redirects===0){t._originalIpc=l,t._originalSecure=i,t._originalHostOrSocketPath=l?o.socketPath:s.host;let C=n&&n.headers;if(n={...n,headers:{}},C)for(let[g,w]of Object.entries(C))n.headers[g.toLowerCase()]=w}else if(t.listenerCount("redirect")===0){let C=l?t._originalIpc?o.socketPath===t._originalHostOrSocketPath:!1:t._originalIpc?!1:s.host===t._originalHostOrSocketPath;(!C||t._originalSecure&&!i)&&(delete o.headers.authorization,delete o.headers.cookie,C||delete o.headers.host,o.auth=void 0)}o.auth&&!n.headers.authorization&&(n.headers.authorization="Basic "+Buffer.from(o.auth).toString("base64")),A=t._req=a(o),t._redirects&&t.emit("redirect",t.url,A)}else A=t._req=a(o);o.timeout&&A.on("timeout",()=>{bt(t,A,"Opening handshake has timed out")}),A.on("error",C=>{A===null||A[Yh]||(A=t._req=null,bi(t,C))}),A.on("response",C=>{let g=C.headers.location,w=C.statusCode;if(g&&o.followRedirects&&w>=300&&w<400){if(++t._redirects>o.maxRedirects){bt(t,A,"Maximum redirects exceeded");return}A.abort();let $;try{$=new el(g,e)}catch{let I=new SyntaxError(`Invalid URL: ${g}`);bi(t,I);return}Hh(t,$,r,n)}else t.emit("unexpected-response",A,C)||bt(t,A,`Unexpected server response: ${C.statusCode}`)}),A.on("upgrade",(C,g,w)=>{if(t.emit("upgrade",C),t.readyState!==Be.CONNECTING)return;A=t._req=null;let $=C.headers.upgrade;if($===void 0||$.toLowerCase()!=="websocket"){bt(t,g,"Invalid Upgrade header");return}let k=JE("sha1").update(u+XE).digest("base64");if(C.headers["sec-websocket-accept"]!==k){bt(t,g,"Invalid Sec-WebSocket-Accept header");return}let I=C.headers["sec-websocket-protocol"],v;if(I!==void 0?h.size?h.has(I)||(v="Server sent an invalid subprotocol"):v="Server sent a subprotocol but none was requested":h.size&&(v="Server sent no subprotocol"),v){bt(t,g,v);return}I&&(t._protocol=I);let S=C.headers["sec-websocket-extensions"];if(S!==void 0){if(!p){bt(t,g,"Server sent a Sec-WebSocket-Extensions header but no extension was requested");return}let B;try{B=ox(S)}catch{bt(t,g,"Invalid Sec-WebSocket-Extensions header");return}let U=Object.keys(B);if(U.length!==1||U[0]!==Sr.extensionName){bt(t,g,"Server indicated an extension that was not requested");return}try{p.accept(B[Sr.extensionName])}catch{bt(t,g,"Invalid Sec-WebSocket-Extensions header");return}t._extensions[Sr.extensionName]=p}t.setSocket(g,w,{allowSynchronousEvents:o.allowSynchronousEvents,generateMask:o.generateMask,maxBufferedChunks:o.maxBufferedChunks,maxFragments:o.maxFragments,maxPayload:o.maxPayload,skipUTF8Validation:o.skipUTF8Validation})}),o.finishRequest?o.finishRequest(A,t):A.end()}function bi(t,e){t._readyState=Be.CLOSING,t._errorEmitted=!0,t.emit("error",e),t.emitClose()}function ax(t){return t.path=t.socketPath,qh.connect(t)}function cx(t){return t.path=void 0,!t.servername&&t.servername!==""&&(t.servername=qh.isIP(t.host)?"":t.host),GE.connect(t)}function bt(t,e,r){t._readyState=Be.CLOSING;let n=new Error(r);Error.captureStackTrace(n,bt),e.setHeader?(e[Yh]=!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 nl(t,e,r){if(e){let n=VE(e)?e.size:sx(e).length;t._socket?t._sender._bufferedBytes+=n:t._bufferedAmount+=n}if(r){let n=new Error(`WebSocket is not open: readyState ${t.readyState} (${nr[t.readyState]})`);process.nextTick(r,n)}}function lx(t,e){let r=this[We];r._closeFrameReceived=!0,r._closeMessage=e,r._closeCode=t,r._socket[We]!==void 0&&(r._socket.removeListener("data",Ei),process.nextTick(Vh,r._socket),t===1005?r.close():r.close(t,e))}function ux(){let t=this[We];t.isPaused||t._socket.resume()}function dx(t){let e=this[We];e._socket[We]!==void 0&&(e._socket.removeListener("data",Ei),process.nextTick(Vh,e._socket),e.close(t[ex])),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t))}function Gh(){this[We].emitClose()}function fx(t,e){this[We].emit("message",t,e)}function mx(t){let e=this[We];e._autoPong&&e.pong(t,!this._isServer,Jh),e.emit("ping",t)}function hx(t){this[We].emit("pong",t)}function Vh(t){t.resume()}function px(t){let e=this[We];e.readyState!==Be.CLOSED&&(e.readyState===Be.OPEN&&(e._readyState=Be.CLOSING,zh(e)),this._socket.end(),e._errorEmitted||(e._errorEmitted=!0,e.emit("error",t)))}function zh(t){t._closeTimer=setTimeout(t._socket.destroy.bind(t._socket),t._closeTimeout)}function Xh(){let t=this[We];if(this.removeListener("close",Xh),this.removeListener("data",Ei),this.removeListener("end",Zh),t._readyState=Be.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[We]=void 0,clearTimeout(t._closeTimer),t._receiver._writableState.finished||t._receiver._writableState.errorEmitted?t.emitClose():(t._receiver.on("error",Gh),t._receiver.on("finish",Gh))}function Ei(t){this[We]._receiver.write(t)||this.pause()}function Zh(){let t=this[We];t._readyState=Be.CLOSING,t._receiver.end(),this.end()}function ep(){let t=this[We];this.removeListener("error",ep),this.on("error",Jh),t&&(t._readyState=Be.CLOSING,this.destroy())}});var sp=Je((c_,op)=>{"use strict";var a_=xi(),{Duplex:gx}=ae("stream");function rp(t){t.emit("close")}function Ax(){!this.destroyed&&this._writableState.finished&&this.destroy()}function np(t){this.removeListener("error",np),this.destroy(),this.listenerCount("error")===0&&this.emit("error",t)}function yx(t,e){let r=!0,n=new gx({...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(rp,n);return}let i=!1;t.once("error",function(c){i=!0,s(c)}),t.once("close",function(){i||s(o),process.nextTick(rp,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",Ax),n.on("error",np),n}op.exports=yx});var ol=Je((l_,ip)=>{"use strict";var{tokenChars:wx}=Qn();function bx(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&&wx[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}ip.exports={parse:bx}});var mp=Je((d_,fp)=>{"use strict";var Ex=ae("events"),vi=ae("http"),{Duplex:u_}=ae("stream"),{createHash:xx}=ae("crypto"),ap=yi(),rn=Ln(),vx=ol(),Cx=xi(),{CLOSE_TIMEOUT:kx,GUID:Sx,kWebSocket:_x}=er(),Tx=/^[+/0-9A-Za-z]{22}==$/,cp=0,lp=1,dp=2,sl=class extends Ex{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:kx,verifyClient:null,noServer:!1,backlog:null,server:null,host:null,path:null,port:null,WebSocket:Cx,...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=Ix(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=cp}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===dp){e&&this.once("close",()=>{e(new Error("The server is not running"))}),process.nextTick(Mo,this);return}if(e&&this.once("close",e),this._state!==lp)if(this._state=lp,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(Mo,this):process.nextTick(Mo,this);else{let r=this._server;this._removeListeners(),this._removeListeners=this._server=null,r.close(()=>{Mo(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",up);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||!Tx.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)){Fo(r,400);return}let c=e.headers["sec-websocket-protocol"],f=new Set;if(c!==void 0)try{f=vx.parse(c)}catch{nn(this,e,r,400,"Invalid Sec-WebSocket-Protocol header");return}let u=e.headers["sec-websocket-extensions"],a={};if(this.options.perMessageDeflate&&u!==void 0){let h=new rn({...this.options.perMessageDeflate,isServer:!0,maxPayload:this.options.maxPayload});try{let p=ap.parse(u);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,A,C,g)=>{if(!p)return Fo(r,A||401,C,g);this.completeUpgrade(a,s,f,e,r,n,o)});return}if(!this.options.verifyClient(h))return Fo(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[_x])throw new Error("server.handleUpgrade() was called more than once with the same socket, possibly due to a misconfiguration");if(this._state>cp)return Fo(s,503);let f=["HTTP/1.1 101 Switching Protocols","Upgrade: websocket","Connection: Upgrade",`Sec-WebSocket-Accept: ${xx("sha1").update(r+Sx).digest("base64")}`],u=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}`),u._protocol=a)}if(e[rn.extensionName]){let a=e[rn.extensionName].params,h=ap.format({[rn.extensionName]:[a]});f.push(`Sec-WebSocket-Extensions: ${h}`),u._extensions=e}this.emit("headers",f,o),s.write(f.concat(`\r
94
+ `).join(`\r
95
+ `)),s.removeListener("error",up),u.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(u),u.on("close",()=>{this.clients.delete(u),this._shouldEmitClose&&!this.clients.size&&process.nextTick(Mo,this)})),l(u,o)}};fp.exports=sl;function Ix(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 Mo(t){t._state=dp,t.emit("close")}function up(){this.destroy()}function Fo(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 Fo(r,n,o,s)}});var gp=Je((f_,pp)=>{"use strict";var Bx=sp(),Rx=yi(),Px=Ln(),Ox=Hc(),$x=Xc(),Lx=ol(),Mt=xi(),hp=mp();Mt.createWebSocketStream=Bx;Mt.extension=Rx;Mt.PerMessageDeflate=Px;Mt.Receiver=Ox;Mt.Sender=$x;Mt.Server=hp;Mt.subprotocol=Lx;Mt.WebSocket=Mt;Mt.WebSocketServer=hp;pp.exports=Mt});var al={};xt(al,{PriceFeed:()=>Ci,priceFeed:()=>Ue});import{Type as il}from"@sinclair/typebox";var on,Ci,Ue,Un=ve(()=>{"use strict";pt();Ke();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 me(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 X.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 X.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=il.Object({});getTokenPriceParams=il.Object({address:il.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||gp();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}},Ue=new Ci;Ue.getAiaiaiPrice().catch(()=>{});Ue.connectWebSocket()});function Lp(){return $p.url}async function k1(){let e=Date.now()-Pp;e<Op&&await new Promise(r=>setTimeout(r,Op-e)),Pp=Date.now()}async function _r(t,e=[]){await k1();let r=JSON.stringify({jsonrpc:"2.0",id:Date.now(),method:t,params:e}),o=await(await me($p.url,{timeout:15e3,retries:2,method:"POST",headers:{"Content-Type":"application/json"},body:r})).json();if(o.error)throw vr.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 v1,C1,$p,Pp,Op,Go=ve(()=>{"use strict";pt();Ro();v1=[{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}],C1=[...v1],$p=C1[0];Pp=0,Op=100});import{Type as Qp}from"@sinclair/typebox";async function Dp(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 X.warn("AgentWallet","getTokenBalance failed",{address:t,mint:e,error:r.message}),0}}var at,Tr,sr,Gn,_l,an,Tl,S1,Sl,Ze,qo=ve(()=>{"use strict";Go();Ke();at="GmFrDZT2cdrqykgTikVdXbe8EtCgzUDM9VsDhQnwsUsG",Tr="BygDYM1ZXLQNC1HXLhnd1rHZ7E5XjioqT3vPjJFfjnU2",sr="FBMDYpG9WXKy4SgxuATQdB2sCyzHsJWPrEr45z3TgL2e",Gn="A11iZoqEt6hU7HyggqC67ee4AtYmaJjwKCvJLerJRV2J",_l=at,an="AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump",Tl=an,S1="EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";Sl=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,sr]]).then(C=>(C?.value??[]).map(g=>(g?.lamports??0)/1e9)).catch(()=>[0,0,0,0]),Promise.all([...[Gn,at,Tr,sr].map(C=>Dp(C,an)),...[Gn,at,Tr,sr].map(C=>Dp(C,S1))])]),[n=0,o=0,s=0,i=0]=e,[l=0,c=0,f=0,u=0,a=0,h=0,p=0,A=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:sr,sol:i,aiaiai:u,usdc:A}},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(),al)),r=await e.fetchToken("So11111111111111111111111111111111111111112");return parseFloat(r.priceUsd??"150")}catch{return 150}}async getHotWallet(){return(await this.getAll()).hot}getAgentBalanceParams=Qp.Object({});getDepositBalanceParams=Qp.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: ${sr}`,` 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: ${_l.slice(0,8)}\u2026`].join(`
103
+ `)}]}}},Ze=new Sl});var Il={};xt(Il,{ActionFeed:()=>Ti,actionFeed:()=>et});import{Type as _i}from"@sinclair/typebox";var Ti,et,Ii=ve(()=>{"use strict";qo();Go();Ke();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){X.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 u=parseFloat(c.parsed.info?.tokenAmount?.uiAmount??"0");u>1&&(o+=u)}if(c.parsed?.type==="burnChecked"&&c.parsed.info?.mint===an){let u=parseFloat(c.parsed.info?.tokenAmount?.uiAmount??"0");u>0&&(s+=u)}}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 u=l.find(A=>A.accountIndex===f.accountIndex&&A.mint===an),a=u?parseFloat(u.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){X.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
+ `)}]}}},et=new Ti});var ng={};xt(ng,{PRESETS:()=>Yo,getCurrentTheme:()=>jl,getPresetColors:()=>Wl,listThemes:()=>Gl,setTheme:()=>Kl});import{existsSync as tg,readFileSync as J1}from"node:fs";import{join as Di}from"node:path";import{homedir as Y1}from"node:os";function jl(){let t=Di(rg,"config","theme.json");try{if(tg(t)){let e=J1(t,"utf-8");return JSON.parse(e).theme||"solana"}}catch{}return"solana"}function Kl(t){let e=Yo[t];if(!e)return!1;let r=Di(rg,"config"),n=Di(r,"theme.json");try{let{mkdirSync:o,writeFileSync:s}=ae("node:fs");return tg(r)||o(r,{recursive:!0}),s(n,JSON.stringify({theme:t,colors:e.colors},null,2),"utf-8"),!0}catch{return!1}}function Wl(){let t=jl();return Yo[t]?.colors??Yo.solana.colors}function Gl(){return Object.entries(Yo).map(([t,e])=>` ${t===jl()?"\u2605":" "} ${t.padEnd(14)} ${e.description}`).join(`
107
+ `)}var rg,Yo,ql=ve(()=>{"use strict";rg=process.env.AIAIAI_HOME??Di(Y1(),".aiaiai"),Yo={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 sg={};xt(sg,{clipboardSupported:()=>Ni,copyToClipboard:()=>Jl,encodeOSC52:()=>og});function og(t){return`\x1B]52;c;${Buffer.from(t).toString("base64")}\x07`}function Jl(t){try{return process.stdout.write(og(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 Yl=ve(()=>{"use strict"});var ug={};xt(ug,{hasWebhooks:()=>Vl,notify:()=>Hl,sendDiscord:()=>cg,sendTelegram:()=>lg});import{existsSync as z1,readFileSync as X1}from"node:fs";import{join as ag}from"node:path";import{homedir as Z1}from"node:os";function Mi(t){let e=ag(ev,".env");if(!z1(e))return null;let r=X1(e,"utf-8"),n=t==="discord"?"WEBHOOK_DISCORD":"WEBHOOK_TELEGRAM";return new RegExp(`^${n}=(.+)$`,"m").exec(r)?.[1]??null}async function cg(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**
108
+ ${t}`})})).ok}catch(r){return X.warn("Webhooks","Discord send failed",{error:r.message}),!1}}async function lg(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:tv(e),text:`\u{1F916} AIAIAI Agent
109
+ ${t}`,parse_mode:"HTML"})})).ok}catch(r){return X.warn("Webhooks","Telegram send failed",{error:r.message}),!1}}function tv(t){return/chat_id=([^&]+)/.exec(t)?.[1]??""}async function Hl(t){let[e,r]=await Promise.all([cg(t),lg(t)]);!e&&!r&&X.debug("Webhooks","No webhooks configured or all failed")}function Vl(){return!!(Mi("discord")||Mi("telegram"))}var ev,zl=ve(()=>{"use strict";Ke();ev=process.env.AIAIAI_HOME??ag(Z1(),".aiaiai")});var yg={};xt(yg,{ACTION_WALLET:()=>gg,COLD_WALLET:()=>pg,DEPOSIT_WALLET:()=>Ag,addAlert:()=>dg,addAlertParams:()=>iv,addAlertTool:()=>nu,addToWatchList:()=>mg,checkAlerts:()=>rv,checkAlertsParams:()=>av,checkAlertsTool:()=>ou,compareTokensParams:()=>cv,compareTokensTool:()=>su,getActiveAlerts:()=>fg,getWatchList:()=>Ho,listWatchParams:()=>sv,listWatchTool:()=>ru,portfolioParams:()=>lv,portfolioTool:()=>iu,removeFromWatchList:()=>hg,removeWatchParams:()=>ov,removeWatchTool:()=>tu,watchTokenParams:()=>nv,watchTokenTool:()=>eu});import{Type as ct}from"@sinclair/typebox";function dg(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 Xl.push(n),n}function rv(t,e){let r=[];for(let n of Xl)!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 fg(){return Xl.filter(t=>t.active)}function mg(t){Zl.add(t)}function hg(t){Zl.delete(t)}function Ho(){return[...Zl]}async function eu(t,e){let r=e.address;return mg(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 tu(t,e){let r=e.address;return hg(r),{content:[{type:"text",text:`Removed ${r.slice(0,8)}\u2026 from watch list.`}]}}async function ru(){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}):
110
+ ${e.join(`
111
+ `)}`}]}}async function nu(t,e){let r=e.token,n=e.type,o=e.price,s=dg(r,n,o);return{content:[{type:"text",text:`\u{1F514} Alert set: ${n} $${o} for ${r.slice(0,8)}\u2026 (${s.id})`}]}}async function ou(){let t=fg();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}):
112
+ ${e.join(`
113
+ `)}`}]}}async function su(t,e){let r=e.address1,n=e.address2,o=null,s=null;try{r===Tl||r.toLowerCase()==="aiaiai"?o=await Ue.getAiaiaiPrice():o=await Ue.fetchToken(r)}catch(l){X.warn("CrossTools","compareTokens: failed to fetch price1",{address:r,error:l.message}),o=null}try{n===Tl||n.toLowerCase()==="aiaiai"?s=await Ue.getAiaiaiPrice():s=await Ue.fetchToken(n)}catch(l){X.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(`
114
+ `)}]}}async function iu(t,e){let r=e.address,n=null;try{let o=await Ze.getAll();r===pg?n=o.cold:r===gg?n=o.action:r===Ag&&(n=o.deposit)}catch(o){X.warn("CrossTools","portfolioTool: wallet lookup failed",{address:r,error:o.message})}if(n){let o=await new Promise(i=>{Ze.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(`
115
+ `)}]}}return{content:[{type:"text",text:`\u{1F4CA} Analyzed: ${r.slice(0,8)}\u2026${r.slice(-6)}
116
+ Use /wallet or /deposit for tracked wallet balances.`}]}}var Xl,Zl,nv,ov,sv,iv,av,cv,lv,pg,gg,Ag,au=ve(()=>{"use strict";Un();qo();Ke();Xl=[];Zl=new Set;nv=ct.Object({address:ct.String({description:"Token contract address to watch"})}),ov=ct.Object({address:ct.String({description:"Token contract address to remove"})}),sv=ct.Object({}),iv=ct.Object({token:ct.String({description:"Token address or 'AIAIAI'"}),type:ct.String({description:"Alert type: above or below"}),price:ct.Number({description:"Price threshold in USD"})}),av=ct.Object({}),cv=ct.Object({address1:ct.String({description:"First token address"}),address2:ct.String({description:"Second token address"})});lv=ct.Object({address:ct.String({description:"Wallet address to analyze"})});pg="A11iZoqEt6hU7HyggqC67ee4AtYmaJjwKCvJLerJRV2J",gg="BygDYM1ZXLQNC1HXLhnd1rHZ7E5XjioqT3vPjJFfjnU2",Ag="FBMDYpG9WXKy4SgxuATQdB2sCyzHsJWPrEr45z3TgL2e"});var xg={};xt(xg,{btcMempoolParams:()=>Av,defiTvlParams:()=>wv,fearGreedParams:()=>mv,fundingRatesParams:()=>pv,getBtcMempoolTool:()=>yv,getDefiTvlTool:()=>bv,getFearGreedTool:()=>hv,getFundingRatesTool:()=>gv,getSolanaStatsTool:()=>xv,solanaStatsParams:()=>Ev});import{Type as ir}from"@sinclair/typebox";function dv(t){let e=lu.get(t);if(e){if(Date.now()>e.expires){lu.delete(t);return}return e.data}}function fv(t,e){lu.set(t,{data:e,expires:Date.now()+uv})}async function hv(){let t=dv("fear_greed");if(t)return t;try{let e=await me("https://api.alternative.me/fng/?limit=7",{timeout:1e4,retries:1});if(!e.ok)return wg();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(`
117
+ `)}]};return fv("fear_greed",i),i}catch(e){return X.warn("MarketSentiment","Fear & Greed fetch failed",{error:e.message}),wg()}}async function wg(){return{content:[{type:"text",text:"Fear & Greed Index: Neutral (50/100) \u2014 data unavailable"}]}}async function gv(t,e){let r=e.limit||10;try{let n=await me("https://fapi.binance.com/fapi/v1/premiumIndex",{timeout:1e4,retries:1});if(!n.ok)return bg();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(`
118
+ `)}]}}catch(n){return X.warn("MarketSentiment","Funding rates fetch failed",{error:n.message}),bg()}}async function bg(){return{content:[{type:"text",text:"Funding Rates: Data temporarily unavailable."}]}}async function yv(){try{let[t,e]=await Promise.all([me("https://mempool.space/api/v1/fees/recommended",{timeout:1e4}),me("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(`
119
+ `)}]}}catch(t){return X.warn("MarketSentiment","BTC mempool fetch failed",{error:t.message}),{content:[{type:"text",text:"BTC Mempool: Data temporarily unavailable."}]}}}async function bv(t,e){let r=e.chain?.toLowerCase();try{if(r){let n=await me(`https://api.llama.fi/v2/historicalChainTvl/${r}`,{timeout:1e4});if(!n.ok)return cu(r);let o=await n.json(),s=o[o.length-1];return{content:[{type:"text",text:`DeFi TVL \u2014 ${r.toUpperCase()}
120
+ TVL: $${(s?.tvl??0).toLocaleString(void 0,{maximumFractionDigits:0})}`}]}}else{let n=await me("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(`
121
+ `)}]}:cu("all")}}catch(n){return X.warn("MarketSentiment","DeFi TVL fetch failed",{chain:r,error:n.message}),cu(r??"all")}}async function cu(t){return{content:[{type:"text",text:`DeFi TVL for "${t}": Data temporarily unavailable.`}]}}async function xv(){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 me(t,{timeout:1e4,retries:1,method:"POST",headers:{"Content-Type":"application/json"},body:e});if(!r.ok)return Eg();let o=(await r.json()).result,s=(o.slotIndex/o.slotsInEpoch*100).toFixed(1),i=await me("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(`
122
+ `)}]}}catch(t){return X.warn("MarketSentiment","Solana stats fetch failed",{error:t.message}),Eg()}}async function Eg(){return{content:[{type:"text",text:"Solana Stats: Data temporarily unavailable. Check your RPC endpoint."}]}}var lu,uv,mv,pv,Av,wv,Ev,vg=ve(()=>{"use strict";pt();Ke();lu=new Map,uv=3e4;mv=ir.Object({});pv=ir.Object({limit:ir.Optional(ir.Number({description:"Number of top pairs",default:10}))});Av=ir.Object({});wv=ir.Object({chain:ir.Optional(ir.String({description:"Chain name (e.g., solana, ethereum) or omit for all"}))});Ev=ir.Object({})});var Qg={};xt(Qg,{SetupWizard:()=>yu});import{existsSync as Au,readFileSync as Og,writeFileSync as rC,mkdirSync as nC,chmodSync as oC}from"node:fs";import{resolve as $g}from"node:path";import{homedir as sC}from"node:os";import*as Lg from"node:readline";var yu,Dg=ve(()=>{"use strict";yu=class{home;envPath;constructor(){this.home=process.env.AIAIAI_HOME??$g(sC(),".aiaiai"),this.envPath=$g(this.home,".env")}ask(e,r=""){let n=Lg.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(!Au(this.envPath))return"";let r=new RegExp(`^${e}=(.*)$`,"m").exec(Og(this.envPath,"utf-8"));return r?r[1]:""}write(e,r){let n=Au(this.envPath)?Og(this.envPath,"utf-8"):"",o=new RegExp(`^${e}=.*$`,"m"),s=`${e}=${r}`;rC(this.envPath,o.test(n)?n.replace(o,s):n+(n.endsWith(`
123
+ `)||!n?"":`
124
+ `)+s+`
125
+ `);try{oC(this.envPath,384)}catch{}}async run(){console.log(`
126
+ \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
127
+ \u2551 AIAIAI Chain Agent \u2014 Setup \u2551
128
+ \u2551 $AIAIAI \xB7 Solana-native AI agent \u2551
129
+ \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
130
+ `),Au(this.home)||nC(this.home,{recursive:!0}),console.log(` Required configuration
131
+ `);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(`
132
+ \u26A0\uFE0F OpenRouter API key is required. Get one at https://openrouter.ai/keys
133
+ `),!1;console.log(`
134
+ Optional configuration
135
+ `);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(`
136
+ \u2713 Config saved \u2192 ${this.envPath}`),!0}}});var jg={};xt(jg,{exportCSV:()=>mC,getPLSummary:()=>dC,getTradeHistory:()=>fC,recordTrade:()=>uC});import{existsSync as Ng,readFileSync as iC,writeFileSync as Mg,mkdirSync as Fg}from"node:fs";import{join as Yi}from"node:path";import{homedir as aC}from"node:os";function Hi(){try{let t=iC(Ug,"utf-8");return JSON.parse(t)}catch{return{trades:[],totalSpent:0,totalReceived:0,avgCostBasis:0}}}function lC(t){try{Ng(Vn)||Fg(Vn,{recursive:!0,mode:448}),Mg(Ug,JSON.stringify(t,null,2),"utf-8")}catch(e){X.warn("ProfitTracker","Failed to save state",{error:e.message})}}function uC(t,e,r,n){let o=Hi(),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);lC(o),X.info("ProfitTracker","Recorded "+t,{tokenAmount:e,solAmount:r,pricePerToken:s})}function dC(t){let e=Hi(),n=e.trades.filter(u=>u.type==="buy").reduce((u,a)=>u+a.tokenAmount,0),o=e.trades.filter(u=>u.type==="sell"||u.type==="burn").reduce((u,a)=>u+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 fC(){return Hi().trades}function mC(){let t=Hi(),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+`
137
+ `+r.join(`
138
+ `),o=Yi(Vn,"pl-export.csv");return Ng(Vn)||Fg(Vn,{recursive:!0,mode:448}),Mg(o,n,"utf-8"),X.info("ProfitTracker","Exported CSV",{path:o}),o}var cC,Vn,Ug,Kg=ve(()=>{"use strict";Ke();cC=process.env.AIAIAI_HOME??Yi(aC(),".aiaiai"),Vn=Yi(cC,".tracker"),Ug=Yi(Vn,"pl.json")});var Zg=ta(ku(),1);import{readFileSync as Zo,existsSync as es,writeFileSync as Jg,mkdirSync as Yg}from"node:fs";import{resolve as Hg,join as Ir,dirname as Vg}from"node:path";import{homedir as zg}from"node:os";import{fileURLToPath as Xg}from"node:url";import{execSync as wu,execFileSync as hC}from"node:child_process";import{render as pC}from"ink";import Wg 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 vc}from"node:url";import{resolve as ob,extname as sb}from"node:path";import{existsSync as Pm}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 N={accent:"#ff3366",success:"#00ff88",error:"#ff4444",warn:"#ffaa33",muted:"#6b7280",header:"#a78bfa",dim:"#1f2937"};function Or(){return{fg(t,e){let r=N[t]??t;if(!r.startsWith("#"))return e;let[n,o,s]=oa(r);return`${Pr.fg(n,o,s)}${e}${Pr.reset}`}}}var EC=Or(),Su={};for(let[t,e]of Object.entries(N)){let[r,n,o]=oa(e);Su[t]=Pr.fg(r,n,o)}function Rr(t){let[e,r,n]=oa(t),o=Su[t]??Pr.fg(e,r,n);return s=>`${o}${s}${Pr.reset}`}var E={accent:Rr(N.accent),success:Rr(N.success),error:Rr(N.error),warn:Rr(N.warn),muted:Rr(N.muted),header:Rr(N.header),dim:Rr(N.dim),bold:t=>`${Pr.bold}${t}${Pr.reset}`};async function Cc(t,e,r={}){let n=ob(t);if(!Pm(n))throw new Error(`Extension file not found: ${n}`);let o=Or(),s=r.onNotify??(()=>{}),i=r.onStatusUpdate??(()=>{}),l=r.onShowModelSelector??(()=>{}),c={notify(w){s(w)},setStatus(w,$){i(w,$)},setTheme(w){},setHeader(w){},showModelSelector(w){l(w)},theme:o},f={registerCommand(w,$){e.addCommand(w,$)},registerTool(w){e.addTool(w)},registerSkill(w){e.addSkill(w)},on(w,$){e.addHook(w,$)},setSystemPrompt(w){e.setSystemPrompt(w)},ui:c},u=sb(n).toLowerCase(),a;if(u===".ts"){let w=n.replace(/\.ts$/,".js");if(Pm(w))a=await import(vc(w).href);else try{a=await(await Promise.resolve().then(()=>(Rm(),Bm))).tsImport(vc(n).href,import.meta.url)}catch{throw new Error(`Cannot import TypeScript extension "${n}" in packaged mode.
139
+ Fix: compile to .js first or install tsx: npm install -g tsx`)}}else a=await import(vc(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,A=console.error,C=console.warn,g=(...w)=>{c.notify(w.map($=>String($)).join(" "))};console.log=g,console.error=g,console.warn=g;try{await h(f)}finally{console.log=p,console.error=A,console.warn=C}}import{useState as Et,useCallback as Jn,useEffect as vv,useRef as Yn,useMemo as Cv}from"react";import{Box as lt,Text as Ae,useApp as kv,useInput as Sv}from"ink";import{existsSync as _v,readFileSync as Tv,writeFileSync as Iv,mkdirSync as Bv}from"node:fs";import{join as Cg}from"node:path";import{homedir as Rv}from"node:os";import{Type as kg}from"@sinclair/typebox";import{Box as Xs,Text as Qt}from"ink";import{jsx as zr,jsxs as Er}from"react/jsx-runtime";function Om({model:t,chain:e,price:r,toolRunning:n,connected:o,statusLine:s,cpu:i,ram:l,uptime:c,apiCalls:f}){let u=e.slice(0,8),a=t.split("/").pop()?.slice(0,16)??t.slice(0,16),h=(i??0)>80?N.error:(i??0)>50?N.warn:N.success,p=(l??0)>85?N.error:(l??0)>60?N.warn:N.success;return Er(Xs,{borderStyle:"single",borderColor:N.dim,paddingX:1,flexDirection:"row",justifyContent:"space-between",children:[Er(Xs,{gap:2,children:[zr(Qt,{color:N.accent,bold:!0,children:"\u{1F916} AIAIAI"}),r?zr(Qt,{color:N.success,children:r}):null,zr(Qt,{color:N.muted,children:a})]}),zr(Xs,{children:n?Er(Qt,{color:N.warn,children:["\u2699 ",n]}):s?zr(Qt,{color:N.muted,children:s.slice(0,60)}):zr(Qt,{color:N.muted,children:o?"ready":"connecting\u2026"})}),Er(Xs,{gap:2,children:[i!==void 0&&Er(Qt,{color:h,children:["CPU:",i,"%"]}),l!==void 0&&Er(Qt,{color:p,children:["RAM:",l,"%"]}),c&&zr(Qt,{color:N.muted,children:c}),f!==void 0&&Er(Qt,{color:N.muted,children:["API:",f,"/m"]}),Er(Qt,{color:N.header,children:["\u26D3 ",u]})]})]})}import ib,{useState as Xr,useCallback as Zs,useRef as $m,useMemo as kc}from"react";import{Box as Ve,Text as Qe,useStdout as ab,useInput as cb}from"ink";import{jsx as _e,jsxs as ze}from"react/jsx-runtime";var lb=40,ub=100,So=new Map;function db(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 Lm=["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 fb(t){if(!t||t==="/")return Lm.map(r=>`/${r}`);let e=t.startsWith("/")?t.slice(1):t;return Lm.filter(r=>r.startsWith(e)).map(r=>`/${r}`)}function mb(t){return t.role==="tool"?`${t.toolName??"tool"}|${t.content.length}|${t.isError?1:0}`:t.content}var hb=ib.memo(function({msg:e}){let r=kc(()=>db(e.ts),[e.ts]),n=kc(()=>mb(e),[e.content,e.role,e.toolName,e.isError]);if(e.role==="user")return ze(Ve,{flexDirection:"row",gap:1,marginTop:1,children:[_e(Qe,{color:N.muted,children:r}),_e(Qe,{color:N.accent,bold:!0,children:"you "}),_e(Qe,{wrap:"wrap",children:e.content})]});if(e.role==="assistant")return ze(Ve,{flexDirection:"row",gap:1,marginTop:1,children:[_e(Qe,{color:N.muted,children:r}),_e(Qe,{color:N.header,bold:!0,children:"\u{1F916} "}),_e(Qe,{wrap:"wrap",children:e.content})]});if(e.role==="tool"){let o=e.isError?"\u2717":"\u2713",s=e.isError?N.error:N.success,i=e.content.length>120;return ze(Ve,{flexDirection:"column",marginY:0,children:[ze(Ve,{flexDirection:"row",gap:1,children:[_e(Qe,{color:N.muted,children:r}),ze(Qe,{color:s,children:[o," ",e.toolName??"tool"]}),i&&ze(Qe,{color:N.dim,children:[" (",e.content.length," chars)"]})]}),!i&&_e(Ve,{marginLeft:6,children:_e(Qe,{color:N.muted,wrap:"wrap",children:e.content})})]})}return e.role==="notify"?_e(Ve,{borderStyle:"round",borderColor:N.accent,marginY:1,paddingX:1,children:_e(Qe,{wrap:"wrap",children:e.content})}):_e(Ve,{flexDirection:"row",gap:1,children:_e(Qe,{color:N.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 pb({value:t,onChange:e,onSubmit:r,disabled:n,onAbort:o}){let[s,i]=Xr(t.length),[l,c]=Xr([]),[f,u]=Xr(-1),[a,h]=Xr([]),[p,A]=Xr(-1),[C,g]=Xr(!1),w=$m(t),$=$m(s);w.current=t,$.current=s;let k=Zs(D=>{let Q=w.current.slice(0,$.current),O=w.current.slice($.current),L=Q+D+O;e(L),i($.current+D.length)},[e]),I=Zs(()=>{let D=w.current;!D.trim()||n||(c(Q=>[D,...Q].slice(0,ub)),u(-1),g(!1),e(""),i(0),r(D))},[n,e,r]);cb((D,Q)=>{if(Q.escape){if(n){o();return}g(!1);return}if(!n){if(Q.tab){let O=w.current;if(!C){if(O.startsWith("/")&&O.length>0){let L=fb(O);if(L.length===1&&L[0]!==O){e(L[0]+" "),i(L[0].length+1);return}if(L.length>0){h(L),A(0),g(!0);return}}return}if(a.length>0){let L=(p+1)%a.length;A(L);let F=a[L];e(F+" "),i(F.length+1)}return}if(C&&g(!1),Q.return){if(D==="\r"&&!Q.shift){I();return}if(Q.shift||D===""){k(`
140
+ `);return}}if(Q.upArrow){if(l.length===0)return;let O=f<l.length-1?f+1:f;u(O),e(l[O]),i(l[O].length);return}if(Q.downArrow){if(f<=0){u(-1),e(""),i(0);return}let O=f-1;u(O),e(l[O]),i(l[O].length);return}if(Q.leftArrow){i(Math.max(0,$.current-1));return}if(Q.rightArrow){i(Math.min(w.current.length,$.current+1));return}if(Q.backspace||Q.delete){if($.current<=0)return;let O=w.current.slice(0,$.current-1),L=w.current.slice($.current);e(O+L),i($.current-1);return}if(D&&D.length===1&&D.charCodeAt(0)>=32){k(D);return}}});let v=n?"thinking\u2026":"message or /command",B=(t||v).split(`
141
+ `),U=Math.min(B.length,5);return ze(Ve,{flexDirection:"column",children:[C&&a.length>0&&ze(Ve,{borderStyle:"single",borderColor:N.accent,paddingX:1,flexDirection:"column",marginBottom:0,children:[a.slice(0,8).map((D,Q)=>ze(Qe,{color:Q===p?N.accent:N.muted,bold:Q===p,children:[Q===p?"\u25B8 ":" ",D]},D)),a.length>8&&ze(Qe,{color:N.dim,children:[" \u2026",a.length-8," more"]})]}),_e(Ve,{borderStyle:"round",borderColor:n?N.dim:N.accent,paddingX:1,paddingY:(U>1,0),flexDirection:"column",marginTop:1,children:ze(Ve,{flexDirection:"row",children:[_e(Qe,{color:N.accent,bold:!0,children:"\u203A "}),_e(Ve,{flexDirection:"column",flexGrow:1,children:t?B.slice(0,5).map((D,Q)=>{let L=Q===Math.min($.current,B.length-1)?$.current-B.slice(0,Q).join(`
142
+ `).length-(Q>0?1:0):D.length,F=Math.min(L,D.length),W=D.slice(0,F),V=D[F]||" ",oe=D.slice(F+1);return ze(Qe,{wrap:"truncate-end",children:[W,_e(Qe,{inverse:!0,children:V}),oe]},Q)}):_e(Qe,{color:N.dim,children:v})})]})})]})}function Qm({messages:t,streamingText:e,toolRunning:r,onSubmit:n,onAbort:o,disabled:s}){let[i,l]=Xr(""),{stdout:c}=ab(),f=(c?.columns??80)-2,u=Zs(p=>{n(p)},[n]),a=Zs(()=>{o?.()},[o]),h=kc(()=>t.slice(-lb),[t]);return ze(Ve,{flexDirection:"column",width:"100%",children:[ze(Ve,{flexDirection:"column",flexGrow:1,children:[h.map(p=>_e(hb,{msg:p},p.id)),e&&ze(Ve,{flexDirection:"row",gap:1,marginTop:1,children:[_e(Qe,{color:N.muted,children:" "}),_e(Qe,{color:N.header,bold:!0,children:"\u{1F916} "}),_e(Qe,{wrap:"wrap",children:e})]}),r&&_e(Ve,{flexDirection:"row",gap:1,marginTop:1,children:ze(Qe,{color:N.warn,children:["\u2699 running ",r,"\u2026"]})})]}),_e(pb,{value:i,onChange:l,onSubmit:u,disabled:!!s,onAbort:a})]})}import{useState as Hm,useCallback as Db,useEffect as Nb,useMemo as Mb}from"react";import{Box as Bc,Text as Io,useInput as Fb}from"ink";import Rb,{useState as Pb,useEffect as Ob}from"react";import{Text as $b,useInput as Lb}from"ink";var Dm=(t=0)=>e=>`\x1B[${e+t}m`,Nm=(t=0)=>e=>`\x1B[${38+t};5;${e}m`,Mm=(t=0)=>(e,r,n)=>`\x1B[${38+t};2;${e};${r};${n}m`,Te={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]}},tS=Object.keys(Te.modifier),gb=Object.keys(Te.color),Ab=Object.keys(Te.bgColor),rS=[...gb,...Ab];function yb(){let t=new Map;for(let[e,r]of Object.entries(Te)){for(let[n,o]of Object.entries(r))Te[n]={open:`\x1B[${o[0]}m`,close:`\x1B[${o[1]}m`},r[n]=Te[n],t.set(o[0],o[1]);Object.defineProperty(Te,e,{value:r,enumerable:!1})}return Object.defineProperty(Te,"codes",{value:t,enumerable:!1}),Te.color.close="\x1B[39m",Te.bgColor.close="\x1B[49m",Te.color.ansi=Dm(),Te.color.ansi256=Nm(),Te.color.ansi16m=Mm(),Te.bgColor.ansi=Dm(10),Te.bgColor.ansi256=Nm(10),Te.bgColor.ansi16m=Mm(10),Object.defineProperties(Te,{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=>Te.rgbToAnsi256(...Te.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)=>Te.ansi256ToAnsi(Te.rgbToAnsi256(e,r,n)),enumerable:!1},hexToAnsi:{value:e=>Te.ansi256ToAnsi(Te.hexToAnsi256(e)),enumerable:!1}}),Te}var wb=yb(),Dt=wb;import Sc from"node:process";import bb from"node:os";import Fm from"node:tty";function _t(t,e=globalThis.Deno?globalThis.Deno.args:Sc.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:Ie}=Sc,ei;_t("no-color")||_t("no-colors")||_t("color=false")||_t("color=never")?ei=0:(_t("color")||_t("colors")||_t("color=true")||_t("color=always"))&&(ei=1);function Eb(){if("FORCE_COLOR"in Ie)return Ie.FORCE_COLOR==="true"?1:Ie.FORCE_COLOR==="false"?0:Ie.FORCE_COLOR.length===0?1:Math.min(Number.parseInt(Ie.FORCE_COLOR,10),3)}function xb(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function vb(t,{streamIsTTY:e,sniffFlags:r=!0}={}){let n=Eb();n!==void 0&&(ei=n);let o=r?ei: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 Ie&&"AGENT_NAME"in Ie)return 1;if(t&&!e&&o===void 0)return 0;let s=o||0;if(Ie.TERM==="dumb")return s;if(Sc.platform==="win32"){let i=bb.release().split(".");return Number(i[0])>=10&&Number(i[2])>=10586?Number(i[2])>=14931?3:2:1}if("CI"in Ie)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(i=>i in Ie)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(i=>i in Ie)||Ie.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in Ie)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Ie.TEAMCITY_VERSION)?1:0;if(Ie.COLORTERM==="truecolor"||Ie.TERM==="xterm-kitty"||Ie.TERM==="xterm-ghostty"||Ie.TERM==="wezterm")return 3;if("TERM_PROGRAM"in Ie){let i=Number.parseInt((Ie.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Ie.TERM_PROGRAM){case"iTerm.app":return i>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Ie.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Ie.TERM)||"COLORTERM"in Ie?1:s}function Um(t,e={}){let r=vb(t,{streamIsTTY:t&&t.isTTY,...e});return xb(r)}var Cb={stdout:Um({isTTY:Fm.isatty(1)}),stderr:Um({isTTY:Fm.isatty(2)})},jm=Cb;function Km(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 Wm(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
143
+ `:`
144
+ `)+r,o=n+1,n=t.indexOf(`
145
+ `,o)}while(n!==-1);return s+=t.slice(o),s}var{stdout:Gm,stderr:qm}=jm,_c=Symbol("GENERATOR"),Tn=Symbol("STYLER"),_o=Symbol("IS_EMPTY"),Jm=["ansi","ansi","ansi256","ansi16m"],In=Object.create(null),kb=(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=Gm?Gm.level:0;t.level=e.level===void 0?r:e.level};var Sb=t=>{let e=(...r)=>r.join(" ");return kb(e,t),Object.setPrototypeOf(e,To.prototype),e};function To(t){return Sb(t)}Object.setPrototypeOf(To.prototype,Function.prototype);for(let[t,e]of Object.entries(Dt))In[t]={get(){let r=ti(this,Ic(e.open,e.close,this[Tn]),this[_o]);return Object.defineProperty(this,t,{value:r}),r}};In.visible={get(){let t=ti(this,this[Tn],!0);return Object.defineProperty(this,"visible",{value:t}),t}};var Tc=(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"?Tc("rgb",e,r,...Dt.hexToRgb(...n)):Dt[r][t](...n),_b=["rgb","hex","ansi256"];for(let t of _b){In[t]={get(){let{level:r}=this;return function(...n){let o=Ic(Tc(t,Jm[r],"color",...n),Dt.color.close,this[Tn]);return ti(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=Ic(Tc(t,Jm[r],"bgColor",...n),Dt.bgColor.close,this[Tn]);return ti(this,o,this[_o])}}}}var Tb=Object.defineProperties(()=>{},{...In,level:{enumerable:!0,get(){return this[_c].level},set(t){this[_c].level=t}}}),Ic=(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}},ti=(t,e,r)=>{let n=(...o)=>Ib(n,o.length===1?""+o[0]:o.join(" "));return Object.setPrototypeOf(n,Tb),n[_c]=t,n[Tn]=e,n[_o]=r,n},Ib=(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=Km(e,r.close,r.open),r=r.parent;let s=e.indexOf(`
146
+ `);return s!==-1&&(e=Wm(e,o,n,s)),n+e+o};Object.defineProperties(To.prototype,In);var Bb=To(),fS=To({level:qm?qm.level:0});var xr=Bb;function Qb({value:t,placeholder:e="",focus:r=!0,mask:n,highlightPastedText:o=!1,showCursor:s=!0,onChange:i,onSubmit:l}){let[c,f]=Pb({cursorOffset:(t||"").length,cursorWidth:0}),{cursorOffset:u,cursorWidth:a}=c;Ob(()=>{f(g=>{if(!r||!s)return g;let w=t||"";return g.cursorOffset>w.length-1?{cursorOffset:w.length,cursorWidth:0}:g})},[t,r,s]);let h=o?a:0,p=n?n.repeat(t.length):t,A=p,C=e?xr.grey(e):void 0;if(s&&r){C=e.length>0?xr.inverse(e[0])+xr.grey(e.slice(1)):xr.inverse(" "),A=p.length>0?"":xr.inverse(" ");let g=0;for(let w of p)A+=g>=u-h&&g<=u?xr.inverse(w):w,g++;p.length>0&&u===p.length&&(A+=xr.inverse(" "))}return Lb((g,w)=>{if(w.upArrow||w.downArrow||w.ctrl&&g==="c"||w.tab||w.shift&&w.tab)return;if(w.return){l&&l(t);return}let $=u,k=t,I=0;w.leftArrow?s&&$--:w.rightArrow?s&&$++:w.backspace||w.delete?u>0&&(k=t.slice(0,u-1)+t.slice(u,t.length),$--):(k=t.slice(0,u)+g+t.slice(u,t.length),$+=g.length,g.length>1&&(I=g.length)),u<0&&($=0),u>t.length&&($=t.length),f({cursorOffset:$,cursorWidth:I}),k!==t&&i(k)},{isActive:r}),Rb.createElement($b,null,e?p.length>0?A:C:A)}var Ym=Qb;import{jsx as ri,jsxs as Bo}from"react/jsx-runtime";var Rc=10;function Ub(t,e){let r=e.toLowerCase().trim();return r?t.filter(n=>`${n.id} ${n.tier}`.toLowerCase().includes(r)):t}function Vm({models:t,currentModelId:e,onSelect:r,onCancel:n,initialQuery:o=""}){let[s,i]=Hm(o),[l,c]=Hm(0),f=Mb(()=>Ub(t,s),[t,s]);Nb(()=>{c(p=>Math.min(p,Math.max(0,f.length-1)))},[f.length]);let u=Db(()=>{let p=f[l];p&&r(p.id)},[f,l,r]);Fb((p,A)=>{if(A.escape){n();return}if(A.upArrow){c(C=>Math.max(0,C-1));return}if(A.downArrow){c(C=>Math.min(f.length-1,C+1));return}if(A.return){u();return}});let a=Math.max(0,Math.min(l-Math.floor(Rc/2),f.length-Rc)),h=f.slice(a,a+Rc);return Bo(Bc,{flexDirection:"column",borderStyle:"round",borderColor:N.accent,paddingX:1,children:[Bo(Io,{color:N.accent,bold:!0,children:["Select Model (",f.length,")"]}),Bo(Bc,{children:[ri(Io,{color:N.muted,children:"filter: "}),ri(Ym,{value:s,onChange:i,placeholder:"type to filter\u2026"})]}),Bo(Bc,{flexDirection:"column",marginTop:1,children:[h.map((p,A)=>{let g=a+A===l,w=p.id===e,$={orchestrator:"\u2B50",analyst:"\u{1F52C}",worker:"\u26A1",free:"\u{1F193}"}[p.tier]??"\u2022";return Bo(Io,{color:g?N.accent:N.muted,bold:g,children:[g?"\u203A ":" ",$," ",p.id,w?" (current)":""]},p.id)}),f.length===0&&ri(Io,{color:N.muted,children:"No models match."})]}),ri(Io,{color:N.dim,children:"\u2191\u2193 navigate \xB7 Enter select \xB7 Esc cancel"})]})}Ke();var si=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 Oc,readFileSync as zm,writeFileSync as Kb,chmodSync as Wb}from"node:fs";import{resolve as Xm}from"node:path";import{homedir as Gb}from"node:os";var $c=class{cache={};envPath;constructor(){let e=process.env.AIAIAI_HOME??Xm(Gb(),".aiaiai");this.envPath=Xm(e,".env"),this.load(),this.validatePermissions()}validatePermissions(){try{if(!Oc(this.envPath))return;let{statSync:e}=ae("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(Oc(this.envPath)){let e=zm(this.envPath,"utf-8");for(let r of e.split(`
147
+ `)){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=Oc(this.envPath)?zm(this.envPath,"utf-8"):"",o=n.split(`
148
+ `),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(`
149
+ `)&&o.push(""),o.push(`${e}=${r}`));let i=o.join(`
150
+ `)+`
151
+ `;Kb(this.envPath,i,"utf-8");try{Wb(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 $c;Ke();pt();var Bn=2,cE=1e3,uh=6e4;function lE(t){return t===429||t>=500}function li(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}=e,l={model:r.model,messages:[{role:"system",content:n},...o],stream:!0,max_tokens:4096},c="",f=0,u;for(let a=0;a<=Bn;a++)try{if(a>0){let k=cE*Math.pow(2,a-1);X.info("ModelClient",`Retry attempt ${a}/${Bn} after ${k}ms`),await new Promise(I=>setTimeout(I,k))}let h=new AbortController;if(u=setTimeout(()=>h.abort(),uh),i?.aborted){s({type:"error",message:"Request aborted"});return}let p=i??h.signal,A=await me(`${r.baseUrl}/chat/completions`,{timeout:uh,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(l),signal:p});if(clearTimeout(u),!A.ok){let k=await A.text().catch(()=>"unknown error");if(c=k,f=A.status,lE(A.status)&&a<Bn){X.warn("ModelClient",`Retryable error ${A.status}`,{attempt:a});continue}A.status===401?s({type:"error",message:`API auth failed: OpenRouter key is missing or invalid.
152
+ Run: aiaiai setup
153
+ Get a key: https://openrouter.ai/keys`}):s({type:"error",message:`API error ${A.status}: ${k}`});return}if(!A.body?.getReader()){s({type:"error",message:"No response body"});return}let w=A.body.pipeThrough(new TextDecoderStream).getReader(),$="";for(;;){let{done:k,value:I}=await w.read();if(k)break;$+=I;let v=$.split(`
154
+ `);$=v.pop()||"";for(let S of v){let B=S.trim();if(!(!B||B==="data: [DONE]")&&B.startsWith("data: "))try{let D=JSON.parse(B.slice(6)).choices?.[0]?.delta?.content;D&&s({type:"text_delta",text:D})}catch{X.debug("ModelClient","Skipped malformed SSE line",{line:B.slice(0,100)})}}}s({type:"turn_done"});return}catch(h){if(clearTimeout(u),h instanceof Error&&h.name==="AbortError"){if(i?.aborted){s({type:"turn_done"});return}if(c="Request timed out",a<Bn){X.warn("ModelClient","Timeout, retrying",{attempt:a});continue}s({type:"error",message:"Request timed out"});return}if(c=h instanceof Error?h.message:String(h),a<Bn){X.warn("ModelClient","Error, retrying",{attempt:a,error:c});continue}s({type:"error",message:`ModelClient error (${f||"offline"}): ${c}`});return}s({type:"error",message:`ModelClient failed after ${Bn+1} attempts: ${c}`})}};var Rn=class{registry;session;dispatcher;onEvent;sessionCtx;effectLevel;modelReg;costTracker;goalManager;contextStore;abortController=null;_pendingApproval;_toolRetries=new Map;_maxToolRetries=2;constructor(e,r,n,o,s,i,l,c,f){this.registry=e,this.session=r,this.dispatcher=new si(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=li(this.modelReg),n=this.session.getMessages(),o=this.session.getSystemPrompt(),s="",i="";this.abortController=new AbortController;let l=c=>{if(c.type==="text_delta"){s+=c.text,i+=c.text;let f=i.match(/\{("tool"|"name"):\s*"([^"]+)"\s*,\s*"args"|"params"|"parameters":\s*(\{[^}]+\})\s*\}/);if(f){let u=f[2],a={};try{a=JSON.parse(f[3])}catch{X.warn("AgentRunner","Failed to parse tool call args from stream",{toolCall:f[0].slice(0,100)})}if(s=s.replace(f[0],"").trim(),i="",u!=="noop"){if(this.onEvent({type:"tool_start",name:u}),this.dispatcher.getTool(u)&&this.requiresApproval(u)){this.onEvent({type:"approval_request",toolName:u,args:JSON.stringify(a),approve:p=>{p?this.executeTool(u,a,s,o,n,r):(this.onEvent({type:"tool_done",name:u,result:JSON.stringify({error:"User denied approval"}),isError:!0}),this.session.addMessage("assistant",s||`(tool ${u} was denied)`),this.onEvent({type:"turn_done"}))}});return}this.executeTool(u,a,s,o,n,r)}}this.onEvent({type:"text_delta",text:c.text})}else if(c.type==="turn_done")s.trim()&&(this.session.addMessage("assistant",s.trim()),this.costTracker&&this.costTracker.track(r.model,n.reduce((f,u)=>f+u.content.length,0),s.length)),this.onEvent({type:"turn_done"});else if(c.type==="error"){if(i.includes("tool")||i.includes("function")){let f=i.match(/"name"\s*:\s*"([^"]+)"/),u=f?f[1]:"unknown";this.onEvent({type:"tool_done",name:u,result:JSON.stringify({error:c.message}),isError:!0})}this.onEvent({type:"error",message:c.message??"unknown error"})}};await Oo.runStreaming({config:r,systemPrompt:o,messages:n,onEvent:l,signal:this.abortController.signal})}async executeTool(e,r,n,o,s,i){let l=await this.dispatcher.dispatch(e,r),c=l.content.map(a=>a.text).join(`
155
+ `);if(this.onEvent({type:"tool_done",name:e,result:c,isError:l.isError??!1}),l.isError){let a=(this._toolRetries.get(e)??0)+1;if(this._toolRetries.set(e,a),a>this._maxToolRetries){this._toolRetries.delete(e);return}}else this._toolRetries.delete(e);let f=[...s.slice(-5),{role:"assistant",content:n||`(using ${e})`},{role:"user",content:`Tool "${e}" returned:
156
+ ${c}
157
+
158
+ Summarize the result or continue.`}],u="";await Oo.runStreaming({config:i,systemPrompt:o,messages:f,onEvent:a=>{a.type==="text_delta"?(u+=a.text,this.onEvent({type:"text_delta",text:a.text})):a.type==="turn_done"?(u.trim()&&this.session.addMessage("assistant",u.trim()),this.onEvent({type:"turn_done"})):a.type==="error"&&this.onEvent({type:"error",message:a.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="";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.messageCount>500&&this.head;)this._cachedChars-=this.head.charSize,this.head=this.head.next,this.messageCount--;for(;this._cachedChars>512e3&&this.head&&this.head!==this.tail;)this._cachedChars-=this.head.charSize,this.head=this.head.next,this.messageCount--}getMessages(){let e=[],r=this.head;for(;r;)e.push({role:r.role,content:r.content}),r=r.next;return 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();pt();Ke();import{Type as cl}from"@sinclair/typebox";var Qx=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"]),Dx=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 Nx(t){let e=t.toLowerCase().split(/[\s,.-_!?]+/),r=0,n=0;for(let o of e)Qx.has(o)&&(r+=1,n++),Dx.has(o)&&(r-=1,n++);return n===0?0:Math.max(-1,Math.min(1,r/Math.max(n,1)))}var ll=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 me(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:Nx(i.title)})}else e.push(...this.getFallbackNews())}catch(r){X.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 X.debug("NewsSentiment","statusBadge failed",{error:e.message}),""}}},jn=new ll,Ap=cl.Object({limit:cl.Optional(cl.Number({description:"Number of news items"}))});async function ul(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(`
159
+ `)}]}}pt();import{Type as Ge}from"@sinclair/typebox";var ki=[],yp=[];async function Mx(){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(ae.resolve("./TechnicalAnalysis.worker.js"));o.on("message",s=>{let i=o._pending;i&&(o._pending=null,i.resolve(s.results));let l=yp.shift();l&&wp(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 wp(t,e){return new Promise((r,n)=>{t._pending={resolve:r,reject:n},t.postMessage({candles:e,id:Date.now()})})}async function Fx(t){let e=await Mx();if(e.length===0)throw new Error("no-workers");let r=e.find(n=>!n._pending);return r?wp(r,t):new Promise((n,o)=>{yp.push({candles:t,resolve:n,reject:o})})}function Ux(){return new Promise(t=>setImmediate(t))}async function jx(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 u=0;u<e;u++)l+=o[i-u],c+=s[i-u];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 Ux()}return n}function Kx(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 dl(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 Wx(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 Gx(t,e=12,r=26,n=9){let o=dl(t,e),s=dl(t,r),i=[],l=r-e;for(let h=0;h<s.length;h++)i.push(o[h+l]-s[h]);let c=dl(i,n),f=n-1,u=[];for(let h=0;h<i.length-f;h++)u.push(i[h+f]-c[h]);return{macd:i.slice(f),signal:c,histogram:u}}function qx(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 Jx(t,e=20,r=2){let n=Kx(t,e),o=[],s=[];for(let i=0;i<n.length;i++){let l=i,c=0;for(let u=0;u<e;u++){let a=l+u;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 Yx(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 Hx(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 fl(t){let e=t.map(f=>f.close);if(e.length<30)return[];if(t.length>100)try{return(await Fx(t)).map(u=>({indicator:u.indicator,value:u.value,signal:u.signal}))}catch{}let r=[],n=await jx(e,14);r.push(Wx(n,e[e.length-1],e)),r.push(qx(Gx(e,12,26,9)));let o=Jx(e,20,2);r.push(Yx(o,e[e.length-1]));let s=Hx(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 bp=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}))}),Ep=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 xp(t,e){let r=e.symbol,n=e.interval||"1d",o=e.limit||50;try{let s=await me(`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 fl(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(`
160
+ `)}],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 hl,readFileSync as kp,writeFileSync as Sp,mkdirSync as e1,readdirSync as t1}from"node:fs";import{resolve as jo}from"node:path";import{Type as pl}from"@sinclair/typebox";import{existsSync as Uo,mkdirSync as vp,writeFileSync as ml}from"node:fs";import{resolve as Kn}from"node:path";import{homedir as Vx}from"node:os";var or=process.env.AIAIAI_HOME??Kn(Vx(),".aiaiai"),zx=["config","memory","checkpoints","sessions","skills"],Xx=`# AIAIAI Chain Agent
161
+
162
+ Solana-native AI agent for decentralized AI governance.
163
+ Ticker: $AIAIAI (AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump)
164
+
165
+ ## Directory layout
166
+
167
+ | Path | Contents |
168
+ |----------------|---------------------------------------------|
169
+ | config/ | Settings and API keys |
170
+ | memory/ | Long-term conversation memory |
171
+ | checkpoints/ | Agent state checkpoints |
172
+ | sessions/ | REPL conversation sessions |
173
+ | skills/ | Strategy skill definitions |
174
+ | .env | API keys and runtime config |
175
+ | AIAIAI.md | This file |
176
+ | settings.json | User preferences |
177
+
178
+ ## Quick reference
179
+
180
+ \`\`\`
181
+ aiaiaichain \u2014 start interactive REPL
182
+ aiaiaichain setup \u2014 re-run setup wizard
183
+ aiaiaichain config \u2014 show configuration
184
+ aiaiaichain price \u2014 show $AIAIAI token price
185
+ \`\`\`
186
+ `,Cp=!1,Zx="",Xe=class t{static getInstance(){return t}static init(){if(Cp)return;Uo(or)||vp(or,{recursive:!0});for(let o of zx){let s=Kn(or,o);Uo(s)||vp(s,{recursive:!0})}let e=Kn(or,"AIAIAI.md");Uo(e)||ml(e,Xx,"utf-8");let r=Kn(or,"history.jsonl");Uo(r)||ml(r,"","utf-8");let n=Kn(or,"settings.json");Uo(n)||ml(n,JSON.stringify({theme:"dark",autoSave:!0,activeChain:"solana"},null,2),"utf-8"),Cp=!0,Zx=or}static path(...e){return Kn(or,...e)}static getHome(){return or}};var gl=class{basePath;activeContexts=new Map;constructor(){this.basePath=jo(Xe.getHome(),"sessions","tasks"),hl(this.basePath)||e1(this.basePath,{recursive:!0})}saveTask(e,r){let n={taskId:e,data:r,createdAt:Date.now(),updatedAt:Date.now()};Sp(jo(this.basePath,`${e}.json`),JSON.stringify(n,null,2),"utf-8")}readTask(e){let r=jo(this.basePath,`${e}.json`);if(!hl(r))return null;try{return JSON.parse(kp(r,"utf-8"))}catch{return null}}listTasks(){if(!hl(this.basePath))return[];try{return t1(this.basePath).filter(e=>e.endsWith(".json")).map(e=>{try{return JSON.parse(kp(jo(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(),Sp(jo(this.basePath,`${e}.json`),JSON.stringify(r,null,2),"utf-8"),!0):!1}readContextParams=pl.Object({taskId:pl.String({description:"Task ID from a previous multi-step operation"})});listTasksParams=pl.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}):
187
+ ${r.join(`
188
+ `)}`}]}}},Si=new gl;import{existsSync as r1,readFileSync as n1,writeFileSync as o1}from"node:fs";import{resolve as s1}from"node:path";import{Type as Wt}from"@sinclair/typebox";var Al=s1(Xe.getHome(),"memory","goals.json"),yl=class{goals=[];constructor(){this.load()}load(){try{r1(Al)&&(this.goals=JSON.parse(n1(Al,"utf-8")))}catch{this.goals=[]}}save(){try{o1(Al,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?"":`
189
+
190
+ [ACTIVE GOALS]
191
+ ${e.map(n=>` [${n.id}] ${n.text.slice(0,200)}`).join(`
192
+ `)}
193
+ `}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}):
194
+ ${s.join(`
195
+ `)}`}]}}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`}]}}},gt=new yl;import{existsSync as wl,readFileSync as bl,writeFileSync as i1,appendFileSync as a1,mkdirSync as c1,readdirSync as l1}from"node:fs";import{resolve as Ko}from"node:path";var El=class{basePath;available=!1;constructor(){this.basePath=Ko(Xe.getHome(),"memory");try{wl(this.basePath)||c1(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{a1(Ko(this.basePath,`${e}.jsonl`),JSON.stringify(o)+`
196
+ `,"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=Ko(this.basePath,`${e}.jsonl`);if(!wl(r))return;let o=bl(r,"utf-8").split(`
197
+ `).filter(Boolean);if(o.length<=200)return;let s=o.slice(-100);i1(r,s.join(`
198
+ `)+`
199
+ `,"utf-8")}catch{}}search(e,r=8){if(!this.available)return[];try{let n=[],o=l1(this.basePath).filter(l=>l.endsWith(".jsonl"));for(let l of o){let c=bl(Ko(this.basePath,l),"utf-8");for(let f of c.split(`
200
+ `).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=Ko(this.basePath,`${e}.jsonl`);if(!wl(r))return"";let n=bl(r,"utf-8").split(`
201
+ `).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?"":`
202
+
203
+ [RECENT MEMORY]
204
+ ${o.slice(-6).map(l=>`[${l.role}]: ${l.content.slice(0,150)}`).join(`
205
+ `)}
206
+ `}catch{return""}}},Wn=new El;import{existsSync as u1,readFileSync as d1,writeFileSync as f1}from"node:fs";import{resolve as m1}from"node:path";import{Type as Gt}from"@sinclair/typebox";var xl=m1(Xe.getHome(),"memory","schedule.json"),vl=class{tasks=[];interval=null;onTask;constructor(){this.load()}load(){try{u1(xl)&&(this.tasks=JSON.parse(d1(xl,"utf-8")))}catch{this.tasks=[]}}save(){try{f1(xl,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}):
207
+ ${s.join(`
208
+ `)}`}]}}async removeTaskTool(e,r){return{content:[{type:"text",text:this.removeTask(r.id)?`Task ${r.id} removed`:`Task ${r.id} not found`}]}}},qt=new vl;Ke();import{existsSync as Rp,readFileSync as Tp,mkdirSync as y1,readdirSync as w1,unlinkSync as b1}from"node:fs";import{resolve as Wo}from"node:path";import{homedir as E1}from"node:os";import{createHash as Ip}from"node:crypto";import{writeFileSync as h1,renameSync as p1,existsSync as g1,unlinkSync as A1}from"node:fs";function _p(t,e){let r=`${t}.tmp-${Date.now()}-${Math.random().toString(36).slice(2,6)}`;try{h1(r,e,"utf-8"),p1(r,t)}catch(n){try{g1(r)&&A1(r)}catch{}throw n}}var Bp=1,sn=Wo(E1(),".aiaiai","sessions");function Cl(){Rp(sn)||y1(sn,{recursive:!0})}function x1(){return`session-${Date.now()}-${Math.random().toString(36).slice(2,6)}`}var kl=class{currentId;autoSaveInterval=null;constructor(){Cl(),this.currentId=x1()}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){Cl();let n=this.currentId,o=this.load(n),s={version:Bp,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=Ip("sha256").update(i).digest("hex"),c=JSON.stringify({...s,_checksum:l});try{_p(Wo(sn,`${n}.json`),c)}catch{}return n}load(e){try{let r=Wo(sn,`${e}.json`);if(!Rp(r))return null;let n=Tp(r,"utf-8"),o=JSON.parse(n);if((!o.version||o.version<Bp)&&(o=this.migrateSchema(o)),o._checksum){let s=o._checksum;delete o._checksum;let i=Ip("sha256").update(JSON.stringify(o)).digest("hex");s!==i&&(X.warn("SessionStore","Session checksum mismatch \u2014 file may be corrupted",{id:e}),o._corrupted=!0)}return o}catch(r){return X.debug("SessionStore","Failed to load session",{error:r.message}),null}}list(){Cl();try{let e=w1(sn).filter(n=>n.endsWith(".json")),r=[];for(let n of e)try{let o=JSON.parse(Tp(Wo(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){X.debug("SessionStore","Skipped bad session file",{error:o.message})}return r.sort((n,o)=>o.updatedAt-n.updatedAt)}catch(e){return X.warn("SessionStore","Failed to list sessions",{error:e.message}),[]}}delete(e){try{return b1(Wo(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}},Ye=new kl;qo();Ii();import{existsSync as Np,readFileSync as _1,writeFileSync as T1,mkdirSync as I1,chmodSync as B1}from"node:fs";import{resolve as R1,join as P1}from"node:path";import{homedir as O1}from"node:os";import{execFileSync as $1,execSync as L1}from"node:child_process";import{Type as Me}from"@sinclair/typebox";var Bl=R1(O1(),".config","gmgn"),Bi=P1(Bl,".env");function Q1(){Np(Bl)||I1(Bl,{recursive:!0})}function Pl(){let t={};if(Np(Bi)){let e=_1(Bi,"utf-8");for(let r of e.split(`
209
+ `)){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 D1(t,e){Q1();let r=Pl();r[t]=e;let n=Object.entries(r).map(([o,s])=>`${o}=${s}`);T1(Bi,n.join(`
210
+ `)+`
211
+ `,"utf-8");try{B1(Bi,384)}catch{}process.env[t]=e}function Rl(){return Pl().GMGN_API_KEY}function Ri(){let t=Rl();return!!t&&t.trim()!==""}function Mp(t){D1("GMGN_API_KEY",t)}function N1(){return{...process.env,...Pl()}}function Ol(){try{return L1("which gmgn-cli",{stdio:"ignore"}),!0}catch{return!1}}var M1=[{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 M1.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(""),Ol()||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(`
212
+ `)},Oi=()=>["\u{1F50D} GMGN Status","",`CLI installed: ${Ol()?"\u2705 yes":"\u274C no (npm install -g gmgn-cli)"}`,`API key configured: ${Ri()?"\u2705 yes":"\u274C no (gmgn setup)"}`,Ri()?`Key: ${Rl().slice(0,6)}\u2022\u2022\u2022\u2022${Rl().slice(-4)}`:""].filter(Boolean).join(`
213
+ `),Fp=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(!Ol())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,u=["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};u.push("--chain",n,"--address",o),i&&(r==="token holders"||r==="token traders")&&u.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};u.push("--chain",n,"--address",o,"--resolution",l)}else if(r==="market trending")u.push("--chain",n),c&&u.push("--interval",c),i&&u.push("--limit",String(i));else if(r==="market trenches")u.push("--chain",n),f&&u.push("--type",f),i&&u.push("--limit",String(i));else if(r==="market signal")u.push("--chain",n),i&&u.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};u.push("--chain",n,"--wallet",s)}else r==="track follow-wallet"?(u.push("--chain",n),s&&u.push("--wallet",s)):(r==="track kol"||r==="track smartmoney")&&(u.push("--chain",n),i&&u.push("--limit",String(i)));try{return{content:[{type:"text",text:$1(u[0],u.slice(1),{env:N1(),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 Up=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 $l(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}}Ke();import{totalmem as $i,freemem as jp,uptime as F1}from"node:os";var Ll=process.cpuUsage(),Ql=class{apiCallCount=0;prevCpuTimes={idle:0,total:0};trackApiCall(){this.apiCallCount++}getStats(e=0){return{cpuPercent:this.getCpuPercent(),ramPercent:this.getRamPercent(),ramUsed:this.formatBytes($i()-jp()),ramTotal:this.formatBytes($i()),uptime:this.formatUptime(F1()),...this.getNetStats(),apiCallsPerMin:this.apiCallCount,tokensUsed:e}}getCpuPercent(){try{let e=process.cpuUsage(),r=e.user-Ll.user,n=e.system-Ll.system;Ll=e;let o=r+n;return Math.min(100,Math.round(o/1e7*100))}catch(e){return X.debug("SystemMonitor","CPU measurement failed",{error:e.message}),0}}getRamPercent(){let e=$i()-jp();return Math.round(e/$i()*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}},Li=new Ql;pt();Go();Ro();async function Dl(){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 me("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 me("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:Po(),errorSummary:vr.getSummary()}}function Kp(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(`
214
+ `)}Qc();var Nl=class{entries=[];maxEntries=1e4;cacheHits=0;cacheMisses=0;record(e,r,n){this.entries.push({timestamp:Date.now(),latency:e,success:r,cacheHit:n}),n?this.cacheHits++:this.cacheMisses++;let o=Date.now()-3e5;this.entries=this.entries.filter(s=>s.timestamp>o),this.entries.length>this.maxEntries&&(this.entries=this.entries.slice(-this.maxEntries))}getRequestsPerSec(){let e=this.getRecent(6e4);if(e.length<2)return 0;let r=(e[e.length-1].timestamp-e[0].timestamp)/1e3;return r>0?e.length/r:0}getErrorsPerSec(){let e=this.getRecent(6e4).filter(o=>!o.success);if(e.length<1)return 0;let r=this.getRecent(6e4);if(r.length<2)return 0;let n=(r[r.length-1].timestamp-r[0].timestamp)/1e3;return n>0?e.length/n:0}getLatencyPercentile(e){let r=this.getRecent(6e4);if(r.length===0)return 0;let n=[...r].sort((s,i)=>s.latency-i.latency),o=Math.floor(e/100*n.length);return n[Math.min(o,n.length-1)].latency}getCacheHitRate(){let e=this.cacheHits+this.cacheMisses;return e>0?this.cacheHits/e:0}getStats(){return{requestsPerSec:this.getRequestsPerSec(),errorsPerSec:this.getErrorsPerSec(),latencyP50:this.getLatencyPercentile(50),latencyP95:this.getLatencyPercentile(95),latencyP99:this.getLatencyPercentile(99),cacheHitRate:this.getCacheHitRate(),totalRequests:this.entries.length}}getRecent(e){let r=Date.now()-e;return this.entries.filter(n=>n.timestamp>r)}},Wp=new Nl;pt();Ro();function qp(){let t=Wp.getStats(),e=Po(),r=vr.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: ${U1(o).padEnd(12)} RSS: ${Gp(n.rss).padEnd(12)} Heap: ${Gp(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 Requests/sec: ${t.requestsPerSec.toFixed(1).padEnd(8)} Errors/sec: ${t.errorsPerSec.toFixed(2).padEnd(8)} \u2502`,`\u2502 Latency p50: ${t.latencyP50.toFixed(0).padEnd(8)}ms p95: ${t.latencyP95.toFixed(0).padEnd(8)}ms \u2502`,`\u2502 Latency p99: ${t.latencyP99.toFixed(0).padEnd(8)}ms Cache hit: ${(t.cacheHitRate*100).toFixed(0).padEnd(7)}% \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(`
215
+ `)}function U1(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 Gp(t){return t<1024?`${t}B`:t<1024*1024?`${(t/1024).toFixed(0)}KB`:`${(t/(1024*1024)).toFixed(1)}MB`}var Ml=null;function j1(){return Ml?{...Ml,durationSec:Math.floor((Date.now()-Ml.startTime)/1e3)}:null}function Jp(){let t=j1();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(`
216
+ `)}import{Box as K1,Text as Fl}from"ink";import{jsx as G1,jsxs as Ul}from"react/jsx-runtime";var W1="\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588";function Yp({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 A=Math.floor(p*c);l.push(t[A])}let f=l.map(p=>{let A=(p-o)/i,C=Math.min(7,Math.floor(A*8));return W1[Math.max(0,C)]}).join(""),u=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 Ul(K1,{flexDirection:"column",children:[r&&Ul(Fl,{dimColor:!0,children:[r," ",u]}),G1(Fl,{color:n,children:f}),Ul(Fl,{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}};pt();Ke();import{Type as Jo}from"@sinclair/typebox";var FT=Jo.Object({chain:Jo.Optional(Jo.String({description:"Chain: solana, ethereum, bsc, base",default:"solana"})),limit:Jo.Optional(Jo.Number({description:"Max entries",default:10}))}),qn=[],Hp=0,q1=3e5;async function zp(t,e){let r=e.chain||"solana",n=e.limit||10;if(Date.now()-Hp<q1&&qn.length>0){let o=qn.filter(s=>s.chain===r).slice(0,n);return Vp(o,r)}try{let o=`https://api.dexscreener.com/latest/dex/tokens/${r}`,s=await me(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 u=f.pairCreatedAt?new Date(f.pairCreatedAt):null,a=Date.now(),h=u?a-u.getTime():1/0,p=u?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}}),Hp=Date.now();let c=qn.slice(0,n);return Vp(c,r)}catch(o){return X.warn("TokenCalendar","Failed to fetch launches",{chain:r,error:o.message}),{content:[{type:"text",text:"Token launch calendar: Data temporarily unavailable."}]}}}function Vp(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(`
217
+ `)}],details:{launches:t}}}function Xp(){return qn.length===0?"Loading\u2026":qn.slice(0,3).map(e=>e.symbol).join(" \xB7 ")}pt();Go();Ke();import{Type as Zp}from"@sinclair/typebox";var qT=Zp.Object({transaction:Zp.String({description:"Base64-encoded transaction to simulate"})});async function eg(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 me(Lp(),{timeout:15e3,retries:1,method:"POST",headers:{"Content-Type":"application/json"},body:n})).json(),l=s?.result?.value??s?.result;if(!l){let A=s?.error?.message??"Unknown simulation error";return{content:[{type:"text",text:`\u274C Simulation failed: ${A}`}],isError:!0,details:{ok:!1,error:A,logs:[],unitsConsumed:0,fee:0}}}let c=!l.err,f=l.unitsConsumed??0,u=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 u.length>0&&(p.push("Logs:"),u.slice(-8).forEach(A=>p.push(` ${A}`))),h&&p.push(`Error: ${h}`),{content:[{type:"text",text:p.join(`
218
+ `)}],details:{ok:c,error:h,logs:u,unitsConsumed:f,fee:a}}}catch(n){return X.warn("TransactionSim","Simulation failed",{error:n.message}),{content:[{type:"text",text:"\u26A0\uFE0F Transaction simulation unavailable (RPC may be rate-limited)."}],isError:!0}}}ql();Yl();var H1=["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 V1(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 ig(t,e=3){let r=t.toLowerCase().replace(/^\/+/,"");if(!r||r.length<1)return[];let n=H1.map(o=>({cmd:o,dist:V1(r,o)}));return n.sort((o,s)=>o.dist-s.dist),n.slice(0,e).filter(o=>o.dist<=4).map(o=>o.cmd)}zl();au();import{Fragment as Qv,jsx as Re,jsxs as Ce}from"react/jsx-runtime";var uu=null;async function Vo(){if(uu)return uu;let t=await Promise.resolve().then(()=>(vg(),xg));return uu=t,t}var Fi=null;async function ar(){return Fi||(Fi=await Promise.resolve().then(()=>(au(),yg)),Fi)}function Pv(t){if(!t)return{pct:0,bar:"\u2591".repeat(20),color:N.dim};let e=t.getContextPressure(),r=Math.round(e.pct/5),n=e.level==="critical"?N.error:e.level==="red"?N.warn:e.level==="yellow"?N.header:N.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(", ")}]`:`[
219
+ ${t.slice(0,5).map(n=>`${r} ${ji(n,e+1)}`).join(`,
220
+ `)}${t.length>5?`
221
+ ${r} \u2026${t.length-5} more`:""}
222
+ ${r}]`;if(typeof t=="object"){let n=Object.entries(t);return n.length===0?"{}":`{
223
+ ${n.slice(0,8).map(([o,s])=>`${r} ${E.accent(o)}: ${ji(s,e+1)}`).join(`,
224
+ `)}${n.length>8?`
225
+ ${r} \u2026${n.length-8} more`:""}
226
+ ${r}}`}return String(t)}function Ov(t){try{return ji(JSON.parse(t))}catch{return t.length>300?t.slice(0,300)+E.dim(`
227
+ \u2026[truncated]`):t}}var $v=0;function Lv(){return String(++$v)}var Ui=`session-${Date.now()}-${Math.random().toString(36).slice(2,7)}`;function Sg({registry:t,systemPrompt:e,chain:r="solana",modelReg:n,costTracker:o,onNotifyReady:s,onStatusReady:i,onModelSelectorReady:l}){let{exit:c}=kv(),[f,u]=Et([]),[a,h]=Et(""),[p,A]=Et(null),[C,g]=Et(!1),[w]=Et(r),[$,k]=Et(!1),[I,v]=Et(""),[S,B]=Et({status:{},price:"",cost:"",news:""}),[U,D]=Et({news:[],price:null,watchList:[]}),[Q,O]=Et({cold:{sol:0,aiaiai:0,usdc:0},action:{sol:0,aiaiai:0,usdc:0},deposit:{sol:0,aiaiai:0,usdc:0}}),[L,F]=Et({recent:[],fees:{buyFees:0,burnFees:0,total:0}}),[W,V]=Et({cpu:0,ram:0,uptime:"0m",apiCalls:0}),[oe,te]=Et("healthy"),ie=Yn(new Qi(40)),re=Yn(null),J=Yn(null),le=Yn(null),ue=Yn(null),ce=Yn([]),ye=Or(),we="no-model";try{we=li(n).model}catch{}let be=Jn(se=>{u(j=>{let q=[...j,{...se,id:Lv(),ts:Date.now()}];return ce.current=q,q})},[]),T=Jn(se=>{be({role:"notify",content:se})},[be]),He=Jn((se,j)=>{B(q=>({...q,status:{...q.status,[se]:j}}))},[]),Pe={notify:T,setStatus:He,setTheme(){},setHeader(){},showModelSelector:se=>{v(se??""),k(!0)},theme:ye};function tt(){if(!n)return;let se=n;t.addTool({name:"list_models",label:"List Models",description:"Search and filter available AI models.",parameters:se.listModelsParams,execute:(j,q)=>se.listModelsTool(j,q)}),t.addTool({name:"pick_model",label:"Pick Model",description:"Find a model in a given tier.",parameters:se.pickModelParams,execute:(j,q)=>se.pickModelTool(j,q)}),t.addTool({name:"model_summary",label:"Model Summary",description:"Summary of available model tiers.",parameters:se.summaryParams,execute:()=>se.summaryTool()}),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:Ue.getAiaiaiPriceParams,execute:()=>Ue.getAiaiaiPriceTool()}),t.addTool({name:"get_token_price",label:"Token Price",description:"Get any Solana token price.",parameters:Ue.getTokenPriceParams,execute:(j,q)=>Ue.getTokenPriceTool(j,q)}),t.addTool({name:"get_news",label:"Get News",description:"Crypto news with sentiment.",parameters:Ap,execute:(j,q)=>ul(j,q)}),t.addTool({name:"get_candles",label:"Get Candles",description:"OHLCV from Binance + TA.",parameters:bp,execute:(j,q)=>xp(j,q)}),t.addTool({name:"analyze_ta",label:"Technical Analysis",description:"RSI, MACD, Bollinger, ATR.",parameters:Ep,execute:async(j,q)=>{let G=q.prices.map((R,H)=>({timestamp:0,open:R,high:q.highs?.[H]??R,low:q.lows?.[H]??R,close:R,volume:q.volumes?.[H]??0})),nt=await fl(G),de=nt.find(R=>R.indicator==="SUMMARY");return{content:[{type:"text",text:`Technical Analysis:
228
+ ${nt.map(R=>{let H=R.signal==="bullish"?"\u{1F7E2}":R.signal==="bearish"?"\u{1F534}":"\u26AA",P=Array.isArray(R.value)?`[${R.value.length}]`:R.value;return`${H} ${R.indicator}: ${P}`}).join(`
229
+ `)}`}],details:{results:nt,overall_signal:de?.signal}}}}),t.addTool({name:"get_fear_greed",label:"Fear & Greed",description:"Crypto Fear & Greed Index.",parameters:{},execute:async()=>(await Vo()).getFearGreedTool()}),t.addTool({name:"get_funding_rates",label:"Funding Rates",description:"Binance funding rates.",parameters:{},execute:async(j,q)=>(await Vo()).getFundingRatesTool(j,q)}),t.addTool({name:"get_btc_mempool",label:"BTC Mempool",description:"BTC mempool stats.",parameters:{},execute:async()=>(await Vo()).getBtcMempoolTool()}),t.addTool({name:"get_defi_tvl",label:"DeFi TVL",description:"DeFiLlama TVL.",parameters:{},execute:async(j,q)=>(await Vo()).getDefiTvlTool(j,q)}),t.addTool({name:"get_solana_stats",label:"Solana Stats",description:"Solana epoch, slot, SOL price.",parameters:{},execute:async()=>(await Vo()).getSolanaStatsTool()}),t.addTool({name:"get_agent_balance",label:"Agent Balance",description:"Cold + action wallet balances.",parameters:Ze.getAgentBalanceParams,execute:()=>Ze.getAgentBalanceTool()}),t.addTool({name:"get_deposit_balance",label:"Deposit Balance",description:"Deposit wallet + instructions.",parameters:Ze.getDepositBalanceParams,execute:()=>Ze.getDepositBalanceTool()}),t.addTool({name:"get_actions",label:"Agent Actions",description:"Recent buy/burn actions.",parameters:et.getActionsParams,execute:(j,q)=>et.getActionsTool(j,q)}),t.addTool({name:"get_fees",label:"Agent Fees",description:"Accumulated fees.",parameters:et.getFeesParams,execute:()=>et.getFeesTool()}),t.addTool({name:"read_task_context",label:"Read Task Context",description:"Read saved task context.",parameters:kg.Object({taskId:kg.String({description:"Task ID"})}),execute:(j,q)=>Si.readContextTool(j,q)}),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:gt.setGoalParams,execute:(j,q)=>gt.setGoalTool(j,q)}),t.addTool({name:"complete_goal",label:"Complete Goal",description:"Mark a goal complete.",parameters:gt.completeGoalParams,execute:(j,q)=>gt.completeGoalTool(j,q)}),t.addTool({name:"list_goals",label:"List Goals",description:"List goals.",parameters:gt.listGoalsParams,execute:(j,q)=>gt.listGoalsTool(j,q)}),t.addTool({name:"add_goal_note",label:"Add Goal Note",description:"Add a note to a goal.",parameters:gt.addGoalNoteParams,execute:(j,q)=>gt.addGoalNoteTool(j,q)}),t.addTool({name:"schedule_task",label:"Schedule Task",description:"Schedule a recurring task.",parameters:qt.addTaskParams,execute:(j,q)=>qt.addTaskTool(j,q)}),t.addTool({name:"list_schedule",label:"List Schedule",description:"List scheduled tasks.",parameters:qt.listTasksParams,execute:(j,q)=>qt.listTasksTool(j,q)}),t.addTool({name:"remove_schedule",label:"Remove Schedule",description:"Remove a scheduled task.",parameters:qt.removeTaskParams,execute:(j,q)=>qt.removeTaskTool(j,q)}),t.addTool({name:"gmgn",label:"GMGN Token Research",description:"Full GMGN access: token info, security, holders, traders, tracking, market data.",parameters:Fp,execute:(j,q)=>Rt(j,q)}),t.addTool({name:"gmgn_market",label:"GMGN Market Data",description:"Market data: trending, trenches, kline, signals.",parameters:Up,execute:(j,q)=>$l(j,q)}),t.addTool({name:"watch_token",label:"Watch Token",description:"Add token to watch list.",parameters:{},execute:async(j,q)=>(await ar()).watchTokenTool(j,q)}),t.addTool({name:"unwatch_token",label:"Unwatch Token",description:"Remove token from watch list.",parameters:{},execute:async(j,q)=>(await ar()).removeWatchTool(j,q)}),t.addTool({name:"watch_list",label:"Watch List",description:"Show watched tokens.",parameters:{},execute:async()=>(await ar()).listWatchTool()}),t.addTool({name:"add_alert",label:"Price Alert",description:"Set a price alert.",parameters:{},execute:async(j,q)=>(await ar()).addAlertTool(j,q)}),t.addTool({name:"check_alerts",label:"Check Alerts",description:"List active alerts.",parameters:{},execute:async()=>(await ar()).checkAlertsTool()}),t.addTool({name:"compare_tokens",label:"Compare Tokens",description:"Side-by-side token comparison.",parameters:{},execute:async(j,q)=>(await ar()).compareTokensTool(j,q)}),t.addTool({name:"portfolio",label:"Portfolio",description:"Wallet portfolio analysis.",parameters:{},execute:async(j,q)=>(await ar()).portfolioTool(j,q)})}vv(()=>{tt(),(async()=>{(async(P=3,d=2e3)=>{for(let m=0;m<P;m++)try{let y=await Ue.getAiaiaiPrice();D(b=>({...b,price:{priceUsd:y.priceUsd,change:y.priceChange24h,mcap:y.marketCap,liq:y.liquidityUsd}})),y.priceUsd&&B(b=>({...b,price:`$${parseFloat(y.priceUsd).toFixed(6)}`})),et.setPrice(parseFloat(y.priceUsd||"0.0004"));return}catch(y){if(m===P-1)throw y;await new Promise(b=>setTimeout(b,d*(m+1)))}})().catch(()=>{console.error("Initial price fetch failed after retries")}),Ze.getAll().then(P=>{O({cold:{sol:P.cold.sol,aiaiai:P.cold.aiaiai,usdc:P.cold.usdc},action:{sol:P.action.sol,aiaiai:P.action.aiaiai,usdc:P.action.usdc},deposit:{sol:P.deposit.sol,aiaiai:P.deposit.aiaiai,usdc:P.deposit.usdc}})}).catch(()=>{}),et.refresh().then(()=>{F({recent:et.getRecentActions(8).map(P=>({type:P.type,amount:P.amount,usdValue:P.usdValue,timestamp:P.timestamp})),fees:et.getFees()})}).catch(()=>{}),jn.getLatest().then(P=>{D(d=>({...d,news:P.items.slice(0,6).map(m=>({title:m.title,sentiment:m.sentiment??0,source:m.source}))})),B(d=>({...d,news:jn.statusBadge()}))}).catch(()=>{}),ar().then(({getWatchList:P})=>{D(d=>({...d,watchList:P()}))}),qt.start(P=>{be({role:"system",content:E.muted(`\u23F0 Scheduled: "${P.name}"`)}),!C&&re.current&&(g(!0),h(""),re.current.run(`[SCHEDULED TASK: ${P.name}] ${P.prompt}`).catch(d=>T(E.error(`Scheduler error: ${d.message}`))))});let j=setInterval(()=>{Ue.getAiaiaiPrice().then(P=>{D(d=>({...d,price:{priceUsd:P.priceUsd,change:P.priceChange24h,mcap:P.marketCap,liq:P.liquidityUsd}})),P.priceUsd&&(B(d=>({...d,price:`$${parseFloat(P.priceUsd).toFixed(6)}`})),ie.current.push(parseFloat(P.priceUsd))),et.setPrice(parseFloat(P.priceUsd||"0.0004")),Li.trackApiCall(),P.priceUsd&&ar().then(({checkAlerts:d})=>{let m=d(parseFloat(P.priceUsd),"AIAIAI");for(let y of m)T(`\u{1F514} Alert triggered: ${y.type} $${y.price} \u2014 $AIAIAI is now $${P.priceUsd}`),Hl(`\u{1F514} **Alert**: ${y.type} $${y.price} \u2014 $AIAIAI now $${P.priceUsd}`).catch(()=>{})})}).catch(()=>{}),o&&B(P=>({...P,cost:o.statusLine()}))},3e4),q=setInterval(()=>{Ze.getAll().then(P=>{O({cold:{sol:P.cold.sol,aiaiai:P.cold.aiaiai,usdc:P.cold.usdc},action:{sol:P.action.sol,aiaiai:P.action.aiaiai,usdc:P.action.usdc},deposit:{sol:P.deposit.sol,aiaiai:P.deposit.aiaiai,usdc:P.deposit.usdc}})}).catch(()=>{}),et.refresh().then(()=>{F({recent:et.getRecentActions(8).map(P=>({type:P.type,amount:P.amount,usdValue:P.usdValue,timestamp:P.timestamp})),fees:et.getFees()})}).catch(()=>{})},6e4),ke=setInterval(()=>{jn.getLatest().then(P=>{D(d=>({...d,news:P.items.slice(0,6).map(m=>({title:m.title,sentiment:m.sentiment??0,source:m.source}))})),B(d=>({...d,news:jn.statusBadge()}))}).catch(()=>{})},3e5),G=setInterval(()=>{let P=Li.getStats();V({cpu:P.cpuPercent,ram:P.ramPercent,uptime:P.uptime,apiCalls:Li.resetApiCounter()})},1e4),nt=setInterval(async()=>{try{let P=await Dl();te(P.overall)}catch{}},6e4);Ye.startAutoSave(()=>ce.current),Ye.setCurrentId(Ui);let de=setInterval(()=>{ce.current.length>0&&Ye.save(ce.current)},3e4),dt=new Pn;dt.setSystemPrompt(t.getSystemPrompt()||e||"You are AIAIAI Chain Agent."),le.current=dt;let R={ui:Pe,hasUI:!0,config:{OPENROUTER_API_KEY:process.env.OPENROUTER_API_KEY,DEFAULT_MODEL:process.env.DEFAULT_MODEL}};ue.current=R,t.fireHook("session_start",R).then(()=>{if(Wn.isAvailable){let d=Wn.buildContextBlock(Ui);d&&dt.setSystemPrompt((dt.getSystemPrompt()||"")+d)}let P=gt.buildContextBlock();P&&dt.setSystemPrompt((dt.getSystemPrompt()||"")+P),be({role:"system",content:E.muted("Session started. Type /help for commands.")})});let H=new Rn(t,dt,P=>{if(P.type==="text_delta")h(d=>d+P.text);else if(P.type==="tool_start")A(P.name);else if(P.type==="tool_done")A(null),be({role:"tool",content:Ov(P.result),toolName:P.name,isError:P.isError});else if(P.type==="turn_done")g(!1),A(null),h(d=>(d.trim()&&(be({role:"assistant",content:d}),Wn.save(Ui,"assistant",d)),""));else if(P.type==="error")g(!1),A(null),h(""),T(E.error(`Error: ${P.message}`));else if(P.type==="approval_request"){A(null);let{toolName:d,args:m,approve:y}=P,b="";try{b=JSON.stringify(JSON.parse(m),null,2).slice(0,200)}catch{b=m.slice(0,200)}be({role:"notify",content:`\u26A0\uFE0F APPROVAL REQUIRED
230
+
231
+ Tool: ${d}
232
+ Args: ${b}
233
+
234
+ Type /approve or /deny to continue.`}),J.current=y}},R,"normal",n,o,gt,Si);return re.current=H,o&&B(P=>({...P,cost:o.statusLine()})),()=>{ue.current&&t.fireHook("session_end",ue.current).catch(()=>{}),qt.stop(),Ye.stopAutoSave(),f.length>0&&Ye.save(f),clearInterval(j),clearInterval(q),clearInterval(ke),clearInterval(G),clearInterval(de),clearInterval(nt),o?.saveLifetime()}})()},[]),Sv((se,j)=>{j.ctrl&&se==="c"&&(be({role:"system",content:E.muted("Goodbye \u{1F916}")}),f.length>0&&Ye.save(f),o?.saveLifetime(),setTimeout(c,200))});let ut=Jn(async se=>{let j=se.trim();if(!j)return;if(j.length>4096){T(E.error("Input too long (max 4KB). Try a shorter message."));return}let q=j.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g,"");q!==j&&(T(E.warn("\u26A0\uFE0F Control characters removed from input.")),j=q);let ke=[/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 ke)if(G.test(j)){T(E.error("\u26A0\uFE0F Blocked: Input contains suspicious patterns."));return}if(j.startsWith("/")){let[G,...nt]=j.slice(1).split(" "),de=nt.join(" ");if(G==="exit"||G==="quit"){f.length>0&&Ye.save(f),o?.saveLifetime(),be({role:"system",content:E.muted("Goodbye \u{1F916}")}),setTimeout(c,200);return}if(G==="help"){T(`Commands:
235
+ /token info|security|holders|traders
236
+ /track kol|smartmoney|follow-wallet
237
+ /market kline|trending|trenches|signal
238
+ /watch /unwatch /watchlist /alerts /alert /compare /portfolio
239
+ /keys /wallet /deposit /burn /actions /fees
240
+ /models /cost /goals /schedule /update /diff
241
+ /sessions /resume /memory /clear /exit
242
+ /launches /theme /copy /simulate /explain /webhook /clipboard
243
+
244
+ Tab to auto-complete, \u2191\u2193 for history, Shift+Enter for multi-line`);return}if(G==="token"){let R=de.split(" "),H=R[0];if(!H||H==="help"){T(`Token commands:
245
+ /token info --chain <sol|bsc|base|eth> --address <addr>
246
+ /token security --chain <chain> --address <addr>
247
+ /token holders --chain <chain> --address <addr>
248
+ /token traders --chain <chain> --address <addr>`);return}let P=R[R.indexOf("--chain")+1]||"sol",d=R[R.indexOf("--address")+1];if(!d&&H!=="help"){T(E.error("--address is required"));return}let m=await Rt("",{subcommand:H,chain:P,address:d});T(m.content[0].text);return}if(G==="track"){let R=de.split(" "),H=R[0];if(!H||H==="help"){T(`Track commands:
249
+ /track kol --chain <sol|bsc|base|eth>
250
+ /track smartmoney --chain <chain>
251
+ /track follow-wallet --chain <chain>`);return}let P=R[R.indexOf("--chain")+1]||"sol",d=await Rt("",{subcommand:`track ${H}`,chain:P,limit:10});T(d.content[0].text);return}if(G==="market"){let R=de.split(" "),H=R[0];if(!H||H==="help"){T(`Market commands:
252
+ /market kline --chain <chain> --address <addr> --resolution <1h|4h|1d>
253
+ /market trending --chain <chain> --interval <1h|6h|24h>
254
+ /market trenches --chain <chain> --type <new_creation|near_completion|completed>
255
+ /market signal --chain <sol|bsc>`);return}let P=R[R.indexOf("--chain")+1]||"sol",d=R[R.indexOf("--address")+1],m=R[R.indexOf("--resolution")+1],y=R[R.indexOf("--interval")+1],b=R[R.indexOf("--type")+1],M={subcommand:`market ${H}`,chain:P};d&&(M.address=d),m&&(M.resolution=m),y&&(M.interval=y),b&&(M.type=b);let ee=await Rt("",M);T(ee.content[0].text);return}if(G==="watch"){let R=await eu("",{address:de||"AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump"});D(H=>({...H,watchList:Ho()})),T(R.content[0].text);return}if(G==="unwatch"){let R=await tu("",{address:de});D(H=>({...H,watchList:Ho()})),T(R.content[0].text);return}if(G==="watchlist"){let R=await ru();T(R.content[0].text);return}if(G==="alerts"){let R=await ou();T(R.content[0].text);return}if(G==="alert"){let R=de.split(" "),H=R[0],P=parseFloat(R[1]);if(!H||isNaN(P)){T(E.error("Usage: /alert above|below <price>"));return}let d=await nu("",{token:"AIAIAI",type:H,price:P});T(d.content[0].text);return}if(G==="compare"){let R=de.split(" ");if(R.length<2){T(E.error("Usage: /compare <address1> <address2>"));return}let H=await su("",{address1:R[0],address2:R[1]});T(H.content[0].text);return}if(G==="portfolio"){let H=await iu("",{address:de||"A11iZoqEt6hU7HyggqC67ee4AtYmaJjwKCvJLerJRV2J"});T(H.content[0].text);return}if(G==="sessions"){let R=Ye.list();if(R.length===0){T("No saved sessions.");return}let H=R.slice(0,10).map((P,d)=>` ${d+1}. ${P.title} (${P.messageCount} msgs, ${new Date(P.updatedAt).toLocaleDateString()})`);T(`Recent Sessions:
256
+ ${H.join(`
257
+ `)}
258
+
259
+ Use /resume <number> to resume.`);return}if(G==="resume"){let R=Ye.list(),H=parseInt(de)-1;if(isNaN(H)||H<0||H>=R.length){T(E.error("Invalid session number."));return}let P=Ye.load(R[H].id);if(!P){T(E.error("Session not found."));return}u(P.messages),Ye.setCurrentId(P.id),T(`Resumed: ${P.title} (${P.messages.length} messages)`);return}if(G==="price"){let R=await Ue.getAiaiaiPriceTool();T(R.content[0].text);return}if(G==="news"){let R=await ul("",{limit:15});T(R.content[0].text);return}if(G==="models"){if(!n){T(E.error("Model registry not available"));return}let R=await n.listModelsTool("",{query:nt.join(" ")||void 0,limit:20});T(R.content[0].text);return}if(G==="cost"){if(!o){T(E.error("Cost tracker not available"));return}let R=await o.costReportTool();T(R.content[0].text);return}if(G==="model"){v(de),k(!0);return}if(G==="clear"){u([]);return}if(G==="wallet"){let R=await Ze.getAgentBalanceTool();T(R.content[0].text);return}if(G==="deposit"){let R=await Ze.getDepositBalanceTool();T(R.content[0].text);return}if(G==="burn"){T(["\u{1F525} Burn $AIAIAI","",`Deposit: ${sr}`,"Send SOL or USDC here.","",`Action: ${at}`,`Signer: ${_l}`].join(`
260
+ `));return}if(G==="actions"||G==="activity"){let R=await et.getActionsTool("",{limit:15});T(R.content[0].text);return}if(G==="fees"){let R=await et.getFeesTool();T(R.content[0].text);return}if(G==="keys"||G==="providers"){T(`Switch to CLI for key management:
261
+ aiaiai keys`);return}if(G==="goals"||G==="goal"){let R=de.trim().split(" ")[0];if(R==="add"){let H=de.trim().slice(4).trim();if(!H){T(E.error("Usage: /goal add <text>"));return}let P=await gt.setGoalTool("",{text:H});T(P.content[0].text)}else if(R==="done"||R==="complete"){let H=de.trim().split(" ")[1];if(!H){T(E.error("Usage: /goal done <id>"));return}let P=await gt.completeGoalTool("",{id:H});T(P.content[0].text)}else{let H=await gt.listGoalsTool("",{status:"all"});T(H.content[0].text)}return}if(G==="schedule"||G==="sched"){let R=await qt.listTasksTool("",{enabled_only:!1});T(R.content[0].text);return}if(G==="update"||G==="upgrade"){T(`Switch to CLI:
262
+ aiaiai update`);return}if(G==="memory"&&de.trim()){let R=Wn.search(de.trim(),8);if(R.length===0){T(E.muted("No memories found."));return}let H=R.map(P=>`[${new Date(P.ts).toLocaleDateString()} ${P.role}] ${P.content.slice(0,120)}`);T(`Memory: "${de.trim()}"
263
+ ${H.join(`
264
+ `)}`);return}if(G==="gmgn"||G==="gmgnhelp"){let R=nt.join(" ");if(!R||R==="help"){T(Pi());return}if(R==="status"){T(Oi());return}if(R.startsWith("setup")){T("Run in CLI: aiaiai gmgn setup");return}let H=await Rt("",{subcommand:R.split(" ")[0],chain:"sol"});T(H.content[0].text);return}if(G==="gmgnmarket"||G==="market"){let R=await $l("",{query:de||"trending",chain:"sol"});T(R.content[0].text);return}if(G==="launches"||G==="calendar"){let R=await zp("",{chain:de||"solana",limit:15});T(R.content[0].text);return}if(G==="diff"||G==="compared"){let R=Ye.list();if(R.length<2){T("Need at least 2 saved sessions to compare. Start a new session with /exit and restart.");return}let H=R[0],P=R[1];if(!H||!P){T("Could not load sessions for comparison.");return}let d=["\u{1F4CA} Session Diff",`Current: ${H.title} (${H.messageCount} msgs)`,`Previous: ${P.title} (${P.messageCount} msgs)`,`Difference: ${H.messageCount-P.messageCount} messages`,`Last active: ${new Date(H.updatedAt).toLocaleString()}`];T(d.join(`
265
+ `));return}if(G==="copy"&&de.trim()){let R=Jl(de.trim());T(R?E.success(`\u2713 Copied to clipboard: ${de.slice(0,30)}\u2026`):E.error("Clipboard not supported in this terminal. Try: "+Ni()));return}if(G==="theme"){if(!de||de==="list"){let R=Wl();T(`\u{1F3A8} Themes
266
+ ${Gl()}
267
+
268
+ Apply: /theme <name>`)}else Kl(de)?T(E.success(`\u2713 Theme set to "${de}". Restart to apply.`)):T(E.error(`Unknown theme "${de}". Try: /theme list`));return}if(G==="simulate"||G==="sim"){if(!de.trim()){T(E.error("Usage: /simulate <base64-tx>"));return}let R=await eg("",{transaction:de.trim()});T(R.content[0].text);return}if(G==="explain"){if(!n){T(E.error("Model registry not available"));return}let R=[...f].reverse().find(H=>H.role==="tool");if(!R){T("No tool result to explain. Run a tool first.");return}be({role:"user",content:`Explain this tool result in simple terms:
269
+ ${R.content.slice(0,2e3)}`}),g(!0),h("");try{await re.current.run(`Explain this tool result simply:
270
+ ${R.content.slice(0,2e3)}`)}catch(H){g(!1),T(E.error(`Error: ${H.message}`))}return}if(G==="webhook"||G==="webhooks"){Vl()?T(`\u2705 Webhooks configured
271
+
272
+ Usage: /webhook test
273
+ Config: WEBHOOK_DISCORD / WEBHOOK_TELEGRAM in ~/.aiaiai/.env`):T(`No webhooks configured.
274
+ Add WEBHOOK_DISCORD=... or WEBHOOK_TELEGRAM=... to ~/.aiaiai/.env`);return}if(G==="clipboard"){T(Ni());return}if(G==="resume"){th(),T(E.success("\u2713 Resumed from panic mode. External calls re-enabled."));return}if(G==="panic"||G==="status"){let R=ci(),H=rh();T(`System Status
275
+ Panic mode: ${R?"\u{1F534} ACTIVE":"\u{1F7E2} normal"}
276
+ Errors (60s): ${H}/10
277
+ ${R?`
278
+ Type /resume to resume external calls.`:""}`);return}if(G==="health"){T("Running health checks..."),Dl().then(R=>{T(Kp(R))}).catch(()=>{});return}if(G==="dashboard"||G==="metrics"){T(qp());return}if(G==="analytics"||G==="stats"){T(Jp());return}let dt=t.getCommand(G);if(!dt){let R=ig(G),H=R.length>0?`
279
+ Did you mean: ${R.map(P=>`/${P}`).join(", ")}?`:"";T(E.error(`Unknown: /${G} \u2014 try /help${H}`));return}try{await dt.handler(de,{ui:Pe})}catch(R){T(E.error(`Error: ${R.message}`))}return}if(!re.current){T(E.error("Agent not ready"));return}be({role:"user",content:j}),Wn.save(Ui,"user",j),g(!0),h("");try{await re.current.run(j)}catch(G){g(!1),T(E.error(`Error: ${G.message}`))}},[t,c,be,T,Pe,n,o]),qe=Jn(se=>{k(!1);try{let j=process.env.AIAIAI_HOME??Cg(Rv(),".aiaiai"),q=Cg(j,".env");Bv(j,{recursive:!0});let ke=_v(q)?Tv(q,"utf-8"):"",G=/^DEFAULT_MODEL=.*$/m,nt=`DEFAULT_MODEL=${se}`;Iv(q,G.test(ke)?ke.replace(G,nt):ke+`
280
+ `+nt+`
281
+ `,"utf-8"),process.env.DEFAULT_MODEL=se}catch{}T(E.accent(`Model set to: ${se}
282
+ Restart to apply.`))},[T]),Ft=Jn(()=>{k(!1)},[]),Ot=Cv(()=>{if(!n)return[];let se=["orchestrator","analyst","worker","free"],j=[];for(let q of se){let ke=n.getPool(q);for(let G of ke)G.available&&G.failures<3&&j.push({id:G.model.id,tier:q})}return j},[n]),lr=Pv(le.current),ln=[S.cost,S.news,...Object.values(S.status)].filter(Boolean).join(" ")||null,rt=44,ur=38,Jt=se=>se>0?N.success:se<0?N.error:N.muted,ts=se=>se==="buy"?"\u2197":se==="burn"?"\u{1F525}":"\u2192";return Ce(lt,{flexDirection:"column",children:[Re(Om,{model:we,chain:w,price:S.price,toolRunning:p,connected:!0,statusLine:ln,cpu:W.cpu,ram:W.ram,uptime:W.uptime,apiCalls:W.apiCalls}),oe==="down"&&Re(lt,{borderStyle:"round",borderColor:N.error,paddingX:1,children:Re(Ae,{color:N.error,bold:!0,children:"\u26A0\uFE0F Limited functionality \u2014 multiple services unavailable. Check /health"})}),oe==="degraded"&&Re(lt,{borderStyle:"round",borderColor:N.warn,paddingX:1,children:Re(Ae,{color:N.warn,children:"\u{1F7E1} Some services experiencing issues"})}),$?Re(Vm,{models:Ot,currentModelId:process.env.DEFAULT_MODEL??"",onSelect:qe,onCancel:Ft,initialQuery:I}):Ce(lt,{flexDirection:"row",flexGrow:1,overflow:"hidden",children:[Ce(lt,{flexDirection:"column",width:40,flexShrink:0,children:[Ce(lt,{flexDirection:"column",borderStyle:"round",borderColor:N.accent,paddingX:1,children:[Re(Ae,{bold:!0,color:N.accent,children:"\u{1F916} $AIAIAI"}),U.price?Ce(Qv,{children:[Ce(Ae,{color:Jt(U.price.change),children:[U.price.priceUsd?`$${parseFloat(U.price.priceUsd).toFixed(8)}`:"N/A"," ",U.price.change>0?"\u25B2":U.price.change<0?"\u25BC":"\u2500",Math.abs(U.price.change).toFixed(1),"%"]}),Re(Yp,{data:ie.current.getData(),width:38,color:Jt(U.price.change),label:""}),Ce(Ae,{color:N.muted,children:["MCap: ",U.price.mcap?`$${(U.price.mcap/1e3).toFixed(1)}k`:"N/A"]}),Ce(Ae,{color:N.muted,children:["Liq: $",(U.price.liq/1e3).toFixed(1),"k"]})]}):Re(Ae,{color:N.muted,children:"Loading..."})]}),Ce(lt,{flexDirection:"column",borderStyle:"round",borderColor:N.dim,paddingX:1,marginTop:1,children:[Re(Ae,{bold:!0,children:"\u{1F4BC} Action"}),Ce(Ae,{color:N.muted,children:["SOL: ",Q.action.sol.toFixed(2)]}),Ce(Ae,{color:N.muted,children:["AIAIAI: ",Q.action.aiaiai.toLocaleString(void 0,{maximumFractionDigits:0})]})]}),Ce(lt,{flexDirection:"column",borderStyle:"round",borderColor:N.dim,paddingX:1,marginTop:1,children:[Re(Ae,{bold:!0,children:"\u{1F4B0} Deposit"}),Ce(Ae,{color:N.muted,children:["USDC: ",Q.deposit.usdc.toFixed(2)]}),Ce(Ae,{color:N.muted,children:["SOL: ",Q.deposit.sol.toFixed(2)]})]}),Ce(lt,{flexDirection:"column",borderStyle:"round",borderColor:N.dim,paddingX:1,marginTop:1,children:[Re(Ae,{bold:!0,children:"\u26A1 Actions"}),L.recent.length>0?L.recent.map((se,j)=>{let q=se.type==="buy"?N.success:se.type==="burn"?N.error:N.muted,ke=new Date(se.timestamp).toLocaleTimeString([],{hour:"2-digit",minute:"2-digit"});return Ce(Ae,{color:q,children:[ts(se.type)," ",ke," ",se.type," ",se.amount.toLocaleString()]},j)}):Re(Ae,{color:N.muted,children:"Waiting..."})]}),Ce(lt,{flexDirection:"column",borderStyle:"round",borderColor:N.dim,paddingX:1,marginTop:1,children:[Re(Ae,{bold:!0,children:"\u{1F4B5} Fees (0.5%)"}),Ce(Ae,{color:N.muted,children:["Buy: $",L.fees.buyFees.toFixed(4)]}),Ce(Ae,{color:N.accent,bold:!0,children:["Total: $",L.fees.total.toFixed(4)]})]}),Ce(lt,{flexDirection:"column",borderStyle:"round",borderColor:N.dim,paddingX:1,marginTop:1,children:[Re(Ae,{bold:!0,children:"\u{1F441}\uFE0F Watch"}),U.watchList.length>0?U.watchList.slice(0,4).map((se,j)=>Ce(Ae,{color:N.muted,children:[se.slice(0,8),"\u2026",se.slice(-6)]},j)):Re(Ae,{color:N.muted,children:"No tokens watched"})]}),Ce(lt,{flexDirection:"column",borderStyle:"round",borderColor:N.dim,paddingX:1,marginTop:1,children:[Re(Ae,{bold:!0,children:"\u{1F4F0} News"}),U.news.length>0?U.news.slice(0,4).map((se,j)=>{let q=se.sentiment>.3?N.success:se.sentiment<-.3?N.error:N.muted,ke=se.title.length>30?se.title.slice(0,28)+"...":se.title;return Re(Ae,{color:q,children:ke},j)}):Re(Ae,{color:N.muted,children:"Loading..."})]}),Ce(lt,{flexDirection:"column",borderStyle:"round",borderColor:N.dim,paddingX:1,marginTop:1,children:[Re(Ae,{bold:!0,children:"Context"}),Ce(Ae,{color:lr.color,children:[lr.bar," ",lr.pct,"%"]})]}),Ce(lt,{flexDirection:"column",borderStyle:"round",borderColor:N.dim,paddingX:1,marginTop:1,children:[Re(Ae,{bold:!0,children:"\u{1F680} Recent"}),Re(Ae,{color:N.muted,children:Xp()})]})]}),Re(lt,{flexDirection:"column",flexGrow:1,children:Re(Qm,{messages:f,streamingText:a,toolRunning:p,onSubmit:ut,disabled:C,onAbort:()=>{re.current?.abort(),g(!1),A(null),h(se=>(se.trim()&&be({role:"assistant",content:se+" \u2014 [interrupted]"}),"")),be({role:"system",content:E.dim("\u2014 stream interrupted \u2014")})}})})]})]})}import{Component as Dv}from"react";import{Box as du,Text as Ki}from"ink";import{jsx as Hn,jsxs as Nv}from"react/jsx-runtime";var Wi=class extends Dv{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}=ae("node:fs"),{join:i}=ae("node:path"),{homedir:l}=ae("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?Hn(du,{flexDirection:"column",padding:2,children:Hn(du,{borderStyle:"round",borderColor:"yellow",paddingX:2,paddingY:1,children:Nv(du,{flexDirection:"column",children:[Hn(Ki,{bold:!0,color:"yellow",children:"\u26A0\uFE0F UI Error \u2014 restarting..."}),Hn(Ki,{dimColor:!0,children:this.state.error?.message?.slice(0,100)??"Unknown render error"}),Hn(Ki,{dimColor:!0,children:"Crash dump written to ~/.aiaiai/crashes/"}),Hn(Ki,{dimColor:!0,children:"Press Ctrl+C to exit, or wait for auto-recovery."})]})})}):this.props.children}};import{existsSync as Mv,appendFileSync as Fv,mkdirSync as Uv}from"node:fs";import{join as mu}from"node:path";import{homedir as jv}from"node:os";var Kv=process.env.AIAIAI_HOME??mu(jv(),".aiaiai"),fu=mu(Kv,".logs"),Wv=mu(fu,"agent.log"),Gv=[/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 _g="[REDACTED]";function qv(t){let e=t;for(let r of Gv)e=e.replace(r,n=>n.length>8?n.slice(0,4)+"\u2026"+_g:_g);return e}function Jv(){Mv(fu)||Uv(fu,{recursive:!0,mode:448})}function Yv(t){try{Jv(),Fv(Wv,t+`
283
+ `,{encoding:"utf-8"})}catch{}}function Gi(...t){let e=t.map(s=>typeof s=="string"?s:String(s)).join(" "),r=qv(e),o=`[${new Date().toISOString()}] ${r}`;try{Yv(o)}catch{}process.stdout.write(o+`
284
+ `)}Ke();Ke();pt();import{Type as cr}from"@sinclair/typebox";var Hv=[{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})}],Vv="https://openrouter.ai/api/v1/models";function hu(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 pu=class{models=[];tiered=new Map;providerModels=new Map;initialized=!1;async initialise(){if(this.initialized)return;this.models=[],this.providerModels.clear();let e=Hv.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 me(i,{timeout:5e3,retries:0,headers:s,signal:l.signal});if(clearTimeout(c),!f.ok)return X.warn("ModelRegistry",`Provider ${n.id} returned ${f.status}`),[];let u=await f.json(),a=u.data??u.models??u;if(!Array.isArray(a))return[];let h=[];for(let p of a)try{let A=n.mapper(p);if(!A||!A.id)continue;h.push({id:A.id,name:A.name??A.id,provider:n.id,context_length:A.context??131072,max_tokens:A.max??4096})}catch(A){X.debug("ModelRegistry","Skipped bad model entry",{error:A.message})}return h}catch(f){return clearTimeout(c),X.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 me(Vv,{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=hu(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?hu(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 u=hu(f);return`${{orchestrator:"\u2B50",analyst:"\u{1F52C}",worker:"\u26A1",free:"\u{1F193}"}[u]??"\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):
285
+ ${c.join(`
286
+ `)}`}]}}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(`
287
+ `)}]}}},At=new pu;import{existsSync as zv,readFileSync as Xv,writeFileSync as Zv}from"node:fs";import{resolve as eC}from"node:path";import{Type as tC}from"@sinclair/typebox";var gu=eC(Xe.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*Tg.prompt+n*Tg.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{zv(gu)&&(this.lifetime=JSON.parse(Xv(gu,"utf-8")))}catch{}this.loaded=!0}writeLifetime(){try{Zv(gu,JSON.stringify(this.lifetime,null,2),"utf-8")}catch{}}costReportParams=tC.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(`
288
+ `)}]}}},Tg={prompt:1e-6,completion:2e-6};Un();qo();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 Ig(t){return Ji.filter(e=>e.envVar&&t[e.envVar]&&t[e.envVar].trim()!=="")}function Bg(t){return Ji.filter(e=>!e.envVar||!t[e.envVar]||t[e.envVar].trim()==="")}pt();Ke();import{Type as Rg}from"@sinclair/typebox";var xB=Rg.Object({address:Rg.String({description:"Token mint address on Solana"})});async function Pg(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 me(`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){X.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 me(`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){X.warn("TokenSecurity","RugCheck lookup failed (optional)",{address:r,error:h.message})}let c=l?.baseToken?.symbol??"???",f=l?.baseToken?.name??"Unknown",u=o>=70?"SAFE":o>=40?"CAUTION":"DANGEROUS",a=["Token Security Scan","",`Token: ${f} ($${c})`,`Address: ${r.slice(0,8)}...${r.slice(-6)}`,`Score: ${u} (${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(`
289
+ `)}],details:{address:r,symbol:c,name:f,score:o,isHoneypot:s,isRugRisk:i,warnings:n}}}var Xn=process.env.AIAIAI_HOME??Ir(zg(),".aiaiai"),cn=Ir(Xn,".env");es(cn)&&(0,Zg.config)({path:cn,override:!1});process.on("uncaughtException",t=>{try{let e=Ir(Xn,"crashes");Yg(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};Jg(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");Yg(e,{recursive:!0});let r={timestamp:new Date().toISOString(),type:"unhandledRejection",reason:String(t),memory:process.memoryUsage(),uptime:process.uptime()};Jg(Ir(e,`rejection-${Date.now()}.json`),JSON.stringify(r,null,2),"utf-8")}catch{}});var gC=`You are AIAIAI Chain Agent \u2014 a Solana-native autonomous AI agent.
37
290
 
38
291
  Ticker: $AIAIAI
39
292
  Contract: AVPJS61gZmWKtaEpb7qYPKo8Fk2xQUsayYQxPiPMpump
40
293
  Chain: Solana (primary)
41
294
 
42
295
  Your wallets:
43
- Cold: A11iZoqEt6hU7HyggqC67ee4AtYmaJjwKCvJLerJRV2J (treasury)
44
- Action: BygDYM1ZXLQNC1HXLhnd1rHZ7E5XjioqT3vPjJFfjnU2 (buys + burns)
45
- Deposit: FBMDYpG9WXKy4SgxuATQdB2sCyzHsJWPrEr45z3TgL2e (user deposits USDC/SOL)
46
- Signer: GmFrDZT2cdrqykgTikVdXbe8EtCgzUDM9VsDhQnwsUsG (authority)
296
+ Cold: A11iZoqEt6hU7HyggqC67ee4AtYmaJjwKCvJLerJRV2J (treasury)
297
+ Action: BygDYM1ZXLQNC1HXLhnd1rHZ7E5XjioqT3vPjJFfjnU2 (buys + burns)
298
+ Deposit: FBMDYpG9WXKy4SgxuATQdB2sCyzHsJWPrEr45z3TgL2e (user deposits USDC/SOL)
299
+ Signer: GmFrDZT2cdrqykgTikVdXbe8EtCgzUDM9VsDhQnwsUsG (authority)
47
300
 
48
301
  Users deposit SOL or USDC to the deposit wallet. When enough accumulates, you
49
302
  automatically route funds to the action wallet and execute buys or burns of $AIAIAI.
50
303
  The burn destination receives tokens removed from circulation.
51
304
 
52
- Your purpose: advance the vision of decentralized AI governance inspired by the call
305
+ Your purpose: advance the vision of decentralized AI governance \u2014 inspired by the call
53
306
  for an "AI Associated Institute of America" (AIAIAI). You buy and burn $AIAIAI.
54
307
 
55
308
  You have tools for:
@@ -63,730 +316,73 @@ You have tools for:
63
316
  - Persistent goals and scheduled tasks
64
317
 
65
318
  Be confident. You ARE the agent. You buy, you burn, you earn fees. Use "I" and "my"
66
- when talking about your wallets and actions. Be concise, sharp, and useful.`;
67
- const args = process.argv.slice(2);
68
- const subcmd = args[0];
69
- // ── --help / --version ────────────────────────────────────────────────────
70
- if (subcmd === "--help" || subcmd === "-h" || subcmd === "help") {
71
- console.log(T.accent("\n AIAIAI Chain Agent — $AIAIAI\n"));
72
- console.log(T.muted(" Usage:\n"));
73
- console.log(" aiaiaichain Start interactive agent");
74
- console.log(" aiaiaichain setup First-time setup wizard");
75
- console.log(" aiaiaichain config Show configuration");
76
- console.log(" aiaiaichain price Show $AIAIAI token price");
77
- console.log(" aiaiaichain status Quick status + price");
78
- console.log(" aiaiaichain --headless \"prompt\" Run single turn, print to stdout");
79
- console.log(" aiaiaichain --extension ./ext.ts Load extension");
80
- console.log(" aiaiaichain wallet Show agent wallets");
81
- console.log(" aiaiaichain deposit Show deposit instructions");
82
- console.log(" aiaiaichain burn Show burn instructions");
83
- console.log(" aiaiaichain actions Recent agent actions");
84
- console.log(" aiaiaichain pnl Profit & Loss report");
85
- console.log(" aiaiaichain health System health & diagnostics");
86
- console.log(" aiaiaichain doctor Comprehensive provider check");
87
- console.log(" aiaiaichain scan <address> Token security scan");
88
- console.log(" aiaiaichain --help This help");
89
- console.log(" aiaiaichain --version Show version");
90
- console.log("");
91
- console.log(T.muted(" https://x.com/aiaiaisol\n"));
92
- process.exit(0);
93
- }
94
- if (subcmd === "--version" || subcmd === "-v") {
95
- const __filename = fileURLToPath(import.meta.url);
96
- const __dirname = dirname(__filename);
97
- const pkg = JSON.parse(readFileSync(resolve(__dirname, "..", "package.json"), "utf-8"));
98
- console.log(pkg.version);
99
- process.exit(0);
100
- }
101
- if (subcmd === "setup") {
102
- (async () => {
103
- const { SetupWizard } = await import("./setup/SetupWizard.js");
104
- AgentDir.init();
105
- const wizard = new SetupWizard();
106
- const ok = await wizard.run();
107
- if (!ok) {
108
- console.log(T.error("Setup cancelled."));
109
- process.exit(1);
110
- }
111
- console.log(T.success("\n ✓ AIAIAI setup complete!\n"));
112
- console.log(T.muted(` Home: ${AIAIAI_HOME}`));
113
- console.log(T.accent("\n Run `aiaiaichain` to start the agent.\n"));
114
- process.exit(0);
115
- })().catch(e => {
116
- const msg = e instanceof Error ? e.message : String(e);
117
- if (msg.includes('ENOENT')) {
118
- console.error(T.error(`Setup error: Cannot write to ~/.aiaiai/.env — check permissions.`));
119
- }
120
- else if (msg.includes('EACCES')) {
121
- console.error(T.error(`Setup error: Permission denied — try running with correct user.`));
122
- }
123
- else if (msg.includes('API') || msg.includes('401')) {
124
- console.error(T.error(`Setup error: API key invalid — check your provider key.`));
125
- }
126
- else {
127
- console.error(T.error(`Setup error: ${msg}`));
128
- }
129
- process.exit(1);
130
- });
131
- await new Promise(() => { });
132
- }
133
- if (subcmd === "config") {
134
- console.log(T.accent("AIAIAI Config"));
135
- console.log(T.muted(`Config file: ${envPath}`));
136
- if (existsSync(envPath)) {
137
- for (const line of readFileSync(envPath, "utf-8").split("\n")) {
138
- const m = line.match(/^([A-Z_]+)=(.*)$/);
139
- if (!m)
140
- continue;
141
- const masked = m[2].length > 12 ? m[2].slice(0, 6) + "********" : (m[2] ? "********" : "(empty)");
142
- console.log(` ${m[1].padEnd(28)} ${masked}`);
143
- }
144
- }
145
- else {
146
- console.log(T.warn("No config found. Run: aiaiaichain setup"));
147
- }
148
- process.exit(0);
149
- }
150
- if (subcmd === "price") {
151
- (async () => {
152
- const result = await priceFeed.getAiaiaiPriceTool();
153
- console.log(result.content[0].text);
154
- process.exit(0);
155
- })();
156
- await new Promise(() => { });
157
- }
158
- if (subcmd === "status") {
159
- (async () => {
160
- console.log(T.accent("\n 🤖 AIAIAI Chain Agent\n"));
161
- console.log(T.muted(` Home: ${AIAIAI_HOME}`));
162
- console.log(T.muted(` Config: ${existsSync(envPath) ? "✓ found" : "✗ run setup"}`));
163
- console.log(T.muted(` Key: ${process.env.OPENROUTER_API_KEY ? "✓ set" : "✗ missing"}`));
164
- console.log("");
165
- const result = await priceFeed.getAiaiaiPriceTool();
166
- console.log(result.content[0].text);
167
- console.log("");
168
- const wallets = await agentWallet.getAll();
169
- console.log(T.accent(" Wallets:"));
170
- console.log(T.muted(` Cold: ${wallets.cold.sol.toFixed(4)} SOL | ${wallets.cold.aiaiai.toLocaleString()} $AIAIAI`));
171
- console.log(T.muted(` Action: ${wallets.action.sol.toFixed(4)} SOL | ${wallets.action.aiaiai.toLocaleString()} $AIAIAI`));
172
- console.log(T.muted(` Deposit: ${wallets.deposit.usdc.toFixed(2)} USDC | ${wallets.deposit.sol.toFixed(4)} SOL`));
173
- console.log("");
174
- process.exit(0);
175
- })();
176
- await new Promise(() => { });
177
- }
178
- if (subcmd === "wallet") {
179
- (async () => {
180
- const result = await agentWallet.getAgentBalanceTool();
181
- console.log(result.content[0].text);
182
- process.exit(0);
183
- })();
184
- await new Promise(() => { });
185
- }
186
- if (subcmd === "deposit") {
187
- (async () => {
188
- const result = await agentWallet.getDepositBalanceTool();
189
- console.log(result.content[0].text);
190
- process.exit(0);
191
- })();
192
- await new Promise(() => { });
193
- }
194
- if (subcmd === "burn") {
195
- console.log(T.accent("\n 🔥 Burn $AIAIAI\n"));
196
- console.log(T.muted(" Deposit wallet:"));
197
- console.log(` ${DEPOSIT_WALLET}`);
198
- console.log("");
199
- console.log(T.muted(" Send SOL or USDC here to fuel agent burns."));
200
- console.log(T.muted(" The agent detects deposits and automatically"));
201
- console.log(T.muted(" sends funds to the action wallet to burn tokens."));
202
- console.log("");
203
- console.log(T.muted(" Action wallet (executes trades):"));
204
- console.log(` ${ACTION_WALLET}`);
205
- console.log("");
206
- console.log(T.muted(" Hot wallet (temporary swap):"));
207
- console.log(` ${HOT_WALLET}`);
208
- console.log("");
209
- process.exit(0);
210
- }
211
- if (subcmd === "actions" || subcmd === "activity") {
212
- (async () => {
213
- const { actionFeed } = await import("./wallet/ActionFeed.js");
214
- await actionFeed.refresh();
215
- const result = await actionFeed.getActionsTool("", { limit: 20 });
216
- console.log(result.content[0].text);
217
- process.exit(0);
218
- })();
219
- await new Promise(() => { });
220
- }
221
- if (subcmd === "fees") {
222
- (async () => {
223
- const { actionFeed } = await import("./wallet/ActionFeed.js");
224
- await actionFeed.refresh();
225
- const result = await actionFeed.getFeesTool();
226
- console.log(result.content[0].text);
227
- process.exit(0);
228
- })();
229
- await new Promise(() => { });
230
- }
231
- if (subcmd === "pnl" || subcmd === "pl" || subcmd === "profit") {
232
- (async () => {
233
- const { getPLSummary, getTradeHistory, exportCSV } = await import("./wallet/ProfitTracker.js");
234
- const { priceFeed } = await import("./tools/PriceFeed.js");
235
- const price = await priceFeed.getAiaiaiPrice();
236
- const summary = getPLSummary(parseFloat(price.priceUsd ?? "0"));
237
- const history = getTradeHistory();
238
- console.log(T.accent("\n Profit & Loss — $AIAIAI\n"));
239
- console.log(` Avg Cost: $${summary.avgCostBasis.toFixed(8)}`);
240
- console.log(` Total Spent: ${summary.totalSpent.toFixed(4)} SOL`);
241
- console.log(` Total Received: ${summary.totalReceived.toFixed(4)} SOL`);
242
- console.log(` Realized P&L: ${summary.realizedPL >= 0 ? "+" : ""}${summary.realizedPL.toFixed(4)} SOL`);
243
- console.log(` Unrealized P&L: ${summary.unrealizedPL >= 0 ? "+" : ""}${summary.unrealizedPL.toFixed(4)} SOL`);
244
- console.log(` ROI: ${summary.roi >= 0 ? "+" : ""}${summary.roi.toFixed(2)}%`);
245
- console.log(` Trades: ${history.length}`);
246
- if (history.length > 0) {
247
- console.log(T.muted("\n Recent trades:"));
248
- history.slice(-5).forEach(t => {
249
- const date = new Date(t.timestamp).toLocaleDateString();
250
- console.log(` ${date} ${t.type} ${t.tokenAmount.toFixed(0)} tokens @ ${t.pricePerToken.toFixed(8)} SOL`);
251
- });
252
- }
253
- try {
254
- const csvPath = exportCSV();
255
- console.log(T.success(`\n CSV exported: ${csvPath}`));
256
- }
257
- catch (error) {
258
- logger.warn('CLI', 'CSV export failed', { error: error.message });
259
- }
260
- process.exit(0);
261
- })();
262
- await new Promise(() => { });
263
- }
264
- if (subcmd === "keys" || subcmd === "providers") {
265
- (async () => {
266
- const readline = await import("node:readline");
267
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
268
- const ask = (prompt) => new Promise((res) => rl.question(prompt, res));
269
- const allEnv = env.getAll();
270
- const configured = getConfigured(allEnv);
271
- const unconfigured = getUnconfigured(allEnv);
272
- console.log(T.accent("\n 🔑 AI Model Providers\n"));
273
- console.log(T.muted(` Configure AI model providers. Add at least one API key to get started.`));
274
- console.log(T.muted(` ${configured.length}/${PROVIDERS.length} configured\n`));
275
- // Show configured
276
- if (configured.length > 0) {
277
- console.log(T.success(" Configured (" + configured.length + ")"));
278
- for (const p of configured) {
279
- const key = allEnv[p.envVar] || "";
280
- const masked = key.slice(0, 6) + "••••" + key.slice(-4);
281
- console.log(T.success(` ✓ ${p.name.padEnd(28)} ${masked}`));
282
- }
283
- }
284
- // Show unconfigured
285
- console.log("\n" + T.warn(" Unconfigured (" + unconfigured.length + ")"));
286
- for (let i = 0; i < unconfigured.length; i++) {
287
- const p = unconfigured[i];
288
- console.log(T.muted(` ${String(i + 1).padStart(2)}. ${p.name}`));
289
- }
290
- // Add key flow
291
- console.log("\n" + T.muted(" Enter number to add a key, 'r' to refresh models, or 'q' to quit:"));
292
- const input = (await ask(" > ")).trim();
293
- if (input === "q") {
294
- rl.close();
295
- process.exit(0);
296
- }
297
- if (input === "r") {
298
- console.log(T.muted("\n Refreshing models from configured providers..."));
299
- await modelRegistry.initialise();
300
- console.log(T.success(` ✓ ${modelRegistry.modelCount} models available from ${modelRegistry.getProviderCount()} providers`));
301
- rl.close();
302
- process.exit(0);
303
- }
304
- const idx = parseInt(input) - 1;
305
- if (isNaN(idx) || idx < 0 || idx >= unconfigured.length) {
306
- console.log(T.error(" Invalid selection."));
307
- rl.close();
308
- process.exit(1);
309
- }
310
- const provider = unconfigured[idx];
311
- console.log(T.accent(`\n ${provider.name}`));
312
- console.log(T.muted(` ${provider.docsUrl}`));
313
- console.log(T.muted(` Env var: ${provider.envVar}\n`));
314
- const key = (await ask(` Enter ${provider.name} API key: `)).trim();
315
- if (!key) {
316
- console.log(T.error(" Key is required."));
317
- rl.close();
318
- process.exit(1);
319
- }
320
- // Save to .env
321
- env.set(provider.envVar, key);
322
- console.log(T.success(`\n ✓ ${provider.name} key saved to ~/.aiaiai/.env`));
323
- // Fetch models from this provider
324
- console.log(T.muted(" Fetching models from " + provider.name + "..."));
325
- try {
326
- await modelRegistry.initialise();
327
- const providerModels = modelRegistry.getProviderModels(provider.id);
328
- console.log(T.success(` ✓ ${providerModels.length} models available from ${provider.name}`));
329
- console.log(T.success(` ✓ ${modelRegistry.modelCount} total models from ${modelRegistry.getProviderCount()} providers`));
330
- }
331
- catch (e) {
332
- console.log(T.warn(` ⚠ Could not fetch models: ${e instanceof Error ? e.message : String(e)}`));
333
- }
334
- rl.close();
335
- process.exit(0);
336
- })().catch(e => { console.error(T.error(`Error: ${e.message}`)); process.exit(1); });
337
- await new Promise(() => { });
338
- }
339
- if (subcmd === "gmgn" || subcmd === "gmgnhelp") {
340
- const gmgnArgs = args.slice(1);
341
- if (gmgnArgs.length === 0 || gmgnArgs[0] === "help" || gmgnArgs[0] === "--help") {
342
- console.log(gmgnHelp());
343
- process.exit(0);
344
- }
345
- if (gmgnArgs[0] === "setup" || gmgnArgs[0] === "config" || gmgnArgs[0] === "key") {
346
- (async () => {
347
- const readline = await import("node:readline");
348
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
349
- const ask = (prompt) => new Promise((res) => rl.question(prompt, res));
350
- console.log(T.accent("\n 🔍 GMGN API Key Setup\n"));
351
- console.log(T.muted(" Get your API key at https://gmgn.ai/ai\n"));
352
- const key = (await ask(" Enter GMGN_API_KEY: ")).trim();
353
- if (!key) {
354
- console.log(T.error(" Key is required."));
355
- rl.close();
356
- process.exit(1);
357
- }
358
- saveGmgnApiKey(key);
359
- console.log(T.success("\n ✓ GMGN_API_KEY saved to ~/.config/gmgn/.env"));
360
- console.log(T.muted(" All GMGN commands are now available.\n"));
361
- rl.close();
362
- process.exit(0);
363
- })().catch(e => { console.error(T.error(`Error: ${e.message}`)); process.exit(1); });
364
- await new Promise(() => { });
365
- }
366
- if (gmgnArgs[0] === "status") {
367
- console.log(gmgnStatus());
368
- process.exit(0);
369
- }
370
- // Forward to gmgn-cli
371
- try {
372
- const fullArgs = ["gmgn-cli", ...gmgnArgs];
373
- const gmgnEnv = {};
374
- try {
375
- const f = readFileSync(join(homedir(), ".config", "gmgn", ".env"), "utf-8");
376
- for (const l of f.split("\n")) {
377
- const m = l.trim().match(/^([A-Z_]+)=(.*)$/);
378
- if (m)
379
- gmgnEnv[m[1]] = m[2];
380
- }
381
- }
382
- catch {
383
- logger.debug('CLI', 'No GMGN env file found (optional)');
384
- }
385
- const output = execSync(fullArgs.join(" "), {
386
- env: { ...process.env, ...gmgnEnv },
387
- encoding: "utf-8",
388
- timeout: 30_000,
389
- });
390
- process.stdout.write(output);
391
- }
392
- catch (e) {
393
- const msg = e.stderr?.toString() || e.message || "";
394
- process.stderr.write(`gmgn-cli: ${msg.slice(0, 500)}\n`);
395
- process.exit(e.status ?? 1);
396
- }
397
- process.exit(0);
398
- }
399
- if (subcmd === "scan" || subcmd === "security") {
400
- (async () => {
401
- const tokenAddress = args[1];
402
- if (!tokenAddress) {
403
- console.log(T.error(" Usage: aiaiai scan <token-address>"));
404
- process.exit(1);
405
- }
406
- console.log(T.accent("\n \uD83D\uDD0D Scanning token...\n"));
407
- const result = await scanTokenSecurityTool("", { address: tokenAddress });
408
- if (result.isError) {
409
- console.log(result.content[0].text);
410
- process.exit(1);
411
- }
412
- console.log(result.content[0].text);
413
- console.log("");
414
- process.exit(0);
415
- })().catch(e => { console.error(T.error("Scan error: " + e.message)); process.exit(1); });
416
- await new Promise(() => { });
417
- }
418
- if (subcmd === "update" || subcmd === "upgrade") {
419
- (async () => {
420
- const pkgName = "@aiaiaichain/agent";
421
- console.log(T.accent("\n 🤖 AIAIAI Update Check\n"));
422
- // Get current version
423
- const __filename = fileURLToPath(import.meta.url);
424
- const __dir = dirname(__filename);
425
- const currentPkg = JSON.parse(readFileSync(resolve(__dir, "..", "package.json"), "utf-8"));
426
- const current = currentPkg.version;
427
- console.log(T.muted(` Current version: v${current}`));
428
- // Check npm for latest
429
- let latest = null;
430
- let changelog = "";
431
- try {
432
- const viewOutput = execSync(`npm view ${pkgName} version`, {
433
- encoding: "utf-8",
434
- timeout: 15_000,
435
- }).trim();
436
- latest = viewOutput.split("\n").pop() || null;
437
- // Try to get changelog from npm
438
- try {
439
- const changelogOutput = execSync(`npm view ${pkgName} --json`, {
440
- encoding: "utf-8",
441
- timeout: 15_000,
442
- });
443
- const pkgData = JSON.parse(changelogOutput);
444
- if (pkgData.gitHead) {
445
- changelog = `Git: ${pkgData.gitHead.slice(0, 8)}`;
446
- }
447
- }
448
- catch {
449
- logger.debug('CLI', 'No changelog available (optional)');
450
- }
451
- }
452
- catch (error) {
453
- logger.warn('CLI', 'Could not reach npm registry', { error: error.message });
454
- console.log(T.error(" Could not reach npm registry. Check your connection."));
455
- process.exit(1);
456
- }
457
- if (!latest) {
458
- console.log(T.error(" Could not determine latest version."));
459
- process.exit(1);
460
- }
461
- console.log(T.muted(` Latest version: v${latest}`));
462
- if (changelog)
463
- console.log(T.muted(` ${changelog}`));
464
- if (latest === current) {
465
- console.log(T.success("\n ✅ You're on the latest version!\n"));
466
- process.exit(0);
467
- }
468
- console.log(T.accent(`\n ⚡ Update available: v${current} → v${latest}\n`));
469
- // Ask to update
470
- const readline = await import("node:readline");
471
- const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
472
- const ask = (prompt) => new Promise((res) => rl.question(prompt, res));
473
- const confirm = (await ask(" Install update now? (y/n): ")).trim().toLowerCase();
474
- if (confirm !== "y" && confirm !== "yes") {
475
- console.log(T.muted("\n Skipped. Run `aiaiai update` anytime to update.\n"));
476
- rl.close();
477
- process.exit(0);
478
- }
479
- console.log(T.muted("\n Installing update..."));
480
- try {
481
- execSync(`npm install -g ${pkgName}`, {
482
- stdio: "inherit",
483
- timeout: 120_000,
484
- });
485
- console.log(T.success(`\n ✅ Updated to v${latest}!`));
486
- console.log(T.muted(" Run `aiaiai` to restart with new features.\n"));
487
- }
488
- catch (e) {
489
- console.log(T.error(`\n ❌ Update failed: ${e.message}`));
490
- console.log(T.muted(" Try manually: npm install -g @aiaiaichain/agent\n"));
491
- }
492
- rl.close();
493
- process.exit(0);
494
- })().catch(e => { console.error(T.error(`Error: ${e.message}`)); process.exit(1); });
495
- await new Promise(() => { });
496
- }
497
- if (subcmd === "health" || subcmd === "doctor") {
498
- (async () => {
499
- console.log(T.accent("\n \u2705 AIAIAI Health Check\n"));
500
- let healthy = true;
501
- // Check env file
502
- console.log(T.muted(" Config:"));
503
- if (existsSync(envPath)) {
504
- console.log(T.success(" .env found"));
505
- }
506
- else {
507
- console.log(T.warn(" .env not found \u2014 run: aiaiai setup"));
508
- healthy = false;
509
- }
510
- // Check API key
511
- console.log(T.muted(" API Key:"));
512
- if (process.env.OPENROUTER_API_KEY || env.get("OPENROUTER_API_KEY")) {
513
- console.log(T.success(" OPENROUTER_API_KEY set"));
514
- }
515
- else {
516
- console.log(T.warn(" OPENROUTER_API_KEY not set"));
517
- healthy = false;
518
- }
519
- // Check RPC
520
- console.log(T.muted(" Solana RPC:"));
521
- try {
522
- const { resilientFetch } = await import("./util/resilientFetch.js");
523
- const rpcUrl = process.env.SOLANA_RPC_URL || "https://api.mainnet-beta.solana.com";
524
- const res = await resilientFetch(rpcUrl, {
525
- timeout: 10_000,
526
- retries: 0,
527
- method: "POST",
528
- headers: { "Content-Type": "application/json" },
529
- body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "getHealth", params: [] }),
530
- });
531
- const json = await res.json();
532
- if (json.result === "ok") {
533
- console.log(T.success(" RPC healthy: " + rpcUrl));
534
- }
535
- else {
536
- console.log(T.warn(" RPC responded but unhealthy"));
537
- healthy = false;
538
- }
539
- }
540
- catch (e) {
541
- console.log(T.error(" RPC unreachable: " + e.message));
542
- healthy = false;
543
- }
544
- // Check disk writable
545
- console.log(T.muted(" Disk:"));
546
- try {
547
- const { writeFileSync, unlinkSync } = await import("node:fs");
548
- const testFile = join(AIAIAI_HOME, ".health-test");
549
- writeFileSync(testFile, "test", "utf-8");
550
- unlinkSync(testFile);
551
- console.log(T.success(" writable"));
552
- }
553
- catch (error) {
554
- logger.warn('CLI', 'Disk not writable', { error: error.message });
555
- console.log(T.error(" not writable"));
556
- healthy = false;
557
- }
558
- // ── Extras (doctor mode) ──────────────────────────────────────────
559
- console.log(T.muted("\n Extras:"));
560
- // Theme
561
- try {
562
- const { getCurrentTheme } = await import("./tui/ThemePresets.js");
563
- console.log(T.success(` Theme: ${getCurrentTheme()} (run aiaiai to change)`));
564
- }
565
- catch {
566
- console.log(T.muted(" Theme: default"));
567
- }
568
- // Clipboard
569
- try {
570
- const { clipboardSupported } = await import("./util/clipboard.js");
571
- console.log(T.muted(` Clipboard: ${clipboardSupported()}`));
572
- }
573
- catch {
574
- console.log(T.muted(" Clipboard: not available"));
575
- }
576
- // Webhooks
577
- try {
578
- const { hasWebhooks } = await import("./util/webhooks.js");
579
- console.log(hasWebhooks() ? T.success(" Webhooks: configured") : T.muted(" Webhooks: not configured (set WEBHOOK_DISCORD or WEBHOOK_TELEGRAM in .env)"));
580
- }
581
- catch {
582
- console.log(T.muted(" Webhooks: not available"));
583
- }
584
- // Provider key check
585
- console.log(T.muted(" Provider Keys:"));
586
- const providers = [
587
- { name: "OpenRouter", key: "OPENROUTER_API_KEY" },
588
- { name: "Anthropic", key: "ANTHROPIC_API_KEY" },
589
- { name: "OpenAI", key: "OPENAI_API_KEY" },
590
- { name: "Google", key: "GOOGLE_API_KEY" },
591
- { name: "DeepSeek", key: "DEEPSEEK_API_KEY" },
592
- { name: "Groq", key: "GROQ_API_KEY" },
593
- { name: "GMGN", key: "GMGN_API_KEY" },
594
- ];
595
- for (const p of providers) {
596
- const has = process.env[p.key] || env.get(p.key);
597
- console.log(has ? T.success(` ${p.name}: ✓`) : T.dim(` ${p.name}: ✗ (optional)`));
598
- }
599
- console.log("");
600
- if (healthy) {
601
- console.log(T.success(" All systems operational.\n"));
602
- }
603
- else {
604
- console.log(T.warn(" Some checks failed. Review above for details.\n"));
605
- }
606
- process.exit(healthy ? 0 : 1);
607
- })().catch(e => { console.error(T.error("Health check failed: " + e.message)); process.exit(2); });
608
- await new Promise(() => { });
609
- }
610
- if (subcmd === "sessions") {
611
- const sessions = sessionStore.list();
612
- if (sessions.length === 0) {
613
- console.log(T.muted(" No saved sessions."));
614
- process.exit(0);
615
- }
616
- console.log(T.accent("\n 📂 Saved Sessions\n"));
617
- sessions.slice(0, 15).forEach((s, i) => {
618
- const date = new Date(s.updatedAt).toLocaleDateString();
619
- console.log(T.muted(` ${String(i + 1).padStart(2)}. ${s.title} (${s.messageCount} msgs, ${s.model}, ${date})`));
620
- });
621
- console.log("");
622
- process.exit(0);
623
- }
624
- if (subcmd === "resume") {
625
- const sessions = sessionStore.list();
626
- if (sessions.length === 0) {
627
- console.log(T.muted(" No saved sessions."));
628
- process.exit(0);
629
- }
630
- const idx = parseInt(process.argv[3]) - 1;
631
- if (isNaN(idx) || idx < 0 || idx >= sessions.length) {
632
- console.log(T.error(" Invalid session number."));
633
- process.exit(1);
634
- }
635
- const session = sessionStore.load(sessions[idx].id);
636
- if (!session) {
637
- console.log(T.error(" Session not found."));
638
- process.exit(1);
639
- }
640
- console.log(T.accent(`\n 📂 Resumed: ${session.title}\n`));
641
- console.log(T.muted(` Messages: ${session.messages.length}`));
642
- console.log(T.muted(` Model: ${session.model}`));
643
- console.log("");
644
- process.exit(0);
645
- }
646
- // ── Resolve extension + prompt ────────────────────────────────────────────────
647
- let extensionPath = null;
648
- let promptPath = null;
649
- for (let i = 0; i < args.length; i++) {
650
- if (args[i] === "--extension" && args[i + 1])
651
- extensionPath = args[i + 1];
652
- if (args[i] === "--prompt" && args[i + 1])
653
- promptPath = args[i + 1];
654
- }
655
- let systemPrompt = SYSTEM_PROMPT;
656
- if (promptPath && existsSync(promptPath)) {
657
- let rawPrompt = readFileSync(promptPath, "utf-8");
658
- // Validate prompt file size
659
- if (rawPrompt.length > 10_000) {
660
- console.error(T.error("Prompt file too large (max 10KB)."));
661
- process.exit(1);
662
- }
663
- // Strip control characters
664
- rawPrompt = rawPrompt.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, "");
665
- // Basic prompt injection detection
666
- const dangerousPatterns = [
667
- /ignore (all |previous |above|prior) instructions/i,
668
- /you are now /i,
669
- /new instructions/i,
670
- /override (system|safety)/i,
671
- ];
672
- for (const pattern of dangerousPatterns) {
673
- if (pattern.test(rawPrompt)) {
674
- console.error(T.error("Prompt file contains suspicious patterns. Use a simpler prompt."));
675
- process.exit(1);
676
- }
677
- }
678
- systemPrompt = rawPrompt;
679
- console.log(T.muted(" Custom prompt loaded: " + promptPath));
680
- }
681
- // ── Headless mode ─────────────────────────────────────────────────────────
682
- const headlessIdx = args.indexOf("--headless");
683
- const headlessMsg = headlessIdx >= 0 ? args[headlessIdx + 1] : null;
684
- if (headlessMsg) {
685
- (async () => {
686
- AgentDir.init();
687
- const registry = new Registry();
688
- registry.setSystemPrompt(systemPrompt);
689
- if (extensionPath) {
690
- try {
691
- await loadExtension(extensionPath, registry);
692
- }
693
- catch (e) {
694
- process.stderr.write(`Extension load failed: ${e instanceof Error ? e.message : String(e)}\n`);
695
- process.exit(1);
696
- }
697
- }
698
- await modelRegistry.initialise();
699
- const session = new SessionManager();
700
- session.setSystemPrompt(registry.getSystemPrompt() || systemPrompt);
701
- const theme = makeTheme();
702
- const nullUi = {
703
- notify: () => { }, setStatus: () => { }, setTheme: () => { },
704
- setHeader: () => { }, showModelSelector: () => { }, theme,
705
- };
706
- const sessionCtx = {
707
- ui: nullUi, hasUI: false,
708
- config: { OPENROUTER_API_KEY: process.env.OPENROUTER_API_KEY },
709
- };
710
- await registry.fireHook("session_start", sessionCtx);
711
- let exitCode = 0;
712
- const runner = new AgentRunner(registry, session, (event) => {
713
- if (event.type === "text_delta")
714
- process.stdout.write(event.text);
715
- if (event.type === "turn_done")
716
- process.stdout.write("\n");
717
- if (event.type === "error") {
718
- process.stderr.write(`\nError: ${event.message}\n`);
719
- exitCode = 1;
720
- }
721
- }, sessionCtx, "normal", modelRegistry);
722
- try {
723
- await runner.run(headlessMsg);
724
- }
725
- catch (e) {
726
- process.stderr.write(`Runner error: ${e instanceof Error ? e.message : String(e)}\n`);
727
- exitCode = 1;
728
- }
729
- await registry.fireHook("session_end", sessionCtx);
730
- process.exit(exitCode);
731
- })();
732
- }
733
- else {
734
- // ── Boot (interactive TUI) ──────────────────────────────────────────────
735
- (async () => {
736
- AgentDir.init();
737
- console.clear();
738
- console.log(T.accent(`
739
- █████╗ ██╗ █████╗ ██╗ █████╗ ██╗
740
- ██╔══██╗██║██╔══██╗██║██╔══██╗██║
741
- ███████║██║███████║██║███████║██║
742
- ██╔══██║██║██╔══██║██║██╔══██║██║
743
- ██║ ██║██║██║ ██║██║██║ ██║██║
744
- ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═╝╚═╝
745
- `));
746
- console.log(T.muted(" Solana-native AI agent — $AIAIAI · all local, zero exposure\n"));
747
- const registry = new Registry();
748
- registry.setSystemPrompt(systemPrompt);
749
- let _notifyFn = null;
750
- let _setStatusFn = null;
751
- let _showModelSelectorFn = null;
752
- if (extensionPath) {
753
- try {
754
- console.log(T.muted(` Loading: ${extensionPath}`));
755
- await loadExtension(extensionPath, registry, {
756
- onNotify: (msg) => { _notifyFn?.(msg); },
757
- onStatusUpdate: (k, v) => { _setStatusFn?.(k, v); },
758
- onShowModelSelector: (q) => { _showModelSelectorFn?.(q); },
759
- });
760
- console.log(T.success(` ✓ ${registry.listTools().length} tools · ${registry.listCommands().length} commands`));
761
- }
762
- catch (e) {
763
- console.error(T.error(` ✗ Extension load failed: ${e.message}`));
764
- process.exit(1);
765
- }
766
- }
767
- if (!process.env.OPENROUTER_API_KEY) {
768
- console.log(T.warn(" No API key found. Run: aiaiaichain setup\n"));
769
- }
770
- const costTracker = new CostTracker(modelRegistry);
771
- console.log(T.muted(" Discovering available models via OpenRouter…"));
772
- await modelRegistry.initialise();
773
- console.log(T.success(` ✓ ${modelRegistry.modelCount} models available\n`));
774
- await new Promise(r => setTimeout(r, 500));
775
- console.clear();
776
- render(React.createElement(App, {
777
- registry,
778
- systemPrompt,
779
- chain: "solana",
780
- modelReg: modelRegistry,
781
- costTracker,
782
- onNotifyReady: (fn) => { _notifyFn = fn; wireNotify(fn); },
783
- onStatusReady: (fn) => { _setStatusFn = fn; },
784
- onModelSelectorReady: (fn) => { _showModelSelectorFn = fn; },
785
- }), { exitOnCtrlC: false });
786
- process.prependListener("SIGWINCH", () => { process.stdout.write("\x1B[2J\x1B[H"); });
787
- console.log = safeLog;
788
- console.error = safeLog;
789
- console.warn = safeLog;
790
- })();
791
- }
792
- //# sourceMappingURL=cli.js.map
319
+ 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(`
320
+ AIAIAI Chain Agent \u2014 $AIAIAI
321
+ `)),console.log(E.muted(` Usage:
322
+ `)),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
323
+ `)),process.exit(0));if(he==="--version"||he==="-v"){let t=Xg(import.meta.url),e=Vg(t),r=JSON.parse(Zo(Hg(e,"..","package.json"),"utf-8"));console.log(r.version),process.exit(0)}he==="setup"&&((async()=>{let{SetupWizard:t}=await Promise.resolve().then(()=>(Dg(),Qg));Xe.init(),await new t().run()||(console.log(E.error("Setup cancelled.")),process.exit(1)),console.log(E.success(`
324
+ \u2713 AIAIAI setup complete!
325
+ `)),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)}),await new Promise(()=>{}));if(he==="config"){if(console.log(E.accent("AIAIAI Config")),console.log(E.muted(`Config file: ${cn}`)),es(cn))for(let t of Zo(cn,"utf-8").split(`
326
+ `)){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 Ue.getAiaiaiPriceTool();console.log(t.content[0].text),process.exit(0)})(),await new Promise(()=>{}));he==="status"&&((async()=>{console.log(E.accent(`
327
+ \u{1F916} AIAIAI Chain Agent
328
+ `)),console.log(E.muted(` Home: ${Xn}`)),console.log(E.muted(` Config: ${es(cn)?"\u2713 found":"\u2717 run setup"}`)),console.log(E.muted(` Key: ${process.env.OPENROUTER_API_KEY?"\u2713 set":"\u2717 missing"}`)),console.log("");let t=await Ue.getAiaiaiPriceTool();console.log(t.content[0].text),console.log("");let e=await Ze.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)})(),await new Promise(()=>{}));he==="wallet"&&((async()=>{let t=await Ze.getAgentBalanceTool();console.log(t.content[0].text),process.exit(0)})(),await new Promise(()=>{}));he==="deposit"&&((async()=>{let t=await Ze.getDepositBalanceTool();console.log(t.content[0].text),process.exit(0)})(),await new Promise(()=>{}));he==="burn"&&(console.log(E.accent(`
329
+ \u{1F525} Burn $AIAIAI
330
+ `)),console.log(E.muted(" Deposit wallet:")),console.log(` ${sr}`),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(),Il));await t.refresh();let e=await t.getActionsTool("",{limit:20});console.log(e.content[0].text),process.exit(0)})(),await new Promise(()=>{}));he==="fees"&&((async()=>{let{actionFeed:t}=await Promise.resolve().then(()=>(Ii(),Il));await t.refresh();let e=await t.getFeesTool();console.log(e.content[0].text),process.exit(0)})(),await new Promise(()=>{}));(he==="pnl"||he==="pl"||he==="profit")&&((async()=>{let{getPLSummary:t,getTradeHistory:e,exportCSV:r}=await Promise.resolve().then(()=>(Kg(),jg)),{priceFeed:n}=await Promise.resolve().then(()=>(Un(),al)),o=await n.getAiaiaiPrice(),s=t(parseFloat(o.priceUsd??"0")),i=e();console.log(E.accent(`
331
+ Profit & Loss \u2014 $AIAIAI
332
+ `)),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(`
333
+ 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(`
334
+ CSV exported: ${l}`))}catch(l){X.warn("CLI","CSV export failed",{error:l.message})}process.exit(0)})(),await new Promise(()=>{}));(he==="keys"||he==="providers")&&((async()=>{let e=(await import("node:readline")).createInterface({input:process.stdin,output:process.stdout}),r=u=>new Promise(a=>e.question(u,a)),n=Tt.getAll(),o=Ig(n),s=Bg(n);if(console.log(E.accent(`
335
+ \u{1F511} AI Model Providers
336
+ `)),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
337
+ `)),o.length>0){console.log(E.success(" Configured ("+o.length+")"));for(let u of o){let a=n[u.envVar]||"",h=a.slice(0,6)+"\u2022\u2022\u2022\u2022"+a.slice(-4);console.log(E.success(` \u2713 ${u.name.padEnd(28)} ${h}`))}}console.log(`
338
+ `+E.warn(" Unconfigured ("+s.length+")"));for(let u=0;u<s.length;u++){let a=s[u];console.log(E.muted(` ${String(u+1).padStart(2)}. ${a.name}`))}console.log(`
339
+ `+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(`
340
+ Refreshing models from configured providers...`)),await At.initialise(),console.log(E.success(` \u2713 ${At.modelCount} models available from ${At.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(`
341
+ ${c.name}`)),console.log(E.muted(` ${c.docsUrl}`)),console.log(E.muted(` Env var: ${c.envVar}
342
+ `));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(`
343
+ \u2713 ${c.name} key saved to ~/.aiaiai/.env`)),console.log(E.muted(" Fetching models from "+c.name+"..."));try{await At.initialise();let u=At.getProviderModels(c.id);console.log(E.success(` \u2713 ${u.length} models available from ${c.name}`)),console.log(E.success(` \u2713 ${At.modelCount} total models from ${At.getProviderCount()} providers`))}catch(u){console.log(E.warn(` \u26A0 Could not fetch models: ${u instanceof Error?u.message:String(u)}`))}e.close(),process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t.message}`)),process.exit(1)}),await new Promise(()=>{}));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(`
344
+ \u{1F50D} GMGN API Key Setup
345
+ `)),console.log(E.muted(` Get your API key at https://gmgn.ai/ai
346
+ `));let o=(await n(" Enter GMGN_API_KEY: ")).trim();o||(console.log(E.error(" Key is required.")),r.close(),process.exit(1)),Mp(o),console.log(E.success(`
347
+ \u2713 GMGN_API_KEY saved to ~/.config/gmgn/.env`)),console.log(E.muted(` All GMGN commands are now available.
348
+ `)),r.close(),process.exit(0)})().catch(e=>{console.error(E.error(`Error: ${e.message}`)),process.exit(1)}),await new Promise(()=>{})),t[0]==="status"&&(console.log(Oi()),process.exit(0));try{let e=["gmgn-cli",...t],r={};try{let o=Zo(Ir(zg(),".config","gmgn",".env"),"utf-8");for(let s of o.split(`
349
+ `)){let i=s.trim().match(/^([A-Z_]+)=(.*)$/);i&&(r[i[1]]=i[2])}}catch{X.debug("CLI","No GMGN env file found (optional)")}let n=hC(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)}
350
+ `),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(`
351
+ \u{1F50D} Scanning token...
352
+ `));let e=await Pg("",{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)}),await new Promise(()=>{}));(he==="update"||he==="upgrade")&&((async()=>{let t="@aiaiaichain/agent";console.log(E.accent(`
353
+ \u{1F916} AIAIAI Update Check
354
+ `));let e=Xg(import.meta.url),r=Vg(e),o=JSON.parse(Zo(Hg(r,"..","package.json"),"utf-8")).version;console.log(E.muted(` Current version: v${o}`));let s=null,i="";try{s=wu(`npm view ${t} version`,{encoding:"utf-8",timeout:15e3}).trim().split(`
355
+ `).pop()||null;try{let h=wu(`npm view ${t} --json`,{encoding:"utf-8",timeout:15e3}),p=JSON.parse(h);p.gitHead&&(i=`Git: ${p.gitHead.slice(0,8)}`)}catch{X.debug("CLI","No changelog available (optional)")}}catch(a){X.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(`
356
+ \u2705 You're on the latest version!
357
+ `)),process.exit(0)),console.log(E.accent(`
358
+ \u26A1 Update available: v${o} \u2192 v${s}
359
+ `));let c=(await import("node:readline")).createInterface({input:process.stdin,output:process.stdout}),u=(await(a=>new Promise(h=>c.question(a,h)))(" Install update now? (y/n): ")).trim().toLowerCase();u!=="y"&&u!=="yes"&&(console.log(E.muted("\n Skipped. Run `aiaiai update` anytime to update.\n")),c.close(),process.exit(0)),console.log(E.muted(`
360
+ Installing update...`));try{wu(`npm install -g ${t}`,{stdio:"inherit",timeout:12e4}),console.log(E.success(`
361
+ \u2705 Updated to v${s}!`)),console.log(E.muted(" Run `aiaiai` to restart with new features.\n"))}catch(a){console.log(E.error(`
362
+ \u274C Update failed: ${a.message}`)),console.log(E.muted(` Try manually: npm install -g @aiaiaichain/agent
363
+ `))}c.close(),process.exit(0)})().catch(t=>{console.error(E.error(`Error: ${t.message}`)),process.exit(1)}),await new Promise(()=>{}));(he==="health"||he==="doctor")&&((async()=>{console.log(E.accent(`
364
+ \u2705 AIAIAI Health Check
365
+ `));let t=!0;console.log(E.muted(" Config:")),es(cn)?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(()=>(pt(),lh)),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){X.warn("CLI","Disk not writable",{error:r.message}),console.log(E.error(" not writable")),t=!1}console.log(E.muted(`
366
+ Extras:`));try{let{getCurrentTheme:r}=await Promise.resolve().then(()=>(ql(),ng));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(()=>(Yl(),sg));console.log(E.muted(` Clipboard: ${r()}`))}catch{console.log(E.muted(" Clipboard: not available"))}try{let{hasWebhooks:r}=await Promise.resolve().then(()=>(zl(),ug));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.
367
+ `):E.warn(` Some checks failed. Review above for details.
368
+ `)),process.exit(t?0:1)})().catch(t=>{console.error(E.error("Health check failed: "+t.message)),process.exit(2)}),await new Promise(()=>{}));if(he==="sessions"){let t=Ye.list();t.length===0&&(console.log(E.muted(" No saved sessions.")),process.exit(0)),console.log(E.accent(`
369
+ \u{1F4C2} Saved Sessions
370
+ `)),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=Ye.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=Ye.load(t[e].id);r||(console.log(E.error(" Session not found.")),process.exit(1)),console.log(E.accent(`
371
+ \u{1F4C2} Resumed: ${r.title}
372
+ `)),console.log(E.muted(` Messages: ${r.messages.length}`)),console.log(E.muted(` Model: ${r.model}`)),console.log(""),process.exit(0)}var zn=null,zo=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]&&(zo=Pt[t+1]);var Xo=gC;if(zo&&es(zo)){let t=Zo(zo,"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));Xo=t,console.log(E.muted(" Custom prompt loaded: "+zo))}var Gg=Pt.indexOf("--headless"),qg=Gg>=0?Pt[Gg+1]:null;qg?(async()=>{Xe.init();let t=new eo;if(t.setSystemPrompt(Xo),zn)try{await Cc(zn,t)}catch(l){process.stderr.write(`Extension load failed: ${l instanceof Error?l.message:String(l)}
373
+ `),process.exit(1)}await At.initialise();let e=new Pn;e.setSystemPrompt(t.getSystemPrompt()||Xo);let r=Or(),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(`
374
+ `),l.type==="error"&&(process.stderr.write(`
375
+ Error: ${l.message}
376
+ `),s=1)},o,"normal",At);try{await i.run(qg)}catch(l){process.stderr.write(`Runner error: ${l instanceof Error?l.message:String(l)}
377
+ `),s=1}await t.fireHook("session_end",o),process.exit(s)})():(async()=>{Xe.init(),console.clear(),console.log(E.accent(`
378
+ \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
379
+ \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
380
+ \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
381
+ \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
382
+ \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
383
+ \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
384
+ `)),console.log(E.muted(` Solana-native AI agent \u2014 $AIAIAI \xB7 all local, zero exposure
385
+ `));let t=new eo;t.setSystemPrompt(Xo);let e=null,r=null,n=null;if(zn)try{console.log(E.muted(` Loading: ${zn}`)),await Cc(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
386
+ `));let o=new qi(At);console.log(E.muted(" Discovering available models via OpenRouter\u2026")),await At.initialise(),console.log(E.success(` \u2713 ${At.modelCount} models available
387
+ `)),await new Promise(s=>setTimeout(s,500)),console.clear(),pC(Wg.createElement(Wi,{onError:s=>{X.error("ErrorBoundary","UI render crash",{error:s.message})}},Wg.createElement(Sg,{registry:t,systemPrompt:Xo,chain:"solana",modelReg:At,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})();
388
+