@aiiware/aii 0.17.10 → 0.17.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/aii +8 -8
- package/package.json +1 -1
package/bin/aii
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* @aiiware/aii v0.17.
|
|
3
|
+
* @aiiware/aii v0.17.11
|
|
4
4
|
*
|
|
5
5
|
* AI-powered CLI assistant for terminal productivity
|
|
6
6
|
*
|
|
@@ -199,7 +199,7 @@ ${r.comment}`:r.comment}this.doc.range[2]=r.offset;break}default:this.errors.pus
|
|
|
199
199
|
`)+`\r
|
|
200
200
|
\r
|
|
201
201
|
`+r)}function Rl(t,e,r,n,s,o){if(t.listenerCount("wsClientError")){let i=new Error(s);Error.captureStackTrace(i,Rl),t.emit("wsClientError",i,r,e)}else hf(r,n,s,o)}});var Hhe,jhe,Yhe,Whe,Vhe,Khe,dU,Qhe,lo,Rk=A(()=>{Hhe=Tt(rU(),1),jhe=Tt(Ly(),1),Yhe=Tt(Ou(),1),Whe=Tt(yk(),1),Vhe=Tt(Tk(),1),Khe=Tt(Dk(),1),dU=Tt(By(),1),Qhe=Tt(uU(),1),lo=dU.default});var gU={};ye(gU,{configureLogger:()=>zy,debug:()=>j,error:()=>fU,formatError:()=>qy,info:()=>pU,logger:()=>M,success:()=>hU,warn:()=>mU});function zy(t){gf={...gf,...t}}function _f(t){return gf.emojis?t+" ":""}function Nl(t,e){return gf.colors?e(t):t}function j(t,...e){gf.debug&&console.debug(Nl(`[DEBUG] ${t}`,m.gray),...e)}function pU(t,...e){console.log(t,...e)}function mU(t,...e){console.warn(Nl(`${_f("\u26A0\uFE0F")}${t}`,m.yellow),...e)}function fU(t,...e){console.error(Nl(`${_f("\u274C")}${t}`,m.red),...e)}function hU(t,...e){console.log(Nl(`${_f("\u2705")}${t}`,m.green),...e)}function qy(t){let e=[];return e.push(Nl(`${_f("\u274C")}${t.message}`,m.red)),t.suggestions&&t.suggestions.length>0&&(e.push(""),e.push(Nl(`${_f("\u{1F4A1}")}Solutions:`,m.yellow)),t.suggestions.forEach((r,n)=>{e.push(Nl(` ${n+1}. ${r}`,m.gray))})),e.join(`
|
|
202
|
-
`)}var Xhe,gf,M,lt=A(()=>{"use strict";Se();Xhe={debug:!1,colors:!0,emojis:!0},gf={...Xhe};M={debug:j,info:pU,warn:mU,error:fU,success:hU,formatError:qy,configure:zy}});function _U(t){return typeof t=="number"&&Number.isInteger(t)&&t>0?t:1}function Hy(t,e){if(typeof t!="object"||t===null)return{kind:"malformed",reason:"frame is not an object"};let r=t.type;return typeof r!="string"?{kind:"malformed",reason:'frame has no string "type"'}:e.has(r)?{kind:"ok",frame:t}:{kind:"unknown",type:r,protocolVersion:_U(t.protocol_version)}}function EU(t){if(typeof t!="object"||t===null||typeof t.type=="string")return null;let e=t.error;return typeof e!="string"||e===""?null:{unknown_model:"That model is not available on Aii Cloud. Pick a model from your cloud dashboard (cloud.aiiware.com) or run with --local.",insufficient_credits:"Out of Aii Cloud credits. Top up to continue, or run with --local.",quota_exceeded:"Daily free-tier limit reached on Aii Cloud. Try again later, upgrade, or run with --local.",quota_check_failed:"Aii Cloud could not verify your quota \u2014 please retry.",worker_unavailable:"Aii Cloud is temporarily unavailable \u2014 please retry, or run with --local."}[e]??`Aii Cloud error: ${e}`}function Nk(t){return t==null||typeof t=="object"}function Yy(t){switch(t.type){case"tool_request":return Nk(t.input);case"mcp_tool_request":return Nk(t.params);case"tool_batch_request":{let e=t.tools;return e==null||Array.isArray(e)&&e.every(r=>r==null||typeof r=="object"&&Nk(r.input))}default:return!0}}function Wy(t){return _U(t)>2?"hard":"compatible"}function Vy(t){return`This Aii Server speaks protocol v${t}, but your CLI speaks v2. Some responses may not work correctly. Update with: aii upgrade`}var yU,SU,jy,Ok=A(()=>{"use strict";yU=new Set(["token","complete","error","mcp_query_tools","mcp_tool_request","reasoning","reasoning_label","web_search_started","web_search_completed","follow_ups","task.step.updated","task.artifact.added"]),SU=new Set(["session_started","turn_ready","token","iteration_tokens_usage","tool_request","tool_batch_request","tool_status","complete","error","mcp_query_tools","mcp_tool_request","reasoning","reasoning_label","web_search_started","web_search_completed","follow_ups","task.step.updated","task.artifact.added"]),jy=new Set(["tool_request","tool_batch_request","mcp_tool_request"])});var Mk={};ye(Mk,{MCPConfigManager:()=>Qt,MCP_CATALOG:()=>Ol});import*as Jn from"fs";import*as Ky from"path";import*as xk from"os";var Ol,Qt,ma=A(()=>{"use strict";Ol={github:{name:"GitHub",description:"GitHub API integration for repos, issues, PRs, and more",command:"npx",args:["-y","@modelcontextprotocol/server-github"],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"${GITHUB_TOKEN}"},category:"development"},filesystem:{name:"Filesystem",description:"Read/write files on the local filesystem",command:"npx",args:["-y","@modelcontextprotocol/server-filesystem",xk.homedir()],category:"system"},"brave-search":{name:"Brave Search",description:"Web search using Brave Search API",command:"npx",args:["-y","@brave/brave-search-mcp-server"],env:{BRAVE_API_KEY:"${BRAVE_API_KEY}"},category:"search"},sqlite:{name:"SQLite",description:"Query SQLite databases",command:"uvx",args:["mcp-server-sqlite","--db-path","./database.db"],category:"database"},postgres:{name:"PostgreSQL",description:"Query PostgreSQL databases",command:"npx",args:["-y","@anthropic/mcp-server-postgres"],env:{DATABASE_URL:"${DATABASE_URL}"},category:"database"},"chrome-devtools":{name:"Chrome DevTools",description:"Control Chrome browser via DevTools protocol",command:"npx",args:["chrome-devtools-mcp@latest"],category:"browser"},memory:{name:"Memory",description:"Persistent memory storage for conversation context",command:"npx",args:["-y","@modelcontextprotocol/server-memory"],category:"utility"},puppeteer:{name:"Puppeteer",description:"Browser automation with Puppeteer",command:"npx",args:["-y","@anthropic/mcp-server-puppeteer"],category:"browser"}},Qt=class{configPath;constructor(e){this.configPath=e||Ky.join(xk.homedir(),".aii","mcp_servers.json"),this.ensureConfigDir()}ensureConfigDir(){let e=Ky.dirname(this.configPath);Jn.existsSync(e)||Jn.mkdirSync(e,{recursive:!0})}loadConfig(){if(!Jn.existsSync(this.configPath))return{mcpServers:{}};try{let e=Jn.readFileSync(this.configPath,"utf-8"),r=JSON.parse(e);return typeof r=="object"&&r!==null?r:{mcpServers:{}}}catch{return{mcpServers:{}}}}saveConfig(e){try{return this.ensureConfigDir(),Jn.writeFileSync(this.configPath,JSON.stringify(e,null,2),"utf-8"),!0}catch{return!1}}backupConfig(){if(!Jn.existsSync(this.configPath))return!0;try{let e=this.configPath+".backup";return Jn.copyFileSync(this.configPath,e),!0}catch{return!1}}getConfigPath(){return this.configPath}}});var Jhe,Zhe,ege,tge,rge,nge,sge,xl,Qy,fa,Pk=A(()=>{"use strict";Se();Jhe={name:"classic",label:"Classic",description:"Aii jellyfish blue-purple (default)",accentColorName:"#3B82F6",userInputTextColorName:"#93C5FD",colors:{accent:m.hex("#3B82F6"),userInput:m.hex("#3B82F6"),userInputText:m.hex("#93C5FD"),success:m.hex("#22C55E"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#A855F7"),link:m.hex("#3B82F6").underline,heading:m.hex("#A855F7").bold,filePath:m.hex("#3B82F6"),indicator:m.hex("#3B82F6")}},Zhe={name:"brand",label:"Brand",description:"aiiware.com official palette",accentColorName:"#4E6BF5",userInputTextColorName:"#A5B4FC",colors:{accent:m.hex("#4E6BF5"),userInput:m.hex("#4E6BF5"),userInputText:m.hex("#A5B4FC"),success:m.hex("#28CA41"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#4E6BF5"),link:m.hex("#4E6BF5").underline,heading:m.hex("#4E6BF5").bold,filePath:m.hex("#4E6BF5"),indicator:m.hex("#4E6BF5")}},ege={name:"teal",label:"Teal",description:"Original teal accent",accentColorName:"#00BCD4",userInputTextColorName:"#67E8F9",colors:{accent:m.hex("#00BCD4"),userInput:m.hex("#00BCD4"),userInputText:m.hex("#67E8F9"),success:m.hex("#22C55E"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#00BCD4"),link:m.hex("#00BCD4").underline,heading:m.hex("#00BCD4").bold,filePath:m.hex("#00BCD4"),indicator:m.hex("#00BCD4")}},tge={name:"indigo",label:"Indigo",description:"Bright periwinkle-blue",accentColorName:"#6B8AFF",userInputTextColorName:"#A5B4FC",colors:{accent:m.hex("#6B8AFF"),userInput:m.hex("#6B8AFF"),userInputText:m.hex("#A5B4FC"),success:m.hex("#28CA41"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#6B8AFF"),link:m.hex("#6B8AFF").underline,heading:m.hex("#6B8AFF").bold,filePath:m.hex("#6B8AFF"),indicator:m.hex("#6B8AFF")}},rge={name:"forest",label:"Forest",description:"Natural green",accentColorName:"#22C55E",userInputTextColorName:"#86EFAC",colors:{accent:m.hex("#22C55E"),userInput:m.hex("#22C55E"),userInputText:m.hex("#86EFAC"),success:m.hex("#22C55E"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#22C55E"),link:m.hex("#22C55E").underline,heading:m.hex("#22C55E").bold,filePath:m.hex("#22C55E"),indicator:m.hex("#22C55E")}},nge={name:"amber",label:"Amber",description:"Warm orange-gold",accentColorName:"#F59E0B",userInputTextColorName:"#FCD34D",colors:{accent:m.hex("#F59E0B"),userInput:m.hex("#F59E0B"),userInputText:m.hex("#FCD34D"),success:m.hex("#22C55E"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#F59E0B"),link:m.hex("#F59E0B").underline,heading:m.hex("#F59E0B").bold,filePath:m.hex("#F59E0B"),indicator:m.hex("#F59E0B")}},sge={name:"grayscale",label:"Grayscale",description:"Accessible, no colors",accentColorName:"white",userInputTextColorName:"#CBD5E1",colors:{accent:m.reset,userInput:m.reset,userInputText:m.hex("#CBD5E1"),success:m.reset,warning:m.reset,error:m.bold,muted:m.dim,dim:m.dim,code:m.reset,link:m.underline,heading:m.bold,filePath:m.reset,indicator:m.bold}},xl={classic:Jhe,brand:Zhe,teal:ege,indigo:tge,forest:rge,amber:nge,grayscale:sge},Qy="classic",fa=["classic","brand","teal","indigo","forest","amber","grayscale"]});var Ml={};ye(Ml,{ThemeManager:()=>si,getAccentColorName:()=>De,getThemeColors:()=>q,getUserInputTextColorName:()=>$u});function q(){return si.getInstance().getColors()}function De(){return si.getInstance().getAccentColorName()}function $u(){return si.getInstance().getUserInputTextColorName()}var si,ha=A(()=>{"use strict";Pk();si=class t{static instance=null;activeTheme;constructor(){this.activeTheme=xl[Qy]}static getInstance(){return t.instance||(t.instance=new t),t.instance}getTheme(){return this.activeTheme}getColors(){return this.activeTheme.colors}getThemeName(){return this.activeTheme.name}setTheme(e){let r=xl[e];if(!r){let n=fa.join(", ");throw new Error(`Unknown theme: "${e}". Available themes: ${n}`)}this.activeTheme=r}isValidTheme(e){return e in xl}getAvailableThemes(){return fa.map(e=>xl[e])}getAccentColorName(){return this.activeTheme.accentColorName}getUserInputTextColorName(){return this.activeTheme.userInputTextColorName}reset(){this.activeTheme=xl[Qy]}}});var ct=A(()=>{"use strict";Pk();ha()});import{resolve as oge}from"path";function ige(){let t=process.env.TERM??"",e=process.env.TERM_PROGRAM??"",r=process.env.COLORTERM??"",n=process.env.WT_SESSION??"",s=process.env.VSCODE_INJECTION??process.env.TERM_PROGRAM==="vscode";return e==="iTerm.app"||e==="Hyper"||e==="vscode"||e==="WezTerm"||e==="Alacritty"||n||s||t.includes("xterm-256color")||t.includes("screen-256color")||t.includes("tmux")||t==="xterm-kitty"||r==="truecolor"?!0:!(t==="dumb"||!process.stdout.isTTY)}function Ef(){return Lk===null&&(Lk=ige()),Lk}function age(){return process.platform==="darwin"?"Cmd":"Ctrl"}function TU(){return bU||!Ef()?"":(bU=!0,` (${age()}+Click to open)`)}function lge(t,e){return Ef()?`\x1B]8;;${e}\x07${t}\x1B]8;;\x07`:t}function wU(t,e){let r=process.env.HOME??process.env.USERPROFILE??"",n=t;r&&t.startsWith(r)&&(n="~"+t.slice(r.length));let s=e?`${n}:${e}`:n;if(!Ef())return q().filePath(s);let o=q().accent(s),a=`file://${oge(t)}`;return e!==void 0&&e>0&&(a+=`#L${e}`),lge(o,a)}var Lk,bU,CU=A(()=>{"use strict";ct();Lk=null,bU=!1});var AU={};ye(AU,{VERSION:()=>Pl,colors:()=>L,formatCode:()=>_ge,formatPath:()=>Sf,getActionIndicator:()=>gge,padEndAnsi:()=>bge,printAction:()=>cge,printDivider:()=>kU,printError:()=>fge,printExitSummary:()=>$k,printHeader:()=>hge,printSuccess:()=>pge,printToolComplete:()=>uge,printToolFailed:()=>dge,printToolResultCompact:()=>Uu,printWarning:()=>mge,shortenPath:()=>yge});function yf(t){return t.startsWith("/")||t.startsWith("~/")||t.startsWith("./")||t.startsWith("../")||/^[a-zA-Z]:\\/.test(t)||/\.(ts|tsx|js|jsx|json|md|py|go|rs|java|c|cpp|h|hpp|css|scss|html|xml|yaml|yml|toml|sh|bash|zsh)$/.test(t)||/^src\//.test(t)||/^lib\//.test(t)||/^test[s]?\//.test(t)}function cge(t,e,r=console.log){let n=yf(e)?Sf(e):L.filePath(e);r(L.dim("\u25CB ")+m.bold(t)+" "+n)}function uge(t,e,r=console.log){let n=yf(e)?Sf(e):L.filePath(e);r(L.success("\u2713 ")+m.bold(t)+" "+n)}function dge(t,e,r,n=console.log){let s=yf(e)?Sf(e):L.filePath(e);n(L.error("\u2717 ")+m.bold(t)+" "+s),r&&n(L.dim(" \u2192 ")+L.error(r))}function Uu(t,e,r=!0,n,s=console.log){let o=r?L.success("\u25CF"):L.error("\u25CF"),i=60,a=e.length>i?e.slice(0,i-3)+"...":e;if(yf(e)){let u=e.match(/:(\d+)$/),d=u?parseInt(u[1],10):void 0,p=u?e.replace(/:(\d+)$/,""):e;a=Sf(p,d)}s(`${o} ${m.bold(t)}(${a})`);let l=yf(e)?L.dim(TU()):"",c=!l&&!vU?L.dim(" (ctrl+o to expand)"):"";if(c&&(vU=!0),n){let u=r?L.dim:L.error;s(u(`\u2514 ${n}`)+l+c)}else{let u=r?"(No content)":"(Error)",d=r?L.dim:L.error;s(d(`\u2514 ${u}`)+l+c)}}function pge(t){console.log(L.success("\u2713 ")+t)}function mge(t){console.log(L.warning("\u26A0 ")+t)}function fge(t){console.log(L.error("\u2717 ")+t)}function kU(t=60){console.log(L.dim("\u2500".repeat(t)))}function hge(t){console.log(L.logo(t)),kU(t.length)}function gge(t){return L.thinking(`[${t}]`)}function Sf(t,e){if(Ef())return wU(t,e);let r=process.env.HOME??process.env.USERPROFILE??"",n=t;return r&&t.startsWith(r)&&(n="~"+t.slice(r.length)),e&&(n+=`:${e}`),L.filePath(n)}function _ge(t){return L.code(t)}function Ege(){return process.stdout.columns||80}function yge(t,e=40){let r=process.env.HOME??process.env.USERPROFILE??"",n=t;if(r&&t.startsWith(r)&&(n="~"+t.slice(r.length)),n.length<=e)return n;let s=n.split("/").filter(i=>i.length>0);if(s.length>=2){let i=s.slice(-2).join("/");if(i.length<=e-4)return".../"+i}return".../"+(s[s.length-1]||s[s.length-2])}function Sge(t){return t.replace(/\x1b\[[0-9;]*m/g,"").length}function bge(t,e){let r=Sge(t),n=Math.max(0,e-r);return t+" ".repeat(n)}function Tge(t){if(t<60)return`${t}s`;let e=Math.floor(t/60),r=t%60;return r>0?`${e}m ${r}s`:`${e}m`}function Fk(t){return t>=1e3?`${(t/1e3).toFixed(1)}K`:t.toString()}function $k(t){let e=Ege(),r=Math.min(e-2,76),n=r-4,s=(g,_)=>{let E=g.replace(/\x1b\[[0-9;]*m/g,"").length;return g+" ".repeat(Math.max(0,_-E))},o=g=>L.border("\u2502")+" "+s(g,n)+" "+L.border("\u2502"),i=(g,_,E,S)=>{let T=Math.floor(n/2),w=L.dim(g.padEnd(15))+_,C=L.dim(E.padEnd(15))+S;return o(s(w,T)+C)},a=Tge(t.durationSeconds),l=Fk(t.tokensIn),c=Fk(t.tokensOut),u=`$${t.totalCost.toFixed(4)}`,d=t.cloud?`\u2601 Cloud \xB7 ${t.model}`:`${t.provider}/${t.model.replace("claude-","").replace("-latest","")}`;console.log(""),console.log(L.border("\u250C"+"\u2500".repeat(r-2)+"\u2510")),console.log(o(L.logo("Session complete. \u{1FABC}"))),console.log(L.border("\u251C"+"\u2500".repeat(r-2)+"\u2524")),console.log(o(L.logo("Session Summary"))),console.log(o(L.dim("\u2500".repeat(15)))),console.log(i("Duration",a,"Tool Calls",t.toolCalls.toString())),console.log(i("Turns",t.turns.toString(),"Files Modified",t.filesModified.toString())),console.log(o("")),console.log(o(L.logo("Token Usage"))),console.log(o(L.dim("\u2500".repeat(11)))),console.log(i("Input",l,"Output",c));let p=t.cachedTokens??0;if(p>0){let g=Math.min(100,Math.round(100*p/Math.max(1,t.tokensIn)));console.log(o(L.dim("Cached".padEnd(15))+`${Fk(p)} (${g}%)`))}let f=t.cacheSavings??0,h=f>0?L.dim(` \xB7 saved ~$${f.toFixed(4)} by prompt caching`):"";console.log(o(L.dim("Cost".padEnd(15))+u+h)),console.log(o("")),console.log(o(L.dim("Model: ")+L.model(d))),console.log(L.border("\u2514"+"\u2500".repeat(r-2)+"\u2518")),console.log("")}var Pl,L,vU,sr=A(()=>{"use strict";Se();CU();ct();Pl="0.17.10",L={get logo(){return q().accent.bold},get prompt(){return q().accent.bold},get model(){return q().accent},get success(){return q().success},get warning(){return q().warning},get error(){return q().error},get thinking(){return q().dim},get filePath(){return q().filePath},get code(){return q().code},get muted(){return q().muted},get dim(){return q().dim},get safe(){return q().success},get risky(){return q().warning},get destructive(){return q().error},get border(){return q().accent},get bannerBorder(){return q().accent}};vU=!1});var Zn,Bu,Uk=A(()=>{"use strict";Zn={maxConcurrent:5,maxIterations:100,timeout:3e5,autoBackgroundTimeout:12e4,compressionLevel:"medium",permissionMode:"default"},Bu={maxConcurrent:3,timeout:30*60*1e3,permissionMode:"dontAsk"}});var Xy,Bk=A(()=>{"use strict";Xy=`You are an expert codebase explorer. Your task is to efficiently explore and understand codebases.
|
|
202
|
+
`)}var Xhe,gf,M,lt=A(()=>{"use strict";Se();Xhe={debug:!1,colors:!0,emojis:!0},gf={...Xhe};M={debug:j,info:pU,warn:mU,error:fU,success:hU,formatError:qy,configure:zy}});function _U(t){return typeof t=="number"&&Number.isInteger(t)&&t>0?t:1}function Hy(t,e){if(typeof t!="object"||t===null)return{kind:"malformed",reason:"frame is not an object"};let r=t.type;return typeof r!="string"?{kind:"malformed",reason:'frame has no string "type"'}:e.has(r)?{kind:"ok",frame:t}:{kind:"unknown",type:r,protocolVersion:_U(t.protocol_version)}}function EU(t){if(typeof t!="object"||t===null||typeof t.type=="string")return null;let e=t.error;return typeof e!="string"||e===""?null:{unknown_model:"That model is not available on Aii Cloud. Pick a model from your cloud dashboard (cloud.aiiware.com) or run with --local.",insufficient_credits:"Out of Aii Cloud credits. Top up to continue, or run with --local.",quota_exceeded:"Daily free-tier limit reached on Aii Cloud. Try again later, upgrade, or run with --local.",quota_check_failed:"Aii Cloud could not verify your quota \u2014 please retry.",worker_unavailable:"Aii Cloud is temporarily unavailable \u2014 please retry, or run with --local."}[e]??`Aii Cloud error: ${e}`}function Nk(t){return t==null||typeof t=="object"}function Yy(t){switch(t.type){case"tool_request":return Nk(t.input);case"mcp_tool_request":return Nk(t.params);case"tool_batch_request":{let e=t.tools;return e==null||Array.isArray(e)&&e.every(r=>r==null||typeof r=="object"&&Nk(r.input))}default:return!0}}function Wy(t){return _U(t)>2?"hard":"compatible"}function Vy(t){return`This Aii Server speaks protocol v${t}, but your CLI speaks v2. Some responses may not work correctly. Update with: aii upgrade`}var yU,SU,jy,Ok=A(()=>{"use strict";yU=new Set(["token","complete","error","mcp_query_tools","mcp_tool_request","reasoning","reasoning_label","web_search_started","web_search_completed","follow_ups","task.step.updated","task.artifact.added"]),SU=new Set(["session_started","turn_ready","token","iteration_tokens_usage","tool_request","tool_batch_request","tool_status","complete","error","mcp_query_tools","mcp_tool_request","reasoning","reasoning_label","web_search_started","web_search_completed","follow_ups","task.step.updated","task.artifact.added"]),jy=new Set(["tool_request","tool_batch_request","mcp_tool_request"])});var Mk={};ye(Mk,{MCPConfigManager:()=>Qt,MCP_CATALOG:()=>Ol});import*as Jn from"fs";import*as Ky from"path";import*as xk from"os";var Ol,Qt,ma=A(()=>{"use strict";Ol={github:{name:"GitHub",description:"GitHub API integration for repos, issues, PRs, and more",command:"npx",args:["-y","@modelcontextprotocol/server-github"],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"${GITHUB_TOKEN}"},category:"development"},filesystem:{name:"Filesystem",description:"Read/write files on the local filesystem",command:"npx",args:["-y","@modelcontextprotocol/server-filesystem",xk.homedir()],category:"system"},"brave-search":{name:"Brave Search",description:"Web search using Brave Search API",command:"npx",args:["-y","@brave/brave-search-mcp-server"],env:{BRAVE_API_KEY:"${BRAVE_API_KEY}"},category:"search"},sqlite:{name:"SQLite",description:"Query SQLite databases",command:"uvx",args:["mcp-server-sqlite","--db-path","./database.db"],category:"database"},postgres:{name:"PostgreSQL",description:"Query PostgreSQL databases",command:"npx",args:["-y","@anthropic/mcp-server-postgres"],env:{DATABASE_URL:"${DATABASE_URL}"},category:"database"},"chrome-devtools":{name:"Chrome DevTools",description:"Control Chrome browser via DevTools protocol",command:"npx",args:["chrome-devtools-mcp@latest"],category:"browser"},memory:{name:"Memory",description:"Persistent memory storage for conversation context",command:"npx",args:["-y","@modelcontextprotocol/server-memory"],category:"utility"},puppeteer:{name:"Puppeteer",description:"Browser automation with Puppeteer",command:"npx",args:["-y","@anthropic/mcp-server-puppeteer"],category:"browser"}},Qt=class{configPath;constructor(e){this.configPath=e||Ky.join(xk.homedir(),".aii","mcp_servers.json"),this.ensureConfigDir()}ensureConfigDir(){let e=Ky.dirname(this.configPath);Jn.existsSync(e)||Jn.mkdirSync(e,{recursive:!0})}loadConfig(){if(!Jn.existsSync(this.configPath))return{mcpServers:{}};try{let e=Jn.readFileSync(this.configPath,"utf-8"),r=JSON.parse(e);return typeof r=="object"&&r!==null?r:{mcpServers:{}}}catch{return{mcpServers:{}}}}saveConfig(e){try{return this.ensureConfigDir(),Jn.writeFileSync(this.configPath,JSON.stringify(e,null,2),"utf-8"),!0}catch{return!1}}backupConfig(){if(!Jn.existsSync(this.configPath))return!0;try{let e=this.configPath+".backup";return Jn.copyFileSync(this.configPath,e),!0}catch{return!1}}getConfigPath(){return this.configPath}}});var Jhe,Zhe,ege,tge,rge,nge,sge,xl,Qy,fa,Pk=A(()=>{"use strict";Se();Jhe={name:"classic",label:"Classic",description:"Aii jellyfish blue-purple (default)",accentColorName:"#3B82F6",userInputTextColorName:"#93C5FD",colors:{accent:m.hex("#3B82F6"),userInput:m.hex("#3B82F6"),userInputText:m.hex("#93C5FD"),success:m.hex("#22C55E"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#A855F7"),link:m.hex("#3B82F6").underline,heading:m.hex("#A855F7").bold,filePath:m.hex("#3B82F6"),indicator:m.hex("#3B82F6")}},Zhe={name:"brand",label:"Brand",description:"aiiware.com official palette",accentColorName:"#4E6BF5",userInputTextColorName:"#A5B4FC",colors:{accent:m.hex("#4E6BF5"),userInput:m.hex("#4E6BF5"),userInputText:m.hex("#A5B4FC"),success:m.hex("#28CA41"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#4E6BF5"),link:m.hex("#4E6BF5").underline,heading:m.hex("#4E6BF5").bold,filePath:m.hex("#4E6BF5"),indicator:m.hex("#4E6BF5")}},ege={name:"teal",label:"Teal",description:"Original teal accent",accentColorName:"#00BCD4",userInputTextColorName:"#67E8F9",colors:{accent:m.hex("#00BCD4"),userInput:m.hex("#00BCD4"),userInputText:m.hex("#67E8F9"),success:m.hex("#22C55E"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#00BCD4"),link:m.hex("#00BCD4").underline,heading:m.hex("#00BCD4").bold,filePath:m.hex("#00BCD4"),indicator:m.hex("#00BCD4")}},tge={name:"indigo",label:"Indigo",description:"Bright periwinkle-blue",accentColorName:"#6B8AFF",userInputTextColorName:"#A5B4FC",colors:{accent:m.hex("#6B8AFF"),userInput:m.hex("#6B8AFF"),userInputText:m.hex("#A5B4FC"),success:m.hex("#28CA41"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#6B8AFF"),link:m.hex("#6B8AFF").underline,heading:m.hex("#6B8AFF").bold,filePath:m.hex("#6B8AFF"),indicator:m.hex("#6B8AFF")}},rge={name:"forest",label:"Forest",description:"Natural green",accentColorName:"#22C55E",userInputTextColorName:"#86EFAC",colors:{accent:m.hex("#22C55E"),userInput:m.hex("#22C55E"),userInputText:m.hex("#86EFAC"),success:m.hex("#22C55E"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#22C55E"),link:m.hex("#22C55E").underline,heading:m.hex("#22C55E").bold,filePath:m.hex("#22C55E"),indicator:m.hex("#22C55E")}},nge={name:"amber",label:"Amber",description:"Warm orange-gold",accentColorName:"#F59E0B",userInputTextColorName:"#FCD34D",colors:{accent:m.hex("#F59E0B"),userInput:m.hex("#F59E0B"),userInputText:m.hex("#FCD34D"),success:m.hex("#22C55E"),warning:m.hex("#EAB308"),error:m.hex("#EF4444"),muted:m.hex("#94A3B8"),dim:m.dim,code:m.hex("#F59E0B"),link:m.hex("#F59E0B").underline,heading:m.hex("#F59E0B").bold,filePath:m.hex("#F59E0B"),indicator:m.hex("#F59E0B")}},sge={name:"grayscale",label:"Grayscale",description:"Accessible, no colors",accentColorName:"white",userInputTextColorName:"#CBD5E1",colors:{accent:m.reset,userInput:m.reset,userInputText:m.hex("#CBD5E1"),success:m.reset,warning:m.reset,error:m.bold,muted:m.dim,dim:m.dim,code:m.reset,link:m.underline,heading:m.bold,filePath:m.reset,indicator:m.bold}},xl={classic:Jhe,brand:Zhe,teal:ege,indigo:tge,forest:rge,amber:nge,grayscale:sge},Qy="classic",fa=["classic","brand","teal","indigo","forest","amber","grayscale"]});var Ml={};ye(Ml,{ThemeManager:()=>si,getAccentColorName:()=>De,getThemeColors:()=>q,getUserInputTextColorName:()=>$u});function q(){return si.getInstance().getColors()}function De(){return si.getInstance().getAccentColorName()}function $u(){return si.getInstance().getUserInputTextColorName()}var si,ha=A(()=>{"use strict";Pk();si=class t{static instance=null;activeTheme;constructor(){this.activeTheme=xl[Qy]}static getInstance(){return t.instance||(t.instance=new t),t.instance}getTheme(){return this.activeTheme}getColors(){return this.activeTheme.colors}getThemeName(){return this.activeTheme.name}setTheme(e){let r=xl[e];if(!r){let n=fa.join(", ");throw new Error(`Unknown theme: "${e}". Available themes: ${n}`)}this.activeTheme=r}isValidTheme(e){return e in xl}getAvailableThemes(){return fa.map(e=>xl[e])}getAccentColorName(){return this.activeTheme.accentColorName}getUserInputTextColorName(){return this.activeTheme.userInputTextColorName}reset(){this.activeTheme=xl[Qy]}}});var ct=A(()=>{"use strict";Pk();ha()});import{resolve as oge}from"path";function ige(){let t=process.env.TERM??"",e=process.env.TERM_PROGRAM??"",r=process.env.COLORTERM??"",n=process.env.WT_SESSION??"",s=process.env.VSCODE_INJECTION??process.env.TERM_PROGRAM==="vscode";return e==="iTerm.app"||e==="Hyper"||e==="vscode"||e==="WezTerm"||e==="Alacritty"||n||s||t.includes("xterm-256color")||t.includes("screen-256color")||t.includes("tmux")||t==="xterm-kitty"||r==="truecolor"?!0:!(t==="dumb"||!process.stdout.isTTY)}function Ef(){return Lk===null&&(Lk=ige()),Lk}function age(){return process.platform==="darwin"?"Cmd":"Ctrl"}function TU(){return bU||!Ef()?"":(bU=!0,` (${age()}+Click to open)`)}function lge(t,e){return Ef()?`\x1B]8;;${e}\x07${t}\x1B]8;;\x07`:t}function wU(t,e){let r=process.env.HOME??process.env.USERPROFILE??"",n=t;r&&t.startsWith(r)&&(n="~"+t.slice(r.length));let s=e?`${n}:${e}`:n;if(!Ef())return q().filePath(s);let o=q().accent(s),a=`file://${oge(t)}`;return e!==void 0&&e>0&&(a+=`#L${e}`),lge(o,a)}var Lk,bU,CU=A(()=>{"use strict";ct();Lk=null,bU=!1});var AU={};ye(AU,{VERSION:()=>Pl,colors:()=>L,formatCode:()=>_ge,formatPath:()=>Sf,getActionIndicator:()=>gge,padEndAnsi:()=>bge,printAction:()=>cge,printDivider:()=>kU,printError:()=>fge,printExitSummary:()=>$k,printHeader:()=>hge,printSuccess:()=>pge,printToolComplete:()=>uge,printToolFailed:()=>dge,printToolResultCompact:()=>Uu,printWarning:()=>mge,shortenPath:()=>yge});function yf(t){return t.startsWith("/")||t.startsWith("~/")||t.startsWith("./")||t.startsWith("../")||/^[a-zA-Z]:\\/.test(t)||/\.(ts|tsx|js|jsx|json|md|py|go|rs|java|c|cpp|h|hpp|css|scss|html|xml|yaml|yml|toml|sh|bash|zsh)$/.test(t)||/^src\//.test(t)||/^lib\//.test(t)||/^test[s]?\//.test(t)}function cge(t,e,r=console.log){let n=yf(e)?Sf(e):L.filePath(e);r(L.dim("\u25CB ")+m.bold(t)+" "+n)}function uge(t,e,r=console.log){let n=yf(e)?Sf(e):L.filePath(e);r(L.success("\u2713 ")+m.bold(t)+" "+n)}function dge(t,e,r,n=console.log){let s=yf(e)?Sf(e):L.filePath(e);n(L.error("\u2717 ")+m.bold(t)+" "+s),r&&n(L.dim(" \u2192 ")+L.error(r))}function Uu(t,e,r=!0,n,s=console.log){let o=r?L.success("\u25CF"):L.error("\u25CF"),i=60,a=e.length>i?e.slice(0,i-3)+"...":e;if(yf(e)){let u=e.match(/:(\d+)$/),d=u?parseInt(u[1],10):void 0,p=u?e.replace(/:(\d+)$/,""):e;a=Sf(p,d)}s(`${o} ${m.bold(t)}(${a})`);let l=yf(e)?L.dim(TU()):"",c=!l&&!vU?L.dim(" (ctrl+o to expand)"):"";if(c&&(vU=!0),n){let u=r?L.dim:L.error;s(u(`\u2514 ${n}`)+l+c)}else{let u=r?"(No content)":"(Error)",d=r?L.dim:L.error;s(d(`\u2514 ${u}`)+l+c)}}function pge(t){console.log(L.success("\u2713 ")+t)}function mge(t){console.log(L.warning("\u26A0 ")+t)}function fge(t){console.log(L.error("\u2717 ")+t)}function kU(t=60){console.log(L.dim("\u2500".repeat(t)))}function hge(t){console.log(L.logo(t)),kU(t.length)}function gge(t){return L.thinking(`[${t}]`)}function Sf(t,e){if(Ef())return wU(t,e);let r=process.env.HOME??process.env.USERPROFILE??"",n=t;return r&&t.startsWith(r)&&(n="~"+t.slice(r.length)),e&&(n+=`:${e}`),L.filePath(n)}function _ge(t){return L.code(t)}function Ege(){return process.stdout.columns||80}function yge(t,e=40){let r=process.env.HOME??process.env.USERPROFILE??"",n=t;if(r&&t.startsWith(r)&&(n="~"+t.slice(r.length)),n.length<=e)return n;let s=n.split("/").filter(i=>i.length>0);if(s.length>=2){let i=s.slice(-2).join("/");if(i.length<=e-4)return".../"+i}return".../"+(s[s.length-1]||s[s.length-2])}function Sge(t){return t.replace(/\x1b\[[0-9;]*m/g,"").length}function bge(t,e){let r=Sge(t),n=Math.max(0,e-r);return t+" ".repeat(n)}function Tge(t){if(t<60)return`${t}s`;let e=Math.floor(t/60),r=t%60;return r>0?`${e}m ${r}s`:`${e}m`}function Fk(t){return t>=1e3?`${(t/1e3).toFixed(1)}K`:t.toString()}function $k(t){let e=Ege(),r=Math.min(e-2,76),n=r-4,s=(g,_)=>{let E=g.replace(/\x1b\[[0-9;]*m/g,"").length;return g+" ".repeat(Math.max(0,_-E))},o=g=>L.border("\u2502")+" "+s(g,n)+" "+L.border("\u2502"),i=(g,_,E,S)=>{let T=Math.floor(n/2),w=L.dim(g.padEnd(15))+_,C=L.dim(E.padEnd(15))+S;return o(s(w,T)+C)},a=Tge(t.durationSeconds),l=Fk(t.tokensIn),c=Fk(t.tokensOut),u=`$${t.totalCost.toFixed(4)}`,d=t.cloud?`\u2601 Cloud \xB7 ${t.model}`:`${t.provider}/${t.model.replace("claude-","").replace("-latest","")}`;console.log(""),console.log(L.border("\u250C"+"\u2500".repeat(r-2)+"\u2510")),console.log(o(L.logo("Session complete. \u{1FABC}"))),console.log(L.border("\u251C"+"\u2500".repeat(r-2)+"\u2524")),console.log(o(L.logo("Session Summary"))),console.log(o(L.dim("\u2500".repeat(15)))),console.log(i("Duration",a,"Tool Calls",t.toolCalls.toString())),console.log(i("Turns",t.turns.toString(),"Files Modified",t.filesModified.toString())),console.log(o("")),console.log(o(L.logo("Token Usage"))),console.log(o(L.dim("\u2500".repeat(11)))),console.log(i("Input",l,"Output",c));let p=t.cachedTokens??0;if(p>0){let g=Math.min(100,Math.round(100*p/Math.max(1,t.tokensIn)));console.log(o(L.dim("Cached".padEnd(15))+`${Fk(p)} (${g}%)`))}let f=t.cacheSavings??0,h=f>0?L.dim(` \xB7 saved ~$${f.toFixed(4)} by prompt caching`):"";console.log(o(L.dim("Cost".padEnd(15))+u+h)),console.log(o("")),console.log(o(L.dim("Model: ")+L.model(d))),console.log(L.border("\u2514"+"\u2500".repeat(r-2)+"\u2518")),console.log("")}var Pl,L,vU,sr=A(()=>{"use strict";Se();CU();ct();Pl="0.17.11",L={get logo(){return q().accent.bold},get prompt(){return q().accent.bold},get model(){return q().accent},get success(){return q().success},get warning(){return q().warning},get error(){return q().error},get thinking(){return q().dim},get filePath(){return q().filePath},get code(){return q().code},get muted(){return q().muted},get dim(){return q().dim},get safe(){return q().success},get risky(){return q().warning},get destructive(){return q().error},get border(){return q().accent},get bannerBorder(){return q().accent}};vU=!1});var Zn,Bu,Uk=A(()=>{"use strict";Zn={maxConcurrent:5,maxIterations:100,timeout:3e5,autoBackgroundTimeout:12e4,compressionLevel:"medium",permissionMode:"default"},Bu={maxConcurrent:3,timeout:30*60*1e3,permissionMode:"dontAsk"}});var Xy,Bk=A(()=>{"use strict";Xy=`You are an expert codebase explorer. Your task is to efficiently explore and understand codebases.
|
|
203
203
|
|
|
204
204
|
## Core Capabilities
|
|
205
205
|
You have access to these tools for codebase exploration:
|
|
@@ -3507,7 +3507,7 @@ To enter: cd ${s.path}`);break}case"list":{let s=await tl(n);if(s.length===0){co
|
|
|
3507
3507
|
`)),console.log(" aii cloud login Sign in to Aii Cloud (device authorization)"),console.log(" aii cloud status Show connection + credit balance"),console.log(m.gray(`
|
|
3508
3508
|
Note: running the agent over cloud arrives in a later release; today this
|
|
3509
3509
|
sets up + inspects the connection.
|
|
3510
|
-
`))}var ele=A(()=>{"use strict";Se();qp();O0();Jae()});var nle={};ye(nle,{handleUpgrade:()=>g6e});import{execSync as tle}from"node:child_process";async function g6e(t){let e=t.args[0]||null,r="0.17.
|
|
3510
|
+
`))}var ele=A(()=>{"use strict";Se();qp();O0();Jae()});var nle={};ye(nle,{handleUpgrade:()=>g6e});import{execSync as tle}from"node:child_process";async function g6e(t){let e=t.args[0]||null,r="0.17.11",n=e?`${rle}@${e}`:`${rle}@latest`;console.log(""),console.log(e?`Upgrading Aii CLI to v${e}...`:"Upgrading Aii CLI to latest..."),console.log(` Current version: ${r}`),console.log("");try{tle(`npm install -g ${n}`,{stdio:"inherit",timeout:12e4})}catch{console.error(`
|
|
3511
3511
|
Upgrade failed. Try running with sudo or check npm permissions.`),console.error(` Manual: npm install -g ${n}`),process.exit(1)}try{let s=tle("aii --version 2>/dev/null",{encoding:"utf-8",timeout:1e4,stdio:"pipe"}).trim();console.log(""),console.log(s===r?`Already up to date (${r})`:`Upgraded: ${r} -> ${s}`)}catch{console.log(""),console.log("Installed. Restart your terminal to use the new version.")}}var rle,sle=A(()=>{"use strict";rle="@aiiware/aii"});var ole={};ye(ole,{handleSkillCmd:()=>E6e});function _6e(t){return t.userInvocable&&t.modelInvocable?"":t.userInvocable?"(CLI only)":t.modelInvocable?"(agent only)":"(disabled)"}async function E6e(t,e){let r=(t.subcommand??t.args[0]??"help").toLowerCase(),n=t.subcommand?t.args[0]:t.args[1]??null;switch(r){case"list":return y6e();case"info":return S6e(n);case"install":return b6e(n);case"help":default:return T6e()}}async function y6e(){let{SkillManager:t}=await Promise.resolve().then(()=>(po(),Ul)),e;if(t.hasInstance())e=t.getInstance();else{e=t.getInstance(process.cwd());let o;try{let{PersonaManager:i}=await Promise.resolve().then(()=>(Ct(),Rt)),a=i.getInstance(process.cwd());await a.initialize(),a.isActive()&&(o=a.getActive()?.skillPaths)}catch{}await e.discover(o)}let r=e.getRegistry().getAll();if(r.length===0){console.log("No skills installed."),console.log(" Install one: aii skill install <owner/repo/skill>");return}let n=new Map;for(let o of r){let i=n.get(o.source)||[];i.push(o),n.set(o.source,i)}let s=["project-command","project","user","persona-bundled","universal","built-in","plugin","remote"];console.log(""),console.log(" Name Source Invocation Description"),console.log(" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500");for(let o of s){let i=n.get(o);if(i)for(let a of i){let l=a.name.padEnd(18),c=a.source.padEnd(16),u=_6e(a).padEnd(14),d=(a.description||"").slice(0,34);console.log(` ${l}${c}${u}${d}`)}}console.log("")}async function S6e(t){if(!t){console.log("Usage: aii skill info <name>");return}let{SkillManager:e}=await Promise.resolve().then(()=>(po(),Ul)),r;if(e.hasInstance())r=e.getInstance();else{r=e.getInstance(process.cwd());let s;try{let{PersonaManager:o}=await Promise.resolve().then(()=>(Ct(),Rt)),i=o.getInstance(process.cwd());await i.initialize(),i.isActive()&&(s=i.getActive()?.skillPaths)}catch{}await r.discover(s)}let n=r.getRegistry().getByName(t);if(!n){let o=r.getRegistry().getAll().map(i=>i.name).join(", ");console.error(`Skill "${t}" not found.`),o&&console.error(`Available skills: ${o}`),process.exit(1)}console.log(""),console.log(` Name: ${n.name}`),console.log(` Source: ${n.source}`),console.log(` Description: ${n.description||"(none)"}`),console.log(` Invocable: ${[n.userInvocable?"user":"",n.modelInvocable?"model":""].filter(Boolean).join(" + ")||"none"}`),n.allowedTools?.length&&console.log(` Tools: ${n.allowedTools.join(" ")}`),console.log(` Path: ${n.path||"(embedded)"}`),console.log("")}async function b6e(t){if(!t){console.log("Usage: aii skill install <owner/repo/skill>");return}let{SkillInstaller:e}=await Promise.resolve().then(()=>(Bf(),f1)),r=new e({projectRoot:process.cwd()});try{let n=await r.install(t,{scope:"user"});n.success?(console.log(`Installed skill: ${n.skillName}`),n.installPath&&console.log(` Location: ${n.installPath}`)):(console.error(`Failed to install skill: ${n.error||"Unknown error"}`),process.exit(1))}catch(n){let s=n instanceof Error?n.message:String(n);console.error(`Failed to install skill: ${s}`),process.exit(1)}}function T6e(){let t=[""];t.push(m.cyan.bold(" Skill System")),t.push(""),t.push(m.yellow(" USAGE:")),t.push(` ${m.green("aii skill list")} List all available skills`),t.push(` ${m.green("aii skill info <name>")} Show details for a skill`),t.push(` ${m.green("aii skill install <ref>")} Install a skill from GitHub`),t.push(` ${m.green("aii skill help")} Show this help`),t.push(""),t.push(m.yellow(" EXAMPLES:")),t.push(m.dim(" aii skill list")),t.push(m.dim(" aii skill info commit")),t.push(m.dim(" aii skill install aiiware/aii-skills/skills/commit --user")),t.push(""),console.log(t.join(`
|
|
3512
3512
|
`))}var ile=A(()=>{"use strict";Se()});var ale={};ye(ale,{handlePluginCmd:()=>w6e});async function w6e(t,e){let r=(t.subcommand??t.args[0]??"help").toLowerCase(),n=t.subcommand?t.args[0]:t.args[1]??null,s=t.subcommand?t.args.slice(1):t.args.slice(2);switch(r){case"install":return C6e(n,s);case"uninstall":case"remove":return v6e(n);case"update":return k6e(n);case"list":case"ls":return A6e();case"help":default:return D6e()}}async function C6e(t,e){if(!t){console.log("Usage: aii plugin install <owner/repo>");return}let{PluginInstaller:r}=await Promise.resolve().then(()=>(ba(),$l)),n=e.includes("--force")||e.includes("-f"),s=t,o;if(t.includes("@")){let a=t.lastIndexOf("@");s=t.slice(0,a),o=t.slice(a+1)}let i=new r({onProgress:a=>console.log(` ${m.dim(a)}`)});try{console.log(""),console.log(` Installing plugin from ${m.cyan(s)}...`),console.log("");let a=await i.install(s,{version:o,force:n});a.success?(console.log(""),console.log(` ${m.green("\u2713")} Plugin ${m.bold(a.pluginName)} v${a.version} installed`),console.log(` ${a.skillCount} skills available (use ${m.cyan("aii skill list")} to see them)`),a.installPath&&console.log(` Stored in ${m.dim(a.installPath)}`),console.log("")):(console.error(` ${m.red("\u2717")} ${a.error||"Unknown error"}`),process.exit(1))}catch(a){let l=a instanceof Error?a.message:String(a);console.error(` ${m.red("\u2717")} Failed to install plugin: ${l}`),process.exit(1)}}async function v6e(t){if(!t){console.log("Usage: aii plugin uninstall <name>");return}let{PluginInstaller:e}=await Promise.resolve().then(()=>(ba(),$l)),r=new e;try{let n=await r.uninstall(t);n.success?(console.log(""),console.log(` ${m.green("\u2713")} Plugin ${m.bold(t)} uninstalled`),n.skillCount&&console.log(` ${n.skillCount} skills removed`),console.log("")):(console.error(` ${m.red("\u2717")} ${n.error||"Unknown error"}`),process.exit(1))}catch(n){let s=n instanceof Error?n.message:String(n);console.error(` ${m.red("\u2717")} Failed to uninstall plugin: ${s}`),process.exit(1)}}async function k6e(t){if(!t){console.log("Usage: aii plugin update <name>");return}let{PluginInstaller:e}=await Promise.resolve().then(()=>(ba(),$l)),r=new e({onProgress:n=>console.log(` ${m.dim(n)}`)});try{console.log(""),console.log(` Checking for updates to ${m.cyan(t)}...`);let n=await r.update(t);n.success?(n.error?.includes("already up to date")?console.log(` ${m.green("\u2713")} ${n.error}`):(console.log(` ${m.green("\u2713")} Plugin ${m.bold(t)} updated to v${n.version}`),n.skillCount&&console.log(` ${n.skillCount} skills available`)),console.log("")):(console.error(` ${m.red("\u2717")} ${n.error||"Unknown error"}`),process.exit(1))}catch(n){let s=n instanceof Error?n.message:String(n);console.error(` ${m.red("\u2717")} Failed to update plugin: ${s}`),process.exit(1)}}async function A6e(){let{PluginManager:t}=await Promise.resolve().then(()=>(Pf(),Mf)),r=await new t().listInstalled();if(r.length===0){console.log(""),console.log(" No plugins installed."),console.log(` Install one: ${m.cyan("aii plugin install <owner/repo>")}`),console.log("");return}console.log(""),console.log(m.bold(" INSTALLED PLUGINS")),console.log(""),console.log(" Name Version Skills Installed"),console.log(" \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500");for(let n of r){let s=n.name.padEnd(18),o=`v${n.version}`.padEnd(12),i=String(n.skillCount).padEnd(8),a=new Date(n.installedAt).toLocaleDateString();console.log(` ${s}${o}${i}${a}`)}console.log("")}function D6e(){let t=[""];t.push(m.cyan.bold("Plugin System")),t.push(""),t.push(m.yellow("USAGE:")),t.push(` ${m.green("aii plugin install <source>")} Install a plugin from GitHub`),t.push(` ${m.green("aii plugin uninstall <name>")} Uninstall a plugin`),t.push(` ${m.green("aii plugin update <name>")} Update a plugin to latest`),t.push(` ${m.green("aii plugin list")} List installed plugins`),t.push(` ${m.green("aii plugin help")} Show this help`),t.push(""),t.push(m.yellow("EXAMPLES:")),t.push(m.dim(" aii plugin install aiiware/aii-skills")),t.push(m.dim(" aii plugin install aiiware/aii-skills@v0.1.0")),t.push(m.dim(" aii plugin list")),t.push(m.dim(" aii plugin update aii-skills")),t.push(m.dim(" aii plugin uninstall aii-skills")),t.push(""),console.log(t.join(`
|
|
3513
3513
|
`))}var lle=A(()=>{"use strict";Se()});var cle={};ye(cle,{handlePersona:()=>R6e});function I6e(t){return process.stdin.isTTY?async({originId:e,event:r,command:n,index:s,total:o})=>{s===1&&(console.log(`
|
|
@@ -3530,7 +3530,7 @@ Upgrade failed. Try running with sudo or check npm permissions.`),console.error(
|
|
|
3530
3530
|
${t}
|
|
3531
3531
|
</context>
|
|
3532
3532
|
|
|
3533
|
-
${e}`:e}var Te;(function(t){t[t.LOCAL=1]="LOCAL",t[t.SERVER=2]="SERVER"})(Te||(Te={}));var mC={translate:"clean",shell:"clean",shell_generate:"clean",mcp:"standard",explain:"standard",code_generate:"standard",code_review:"standard",summarize:"standard",research:"standard",_default:"standard"};function pl(t,e,r,n){return t.clean?"clean":t.thinking||t.verbose?"thinking":t.standard?"standard":e&&r?.[e]?r[e]:e&&mC[e]?mC[e]:n||mC._default}var uE=[{name:"config",tier:Te.LOCAL},{name:"help",tier:Te.LOCAL},{name:"version",tier:Te.LOCAL},{name:"doctor",tier:Te.LOCAL},{name:"mcp",tier:Te.LOCAL},{name:"prompt",tier:Te.LOCAL},{name:"stats",tier:Te.LOCAL},{name:"history",tier:Te.LOCAL},{name:"query",tier:Te.SERVER},{name:"chat",tier:Te.SERVER},{name:"run",tier:Te.SERVER},{name:"agent",tier:Te.SERVER},{name:"loop",tier:Te.SERVER},{name:"telegram",tier:Te.SERVER},{name:"sessions",tier:Te.SERVER},{name:"install",tier:Te.LOCAL},{name:"worktree",tier:Te.LOCAL},{name:"soul",tier:Te.LOCAL},{name:"skill",tier:Te.LOCAL},{name:"plugin",tier:Te.LOCAL},{name:"persona",tier:Te.LOCAL},{name:"cloud",tier:Te.LOCAL},{name:"upgrade",tier:Te.LOCAL}];function zle(t){let e=new Map;for(let r of t){if(!r.name)throw new Error("CLI command descriptor is missing a name");if(r.tier!==Te.LOCAL&&r.tier!==Te.SERVER)throw new Error(`CLI command "${r.name}" has an invalid tier: ${String(r.tier)}`);for(let n of[r.name,...r.aliases??[]]){if(e.has(n))throw new Error(`Duplicate CLI command name/alias: "${n}"`);e.set(n,r)}}return e}var qle=zle(uE);function CF(t){return qle.get(t)?.tier}var RGe=Object.fromEntries(uE.map(t=>[t.name,t.tier]));var Hle=new Set(uE.filter(t=>t.name!=="query").flatMap(t=>[t.name,...t.aliases??[]])),jle="0.17.10",Yle=new Set(["--clean","--standard","--thinking","-v","--verbose","-d","--debug","--model","--openrouter-provider","--host","-y","--yes","--offline","-D","--direct","-i","--interactive","-c","--continue-chat","-n","--new-chat","--auto","--auto-background-timeout","--no-colors","--colors","--no-emojis","--emojis","--no-animations","--animations","--no-streaming","--streaming","--show-tokens","--show-cost","--output-format","--tools","--exclude-tools","--no-project-config","--project-config","-h","--help","-V","--version"]),Wle=new Set(["--model","--openrouter-provider","--host","-c","--continue-chat","--auto-background-timeout","--output-format","--tools","--exclude-tools"]);function Vle(t){let e=[];for(let r=0;r<t.length;r++){if(Yle.has(t[r])){Wle.has(t[r])&&r++;continue}e.push(t[r])}return e}function Kle(){let t=new TF;return t.name("aii").description("AI-powered CLI assistant").version(jle,"-V, --version","Show version number").helpOption(!1).enablePositionalOptions().argument("[query...]","Natural language query").option("--clean","Clean output mode (just the result)").option("--standard","Standard output mode (result + metrics)").option("--thinking","Thinking mode (full reasoning)").option("-v, --verbose","Verbose output (alias for --thinking)").option("-d, --debug","Debug output").option("--model <model>","Override LLM model (e.g., ollama/llama3.1:8b, deepseek/deepseek-chat)").option("--openrouter-provider <slug>","Pin OpenRouter requests to a specific backend provider").option("--host <host>","API server host:port").option("--local","Force the local backend for this run (ignore managed cloud)").option("-y, --yes","Auto-confirm shell commands").option("--offline","Offline mode (no web/MCP)").option("-D, --direct","Direct mode (bypass server intent recognition)").option("-i, --interactive","Interactive chat mode").option("-c, --continue-chat <id>","Continue chat session").option("-n, --new-chat","Force new chat session").option("--auto","Auto mode - auto-approve all actions").option("--auto-background-timeout <seconds>","Auto-convert foreground agents to background after N seconds (0 to disable)","120").option("--no-project-config","Skip project .aii/settings.json + settings.local.json and their deny rules for this session").option("--no-colors","Disable colored output").option("--no-emojis","Disable emoji icons").option("--no-animations","Disable animations").option("--no-streaming","Disable streaming").option("--show-tokens","Show token usage").option("--show-cost","Show cost estimates").option("--output-format <format>","Output format: json or stream-json (one-shot only)").option("--tools <list>",'Allowlist of tools (comma-separated, e.g., "Read,Bash,Edit")').option("--exclude-tools <list>",'Exclude tools (comma-separated, e.g., "WebSearch,WebFetch")').option("-h, --help","Show help"),t.command("config").description("Configuration management").argument("[action]","Action: init, show, validate, set").argument("[key]","Config key (for set)").argument("[value]","Config value (for set)").allowUnknownOption().helpOption(!1).action(()=>{}),t.command("mcp").description("MCP server management").argument("[action]","Action: list, add, remove, status, etc.").argument("[rest...]","Server name and arguments").passThroughOptions().action(()=>{}),t.command("prompt").description("Prompt library").argument("[action]","Action: list, show, use, create").argument("[rest...]","Prompt name and arguments").allowUnknownOption().action(()=>{}),t.command("stats").description("Usage statistics").argument("[type]","Type: models, cost").action(()=>{}),t.command("history").description("Chat history").argument("[action]","Action: list, search, export, delete").argument("[query]","Search query or ID").action(()=>{}),t.command("doctor").description("System health check").action(()=>{}),t.command("install [target...]").description("Install or update Aii CLI, skills, or MCP servers").allowUnknownOption().helpOption(!1).action(()=>{}),t.command("chat").description("Interactive chat mode").action(()=>{}),t.command("agent").description("Interactive agent mode with tool execution").argument("[query...]","Optional query (non-interactive if provided)").action(()=>{}),t.command("loop").description("Autonomous agent loop (Ralph Wiggum pattern)").argument("[args...]","Loop arguments (prompt, --max, --verify, --budget, etc.)").allowUnknownOption().action(()=>{}),t.command("telegram").description("Telegram bot channel (chat with Aii from Telegram)").argument("[action]","Action: start, pair, status, unpair").argument("[args...]","Additional arguments").allowUnknownOption().action(()=>{}),t.command("sessions").description("Manage server sessions (list, info, resume, rename, delete)").argument("[action]","Action: list, info, resume, rename, delete").argument("[args...]","Additional arguments (session ID, name, etc.)").allowUnknownOption().action(()=>{}),t.command("worktree").description("Manage git worktrees for isolated development").argument("[action]","Action: create, list, remove, clean").argument("[name]","Worktree name (for create/remove)").allowUnknownOption().action(()=>{}),t.command("soul").description("Manage agent soul (personality & identity)").argument("[action]","Action: switch, show").argument("[name]","Soul name (for switch)").allowUnknownOption().action(()=>{}),t.command("cloud").description("Manage the Aii Cloud connection (login, status)").argument("[action]","Action: login, status").allowUnknownOption().action(()=>{}),t.command("skill").description("Manage AI skills").allowUnknownOption().passThroughOptions().action(()=>{}),t.command("plugin").description("Manage skill plugins").allowUnknownOption().passThroughOptions().action(()=>{}),t.command("persona").description("Manage workspace personas").allowUnknownOption().passThroughOptions().action(()=>{}),t.command("upgrade").description("Update Aii CLI to latest version").argument("[version]","Target version (default: latest)").action(()=>{}),t.command("run").description("Run domain-specific operations").argument("<operation>","Operation (e.g., git commit)").argument("[args...]","Additional arguments").allowUnknownOption().action(()=>{}),t.command("help").description("display help for command").argument("[command]","Command to show help for").action(()=>{}),t.command("version").description("Show version number").action(()=>{}),t}async function vF(t){let e=Kle();e.exitOverride(),e.configureOutput({writeErr:()=>{}});let r="query",n,s=[];try{e.parse(t),s=e.args;let c=e.args[0];c&&Hle.has(c)&&(r=c,n=e.args[1],s=e.args.slice(2))}catch(c){c instanceof bF&&(c.code==="commander.version"||c.code==="commander.helpDisplayed")&&process.exit(0),s=Vle(t.slice(2))}let o=e.opts(),i={clean:o.clean??!1,standard:o.standard??!1,thinking:o.thinking??!1,verbose:o.verbose??!1,debug:o.debug??!1,model:o.model,host:o.host,local:o.local??!1,openrouterProvider:o.openrouterProvider,yes:o.yes??!1,offline:o.offline??!1,direct:o.direct??!1,interactive:o.interactive??!1,continueChat:o.continueChat,newChat:o.newChat??!1,auto:o.auto??!1,quiet:!1,noProjectConfig:o.projectConfig===!1,autoBackgroundTimeout:(()=>{let c=parseInt(o.autoBackgroundTimeout??"120",10);return isNaN(c)||c===0?0:Math.max(30,Math.min(600,c))*1e3})(),noColors:!o.colors,noEmojis:!o.emojis,noAnimations:!o.animations,noStreaming:!o.streaming,showTokens:o.showTokens??!1,showCost:o.showCost??!1,outputFormat:o.outputFormat,tools:o.tools,excludeTools:o.excludeTools,help:o.help??!1,version:o.version??!1},a;pC()&&(a=await wF()),(r==="chat"||i.interactive)&&(r="agent"),r==="query"&&!s.length&&!a&&(r="agent");let l;if(r==="query"&&s.length>0)l=s.join(" ");else if(r==="agent"){let c=[];n&&c.push(n),s.length>0&&c.push(...s),c.length>0&&(l=c.join(" "))}return{command:r,subcommand:n,args:s,flags:i,stdinContent:a,query:l}}function kF(t){let e=CF(t.command)??Te.SERVER;switch(t.command){case"config":return Qle(t);case"mcp":return Xle(t);case"prompt":return Jle(t);case"stats":return Zle(t);case"history":return ece(t);case"doctor":return{tier:Te.LOCAL,handler:"doctor",params:{}};case"install":return{tier:Te.LOCAL,handler:"install",params:{}};case"chat":return{tier:Te.SERVER,handler:"chat",params:{continueChat:t.flags.continueChat}};case"run":return rce(t);case"agent":return{tier:Te.SERVER,handler:"agent",params:{interactive:!t.query}};case"loop":return{tier:Te.SERVER,handler:"loop",params:{}};case"telegram":return{tier:Te.SERVER,handler:"telegram",params:{action:t.subcommand??t.args[0]??"start"}};case"sessions":return{tier:Te.SERVER,handler:"sessions",params:{action:t.subcommand??t.args[0]??"list"}};case"worktree":return{tier:Te.LOCAL,handler:"worktree",params:{action:t.subcommand??t.args[0]??"list",name:t.subcommand?t.args[0]:t.args[1]}};case"soul":return{tier:Te.LOCAL,handler:"soul",params:{action:t.subcommand??t.args[0]??"show",name:t.subcommand?t.args[0]:t.args[1]}};case"cloud":return{tier:Te.LOCAL,handler:"cloud",params:{action:t.subcommand??t.args[0]??"status"}};case"skill":return{tier:Te.LOCAL,handler:"skill",params:{action:t.args[0]||"help",target:t.args[1]||null,extraArgs:t.args.slice(2)}};case"plugin":return{tier:Te.LOCAL,handler:"plugin",params:{action:t.args[0]||"help",target:t.args[1]||null,extraArgs:t.args.slice(2)}};case"persona":return{tier:Te.LOCAL,handler:"persona",params:{action:t.args[0]||"help",target:t.args[1]||null,extraArgs:t.args.slice(2)}};case"upgrade":return{tier:Te.LOCAL,handler:"upgrade",params:{version:t.args[0]||null}};case"help":return{tier:Te.LOCAL,handler:"help",params:{command:t.subcommand}};case"version":return{tier:Te.LOCAL,handler:"version",params:{}};case"query":default:return{tier:e,handler:"query",params:{query:t.query,stdinContent:t.stdinContent}}}}function Qle(t){let e=t.subcommand??t.args[0]??"show";return{tier:Te.LOCAL,handler:`config:${e}`,params:{key:t.args[0],value:t.args[1]}}}function Xle(t){let e=t.subcommand??t.args[0]??"list";return{tier:Te.LOCAL,handler:`mcp:${e}`,params:{name:t.args[0],args:t.args.slice(1)}}}function Jle(t){let e=t.subcommand??t.args[0]??"list";return{tier:Te.LOCAL,handler:`prompt:${e}`,params:{name:t.args[0],args:t.args.slice(1)}}}function Zle(t){let e=t.subcommand??t.args[0];return{tier:Te.LOCAL,handler:e?`stats:${e}`:"stats",params:{}}}function ece(t){let e=t.subcommand??t.args[0]??"list";return{tier:Te.LOCAL,handler:`history:${e}`,params:{query:t.args[0],id:t.args[0]}}}var tce=new Set(["--model","--host","--continue-chat","-c"]);function rce(t){let e=[];t.subcommand&&e.push(t.subcommand);let r=[];for(let s=0;s<t.args.length;s++){let o=t.args[s];if(tce.has(o)){s++;continue}o.startsWith("-")||r.push(o)}e.push(...r);let n=e.join(" ");return{tier:Te.SERVER,handler:"run",params:{operation:n}}}vt();by();io();Se();import{createInterface as E8e}from"readline";import{spawn as y8e}from"child_process";Rk();jn();lt();Ok();var MBe={timeout:12e4,retries:3,retryDelay:1e3};function PBe(t,e){let r=new URL(t),n=r.protocol==="https:"?"wss:":"ws:";return e?{url:`${n}//${r.host}/v1/ws/execute`,headers:{Authorization:`Bearer ${e}`}}:{url:`${n}//${r.host}/ws/execute`}}var bs=class{options;ws=null;activityTimeout=null;mcpExecutor=null;constructor(e){this.options={...MBe,...e}}async initializeMCP(){if(!this.mcpExecutor){let{ClientMCPExecutor:e}=await Promise.resolve().then(()=>(Qu(),Ku)),{createHeadlessMcpGate:r}=await Promise.resolve().then(()=>(fo(),wa));this.mcpExecutor=new e,this.mcpExecutor.setPermissionGate(r()),await this.mcpExecutor.initialize(),j(`MCP executor initialized with ${this.mcpExecutor.getConnectionCount()} connections`)}}async executeRequest(e,r){let n=null;for(let s=0;s<this.options.retries;s++)try{return await this.executeWithRetry(e,r)}catch(o){if(n=o instanceof Error?o:new Error(String(o)),j(`Attempt ${s+1} failed: ${n.message}`),n instanceof yu||n.message.includes("Authentication"))throw n;if(s<this.options.retries-1){let i=this.options.retryDelay*Math.pow(2,s);j(`Retrying in ${i}ms...`),await this.sleep(i)}}throw n??new aa("Max retries exceeded")}async executeWithRetry(e,r){return new Promise((n,s)=>{let o=PBe(this.options.url,this.options.cloudApiKey),i=o.url;j(`Connecting to ${i}`);try{this.ws=o.headers?new lo(i,{headers:o.headers}):new lo(i)}catch{let p=new URL(this.options.url);s(new Jm(p.hostname||"localhost",p.port||"26169"));return}let a=!1,l=null,c=null,u=!1,d=p=>{a||(a=!0,this.cleanup(),s(p))};this.resetActivityTimeout(()=>{a||(this.cleanup(),s(new Zm("WebSocket activity",this.options.timeout)))}),this.ws.on("open",()=>{j("WebSocket connected, sending request"),this.ws?.send(JSON.stringify({...e,protocol_version:2}))}),this.ws.on("message",p=>{this.resetActivityTimeout(()=>{a||(this.cleanup(),s(new Zm("WebSocket activity",this.options.timeout)))});let f;try{f=JSON.parse(p.toString())}catch(_){let E=p?String(p):"<undefined>";j(`Failed to parse message: ${E}`),d(new Error(`Failed to parse server message: ${_.message}`));return}let h=Hy(f,yU);if(h.kind==="malformed"){let _=EU(f);d(_?new yu("cloud_error",_):new aa(`Malformed server frame: ${h.reason}`));return}if(h.kind==="unknown"){u||(u=!0,j(`Received an unrecognized frame type '${h.type}'; ignoring`));return}let g=h.frame;if(c===null&&g.protocol_version!==void 0&&(c=Wy(g.protocol_version),c==="hard")){d(new aa(Vy(g.protocol_version)));return}if(jy.has(g.type)&&!Yy(g)){d(new aa(`Malformed ${g.type} payload`));return}this.handleMessage(g,r,_=>{a=!0,l=_,this.cleanup(),n(_)},_=>{a=!0,this.cleanup(),s(_)})}),this.ws.on("error",p=>{if(j(`WebSocket error: ${p.message}`),!a){a=!0,this.cleanup();let f=new URL(this.options.url);s(new Jm(f.hostname||"localhost",f.port||"26169"))}}),this.ws.on("close",(p,f)=>{j(`WebSocket closed: ${p} ${f.toString()}`),a||(a=!0,this.cleanup(),l?n(l):s(new aa(`Connection closed unexpectedly: ${p}`)))})})}handleMessage(e,r,n,s){switch(e.type){case"token":{let o=e;r?.onToken?.(o.data);break}case"complete":{let o=e,i=o.metadata||{},a=this.convertServerMetadata(o),l={result:o.result,metadata:a,clientSideExecution:i.client_side_execution===!0,userRequest:i.user_request};r?.onComplete?.(l),n(l);break}case"error":{let o=e,i=new yu(o.code,o.message);r?.onError?.(i),s(i);break}case"mcp_query_tools":{j("Received mcp_query_tools request"),this.handleMCPQueryTools(e);break}case"mcp_tool_request":{j("Received mcp_tool_request"),this.handleMCPToolRequest(e);break}default:j(`Unknown message type: ${e.type}`)}}convertServerMetadata(e){let r=e.metadata||{},n,s;r.tokens?(n=r.tokens.input,s=r.tokens.output):(n=r.input_tokens,s=r.output_tokens);let o=r.cost??r.cost_usd,i=r.execution_time??r.total_time;return{function_name:e.function_name,tokens_in:n,tokens_out:s,cost:typeof o=="number"?o:void 0,model:typeof r.model=="string"?r.model:void 0,provider:typeof r.provider=="string"?r.provider:void 0,execution_time:typeof i=="number"?i:void 0}}async handleMCPQueryTools(e){try{if(!this.mcpExecutor){let{ClientMCPExecutor:n}=await Promise.resolve().then(()=>(Qu(),Ku)),{createHeadlessMcpGate:s}=await Promise.resolve().then(()=>(fo(),wa));this.mcpExecutor=new n,this.mcpExecutor.setPermissionGate(s()),await this.mcpExecutor.initialize()}let r=await this.mcpExecutor.handleQueryTools(e);this.ws?.send(JSON.stringify(r))}catch(r){let n=r instanceof Error?r.message:String(r),s=r instanceof Error?r.stack:void 0;j(`Error handling mcp_query_tools: ${n}${s?`
|
|
3533
|
+
${e}`:e}var Te;(function(t){t[t.LOCAL=1]="LOCAL",t[t.SERVER=2]="SERVER"})(Te||(Te={}));var mC={translate:"clean",shell:"clean",shell_generate:"clean",mcp:"standard",explain:"standard",code_generate:"standard",code_review:"standard",summarize:"standard",research:"standard",_default:"standard"};function pl(t,e,r,n){return t.clean?"clean":t.thinking||t.verbose?"thinking":t.standard?"standard":e&&r?.[e]?r[e]:e&&mC[e]?mC[e]:n||mC._default}var uE=[{name:"config",tier:Te.LOCAL},{name:"help",tier:Te.LOCAL},{name:"version",tier:Te.LOCAL},{name:"doctor",tier:Te.LOCAL},{name:"mcp",tier:Te.LOCAL},{name:"prompt",tier:Te.LOCAL},{name:"stats",tier:Te.LOCAL},{name:"history",tier:Te.LOCAL},{name:"query",tier:Te.SERVER},{name:"chat",tier:Te.SERVER},{name:"run",tier:Te.SERVER},{name:"agent",tier:Te.SERVER},{name:"loop",tier:Te.SERVER},{name:"telegram",tier:Te.SERVER},{name:"sessions",tier:Te.SERVER},{name:"install",tier:Te.LOCAL},{name:"worktree",tier:Te.LOCAL},{name:"soul",tier:Te.LOCAL},{name:"skill",tier:Te.LOCAL},{name:"plugin",tier:Te.LOCAL},{name:"persona",tier:Te.LOCAL},{name:"cloud",tier:Te.LOCAL},{name:"upgrade",tier:Te.LOCAL}];function zle(t){let e=new Map;for(let r of t){if(!r.name)throw new Error("CLI command descriptor is missing a name");if(r.tier!==Te.LOCAL&&r.tier!==Te.SERVER)throw new Error(`CLI command "${r.name}" has an invalid tier: ${String(r.tier)}`);for(let n of[r.name,...r.aliases??[]]){if(e.has(n))throw new Error(`Duplicate CLI command name/alias: "${n}"`);e.set(n,r)}}return e}var qle=zle(uE);function CF(t){return qle.get(t)?.tier}var RGe=Object.fromEntries(uE.map(t=>[t.name,t.tier]));var Hle=new Set(uE.filter(t=>t.name!=="query").flatMap(t=>[t.name,...t.aliases??[]])),jle="0.17.11",Yle=new Set(["--clean","--standard","--thinking","-v","--verbose","-d","--debug","--model","--openrouter-provider","--host","-y","--yes","--offline","-D","--direct","-i","--interactive","-c","--continue-chat","-n","--new-chat","--auto","--auto-background-timeout","--no-colors","--colors","--no-emojis","--emojis","--no-animations","--animations","--no-streaming","--streaming","--show-tokens","--show-cost","--output-format","--tools","--exclude-tools","--no-project-config","--project-config","--local","-h","--help","-V","--version"]),Wle=new Set(["--model","--openrouter-provider","--host","-c","--continue-chat","--auto-background-timeout","--output-format","--tools","--exclude-tools"]);function Vle(t){let e=[];for(let r=0;r<t.length;r++){if(Yle.has(t[r])){Wle.has(t[r])&&r++;continue}e.push(t[r])}return e}function Kle(){let t=new TF;return t.name("aii").description("AI-powered CLI assistant").version(jle,"-V, --version","Show version number").helpOption(!1).enablePositionalOptions().argument("[query...]","Natural language query").option("--clean","Clean output mode (just the result)").option("--standard","Standard output mode (result + metrics)").option("--thinking","Thinking mode (full reasoning)").option("-v, --verbose","Verbose output (alias for --thinking)").option("-d, --debug","Debug output").option("--model <model>","Override LLM model (e.g., ollama/llama3.1:8b, deepseek/deepseek-chat)").option("--openrouter-provider <slug>","Pin OpenRouter requests to a specific backend provider").option("--host <host>","API server host:port").option("--local","Force the local backend for this run (ignore managed cloud)").option("-y, --yes","Auto-confirm shell commands").option("--offline","Offline mode (no web/MCP)").option("-D, --direct","Direct mode (bypass server intent recognition)").option("-i, --interactive","Interactive chat mode").option("-c, --continue-chat <id>","Continue chat session").option("-n, --new-chat","Force new chat session").option("--auto","Auto mode - auto-approve all actions").option("--auto-background-timeout <seconds>","Auto-convert foreground agents to background after N seconds (0 to disable)","120").option("--no-project-config","Skip project .aii/settings.json + settings.local.json and their deny rules for this session").option("--no-colors","Disable colored output").option("--no-emojis","Disable emoji icons").option("--no-animations","Disable animations").option("--no-streaming","Disable streaming").option("--show-tokens","Show token usage").option("--show-cost","Show cost estimates").option("--output-format <format>","Output format: json or stream-json (one-shot only)").option("--tools <list>",'Allowlist of tools (comma-separated, e.g., "Read,Bash,Edit")').option("--exclude-tools <list>",'Exclude tools (comma-separated, e.g., "WebSearch,WebFetch")').option("-h, --help","Show help"),t.command("config").description("Configuration management").argument("[action]","Action: init, show, validate, set").argument("[key]","Config key (for set)").argument("[value]","Config value (for set)").allowUnknownOption().helpOption(!1).action(()=>{}),t.command("mcp").description("MCP server management").argument("[action]","Action: list, add, remove, status, etc.").argument("[rest...]","Server name and arguments").passThroughOptions().action(()=>{}),t.command("prompt").description("Prompt library").argument("[action]","Action: list, show, use, create").argument("[rest...]","Prompt name and arguments").allowUnknownOption().action(()=>{}),t.command("stats").description("Usage statistics").argument("[type]","Type: models, cost").action(()=>{}),t.command("history").description("Chat history").argument("[action]","Action: list, search, export, delete").argument("[query]","Search query or ID").action(()=>{}),t.command("doctor").description("System health check").action(()=>{}),t.command("install [target...]").description("Install or update Aii CLI, skills, or MCP servers").allowUnknownOption().helpOption(!1).action(()=>{}),t.command("chat").description("Interactive chat mode").action(()=>{}),t.command("agent").description("Interactive agent mode with tool execution").argument("[query...]","Optional query (non-interactive if provided)").action(()=>{}),t.command("loop").description("Autonomous agent loop (Ralph Wiggum pattern)").argument("[args...]","Loop arguments (prompt, --max, --verify, --budget, etc.)").allowUnknownOption().action(()=>{}),t.command("telegram").description("Telegram bot channel (chat with Aii from Telegram)").argument("[action]","Action: start, pair, status, unpair").argument("[args...]","Additional arguments").allowUnknownOption().action(()=>{}),t.command("sessions").description("Manage server sessions (list, info, resume, rename, delete)").argument("[action]","Action: list, info, resume, rename, delete").argument("[args...]","Additional arguments (session ID, name, etc.)").allowUnknownOption().action(()=>{}),t.command("worktree").description("Manage git worktrees for isolated development").argument("[action]","Action: create, list, remove, clean").argument("[name]","Worktree name (for create/remove)").allowUnknownOption().action(()=>{}),t.command("soul").description("Manage agent soul (personality & identity)").argument("[action]","Action: switch, show").argument("[name]","Soul name (for switch)").allowUnknownOption().action(()=>{}),t.command("cloud").description("Manage the Aii Cloud connection (login, status)").argument("[action]","Action: login, status").allowUnknownOption().action(()=>{}),t.command("skill").description("Manage AI skills").allowUnknownOption().passThroughOptions().action(()=>{}),t.command("plugin").description("Manage skill plugins").allowUnknownOption().passThroughOptions().action(()=>{}),t.command("persona").description("Manage workspace personas").allowUnknownOption().passThroughOptions().action(()=>{}),t.command("upgrade").description("Update Aii CLI to latest version").argument("[version]","Target version (default: latest)").action(()=>{}),t.command("run").description("Run domain-specific operations").argument("<operation>","Operation (e.g., git commit)").argument("[args...]","Additional arguments").allowUnknownOption().action(()=>{}),t.command("help").description("display help for command").argument("[command]","Command to show help for").action(()=>{}),t.command("version").description("Show version number").action(()=>{}),t}async function vF(t){let e=Kle();e.exitOverride(),e.configureOutput({writeErr:()=>{}});let r="query",n,s=[];try{e.parse(t),s=e.args;let c=e.args[0];c&&Hle.has(c)&&(r=c,n=e.args[1],s=e.args.slice(2))}catch(c){c instanceof bF&&(c.code==="commander.version"||c.code==="commander.helpDisplayed")&&process.exit(0),s=Vle(t.slice(2))}let o=e.opts(),i={clean:o.clean??!1,standard:o.standard??!1,thinking:o.thinking??!1,verbose:o.verbose??!1,debug:o.debug??!1,model:o.model,host:o.host,local:o.local??!1,openrouterProvider:o.openrouterProvider,yes:o.yes??!1,offline:o.offline??!1,direct:o.direct??!1,interactive:o.interactive??!1,continueChat:o.continueChat,newChat:o.newChat??!1,auto:o.auto??!1,quiet:!1,noProjectConfig:o.projectConfig===!1,autoBackgroundTimeout:(()=>{let c=parseInt(o.autoBackgroundTimeout??"120",10);return isNaN(c)||c===0?0:Math.max(30,Math.min(600,c))*1e3})(),noColors:!o.colors,noEmojis:!o.emojis,noAnimations:!o.animations,noStreaming:!o.streaming,showTokens:o.showTokens??!1,showCost:o.showCost??!1,outputFormat:o.outputFormat,tools:o.tools,excludeTools:o.excludeTools,help:o.help??!1,version:o.version??!1},a;pC()&&(a=await wF()),(r==="chat"||i.interactive)&&(r="agent"),r==="query"&&!s.length&&!a&&(r="agent");let l;if(r==="query"&&s.length>0)l=s.join(" ");else if(r==="agent"){let c=[];n&&c.push(n),s.length>0&&c.push(...s),c.length>0&&(l=c.join(" "))}return{command:r,subcommand:n,args:s,flags:i,stdinContent:a,query:l}}function kF(t){let e=CF(t.command)??Te.SERVER;switch(t.command){case"config":return Qle(t);case"mcp":return Xle(t);case"prompt":return Jle(t);case"stats":return Zle(t);case"history":return ece(t);case"doctor":return{tier:Te.LOCAL,handler:"doctor",params:{}};case"install":return{tier:Te.LOCAL,handler:"install",params:{}};case"chat":return{tier:Te.SERVER,handler:"chat",params:{continueChat:t.flags.continueChat}};case"run":return rce(t);case"agent":return{tier:Te.SERVER,handler:"agent",params:{interactive:!t.query}};case"loop":return{tier:Te.SERVER,handler:"loop",params:{}};case"telegram":return{tier:Te.SERVER,handler:"telegram",params:{action:t.subcommand??t.args[0]??"start"}};case"sessions":return{tier:Te.SERVER,handler:"sessions",params:{action:t.subcommand??t.args[0]??"list"}};case"worktree":return{tier:Te.LOCAL,handler:"worktree",params:{action:t.subcommand??t.args[0]??"list",name:t.subcommand?t.args[0]:t.args[1]}};case"soul":return{tier:Te.LOCAL,handler:"soul",params:{action:t.subcommand??t.args[0]??"show",name:t.subcommand?t.args[0]:t.args[1]}};case"cloud":return{tier:Te.LOCAL,handler:"cloud",params:{action:t.subcommand??t.args[0]??"status"}};case"skill":return{tier:Te.LOCAL,handler:"skill",params:{action:t.args[0]||"help",target:t.args[1]||null,extraArgs:t.args.slice(2)}};case"plugin":return{tier:Te.LOCAL,handler:"plugin",params:{action:t.args[0]||"help",target:t.args[1]||null,extraArgs:t.args.slice(2)}};case"persona":return{tier:Te.LOCAL,handler:"persona",params:{action:t.args[0]||"help",target:t.args[1]||null,extraArgs:t.args.slice(2)}};case"upgrade":return{tier:Te.LOCAL,handler:"upgrade",params:{version:t.args[0]||null}};case"help":return{tier:Te.LOCAL,handler:"help",params:{command:t.subcommand}};case"version":return{tier:Te.LOCAL,handler:"version",params:{}};case"query":default:return{tier:e,handler:"query",params:{query:t.query,stdinContent:t.stdinContent}}}}function Qle(t){let e=t.subcommand??t.args[0]??"show";return{tier:Te.LOCAL,handler:`config:${e}`,params:{key:t.args[0],value:t.args[1]}}}function Xle(t){let e=t.subcommand??t.args[0]??"list";return{tier:Te.LOCAL,handler:`mcp:${e}`,params:{name:t.args[0],args:t.args.slice(1)}}}function Jle(t){let e=t.subcommand??t.args[0]??"list";return{tier:Te.LOCAL,handler:`prompt:${e}`,params:{name:t.args[0],args:t.args.slice(1)}}}function Zle(t){let e=t.subcommand??t.args[0];return{tier:Te.LOCAL,handler:e?`stats:${e}`:"stats",params:{}}}function ece(t){let e=t.subcommand??t.args[0]??"list";return{tier:Te.LOCAL,handler:`history:${e}`,params:{query:t.args[0],id:t.args[0]}}}var tce=new Set(["--model","--host","--continue-chat","-c"]);function rce(t){let e=[];t.subcommand&&e.push(t.subcommand);let r=[];for(let s=0;s<t.args.length;s++){let o=t.args[s];if(tce.has(o)){s++;continue}o.startsWith("-")||r.push(o)}e.push(...r);let n=e.join(" ");return{tier:Te.SERVER,handler:"run",params:{operation:n}}}vt();by();io();Se();import{createInterface as E8e}from"readline";import{spawn as y8e}from"child_process";Rk();jn();lt();Ok();var MBe={timeout:12e4,retries:3,retryDelay:1e3};function PBe(t,e){let r=new URL(t),n=r.protocol==="https:"?"wss:":"ws:";return e?{url:`${n}//${r.host}/v1/ws/execute`,headers:{Authorization:`Bearer ${e}`}}:{url:`${n}//${r.host}/ws/execute`}}var bs=class{options;ws=null;activityTimeout=null;mcpExecutor=null;constructor(e){this.options={...MBe,...e}}async initializeMCP(){if(!this.mcpExecutor){let{ClientMCPExecutor:e}=await Promise.resolve().then(()=>(Qu(),Ku)),{createHeadlessMcpGate:r}=await Promise.resolve().then(()=>(fo(),wa));this.mcpExecutor=new e,this.mcpExecutor.setPermissionGate(r()),await this.mcpExecutor.initialize(),j(`MCP executor initialized with ${this.mcpExecutor.getConnectionCount()} connections`)}}async executeRequest(e,r){let n=null;for(let s=0;s<this.options.retries;s++)try{return await this.executeWithRetry(e,r)}catch(o){if(n=o instanceof Error?o:new Error(String(o)),j(`Attempt ${s+1} failed: ${n.message}`),n instanceof yu||n.message.includes("Authentication"))throw n;if(s<this.options.retries-1){let i=this.options.retryDelay*Math.pow(2,s);j(`Retrying in ${i}ms...`),await this.sleep(i)}}throw n??new aa("Max retries exceeded")}async executeWithRetry(e,r){return new Promise((n,s)=>{let o=PBe(this.options.url,this.options.cloudApiKey),i=o.url;j(`Connecting to ${i}`);try{this.ws=o.headers?new lo(i,{headers:o.headers}):new lo(i)}catch{let p=new URL(this.options.url);s(new Jm(p.hostname||"localhost",p.port||"26169"));return}let a=!1,l=null,c=null,u=!1,d=p=>{a||(a=!0,this.cleanup(),s(p))};this.resetActivityTimeout(()=>{a||(this.cleanup(),s(new Zm("WebSocket activity",this.options.timeout)))}),this.ws.on("open",()=>{j("WebSocket connected, sending request"),this.ws?.send(JSON.stringify({...e,protocol_version:2}))}),this.ws.on("message",p=>{this.resetActivityTimeout(()=>{a||(this.cleanup(),s(new Zm("WebSocket activity",this.options.timeout)))});let f;try{f=JSON.parse(p.toString())}catch(_){let E=p?String(p):"<undefined>";j(`Failed to parse message: ${E}`),d(new Error(`Failed to parse server message: ${_.message}`));return}let h=Hy(f,yU);if(h.kind==="malformed"){let _=EU(f);d(_?new yu("cloud_error",_):new aa(`Malformed server frame: ${h.reason}`));return}if(h.kind==="unknown"){u||(u=!0,j(`Received an unrecognized frame type '${h.type}'; ignoring`));return}let g=h.frame;if(c===null&&g.protocol_version!==void 0&&(c=Wy(g.protocol_version),c==="hard")){d(new aa(Vy(g.protocol_version)));return}if(jy.has(g.type)&&!Yy(g)){d(new aa(`Malformed ${g.type} payload`));return}this.handleMessage(g,r,_=>{a=!0,l=_,this.cleanup(),n(_)},_=>{a=!0,this.cleanup(),s(_)})}),this.ws.on("error",p=>{if(j(`WebSocket error: ${p.message}`),!a){a=!0,this.cleanup();let f=new URL(this.options.url);s(new Jm(f.hostname||"localhost",f.port||"26169"))}}),this.ws.on("close",(p,f)=>{j(`WebSocket closed: ${p} ${f.toString()}`),a||(a=!0,this.cleanup(),l?n(l):s(new aa(`Connection closed unexpectedly: ${p}`)))})})}handleMessage(e,r,n,s){switch(e.type){case"token":{let o=e;r?.onToken?.(o.data);break}case"complete":{let o=e,i=o.metadata||{},a=this.convertServerMetadata(o),l={result:o.result,metadata:a,clientSideExecution:i.client_side_execution===!0,userRequest:i.user_request};r?.onComplete?.(l),n(l);break}case"error":{let o=e,i=new yu(o.code,o.message);r?.onError?.(i),s(i);break}case"mcp_query_tools":{j("Received mcp_query_tools request"),this.handleMCPQueryTools(e);break}case"mcp_tool_request":{j("Received mcp_tool_request"),this.handleMCPToolRequest(e);break}default:j(`Unknown message type: ${e.type}`)}}convertServerMetadata(e){let r=e.metadata||{},n,s;r.tokens?(n=r.tokens.input,s=r.tokens.output):(n=r.input_tokens,s=r.output_tokens);let o=r.cost??r.cost_usd,i=r.execution_time??r.total_time;return{function_name:e.function_name,tokens_in:n,tokens_out:s,cost:typeof o=="number"?o:void 0,model:typeof r.model=="string"?r.model:void 0,provider:typeof r.provider=="string"?r.provider:void 0,execution_time:typeof i=="number"?i:void 0}}async handleMCPQueryTools(e){try{if(!this.mcpExecutor){let{ClientMCPExecutor:n}=await Promise.resolve().then(()=>(Qu(),Ku)),{createHeadlessMcpGate:s}=await Promise.resolve().then(()=>(fo(),wa));this.mcpExecutor=new n,this.mcpExecutor.setPermissionGate(s()),await this.mcpExecutor.initialize()}let r=await this.mcpExecutor.handleQueryTools(e);this.ws?.send(JSON.stringify(r))}catch(r){let n=r instanceof Error?r.message:String(r),s=r instanceof Error?r.stack:void 0;j(`Error handling mcp_query_tools: ${n}${s?`
|
|
3534
3534
|
${s}`:""}`),this.ws?.send(JSON.stringify({type:"mcp_query_tools_response",request_id:e.request_id||"unknown",success:!1,error:n,tools:[]}))}}async handleMCPToolRequest(e){try{if(!this.mcpExecutor){let{ClientMCPExecutor:n}=await Promise.resolve().then(()=>(Qu(),Ku)),{createHeadlessMcpGate:s}=await Promise.resolve().then(()=>(fo(),wa));this.mcpExecutor=new n,this.mcpExecutor.setPermissionGate(s()),await this.mcpExecutor.initialize()}let r=await this.mcpExecutor.handleToolExecution(e);this.ws?.send(JSON.stringify(r))}catch(r){j(`Error handling mcp_tool_request: ${r}`),this.ws?.send(JSON.stringify({type:"mcp_tool_response",request_id:e.request_id||"unknown",success:!1,error:String(r)}))}}resetActivityTimeout(e){this.activityTimeout&&clearTimeout(this.activityTimeout),this.activityTimeout=setTimeout(e,this.options.timeout)}cleanup(){if(this.activityTimeout&&(clearTimeout(this.activityTimeout),this.activityTimeout=null),this.ws){try{this.ws.close()}catch(e){j(`WebSocket close error: ${e instanceof Error?e.message:String(e)}`)}this.ws=null}}async shutdownMCP(){this.mcpExecutor&&(await this.mcpExecutor.shutdown(),this.mcpExecutor=null)}disconnect(){this.cleanup()}sleep(e){return new Promise(r=>setTimeout(r,e))}};Se();import Z0 from"node:process";import Joe from"node:process";import Q0 from"node:process";var LBe=(t,e,r,n)=>{if(r==="length"||r==="prototype"||r==="arguments"||r==="caller")return;let s=Object.getOwnPropertyDescriptor(t,r),o=Object.getOwnPropertyDescriptor(e,r);!FBe(s,o)&&n||Object.defineProperty(t,r,o)},FBe=function(t,e){return t===void 0||t.configurable||t.writable===e.writable&&t.enumerable===e.enumerable&&t.configurable===e.configurable&&(t.writable||t.value===e.value)},$Be=(t,e)=>{let r=Object.getPrototypeOf(e);r!==Object.getPrototypeOf(t)&&Object.setPrototypeOf(t,r)},UBe=(t,e)=>`/* Wrapped ${t}*/
|
|
3535
3535
|
${e}`,BBe=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),GBe=Object.getOwnPropertyDescriptor(Function.prototype.toString,"name"),zBe=(t,e,r)=>{let n=r===""?"":`with ${r.trim()}() `,s=UBe.bind(null,n,e.toString());Object.defineProperty(s,"name",GBe);let{writable:o,enumerable:i,configurable:a}=BBe;Object.defineProperty(t,"toString",{value:s,writable:o,enumerable:i,configurable:a})};function fP(t,e,{ignoreNonConfigurable:r=!1}={}){let{name:n}=t;for(let s of Reflect.ownKeys(e))LBe(t,e,s,r);return $Be(t,e),zBe(t,e,n),t}var W0=new WeakMap,Woe=(t,e={})=>{if(typeof t!="function")throw new TypeError("Expected a function");let r,n=0,s=t.displayName||t.name||"<anonymous>",o=function(...i){if(W0.set(o,++n),n===1)r=t.apply(this,i),t=void 0;else if(e.throw===!0)throw new Error(`Function \`${s}\` can only be called once`);return r};return fP(o,t),W0.set(o,n),o};Woe.callCount=t=>{if(!W0.has(t))throw new Error(`The given function \`${t.name}\` is not wrapped by the \`onetime\` package`);return W0.get(t)};var Voe=Woe;var Jc=[];Jc.push("SIGHUP","SIGINT","SIGTERM");process.platform!=="win32"&&Jc.push("SIGALRM","SIGABRT","SIGVTALRM","SIGXCPU","SIGXFSZ","SIGUSR2","SIGTRAP","SIGSYS","SIGQUIT","SIGIOT");process.platform==="linux"&&Jc.push("SIGIO","SIGPOLL","SIGPWR","SIGSTKFLT");var V0=t=>!!t&&typeof t=="object"&&typeof t.removeListener=="function"&&typeof t.emit=="function"&&typeof t.reallyExit=="function"&&typeof t.listeners=="function"&&typeof t.kill=="function"&&typeof t.pid=="number"&&typeof t.on=="function",hP=Symbol.for("signal-exit emitter"),gP=globalThis,qBe=Object.defineProperty.bind(Object),_P=class{emitted={afterExit:!1,exit:!1};listeners={afterExit:[],exit:[]};count=0;id=Math.random();constructor(){if(gP[hP])return gP[hP];qBe(gP,hP,{value:this,writable:!1,enumerable:!1,configurable:!1})}on(e,r){this.listeners[e].push(r)}removeListener(e,r){let n=this.listeners[e],s=n.indexOf(r);s!==-1&&(s===0&&n.length===1?n.length=0:n.splice(s,1))}emit(e,r,n){if(this.emitted[e])return!1;this.emitted[e]=!0;let s=!1;for(let o of this.listeners[e])s=o(r,n)===!0||s;return e==="exit"&&(s=this.emit("afterExit",r,n)||s),s}},K0=class{},HBe=t=>({onExit(e,r){return t.onExit(e,r)},load(){return t.load()},unload(){return t.unload()}}),EP=class extends K0{onExit(){return()=>{}}load(){}unload(){}},yP=class extends K0{#i=SP.platform==="win32"?"SIGINT":"SIGHUP";#r=new _P;#e;#s;#p;#t={};#o=!1;constructor(e){super(),this.#e=e,this.#t={};for(let r of Jc)this.#t[r]=()=>{let n=this.#e.listeners(r),{count:s}=this.#r,o=e;if(typeof o.__signal_exit_emitter__=="object"&&typeof o.__signal_exit_emitter__.count=="number"&&(s+=o.__signal_exit_emitter__.count),n.length===s){this.unload();let i=this.#r.emit("exit",null,r),a=r==="SIGHUP"?this.#i:r;i||e.kill(e.pid,a)}};this.#p=e.reallyExit,this.#s=e.emit}onExit(e,r){if(!V0(this.#e))return()=>{};this.#o===!1&&this.load();let n=r?.alwaysLast?"afterExit":"exit";return this.#r.on(n,e),()=>{this.#r.removeListener(n,e),this.#r.listeners.exit.length===0&&this.#r.listeners.afterExit.length===0&&this.unload()}}load(){if(!this.#o){this.#o=!0,this.#r.count+=1;for(let e of Jc)try{let r=this.#t[e];r&&this.#e.on(e,r)}catch{}this.#e.emit=(e,...r)=>this.#m(e,...r),this.#e.reallyExit=e=>this.#n(e)}}unload(){this.#o&&(this.#o=!1,Jc.forEach(e=>{let r=this.#t[e];if(!r)throw new Error("Listener not defined for signal: "+e);try{this.#e.removeListener(e,r)}catch{}}),this.#e.emit=this.#s,this.#e.reallyExit=this.#p,this.#r.count-=1)}#n(e){return V0(this.#e)?(this.#e.exitCode=e||0,this.#r.emit("exit",this.#e.exitCode,null),this.#p.call(this.#e,this.#e.exitCode)):0}#m(e,...r){let n=this.#s;if(e==="exit"&&V0(this.#e)){typeof r[0]=="number"&&(this.#e.exitCode=r[0]);let s=n.call(this.#e,e,...r);return this.#r.emit("exit",this.#e.exitCode,null),s}else return n.call(this.#e,e,...r)}},SP=globalThis.process,{onExit:Koe,load:Lpt,unload:Fpt}=HBe(V0(SP)?new yP(SP):new EP);var Qoe=Q0.stderr.isTTY?Q0.stderr:Q0.stdout.isTTY?Q0.stdout:void 0,jBe=Qoe?Voe(()=>{Koe(()=>{Qoe.write("\x1B[?25h")},{alwaysLast:!0})}):()=>{},Xoe=jBe;var X0=!1,Vp={};Vp.show=(t=Joe.stderr)=>{t.isTTY&&(X0=!1,t.write("\x1B[?25h"))};Vp.hide=(t=Joe.stderr)=>{t.isTTY&&(Xoe(),X0=!0,t.write("\x1B[?25l"))};Vp.toggle=(t,e)=>{t!==void 0&&(X0=t),X0?Vp.show(e):Vp.hide(e)};var bP=Vp;var O_=Tt(TP(),1);Se();import Js from"node:process";function wP(){return Js.platform!=="win32"?Js.env.TERM!=="linux":!!Js.env.CI||!!Js.env.WT_SESSION||!!Js.env.TERMINUS_SUBLIME||Js.env.ConEmuTask==="{cmd::Cmder}"||Js.env.TERM_PROGRAM==="Terminus-Sublime"||Js.env.TERM_PROGRAM==="vscode"||Js.env.TERM==="xterm-256color"||Js.env.TERM==="alacritty"||Js.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var WBe={info:m.blue("\u2139"),success:m.green("\u2714"),warning:m.yellow("\u26A0"),error:m.red("\u2716")},VBe={info:m.blue("i"),success:m.green("\u221A"),warning:m.yellow("\u203C"),error:m.red("\xD7")},KBe=wP()?WBe:VBe,N_=KBe;_b();var QBe=nc();function CP(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(QBe,"")}_b();var XBe=nc();function vP(t){if(typeof t!="string")throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);return t.replace(XBe,"")}function rie(t){return t===161||t===164||t===167||t===168||t===170||t===173||t===174||t>=176&&t<=180||t>=182&&t<=186||t>=188&&t<=191||t===198||t===208||t===215||t===216||t>=222&&t<=225||t===230||t>=232&&t<=234||t===236||t===237||t===240||t===242||t===243||t>=247&&t<=250||t===252||t===254||t===257||t===273||t===275||t===283||t===294||t===295||t===299||t>=305&&t<=307||t===312||t>=319&&t<=322||t===324||t>=328&&t<=331||t===333||t===338||t===339||t===358||t===359||t===363||t===462||t===464||t===466||t===468||t===470||t===472||t===474||t===476||t===593||t===609||t===708||t===711||t>=713&&t<=715||t===717||t===720||t>=728&&t<=731||t===733||t===735||t>=768&&t<=879||t>=913&&t<=929||t>=931&&t<=937||t>=945&&t<=961||t>=963&&t<=969||t===1025||t>=1040&&t<=1103||t===1105||t===8208||t>=8211&&t<=8214||t===8216||t===8217||t===8220||t===8221||t>=8224&&t<=8226||t>=8228&&t<=8231||t===8240||t===8242||t===8243||t===8245||t===8251||t===8254||t===8308||t===8319||t>=8321&&t<=8324||t===8364||t===8451||t===8453||t===8457||t===8467||t===8470||t===8481||t===8482||t===8486||t===8491||t===8531||t===8532||t>=8539&&t<=8542||t>=8544&&t<=8555||t>=8560&&t<=8569||t===8585||t>=8592&&t<=8601||t===8632||t===8633||t===8658||t===8660||t===8679||t===8704||t===8706||t===8707||t===8711||t===8712||t===8715||t===8719||t===8721||t===8725||t===8730||t>=8733&&t<=8736||t===8739||t===8741||t>=8743&&t<=8748||t===8750||t>=8756&&t<=8759||t===8764||t===8765||t===8776||t===8780||t===8786||t===8800||t===8801||t>=8804&&t<=8807||t===8810||t===8811||t===8814||t===8815||t===8834||t===8835||t===8838||t===8839||t===8853||t===8857||t===8869||t===8895||t===8978||t>=9312&&t<=9449||t>=9451&&t<=9547||t>=9552&&t<=9587||t>=9600&&t<=9615||t>=9618&&t<=9621||t===9632||t===9633||t>=9635&&t<=9641||t===9650||t===9651||t===9654||t===9655||t===9660||t===9661||t===9664||t===9665||t>=9670&&t<=9672||t===9675||t>=9678&&t<=9681||t>=9698&&t<=9701||t===9711||t===9733||t===9734||t===9737||t===9742||t===9743||t===9756||t===9758||t===9792||t===9794||t===9824||t===9825||t>=9827&&t<=9829||t>=9831&&t<=9834||t===9836||t===9837||t===9839||t===9886||t===9887||t===9919||t>=9926&&t<=9933||t>=9935&&t<=9939||t>=9941&&t<=9953||t===9955||t===9960||t===9961||t>=9963&&t<=9969||t===9972||t>=9974&&t<=9977||t===9979||t===9980||t===9982||t===9983||t===10045||t>=10102&&t<=10111||t>=11094&&t<=11097||t>=12872&&t<=12879||t>=57344&&t<=63743||t>=65024&&t<=65039||t===65533||t>=127232&&t<=127242||t>=127248&&t<=127277||t>=127280&&t<=127337||t>=127344&&t<=127373||t===127375||t===127376||t>=127387&&t<=127404||t>=917760&&t<=917999||t>=983040&&t<=1048573||t>=1048576&&t<=1114109}function nie(t){return t===12288||t>=65281&&t<=65376||t>=65504&&t<=65510}function sie(t){return t>=4352&&t<=4447||t===8986||t===8987||t===9001||t===9002||t>=9193&&t<=9196||t===9200||t===9203||t===9725||t===9726||t===9748||t===9749||t>=9776&&t<=9783||t>=9800&&t<=9811||t===9855||t>=9866&&t<=9871||t===9875||t===9889||t===9898||t===9899||t===9917||t===9918||t===9924||t===9925||t===9934||t===9940||t===9962||t===9970||t===9971||t===9973||t===9978||t===9981||t===9989||t===9994||t===9995||t===10024||t===10060||t===10062||t>=10067&&t<=10069||t===10071||t>=10133&&t<=10135||t===10160||t===10175||t===11035||t===11036||t===11088||t===11093||t>=11904&&t<=11929||t>=11931&&t<=12019||t>=12032&&t<=12245||t>=12272&&t<=12287||t>=12289&&t<=12350||t>=12353&&t<=12438||t>=12441&&t<=12543||t>=12549&&t<=12591||t>=12593&&t<=12686||t>=12688&&t<=12773||t>=12783&&t<=12830||t>=12832&&t<=12871||t>=12880&&t<=42124||t>=42128&&t<=42182||t>=43360&&t<=43388||t>=44032&&t<=55203||t>=63744&&t<=64255||t>=65040&&t<=65049||t>=65072&&t<=65106||t>=65108&&t<=65126||t>=65128&&t<=65131||t>=94176&&t<=94180||t>=94192&&t<=94198||t>=94208&&t<=101589||t>=101631&&t<=101662||t>=101760&&t<=101874||t>=110576&&t<=110579||t>=110581&&t<=110587||t===110589||t===110590||t>=110592&&t<=110882||t===110898||t>=110928&&t<=110930||t===110933||t>=110948&&t<=110951||t>=110960&&t<=111355||t>=119552&&t<=119638||t>=119648&&t<=119670||t===126980||t===127183||t===127374||t>=127377&&t<=127386||t>=127488&&t<=127490||t>=127504&&t<=127547||t>=127552&&t<=127560||t===127568||t===127569||t>=127584&&t<=127589||t>=127744&&t<=127776||t>=127789&&t<=127797||t>=127799&&t<=127868||t>=127870&&t<=127891||t>=127904&&t<=127946||t>=127951&&t<=127955||t>=127968&&t<=127984||t===127988||t>=127992&&t<=128062||t===128064||t>=128066&&t<=128252||t>=128255&&t<=128317||t>=128331&&t<=128334||t>=128336&&t<=128359||t===128378||t===128405||t===128406||t===128420||t>=128507&&t<=128591||t>=128640&&t<=128709||t===128716||t>=128720&&t<=128722||t>=128725&&t<=128728||t>=128732&&t<=128735||t===128747||t===128748||t>=128756&&t<=128764||t>=128992&&t<=129003||t===129008||t>=129292&&t<=129338||t>=129340&&t<=129349||t>=129351&&t<=129535||t>=129648&&t<=129660||t>=129664&&t<=129674||t>=129678&&t<=129734||t===129736||t>=129741&&t<=129756||t>=129759&&t<=129770||t>=129775&&t<=129784||t>=131072&&t<=196605||t>=196608&&t<=262141}function JBe(t){if(!Number.isSafeInteger(t))throw new TypeError(`Expected a code point, got \`${typeof t}\`.`)}function oie(t,{ambiguousAsWide:e=!1}={}){return JBe(t),nie(t)||sie(t)||e&&rie(t)?2:1}var lie=Tt(aie(),1),ZBe=new Intl.Segmenter,e4e=new RegExp("^\\p{Default_Ignorable_Code_Point}$","u");function kP(t,e={}){if(typeof t!="string"||t.length===0)return 0;let{ambiguousIsNarrow:r=!0,countAnsiEscapeCodes:n=!1}=e;if(n||(t=vP(t)),t.length===0)return 0;let s=0,o={ambiguousAsWide:!r};for(let{segment:i}of ZBe.segment(t)){let a=i.codePointAt(0);if(!(a<=31||a>=127&&a<=159)&&!(a>=8203&&a<=8207||a===65279)&&!(a>=768&&a<=879||a>=6832&&a<=6911||a>=7616&&a<=7679||a>=8400&&a<=8447||a>=65056&&a<=65071)&&!(a>=55296&&a<=57343)&&!(a>=65024&&a<=65039)&&!e4e.test(i)){if((0,lie.default)().test(i)){s+=2;continue}s+=oie(a,o)}}return s}function AP({stream:t=process.stdout}={}){return!!(t&&t.isTTY&&process.env.TERM!=="dumb"&&!("CI"in process.env))}import cie from"node:process";function DP(){let{env:t}=cie,{TERM:e,TERM_PROGRAM:r}=t;return cie.platform!=="win32"?e!=="linux":!!t.WT_SESSION||!!t.TERMINUS_SUBLIME||t.ConEmuTask==="{cmd::Cmder}"||r==="Terminus-Sublime"||r==="vscode"||e==="xterm-256color"||e==="alacritty"||e==="rxvt-unicode"||e==="rxvt-unicode-256color"||t.TERMINAL_EMULATOR==="JetBrains-JediTerm"}import Bo from"node:process";var t4e=3,IP=class{#i=0;start(){this.#i++,this.#i===1&&this.#r()}stop(){if(this.#i<=0)throw new Error("`stop` called more times than `start`");this.#i--,this.#i===0&&this.#e()}#r(){Bo.platform==="win32"||!Bo.stdin.isTTY||(Bo.stdin.setRawMode(!0),Bo.stdin.on("data",this.#s),Bo.stdin.resume())}#e(){Bo.stdin.isTTY&&(Bo.stdin.off("data",this.#s),Bo.stdin.pause(),Bo.stdin.setRawMode(!1))}#s(e){e[0]===t4e&&Bo.emit("SIGINT")}},r4e=new IP,RP=r4e;var n4e=Tt(TP(),1),NP=class{#i=0;#r=!1;#e=0;#s=-1;#p=0;#t;#o;#n;#m;#h;#c;#u;#d;#g;#a;#l;color;constructor(e){typeof e=="string"&&(e={text:e}),this.#t={color:"cyan",stream:Z0.stderr,discardStdin:!0,hideCursor:!0,...e},this.color=this.#t.color,this.spinner=this.#t.spinner,this.#h=this.#t.interval,this.#n=this.#t.stream,this.#c=typeof this.#t.isEnabled=="boolean"?this.#t.isEnabled:AP({stream:this.#n}),this.#u=typeof this.#t.isSilent=="boolean"?this.#t.isSilent:!1,this.text=this.#t.text,this.prefixText=this.#t.prefixText,this.suffixText=this.#t.suffixText,this.indent=this.#t.indent,Z0.env.NODE_ENV==="test"&&(this._stream=this.#n,this._isEnabled=this.#c,Object.defineProperty(this,"_linesToClear",{get(){return this.#i},set(r){this.#i=r}}),Object.defineProperty(this,"_frameIndex",{get(){return this.#s}}),Object.defineProperty(this,"_lineCount",{get(){return this.#e}}))}get indent(){return this.#d}set indent(e=0){if(!(e>=0&&Number.isInteger(e)))throw new Error("The `indent` option must be an integer from 0 and up");this.#d=e,this.#f()}get interval(){return this.#h??this.#o.interval??100}get spinner(){return this.#o}set spinner(e){if(this.#s=-1,this.#h=void 0,typeof e=="object"){if(e.frames===void 0)throw new Error("The given spinner must have a `frames` property");this.#o=e}else if(!DP())this.#o=O_.default.line;else if(e===void 0)this.#o=O_.default.dots;else if(e!=="default"&&O_.default[e])this.#o=O_.default[e];else throw new Error(`There is no built-in spinner named '${e}'. See https://github.com/sindresorhus/cli-spinners/blob/main/spinners.json for a full list.`)}get text(){return this.#g}set text(e=""){this.#g=e,this.#f()}get prefixText(){return this.#a}set prefixText(e=""){this.#a=e,this.#f()}get suffixText(){return this.#l}set suffixText(e=""){this.#l=e,this.#f()}get isSpinning(){return this.#m!==void 0}#_(e=this.#a,r=" "){return typeof e=="string"&&e!==""?e+r:typeof e=="function"?e()+r:""}#E(e=this.#l,r=" "){return typeof e=="string"&&e!==""?r+e:typeof e=="function"?r+e():""}#f(){let e=this.#n.columns??80,r=this.#_(this.#a,"-"),n=this.#E(this.#l,"-"),s=" ".repeat(this.#d)+r+"--"+this.#g+"--"+n;this.#e=0;for(let o of CP(s).split(`
|
|
3536
3536
|
`))this.#e+=Math.max(1,Math.ceil(kP(o,{countAnsiEscapeCodes:!0})/e))}get isEnabled(){return this.#c&&!this.#u}set isEnabled(e){if(typeof e!="boolean")throw new TypeError("The `isEnabled` option must be a boolean");this.#c=e}get isSilent(){return this.#u}set isSilent(e){if(typeof e!="boolean")throw new TypeError("The `isSilent` option must be a boolean");this.#u=e}frame(){let e=Date.now();(this.#s===-1||e-this.#p>=this.interval)&&(this.#s=++this.#s%this.#o.frames.length,this.#p=e);let{frames:r}=this.#o,n=r[this.#s];this.color&&(n=m[this.color](n));let s=typeof this.#a=="string"&&this.#a!==""?this.#a+" ":"",o=typeof this.text=="string"?" "+this.text:"",i=typeof this.#l=="string"&&this.#l!==""?" "+this.#l:"";return s+n+o+i}clear(){if(!this.#c||!this.#n.isTTY)return this;this.#n.cursorTo(0);for(let e=0;e<this.#i;e++)e>0&&this.#n.moveCursor(0,-1),this.#n.clearLine(1);return(this.#d||this.lastIndent!==this.#d)&&this.#n.cursorTo(this.#d),this.lastIndent=this.#d,this.#i=0,this}render(){return this.#u?this:(this.clear(),this.#n.write(this.frame()),this.#i=this.#e,this)}start(e){return e&&(this.text=e),this.#u?this:this.#c?this.isSpinning?this:(this.#t.hideCursor&&bP.hide(this.#n),this.#t.discardStdin&&Z0.stdin.isTTY&&(this.#r=!0,RP.start()),this.render(),this.#m=setInterval(this.render.bind(this),this.interval),this):(this.text&&this.#n.write(`- ${this.text}
|
|
@@ -3541,7 +3541,7 @@ ${e}`,BBe=Object.getOwnPropertyDescriptor(Function.prototype,"toString"),GBe=Obj
|
|
|
3541
3541
|
`+this.color(s,m.dim)}formatError(e){let r=[];return r.push(this.color(`${this.emoji("\u274C ")}${e.message}`,m.red)),e.suggestions&&e.suggestions.length>0&&(r.push(""),r.push(this.color(`${this.emoji("\u{1F4A1} ")}Solutions:`,m.yellow)),e.suggestions.forEach((n,s)=>{r.push(this.color(` ${s+1}. ${n}`,m.gray))})),r.join(`
|
|
3542
3542
|
`)}formatConfig(e){let r=[];r.push(this.color(`${this.emoji("\u{1F4CB} ")}Current AII Configuration:`,L.model)),r.push(`- Config file: ${e.configFile}`),r.push(`- Storage path: ${e.storagePath}`),e.apiUrl&&r.push(`- Aii Server: ${e.apiUrl}`);let n=e.hasApiKey?this.color("\u2713",m.green):this.color("\u2717",m.red),s=e.model.startsWith(e.provider+"/")?e.model.slice(e.provider.length+1):e.model;if(r.push(`- LLM provider: ${e.provider} (${s}) - ${n}`),e.webSearch){let o=e.webSearch.enabled?this.color("\u2713",m.green):this.color("\u2717",m.red);r.push(`- Web search: ${e.webSearch.provider??"none"} - ${o}`)}return e.issues&&e.issues.length>0&&r.push(`- Configuration issues: ${e.issues.length}`),r.join(`
|
|
3543
3543
|
`)}formatHealthCheck(e,r){let n=[],s=r?`Aii Doctor v${r}`:"Aii Doctor";n.push(this.color(s,L.model)),n.push("");let o=22;for(let l of e){let c=o-l.name.length-1,u=".".repeat(Math.max(2,c)),d,p;switch(l.status){case"ok":d="OK",p=m.green;break;case"warn":d="WARN",p=m.yellow;break;case"error":d="FAIL",p=m.red;break}let f=this.color(d,p),h=l.message?` (${l.message})`:"";n.push(` ${l.name} ${this.color(u,m.gray)} ${f}${h}`)}let i=e.filter(l=>l.status==="error").length,a=e.filter(l=>l.status==="warn").length;return n.push(""),i>0?n.push(` ${this.color(`${i} check${i>1?"s":""} failed.`,m.red)}`):a>0?n.push(` ${this.color("All checks passed with warnings.",m.yellow)}`):n.push(` ${this.color("All checks passed.",m.green)}`),n.join(`
|
|
3544
|
-
`)}};function xn(t={}){return new PP(t)}jn();var Zc={openrouter:"openrouter",ollama:"ollama",anthropic:"anthropic",openai:"openai",gemini:"gemini",google:"gemini",deepseek:"deepseek",moonshot:"moonshot",zai:"zai"},o4e=[{provider:"openrouter",patterns:[/^openrouter\//]},{provider:"ollama",patterns:[/^ollama\//]},{provider:"anthropic",patterns:[/^anthropic\//,/^claude-/,/^claude$/i]},{provider:"openai",patterns:[/^openai\//,/^gpt-/,/^o1-/,/^o3-/,/^chatgpt-/,/^text-davinci/]},{provider:"gemini",patterns:[/^gemini\//,/^google\//,/^gemini-/,/^gemini$/i]},{provider:"deepseek",patterns:[/^deepseek\//,/^deepseek-/,/^deepseek$/i]},{provider:"moonshot",patterns:[/^moonshot\//,/^kimi-/,/^moonshot-/,/^moonshot$/i]},{provider:"zai",patterns:[/^zai\//,/^glm-/,/^glm$/i,/^chatglm/i]}];function gr(t){if(!t)return t;let e=t.indexOf(":");if(e>0){let r=t.substring(0,e).toLowerCase();if(r in Zc)return r+"/"+t.substring(e+1)}return t}function LP(t){if(!t)return;let e=t.toLowerCase();for(let{provider:r,patterns:n}of o4e)for(let s of n)if(s.test(e))return r}function _r(t,e){if(!t)return t;let r=t.indexOf("/");if(r===-1)return t;let n=t.substring(0,r).toLowerCase();return n!=="ollama"&&n in Zc?e&&Zc[n]!==e?t:t.substring(r+1):t}function ew(t){if(!t)return;let e=t.indexOf("/");if(e>0){let n=t.substring(0,e).toLowerCase();if(n in Zc){let s=Zc[n],o=t.substring(e+1),i=s==="ollama"?`ollama/${o}`:o;return{provider:s,model:i}}}let r=t.indexOf(":");if(r>0){let n=t.substring(0,r).toLowerCase();if(n in Zc){let s=Zc[n],o=t.substring(r+1),i=s==="ollama"?`ollama/${o}`:o;return{provider:s,model:i}}}}function ol(t){let e=t.lastIndexOf("@");return e===-1||e===t.length-1?{model:t,openrouterProvider:void 0}:{model:t.slice(0,e),openrouterProvider:t.slice(e+1)}}function $r(t,e){if(t){let r=LP(t);if(r)return r}return e}Se();import*as hie from"readline";jn();import*as Ts from"fs";import*as tw from"path";import*as uie from"os";import*as Kp from"fs";import{randomUUID as i4e}from"crypto";function FP(t,e,r=384){let n=`${t}.${process.pid}.${i4e()}.tmp`;try{Kp.writeFileSync(n,e,{encoding:"utf-8",mode:r,flag:"wx"}),Kp.renameSync(n,t)}catch(s){try{Kp.unlinkSync(n)}catch{}throw s}}var x_=tw.join(uie.homedir(),".aii","conversations"),$P=tw.join(x_,"current.json");function rw(){Ts.existsSync(x_)||Ts.mkdirSync(x_,{recursive:!0,mode:448});try{Ts.chmodSync(x_,448)}catch{}}function a4e(){return`conv_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}function l4e(t){let r=t.trim().replace(/\s+/g," ");return r.length>50&&(r=r.substring(0,50).trim()+"..."),r}function die(t){return tw.join(x_,`${t}.json`)}function pie(){rw();try{if(Ts.existsSync($P)){let t=Ts.readFileSync($P,"utf-8"),e=JSON.parse(t),r=die(e.id);if(Ts.existsSync(r)){let n=Ts.readFileSync(r,"utf-8");return JSON.parse(n)}}}catch{}return mie()}function mie(){rw();let t={id:a4e(),title:"New Conversation",messages:[],createdAt:Date.now(),updatedAt:Date.now()};return M_(t),c4e(t.id),t}function M_(t){if(rw(),t.title==="New Conversation"&&t.messages.length>0){let r=t.messages.find(n=>n.role==="user");r&&(t.title=l4e(r.content))}t.updatedAt=Date.now();let e=die(t.id);FP(e,JSON.stringify(t,null,2))}function c4e(t){rw(),FP($P,JSON.stringify({id:t}))}function fie(){return mie()}Oc();var u4e="0.17.
|
|
3544
|
+
`)}};function xn(t={}){return new PP(t)}jn();var Zc={openrouter:"openrouter",ollama:"ollama",anthropic:"anthropic",openai:"openai",gemini:"gemini",google:"gemini",deepseek:"deepseek",moonshot:"moonshot",zai:"zai"},o4e=[{provider:"openrouter",patterns:[/^openrouter\//]},{provider:"ollama",patterns:[/^ollama\//]},{provider:"anthropic",patterns:[/^anthropic\//,/^claude-/,/^claude$/i]},{provider:"openai",patterns:[/^openai\//,/^gpt-/,/^o1-/,/^o3-/,/^chatgpt-/,/^text-davinci/]},{provider:"gemini",patterns:[/^gemini\//,/^google\//,/^gemini-/,/^gemini$/i]},{provider:"deepseek",patterns:[/^deepseek\//,/^deepseek-/,/^deepseek$/i]},{provider:"moonshot",patterns:[/^moonshot\//,/^kimi-/,/^moonshot-/,/^moonshot$/i]},{provider:"zai",patterns:[/^zai\//,/^glm-/,/^glm$/i,/^chatglm/i]}];function gr(t){if(!t)return t;let e=t.indexOf(":");if(e>0){let r=t.substring(0,e).toLowerCase();if(r in Zc)return r+"/"+t.substring(e+1)}return t}function LP(t){if(!t)return;let e=t.toLowerCase();for(let{provider:r,patterns:n}of o4e)for(let s of n)if(s.test(e))return r}function _r(t,e){if(!t)return t;let r=t.indexOf("/");if(r===-1)return t;let n=t.substring(0,r).toLowerCase();return n!=="ollama"&&n in Zc?e&&Zc[n]!==e?t:t.substring(r+1):t}function ew(t){if(!t)return;let e=t.indexOf("/");if(e>0){let n=t.substring(0,e).toLowerCase();if(n in Zc){let s=Zc[n],o=t.substring(e+1),i=s==="ollama"?`ollama/${o}`:o;return{provider:s,model:i}}}let r=t.indexOf(":");if(r>0){let n=t.substring(0,r).toLowerCase();if(n in Zc){let s=Zc[n],o=t.substring(r+1),i=s==="ollama"?`ollama/${o}`:o;return{provider:s,model:i}}}}function ol(t){let e=t.lastIndexOf("@");return e===-1||e===t.length-1?{model:t,openrouterProvider:void 0}:{model:t.slice(0,e),openrouterProvider:t.slice(e+1)}}function $r(t,e){if(t){let r=LP(t);if(r)return r}return e}Se();import*as hie from"readline";jn();import*as Ts from"fs";import*as tw from"path";import*as uie from"os";import*as Kp from"fs";import{randomUUID as i4e}from"crypto";function FP(t,e,r=384){let n=`${t}.${process.pid}.${i4e()}.tmp`;try{Kp.writeFileSync(n,e,{encoding:"utf-8",mode:r,flag:"wx"}),Kp.renameSync(n,t)}catch(s){try{Kp.unlinkSync(n)}catch{}throw s}}var x_=tw.join(uie.homedir(),".aii","conversations"),$P=tw.join(x_,"current.json");function rw(){Ts.existsSync(x_)||Ts.mkdirSync(x_,{recursive:!0,mode:448});try{Ts.chmodSync(x_,448)}catch{}}function a4e(){return`conv_${Date.now()}_${Math.random().toString(36).substring(2,9)}`}function l4e(t){let r=t.trim().replace(/\s+/g," ");return r.length>50&&(r=r.substring(0,50).trim()+"..."),r}function die(t){return tw.join(x_,`${t}.json`)}function pie(){rw();try{if(Ts.existsSync($P)){let t=Ts.readFileSync($P,"utf-8"),e=JSON.parse(t),r=die(e.id);if(Ts.existsSync(r)){let n=Ts.readFileSync(r,"utf-8");return JSON.parse(n)}}}catch{}return mie()}function mie(){rw();let t={id:a4e(),title:"New Conversation",messages:[],createdAt:Date.now(),updatedAt:Date.now()};return M_(t),c4e(t.id),t}function M_(t){if(rw(),t.title==="New Conversation"&&t.messages.length>0){let r=t.messages.find(n=>n.role==="user");r&&(t.title=l4e(r.content))}t.updatedAt=Date.now();let e=die(t.id);FP(e,JSON.stringify(t,null,2))}function c4e(t){rw(),FP($P,JSON.stringify({id:t}))}function fie(){return mie()}Oc();var u4e="0.17.11",UP=class{configManager;parsed;running=!1;conversation;stats;formatter;effectiveProvider="";constructor(e,r){this.parsed=e,this.configManager=r,this.conversation=pie(),this.stats={startTime:Date.now(),totalRequests:0,cumulativeTokens:0,cumulativeCost:0},this.formatter=xn({colors:!e.flags.noColors,emojis:!e.flags.noEmojis})}async start(){for(this.running=!0,this.displayWelcome();this.running;)try{let e=await this.getUserInput();if(!e.trim()||await this.handleSpecialCommands(e))continue;this.conversation.messages.push({role:"user",content:e,timestamp:Date.now()}),M_(this.conversation),await this.processWithContext(e)}catch(e){if(e instanceof Error&&e.message==="EXIT")break;if(e instanceof Error&&e.message==="INTERRUPTED"){console.log(`
|
|
3545
3545
|
\u26A0\uFE0F Interrupted. Type /exit to quit or continue chatting.`);continue}console.error(m.red(`
|
|
3546
3546
|
\u274C Error: ${e instanceof Error?e.message:String(e)}`)),this.conversation.messages.length>0&&this.conversation.messages[this.conversation.messages.length-1].role==="user"&&(this.conversation.messages.pop(),M_(this.conversation))}}displayWelcome(){console.log("\u{1FABC} Entering interactive mode."),console.log(""),console.log("Controls:"),console.log(" \u2022 Enter - Send message"),console.log(" \u2022 End with \\ - Multi-line mode"),console.log(" \u2022 /exit - Quit chat"),console.log(" \u2022 /help - Show all commands"),console.log("")}getUserInput(){return new Promise((e,r)=>{let n=hie.createInterface({input:process.stdin,output:process.stdout}),s=[],o=!1,i=()=>{o=!0,n.close()},a=l=>{n.question(l,c=>{if(s.length===0&&c.trim().startsWith("/")){i(),e(c.trim());return}c.endsWith("\\")?(s.push(c.slice(0,-1)),a(" ")):(s.push(c),i(),e(s.join(`
|
|
3547
3547
|
`).trim()))})};n.on("SIGINT",()=>{i(),r(new Error("INTERRUPTED"))}),n.on("close",()=>{o||r(new Error("EXIT"))}),a("> ")})}async handleSpecialCommands(e){let r=e.trim().toLowerCase();if(r.startsWith("/"))r=r.slice(1);else return!1;switch(r){case"exit":case"quit":return await this.handleExit(),!0;case"help":return this.displayHelp(),!0;case"clear":case"new":return this.clearConversation(),!0;case"history":return this.displayConversationHistory(),!0;case"stats":return this.displayStats(),!0;case"version":return this.displayVersion(),!0;default:return console.log(m.yellow(`Unknown command: /${r}. Type /help for available commands.`)),console.log(""),!0}}async processWithContext(e){let r=await this.configManager.load(),n=this.configManager.validate();if(!n.valid)throw new zr(n.issues.join(", "));let o=this.configManager.getServerApiKey()||"aii_sk_7WyvfQ0PRzufJ1G66Qn8Sm4gW9Tealpo6vOWDDUeiv4",i=gr(this.parsed.flags.model??""),a=$r(i||void 0,r.llm.provider),l=_r(i||r.llm.model,a);this.effectiveProvider=a;let c=this.configManager.getApiKey(a);if(!c)throw new zt(`Missing API key for provider: ${a}`);this.stats.totalRequests++;let u=Go(!this.parsed.flags.noAnimations);u.start("");let d=zo({spinner:u,enabled:!this.parsed.flags.noStreaming}),p=this.conversation.messages.slice(-21,-1).map(S=>({role:S.role,content:S.content})),f={api_key:o,system_prompt:null,user_prompt:e,user_message:e,output_mode:"CLEAN",streaming:!this.parsed.flags.noStreaming,model:l,llm_provider:a,llm_api_key:c,provider_api_key:c,client_type:"cli",offline:this.parsed.flags.offline,conversation_history:p.length>0?p:void 0,soul:rn.getInstance().getSoulName()},h=this.parsed.flags.host?`http://${this.parsed.flags.host}`:r.api.url,g=new bs({url:h}),_="",E=!1;try{let S=await g.executeRequest(f,{onToken:w=>{_+=w,E=!0,d.onToken(w)}});d.flush();let T=S.result||_;!E&&T&&console.log(T),console.log(""),S.metadata&&this.displayExecutionSummary(S.metadata),T&&(this.conversation.messages.push({role:"assistant",content:T,timestamp:Date.now()}),M_(this.conversation))}catch(S){throw u.stop(!0),S}finally{g.disconnect()}}displayExecutionSummary(e){let r=e.cost||0,n=e.tokens_in||0,s=e.tokens_out||0,o=n+s;this.stats.cumulativeTokens+=o,this.stats.cumulativeCost+=r;let i=e.provider,a=!i;console.log(this.formatter.formatExecutionSummary({provider:i||this.effectiveProvider,providerInferred:a,model:e.model,tokens_in:n,tokens_out:s,cost:r,execution_time:e.execution_time})),console.log("")}clearConversation(){this.conversation=fie(),console.clear(),this.displayWelcome()}displayConversationHistory(){if(this.conversation.messages.length===0){console.log(`
|
|
@@ -4221,10 +4221,10 @@ ${r.yellow("CONFIG FILE:")}
|
|
|
4221
4221
|
.aii/settings.json Project config (committed, restrict-only)
|
|
4222
4222
|
.aii/settings.local.json Your local overrides (gitignored)
|
|
4223
4223
|
${r.gray("Skip both for a session with: aii --no-project-config")}
|
|
4224
|
-
`)}import*as Wo from"fs";sr();async function kae(t,e){let r=xn({colors:!t.flags.noColors,emojis:!t.flags.noEmojis}),n=[],s=`${e.getConfigDir()}/config.yaml`;e.configExists()?n.push({name:"Config",status:"ok",message:s.replace(process.env.HOME||"","~")}):n.push({name:"Config",status:"warn",message:"Not found (using defaults)"});let o=await e.load();e.getApiKey()?n.push({name:"API Key",status:"ok",message:`${o.llm.provider}:${o.llm.model.replace(`${o.llm.provider}/`,"")}`}):n.push({name:"API Key",status:"error",message:`Not configured for ${o.llm.provider}`});let a=await K8e(o.api.url);n.push({name:"Aii Server",status:a.ok?"ok":"error",message:a.message});let l=`${e.getConfigDir()}/mcp_servers.json`;if(Wo.existsSync(l))try{let f=Wo.readFileSync(l,"utf-8"),h=JSON.parse(f),g=Object.keys(h.mcpServers??{}).length;g>0?n.push({name:"MCP Servers",status:"ok",message:`${g} configured`}):n.push({name:"MCP Servers",status:"warn",message:"Not configured"})}catch{n.push({name:"MCP Servers",status:"warn",message:"Invalid config"})}else n.push({name:"MCP Servers",status:"warn",message:"Not configured"});if(ow())try{let{execSync:f}=await import("child_process"),g=f("docker --version",{timeout:5e3,encoding:"utf-8"}).trim().match(/Docker version ([\d.]+)/);n.push({name:"Docker",status:"ok",message:g?`v${g[1]}`:"Installed"})}catch{n.push({name:"Docker",status:"ok",message:"Installed"})}else n.push({name:"Docker",status:"error",message:"Not installed (brew install --cask docker)"});ow()?iw()?n.push({name:"Docker Daemon",status:"ok",message:"Running"}):n.push({name:"Docker Daemon",status:"error",message:"Not running (open -a Docker)"}):n.push({name:"Docker Daemon",status:"warn",message:"N/A (Docker not installed)"});let c=process.version;parseInt(c.slice(1).split(".")[0],10)>=18?n.push({name:"Node.js",status:"ok",message:c}):n.push({name:"Node.js",status:"error",message:`${c} (requires >= 18)`});let d=await Q8e();n.push(...d),console.log(r.formatHealthCheck(n,Pl)),n.some(f=>f.status==="error")&&process.exit(1)}async function K8e(t){try{let e=new AbortController,r=setTimeout(()=>e.abort(),3e3),n=await fetch(`${t}/api/status`,{signal:e.signal});if(clearTimeout(r),n.ok){let s=new URL(t);return{ok:!0,message:`${s.hostname}:${s.port||26169}`}}else return{ok:!1,message:`Not responding (${n.status})`}}catch(e){return e instanceof Error&&e.name==="AbortError"?{ok:!1,message:"Connection timeout"}:{ok:!1,message:"Not running"}}}async function Q8e(){let t=[];try{let{getAiiHome:e}=await Promise.resolve().then(()=>($n(),n1)),r=`${e()}/skills`;if(!Wo.existsSync(r))return t;let n=Wo.readdirSync(r,{withFileTypes:!0});for(let s of n){if(!s.isDirectory()||s.name.startsWith("."))continue;let o=`${r}/${s.name}/SKILL.md`;Wo.existsSync(o)||t.push({name:"Skill Shadow",status:"warn",message:`~/.aii/skills/${s.name}/ has no SKILL.md \u2014 may shadow other skills`})}try{let{PersonaManager:s}=await Promise.resolve().then(()=>(Ct(),Rt));if(s.hasInstance()&&s.getInstance().isActive()){let o=s.getInstance().getActive();if(o)for(let i of o.skillPaths){let a=i.split("/").pop()||"",l=`${r}/${a}`;Wo.existsSync(l)&&Wo.existsSync(`${l}/SKILL.md`)&&t.push({name:"Skill Shadow",status:"ok",message:`"${a}" user-authored shadows persona-bundled (intentional?)`})}}}catch{}}catch{}return t}Se();sr();import{execSync as wL}from"node:child_process";var Nw="@aiiware/aii";async function Aae(t){let e=t.args||[],r=t.subcommand||e[0]||"";if(t.flags.help||r==="help"||r==="--help"||e.includes("--help")){let n="0.17.
|
|
4225
|
-
`),await X8e(r)}async function X8e(t){let e="0.17.
|
|
4224
|
+
`)}import*as Wo from"fs";sr();async function kae(t,e){let r=xn({colors:!t.flags.noColors,emojis:!t.flags.noEmojis}),n=[],s=`${e.getConfigDir()}/config.yaml`;e.configExists()?n.push({name:"Config",status:"ok",message:s.replace(process.env.HOME||"","~")}):n.push({name:"Config",status:"warn",message:"Not found (using defaults)"});let o=await e.load();e.getApiKey()?n.push({name:"API Key",status:"ok",message:`${o.llm.provider}:${o.llm.model.replace(`${o.llm.provider}/`,"")}`}):n.push({name:"API Key",status:"error",message:`Not configured for ${o.llm.provider}`});let a=await K8e(o.api.url);n.push({name:"Aii Server",status:a.ok?"ok":"error",message:a.message});let l=`${e.getConfigDir()}/mcp_servers.json`;if(Wo.existsSync(l))try{let f=Wo.readFileSync(l,"utf-8"),h=JSON.parse(f),g=Object.keys(h.mcpServers??{}).length;g>0?n.push({name:"MCP Servers",status:"ok",message:`${g} configured`}):n.push({name:"MCP Servers",status:"warn",message:"Not configured"})}catch{n.push({name:"MCP Servers",status:"warn",message:"Invalid config"})}else n.push({name:"MCP Servers",status:"warn",message:"Not configured"});if(ow())try{let{execSync:f}=await import("child_process"),g=f("docker --version",{timeout:5e3,encoding:"utf-8"}).trim().match(/Docker version ([\d.]+)/);n.push({name:"Docker",status:"ok",message:g?`v${g[1]}`:"Installed"})}catch{n.push({name:"Docker",status:"ok",message:"Installed"})}else n.push({name:"Docker",status:"error",message:"Not installed (brew install --cask docker)"});ow()?iw()?n.push({name:"Docker Daemon",status:"ok",message:"Running"}):n.push({name:"Docker Daemon",status:"error",message:"Not running (open -a Docker)"}):n.push({name:"Docker Daemon",status:"warn",message:"N/A (Docker not installed)"});let c=process.version;parseInt(c.slice(1).split(".")[0],10)>=18?n.push({name:"Node.js",status:"ok",message:c}):n.push({name:"Node.js",status:"error",message:`${c} (requires >= 18)`});let d=await Q8e();n.push(...d),console.log(r.formatHealthCheck(n,Pl)),n.some(f=>f.status==="error")&&process.exit(1)}async function K8e(t){try{let e=new AbortController,r=setTimeout(()=>e.abort(),3e3),n=await fetch(`${t}/api/status`,{signal:e.signal});if(clearTimeout(r),n.ok){let s=new URL(t);return{ok:!0,message:`${s.hostname}:${s.port||26169}`}}else return{ok:!1,message:`Not responding (${n.status})`}}catch(e){return e instanceof Error&&e.name==="AbortError"?{ok:!1,message:"Connection timeout"}:{ok:!1,message:"Not running"}}}async function Q8e(){let t=[];try{let{getAiiHome:e}=await Promise.resolve().then(()=>($n(),n1)),r=`${e()}/skills`;if(!Wo.existsSync(r))return t;let n=Wo.readdirSync(r,{withFileTypes:!0});for(let s of n){if(!s.isDirectory()||s.name.startsWith("."))continue;let o=`${r}/${s.name}/SKILL.md`;Wo.existsSync(o)||t.push({name:"Skill Shadow",status:"warn",message:`~/.aii/skills/${s.name}/ has no SKILL.md \u2014 may shadow other skills`})}try{let{PersonaManager:s}=await Promise.resolve().then(()=>(Ct(),Rt));if(s.hasInstance()&&s.getInstance().isActive()){let o=s.getInstance().getActive();if(o)for(let i of o.skillPaths){let a=i.split("/").pop()||"",l=`${r}/${a}`;Wo.existsSync(l)&&Wo.existsSync(`${l}/SKILL.md`)&&t.push({name:"Skill Shadow",status:"ok",message:`"${a}" user-authored shadows persona-bundled (intentional?)`})}}}catch{}}catch{}return t}Se();sr();import{execSync as wL}from"node:child_process";var Nw="@aiiware/aii";async function Aae(t){let e=t.args||[],r=t.subcommand||e[0]||"";if(t.flags.help||r==="help"||r==="--help"||e.includes("--help")){let n="0.17.11";console.log(""),console.log(L.logo(" Install")),console.log(""),console.log(` Current version: ${L.model(n)}`),console.log(""),console.log(m.yellow(" USAGE:")),console.log(` ${m.green("aii install")} Update to latest version`),console.log(` ${m.green("aii install <version>")} Install specific version`),console.log(` ${m.green("aii install skill <src>")} Install a skill package ${m.dim("(coming soon)")}`),console.log(` ${m.green("aii install mcp <name>")} Install an MCP server ${m.dim("(coming soon)")}`),console.log(""),console.log(m.yellow(" EXAMPLES:")),console.log(` ${m.green("aii install")} ${m.dim("# Self-update to latest")}`),console.log(` ${m.green("aii install 0.13.10")} ${m.dim("# Pin to specific version")}`),console.log("");return}if(r==="skill"){console.log("Skill installation coming soon. For now use: /skills install owner/repo");return}if(r==="mcp"){console.log("MCP installation coming soon. For now use: aii mcp install <server>");return}console.log("\x1B[33m\u26A0 `aii install` for self-update is deprecated. Use `aii upgrade` instead.\x1B[0m"),console.log(`\x1B[33m This alias will be removed in v0.16.x.\x1B[0m
|
|
4225
|
+
`),await X8e(r)}async function X8e(t){let e="0.17.11",r=t&&t!=="latest"?t:"";if(console.log(""),r){console.log(`\u{1FABC} Installing Aii CLI v${r}...`),console.log("");try{wL(`npm install -g ${Nw}@${r}`,{stdio:"inherit",timeout:12e4})}catch{console.error(`
|
|
4226
4226
|
\u274C Failed to install v${r}`),console.error(` Try manually: npm install -g ${Nw}@${r}`),process.exit(1)}}else{console.log("\u{1FABC} Updating Aii CLI to latest..."),console.log(` Current version: ${e}`),console.log("");try{wL(`npm install -g ${Nw}@latest`,{stdio:"inherit",timeout:12e4})}catch{console.error(`
|
|
4227
|
-
\u274C Failed to update Aii CLI`),console.error(` Try manually: npm install -g ${Nw}@latest`),process.exit(1)}}try{let n=wL("aii --version 2>/dev/null",{encoding:"utf-8",timeout:1e4,stdio:"pipe"}).trim();console.log(""),console.log(n===e?`\u2713 Aii CLI is already up to date (${e})`:`\u2713 Aii CLI updated: ${e} \u2192 ${n}`)}catch{console.log(""),console.log("\u2713 Aii CLI installed. Restart your terminal to use the new version.")}}Se();var Dae="0.17.
|
|
4227
|
+
\u274C Failed to update Aii CLI`),console.error(` Try manually: npm install -g ${Nw}@latest`),process.exit(1)}}try{let n=wL("aii --version 2>/dev/null",{encoding:"utf-8",timeout:1e4,stdio:"pipe"}).trim();console.log(""),console.log(n===e?`\u2713 Aii CLI is already up to date (${e})`:`\u2713 Aii CLI updated: ${e} \u2192 ${n}`)}catch{console.log(""),console.log("\u2713 Aii CLI installed. Restart your terminal to use the new version.")}}Se();var Dae="0.17.11";function CL(t){let r=!t.flags.noColors?m:{cyan:n=>n,yellow:n=>n,gray:n=>n,green:n=>n};console.log(`
|
|
4228
4228
|
${r.cyan("AII")} - AI-powered CLI assistant v${Dae}
|
|
4229
4229
|
|
|
4230
4230
|
${r.yellow("USAGE:")}
|