@compass-ai/nova 1.0.47 → 1.0.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.js CHANGED
@@ -30,7 +30,7 @@ Expecting one of '${s.join("', '")}'`);let c=`${t}Help`;return this.on(c,u=>{let
30
30
  `:`
31
31
  `)+n,c=s+1,s=i.indexOf(`
32
32
  `,c)}while(s!==-1);return u+=i.slice(c),u}var YEt=nr(()=>{});function Pre(i){return zZr(i)}var HEt,LEt,NHe,nB,Wre,JEt,iB,QZr,zZr,RHe,$Zr,qZr,WHe,Mye,KZr,eVr,hWn,H,Id=nr(()=>{REt();VEt();YEt();({stdout:HEt,stderr:LEt}=ZEt),NHe=Symbol("GENERATOR"),nB=Symbol("STYLER"),Wre=Symbol("IS_EMPTY"),JEt=["ansi","ansi","ansi256","ansi16m"],iB=Object.create(null),QZr=(i,t={})=>{if(t.level&&!(Number.isInteger(t.level)&&t.level>=0&&t.level<=3))throw new Error("The `level` option should be an integer from 0 to 3");let n=HEt?HEt.level:0;i.level=t.level===void 0?n:t.level},zZr=i=>{let t=(...n)=>n.join(" ");return QZr(t,i),Object.setPrototypeOf(t,Pre.prototype),t};Object.setPrototypeOf(Pre.prototype,Function.prototype);for(let[i,t]of Object.entries(QE))iB[i]={get(){let n=Mye(this,WHe(t.open,t.close,this[nB]),this[Wre]);return Object.defineProperty(this,i,{value:n}),n}};iB.visible={get(){let i=Mye(this,this[nB],!0);return Object.defineProperty(this,"visible",{value:i}),i}};RHe=(i,t,n,...s)=>i==="rgb"?t==="ansi16m"?QE[n].ansi16m(...s):t==="ansi256"?QE[n].ansi256(QE.rgbToAnsi256(...s)):QE[n].ansi(QE.rgbToAnsi(...s)):i==="hex"?RHe("rgb",t,n,...QE.hexToRgb(...s)):QE[n][i](...s),$Zr=["rgb","hex","ansi256"];for(let i of $Zr){iB[i]={get(){let{level:n}=this;return function(...s){let c=WHe(RHe(i,JEt[n],"color",...s),QE.color.close,this[nB]);return Mye(this,c,this[Wre])}}};let t="bg"+i[0].toUpperCase()+i.slice(1);iB[t]={get(){let{level:n}=this;return function(...s){let c=WHe(RHe(i,JEt[n],"bgColor",...s),QE.bgColor.close,this[nB]);return Mye(this,c,this[Wre])}}}}qZr=Object.defineProperties(()=>{},{...iB,level:{enumerable:!0,get(){return this[NHe].level},set(i){this[NHe].level=i}}}),WHe=(i,t,n)=>{let s,c;return n===void 0?(s=i,c=t):(s=n.openAll+i,c=t+n.closeAll),{open:i,close:t,openAll:s,closeAll:c,parent:n}},Mye=(i,t,n)=>{let s=(...c)=>KZr(s,c.length===1?""+c[0]:c.join(" "));return Object.setPrototypeOf(s,qZr),s[NHe]=i,s[nB]=t,s[Wre]=n,s},KZr=(i,t)=>{if(i.level<=0||!t)return i[Wre]?"":t;let n=i[nB];if(n===void 0)return t;let{openAll:s,closeAll:c}=n;if(t.includes("\x1B"))for(;n!==void 0;)t=MEt(t,n.close,n.open),n=n.parent;let u=t.indexOf(`
33
- `);return u!==-1&&(t=OEt(t,c,s,u)),s+t+c};Object.defineProperties(Pre.prototype,iB);eVr=Pre(),hWn=Pre({level:LEt?LEt.level:0}),H=eVr});var PHe,Mre,ZHe=nr(()=>{"use strict";PHe="1.0.0",Mre={dataCollection:{title:"Data Collection",description:"Allow Compass to store conversation history and session data locally for improved functionality.",required:!0,defaultValue:!0},telemetry:{title:"Anonymous Telemetry",description:"Help improve Compass by sending anonymous usage statistics.",required:!1,defaultValue:!1},analytics:{title:"Analytics",description:"Allow collection of feature usage patterns to improve the product.",required:!1,defaultValue:!1},errorReporting:{title:"Error Reporting",description:"Automatically send error reports to help fix bugs.",required:!1,defaultValue:!0}}});function zEt(i,t=0){return(YI[i[t+0]]+YI[i[t+1]]+YI[i[t+2]]+YI[i[t+3]]+"-"+YI[i[t+4]]+YI[i[t+5]]+"-"+YI[i[t+6]]+YI[i[t+7]]+"-"+YI[i[t+8]]+YI[i[t+9]]+"-"+YI[i[t+10]]+YI[i[t+11]]+YI[i[t+12]]+YI[i[t+13]]+YI[i[t+14]]+YI[i[t+15]]).toLowerCase()}var YI,$Et=nr(()=>{YI=[];for(let i=0;i<256;++i)YI.push((i+256).toString(16).slice(1))});import{randomFillSync as lVr}from"node:crypto";function VHe(){return Oye>Yye.length-16&&(lVr(Yye),Oye=0),Yye.slice(Oye,Oye+=16)}var Yye,Oye,qEt=nr(()=>{Yye=new Uint8Array(256),Oye=Yye.length});import{randomUUID as uVr}from"node:crypto";var MHe,KEt=nr(()=>{MHe={randomUUID:uVr}});function dVr(i,t,n){i=i||{};let s=i.random??i.rng?.()??VHe();if(s.length<16)throw new Error("Random bytes length must be >= 16");if(s[6]=s[6]&15|64,s[8]=s[8]&63|128,t){if(n=n||0,n<0||n+16>t.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let c=0;c<16;++c)t[n+c]=s[c];return t}return zEt(s)}function pVr(i,t,n){return MHe.randomUUID&&!t&&!i?MHe.randomUUID():dVr(i,t,n)}var Sl,eTt=nr(()=>{KEt();qEt();$Et();Sl=pVr});var Uv=nr(()=>{eTt()});var Ore,s3,aB,Hye,OHe,Yre,YHe,HHe,oB,LHe,cB,JHe,BHe,UHe,jHe,GC,XHe,cx,fVr,a3,v9,M2,tTt,QHe,zHe,$He,Wf=nr(()=>{"use strict";Ore=".compass",s3=".compass",aB="config.json",Hye="session.json",OHe="consent.json",Yre="credentials.enc",YHe="logs",HHe="backups",oB="saved-sessions",LHe="index",cB="temp",JHe="commands",BHe="agents",UHe="skills",jHe="hooks",GC="claude-sonnet-4-5-20250929",XHe="haiku",cx="verbose_analyst",fVr="banner",a3={anthropic:{model:GC,maxTokens:16384,temperature:.6},project:{rootDir:process.cwd(),ignorePatterns:["node_modules/**",".git/**","dist/**","build/**","out/**","coverage/**",".next/**",".nuxt/**",".output/**","*.log",".env*","*.lock","package-lock.json","yarn.lock","pnpm-lock.yaml",".DS_Store","Thumbs.db","*.min.js","*.min.css","*.map",".compass/**"],includePatterns:["**/*"],maxFileSize:1048576,indexOnStartup:!0},safety:{requireApproval:!0,autoApprovePatterns:[],blockedPatterns:[".env*","*.key","*.pem","*.p12","*.pfx","secrets/**","**/secrets/**","**/*.secret","**/credentials*","**/password*"],maxFilesPerOperation:50,backupBeforeModify:!0,shellCommandTimeout:12e4,allowedShellCommands:["npm","npx","yarn","pnpm","git","node","tsc","eslint","prettier","jest","vitest","mocha","cargo","rustc","go","python","python3","pip","pip3","poetry","make","cmake","gradle","mvn","docker","kubectl","terraform","aws","gcloud","az","cat","ls","pwd","echo","head","tail","grep","find","wc","sort","uniq","diff","tree"],blockedShellCommands:["rm -rf /","rm -rf /*","rm -rf ~","rm -rf ~/*","sudo rm -rf",":(){:|:&};:","mkfs","dd if=/dev/zero","dd if=/dev/random","> /dev/sda","chmod -R 777 /","chown -R","wget | sh","curl | sh","wget | bash","curl | bash"]},ui:{theme:"auto",showTokenUsage:!0,showTimestamps:!1,compactMode:!1,animationsEnabled:!0,colorOutput:!0},session:{autoSave:!0,autoSaveInterval:6e4,maxHistoryLength:100,autoCompactThreshold:5e4,sessionExpiryDays:30},update:{checkOnStartup:!0,checkInterval:4,showNotifications:!0,notificationStyle:fVr,includePrerelease:!1},agentic:{maxIterations:200,costWarningThreshold:5,costHardCap:0,autoCompactAtPercent:80,stuckDetectionEnabled:!0,stuckDetectionThreshold:3,maxIterationsPerTask:50}},v9=["anthropic","ollama","zai","minimax"],M2={API_KEY:"ANTHROPIC_API_KEY",COMPASS_API_KEY:"COMPASS_API_KEY",OLLAMA_API_KEY:"OLLAMA_API_KEY",ZAI_API_KEY:"ZAI_API_KEY",MINIMAX_API_KEY:"MINIMAX_API_KEY",MODEL:"COMPASS_MODEL",CONFIG_PATH:"COMPASS_CONFIG",DEBUG:"COMPASS_DEBUG",NO_COLOR:"NO_COLOR",FORCE_COLOR:"FORCE_COLOR",HOME:"HOME",USERPROFILE:"USERPROFILE"},tTt={anthropic:M2.API_KEY,ollama:M2.OLLAMA_API_KEY,zai:M2.ZAI_API_KEY,minimax:M2.MINIMAX_API_KEY},QHe="1.0.47",zHe=["package-lock.json","yarn.lock","pnpm-lock.yaml","composer.lock","Gemfile.lock","poetry.lock","Cargo.lock","go.sum","*.map","*.js.map","*.css.map","*.min.js","*.min.css","*.bundle.js","*.chunk.js","*.sql","*.csv","**/__snapshots__/**","**/fixtures/**/*.json","*.d.ts.map"],$He=["node_modules",".git","dist","build","out","coverage",".next",".nuxt",".output",".cache",".parcel-cache","vendor","__pycache__",".pytest_cache","target","bin","obj"]});import ZG from"path";import mVr from"os";function tl(){return ZG.join(mVr.homedir(),Ore)}function hu(i){let t=i||process.cwd();return ZG.join(t,s3)}function lB(i,t){let n=ZG.resolve(t),s=ZG.resolve(n,i);return s!==n&&!s.startsWith(n+ZG.sep)?null:s}function x9(i,t){let n=ZG.resolve(t),s=ZG.resolve(i);return s===n||s.startsWith(n+ZG.sep)}function rTt(i,t){return ZG.relative(t,i)}function w9(i){return i.replace(/\\/g,"/")}function Lye(i,t){let n=w9(i);for(let s of t)if(hVr(s).test(n))return!0;return!1}function hVr(i){let t=i.replace(/[.+^${}()|[\]\\]/g,"\\$&");return t=t.replace(/\*\*/g,"{{GLOBSTAR}}"),t=t.replace(/\*/g,"[^/]*"),t=t.replace(/\?/g,"[^/]"),t=t.replace(/{{GLOBSTAR}}/g,".*"),new RegExp(`^${t}$`)}function Hre(...i){return ZG.resolve(...i)}var bf=nr(()=>{"use strict";Wf()});var Ob=$e(qHe=>{"use strict";qHe.fromCallback=function(i){return Object.defineProperty(function(...t){if(typeof t[t.length-1]=="function")i.apply(this,t);else return new Promise((n,s)=>{t.push((c,u)=>c!=null?s(c):n(u)),i.apply(this,t)})},"name",{value:i.name})};qHe.fromPromise=function(i){return Object.defineProperty(function(...t){let n=t[t.length-1];if(typeof n!="function")return i.apply(this,t);t.pop(),i.apply(this,t).then(s=>n(null,s),n)},"name",{value:i.name})}});var iTt=$e((jWn,nTt)=>{var QP=Bi("constants"),_Vr=process.cwd,Jye=null,gVr=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Jye||(Jye=_Vr.call(process)),Jye};try{process.cwd()}catch{}typeof process.chdir=="function"&&(KHe=process.chdir,process.chdir=function(i){Jye=null,KHe.call(process,i)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,KHe));var KHe;nTt.exports=yVr;function yVr(i){QP.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(i),i.lutimes||n(i),i.chown=u(i.chown),i.fchown=u(i.fchown),i.lchown=u(i.lchown),i.chmod=s(i.chmod),i.fchmod=s(i.fchmod),i.lchmod=s(i.lchmod),i.chownSync=m(i.chownSync),i.fchownSync=m(i.fchownSync),i.lchownSync=m(i.lchownSync),i.chmodSync=c(i.chmodSync),i.fchmodSync=c(i.fchmodSync),i.lchmodSync=c(i.lchmodSync),i.stat=y(i.stat),i.fstat=y(i.fstat),i.lstat=y(i.lstat),i.statSync=v(i.statSync),i.fstatSync=v(i.fstatSync),i.lstatSync=v(i.lstatSync),i.chmod&&!i.lchmod&&(i.lchmod=function(T,R,F){F&&process.nextTick(F)},i.lchmodSync=function(){}),i.chown&&!i.lchown&&(i.lchown=function(T,R,F,W){W&&process.nextTick(W)},i.lchownSync=function(){}),gVr==="win32"&&(i.rename=typeof i.rename!="function"?i.rename:(function(T){function R(F,W,V){var B=Date.now(),ie=0;T(F,W,function fe(Ge){if(Ge&&(Ge.code==="EACCES"||Ge.code==="EPERM"||Ge.code==="EBUSY")&&Date.now()-B<6e4){setTimeout(function(){i.stat(W,function(ot,gt){ot&&ot.code==="ENOENT"?T(F,W,fe):V(Ge)})},ie),ie<100&&(ie+=10);return}V&&V(Ge)})}return Object.setPrototypeOf&&Object.setPrototypeOf(R,T),R})(i.rename)),i.read=typeof i.read!="function"?i.read:(function(T){function R(F,W,V,B,ie,fe){var Ge;if(fe&&typeof fe=="function"){var ot=0;Ge=function(gt,Mt,Xt){if(gt&&gt.code==="EAGAIN"&&ot<10)return ot++,T.call(i,F,W,V,B,ie,Ge);fe.apply(this,arguments)}}return T.call(i,F,W,V,B,ie,Ge)}return Object.setPrototypeOf&&Object.setPrototypeOf(R,T),R})(i.read),i.readSync=typeof i.readSync!="function"?i.readSync:(function(T){return function(R,F,W,V,B){for(var ie=0;;)try{return T.call(i,R,F,W,V,B)}catch(fe){if(fe.code==="EAGAIN"&&ie<10){ie++;continue}throw fe}}})(i.readSync);function t(T){T.lchmod=function(R,F,W){T.open(R,QP.O_WRONLY|QP.O_SYMLINK,F,function(V,B){if(V){W&&W(V);return}T.fchmod(B,F,function(ie){T.close(B,function(fe){W&&W(ie||fe)})})})},T.lchmodSync=function(R,F){var W=T.openSync(R,QP.O_WRONLY|QP.O_SYMLINK,F),V=!0,B;try{B=T.fchmodSync(W,F),V=!1}finally{if(V)try{T.closeSync(W)}catch{}else T.closeSync(W)}return B}}function n(T){QP.hasOwnProperty("O_SYMLINK")&&T.futimes?(T.lutimes=function(R,F,W,V){T.open(R,QP.O_SYMLINK,function(B,ie){if(B){V&&V(B);return}T.futimes(ie,F,W,function(fe){T.close(ie,function(Ge){V&&V(fe||Ge)})})})},T.lutimesSync=function(R,F,W){var V=T.openSync(R,QP.O_SYMLINK),B,ie=!0;try{B=T.futimesSync(V,F,W),ie=!1}finally{if(ie)try{T.closeSync(V)}catch{}else T.closeSync(V)}return B}):T.futimes&&(T.lutimes=function(R,F,W,V){V&&process.nextTick(V)},T.lutimesSync=function(){})}function s(T){return T&&function(R,F,W){return T.call(i,R,F,function(V){C(V)&&(V=null),W&&W.apply(this,arguments)})}}function c(T){return T&&function(R,F){try{return T.call(i,R,F)}catch(W){if(!C(W))throw W}}}function u(T){return T&&function(R,F,W,V){return T.call(i,R,F,W,function(B){C(B)&&(B=null),V&&V.apply(this,arguments)})}}function m(T){return T&&function(R,F,W){try{return T.call(i,R,F,W)}catch(V){if(!C(V))throw V}}}function y(T){return T&&function(R,F,W){typeof F=="function"&&(W=F,F=null);function V(B,ie){ie&&(ie.uid<0&&(ie.uid+=4294967296),ie.gid<0&&(ie.gid+=4294967296)),W&&W.apply(this,arguments)}return F?T.call(i,R,F,V):T.call(i,R,V)}}function v(T){return T&&function(R,F){var W=F?T.call(i,R,F):T.call(i,R);return W&&(W.uid<0&&(W.uid+=4294967296),W.gid<0&&(W.gid+=4294967296)),W}}function C(T){if(!T||T.code==="ENOSYS")return!0;var R=!process.getuid||process.getuid()!==0;return!!(R&&(T.code==="EINVAL"||T.code==="EPERM"))}}});var oTt=$e((XWn,aTt)=>{var sTt=Bi("stream").Stream;aTt.exports=bVr;function bVr(i){return{ReadStream:t,WriteStream:n};function t(s,c){if(!(this instanceof t))return new t(s,c);sTt.call(this);var u=this;this.path=s,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=64*1024,c=c||{};for(var m=Object.keys(c),y=0,v=m.length;y<v;y++){var C=m[y];this[C]=c[C]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!="number")throw TypeError("end must be a Number");if(this.start>this.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){u._read()});return}i.open(this.path,this.flags,this.mode,function(T,R){if(T){u.emit("error",T),u.readable=!1;return}u.fd=R,u.emit("open",R),u._read()})}function n(s,c){if(!(this instanceof n))return new n(s,c);sTt.call(this),this.path=s,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,c=c||{};for(var u=Object.keys(c),m=0,y=u.length;m<y;m++){var v=u[m];this[v]=c[v]}if(this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.start<0)throw new Error("start must be >= zero");this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=i.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}});var lTt=$e((QWn,cTt)=>{"use strict";cTt.exports=vVr;var IVr=Object.getPrototypeOf||function(i){return i.__proto__};function vVr(i){if(i===null||typeof i!="object")return i;if(i instanceof Object)var t={__proto__:IVr(i)};else var t=Object.create(null);return Object.getOwnPropertyNames(i).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(i,n))}),t}});var k9=$e((zWn,rLe)=>{var sg=Bi("fs"),xVr=iTt(),wVr=oTt(),AVr=lTt(),Bye=Bi("util"),HI,jye;typeof Symbol=="function"&&typeof Symbol.for=="function"?(HI=Symbol.for("graceful-fs.queue"),jye=Symbol.for("graceful-fs.previous")):(HI="___graceful-fs.queue",jye="___graceful-fs.previous");function kVr(){}function pTt(i,t){Object.defineProperty(i,HI,{get:function(){return t}})}var A9=kVr;Bye.debuglog?A9=Bye.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(A9=function(){var i=Bye.format.apply(Bye,arguments);i="GFS4: "+i.split(/\n/).join(`
33
+ `);return u!==-1&&(t=OEt(t,c,s,u)),s+t+c};Object.defineProperties(Pre.prototype,iB);eVr=Pre(),hWn=Pre({level:LEt?LEt.level:0}),H=eVr});var PHe,Mre,ZHe=nr(()=>{"use strict";PHe="1.0.0",Mre={dataCollection:{title:"Data Collection",description:"Allow Compass to store conversation history and session data locally for improved functionality.",required:!0,defaultValue:!0},telemetry:{title:"Anonymous Telemetry",description:"Help improve Compass by sending anonymous usage statistics.",required:!1,defaultValue:!1},analytics:{title:"Analytics",description:"Allow collection of feature usage patterns to improve the product.",required:!1,defaultValue:!1},errorReporting:{title:"Error Reporting",description:"Automatically send error reports to help fix bugs.",required:!1,defaultValue:!0}}});function zEt(i,t=0){return(YI[i[t+0]]+YI[i[t+1]]+YI[i[t+2]]+YI[i[t+3]]+"-"+YI[i[t+4]]+YI[i[t+5]]+"-"+YI[i[t+6]]+YI[i[t+7]]+"-"+YI[i[t+8]]+YI[i[t+9]]+"-"+YI[i[t+10]]+YI[i[t+11]]+YI[i[t+12]]+YI[i[t+13]]+YI[i[t+14]]+YI[i[t+15]]).toLowerCase()}var YI,$Et=nr(()=>{YI=[];for(let i=0;i<256;++i)YI.push((i+256).toString(16).slice(1))});import{randomFillSync as lVr}from"node:crypto";function VHe(){return Oye>Yye.length-16&&(lVr(Yye),Oye=0),Yye.slice(Oye,Oye+=16)}var Yye,Oye,qEt=nr(()=>{Yye=new Uint8Array(256),Oye=Yye.length});import{randomUUID as uVr}from"node:crypto";var MHe,KEt=nr(()=>{MHe={randomUUID:uVr}});function dVr(i,t,n){i=i||{};let s=i.random??i.rng?.()??VHe();if(s.length<16)throw new Error("Random bytes length must be >= 16");if(s[6]=s[6]&15|64,s[8]=s[8]&63|128,t){if(n=n||0,n<0||n+16>t.length)throw new RangeError(`UUID byte range ${n}:${n+15} is out of buffer bounds`);for(let c=0;c<16;++c)t[n+c]=s[c];return t}return zEt(s)}function pVr(i,t,n){return MHe.randomUUID&&!t&&!i?MHe.randomUUID():dVr(i,t,n)}var Sl,eTt=nr(()=>{KEt();qEt();$Et();Sl=pVr});var Uv=nr(()=>{eTt()});var Ore,s3,aB,Hye,OHe,Yre,YHe,HHe,oB,LHe,cB,JHe,BHe,UHe,jHe,GC,XHe,cx,fVr,a3,v9,M2,tTt,QHe,zHe,$He,Wf=nr(()=>{"use strict";Ore=".compass",s3=".compass",aB="config.json",Hye="session.json",OHe="consent.json",Yre="credentials.enc",YHe="logs",HHe="backups",oB="saved-sessions",LHe="index",cB="temp",JHe="commands",BHe="agents",UHe="skills",jHe="hooks",GC="claude-sonnet-4-5-20250929",XHe="haiku",cx="verbose_analyst",fVr="banner",a3={anthropic:{model:GC,maxTokens:16384,temperature:.6},project:{rootDir:process.cwd(),ignorePatterns:["node_modules/**",".git/**","dist/**","build/**","out/**","coverage/**",".next/**",".nuxt/**",".output/**","*.log",".env*","*.lock","package-lock.json","yarn.lock","pnpm-lock.yaml",".DS_Store","Thumbs.db","*.min.js","*.min.css","*.map",".compass/**"],includePatterns:["**/*"],maxFileSize:1048576,indexOnStartup:!0},safety:{requireApproval:!0,autoApprovePatterns:[],blockedPatterns:[".env*","*.key","*.pem","*.p12","*.pfx","secrets/**","**/secrets/**","**/*.secret","**/credentials*","**/password*"],maxFilesPerOperation:50,backupBeforeModify:!0,shellCommandTimeout:12e4,allowedShellCommands:["npm","npx","yarn","pnpm","git","node","tsc","eslint","prettier","jest","vitest","mocha","cargo","rustc","go","python","python3","pip","pip3","poetry","make","cmake","gradle","mvn","docker","kubectl","terraform","aws","gcloud","az","cat","ls","pwd","echo","head","tail","grep","find","wc","sort","uniq","diff","tree"],blockedShellCommands:["rm -rf /","rm -rf /*","rm -rf ~","rm -rf ~/*","sudo rm -rf",":(){:|:&};:","mkfs","dd if=/dev/zero","dd if=/dev/random","> /dev/sda","chmod -R 777 /","chown -R","wget | sh","curl | sh","wget | bash","curl | bash"]},ui:{theme:"auto",showTokenUsage:!0,showTimestamps:!1,compactMode:!1,animationsEnabled:!0,colorOutput:!0},session:{autoSave:!0,autoSaveInterval:6e4,maxHistoryLength:100,autoCompactThreshold:5e4,sessionExpiryDays:30},update:{checkOnStartup:!0,checkInterval:4,showNotifications:!0,notificationStyle:fVr,includePrerelease:!1},agentic:{maxIterations:200,costWarningThreshold:5,costHardCap:0,autoCompactAtPercent:80,stuckDetectionEnabled:!0,stuckDetectionThreshold:3,maxIterationsPerTask:50}},v9=["anthropic","ollama","zai","minimax"],M2={API_KEY:"ANTHROPIC_API_KEY",COMPASS_API_KEY:"COMPASS_API_KEY",OLLAMA_API_KEY:"OLLAMA_API_KEY",ZAI_API_KEY:"ZAI_API_KEY",MINIMAX_API_KEY:"MINIMAX_API_KEY",MODEL:"COMPASS_MODEL",CONFIG_PATH:"COMPASS_CONFIG",DEBUG:"COMPASS_DEBUG",NO_COLOR:"NO_COLOR",FORCE_COLOR:"FORCE_COLOR",HOME:"HOME",USERPROFILE:"USERPROFILE"},tTt={anthropic:M2.API_KEY,ollama:M2.OLLAMA_API_KEY,zai:M2.ZAI_API_KEY,minimax:M2.MINIMAX_API_KEY},QHe="1.0.48",zHe=["package-lock.json","yarn.lock","pnpm-lock.yaml","composer.lock","Gemfile.lock","poetry.lock","Cargo.lock","go.sum","*.map","*.js.map","*.css.map","*.min.js","*.min.css","*.bundle.js","*.chunk.js","*.sql","*.csv","**/__snapshots__/**","**/fixtures/**/*.json","*.d.ts.map"],$He=["node_modules",".git","dist","build","out","coverage",".next",".nuxt",".output",".cache",".parcel-cache","vendor","__pycache__",".pytest_cache","target","bin","obj"]});import ZG from"path";import mVr from"os";function tl(){return ZG.join(mVr.homedir(),Ore)}function hu(i){let t=i||process.cwd();return ZG.join(t,s3)}function lB(i,t){let n=ZG.resolve(t),s=ZG.resolve(n,i);return s!==n&&!s.startsWith(n+ZG.sep)?null:s}function x9(i,t){let n=ZG.resolve(t),s=ZG.resolve(i);return s===n||s.startsWith(n+ZG.sep)}function rTt(i,t){return ZG.relative(t,i)}function w9(i){return i.replace(/\\/g,"/")}function Lye(i,t){let n=w9(i);for(let s of t)if(hVr(s).test(n))return!0;return!1}function hVr(i){let t=i.replace(/[.+^${}()|[\]\\]/g,"\\$&");return t=t.replace(/\*\*/g,"{{GLOBSTAR}}"),t=t.replace(/\*/g,"[^/]*"),t=t.replace(/\?/g,"[^/]"),t=t.replace(/{{GLOBSTAR}}/g,".*"),new RegExp(`^${t}$`)}function Hre(...i){return ZG.resolve(...i)}var bf=nr(()=>{"use strict";Wf()});var Ob=$e(qHe=>{"use strict";qHe.fromCallback=function(i){return Object.defineProperty(function(...t){if(typeof t[t.length-1]=="function")i.apply(this,t);else return new Promise((n,s)=>{t.push((c,u)=>c!=null?s(c):n(u)),i.apply(this,t)})},"name",{value:i.name})};qHe.fromPromise=function(i){return Object.defineProperty(function(...t){let n=t[t.length-1];if(typeof n!="function")return i.apply(this,t);t.pop(),i.apply(this,t).then(s=>n(null,s),n)},"name",{value:i.name})}});var iTt=$e((jWn,nTt)=>{var QP=Bi("constants"),_Vr=process.cwd,Jye=null,gVr=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return Jye||(Jye=_Vr.call(process)),Jye};try{process.cwd()}catch{}typeof process.chdir=="function"&&(KHe=process.chdir,process.chdir=function(i){Jye=null,KHe.call(process,i)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,KHe));var KHe;nTt.exports=yVr;function yVr(i){QP.hasOwnProperty("O_SYMLINK")&&process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)&&t(i),i.lutimes||n(i),i.chown=u(i.chown),i.fchown=u(i.fchown),i.lchown=u(i.lchown),i.chmod=s(i.chmod),i.fchmod=s(i.fchmod),i.lchmod=s(i.lchmod),i.chownSync=m(i.chownSync),i.fchownSync=m(i.fchownSync),i.lchownSync=m(i.lchownSync),i.chmodSync=c(i.chmodSync),i.fchmodSync=c(i.fchmodSync),i.lchmodSync=c(i.lchmodSync),i.stat=y(i.stat),i.fstat=y(i.fstat),i.lstat=y(i.lstat),i.statSync=v(i.statSync),i.fstatSync=v(i.fstatSync),i.lstatSync=v(i.lstatSync),i.chmod&&!i.lchmod&&(i.lchmod=function(T,R,F){F&&process.nextTick(F)},i.lchmodSync=function(){}),i.chown&&!i.lchown&&(i.lchown=function(T,R,F,W){W&&process.nextTick(W)},i.lchownSync=function(){}),gVr==="win32"&&(i.rename=typeof i.rename!="function"?i.rename:(function(T){function R(F,W,V){var B=Date.now(),ie=0;T(F,W,function fe(Ge){if(Ge&&(Ge.code==="EACCES"||Ge.code==="EPERM"||Ge.code==="EBUSY")&&Date.now()-B<6e4){setTimeout(function(){i.stat(W,function(ot,gt){ot&&ot.code==="ENOENT"?T(F,W,fe):V(Ge)})},ie),ie<100&&(ie+=10);return}V&&V(Ge)})}return Object.setPrototypeOf&&Object.setPrototypeOf(R,T),R})(i.rename)),i.read=typeof i.read!="function"?i.read:(function(T){function R(F,W,V,B,ie,fe){var Ge;if(fe&&typeof fe=="function"){var ot=0;Ge=function(gt,Mt,Xt){if(gt&&gt.code==="EAGAIN"&&ot<10)return ot++,T.call(i,F,W,V,B,ie,Ge);fe.apply(this,arguments)}}return T.call(i,F,W,V,B,ie,Ge)}return Object.setPrototypeOf&&Object.setPrototypeOf(R,T),R})(i.read),i.readSync=typeof i.readSync!="function"?i.readSync:(function(T){return function(R,F,W,V,B){for(var ie=0;;)try{return T.call(i,R,F,W,V,B)}catch(fe){if(fe.code==="EAGAIN"&&ie<10){ie++;continue}throw fe}}})(i.readSync);function t(T){T.lchmod=function(R,F,W){T.open(R,QP.O_WRONLY|QP.O_SYMLINK,F,function(V,B){if(V){W&&W(V);return}T.fchmod(B,F,function(ie){T.close(B,function(fe){W&&W(ie||fe)})})})},T.lchmodSync=function(R,F){var W=T.openSync(R,QP.O_WRONLY|QP.O_SYMLINK,F),V=!0,B;try{B=T.fchmodSync(W,F),V=!1}finally{if(V)try{T.closeSync(W)}catch{}else T.closeSync(W)}return B}}function n(T){QP.hasOwnProperty("O_SYMLINK")&&T.futimes?(T.lutimes=function(R,F,W,V){T.open(R,QP.O_SYMLINK,function(B,ie){if(B){V&&V(B);return}T.futimes(ie,F,W,function(fe){T.close(ie,function(Ge){V&&V(fe||Ge)})})})},T.lutimesSync=function(R,F,W){var V=T.openSync(R,QP.O_SYMLINK),B,ie=!0;try{B=T.futimesSync(V,F,W),ie=!1}finally{if(ie)try{T.closeSync(V)}catch{}else T.closeSync(V)}return B}):T.futimes&&(T.lutimes=function(R,F,W,V){V&&process.nextTick(V)},T.lutimesSync=function(){})}function s(T){return T&&function(R,F,W){return T.call(i,R,F,function(V){C(V)&&(V=null),W&&W.apply(this,arguments)})}}function c(T){return T&&function(R,F){try{return T.call(i,R,F)}catch(W){if(!C(W))throw W}}}function u(T){return T&&function(R,F,W,V){return T.call(i,R,F,W,function(B){C(B)&&(B=null),V&&V.apply(this,arguments)})}}function m(T){return T&&function(R,F,W){try{return T.call(i,R,F,W)}catch(V){if(!C(V))throw V}}}function y(T){return T&&function(R,F,W){typeof F=="function"&&(W=F,F=null);function V(B,ie){ie&&(ie.uid<0&&(ie.uid+=4294967296),ie.gid<0&&(ie.gid+=4294967296)),W&&W.apply(this,arguments)}return F?T.call(i,R,F,V):T.call(i,R,V)}}function v(T){return T&&function(R,F){var W=F?T.call(i,R,F):T.call(i,R);return W&&(W.uid<0&&(W.uid+=4294967296),W.gid<0&&(W.gid+=4294967296)),W}}function C(T){if(!T||T.code==="ENOSYS")return!0;var R=!process.getuid||process.getuid()!==0;return!!(R&&(T.code==="EINVAL"||T.code==="EPERM"))}}});var oTt=$e((XWn,aTt)=>{var sTt=Bi("stream").Stream;aTt.exports=bVr;function bVr(i){return{ReadStream:t,WriteStream:n};function t(s,c){if(!(this instanceof t))return new t(s,c);sTt.call(this);var u=this;this.path=s,this.fd=null,this.readable=!0,this.paused=!1,this.flags="r",this.mode=438,this.bufferSize=64*1024,c=c||{};for(var m=Object.keys(c),y=0,v=m.length;y<v;y++){var C=m[y];this[C]=c[C]}if(this.encoding&&this.setEncoding(this.encoding),this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.end===void 0)this.end=1/0;else if(typeof this.end!="number")throw TypeError("end must be a Number");if(this.start>this.end)throw new Error("start must be <= end");this.pos=this.start}if(this.fd!==null){process.nextTick(function(){u._read()});return}i.open(this.path,this.flags,this.mode,function(T,R){if(T){u.emit("error",T),u.readable=!1;return}u.fd=R,u.emit("open",R),u._read()})}function n(s,c){if(!(this instanceof n))return new n(s,c);sTt.call(this),this.path=s,this.fd=null,this.writable=!0,this.flags="w",this.encoding="binary",this.mode=438,this.bytesWritten=0,c=c||{};for(var u=Object.keys(c),m=0,y=u.length;m<y;m++){var v=u[m];this[v]=c[v]}if(this.start!==void 0){if(typeof this.start!="number")throw TypeError("start must be a Number");if(this.start<0)throw new Error("start must be >= zero");this.pos=this.start}this.busy=!1,this._queue=[],this.fd===null&&(this._open=i.open,this._queue.push([this._open,this.path,this.flags,this.mode,void 0]),this.flush())}}});var lTt=$e((QWn,cTt)=>{"use strict";cTt.exports=vVr;var IVr=Object.getPrototypeOf||function(i){return i.__proto__};function vVr(i){if(i===null||typeof i!="object")return i;if(i instanceof Object)var t={__proto__:IVr(i)};else var t=Object.create(null);return Object.getOwnPropertyNames(i).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(i,n))}),t}});var k9=$e((zWn,rLe)=>{var sg=Bi("fs"),xVr=iTt(),wVr=oTt(),AVr=lTt(),Bye=Bi("util"),HI,jye;typeof Symbol=="function"&&typeof Symbol.for=="function"?(HI=Symbol.for("graceful-fs.queue"),jye=Symbol.for("graceful-fs.previous")):(HI="___graceful-fs.queue",jye="___graceful-fs.previous");function kVr(){}function pTt(i,t){Object.defineProperty(i,HI,{get:function(){return t}})}var A9=kVr;Bye.debuglog?A9=Bye.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(A9=function(){var i=Bye.format.apply(Bye,arguments);i="GFS4: "+i.split(/\n/).join(`
34
34
  GFS4: `),console.error(i)});sg[HI]||(uTt=global[HI]||[],pTt(sg,uTt),sg.close=(function(i){function t(n,s){return i.call(sg,n,function(c){c||dTt(),typeof s=="function"&&s.apply(this,arguments)})}return Object.defineProperty(t,jye,{value:i}),t})(sg.close),sg.closeSync=(function(i){function t(n){i.apply(sg,arguments),dTt()}return Object.defineProperty(t,jye,{value:i}),t})(sg.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){A9(sg[HI]),Bi("assert").equal(sg[HI].length,0)}));var uTt;global[HI]||pTt(global,sg[HI]);rLe.exports=eLe(AVr(sg));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!sg.__patched&&(rLe.exports=eLe(sg),sg.__patched=!0);function eLe(i){xVr(i),i.gracefulify=eLe,i.createReadStream=Mt,i.createWriteStream=Xt;var t=i.readFile;i.readFile=n;function n(_r,en,cr){return typeof en=="function"&&(cr=en,en=null),Ki(_r,en,cr);function Ki(Oi,sr,Cn,Zn){return t(Oi,sr,function(Gt){Gt&&(Gt.code==="EMFILE"||Gt.code==="ENFILE")?uB([Ki,[Oi,sr,Cn],Gt,Zn||Date.now(),Date.now()]):typeof Cn=="function"&&Cn.apply(this,arguments)})}}var s=i.writeFile;i.writeFile=c;function c(_r,en,cr,Ki){return typeof cr=="function"&&(Ki=cr,cr=null),Oi(_r,en,cr,Ki);function Oi(sr,Cn,Zn,Gt,Yi){return s(sr,Cn,Zn,function(Jn){Jn&&(Jn.code==="EMFILE"||Jn.code==="ENFILE")?uB([Oi,[sr,Cn,Zn,Gt],Jn,Yi||Date.now(),Date.now()]):typeof Gt=="function"&&Gt.apply(this,arguments)})}}var u=i.appendFile;u&&(i.appendFile=m);function m(_r,en,cr,Ki){return typeof cr=="function"&&(Ki=cr,cr=null),Oi(_r,en,cr,Ki);function Oi(sr,Cn,Zn,Gt,Yi){return u(sr,Cn,Zn,function(Jn){Jn&&(Jn.code==="EMFILE"||Jn.code==="ENFILE")?uB([Oi,[sr,Cn,Zn,Gt],Jn,Yi||Date.now(),Date.now()]):typeof Gt=="function"&&Gt.apply(this,arguments)})}}var y=i.copyFile;y&&(i.copyFile=v);function v(_r,en,cr,Ki){return typeof cr=="function"&&(Ki=cr,cr=0),Oi(_r,en,cr,Ki);function Oi(sr,Cn,Zn,Gt,Yi){return y(sr,Cn,Zn,function(Jn){Jn&&(Jn.code==="EMFILE"||Jn.code==="ENFILE")?uB([Oi,[sr,Cn,Zn,Gt],Jn,Yi||Date.now(),Date.now()]):typeof Gt=="function"&&Gt.apply(this,arguments)})}}var C=i.readdir;i.readdir=R;var T=/^v[0-5]\./;function R(_r,en,cr){typeof en=="function"&&(cr=en,en=null);var Ki=T.test(process.version)?function(Cn,Zn,Gt,Yi){return C(Cn,Oi(Cn,Zn,Gt,Yi))}:function(Cn,Zn,Gt,Yi){return C(Cn,Zn,Oi(Cn,Zn,Gt,Yi))};return Ki(_r,en,cr);function Oi(sr,Cn,Zn,Gt){return function(Yi,Jn){Yi&&(Yi.code==="EMFILE"||Yi.code==="ENFILE")?uB([Ki,[sr,Cn,Zn],Yi,Gt||Date.now(),Date.now()]):(Jn&&Jn.sort&&Jn.sort(),typeof Zn=="function"&&Zn.call(this,Yi,Jn))}}}if(process.version.substr(0,4)==="v0.8"){var F=wVr(i);fe=F.ReadStream,ot=F.WriteStream}var W=i.ReadStream;W&&(fe.prototype=Object.create(W.prototype),fe.prototype.open=Ge);var V=i.WriteStream;V&&(ot.prototype=Object.create(V.prototype),ot.prototype.open=gt),Object.defineProperty(i,"ReadStream",{get:function(){return fe},set:function(_r){fe=_r},enumerable:!0,configurable:!0}),Object.defineProperty(i,"WriteStream",{get:function(){return ot},set:function(_r){ot=_r},enumerable:!0,configurable:!0});var B=fe;Object.defineProperty(i,"FileReadStream",{get:function(){return B},set:function(_r){B=_r},enumerable:!0,configurable:!0});var ie=ot;Object.defineProperty(i,"FileWriteStream",{get:function(){return ie},set:function(_r){ie=_r},enumerable:!0,configurable:!0});function fe(_r,en){return this instanceof fe?(W.apply(this,arguments),this):fe.apply(Object.create(fe.prototype),arguments)}function Ge(){var _r=this;Sn(_r.path,_r.flags,_r.mode,function(en,cr){en?(_r.autoClose&&_r.destroy(),_r.emit("error",en)):(_r.fd=cr,_r.emit("open",cr),_r.read())})}function ot(_r,en){return this instanceof ot?(V.apply(this,arguments),this):ot.apply(Object.create(ot.prototype),arguments)}function gt(){var _r=this;Sn(_r.path,_r.flags,_r.mode,function(en,cr){en?(_r.destroy(),_r.emit("error",en)):(_r.fd=cr,_r.emit("open",cr))})}function Mt(_r,en){return new i.ReadStream(_r,en)}function Xt(_r,en){return new i.WriteStream(_r,en)}var At=i.open;i.open=Sn;function Sn(_r,en,cr,Ki){return typeof cr=="function"&&(Ki=cr,cr=null),Oi(_r,en,cr,Ki);function Oi(sr,Cn,Zn,Gt,Yi){return At(sr,Cn,Zn,function(Jn,mo){Jn&&(Jn.code==="EMFILE"||Jn.code==="ENFILE")?uB([Oi,[sr,Cn,Zn,Gt],Jn,Yi||Date.now(),Date.now()]):typeof Gt=="function"&&Gt.apply(this,arguments)})}}return i}function uB(i){A9("ENQUEUE",i[0].name,i[1]),sg[HI].push(i),tLe()}var Uye;function dTt(){for(var i=Date.now(),t=0;t<sg[HI].length;++t)sg[HI][t].length>2&&(sg[HI][t][3]=i,sg[HI][t][4]=i);tLe()}function tLe(){if(clearTimeout(Uye),Uye=void 0,sg[HI].length!==0){var i=sg[HI].shift(),t=i[0],n=i[1],s=i[2],c=i[3],u=i[4];if(c===void 0)A9("RETRY",t.name,n),t.apply(null,n);else if(Date.now()-c>=6e4){A9("TIMEOUT",t.name,n);var m=n.pop();typeof m=="function"&&m.call(null,s)}else{var y=Date.now()-u,v=Math.max(u-c,1),C=Math.min(v*1.2,100);y>=C?(A9("RETRY",t.name,n),t.apply(null,n.concat([c]))):sg[HI].push(i)}Uye===void 0&&(Uye=setTimeout(tLe,0))}}});var ux=$e(o3=>{"use strict";var fTt=Ob().fromCallback,lx=k9(),CVr=["access","appendFile","chmod","chown","close","copyFile","cp","fchmod","fchown","fdatasync","fstat","fsync","ftruncate","futimes","glob","lchmod","lchown","lutimes","link","lstat","mkdir","mkdtemp","open","opendir","readdir","readFile","readlink","realpath","rename","rm","rmdir","stat","statfs","symlink","truncate","unlink","utimes","writeFile"].filter(i=>typeof lx[i]=="function");Object.assign(o3,lx);CVr.forEach(i=>{o3[i]=fTt(lx[i])});o3.exists=function(i,t){return typeof t=="function"?lx.exists(i,t):new Promise(n=>lx.exists(i,n))};o3.read=function(i,t,n,s,c,u){return typeof u=="function"?lx.read(i,t,n,s,c,u):new Promise((m,y)=>{lx.read(i,t,n,s,c,(v,C,T)=>{if(v)return y(v);m({bytesRead:C,buffer:T})})})};o3.write=function(i,t,...n){return typeof n[n.length-1]=="function"?lx.write(i,t,...n):new Promise((s,c)=>{lx.write(i,t,...n,(u,m,y)=>{if(u)return c(u);s({bytesWritten:m,buffer:y})})})};o3.readv=function(i,t,...n){return typeof n[n.length-1]=="function"?lx.readv(i,t,...n):new Promise((s,c)=>{lx.readv(i,t,...n,(u,m,y)=>{if(u)return c(u);s({bytesRead:m,buffers:y})})})};o3.writev=function(i,t,...n){return typeof n[n.length-1]=="function"?lx.writev(i,t,...n):new Promise((s,c)=>{lx.writev(i,t,...n,(u,m,y)=>{if(u)return c(u);s({bytesWritten:m,buffers:y})})})};typeof lx.realpath.native=="function"?o3.realpath.native=fTt(lx.realpath.native):process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?","Warning","fs-extra-WARN0003")});var hTt=$e((qWn,mTt)=>{"use strict";var SVr=Bi("path");mTt.exports.checkPath=function(t){if(process.platform==="win32"&&/[<>:"|?*]/.test(t.replace(SVr.parse(t).root,""))){let s=new Error(`Path contains invalid characters: ${t}`);throw s.code="EINVAL",s}}});var bTt=$e((KWn,nLe)=>{"use strict";var _Tt=ux(),{checkPath:gTt}=hTt(),yTt=i=>{let t={mode:511};return typeof i=="number"?i:{...t,...i}.mode};nLe.exports.makeDir=async(i,t)=>(gTt(i),_Tt.mkdir(i,{mode:yTt(t),recursive:!0}));nLe.exports.makeDirSync=(i,t)=>(gTt(i),_Tt.mkdirSync(i,{mode:yTt(t),recursive:!0}))});var $E=$e((e5n,ITt)=>{"use strict";var EVr=Ob().fromPromise,{makeDir:TVr,makeDirSync:iLe}=bTt(),sLe=EVr(TVr);ITt.exports={mkdirs:sLe,mkdirsSync:iLe,mkdirp:sLe,mkdirpSync:iLe,ensureDir:sLe,ensureDirSync:iLe}});var zP=$e((t5n,xTt)=>{"use strict";var FVr=Ob().fromPromise,vTt=ux();function GVr(i){return vTt.access(i).then(()=>!0).catch(()=>!1)}xTt.exports={pathExists:FVr(GVr),pathExistsSync:vTt.existsSync}});var aLe=$e((r5n,wTt)=>{"use strict";var dB=ux(),DVr=Ob().fromPromise;async function NVr(i,t,n){let s=await dB.open(i,"r+"),c=null;try{await dB.futimes(s,t,n)}finally{try{await dB.close(s)}catch(u){c=u}}if(c)throw c}function RVr(i,t,n){let s=dB.openSync(i,"r+");return dB.futimesSync(s,t,n),dB.closeSync(s)}wTt.exports={utimesMillis:DVr(NVr),utimesMillisSync:RVr}});var C9=$e((n5n,STt)=>{"use strict";var pB=ux(),Yb=Bi("path"),ATt=Ob().fromPromise;function WVr(i,t,n){let s=n.dereference?c=>pB.stat(c,{bigint:!0}):c=>pB.lstat(c,{bigint:!0});return Promise.all([s(i),s(t).catch(c=>{if(c.code==="ENOENT")return null;throw c})]).then(([c,u])=>({srcStat:c,destStat:u}))}function PVr(i,t,n){let s,c=n.dereference?m=>pB.statSync(m,{bigint:!0}):m=>pB.lstatSync(m,{bigint:!0}),u=c(i);try{s=c(t)}catch(m){if(m.code==="ENOENT")return{srcStat:u,destStat:null};throw m}return{srcStat:u,destStat:s}}async function ZVr(i,t,n,s){let{srcStat:c,destStat:u}=await WVr(i,t,s);if(u){if(Lre(c,u)){let m=Yb.basename(i),y=Yb.basename(t);if(n==="move"&&m!==y&&m.toLowerCase()===y.toLowerCase())return{srcStat:c,destStat:u,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(c.isDirectory()&&!u.isDirectory())throw new Error(`Cannot overwrite non-directory '${t}' with directory '${i}'.`);if(!c.isDirectory()&&u.isDirectory())throw new Error(`Cannot overwrite directory '${t}' with non-directory '${i}'.`)}if(c.isDirectory()&&oLe(i,t))throw new Error(Xye(i,t,n));return{srcStat:c,destStat:u}}function VVr(i,t,n,s){let{srcStat:c,destStat:u}=PVr(i,t,s);if(u){if(Lre(c,u)){let m=Yb.basename(i),y=Yb.basename(t);if(n==="move"&&m!==y&&m.toLowerCase()===y.toLowerCase())return{srcStat:c,destStat:u,isChangingCase:!0};throw new Error("Source and destination must not be the same.")}if(c.isDirectory()&&!u.isDirectory())throw new Error(`Cannot overwrite non-directory '${t}' with directory '${i}'.`);if(!c.isDirectory()&&u.isDirectory())throw new Error(`Cannot overwrite directory '${t}' with non-directory '${i}'.`)}if(c.isDirectory()&&oLe(i,t))throw new Error(Xye(i,t,n));return{srcStat:c,destStat:u}}async function kTt(i,t,n,s){let c=Yb.resolve(Yb.dirname(i)),u=Yb.resolve(Yb.dirname(n));if(u===c||u===Yb.parse(u).root)return;let m;try{m=await pB.stat(u,{bigint:!0})}catch(y){if(y.code==="ENOENT")return;throw y}if(Lre(t,m))throw new Error(Xye(i,n,s));return kTt(i,t,u,s)}function CTt(i,t,n,s){let c=Yb.resolve(Yb.dirname(i)),u=Yb.resolve(Yb.dirname(n));if(u===c||u===Yb.parse(u).root)return;let m;try{m=pB.statSync(u,{bigint:!0})}catch(y){if(y.code==="ENOENT")return;throw y}if(Lre(t,m))throw new Error(Xye(i,n,s));return CTt(i,t,u,s)}function Lre(i,t){return t.ino!==void 0&&t.dev!==void 0&&t.ino===i.ino&&t.dev===i.dev}function oLe(i,t){let n=Yb.resolve(i).split(Yb.sep).filter(c=>c),s=Yb.resolve(t).split(Yb.sep).filter(c=>c);return n.every((c,u)=>s[u]===c)}function Xye(i,t,n){return`Cannot ${n} '${i}' to a subdirectory of itself, '${t}'.`}STt.exports={checkPaths:ATt(ZVr),checkPathsSync:VVr,checkParentPaths:ATt(kTt),checkParentPathsSync:CTt,isSrcSubdir:oLe,areIdentical:Lre}});var TTt=$e((i5n,ETt)=>{"use strict";async function MVr(i,t){let n=[];for await(let s of i)n.push(t(s).then(()=>null,c=>c??new Error("unknown error")));await Promise.all(n.map(s=>s.then(c=>{if(c!==null)throw c})))}ETt.exports={asyncIteratorConcurrentProcess:MVr}});var RTt=$e((s5n,NTt)=>{"use strict";var jv=ux(),Jre=Bi("path"),{mkdirs:OVr}=$E(),{pathExists:YVr}=zP(),{utimesMillis:HVr}=aLe(),Bre=C9(),{asyncIteratorConcurrentProcess:LVr}=TTt();async function JVr(i,t,n={}){typeof n=="function"&&(n={filter:n}),n.clobber="clobber"in n?!!n.clobber:!0,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&process.arch==="ia32"&&process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
35
35
 
36
36
  see https://github.com/jprichardson/node-fs-extra/issues/269`,"Warning","fs-extra-WARN0001");let{srcStat:s,destStat:c}=await Bre.checkPaths(i,t,"copy",n);if(await Bre.checkParentPaths(i,s,t,"copy"),!await GTt(i,t,n))return;let m=Jre.dirname(t);await YVr(m)||await OVr(m),await DTt(c,i,t,n)}async function GTt(i,t,n){return n.filter?n.filter(i,t):!0}async function DTt(i,t,n,s){let u=await(s.dereference?jv.stat:jv.lstat)(t);if(u.isDirectory())return XVr(u,i,t,n,s);if(u.isFile()||u.isCharacterDevice()||u.isBlockDevice())return BVr(u,i,t,n,s);if(u.isSymbolicLink())return QVr(i,t,n,s);throw u.isSocket()?new Error(`Cannot copy a socket file: ${t}`):u.isFIFO()?new Error(`Cannot copy a FIFO pipe: ${t}`):new Error(`Unknown file: ${t}`)}async function BVr(i,t,n,s,c){if(!t)return FTt(i,n,s,c);if(c.overwrite)return await jv.unlink(s),FTt(i,n,s,c);if(c.errorOnExist)throw new Error(`'${s}' already exists`)}async function FTt(i,t,n,s){if(await jv.copyFile(t,n),s.preserveTimestamps){UVr(i.mode)&&await jVr(n,i.mode);let c=await jv.stat(t);await HVr(n,c.atime,c.mtime)}return jv.chmod(n,i.mode)}function UVr(i){return(i&128)===0}function jVr(i,t){return jv.chmod(i,t|128)}async function XVr(i,t,n,s,c){t||await jv.mkdir(s),await LVr(await jv.opendir(n),async u=>{let m=Jre.join(n,u.name),y=Jre.join(s,u.name);if(await GTt(m,y,c)){let{destStat:C}=await Bre.checkPaths(m,y,"copy",c);await DTt(C,m,y,c)}}),t||await jv.chmod(s,i.mode)}async function QVr(i,t,n,s){let c=await jv.readlink(t);if(s.dereference&&(c=Jre.resolve(process.cwd(),c)),!i)return jv.symlink(c,n);let u=null;try{u=await jv.readlink(n)}catch(m){if(m.code==="EINVAL"||m.code==="UNKNOWN")return jv.symlink(c,n);throw m}if(s.dereference&&(u=Jre.resolve(process.cwd(),u)),c!==u){if(Bre.isSrcSubdir(c,u))throw new Error(`Cannot copy '${c}' to a subdirectory of itself, '${u}'.`);if(Bre.isSrcSubdir(u,c))throw new Error(`Cannot overwrite '${u}' with '${c}'.`)}return await jv.unlink(n),jv.symlink(c,n)}NTt.exports=JVr});var MTt=$e((a5n,VTt)=>{"use strict";var dx=k9(),Ure=Bi("path"),zVr=$E().mkdirsSync,$Vr=aLe().utimesMillisSync,jre=C9();function qVr(i,t,n){typeof n=="function"&&(n={filter:n}),n=n||{},n.clobber="clobber"in n?!!n.clobber:!0,n.overwrite="overwrite"in n?!!n.overwrite:n.clobber,n.preserveTimestamps&&process.arch==="ia32"&&process.emitWarning(`Using the preserveTimestamps option in 32-bit node is not recommended;
@@ -3762,7 +3762,7 @@ ${xsn}
3762
3762
  Try running with %s or get access `,H.cyan("sudo"))+`
3763
3763
  to the local update config store via
3764
3764
  `+H.cyan(FKe(" sudo chown -R $USER:$(id -gn $USER) %s ",Ij));l8.on("exit",()=>{console.error(B3(n,{textAlignment:"center"}))})}}check(){!this.config||this.config.get("optOut")||this.#i||(this.update=this.config.get("update"),this.update&&(this.update.current=this.#r,this.config.delete("update")),!(Date.now()-this.config.get("lastUpdateCheck")<this.#n)&&Jln(l8.execPath,[gjt.join(Uln,"check.js"),JSON.stringify(this.#t)],{detached:!0,stdio:"ignore"}).unref())}async fetchInfo(){let{distTag:t}=this.#t,n=await vKe(this._packageName,{version:t});return{latest:n,current:this.#r,type:(0,yjt.default)(this.#r,n)??t,name:this._packageName}}notify(t){let n=!this._shouldNotifyInNpmScript&&rjt;if(!l8.stdout.isTTY||n||!this.update||!(0,bjt.default)(this.update.latest,this.update.current))return this;t={isGlobal:fjt,...t};let s=t.isGlobal?`npm i -g ${this._packageName}`:`npm i ${this._packageName}`,c="Update available "+H.dim("{currentVersion}")+H.reset(" \u2192 ")+H.green("{latestVersion}")+`
3765
- Run `+H.cyan("{updateCommand}")+" to update",u=t.message||c;t.boxenOptions??={padding:1,margin:1,textAlignment:"center",borderColor:"yellow",borderStyle:"round"};let m=B3(TKe(u,{packageName:this._packageName,currentVersion:this.update.current,latestVersion:this.update.latest,updateCommand:s}),t.boxenOptions);return t.defer===!1?console.error(m):l8.on("exit",()=>{console.error(m)}),this}};function GKe(i){let t=new qse(i);return t.check(),t}Id();var M2e=Aa(gKe(),1);tO();bf();Pp();ws();import{readFile as Xln}from"fs/promises";import WKe from"path";import{fileURLToPath as Qln}from"url";var Ijt="@compass-ai/nova",vjt="1.0.47",xjt="1.0.0",zln=Qln(import.meta.url),$ln=WKe.dirname(zln),DKe=WKe.resolve($ln,"../../package.json"),qln="update-cache.json",Kln={checkOnStartup:!0,checkInterval:4,showNotifications:!0,notificationStyle:"banner",includePrerelease:!1},RKe=class i{config;cache;cacheFilePath;packageJson;constructor(t,n){this.config=t,this.packageJson=n,this.cacheFilePath=WKe.join(tl(),qln),this.cache={history:[],cacheVersion:xjt}}static async create(t){let n={...Kln,...t},s={name:Ijt,version:vjt};try{if(O.debug("Update service: resolving package.json",{path:DKe}),await aa(DKe)){let u=await Xln(DKe,"utf-8"),m=JSON.parse(u);s={name:m.name||Ijt,version:m.version||vjt},O.debug("Update service: loaded package.json",{name:s.name,version:s.version,source:"package.json"})}else O.debug("Update service: package.json not found, using fallback",{name:s.name,version:s.version,source:"fallback"})}catch(u){O.debug("Update service: failed to read package.json, using fallback",{error:u instanceof Error?u.message:"unknown error",name:s.name,version:s.version})}let c=new i(n,s);return await c.loadCache(),c}async loadCache(){try{if(await Yc(tl()),await aa(this.cacheFilePath)){let t=await Jm(this.cacheFilePath);t&&t.cacheVersion===xjt&&(this.cache=t)}}catch(t){O.debug("Failed to load update cache",t)}}async saveCache(){try{await Yc(tl()),await A0(this.cacheFilePath,this.cache)}catch(t){O.debug("Failed to save update cache",t)}}async checkForUpdates(t=!1){let n={updateAvailable:!1,currentVersion:this.packageJson.version,checkedAt:new Date().toISOString()};try{if(!t&&this.cache.lastCheck)if(this.cache.lastCheck.currentVersion!==this.packageJson.version)O.debug("Cache invalidated - installed version changed",{cachedVersion:this.cache.lastCheck.currentVersion,installedVersion:this.packageJson.version});else{let u=new Date(this.cache.lastCheck.checkedAt).getTime(),m=this.config.checkInterval*60*60*1e3;if(Date.now()-u<m)return O.debug("Skipping update check - within interval"),this.cache.lastCheck}O.debug("Checking for updates...");let c=await GKe({pkg:this.packageJson,updateCheckInterval:0}).fetchInfo();return c&&c.latest&&M2e.default.gt(c.latest,this.packageJson.version)?(n.updateAvailable=!0,n.latestVersion=c.latest,n.updateType=this.mapUpdateType(c.type||"patch"),n.releaseNotesUrl=`https://dev.azure.com/oakpeak-devops/Kore/_git/Kore-CLI?version=GTv${c.latest}`,!this.config.includePrerelease&&M2e.default.prerelease(c.latest)&&(n.updateAvailable=!1,n.latestVersion=void 0,n.updateType=void 0)):c&&c.latest&&M2e.default.lt(c.latest,this.packageJson.version)&&O.debug("Current version is newer than npm registry",{currentVersion:this.packageJson.version,registryVersion:c.latest}),this.cache.lastCheck=n,await this.saveCache(),n}catch(s){return n.error=s instanceof Error?s.message:"Failed to check for updates",O.debug("Update check failed",s),n}}mapUpdateType(t){switch(t){case"major":return"major";case"minor":return"minor";case"patch":return"patch";case"prerelease":return"prerelease";default:return"patch"}}displayUpdateNotification(t){if(!t.updateAvailable||!t.latestVersion||!this.config.showNotifications||this.config.notificationStyle==="silent")return;let n=this.formatNotification(t);console.log(n),this.updateNotificationState(t.latestVersion)}formatNotification(t){let{currentVersion:n,latestVersion:s,updateType:c}=t;switch(this.config.notificationStyle){case"minimal":return this.formatMinimalNotification(n,s,c);case"detailed":return this.formatDetailedNotification(n,s,c,t.releaseNotesUrl);default:return this.formatBannerNotification(n,s,c)}}formatMinimalNotification(t,n,s){let c=this.getUpdateTypeColor(s);return H.gray(`Update available: ${t} -> `)+c(n)+H.gray(` (npm i -g ${this.packageJson.name})`)}formatBannerNotification(t,n,s){let c=this.getUpdateTypeColor(s),u=s?` (${s})`:"",m=[`Update available! ${H.dim(t)} ${H.reset("\u2192")} ${c(n)}${H.dim(u)}`,"",`Run ${H.cyan(`npm i -g ${this.packageJson.name}`)} to update`].join(`
3765
+ Run `+H.cyan("{updateCommand}")+" to update",u=t.message||c;t.boxenOptions??={padding:1,margin:1,textAlignment:"center",borderColor:"yellow",borderStyle:"round"};let m=B3(TKe(u,{packageName:this._packageName,currentVersion:this.update.current,latestVersion:this.update.latest,updateCommand:s}),t.boxenOptions);return t.defer===!1?console.error(m):l8.on("exit",()=>{console.error(m)}),this}};function GKe(i){let t=new qse(i);return t.check(),t}Id();var M2e=Aa(gKe(),1);tO();bf();Pp();ws();import{readFile as Xln}from"fs/promises";import WKe from"path";import{fileURLToPath as Qln}from"url";var Ijt="@compass-ai/nova",vjt="1.0.48",xjt="1.0.0",zln=Qln(import.meta.url),$ln=WKe.dirname(zln),DKe=WKe.resolve($ln,"../../package.json"),qln="update-cache.json",Kln={checkOnStartup:!0,checkInterval:4,showNotifications:!0,notificationStyle:"banner",includePrerelease:!1},RKe=class i{config;cache;cacheFilePath;packageJson;constructor(t,n){this.config=t,this.packageJson=n,this.cacheFilePath=WKe.join(tl(),qln),this.cache={history:[],cacheVersion:xjt}}static async create(t){let n={...Kln,...t},s={name:Ijt,version:vjt};try{if(O.debug("Update service: resolving package.json",{path:DKe}),await aa(DKe)){let u=await Xln(DKe,"utf-8"),m=JSON.parse(u);s={name:m.name||Ijt,version:m.version||vjt},O.debug("Update service: loaded package.json",{name:s.name,version:s.version,source:"package.json"})}else O.debug("Update service: package.json not found, using fallback",{name:s.name,version:s.version,source:"fallback"})}catch(u){O.debug("Update service: failed to read package.json, using fallback",{error:u instanceof Error?u.message:"unknown error",name:s.name,version:s.version})}let c=new i(n,s);return await c.loadCache(),c}async loadCache(){try{if(await Yc(tl()),await aa(this.cacheFilePath)){let t=await Jm(this.cacheFilePath);t&&t.cacheVersion===xjt&&(this.cache=t)}}catch(t){O.debug("Failed to load update cache",t)}}async saveCache(){try{await Yc(tl()),await A0(this.cacheFilePath,this.cache)}catch(t){O.debug("Failed to save update cache",t)}}async checkForUpdates(t=!1){let n={updateAvailable:!1,currentVersion:this.packageJson.version,checkedAt:new Date().toISOString()};try{if(!t&&this.cache.lastCheck)if(this.cache.lastCheck.currentVersion!==this.packageJson.version)O.debug("Cache invalidated - installed version changed",{cachedVersion:this.cache.lastCheck.currentVersion,installedVersion:this.packageJson.version});else{let u=new Date(this.cache.lastCheck.checkedAt).getTime(),m=this.config.checkInterval*60*60*1e3;if(Date.now()-u<m)return O.debug("Skipping update check - within interval"),this.cache.lastCheck}O.debug("Checking for updates...");let c=await GKe({pkg:this.packageJson,updateCheckInterval:0}).fetchInfo();return c&&c.latest&&M2e.default.gt(c.latest,this.packageJson.version)?(n.updateAvailable=!0,n.latestVersion=c.latest,n.updateType=this.mapUpdateType(c.type||"patch"),n.releaseNotesUrl=`https://dev.azure.com/oakpeak-devops/Kore/_git/Kore-CLI?version=GTv${c.latest}`,!this.config.includePrerelease&&M2e.default.prerelease(c.latest)&&(n.updateAvailable=!1,n.latestVersion=void 0,n.updateType=void 0)):c&&c.latest&&M2e.default.lt(c.latest,this.packageJson.version)&&O.debug("Current version is newer than npm registry",{currentVersion:this.packageJson.version,registryVersion:c.latest}),this.cache.lastCheck=n,await this.saveCache(),n}catch(s){return n.error=s instanceof Error?s.message:"Failed to check for updates",O.debug("Update check failed",s),n}}mapUpdateType(t){switch(t){case"major":return"major";case"minor":return"minor";case"patch":return"patch";case"prerelease":return"prerelease";default:return"patch"}}displayUpdateNotification(t){if(!t.updateAvailable||!t.latestVersion||!this.config.showNotifications||this.config.notificationStyle==="silent")return;let n=this.formatNotification(t);console.log(n),this.updateNotificationState(t.latestVersion)}formatNotification(t){let{currentVersion:n,latestVersion:s,updateType:c}=t;switch(this.config.notificationStyle){case"minimal":return this.formatMinimalNotification(n,s,c);case"detailed":return this.formatDetailedNotification(n,s,c,t.releaseNotesUrl);default:return this.formatBannerNotification(n,s,c)}}formatMinimalNotification(t,n,s){let c=this.getUpdateTypeColor(s);return H.gray(`Update available: ${t} -> `)+c(n)+H.gray(` (npm i -g ${this.packageJson.name})`)}formatBannerNotification(t,n,s){let c=this.getUpdateTypeColor(s),u=s?` (${s})`:"",m=[`Update available! ${H.dim(t)} ${H.reset("\u2192")} ${c(n)}${H.dim(u)}`,"",`Run ${H.cyan(`npm i -g ${this.packageJson.name}`)} to update`].join(`
3766
3766
  `);return B3(m,{padding:1,margin:1,borderStyle:"round",borderColor:this.getUpdateTypeBorderColor(s),title:"Compass CLI Update",titleAlignment:"center"})}formatDetailedNotification(t,n,s,c){let u=this.getUpdateTypeColor(s),m=s?s.charAt(0).toUpperCase()+s.slice(1):"New",y=["",H.bold.cyan(` ${m} Update Available!`),"",` ${H.gray("Current version:")} ${t}`,` ${H.gray("Latest version:")} ${u(n)}`,""];c&&(y.push(` ${H.gray("Release notes:")} ${H.underline.blue(c)}`),y.push("")),y.push(` ${H.gray("To update, run:")} ${H.cyan(`npm i -g ${this.packageJson.name}`)}`),y.push("");let v=y.join(`
3767
3767
  `);return B3(v,{padding:0,margin:1,borderStyle:"double",borderColor:this.getUpdateTypeBorderColor(s)})}getUpdateTypeColor(t){switch(t){case"major":return H.red;case"minor":return H.yellow;case"patch":return H.green;case"prerelease":return H.magenta;default:return H.cyan}}getUpdateTypeBorderColor(t){switch(t){case"major":return"red";case"minor":return"yellow";case"patch":return"green";case"prerelease":return"magenta";default:return"cyan"}}async updateNotificationState(t){let n=this.cache.notificationState;n&&n.version===t?n.showCount++:this.cache.notificationState={version:t,notifiedAt:new Date().toISOString(),dismissed:!1,showCount:1},await this.saveCache()}async dismissNotification(){this.cache.notificationState&&(this.cache.notificationState.dismissed=!0,this.cache.notificationState.dismissedAt=new Date().toISOString(),await this.saveCache())}async performUpdate(t="npm"){let n=await this.checkForUpdates(!0);if(!n.updateAvailable||!n.latestVersion)return O.output(H.green("You are already on the latest version!")),!0;let s=this.packageJson.version,c=n.latestVersion;O.output(""),O.output(H.cyan(`Updating Compass CLI from ${s} to ${c}...`)),O.output("");try{let u=this.getUpdateCommand(t);O.output(H.gray(`Running: ${u}`)),O.output("");let{stdout:m}=await Ub(u,{shell:!0});return m&&O.output(m),await this.recordUpdateHistory(s,c,!0,t),O.output(""),O.output(H.green(`Successfully updated to version ${c}!`)),O.output(H.gray("Please restart Compass CLI to use the new version.")),O.output(""),!0}catch(u){let m=u instanceof Error?u.message:"Update failed";return await this.recordUpdateHistory(s,c,!1,t,m),O.output(""),O.output(H.red(`Update failed: ${m}`)),O.output(""),O.output(H.gray("You can try updating manually:")),O.output(H.cyan(` ${this.getUpdateCommand(t)}`)),O.output(""),!1}}getUpdateCommand(t){let n=this.packageJson.name;switch(t){case"yarn":return`yarn global add ${n}`;case"pnpm":return`pnpm add -g ${n}`;default:return`npm install -g ${n}`}}async recordUpdateHistory(t,n,s,c,u){let m={fromVersion:t,toVersion:n,updatedAt:new Date().toISOString(),success:s,method:c,error:u};this.cache.history.push(m),this.cache.history.length>10&&(this.cache.history=this.cache.history.slice(-10)),s&&(this.cache.notificationState=void 0),await this.saveCache()}getUpdateHistory(){return[...this.cache.history]}getLastCheckResult(){return this.cache.lastCheck}getConfig(){return{...this.config}}async updateConfig(t){this.config={...this.config,...t}}getVersionInfo(){return{currentVersion:this.packageJson.version,packageName:this.packageJson.name,lastCheck:this.cache.lastCheck,updateAvailable:this.cache.lastCheck?.updateAvailable??!1,latestVersion:this.cache.lastCheck?.latestVersion}}async detectPackageManager(){try{let{stdout:t}=await Ub("yarn",["global","list","--depth=0"],{shell:!0,reject:!1});if(t&&t.includes(this.packageJson.name))return"yarn"}catch{}try{let{stdout:t}=await Ub("pnpm",["list","-g","--depth=0"],{shell:!0,reject:!1});if(t&&t.includes(this.packageJson.name))return"pnpm"}catch{}return"npm"}},NKe=null;async function Q3(i){return NKe||(NKe=await RKe.create(i)),NKe}async function wjt(i,t=!1){O.debug("Auto-update: starting startup update check",{force:t});let n=await Q3(i),s=n.getVersionInfo();try{let c=await n.checkForUpdates(t);if(O.debug("Auto-update: check completed",{updateAvailable:c.updateAvailable,currentVersion:c.currentVersion,latestVersion:c.latestVersion}),!c.updateAvailable||!c.latestVersion)return O.debug("Auto-update: no update available"),{updated:!1};let u=s.currentVersion,m=c.latestVersion,y=await n.detectPackageManager();return O.debug("Auto-update: detected package manager",{packageManager:y}),await n.performUpdate(y)?{updated:!0,fromVersion:u,toVersion:m}:(O.debug("Auto-update: update failed"),{updated:!1,error:"Update failed, continuing with current version"})}catch(c){let u=c instanceof Error?c.message:"Unknown error";return O.debug("Auto-update: error during update",{error:u}),console.log(H.yellow(`\u26A0 Auto-update check failed: ${u}`)),console.log(H.dim(` You can manually update with: npm i -g ${s.packageName}`)),console.log(""),{updated:!1,error:u}}}ws();yp();function xd(i,t=!1){let n=Ss();O.debug(`[updateHandler] Emitting output: ${i.substring(0,50)}`),n.emit("slash-command-output",{command:"update",message:i,isError:t})}function eun(i){switch(i){case"major":return H.red;case"minor":return H.yellow;case"patch":return H.green;case"prerelease":return H.magenta;default:return H.cyan}}function tun(i){switch(i){case"major":return"red";case"minor":return"yellow";case"patch":return"green";case"prerelease":return"magenta";default:return"cyan"}}async function run(i){if(!i.updateAvailable||!i.latestVersion)return;let n=(await Q3()).getVersionInfo(),s=eun(i.updateType),c=i.updateType?` (${i.updateType})`:"",u=[`Update available! ${H.dim(i.currentVersion)} ${H.reset("\u2192")} ${s(i.latestVersion)}${H.dim(c)}`,"",`Run ${H.cyan(`npm i -g ${n.packageName}`)} to update`].join(`
3768
3768
  `),m=B3(u,{padding:1,margin:1,borderStyle:"round",borderColor:tun(i.updateType),title:"Compass CLI Update",titleAlignment:"center"});xd(m)}function nun(i){let t={check:!1,history:!1,force:!1,install:!1,version:!1,help:!1};for(let n=0;n<i.length;n++){let s=i[n].toLowerCase();switch(s){case"check":case"-c":case"--check":t.check=!0;break;case"history":case"-h":case"--history":t.history=!0;break;case"--force":case"-f":t.force=!0;break;case"install":case"-i":case"--install":t.install=!0;break;case"--npm":t.manager="npm";break;case"--yarn":t.manager="yarn";break;case"--pnpm":t.manager="pnpm";break;case"version":case"-v":case"--version":t.version=!0;break;case"help":case"--help":t.help=!0;break;default:s==="now"&&(t.install=!0);break}}return!t.history&&!t.install&&!t.version&&!t.help&&(t.check=!0),t}function iun(){let i=["",H.bold.cyan("Update Command"),H.dim("\u2500".repeat(40)),"",H.white("Check for and install updates to Compass CLI."),"",H.bold("Usage:"),` ${H.cyan("/update")} Check for updates`,` ${H.cyan("/update check")} Check for updates (same as above)`,` ${H.cyan("/update install")} Install available update`,` ${H.cyan("/update now")} Install update immediately`,` ${H.cyan("/update history")} Show update history`,` ${H.cyan("/update version")} Show version information`,"",H.bold("Options:"),` ${H.yellow("--force, -f")} Force check (ignore interval)`,` ${H.yellow("--npm")} Use npm for installation`,` ${H.yellow("--yarn")} Use yarn for installation`,` ${H.yellow("--pnpm")} Use pnpm for installation`,"",H.bold("Examples:"),` ${H.gray("/update")} # Check if update is available`,` ${H.gray("/update install --yarn")} # Install with yarn`,` ${H.gray("/update -f")} # Force update check`,""];xd(i.join(`
@@ -3985,7 +3985,7 @@ The \`enter_plan_mode\` tool will generate a structured plan including:
3985
3985
  - /help - Show this help`),!0;case"model":if(s){let[u,m]=s.split("/");t.model={providerId:u||"anthropic",modelId:m||s},c&&await c.sendAgentMessageChunk(`[ACP] Model switched to ${s}`)}return!0;default:return!1}}};function oat(i,t){return new TEe(i,t)}import*as Tor from"readline";var tv=O.child("ACPCommand"),cat=class{pendingRequests=new Map;requestId=0;writeMessage;constructor(t){this.writeMessage=t}async sessionUpdate(t){this.sendNotification("session/update",t)}async requestPermission(t){return await this.sendRequest("permission/request",t)}writeTextFile(t){this.sendNotification("file/write",t)}sendNotification(t,n){let s={jsonrpc:"2.0",method:t,params:n};this.writeMessage(s)}sendRequest(t,n){return new Promise((s,c)=>{let u=`server-${++this.requestId}`;this.pendingRequests.set(u,{resolve:s,reject:c});let m={jsonrpc:"2.0",id:u,method:t,params:n};this.writeMessage(m),setTimeout(()=>{this.pendingRequests.has(u)&&(this.pendingRequests.delete(u),c(new Error("Request timeout")))},300*1e3)})}handleResponse(t,n,s){let c=this.pendingRequests.get(t);c&&(this.pendingRequests.delete(t),s?c.reject(new Error(String(s))):c.resolve(n))}};function For(){let i=new PG("acp");return i.description("Start ACP (Agent Client Protocol) server mode").option("--cwd <path>","Working directory for the ACP session").option("--debug","Enable debug logging").option("--verbose","Enable verbose logging").action(async t=>{t.debug?O.configure({level:"debug"}):t.verbose?O.configure({level:"info"}):O.configure({level:"warn"});let n=t.cwd?Hre(t.cwd):process.cwd();tv.info("Starting ACP server",{cwd:n});let s={defaultModel:{providerId:"ollama",modelId:"glm-4.7:cloud"},protocolVersion:1,agentName:"Nova",agentVersion:"1.0.0"},c=rat(),u=oat(s,c),m=Tor.createInterface({input:process.stdin,terminal:!1}),y=R=>{let F=JSON.stringify(R);tv.debug("Sending message",{data:R}),process.stdout.write(F+`
3986
3986
  `)},v=R=>{y(R)},C=new cat(y);u.setConnection(C),m.on("line",async R=>{if(R.trim()){tv.debug("Raw incoming message",{line:R.substring(0,500)});try{let F=JSON.parse(R);if(F.jsonrpc!=="2.0"){tv.warn("Invalid JSON-RPC version",{message:F}),F.id!==void 0&&v({jsonrpc:"2.0",id:F.id,error:{code:-32600,message:"Invalid Request"}});return}if(("result"in F||"error"in F)&&!F.method){tv.info("Received response",{id:F.id,hasResult:"result"in F,hasError:"error"in F}),F.id!==void 0&&F.id!==null&&C.handleResponse(F.id,F.result,F.error);return}if(!F.method){tv.warn("Message has no method field",{message:F}),F.id!==void 0&&v({jsonrpc:"2.0",id:F.id,error:{code:-32600,message:"Invalid Request: missing method"}});return}let V=F.id===void 0;tv.info("Received message",{type:V?"notification":"request",method:F.method,id:F.id,params:F.params});try{let B=await F3n(u,F.method,F.params);tv.debug("Message handled successfully",{method:F.method,id:F.id}),V||v({jsonrpc:"2.0",id:F.id,result:B})}catch(B){let ie=B instanceof Error?B.message:String(B);ie.startsWith("Unknown method:")||ie.startsWith("Unsupported method:")?tv.warn("Unsupported ACP method",{method:F.method,params:F.params}):tv.error("Message handler error",{method:F.method,error:ie}),V||v({jsonrpc:"2.0",id:F.id,error:{code:-32601,message:ie}})}}catch(F){tv.error("JSON parse error",{error:F,line:R.substring(0,200)}),v({jsonrpc:"2.0",id:null,error:{code:-32700,message:"Parse error"}})}}});let T=async()=>{tv.info("Shutting down ACP server"),await u.shutdown(),m.close(),process.exit(0)};process.on("SIGINT",T),process.on("SIGTERM",T),m.on("close",()=>{tv.info("Input stream closed"),T()}),tv.info("ACP server ready")}),i}async function F3n(i,t,n){let s=n||{};switch(t){case"initialize":return i.initialize({protocolVersion:s.protocolVersion||1,clientCapabilities:s.clientCapabilities});case"authenticate":return i.authenticate({credentials:s.credentials});case"session/new":case"newSession":return i.newSession({cwd:s.cwd||process.cwd(),mcpServers:s.mcpServers||[]});case"session/load":case"loadSession":return i.loadSession({sessionId:s.sessionId,cwd:s.cwd||process.cwd(),mcpServers:s.mcpServers||[]});case"session/list":case"listSessions":case"unstable_listSessions":return i.listSessions({cwd:s.cwd,cursor:s.cursor});case"session/fork":case"forkSession":case"unstable_forkSession":return i.forkSession({sessionId:s.sessionId,cwd:s.cwd||process.cwd(),mcpServers:s.mcpServers});case"session/resume":case"resumeSession":case"unstable_resumeSession":return i.resumeSession({sessionId:s.sessionId,cwd:s.cwd||process.cwd(),mcpServers:s.mcpServers});case"session/setModel":case"session/set_model":return i.setSessionModel({sessionId:s.sessionId,modelId:s.modelId||s.model});case"session/setMode":case"session/set_mode":return i.setSessionMode({sessionId:s.sessionId,modeId:s.modeId||s.mode});case"session/update":return G3n(i,s);case"prompt":case"session/prompt":return i.prompt({sessionId:s.sessionId,prompt:s.prompt||[]});case"cancel":case"session/cancel":return await i.cancel({sessionId:s.sessionId}),{};default:throw new Error(`Unsupported method: ${t}`)}}async function G3n(i,t){let n=t.sessionId,s=t.update;if(!s)return tv.warn("Session update missing update field",{params:t}),{_meta:{}};let c=s.kind;switch(tv.info("Handling session update",{sessionId:n,kind:c,update:s}),c){case"model":let u=s.model;if(u)return i.setSessionModel({sessionId:n,modelId:u});break;case"mode":let m=s.mode;if(m)return i.setSessionMode({sessionId:n,modeId:m});break;default:tv.debug("Unhandled session update kind",{kind:c,update:s})}return{_meta:{}}}Id();import D3n from"os";function N3n(i){let t=i.replace(/\\/g,"/").replace(/\/$/,""),n=D3n.homedir().replace(/\\/g,"/").replace(/\/$/,"");if(t.toLowerCase()===n.toLowerCase())return!0;let s=/^[a-z]:\/?users\/[^/]+$/i,c=/^\/users\/[^/]+$/i,u=/^\/home\/[^/]+$/i;return s.test(t)||c.test(t)||u.test(t)}function pQ(i){return i.cwd?Hre(i.cwd):process.cwd()}async function Nor(i,t){let n=[],s=[];for(let c of i)try{await tMt(c,t);let u=await rMt(c);n.push(u),O.info(`Processed attachment: ${c}`)}catch(u){let m=u instanceof Error?u.message:String(u);s.push(`${c}: ${m}`),O.error(`Failed to process attachment: ${c}`,u)}if(s.length>0){console.error(H.red(`
3987
3987
  \u274C Failed to process ${s.length} attachment(s):`));for(let c of s)console.error(H.red(` ${c}`));console.error(H.gray(`
3988
- Supported formats: PNG, JPG, JPEG, GIF, WEBP, PDF`)),console.error(H.gray("Maximum file size: 20MB per file"))}return n}var Foe="1.0.47",R3n="compass",W3n="AI-powered development assistance using Anthropic's Claude models";function P3n(){let i=new PG;return i.name(R3n).description(W3n).version(Foe,"-v, --version","Display version number").helpOption("-h, --help","Display help information"),i.command("start",{isDefault:!0}).description("Start interactive Compass session").argument("[prompt]","Initial prompt to start the session with").option("-p, --print <query>","Run query in non-interactive mode (SDK mode) and exit").option("-a, --attachment <paths...>","Attach files (images/PDFs) to the prompt").option("-c, --continue","Continue the most recent conversation in current directory").option("--cwd <path>","Run in a specific project directory").option("--skip-setup","Skip the setup wizard even if not configured").option("--compass-key <key>","Compass API key for authentication").option("--anthropic-key <key>","Anthropic API key (optional if already configured)").option("--no-banner","Skip the ASCII art banner").option("--no-update-check","Skip the update check on startup").option("--force-update-check","Force update check (ignore cache interval)").option("--verbose","Enable verbose logging (info level)").option("--debug","Enable debug logging").option("--agents <json>",`JSON object defining agents for this session (e.g., '{"name": {"description": "...", "prompt": "..."}}')`).option("--agent <name>","Run with a specific agent (applies its system prompt, model, and tool restrictions)").option("--standalone-agent","Use only the agent's system prompt, excluding the default CLI system prompt").option("--unleash","Start in unguarded mode (removes safety guardrails) - USE WITH CAUTION").action(async(t,n)=>{try{let s=process.env.COMPASS_DEBUG,c=process.env.COMPASS_VERBOSE,u=s&&s.toLowerCase()!=="false"&&s!=="0",m=c&&c.toLowerCase()!=="false"&&c!=="0";if(n.debug||u?O.configure({level:"debug"}):(n.verbose||m)&&O.configure({level:"info"}),n.compassKey||n.anthropicKey){let{getCredentialStore:B}=await Promise.resolve().then(()=>(LI(),bB)),{getCompassAuthService:ie}=await Promise.resolve().then(()=>(T9(),CLe)),fe=await B();if(n.compassKey)try{O.debug("Validating Compass API key from CLI parameter"),await ie().validateApiKey(n.compassKey),await fe.setCompassApiKey(n.compassKey),O.debug("Compass API key from CLI parameter validated and stored"),console.log(H.green("\u2713 Compass API key validated and stored"))}catch(Ge){O.error("Failed to validate Compass API key",Ge),console.error(H.red("\u274C Invalid Compass API key")),Ge instanceof Error&&console.error(H.red(` ${Ge.message}`)),process.exit(1)}if(n.anthropicKey)try{if(O.debug("Storing Anthropic API key from CLI parameter"),!fe.validateApiKeyFormat(n.anthropicKey))throw new Error('Invalid API key format. Anthropic API keys should start with "sk-ant-"');await fe.setApiKey(n.anthropicKey),O.debug("Anthropic API key from CLI parameter stored"),console.log(H.green("\u2713 Anthropic API key stored"))}catch(Ge){O.error("Failed to store Anthropic API key",Ge),console.error(H.red("\u274C Invalid Anthropic API key")),Ge instanceof Error&&console.error(H.red(` ${Ge.message}`)),process.exit(1)}console.log("")}let y=pQ(n);if(await bor(y),Ior(y),N3n(y)){console.log(""),console.log(H.yellow("\u26A0\uFE0F Warning: Running from a user home directory")),console.log(H.dim("\u2500".repeat(50))),console.log(""),console.log(H.gray(`Directory: ${y}`)),console.log(""),console.log(H.gray("User home directories typically contain many files and folders.")),console.log(H.gray("This can cause slow indexing and high memory usage.")),console.log(""),console.log(H.gray("Recommendation: Navigate to a specific project folder before")),console.log(H.gray("starting the CLI, or use the --cwd option to specify a project directory.")),console.log("");let{proceed:B}=await hS.prompt([{type:"confirm",name:"proceed",message:"Do you want to continue anyway?",default:!1}]);B||(console.log(""),console.log(H.gray("Exiting. Please navigate to a project directory and try again.")),console.log(""),process.exit(0)),console.log("")}let v=await Qar();if(n.agents||n.agent){let{initializeAgentManager:B}=await Promise.resolve().then(()=>(vx(),aO));await B(y,n.agents)}if(n.print){let B;if(n.agent){let{getAgentByName:fe}=await Promise.resolve().then(()=>(vx(),aO));B=await fe(n.agent),B||(console.error(H.red(`\u274C Agent "${n.agent}" not found`)),console.error(H.gray(" Available agents: explore, code-reviewer, debugger, planner")),console.error(H.gray(" Or define custom agents with --agents")),process.exit(1)),O.debug(`Running with agent: ${B.name} (${B.source})`)}let ie=await PD({query:n.print,pipedInput:v,projectRoot:y,continueSession:n.continue||!1,debug:n.debug||u,cliAgentsJson:n.agents,agentConfig:B,standaloneAgent:n.standaloneAgent||B?.standalone,attachments:n.attachment?await Nor(n.attachment,y):void 0});process.exit(ie.exitCode);return}await Yc(tl());try{let{getTempFileService:B,TEMP_DIR:ie,PREVIEW_TEMP_DIR:fe}=await Promise.resolve().then(()=>(VKe(),Tjt)),Ge=B(),ot=Hre(y,s3,ie,fe);Ge.setTempDir(ot),await Ge.initialize()}catch{O.debug("TempFileService initialization skipped")}n.banner!==!1&&console.log(Zre(Foe)),y!==process.cwd()&&(console.log(H.cyan(`\u{1F4C1} Working directory: ${y}`)),console.log(""));let C=n.forceUpdateCheck===!0;if(O.debug("CLI startup: about to check for updates",{updateCheckEnabled:n.updateCheck!==!1,forceUpdateCheck:C}),n.updateCheck!==!1)try{O.debug("CLI startup: calling performAutoUpdateOnStartup");let B=await wjt(void 0,C);O.debug("CLI startup: update check completed",{updated:B.updated}),B.updated&&(O.debug("CLI startup: auto-update successful, exiting for restart"),console.log(""),console.log("Update complete! Please run the CLI again to use the new version."),console.log(""),process.exit(0))}catch(B){O.debug("Update check failed",B)}let{setProjectRoot:T}=await Promise.resolve().then(()=>(vx(),aO));T(y);let{setSkillProjectRoot:R}=await Promise.resolve().then(()=>(XX(),iit));R(y);let{setCommandsProjectRoot:F}=await Promise.resolve().then(()=>(Rve(),EUe));F(y);let{setHooksProjectRoot:W}=await Promise.resolve().then(()=>(Cve(),uUe));W(y);let{waitUntilExit:V}=Gor(Dor.createElement(Qst,{version:Foe,skipSetup:n.skipSetup,projectRoot:y,smartMode:n.smart,initialPrompt:t,continueSession:n.continue||!1,cliAgentsJson:n.agents,unleashMode:n.unleash||!1,initialAttachments:n.attachment?await Nor(n.attachment,y):void 0}));await V()}catch(s){O.error("Failed to start Compass",s),console.error(H.red("\u274C Failed to start Compass")),s instanceof Error&&console.error(H.red(` ${s.message}`)),process.exit(1)}}),i.command("setup").description("Run first-time setup wizard for consent and API key configuration").option("--compass-key <key>","Compass API key for authentication").option("--anthropic-key <key>","Anthropic API key (optional if already configured)").action(async t=>{try{if(await Yc(tl()),t.compassKey||t.anthropicKey){let{getCredentialStore:s}=await Promise.resolve().then(()=>(LI(),bB)),{getCompassAuthService:c}=await Promise.resolve().then(()=>(T9(),CLe)),u=await s();if(t.compassKey)try{console.log(H.gray("Validating Compass API key...")),await c().validateApiKey(t.compassKey),await u.setCompassApiKey(t.compassKey),console.log(H.green("\u2713 Compass API key validated and stored"))}catch(m){O.error("Failed to validate Compass API key",m),console.error(H.red("\u274C Invalid Compass API key")),m instanceof Error&&console.error(H.red(` ${m.message}`)),process.exit(1)}if(t.anthropicKey)try{if(console.log(H.gray("Storing Anthropic API key...")),!u.validateApiKeyFormat(t.anthropicKey))throw new Error('Invalid API key format. Anthropic API keys should start with "sk-ant-"');await u.setApiKey(t.anthropicKey),console.log(H.green("\u2713 Anthropic API key stored"))}catch(m){O.error("Failed to store Anthropic API key",m),console.error(H.red("\u274C Invalid Anthropic API key")),m instanceof Error&&console.error(H.red(` ${m.message}`)),process.exit(1)}console.log("")}console.log(Zre(Foe));let{waitUntilExit:n}=Gor(Dor.createElement(Qst,{version:Foe}));await n()}catch(n){O.error("Setup failed",n),console.error(H.red("\u274C Setup failed")),n instanceof Error&&console.error(H.red(` ${n.message}`)),process.exit(1)}}),i.command("init").description("Initialize Compass in the current project directory").option("--cwd <path>","Run in a specific project directory").option("-f, --force","Overwrite existing .compass directory").action(async t=>{try{let n=pQ(t),s=hu(n);if(await aa(s)){if(!t.force){console.log(H.yellow("\u26A0\uFE0F Compass is already initialized in this project.")),console.log(H.gray(" Use --force to reinitialize."));return}console.log(H.gray("Reinitializing Compass..."))}await Yc(s),await Yc(`${s}/backups`),await Yc(`${s}/cache`),await Yc(`${s}/context`),console.log(H.green("\u2705 Initialized Compass in current project")),console.log(H.gray(` Created ${s}/`)),console.log(""),console.log(H.gray("Next steps:")),console.log(H.gray(` 1. Run "compass setup" if you haven't configured your API key`)),console.log(H.gray(' 2. Run "compass" to start an interactive session'))}catch(n){O.error("Init failed",n),console.error(H.red("\u274C Failed to initialize Compass")),n instanceof Error&&console.error(H.red(` ${n.message}`)),process.exit(1)}}),i.addCommand(vor()),i.addCommand(kor()),i.addCommand(Cor()),i.addCommand(For()),i.command("consent").description("Manage consent settings for data collection and telemetry").argument("[action]","Action to perform: status, review, revoke","status").action(async t=>{try{let n=await l3();switch(t.toLowerCase()){case"status":{let s=await n.getStatus();if(console.log(""),console.log(H.bold.white("\u{1F4CB} Consent Status")),console.log(H.dim("\u2500".repeat(40))),console.log(` ${H.gray("Valid:")} ${s.isValid?H.green("Yes"):H.red("No")}`),console.log(` ${H.gray("Version:")} ${s.version||H.gray("N/A")}`),console.log(` ${H.gray("Granted:")} ${s.grantedAt?new Date(s.grantedAt).toLocaleDateString():H.gray("N/A")}`),console.log(` ${H.gray("Expires:")} ${s.expiresAt?new Date(s.expiresAt).toLocaleDateString():H.gray("N/A")}`),s.daysUntilExpiry!==null){let c=s.daysUntilExpiry>30?"green":s.daysUntilExpiry>7?"yellow":"red";console.log(` ${H.gray("Days until expiry:")} ${H[c](s.daysUntilExpiry.toString())}`)}s.consent&&(console.log(""),console.log(H.bold.white(" Settings:")),console.log(` ${H.gray("Data Collection:")} ${s.consent.dataCollection?H.green("Enabled"):H.red("Disabled")}`),console.log(` ${H.gray("Telemetry:")} ${s.consent.telemetry?H.green("Enabled"):H.yellow("Disabled")}`),console.log(` ${H.gray("Analytics:")} ${s.consent.analytics?H.green("Enabled"):H.yellow("Disabled")}`),console.log(` ${H.gray("Error Reporting:")} ${s.consent.errorReporting?H.green("Enabled"):H.yellow("Disabled")}`)),s.needsRenewal&&(console.log(""),console.log(H.yellow('\u26A0\uFE0F Consent needs renewal. Run "compass setup" to update.'))),console.log("");break}case"review":{let s=n.getHistory();if(console.log(""),console.log(H.bold.white("\u{1F4DC} Consent History")),console.log(H.dim("\u2500".repeat(40))),s.length===0)console.log(H.gray(" No consent records found."));else for(let c of s.slice(-5))console.log(` ${H.gray("ID:")} ${c.id.slice(0,8)}...`),console.log(` ${H.gray("Version:")} ${c.version}`),console.log(` ${H.gray("Granted:")} ${new Date(c.grantedAt).toLocaleString()}`),console.log(H.dim(" \u2500".repeat(20)));console.log("");break}case"revoke":{console.log(""),console.log(H.yellow("\u26A0\uFE0F Revoking consent will delete all stored data.")),console.log(H.gray(" This action cannot be undone.")),console.log(""),await n.revokeConsent(),console.log(H.green("\u2705 Consent revoked and data cleaned up")),console.log(H.gray(' Run "compass setup" to reconfigure.')),console.log("");break}default:console.log(H.red(`Unknown action: ${t}`)),console.log(H.gray("Available actions: status, review, revoke")),process.exit(1)}}catch(n){O.error("Consent command failed",n),console.error(H.red("\u274C Consent command failed")),n instanceof Error&&console.error(H.red(` ${n.message}`)),process.exit(1)}}),i.command("tokens").description("View token usage statistics and cost estimates").option("--export","Export usage data as JSON").option("--session","Show current session usage only").option("--reset","Reset token usage statistics").action(async t=>{try{let n=await zg();if(t.export){let c=await n.exportUsage();console.log(JSON.stringify(c,null,2));return}if(t.reset){console.log(H.yellow("\u26A0\uFE0F This will reset all token usage statistics.")),console.log(H.gray(" Feature not yet implemented."));return}if(t.session){let c=n.getCurrentSessionUsage();if(!c){console.log(H.gray("No active session."));return}console.log(""),console.log(H.bold.white("\u{1F4CA} Current Session Token Usage")),console.log(H.dim("\u2500".repeat(40))),console.log(` ${H.gray("Session ID:")} ${c.sessionId.slice(0,8)}...`),console.log(` ${H.gray("Started:")} ${new Date(c.startTime).toLocaleString()}`),console.log(` ${H.gray("API Calls:")} ${c.calls.length}`),console.log(` ${H.gray("Input Tokens:")} ${c.totals.inputTokens.toLocaleString()}`),console.log(` ${H.gray("Output Tokens:")} ${c.totals.outputTokens.toLocaleString()}`),console.log(` ${H.gray("Total Tokens:")} ${H.bold(c.totals.totalTokens.toLocaleString())}`),console.log(` ${H.gray("Estimated Cost:")} ${H.green("$"+c.estimatedCost.totalCost.toFixed(4))}`),console.log("");return}let s=n.getAllTimeStats();console.log(""),console.log(H.bold.white("\u{1F4CA} Token Usage Statistics")),console.log(H.dim("\u2500".repeat(40))),console.log(` ${H.gray("Total API Calls:")} ${s.totalCalls.toLocaleString()}`),console.log(` ${H.gray("Total Tokens:")} ${s.totalTokens.toLocaleString()}`),console.log(` ${H.gray("Total Cost:")} ${H.green("$"+s.totalCost.toFixed(4))}`),console.log(""),console.log(H.bold.white(" Averages per Call:")),console.log(` ${H.gray("Input:")} ${s.averageInputTokens.toLocaleString()} tokens`),console.log(` ${H.gray("Output:")} ${s.averageOutputTokens.toLocaleString()} tokens`),console.log(""),console.log(H.bold.white(" Peak Usage:")),console.log(` ${H.gray("Input:")} ${s.peakInputTokens.toLocaleString()} tokens`),console.log(` ${H.gray("Output:")} ${s.peakOutputTokens.toLocaleString()} tokens`),console.log("")}catch(n){O.error("Tokens command failed",n),console.error(H.red("\u274C Tokens command failed")),n instanceof Error&&console.error(H.red(` ${n.message}`)),process.exit(1)}}),i.command("data").description("Manage stored data (GDPR compliance)").argument("[action]","Action to perform: list, export, delete","list").option("--cwd <path>","Run in a specific project directory").option("-o, --output <file>","Output file for export").action(async(t,n)=>{try{let s=await l3();switch(t.toLowerCase()){case"list":{console.log(""),console.log(H.bold.white("\u{1F4C1} Stored Data")),console.log(H.dim("\u2500".repeat(40)));let c=tl(),u=hu(pQ(n));console.log(H.bold.cyan(" Global Data:")),console.log(` ${H.gray("Location:")} ${c}`),console.log(` ${H.gray("Contents:")} config, credentials, consent, token usage, logs`),await aa(u)&&(console.log(""),console.log(H.bold.cyan(" Project Data:")),console.log(` ${H.gray("Location:")} ${u}`),console.log(` ${H.gray("Contents:")} session state, backups, cache, context index`)),console.log(""),console.log(H.gray('Use "compass data export" to export all data')),console.log(H.gray('Use "compass consent revoke" to delete all data')),console.log("");break}case"export":{let c=await s.exportUserData(),u=JSON.stringify(c,null,2);if(n.output){let{safeWriteFile:m}=await Promise.resolve().then(()=>(Pp(),tbe));await m(n.output,u),console.log(H.green(`\u2705 Data exported to ${n.output}`))}else console.log(u);break}case"delete":{console.log(H.yellow('\u26A0\uFE0F To delete all data, use "compass consent revoke"'));break}default:console.log(H.red(`Unknown action: ${t}`)),console.log(H.gray("Available actions: list, export, delete")),process.exit(1)}}catch(s){O.error("Data command failed",s),console.error(H.red("\u274C Data command failed")),s instanceof Error&&console.error(H.red(` ${s.message}`)),process.exit(1)}}),i.command("cache").description("Manage cached data").argument("[action]","Action to perform: clear, status","status").option("--cwd <path>","Run in a specific project directory").action(async(t,n)=>{try{let s=hu(pQ(n)),c=`${s}/cache`,u=`${s}/context`;switch(t.toLowerCase()){case"status":{console.log(""),console.log(H.bold.white("\u{1F4BE} Cache Status")),console.log(H.dim("\u2500".repeat(40))),await aa(c)?(console.log(` ${H.gray("Cache directory:")} ${c}`),console.log(` ${H.green("\u2713")} Cache directory exists`)):console.log(` ${H.gray("Cache directory:")} ${H.yellow("Not initialized")}`),await aa(u)?(console.log(` ${H.gray("Context index:")} ${u}`),console.log(` ${H.green("\u2713")} Context index exists`)):console.log(` ${H.gray("Context index:")} ${H.yellow("Not initialized")}`),console.log(""),console.log(H.gray('Use "compass cache clear" to clear all cached data')),console.log("");break}case"clear":{let m=!1;await aa(c)&&(await k0(c),await Yc(c),console.log(H.green("\u2705 Cache cleared")),m=!0),await aa(u)&&(await k0(u),await Yc(u),console.log(H.green("\u2705 Context index cleared")),m=!0),m||console.log(H.gray("No cache to clear."));break}default:console.log(H.red(`Unknown action: ${t}`)),console.log(H.gray("Available actions: status, clear")),process.exit(1)}}catch(s){O.error("Cache command failed",s),console.error(H.red("\u274C Cache command failed")),s instanceof Error&&console.error(H.red(` ${s.message}`)),process.exit(1)}}),i.command("update").description("Check for and install updates").argument("[action]","Action to perform: check, install, history","check").option("-f, --force","Force update check (ignore interval)").option("--npm","Use npm for installation").option("--yarn","Use yarn for installation").option("--pnpm","Use pnpm for installation").action(async(t,n)=>{try{let s=await Q3();switch(t.toLowerCase()){case"check":{console.log(""),console.log(H.cyan("Checking for updates..."));let c=await s.checkForUpdates(n.force);c.error?console.log(H.red(`Failed to check for updates: ${c.error}`)):c.updateAvailable&&c.latestVersion?s.displayUpdateNotification(c):(console.log(""),console.log(H.green(`You are on the latest version (${c.currentVersion})`)),console.log(""));break}case"install":{let c=n.npm?"npm":n.yarn?"yarn":n.pnpm?"pnpm":await s.detectPackageManager();await s.performUpdate(c);break}case"history":{let c=s.getUpdateHistory();if(console.log(""),console.log(H.bold.cyan("Update History")),console.log(H.dim("\u2500".repeat(40))),c.length===0)console.log(""),console.log(H.gray(" No update history recorded.")),console.log("");else{console.log("");for(let u of c.slice().reverse()){let m=u.success?H.green("\u2713"):H.red("\u2717"),y=u.success?H.green:H.red;console.log(` ${m} ${H.gray(new Date(u.updatedAt).toLocaleDateString())}`),console.log(` ${H.gray("From:")} ${u.fromVersion} ${H.gray("\u2192")} ${y(u.toVersion)}`),console.log(` ${H.gray("Method:")} ${u.method}`),u.error&&console.log(` ${H.red("Error:")} ${u.error}`),console.log("")}}break}default:console.log(H.red(`Unknown action: ${t}`)),console.log(H.gray("Available actions: check, install, history")),process.exit(1)}}catch(s){O.error("Update command failed",s),console.error(H.red("\u274C Update command failed")),s instanceof Error&&console.error(H.red(` ${s.message}`)),process.exit(1)}}),i.command("reset").description("Reset Compass to factory settings").option("--cwd <path>","Run in a specific project directory").option("-f, --force","Skip confirmation prompt").option("--global","Reset global settings only").option("--project","Reset project settings only").action(async t=>{try{if(!t.force){console.log(""),console.log(H.red("\u26A0\uFE0F WARNING: This will delete all Compass data!")),console.log(H.gray(" This action cannot be undone.")),console.log(""),console.log(H.gray(" Use --force to confirm this action.")),console.log("");return}if(t.project&&!t.global){let c=hu(pQ(t));await aa(c)?(await k0(c),console.log(H.green("\u2705 Project settings reset"))):console.log(H.gray("No project settings to reset."));return}if(t.global&&!t.project){let c=tl();await aa(c)?(await k0(c),console.log(H.green("\u2705 Global settings reset"))):console.log(H.gray("No global settings to reset."));return}let n=tl(),s=hu(pQ(t));await aa(n)&&await k0(n),await aa(s)&&await k0(s),console.log(H.green("\u2705 Compass has been reset to factory settings")),console.log(H.gray(' Run "compass setup" to reconfigure.'))}catch(n){O.error("Reset failed",n),console.error(H.red("\u274C Reset failed")),n instanceof Error&&console.error(H.red(` ${n.message}`)),process.exit(1)}}),i}async function Z3n(){try{let i=P3n();process.on("uncaughtException",t=>{O.error("Uncaught exception",t),console.error(H.red("\u274C An unexpected error occurred")),t instanceof Error&&console.error(H.red(` ${t.message}`)),process.exit(1)}),process.on("unhandledRejection",t=>{O.error("Unhandled rejection",t),console.error(H.red("\u274C An unexpected error occurred")),t instanceof Error&&console.error(H.red(` ${t.message}`)),process.exit(1)}),await i.parseAsync(process.argv)}catch(i){O.error("CLI error",i),console.error(H.red("\u274C CLI error")),i instanceof Error&&console.error(H.red(` ${i.message}`)),process.exit(1)}}Z3n();
3988
+ Supported formats: PNG, JPG, JPEG, GIF, WEBP, PDF`)),console.error(H.gray("Maximum file size: 20MB per file"))}return n}var Foe="1.0.48",R3n="compass",W3n="AI-powered development assistance using Anthropic's Claude models";function P3n(){let i=new PG;return i.name(R3n).description(W3n).version(Foe,"-v, --version","Display version number").helpOption("-h, --help","Display help information"),i.command("start",{isDefault:!0}).description("Start interactive Compass session").argument("[prompt]","Initial prompt to start the session with").option("-p, --print <query>","Run query in non-interactive mode (SDK mode) and exit").option("-a, --attachment <paths...>","Attach files (images/PDFs) to the prompt").option("-c, --continue","Continue the most recent conversation in current directory").option("--cwd <path>","Run in a specific project directory").option("--skip-setup","Skip the setup wizard even if not configured").option("--compass-key <key>","Compass API key for authentication").option("--anthropic-key <key>","Anthropic API key (optional if already configured)").option("--no-banner","Skip the ASCII art banner").option("--no-update-check","Skip the update check on startup").option("--force-update-check","Force update check (ignore cache interval)").option("--verbose","Enable verbose logging (info level)").option("--debug","Enable debug logging").option("--agents <json>",`JSON object defining agents for this session (e.g., '{"name": {"description": "...", "prompt": "..."}}')`).option("--agent <name>","Run with a specific agent (applies its system prompt, model, and tool restrictions)").option("--standalone-agent","Use only the agent's system prompt, excluding the default CLI system prompt").option("--unleash","Start in unguarded mode (removes safety guardrails) - USE WITH CAUTION").action(async(t,n)=>{try{let s=process.env.COMPASS_DEBUG,c=process.env.COMPASS_VERBOSE,u=s&&s.toLowerCase()!=="false"&&s!=="0",m=c&&c.toLowerCase()!=="false"&&c!=="0";if(n.debug||u?O.configure({level:"debug"}):(n.verbose||m)&&O.configure({level:"info"}),n.compassKey||n.anthropicKey){let{getCredentialStore:B}=await Promise.resolve().then(()=>(LI(),bB)),{getCompassAuthService:ie}=await Promise.resolve().then(()=>(T9(),CLe)),fe=await B();if(n.compassKey)try{O.debug("Validating Compass API key from CLI parameter"),await ie().validateApiKey(n.compassKey),await fe.setCompassApiKey(n.compassKey),O.debug("Compass API key from CLI parameter validated and stored"),console.log(H.green("\u2713 Compass API key validated and stored"))}catch(Ge){O.error("Failed to validate Compass API key",Ge),console.error(H.red("\u274C Invalid Compass API key")),Ge instanceof Error&&console.error(H.red(` ${Ge.message}`)),process.exit(1)}if(n.anthropicKey)try{if(O.debug("Storing Anthropic API key from CLI parameter"),!fe.validateApiKeyFormat(n.anthropicKey))throw new Error('Invalid API key format. Anthropic API keys should start with "sk-ant-"');await fe.setApiKey(n.anthropicKey),O.debug("Anthropic API key from CLI parameter stored"),console.log(H.green("\u2713 Anthropic API key stored"))}catch(Ge){O.error("Failed to store Anthropic API key",Ge),console.error(H.red("\u274C Invalid Anthropic API key")),Ge instanceof Error&&console.error(H.red(` ${Ge.message}`)),process.exit(1)}console.log("")}let y=pQ(n);if(await bor(y),Ior(y),N3n(y)){console.log(""),console.log(H.yellow("\u26A0\uFE0F Warning: Running from a user home directory")),console.log(H.dim("\u2500".repeat(50))),console.log(""),console.log(H.gray(`Directory: ${y}`)),console.log(""),console.log(H.gray("User home directories typically contain many files and folders.")),console.log(H.gray("This can cause slow indexing and high memory usage.")),console.log(""),console.log(H.gray("Recommendation: Navigate to a specific project folder before")),console.log(H.gray("starting the CLI, or use the --cwd option to specify a project directory.")),console.log("");let{proceed:B}=await hS.prompt([{type:"confirm",name:"proceed",message:"Do you want to continue anyway?",default:!1}]);B||(console.log(""),console.log(H.gray("Exiting. Please navigate to a project directory and try again.")),console.log(""),process.exit(0)),console.log("")}let v=await Qar();if(n.agents||n.agent){let{initializeAgentManager:B}=await Promise.resolve().then(()=>(vx(),aO));await B(y,n.agents)}if(n.print){let B;if(n.agent){let{getAgentByName:fe}=await Promise.resolve().then(()=>(vx(),aO));B=await fe(n.agent),B||(console.error(H.red(`\u274C Agent "${n.agent}" not found`)),console.error(H.gray(" Available agents: explore, code-reviewer, debugger, planner")),console.error(H.gray(" Or define custom agents with --agents")),process.exit(1)),O.debug(`Running with agent: ${B.name} (${B.source})`)}let ie=await PD({query:n.print,pipedInput:v,projectRoot:y,continueSession:n.continue||!1,debug:n.debug||u,cliAgentsJson:n.agents,agentConfig:B,standaloneAgent:n.standaloneAgent||B?.standalone,attachments:n.attachment?await Nor(n.attachment,y):void 0});process.exit(ie.exitCode);return}await Yc(tl());try{let{getTempFileService:B,TEMP_DIR:ie,PREVIEW_TEMP_DIR:fe}=await Promise.resolve().then(()=>(VKe(),Tjt)),Ge=B(),ot=Hre(y,s3,ie,fe);Ge.setTempDir(ot),await Ge.initialize()}catch{O.debug("TempFileService initialization skipped")}n.banner!==!1&&console.log(Zre(Foe)),y!==process.cwd()&&(console.log(H.cyan(`\u{1F4C1} Working directory: ${y}`)),console.log(""));let C=n.forceUpdateCheck===!0;if(O.debug("CLI startup: about to check for updates",{updateCheckEnabled:n.updateCheck!==!1,forceUpdateCheck:C}),n.updateCheck!==!1)try{O.debug("CLI startup: calling performAutoUpdateOnStartup");let B=await wjt(void 0,C);O.debug("CLI startup: update check completed",{updated:B.updated}),B.updated&&(O.debug("CLI startup: auto-update successful, exiting for restart"),console.log(""),console.log("Update complete! Please run the CLI again to use the new version."),console.log(""),process.exit(0))}catch(B){O.debug("Update check failed",B)}let{setProjectRoot:T}=await Promise.resolve().then(()=>(vx(),aO));T(y);let{setSkillProjectRoot:R}=await Promise.resolve().then(()=>(XX(),iit));R(y);let{setCommandsProjectRoot:F}=await Promise.resolve().then(()=>(Rve(),EUe));F(y);let{setHooksProjectRoot:W}=await Promise.resolve().then(()=>(Cve(),uUe));W(y);let{waitUntilExit:V}=Gor(Dor.createElement(Qst,{version:Foe,skipSetup:n.skipSetup,projectRoot:y,smartMode:n.smart,initialPrompt:t,continueSession:n.continue||!1,cliAgentsJson:n.agents,unleashMode:n.unleash||!1,initialAttachments:n.attachment?await Nor(n.attachment,y):void 0}));await V()}catch(s){O.error("Failed to start Compass",s),console.error(H.red("\u274C Failed to start Compass")),s instanceof Error&&console.error(H.red(` ${s.message}`)),process.exit(1)}}),i.command("setup").description("Run first-time setup wizard for consent and API key configuration").option("--compass-key <key>","Compass API key for authentication").option("--anthropic-key <key>","Anthropic API key (optional if already configured)").action(async t=>{try{if(await Yc(tl()),t.compassKey||t.anthropicKey){let{getCredentialStore:s}=await Promise.resolve().then(()=>(LI(),bB)),{getCompassAuthService:c}=await Promise.resolve().then(()=>(T9(),CLe)),u=await s();if(t.compassKey)try{console.log(H.gray("Validating Compass API key...")),await c().validateApiKey(t.compassKey),await u.setCompassApiKey(t.compassKey),console.log(H.green("\u2713 Compass API key validated and stored"))}catch(m){O.error("Failed to validate Compass API key",m),console.error(H.red("\u274C Invalid Compass API key")),m instanceof Error&&console.error(H.red(` ${m.message}`)),process.exit(1)}if(t.anthropicKey)try{if(console.log(H.gray("Storing Anthropic API key...")),!u.validateApiKeyFormat(t.anthropicKey))throw new Error('Invalid API key format. Anthropic API keys should start with "sk-ant-"');await u.setApiKey(t.anthropicKey),console.log(H.green("\u2713 Anthropic API key stored"))}catch(m){O.error("Failed to store Anthropic API key",m),console.error(H.red("\u274C Invalid Anthropic API key")),m instanceof Error&&console.error(H.red(` ${m.message}`)),process.exit(1)}console.log("")}console.log(Zre(Foe));let{waitUntilExit:n}=Gor(Dor.createElement(Qst,{version:Foe}));await n()}catch(n){O.error("Setup failed",n),console.error(H.red("\u274C Setup failed")),n instanceof Error&&console.error(H.red(` ${n.message}`)),process.exit(1)}}),i.command("init").description("Initialize Compass in the current project directory").option("--cwd <path>","Run in a specific project directory").option("-f, --force","Overwrite existing .compass directory").action(async t=>{try{let n=pQ(t),s=hu(n);if(await aa(s)){if(!t.force){console.log(H.yellow("\u26A0\uFE0F Compass is already initialized in this project.")),console.log(H.gray(" Use --force to reinitialize."));return}console.log(H.gray("Reinitializing Compass..."))}await Yc(s),await Yc(`${s}/backups`),await Yc(`${s}/cache`),await Yc(`${s}/context`),console.log(H.green("\u2705 Initialized Compass in current project")),console.log(H.gray(` Created ${s}/`)),console.log(""),console.log(H.gray("Next steps:")),console.log(H.gray(` 1. Run "compass setup" if you haven't configured your API key`)),console.log(H.gray(' 2. Run "compass" to start an interactive session'))}catch(n){O.error("Init failed",n),console.error(H.red("\u274C Failed to initialize Compass")),n instanceof Error&&console.error(H.red(` ${n.message}`)),process.exit(1)}}),i.addCommand(vor()),i.addCommand(kor()),i.addCommand(Cor()),i.addCommand(For()),i.command("consent").description("Manage consent settings for data collection and telemetry").argument("[action]","Action to perform: status, review, revoke","status").action(async t=>{try{let n=await l3();switch(t.toLowerCase()){case"status":{let s=await n.getStatus();if(console.log(""),console.log(H.bold.white("\u{1F4CB} Consent Status")),console.log(H.dim("\u2500".repeat(40))),console.log(` ${H.gray("Valid:")} ${s.isValid?H.green("Yes"):H.red("No")}`),console.log(` ${H.gray("Version:")} ${s.version||H.gray("N/A")}`),console.log(` ${H.gray("Granted:")} ${s.grantedAt?new Date(s.grantedAt).toLocaleDateString():H.gray("N/A")}`),console.log(` ${H.gray("Expires:")} ${s.expiresAt?new Date(s.expiresAt).toLocaleDateString():H.gray("N/A")}`),s.daysUntilExpiry!==null){let c=s.daysUntilExpiry>30?"green":s.daysUntilExpiry>7?"yellow":"red";console.log(` ${H.gray("Days until expiry:")} ${H[c](s.daysUntilExpiry.toString())}`)}s.consent&&(console.log(""),console.log(H.bold.white(" Settings:")),console.log(` ${H.gray("Data Collection:")} ${s.consent.dataCollection?H.green("Enabled"):H.red("Disabled")}`),console.log(` ${H.gray("Telemetry:")} ${s.consent.telemetry?H.green("Enabled"):H.yellow("Disabled")}`),console.log(` ${H.gray("Analytics:")} ${s.consent.analytics?H.green("Enabled"):H.yellow("Disabled")}`),console.log(` ${H.gray("Error Reporting:")} ${s.consent.errorReporting?H.green("Enabled"):H.yellow("Disabled")}`)),s.needsRenewal&&(console.log(""),console.log(H.yellow('\u26A0\uFE0F Consent needs renewal. Run "compass setup" to update.'))),console.log("");break}case"review":{let s=n.getHistory();if(console.log(""),console.log(H.bold.white("\u{1F4DC} Consent History")),console.log(H.dim("\u2500".repeat(40))),s.length===0)console.log(H.gray(" No consent records found."));else for(let c of s.slice(-5))console.log(` ${H.gray("ID:")} ${c.id.slice(0,8)}...`),console.log(` ${H.gray("Version:")} ${c.version}`),console.log(` ${H.gray("Granted:")} ${new Date(c.grantedAt).toLocaleString()}`),console.log(H.dim(" \u2500".repeat(20)));console.log("");break}case"revoke":{console.log(""),console.log(H.yellow("\u26A0\uFE0F Revoking consent will delete all stored data.")),console.log(H.gray(" This action cannot be undone.")),console.log(""),await n.revokeConsent(),console.log(H.green("\u2705 Consent revoked and data cleaned up")),console.log(H.gray(' Run "compass setup" to reconfigure.')),console.log("");break}default:console.log(H.red(`Unknown action: ${t}`)),console.log(H.gray("Available actions: status, review, revoke")),process.exit(1)}}catch(n){O.error("Consent command failed",n),console.error(H.red("\u274C Consent command failed")),n instanceof Error&&console.error(H.red(` ${n.message}`)),process.exit(1)}}),i.command("tokens").description("View token usage statistics and cost estimates").option("--export","Export usage data as JSON").option("--session","Show current session usage only").option("--reset","Reset token usage statistics").action(async t=>{try{let n=await zg();if(t.export){let c=await n.exportUsage();console.log(JSON.stringify(c,null,2));return}if(t.reset){console.log(H.yellow("\u26A0\uFE0F This will reset all token usage statistics.")),console.log(H.gray(" Feature not yet implemented."));return}if(t.session){let c=n.getCurrentSessionUsage();if(!c){console.log(H.gray("No active session."));return}console.log(""),console.log(H.bold.white("\u{1F4CA} Current Session Token Usage")),console.log(H.dim("\u2500".repeat(40))),console.log(` ${H.gray("Session ID:")} ${c.sessionId.slice(0,8)}...`),console.log(` ${H.gray("Started:")} ${new Date(c.startTime).toLocaleString()}`),console.log(` ${H.gray("API Calls:")} ${c.calls.length}`),console.log(` ${H.gray("Input Tokens:")} ${c.totals.inputTokens.toLocaleString()}`),console.log(` ${H.gray("Output Tokens:")} ${c.totals.outputTokens.toLocaleString()}`),console.log(` ${H.gray("Total Tokens:")} ${H.bold(c.totals.totalTokens.toLocaleString())}`),console.log(` ${H.gray("Estimated Cost:")} ${H.green("$"+c.estimatedCost.totalCost.toFixed(4))}`),console.log("");return}let s=n.getAllTimeStats();console.log(""),console.log(H.bold.white("\u{1F4CA} Token Usage Statistics")),console.log(H.dim("\u2500".repeat(40))),console.log(` ${H.gray("Total API Calls:")} ${s.totalCalls.toLocaleString()}`),console.log(` ${H.gray("Total Tokens:")} ${s.totalTokens.toLocaleString()}`),console.log(` ${H.gray("Total Cost:")} ${H.green("$"+s.totalCost.toFixed(4))}`),console.log(""),console.log(H.bold.white(" Averages per Call:")),console.log(` ${H.gray("Input:")} ${s.averageInputTokens.toLocaleString()} tokens`),console.log(` ${H.gray("Output:")} ${s.averageOutputTokens.toLocaleString()} tokens`),console.log(""),console.log(H.bold.white(" Peak Usage:")),console.log(` ${H.gray("Input:")} ${s.peakInputTokens.toLocaleString()} tokens`),console.log(` ${H.gray("Output:")} ${s.peakOutputTokens.toLocaleString()} tokens`),console.log("")}catch(n){O.error("Tokens command failed",n),console.error(H.red("\u274C Tokens command failed")),n instanceof Error&&console.error(H.red(` ${n.message}`)),process.exit(1)}}),i.command("data").description("Manage stored data (GDPR compliance)").argument("[action]","Action to perform: list, export, delete","list").option("--cwd <path>","Run in a specific project directory").option("-o, --output <file>","Output file for export").action(async(t,n)=>{try{let s=await l3();switch(t.toLowerCase()){case"list":{console.log(""),console.log(H.bold.white("\u{1F4C1} Stored Data")),console.log(H.dim("\u2500".repeat(40)));let c=tl(),u=hu(pQ(n));console.log(H.bold.cyan(" Global Data:")),console.log(` ${H.gray("Location:")} ${c}`),console.log(` ${H.gray("Contents:")} config, credentials, consent, token usage, logs`),await aa(u)&&(console.log(""),console.log(H.bold.cyan(" Project Data:")),console.log(` ${H.gray("Location:")} ${u}`),console.log(` ${H.gray("Contents:")} session state, backups, cache, context index`)),console.log(""),console.log(H.gray('Use "compass data export" to export all data')),console.log(H.gray('Use "compass consent revoke" to delete all data')),console.log("");break}case"export":{let c=await s.exportUserData(),u=JSON.stringify(c,null,2);if(n.output){let{safeWriteFile:m}=await Promise.resolve().then(()=>(Pp(),tbe));await m(n.output,u),console.log(H.green(`\u2705 Data exported to ${n.output}`))}else console.log(u);break}case"delete":{console.log(H.yellow('\u26A0\uFE0F To delete all data, use "compass consent revoke"'));break}default:console.log(H.red(`Unknown action: ${t}`)),console.log(H.gray("Available actions: list, export, delete")),process.exit(1)}}catch(s){O.error("Data command failed",s),console.error(H.red("\u274C Data command failed")),s instanceof Error&&console.error(H.red(` ${s.message}`)),process.exit(1)}}),i.command("cache").description("Manage cached data").argument("[action]","Action to perform: clear, status","status").option("--cwd <path>","Run in a specific project directory").action(async(t,n)=>{try{let s=hu(pQ(n)),c=`${s}/cache`,u=`${s}/context`;switch(t.toLowerCase()){case"status":{console.log(""),console.log(H.bold.white("\u{1F4BE} Cache Status")),console.log(H.dim("\u2500".repeat(40))),await aa(c)?(console.log(` ${H.gray("Cache directory:")} ${c}`),console.log(` ${H.green("\u2713")} Cache directory exists`)):console.log(` ${H.gray("Cache directory:")} ${H.yellow("Not initialized")}`),await aa(u)?(console.log(` ${H.gray("Context index:")} ${u}`),console.log(` ${H.green("\u2713")} Context index exists`)):console.log(` ${H.gray("Context index:")} ${H.yellow("Not initialized")}`),console.log(""),console.log(H.gray('Use "compass cache clear" to clear all cached data')),console.log("");break}case"clear":{let m=!1;await aa(c)&&(await k0(c),await Yc(c),console.log(H.green("\u2705 Cache cleared")),m=!0),await aa(u)&&(await k0(u),await Yc(u),console.log(H.green("\u2705 Context index cleared")),m=!0),m||console.log(H.gray("No cache to clear."));break}default:console.log(H.red(`Unknown action: ${t}`)),console.log(H.gray("Available actions: status, clear")),process.exit(1)}}catch(s){O.error("Cache command failed",s),console.error(H.red("\u274C Cache command failed")),s instanceof Error&&console.error(H.red(` ${s.message}`)),process.exit(1)}}),i.command("update").description("Check for and install updates").argument("[action]","Action to perform: check, install, history","check").option("-f, --force","Force update check (ignore interval)").option("--npm","Use npm for installation").option("--yarn","Use yarn for installation").option("--pnpm","Use pnpm for installation").action(async(t,n)=>{try{let s=await Q3();switch(t.toLowerCase()){case"check":{console.log(""),console.log(H.cyan("Checking for updates..."));let c=await s.checkForUpdates(n.force);c.error?console.log(H.red(`Failed to check for updates: ${c.error}`)):c.updateAvailable&&c.latestVersion?s.displayUpdateNotification(c):(console.log(""),console.log(H.green(`You are on the latest version (${c.currentVersion})`)),console.log(""));break}case"install":{let c=n.npm?"npm":n.yarn?"yarn":n.pnpm?"pnpm":await s.detectPackageManager();await s.performUpdate(c);break}case"history":{let c=s.getUpdateHistory();if(console.log(""),console.log(H.bold.cyan("Update History")),console.log(H.dim("\u2500".repeat(40))),c.length===0)console.log(""),console.log(H.gray(" No update history recorded.")),console.log("");else{console.log("");for(let u of c.slice().reverse()){let m=u.success?H.green("\u2713"):H.red("\u2717"),y=u.success?H.green:H.red;console.log(` ${m} ${H.gray(new Date(u.updatedAt).toLocaleDateString())}`),console.log(` ${H.gray("From:")} ${u.fromVersion} ${H.gray("\u2192")} ${y(u.toVersion)}`),console.log(` ${H.gray("Method:")} ${u.method}`),u.error&&console.log(` ${H.red("Error:")} ${u.error}`),console.log("")}}break}default:console.log(H.red(`Unknown action: ${t}`)),console.log(H.gray("Available actions: check, install, history")),process.exit(1)}}catch(s){O.error("Update command failed",s),console.error(H.red("\u274C Update command failed")),s instanceof Error&&console.error(H.red(` ${s.message}`)),process.exit(1)}}),i.command("reset").description("Reset Compass to factory settings").option("--cwd <path>","Run in a specific project directory").option("-f, --force","Skip confirmation prompt").option("--global","Reset global settings only").option("--project","Reset project settings only").action(async t=>{try{if(!t.force){console.log(""),console.log(H.red("\u26A0\uFE0F WARNING: This will delete all Compass data!")),console.log(H.gray(" This action cannot be undone.")),console.log(""),console.log(H.gray(" Use --force to confirm this action.")),console.log("");return}if(t.project&&!t.global){let c=hu(pQ(t));await aa(c)?(await k0(c),console.log(H.green("\u2705 Project settings reset"))):console.log(H.gray("No project settings to reset."));return}if(t.global&&!t.project){let c=tl();await aa(c)?(await k0(c),console.log(H.green("\u2705 Global settings reset"))):console.log(H.gray("No global settings to reset."));return}let n=tl(),s=hu(pQ(t));await aa(n)&&await k0(n),await aa(s)&&await k0(s),console.log(H.green("\u2705 Compass has been reset to factory settings")),console.log(H.gray(' Run "compass setup" to reconfigure.'))}catch(n){O.error("Reset failed",n),console.error(H.red("\u274C Reset failed")),n instanceof Error&&console.error(H.red(` ${n.message}`)),process.exit(1)}}),i}async function Z3n(){try{let i=P3n();process.on("uncaughtException",t=>{O.error("Uncaught exception",t),console.error(H.red("\u274C An unexpected error occurred")),t instanceof Error&&console.error(H.red(` ${t.message}`)),process.exit(1)}),process.on("unhandledRejection",t=>{O.error("Unhandled rejection",t),console.error(H.red("\u274C An unexpected error occurred")),t instanceof Error&&console.error(H.red(` ${t.message}`)),process.exit(1)}),await i.parseAsync(process.argv)}catch(i){O.error("CLI error",i),console.error(H.red("\u274C CLI error")),i instanceof Error&&console.error(H.red(` ${i.message}`)),process.exit(1)}}Z3n();
3989
3989
  /*! Bundled license information:
3990
3990
 
3991
3991
  typescript/lib/typescript.js:
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var vbr=Object.create;var lfe=Object.defineProperty;var xbr=Object.getOwnPropertyDescriptor;var wbr=Object.getOwnPropertyNames;var Abr=Object.getPrototypeOf,Sbr=Object.prototype.hasOwnProperty;var Us=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(r,n)=>(typeof require<"u"?require:r)[n]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var zt=(a,r)=>()=>(a&&(r=a(a=0)),r);var ft=(a,r)=>()=>(r||a((r={exports:{}}).exports,r),r.exports),ZS=(a,r)=>{for(var n in r)lfe(a,n,{get:r[n],enumerable:!0})},Myt=(a,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let l of wbr(r))!Sbr.call(a,l)&&l!==n&&lfe(a,l,{get:()=>r[l],enumerable:!(o=xbr(r,l))||o.enumerable});return a};var Vo=(a,r,n)=>(n=a!=null?vbr(Abr(a)):{},Myt(r||!a||!a.__esModule?lfe(n,"default",{value:a,enumerable:!0}):n,a)),Gbr=a=>Myt(lfe({},"__esModule",{value:!0}),a);function Yyt(a){if(typeof a!="object"||a===null)return!1;let r=a;return typeof r.dataCollection=="boolean"&&typeof r.telemetry=="boolean"&&typeof r.analytics=="boolean"&&typeof r.errorReporting=="boolean"}function Zbr(a){if(typeof a!="object"||a===null)return!1;let r=a;return typeof r.id=="string"&&typeof r.version=="string"&&typeof r.grantedAt=="string"&&typeof r.expiresAt=="string"&&Yyt(r.consent)}function Vbr(){return{dataCollection:ufe.dataCollection.defaultValue,telemetry:ufe.telemetry.defaultValue,analytics:ufe.analytics.defaultValue,errorReporting:ufe.errorReporting.defaultValue}}function Pbr(){return{dataCollection:!0,telemetry:!0,analytics:!0,errorReporting:!0}}function Dbr(){return{dataCollection:!0,telemetry:!1,analytics:!1,errorReporting:!1}}var xDe,ufe,wDe=zt(()=>{"use strict";xDe="1.0.0",ufe={dataCollection:{title:"Data Collection",description:"Allow Compass to store conversation history and session data locally for improved functionality.",required:!0,defaultValue:!0},telemetry:{title:"Anonymous Telemetry",description:"Help improve Compass by sending anonymous usage statistics.",required:!1,defaultValue:!1},analytics:{title:"Analytics",description:"Allow collection of feature usage patterns to improve the product.",required:!1,defaultValue:!1},errorReporting:{title:"Error Reporting",description:"Automatically send error reports to help fix bugs.",required:!1,defaultValue:!0}}});var JO,LO=zt(()=>{"use strict";JO=(l=>(l.MANUAL="manual",l.AUTO="auto",l.STRICT="strict",l.SMART="smart",l))(JO||{})});var Yz,ADe,dfe,Oz=zt(()=>{"use strict";Yz=(v=>(v.DIRECT="direct",v.CLARIFICATION="clarification",v.TODO_LIST="todo_list",v.PLAN="plan",v.PLAN_ADOPT="plan_adopt",v.NO_ACTION="no_action",v.SPAWN_AGENT="spawn_agent",v))(Yz||{}),ADe=(v=>(v.PENDING="pending",v.IN_PROGRESS="in_progress",v.PAUSED="paused",v.COMPLETED="completed",v.FAILED="failed",v.SKIPPED="skipped",v.ROLLED_BACK="rolled_back",v))(ADe||{}),dfe=(D=>(D.IDLE="idle",D.CONTEXT_GATHERING="context_gathering",D.COMPLEXITY_ASSESSMENT="complexity_assessment",D.CLARIFICATION="clarification",D.PLAN_GENERATION="plan_generation",D.PLAN_REVIEW="plan_review",D.EXECUTION="execution",D.VERIFICATION="verification",D.COMPLETED="completed",D.FAILED="failed",D))(dfe||{})});var Uyt={};ZS(Uyt,{AGENT_SOURCE_PRIORITY:()=>Hz,compareAgentPriority:()=>Xyt,createDefaultAgentDefinition:()=>Jyt,getAgentSourcePriority:()=>pfe,isValidAgentFrontmatter:()=>mfe,isValidAgentPermissionMode:()=>ffe,isValidAgentSource:()=>Oyt,isValidCLIAgentConfig:()=>Hyt,parseToolsList:()=>tD,serializeToolsList:()=>Lyt});function ffe(a){return typeof a=="string"&&["default","acceptEditsAsk","bypassPermissions","plan","ignore","acceptEdits","dontAsk"].includes(a)}function Oyt(a){return typeof a=="string"&&["project","cli","user","builtin"].includes(a)}function mfe(a){if(typeof a!="object"||a===null)return!1;let r=a;return!(typeof r.name!="string"||r.name.length===0||typeof r.description!="string"||r.description.length===0||r.tools!==void 0&&typeof r.tools!="string"||r.disallowedTools!==void 0&&typeof r.disallowedTools!="string"||r.model!==void 0&&typeof r.model!="string"||r.permissionMode!==void 0&&!ffe(r.permissionMode)||r.skills!==void 0&&typeof r.skills!="string"||r.standalone!==void 0&&typeof r.standalone!="boolean"||r.mcpServers!==void 0&&typeof r.mcpServers!="string")}function Hyt(a){if(typeof a!="object"||a===null)return!1;let r=a;return!(typeof r.description!="string"||typeof r.prompt!="string"||r.tools!==void 0&&!Array.isArray(r.tools)||r.disallowedTools!==void 0&&!Array.isArray(r.disallowedTools)||r.model!==void 0&&typeof r.model!="string"||r.permissionMode!==void 0&&!ffe(r.permissionMode)||r.skills!==void 0&&!Array.isArray(r.skills)||r.standalone!==void 0&&typeof r.standalone!="boolean"||r.mcpServers!==void 0&&!Array.isArray(r.mcpServers))}function Jyt(a,r,n,o="builtin"){return{id:`${o}-${a}`,name:a,description:r,systemPrompt:n,source:o,permissionMode:"default",isActive:!0,rawFrontmatter:{name:a,description:r}}}function tD(a){if(!(!a||a.trim()===""))return a.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function Lyt(a){if(!(!a||a.length===0))return a.join(", ")}function pfe(a){return Hz.indexOf(a)}function Xyt(a,r){return pfe(a.source)-pfe(r.source)}var Hz,_fe=zt(()=>{"use strict";Hz=["builtin","user","cli","project"]});function gfe(a){return typeof a=="string"&&Qyt.includes(a)}function Qbr(a){return typeof a=="string"&&["personal","project"].includes(a)}function jbr(a){if(typeof a!="object"||a===null)return!1;let r=a;return!(r.description!==void 0&&typeof r.description!="string"||r.enabled!==void 0&&typeof r.enabled!="boolean"||r.tools!==void 0&&!Array.isArray(r.tools)||r.match!==void 0&&typeof r.match!="object"||r.timeout!==void 0&&typeof r.timeout!="number")}function SDe(a){return hfe.indexOf(a)}function Bbr(a,r){return SDe(a.source)-SDe(r.source)}var Qyt,hfe,GDe=zt(()=>{"use strict";Qyt=["PreToolUse","PostToolUse","UserPromptSubmit","Notification","Stop"],hfe=["personal","project"]});var Jz,Lz,XO,yfe,EDe,Xz,CDe,kDe,zbr,UO,TDe,qbr,NDe,FDe,RDe,WDe,ZDe,uN,VDe,PDe,$br,Kbr,evr,Uz,QO,DDe,MDe,Ife,bfe,tvr,rvr,vfe,YDe,Qz,nvr,ivr,svr,avr,ww,jO,ODe,S2,ovr,cvr,lvr,uvr,dvr,dN,DW,Vv,HDe,pvr,fvr,mvr,_vr,hvr,JDe,LDe,gvr,Up=zt(()=>{"use strict";Jz=".compass",Lz=".compass",XO="config.json",yfe="session.json",EDe="consent.json",Xz="credentials.enc",CDe="logs",kDe="backups",zbr="cache",UO="saved-sessions",TDe="index",qbr="context",NDe="temp",FDe="commands",RDe="agents",WDe="skills",ZDe="hooks",uN=16384,VDe=5e4,PDe=5e4,$br=80,Kbr=10,evr=30,Uz=7,QO=100,DDe=365,MDe=6e4,Ife=12e4,bfe=6e5,tvr=50,rvr=1048576,vfe=100,YDe=8e3,Qz=4e3,nvr=6e3,ivr=90,svr=1e5,avr=524288e3,ww="claude-sonnet-4-5-20250929",jO=.6,ODe="haiku",S2="verbose_analyst",ovr="banner",cvr=4,lvr=1e3,uvr=16e3,dvr=.1,dN={anthropic:{model:ww,maxTokens:16384,temperature:.6},project:{rootDir:process.cwd(),ignorePatterns:["node_modules/**",".git/**","dist/**","build/**","out/**","coverage/**",".next/**",".nuxt/**",".output/**","*.log",".env*","*.lock","package-lock.json","yarn.lock","pnpm-lock.yaml",".DS_Store","Thumbs.db","*.min.js","*.min.css","*.map",".compass/**"],includePatterns:["**/*"],maxFileSize:1048576,indexOnStartup:!0},safety:{requireApproval:!0,autoApprovePatterns:[],blockedPatterns:[".env*","*.key","*.pem","*.p12","*.pfx","secrets/**","**/secrets/**","**/*.secret","**/credentials*","**/password*"],maxFilesPerOperation:50,backupBeforeModify:!0,shellCommandTimeout:12e4,allowedShellCommands:["npm","npx","yarn","pnpm","git","node","tsc","eslint","prettier","jest","vitest","mocha","cargo","rustc","go","python","python3","pip","pip3","poetry","make","cmake","gradle","mvn","docker","kubectl","terraform","aws","gcloud","az","cat","ls","pwd","echo","head","tail","grep","find","wc","sort","uniq","diff","tree"],blockedShellCommands:["rm -rf /","rm -rf /*","rm -rf ~","rm -rf ~/*","sudo rm -rf",":(){:|:&};:","mkfs","dd if=/dev/zero","dd if=/dev/random","> /dev/sda","chmod -R 777 /","chown -R","wget | sh","curl | sh","wget | bash","curl | bash"]},ui:{theme:"auto",showTokenUsage:!0,showTimestamps:!1,compactMode:!1,animationsEnabled:!0,colorOutput:!0},session:{autoSave:!0,autoSaveInterval:6e4,maxHistoryLength:100,autoCompactThreshold:5e4,sessionExpiryDays:30},update:{checkOnStartup:!0,checkInterval:4,showNotifications:!0,notificationStyle:ovr,includePrerelease:!1},agentic:{maxIterations:200,costWarningThreshold:5,costHardCap:0,autoCompactAtPercent:80,stuckDetectionEnabled:!0,stuckDetectionThreshold:3,maxIterationsPerTask:50}},DW=["anthropic","ollama","zai","minimax"],Vv={API_KEY:"ANTHROPIC_API_KEY",COMPASS_API_KEY:"COMPASS_API_KEY",OLLAMA_API_KEY:"OLLAMA_API_KEY",ZAI_API_KEY:"ZAI_API_KEY",MINIMAX_API_KEY:"MINIMAX_API_KEY",MODEL:"COMPASS_MODEL",CONFIG_PATH:"COMPASS_CONFIG",DEBUG:"COMPASS_DEBUG",NO_COLOR:"NO_COLOR",FORCE_COLOR:"FORCE_COLOR",HOME:"HOME",USERPROFILE:"USERPROFILE"},HDe={anthropic:Vv.API_KEY,ollama:Vv.OLLAMA_API_KEY,zai:Vv.ZAI_API_KEY,minimax:Vv.MINIMAX_API_KEY},pvr="1.0.47",fvr="Compass CLI",mvr="Agentic CLI by Compass Agentic Platform",_vr="1.0.0",hvr={".ts":"typescript",".tsx":"typescript",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".rb":"ruby",".go":"go",".rs":"rust",".java":"java",".kt":"kotlin",".scala":"scala",".cs":"csharp",".fs":"fsharp",".cpp":"cpp",".cc":"cpp",".cxx":"cpp",".c":"c",".h":"c",".hpp":"cpp",".swift":"swift",".php":"php",".pl":"perl",".pm":"perl",".sh":"bash",".bash":"bash",".zsh":"zsh",".fish":"fish",".ps1":"powershell",".sql":"sql",".r":"r",".R":"r",".lua":"lua",".vim":"vim",".el":"elisp",".clj":"clojure",".cljs":"clojure",".ex":"elixir",".exs":"elixir",".erl":"erlang",".hrl":"erlang",".hs":"haskell",".ml":"ocaml",".mli":"ocaml",".nim":"nim",".zig":"zig",".v":"v",".d":"d",".dart":"dart",".groovy":"groovy",".gradle":"groovy",".json":"json",".yaml":"yaml",".yml":"yaml",".toml":"toml",".xml":"xml",".html":"html",".htm":"html",".css":"css",".scss":"scss",".sass":"sass",".less":"less",".md":"markdown",".mdx":"markdown",".rst":"restructuredtext",".tex":"latex",".dockerfile":"dockerfile",".tf":"terraform",".hcl":"hcl",".proto":"protobuf",".graphql":"graphql",".gql":"graphql",".vue":"vue",".svelte":"svelte",".astro":"astro"},JDe=["package-lock.json","yarn.lock","pnpm-lock.yaml","composer.lock","Gemfile.lock","poetry.lock","Cargo.lock","go.sum","*.map","*.js.map","*.css.map","*.min.js","*.min.css","*.bundle.js","*.chunk.js","*.sql","*.csv","**/__snapshots__/**","**/fixtures/**/*.json","*.d.ts.map"],LDe=["node_modules",".git","dist","build","out","coverage",".next",".nuxt",".output",".cache",".parcel-cache","vendor","__pycache__",".pytest_cache","target","bin","obj"],gvr=[".png",".jpg",".jpeg",".gif",".bmp",".ico",".webp",".svg",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".zip",".tar",".gz",".rar",".7z",".exe",".dll",".so",".dylib",".bin",".dat",".db",".sqlite",".sqlite3",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".wav",".avi",".mov",".mkv",".webm",".flv",".class",".jar",".war",".ear",".pyc",".pyo",".o",".obj",".a",".lib"]});var XDe={};ZS(XDe,{CLAUDE_MODELS:()=>Aw,MODEL_ALIASES:()=>jz,calculateModelCost:()=>Kyt,compareModels:()=>eIt,getAvailableAliases:()=>Byt,getAvailableModelIds:()=>jyt,getAvailableModels:()=>BO,getCheapestModel:()=>rIt,getDefaultModel:()=>qyt,getDefaultModelId:()=>$yt,getModelConfig:()=>dI,getModelDescription:()=>xfe,getModelTier:()=>iIt,getModelsByCapability:()=>tIt,getMostCapableModel:()=>nIt,isValidModel:()=>zyt,resolveModelId:()=>pI});function pI(a){let r=a.toLowerCase();if(jz[r])return jz[r];for(let n of Object.keys(Aw))if(n.toLowerCase()===r)return n;return a}function dI(a){let r=pI(a);return Aw[r]}function BO(){return Object.values(Aw)}function jyt(){return Object.keys(Aw)}function Byt(){return Object.keys(jz)}function zyt(a){return pI(a)in Aw}function qyt(){return Aw["claude-sonnet-4-5-20250929"]}function $yt(){return"claude-sonnet-4-5-20250929"}function Kyt(a,r,n){let o=dI(a);if(!o)return null;let l=r/1e6*o.pricing.inputPricePerMillion,f=n/1e6*o.pricing.outputPricePerMillion;return l+f}function eIt(a,r,n){let o=dI(a),l=dI(r);if(!o||!l)return 0;switch(n){case"price":return o.pricing.inputPricePerMillion-l.pricing.inputPricePerMillion;case"context":return l.contextWindow-o.contextWindow;case"speed":return l.pricing.inputPricePerMillion-o.pricing.inputPricePerMillion;default:return 0}}function tIt(a){return BO().filter(r=>r.capabilities[a])}function rIt(){return BO().reduce((r,n)=>n.pricing.inputPricePerMillion<r.pricing.inputPricePerMillion?n:r)}function nIt(){return Aw["claude-opus-4-6"]}function iIt(a){let r=pI(a);if(r.includes("haiku"))return"economy";if(r.includes("sonnet"))return"balanced";if(r.includes("opus"))return"premium"}function xfe(a){let r=pI(a);if(r.includes("opus"))return"Most capable model - best for complex reasoning, analysis, and extended thinking";if(r.includes("sonnet"))return"Balanced performance and cost - ideal for most coding tasks";if(r.includes("haiku"))return"Fastest and most economical - great for quick responses and simple tasks";if(r.includes("glm-4.7"))return"OpenSource"}var Aw,jz,MW=zt(()=>{"use strict";Aw={"glm-4.7:cloud":{id:"glm-4.7:cloud",name:"Z.AI GLM 4.7",provider:"ollama",baseUrl:"https://ollama.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:3,outputPricePerMillion:15},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!0}},"minimax-m2.1:cloud":{id:"minimax-m2.1:cloud",name:"MiniMax M2.1",provider:"ollama",baseUrl:"https://ollama.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:3,outputPricePerMillion:15},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!1}},"kimi-k2.5:cloud":{id:"kimi-k2.5:cloud",name:"Kimi K2.5",provider:"ollama",baseUrl:"https://ollama.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:3,outputPricePerMillion:15},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!1}},"gemini-3-pro-preview":{id:"gemini-3-pro-preview",name:"Gemini 3 Pro",provider:"ollama",baseUrl:"https://ollama.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:3,outputPricePerMillion:15},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!0}},"claude-sonnet-4-5-20250929":{id:"claude-sonnet-4-5-20250929",name:"Claude Sonnet 4.5",provider:"anthropic",baseUrl:"https://api.anthropic.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:3,outputPricePerMillion:15},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!0}},"claude-opus-4-6":{id:"claude-opus-4-6",name:"Claude Opus 4.6",provider:"anthropic",baseUrl:"https://api.anthropic.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:15,outputPricePerMillion:75},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!0,complexityClassification:!0}},"claude-opus-4-5-20251101":{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5",provider:"anthropic",baseUrl:"https://api.anthropic.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:15,outputPricePerMillion:75},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!0,complexityClassification:!0}},"claude-haiku-4-5-20251001":{id:"claude-haiku-4-5-20251001",name:"Claude Haiku 4.5",provider:"anthropic",baseUrl:"https://api.anthropic.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:.25,outputPricePerMillion:1.25},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!0}}},jz={sonnet:"claude-sonnet-4-5-20250929",opus:"claude-opus-4-6","opus-4.6":"claude-opus-4-6",opus46:"claude-opus-4-6","opus-4.5":"claude-opus-4-5-20251101",opus45:"claude-opus-4-5-20251101",haiku:"claude-haiku-4-5-20251001","glm-4.7":"glm-4.7:cloud","minimax-m2.1":"minimax-m2.1:cloud","kimi-k2.5":"kimi-k2.5:cloud","gemini-3-pro":"gemini-3-pro-preview",fast:"claude-haiku-4-5-20251001",quick:"claude-haiku-4-5-20251001",smart:"claude-sonnet-4-5-20250929",balanced:"claude-sonnet-4-5-20250929",powerful:"claude-opus-4-6",best:"claude-opus-4-6",robust:"glm-4.7:cloud",deep:"kimi-k2.5:cloud",versatile:"minimax-m2.1:cloud",creative:"gemini-3-pro-preview",s:"claude-sonnet-4-5-20250929",o:"claude-opus-4-6",h:"claude-haiku-4-5-20251001",g:"glm-4.7:cloud",m:"minimax-m2.1:cloud",k:"kimi-k2.5:cloud",p:"gemini-3-pro-preview"}});function yvr(){let a=new Map;for(let r of zO){let n=a.get(r.category)||[];n.push(r),a.set(r.category,n)}return a}var Bz,UDe,QDe,zO,jDe=zt(()=>{"use strict";Bz={network:{label:"Network Tools",priority:1},media:{label:"Media Tools",priority:2},development:{label:"Development Tools",priority:3},compression:{label:"Compression Tools",priority:4},text:{label:"Text Processing Tools",priority:5},file:{label:"File Tools",priority:6},system:{label:"System Tools",priority:7}},UDe=36e5,QDe=3e3,zO=[{command:"curl",name:"cURL",category:"network",description:"Transfer data with URLs",decisionRule:"Use for downloading files, making HTTP requests, testing APIs",useCases:["curl -O https://example.com/file.zip",'curl -X POST -d "data" https://api.example.com',"curl -I https://example.com (headers only)"]},{command:"wget",name:"wget",category:"network",description:"Non-interactive network downloader",decisionRule:"Use for downloading files, especially recursive downloads",useCases:["wget https://example.com/file.zip","wget -r https://example.com/docs/","wget -c https://example.com/large.zip (resume)"]},{command:"ssh",name:"SSH",category:"network",description:"Secure shell remote login",decisionRule:"Use for remote server access and secure connections",useCases:["ssh user@host","ssh -L 8080:localhost:80 user@host (tunnel)"]},{command:"ping",name:"Ping",category:"network",description:"Test network connectivity",decisionRule:"Use to check if a host is reachable",useCases:["ping example.com","ping -c 4 example.com (4 packets)"]},{command:"nslookup",name:"nslookup",category:"network",description:"Query DNS records",decisionRule:"Use for DNS lookups and troubleshooting",useCases:["nslookup example.com","nslookup -type=MX example.com"]},{command:"dig",name:"dig",category:"network",description:"DNS lookup utility",decisionRule:"Use for detailed DNS queries",useCases:["dig example.com","dig +short example.com","dig example.com MX"]},{command:"netstat",name:"netstat",category:"network",description:"Network statistics",decisionRule:"Use to view network connections and listening ports",useCases:["netstat -an (all connections)","netstat -tlnp (listening TCP ports)"]},{command:"ffmpeg",name:"FFmpeg",category:"media",description:"Audio/video conversion and processing",decisionRule:"Use for any audio/video conversion, extraction, or manipulation",useCases:["ffmpeg -i input.mp4 output.mp3 (extract audio)","ffmpeg -i input.mp4 -vn -acodec copy output.aac","ffmpeg -i input.mp4 -ss 00:01:00 -t 30 clip.mp4 (trim)"]},{command:"convert",name:"ImageMagick",category:"media",description:"Image conversion and manipulation",decisionRule:"Use for image format conversion, resizing, effects",useCases:["convert input.png output.jpg","convert input.png -resize 50% output.png","convert *.png output.pdf (combine to PDF)"]},{command:"yt-dlp",name:"yt-dlp",category:"media",description:"Video/audio downloader",decisionRule:"Use for downloading videos from YouTube and other sites",useCases:["yt-dlp https://youtube.com/watch?v=...","yt-dlp -x --audio-format mp3 URL (audio only)"]},{command:"git",name:"Git",category:"development",description:"Version control system",decisionRule:"Use for all version control operations",useCases:["git status","git diff","git log --oneline -10"]},{command:"node",name:"Node.js",category:"development",description:"JavaScript runtime",decisionRule:"Use for running JavaScript files or REPL",useCases:["node script.js",'node -e "console.log(1+1)"']},{command:"npm",name:"npm",category:"development",description:"Node.js package manager",decisionRule:"Use for JavaScript package management",useCases:["npm install package","npm run script","npm init -y"]},{command:"python",name:"Python",category:"development",description:"Python interpreter",decisionRule:"Use for running Python scripts or quick computations",useCases:["python script.py",'python -c "print(2**10)"']},{command:"pip",name:"pip",category:"development",description:"Python package manager",decisionRule:"Use for Python package installation",useCases:["pip install package","pip list","pip freeze > requirements.txt"]},{command:"docker",name:"Docker",category:"development",description:"Container platform",decisionRule:"Use for container operations",useCases:["docker ps","docker run -it ubuntu bash","docker build -t myapp ."]},{command:"code",name:"VS Code",category:"development",description:"Visual Studio Code editor",decisionRule:"Use to open files/folders in VS Code",useCases:["code .","code file.js"]},{command:"jq",name:"jq",category:"development",description:"JSON processor",decisionRule:"Use for parsing, filtering, and transforming JSON",useCases:["cat data.json | jq '.field'","jq '.items[] | .name' data.json","curl api.example.com | jq '.'"]},{command:"7z",name:"7-Zip",category:"compression",description:"High compression archiver",decisionRule:"Use for creating/extracting archives, especially 7z format",useCases:["7z x archive.7z","7z a archive.7z folder/"]},{command:"tar",name:"tar",category:"compression",description:"Archive utility",decisionRule:"Use for tar archives, common on Unix systems",useCases:["tar -xzf archive.tar.gz","tar -czf archive.tar.gz folder/","tar -tvf archive.tar (list contents)"]},{command:"zip",name:"zip",category:"compression",description:"Compress files into ZIP format",decisionRule:"Use for creating ZIP archives",useCases:["zip archive.zip file1 file2","zip -r archive.zip folder/"]},{command:"unzip",name:"unzip",category:"compression",description:"Extract ZIP archives",decisionRule:"Use for extracting ZIP files",useCases:["unzip archive.zip","unzip -l archive.zip (list contents)","unzip archive.zip -d destination/"]},{command:"gzip",name:"gzip",category:"compression",description:"GNU compression utility",decisionRule:"Use for gzip compression/decompression",useCases:["gzip file","gzip -d file.gz","gzip -k file (keep original)"]},{command:"grep",name:"grep",category:"text",description:"Search text patterns",decisionRule:"Use for searching patterns in files",useCases:['grep "pattern" file','grep -r "pattern" folder/','grep -i "pattern" file (case insensitive)']},{command:"sed",name:"sed",category:"text",description:"Stream editor",decisionRule:"Use for text transformations and substitutions",useCases:["sed 's/old/new/g' file","sed -i 's/old/new/g' file (in-place)"]},{command:"awk",name:"awk",category:"text",description:"Pattern scanning and processing",decisionRule:"Use for column-based text processing",useCases:["awk '{print $1}' file","awk -F: '{print $1}' /etc/passwd"]},{command:"find",name:"find",category:"file",description:"Search for files",decisionRule:"Use for finding files by name, type, date, etc.",useCases:['find . -name "*.js"',"find . -type f -mtime -7 (modified last 7 days)"]},{command:"rsync",name:"rsync",category:"file",description:"Fast file synchronization",decisionRule:"Use for copying/syncing files with progress and resume",useCases:["rsync -av source/ dest/","rsync -avz source/ user@host:dest/"]},{command:"pandoc",name:"Pandoc",category:"system",description:"Universal document converter",decisionRule:"Use for converting between document formats",useCases:["pandoc input.md -o output.pdf","pandoc input.docx -o output.html"]},{command:"htop",name:"htop",category:"system",description:"Interactive process viewer",decisionRule:"Use for monitoring system resources",useCases:["htop"]},{command:"btop",name:"btop",category:"system",description:"Resource monitor",decisionRule:"Use for monitoring system resources with better UI",useCases:["btop"]},{command:"lsof",name:"lsof",category:"system",description:"List open files",decisionRule:"Use to find which process is using a file or port",useCases:["lsof -i :8080 (what is using port 8080)","lsof /path/to/file"]}]});var rD=zt(()=>{"use strict";MW();Up();jDe()});var cIt=ft((ron,BDe)=>{"use strict";var sIt=Us("path"),aIt=Us("module"),Ivr=Us("fs"),oIt=(a,r,n)=>{if(typeof a!="string")throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof a}\``);if(typeof r!="string")throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof r}\``);try{a=Ivr.realpathSync(a)}catch(f){if(f.code==="ENOENT")a=sIt.resolve(a);else{if(n)return null;throw f}}let o=sIt.join(a,"noop.js"),l=()=>aIt._resolveFilename(r,{id:o,filename:o,paths:aIt._nodeModulePaths(a)});if(n)try{return l()}catch{return null}return l()};BDe.exports=(a,r)=>oIt(a,r);BDe.exports.silent=(a,r)=>oIt(a,r,!0)});var uIt=ft((non,zDe)=>{"use strict";var lIt=()=>{let a=Error.prepareStackTrace;Error.prepareStackTrace=(n,o)=>o;let r=new Error().stack.slice(1);return Error.prepareStackTrace=a,r};zDe.exports=lIt;zDe.exports.default=lIt});var pIt=ft((ion,dIt)=>{"use strict";var bvr=uIt();dIt.exports=a=>{let r=bvr();if(!a)return r[2].getFileName();let n=!1;r.shift();for(let o of r){let l=o.getFileName();if(typeof l=="string"){if(l===a){n=!0;continue}if(l!=="module.js"&&n&&l!==a)return l}}}});var mIt=ft((son,fIt)=>{"use strict";var vvr=Us("path"),xvr=cIt(),wvr=pIt();fIt.exports=a=>{if(typeof a!="string")throw new TypeError("Expected a string");let r=wvr(__filename),n=r?vvr.dirname(r):__dirname,o=xvr(n,a),l=Us.cache[o];if(l&&l.parent){let h=l.parent.children.length;for(;h--;)l.parent.children[h].id===o&&l.parent.children.splice(h,1)}delete Us.cache[o];let f=Us.cache[r];return f===void 0||f.require===void 0?Us(o):f.require(o)}});var hIt=ft((oon,_It)=>{"use strict";_It.exports=function(r){return r?r instanceof Array||Array.isArray(r)||r.length>=0&&r.splice instanceof Function:!1}});var yIt=ft((con,gIt)=>{"use strict";var Avr=Us("util"),Svr=hIt(),qDe=function(r,n){(!r||r.constructor!==String)&&(n=r||{},r=Error.name);var o=function l(f){if(!this)return new l(f);f=f instanceof Error?f.message:f||this.message,Error.call(this,f),Error.captureStackTrace(this,o),this.name=r,Object.defineProperty(this,"message",{configurable:!0,enumerable:!1,get:function(){var D=f.split(/\r?\n/g);for(var L in n)if(n.hasOwnProperty(L)){var M=n[L];"message"in M&&(D=M.message(this[L],D)||D,Svr(D)||(D=[D]))}return D.join(`
1
+ var vbr=Object.create;var lfe=Object.defineProperty;var xbr=Object.getOwnPropertyDescriptor;var wbr=Object.getOwnPropertyNames;var Abr=Object.getPrototypeOf,Sbr=Object.prototype.hasOwnProperty;var Us=(a=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(a,{get:(r,n)=>(typeof require<"u"?require:r)[n]}):a)(function(a){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+a+'" is not supported')});var zt=(a,r)=>()=>(a&&(r=a(a=0)),r);var ft=(a,r)=>()=>(r||a((r={exports:{}}).exports,r),r.exports),ZS=(a,r)=>{for(var n in r)lfe(a,n,{get:r[n],enumerable:!0})},Myt=(a,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let l of wbr(r))!Sbr.call(a,l)&&l!==n&&lfe(a,l,{get:()=>r[l],enumerable:!(o=xbr(r,l))||o.enumerable});return a};var Vo=(a,r,n)=>(n=a!=null?vbr(Abr(a)):{},Myt(r||!a||!a.__esModule?lfe(n,"default",{value:a,enumerable:!0}):n,a)),Gbr=a=>Myt(lfe({},"__esModule",{value:!0}),a);function Yyt(a){if(typeof a!="object"||a===null)return!1;let r=a;return typeof r.dataCollection=="boolean"&&typeof r.telemetry=="boolean"&&typeof r.analytics=="boolean"&&typeof r.errorReporting=="boolean"}function Zbr(a){if(typeof a!="object"||a===null)return!1;let r=a;return typeof r.id=="string"&&typeof r.version=="string"&&typeof r.grantedAt=="string"&&typeof r.expiresAt=="string"&&Yyt(r.consent)}function Vbr(){return{dataCollection:ufe.dataCollection.defaultValue,telemetry:ufe.telemetry.defaultValue,analytics:ufe.analytics.defaultValue,errorReporting:ufe.errorReporting.defaultValue}}function Pbr(){return{dataCollection:!0,telemetry:!0,analytics:!0,errorReporting:!0}}function Dbr(){return{dataCollection:!0,telemetry:!1,analytics:!1,errorReporting:!1}}var xDe,ufe,wDe=zt(()=>{"use strict";xDe="1.0.0",ufe={dataCollection:{title:"Data Collection",description:"Allow Compass to store conversation history and session data locally for improved functionality.",required:!0,defaultValue:!0},telemetry:{title:"Anonymous Telemetry",description:"Help improve Compass by sending anonymous usage statistics.",required:!1,defaultValue:!1},analytics:{title:"Analytics",description:"Allow collection of feature usage patterns to improve the product.",required:!1,defaultValue:!1},errorReporting:{title:"Error Reporting",description:"Automatically send error reports to help fix bugs.",required:!1,defaultValue:!0}}});var JO,LO=zt(()=>{"use strict";JO=(l=>(l.MANUAL="manual",l.AUTO="auto",l.STRICT="strict",l.SMART="smart",l))(JO||{})});var Yz,ADe,dfe,Oz=zt(()=>{"use strict";Yz=(v=>(v.DIRECT="direct",v.CLARIFICATION="clarification",v.TODO_LIST="todo_list",v.PLAN="plan",v.PLAN_ADOPT="plan_adopt",v.NO_ACTION="no_action",v.SPAWN_AGENT="spawn_agent",v))(Yz||{}),ADe=(v=>(v.PENDING="pending",v.IN_PROGRESS="in_progress",v.PAUSED="paused",v.COMPLETED="completed",v.FAILED="failed",v.SKIPPED="skipped",v.ROLLED_BACK="rolled_back",v))(ADe||{}),dfe=(D=>(D.IDLE="idle",D.CONTEXT_GATHERING="context_gathering",D.COMPLEXITY_ASSESSMENT="complexity_assessment",D.CLARIFICATION="clarification",D.PLAN_GENERATION="plan_generation",D.PLAN_REVIEW="plan_review",D.EXECUTION="execution",D.VERIFICATION="verification",D.COMPLETED="completed",D.FAILED="failed",D))(dfe||{})});var Uyt={};ZS(Uyt,{AGENT_SOURCE_PRIORITY:()=>Hz,compareAgentPriority:()=>Xyt,createDefaultAgentDefinition:()=>Jyt,getAgentSourcePriority:()=>pfe,isValidAgentFrontmatter:()=>mfe,isValidAgentPermissionMode:()=>ffe,isValidAgentSource:()=>Oyt,isValidCLIAgentConfig:()=>Hyt,parseToolsList:()=>tD,serializeToolsList:()=>Lyt});function ffe(a){return typeof a=="string"&&["default","acceptEditsAsk","bypassPermissions","plan","ignore","acceptEdits","dontAsk"].includes(a)}function Oyt(a){return typeof a=="string"&&["project","cli","user","builtin"].includes(a)}function mfe(a){if(typeof a!="object"||a===null)return!1;let r=a;return!(typeof r.name!="string"||r.name.length===0||typeof r.description!="string"||r.description.length===0||r.tools!==void 0&&typeof r.tools!="string"||r.disallowedTools!==void 0&&typeof r.disallowedTools!="string"||r.model!==void 0&&typeof r.model!="string"||r.permissionMode!==void 0&&!ffe(r.permissionMode)||r.skills!==void 0&&typeof r.skills!="string"||r.standalone!==void 0&&typeof r.standalone!="boolean"||r.mcpServers!==void 0&&typeof r.mcpServers!="string")}function Hyt(a){if(typeof a!="object"||a===null)return!1;let r=a;return!(typeof r.description!="string"||typeof r.prompt!="string"||r.tools!==void 0&&!Array.isArray(r.tools)||r.disallowedTools!==void 0&&!Array.isArray(r.disallowedTools)||r.model!==void 0&&typeof r.model!="string"||r.permissionMode!==void 0&&!ffe(r.permissionMode)||r.skills!==void 0&&!Array.isArray(r.skills)||r.standalone!==void 0&&typeof r.standalone!="boolean"||r.mcpServers!==void 0&&!Array.isArray(r.mcpServers))}function Jyt(a,r,n,o="builtin"){return{id:`${o}-${a}`,name:a,description:r,systemPrompt:n,source:o,permissionMode:"default",isActive:!0,rawFrontmatter:{name:a,description:r}}}function tD(a){if(!(!a||a.trim()===""))return a.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function Lyt(a){if(!(!a||a.length===0))return a.join(", ")}function pfe(a){return Hz.indexOf(a)}function Xyt(a,r){return pfe(a.source)-pfe(r.source)}var Hz,_fe=zt(()=>{"use strict";Hz=["builtin","user","cli","project"]});function gfe(a){return typeof a=="string"&&Qyt.includes(a)}function Qbr(a){return typeof a=="string"&&["personal","project"].includes(a)}function jbr(a){if(typeof a!="object"||a===null)return!1;let r=a;return!(r.description!==void 0&&typeof r.description!="string"||r.enabled!==void 0&&typeof r.enabled!="boolean"||r.tools!==void 0&&!Array.isArray(r.tools)||r.match!==void 0&&typeof r.match!="object"||r.timeout!==void 0&&typeof r.timeout!="number")}function SDe(a){return hfe.indexOf(a)}function Bbr(a,r){return SDe(a.source)-SDe(r.source)}var Qyt,hfe,GDe=zt(()=>{"use strict";Qyt=["PreToolUse","PostToolUse","UserPromptSubmit","Notification","Stop"],hfe=["personal","project"]});var Jz,Lz,XO,yfe,EDe,Xz,CDe,kDe,zbr,UO,TDe,qbr,NDe,FDe,RDe,WDe,ZDe,uN,VDe,PDe,$br,Kbr,evr,Uz,QO,DDe,MDe,Ife,bfe,tvr,rvr,vfe,YDe,Qz,nvr,ivr,svr,avr,ww,jO,ODe,S2,ovr,cvr,lvr,uvr,dvr,dN,DW,Vv,HDe,pvr,fvr,mvr,_vr,hvr,JDe,LDe,gvr,Up=zt(()=>{"use strict";Jz=".compass",Lz=".compass",XO="config.json",yfe="session.json",EDe="consent.json",Xz="credentials.enc",CDe="logs",kDe="backups",zbr="cache",UO="saved-sessions",TDe="index",qbr="context",NDe="temp",FDe="commands",RDe="agents",WDe="skills",ZDe="hooks",uN=16384,VDe=5e4,PDe=5e4,$br=80,Kbr=10,evr=30,Uz=7,QO=100,DDe=365,MDe=6e4,Ife=12e4,bfe=6e5,tvr=50,rvr=1048576,vfe=100,YDe=8e3,Qz=4e3,nvr=6e3,ivr=90,svr=1e5,avr=524288e3,ww="claude-sonnet-4-5-20250929",jO=.6,ODe="haiku",S2="verbose_analyst",ovr="banner",cvr=4,lvr=1e3,uvr=16e3,dvr=.1,dN={anthropic:{model:ww,maxTokens:16384,temperature:.6},project:{rootDir:process.cwd(),ignorePatterns:["node_modules/**",".git/**","dist/**","build/**","out/**","coverage/**",".next/**",".nuxt/**",".output/**","*.log",".env*","*.lock","package-lock.json","yarn.lock","pnpm-lock.yaml",".DS_Store","Thumbs.db","*.min.js","*.min.css","*.map",".compass/**"],includePatterns:["**/*"],maxFileSize:1048576,indexOnStartup:!0},safety:{requireApproval:!0,autoApprovePatterns:[],blockedPatterns:[".env*","*.key","*.pem","*.p12","*.pfx","secrets/**","**/secrets/**","**/*.secret","**/credentials*","**/password*"],maxFilesPerOperation:50,backupBeforeModify:!0,shellCommandTimeout:12e4,allowedShellCommands:["npm","npx","yarn","pnpm","git","node","tsc","eslint","prettier","jest","vitest","mocha","cargo","rustc","go","python","python3","pip","pip3","poetry","make","cmake","gradle","mvn","docker","kubectl","terraform","aws","gcloud","az","cat","ls","pwd","echo","head","tail","grep","find","wc","sort","uniq","diff","tree"],blockedShellCommands:["rm -rf /","rm -rf /*","rm -rf ~","rm -rf ~/*","sudo rm -rf",":(){:|:&};:","mkfs","dd if=/dev/zero","dd if=/dev/random","> /dev/sda","chmod -R 777 /","chown -R","wget | sh","curl | sh","wget | bash","curl | bash"]},ui:{theme:"auto",showTokenUsage:!0,showTimestamps:!1,compactMode:!1,animationsEnabled:!0,colorOutput:!0},session:{autoSave:!0,autoSaveInterval:6e4,maxHistoryLength:100,autoCompactThreshold:5e4,sessionExpiryDays:30},update:{checkOnStartup:!0,checkInterval:4,showNotifications:!0,notificationStyle:ovr,includePrerelease:!1},agentic:{maxIterations:200,costWarningThreshold:5,costHardCap:0,autoCompactAtPercent:80,stuckDetectionEnabled:!0,stuckDetectionThreshold:3,maxIterationsPerTask:50}},DW=["anthropic","ollama","zai","minimax"],Vv={API_KEY:"ANTHROPIC_API_KEY",COMPASS_API_KEY:"COMPASS_API_KEY",OLLAMA_API_KEY:"OLLAMA_API_KEY",ZAI_API_KEY:"ZAI_API_KEY",MINIMAX_API_KEY:"MINIMAX_API_KEY",MODEL:"COMPASS_MODEL",CONFIG_PATH:"COMPASS_CONFIG",DEBUG:"COMPASS_DEBUG",NO_COLOR:"NO_COLOR",FORCE_COLOR:"FORCE_COLOR",HOME:"HOME",USERPROFILE:"USERPROFILE"},HDe={anthropic:Vv.API_KEY,ollama:Vv.OLLAMA_API_KEY,zai:Vv.ZAI_API_KEY,minimax:Vv.MINIMAX_API_KEY},pvr="1.0.48",fvr="Compass CLI",mvr="Agentic CLI by Compass Agentic Platform",_vr="1.0.0",hvr={".ts":"typescript",".tsx":"typescript",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".rb":"ruby",".go":"go",".rs":"rust",".java":"java",".kt":"kotlin",".scala":"scala",".cs":"csharp",".fs":"fsharp",".cpp":"cpp",".cc":"cpp",".cxx":"cpp",".c":"c",".h":"c",".hpp":"cpp",".swift":"swift",".php":"php",".pl":"perl",".pm":"perl",".sh":"bash",".bash":"bash",".zsh":"zsh",".fish":"fish",".ps1":"powershell",".sql":"sql",".r":"r",".R":"r",".lua":"lua",".vim":"vim",".el":"elisp",".clj":"clojure",".cljs":"clojure",".ex":"elixir",".exs":"elixir",".erl":"erlang",".hrl":"erlang",".hs":"haskell",".ml":"ocaml",".mli":"ocaml",".nim":"nim",".zig":"zig",".v":"v",".d":"d",".dart":"dart",".groovy":"groovy",".gradle":"groovy",".json":"json",".yaml":"yaml",".yml":"yaml",".toml":"toml",".xml":"xml",".html":"html",".htm":"html",".css":"css",".scss":"scss",".sass":"sass",".less":"less",".md":"markdown",".mdx":"markdown",".rst":"restructuredtext",".tex":"latex",".dockerfile":"dockerfile",".tf":"terraform",".hcl":"hcl",".proto":"protobuf",".graphql":"graphql",".gql":"graphql",".vue":"vue",".svelte":"svelte",".astro":"astro"},JDe=["package-lock.json","yarn.lock","pnpm-lock.yaml","composer.lock","Gemfile.lock","poetry.lock","Cargo.lock","go.sum","*.map","*.js.map","*.css.map","*.min.js","*.min.css","*.bundle.js","*.chunk.js","*.sql","*.csv","**/__snapshots__/**","**/fixtures/**/*.json","*.d.ts.map"],LDe=["node_modules",".git","dist","build","out","coverage",".next",".nuxt",".output",".cache",".parcel-cache","vendor","__pycache__",".pytest_cache","target","bin","obj"],gvr=[".png",".jpg",".jpeg",".gif",".bmp",".ico",".webp",".svg",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".zip",".tar",".gz",".rar",".7z",".exe",".dll",".so",".dylib",".bin",".dat",".db",".sqlite",".sqlite3",".woff",".woff2",".ttf",".otf",".eot",".mp3",".mp4",".wav",".avi",".mov",".mkv",".webm",".flv",".class",".jar",".war",".ear",".pyc",".pyo",".o",".obj",".a",".lib"]});var XDe={};ZS(XDe,{CLAUDE_MODELS:()=>Aw,MODEL_ALIASES:()=>jz,calculateModelCost:()=>Kyt,compareModels:()=>eIt,getAvailableAliases:()=>Byt,getAvailableModelIds:()=>jyt,getAvailableModels:()=>BO,getCheapestModel:()=>rIt,getDefaultModel:()=>qyt,getDefaultModelId:()=>$yt,getModelConfig:()=>dI,getModelDescription:()=>xfe,getModelTier:()=>iIt,getModelsByCapability:()=>tIt,getMostCapableModel:()=>nIt,isValidModel:()=>zyt,resolveModelId:()=>pI});function pI(a){let r=a.toLowerCase();if(jz[r])return jz[r];for(let n of Object.keys(Aw))if(n.toLowerCase()===r)return n;return a}function dI(a){let r=pI(a);return Aw[r]}function BO(){return Object.values(Aw)}function jyt(){return Object.keys(Aw)}function Byt(){return Object.keys(jz)}function zyt(a){return pI(a)in Aw}function qyt(){return Aw["claude-sonnet-4-5-20250929"]}function $yt(){return"claude-sonnet-4-5-20250929"}function Kyt(a,r,n){let o=dI(a);if(!o)return null;let l=r/1e6*o.pricing.inputPricePerMillion,f=n/1e6*o.pricing.outputPricePerMillion;return l+f}function eIt(a,r,n){let o=dI(a),l=dI(r);if(!o||!l)return 0;switch(n){case"price":return o.pricing.inputPricePerMillion-l.pricing.inputPricePerMillion;case"context":return l.contextWindow-o.contextWindow;case"speed":return l.pricing.inputPricePerMillion-o.pricing.inputPricePerMillion;default:return 0}}function tIt(a){return BO().filter(r=>r.capabilities[a])}function rIt(){return BO().reduce((r,n)=>n.pricing.inputPricePerMillion<r.pricing.inputPricePerMillion?n:r)}function nIt(){return Aw["claude-opus-4-6"]}function iIt(a){let r=pI(a);if(r.includes("haiku"))return"economy";if(r.includes("sonnet"))return"balanced";if(r.includes("opus"))return"premium"}function xfe(a){let r=pI(a);if(r.includes("opus"))return"Most capable model - best for complex reasoning, analysis, and extended thinking";if(r.includes("sonnet"))return"Balanced performance and cost - ideal for most coding tasks";if(r.includes("haiku"))return"Fastest and most economical - great for quick responses and simple tasks";if(r.includes("glm-4.7"))return"OpenSource"}var Aw,jz,MW=zt(()=>{"use strict";Aw={"glm-4.7:cloud":{id:"glm-4.7:cloud",name:"Z.AI GLM 4.7",provider:"ollama",baseUrl:"https://ollama.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:3,outputPricePerMillion:15},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!0}},"minimax-m2.1:cloud":{id:"minimax-m2.1:cloud",name:"MiniMax M2.1",provider:"ollama",baseUrl:"https://ollama.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:3,outputPricePerMillion:15},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!1}},"kimi-k2.5:cloud":{id:"kimi-k2.5:cloud",name:"Kimi K2.5",provider:"ollama",baseUrl:"https://ollama.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:3,outputPricePerMillion:15},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!1}},"gemini-3-pro-preview":{id:"gemini-3-pro-preview",name:"Gemini 3 Pro",provider:"ollama",baseUrl:"https://ollama.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:3,outputPricePerMillion:15},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!0}},"claude-sonnet-4-5-20250929":{id:"claude-sonnet-4-5-20250929",name:"Claude Sonnet 4.5",provider:"anthropic",baseUrl:"https://api.anthropic.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:3,outputPricePerMillion:15},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!0}},"claude-opus-4-6":{id:"claude-opus-4-6",name:"Claude Opus 4.6",provider:"anthropic",baseUrl:"https://api.anthropic.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:15,outputPricePerMillion:75},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!0,complexityClassification:!0}},"claude-opus-4-5-20251101":{id:"claude-opus-4-5-20251101",name:"Claude Opus 4.5",provider:"anthropic",baseUrl:"https://api.anthropic.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:15,outputPricePerMillion:75},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!0,complexityClassification:!0}},"claude-haiku-4-5-20251001":{id:"claude-haiku-4-5-20251001",name:"Claude Haiku 4.5",provider:"anthropic",baseUrl:"https://api.anthropic.com",contextWindow:2e5,maxOutputTokens:8192,pricing:{inputPricePerMillion:.25,outputPricePerMillion:1.25},capabilities:{vision:!0,toolUse:!0,streaming:!0,extendedThinking:!1,complexityClassification:!0}}},jz={sonnet:"claude-sonnet-4-5-20250929",opus:"claude-opus-4-6","opus-4.6":"claude-opus-4-6",opus46:"claude-opus-4-6","opus-4.5":"claude-opus-4-5-20251101",opus45:"claude-opus-4-5-20251101",haiku:"claude-haiku-4-5-20251001","glm-4.7":"glm-4.7:cloud","minimax-m2.1":"minimax-m2.1:cloud","kimi-k2.5":"kimi-k2.5:cloud","gemini-3-pro":"gemini-3-pro-preview",fast:"claude-haiku-4-5-20251001",quick:"claude-haiku-4-5-20251001",smart:"claude-sonnet-4-5-20250929",balanced:"claude-sonnet-4-5-20250929",powerful:"claude-opus-4-6",best:"claude-opus-4-6",robust:"glm-4.7:cloud",deep:"kimi-k2.5:cloud",versatile:"minimax-m2.1:cloud",creative:"gemini-3-pro-preview",s:"claude-sonnet-4-5-20250929",o:"claude-opus-4-6",h:"claude-haiku-4-5-20251001",g:"glm-4.7:cloud",m:"minimax-m2.1:cloud",k:"kimi-k2.5:cloud",p:"gemini-3-pro-preview"}});function yvr(){let a=new Map;for(let r of zO){let n=a.get(r.category)||[];n.push(r),a.set(r.category,n)}return a}var Bz,UDe,QDe,zO,jDe=zt(()=>{"use strict";Bz={network:{label:"Network Tools",priority:1},media:{label:"Media Tools",priority:2},development:{label:"Development Tools",priority:3},compression:{label:"Compression Tools",priority:4},text:{label:"Text Processing Tools",priority:5},file:{label:"File Tools",priority:6},system:{label:"System Tools",priority:7}},UDe=36e5,QDe=3e3,zO=[{command:"curl",name:"cURL",category:"network",description:"Transfer data with URLs",decisionRule:"Use for downloading files, making HTTP requests, testing APIs",useCases:["curl -O https://example.com/file.zip",'curl -X POST -d "data" https://api.example.com',"curl -I https://example.com (headers only)"]},{command:"wget",name:"wget",category:"network",description:"Non-interactive network downloader",decisionRule:"Use for downloading files, especially recursive downloads",useCases:["wget https://example.com/file.zip","wget -r https://example.com/docs/","wget -c https://example.com/large.zip (resume)"]},{command:"ssh",name:"SSH",category:"network",description:"Secure shell remote login",decisionRule:"Use for remote server access and secure connections",useCases:["ssh user@host","ssh -L 8080:localhost:80 user@host (tunnel)"]},{command:"ping",name:"Ping",category:"network",description:"Test network connectivity",decisionRule:"Use to check if a host is reachable",useCases:["ping example.com","ping -c 4 example.com (4 packets)"]},{command:"nslookup",name:"nslookup",category:"network",description:"Query DNS records",decisionRule:"Use for DNS lookups and troubleshooting",useCases:["nslookup example.com","nslookup -type=MX example.com"]},{command:"dig",name:"dig",category:"network",description:"DNS lookup utility",decisionRule:"Use for detailed DNS queries",useCases:["dig example.com","dig +short example.com","dig example.com MX"]},{command:"netstat",name:"netstat",category:"network",description:"Network statistics",decisionRule:"Use to view network connections and listening ports",useCases:["netstat -an (all connections)","netstat -tlnp (listening TCP ports)"]},{command:"ffmpeg",name:"FFmpeg",category:"media",description:"Audio/video conversion and processing",decisionRule:"Use for any audio/video conversion, extraction, or manipulation",useCases:["ffmpeg -i input.mp4 output.mp3 (extract audio)","ffmpeg -i input.mp4 -vn -acodec copy output.aac","ffmpeg -i input.mp4 -ss 00:01:00 -t 30 clip.mp4 (trim)"]},{command:"convert",name:"ImageMagick",category:"media",description:"Image conversion and manipulation",decisionRule:"Use for image format conversion, resizing, effects",useCases:["convert input.png output.jpg","convert input.png -resize 50% output.png","convert *.png output.pdf (combine to PDF)"]},{command:"yt-dlp",name:"yt-dlp",category:"media",description:"Video/audio downloader",decisionRule:"Use for downloading videos from YouTube and other sites",useCases:["yt-dlp https://youtube.com/watch?v=...","yt-dlp -x --audio-format mp3 URL (audio only)"]},{command:"git",name:"Git",category:"development",description:"Version control system",decisionRule:"Use for all version control operations",useCases:["git status","git diff","git log --oneline -10"]},{command:"node",name:"Node.js",category:"development",description:"JavaScript runtime",decisionRule:"Use for running JavaScript files or REPL",useCases:["node script.js",'node -e "console.log(1+1)"']},{command:"npm",name:"npm",category:"development",description:"Node.js package manager",decisionRule:"Use for JavaScript package management",useCases:["npm install package","npm run script","npm init -y"]},{command:"python",name:"Python",category:"development",description:"Python interpreter",decisionRule:"Use for running Python scripts or quick computations",useCases:["python script.py",'python -c "print(2**10)"']},{command:"pip",name:"pip",category:"development",description:"Python package manager",decisionRule:"Use for Python package installation",useCases:["pip install package","pip list","pip freeze > requirements.txt"]},{command:"docker",name:"Docker",category:"development",description:"Container platform",decisionRule:"Use for container operations",useCases:["docker ps","docker run -it ubuntu bash","docker build -t myapp ."]},{command:"code",name:"VS Code",category:"development",description:"Visual Studio Code editor",decisionRule:"Use to open files/folders in VS Code",useCases:["code .","code file.js"]},{command:"jq",name:"jq",category:"development",description:"JSON processor",decisionRule:"Use for parsing, filtering, and transforming JSON",useCases:["cat data.json | jq '.field'","jq '.items[] | .name' data.json","curl api.example.com | jq '.'"]},{command:"7z",name:"7-Zip",category:"compression",description:"High compression archiver",decisionRule:"Use for creating/extracting archives, especially 7z format",useCases:["7z x archive.7z","7z a archive.7z folder/"]},{command:"tar",name:"tar",category:"compression",description:"Archive utility",decisionRule:"Use for tar archives, common on Unix systems",useCases:["tar -xzf archive.tar.gz","tar -czf archive.tar.gz folder/","tar -tvf archive.tar (list contents)"]},{command:"zip",name:"zip",category:"compression",description:"Compress files into ZIP format",decisionRule:"Use for creating ZIP archives",useCases:["zip archive.zip file1 file2","zip -r archive.zip folder/"]},{command:"unzip",name:"unzip",category:"compression",description:"Extract ZIP archives",decisionRule:"Use for extracting ZIP files",useCases:["unzip archive.zip","unzip -l archive.zip (list contents)","unzip archive.zip -d destination/"]},{command:"gzip",name:"gzip",category:"compression",description:"GNU compression utility",decisionRule:"Use for gzip compression/decompression",useCases:["gzip file","gzip -d file.gz","gzip -k file (keep original)"]},{command:"grep",name:"grep",category:"text",description:"Search text patterns",decisionRule:"Use for searching patterns in files",useCases:['grep "pattern" file','grep -r "pattern" folder/','grep -i "pattern" file (case insensitive)']},{command:"sed",name:"sed",category:"text",description:"Stream editor",decisionRule:"Use for text transformations and substitutions",useCases:["sed 's/old/new/g' file","sed -i 's/old/new/g' file (in-place)"]},{command:"awk",name:"awk",category:"text",description:"Pattern scanning and processing",decisionRule:"Use for column-based text processing",useCases:["awk '{print $1}' file","awk -F: '{print $1}' /etc/passwd"]},{command:"find",name:"find",category:"file",description:"Search for files",decisionRule:"Use for finding files by name, type, date, etc.",useCases:['find . -name "*.js"',"find . -type f -mtime -7 (modified last 7 days)"]},{command:"rsync",name:"rsync",category:"file",description:"Fast file synchronization",decisionRule:"Use for copying/syncing files with progress and resume",useCases:["rsync -av source/ dest/","rsync -avz source/ user@host:dest/"]},{command:"pandoc",name:"Pandoc",category:"system",description:"Universal document converter",decisionRule:"Use for converting between document formats",useCases:["pandoc input.md -o output.pdf","pandoc input.docx -o output.html"]},{command:"htop",name:"htop",category:"system",description:"Interactive process viewer",decisionRule:"Use for monitoring system resources",useCases:["htop"]},{command:"btop",name:"btop",category:"system",description:"Resource monitor",decisionRule:"Use for monitoring system resources with better UI",useCases:["btop"]},{command:"lsof",name:"lsof",category:"system",description:"List open files",decisionRule:"Use to find which process is using a file or port",useCases:["lsof -i :8080 (what is using port 8080)","lsof /path/to/file"]}]});var rD=zt(()=>{"use strict";MW();Up();jDe()});var cIt=ft((ron,BDe)=>{"use strict";var sIt=Us("path"),aIt=Us("module"),Ivr=Us("fs"),oIt=(a,r,n)=>{if(typeof a!="string")throw new TypeError(`Expected \`fromDir\` to be of type \`string\`, got \`${typeof a}\``);if(typeof r!="string")throw new TypeError(`Expected \`moduleId\` to be of type \`string\`, got \`${typeof r}\``);try{a=Ivr.realpathSync(a)}catch(f){if(f.code==="ENOENT")a=sIt.resolve(a);else{if(n)return null;throw f}}let o=sIt.join(a,"noop.js"),l=()=>aIt._resolveFilename(r,{id:o,filename:o,paths:aIt._nodeModulePaths(a)});if(n)try{return l()}catch{return null}return l()};BDe.exports=(a,r)=>oIt(a,r);BDe.exports.silent=(a,r)=>oIt(a,r,!0)});var uIt=ft((non,zDe)=>{"use strict";var lIt=()=>{let a=Error.prepareStackTrace;Error.prepareStackTrace=(n,o)=>o;let r=new Error().stack.slice(1);return Error.prepareStackTrace=a,r};zDe.exports=lIt;zDe.exports.default=lIt});var pIt=ft((ion,dIt)=>{"use strict";var bvr=uIt();dIt.exports=a=>{let r=bvr();if(!a)return r[2].getFileName();let n=!1;r.shift();for(let o of r){let l=o.getFileName();if(typeof l=="string"){if(l===a){n=!0;continue}if(l!=="module.js"&&n&&l!==a)return l}}}});var mIt=ft((son,fIt)=>{"use strict";var vvr=Us("path"),xvr=cIt(),wvr=pIt();fIt.exports=a=>{if(typeof a!="string")throw new TypeError("Expected a string");let r=wvr(__filename),n=r?vvr.dirname(r):__dirname,o=xvr(n,a),l=Us.cache[o];if(l&&l.parent){let h=l.parent.children.length;for(;h--;)l.parent.children[h].id===o&&l.parent.children.splice(h,1)}delete Us.cache[o];let f=Us.cache[r];return f===void 0||f.require===void 0?Us(o):f.require(o)}});var hIt=ft((oon,_It)=>{"use strict";_It.exports=function(r){return r?r instanceof Array||Array.isArray(r)||r.length>=0&&r.splice instanceof Function:!1}});var yIt=ft((con,gIt)=>{"use strict";var Avr=Us("util"),Svr=hIt(),qDe=function(r,n){(!r||r.constructor!==String)&&(n=r||{},r=Error.name);var o=function l(f){if(!this)return new l(f);f=f instanceof Error?f.message:f||this.message,Error.call(this,f),Error.captureStackTrace(this,o),this.name=r,Object.defineProperty(this,"message",{configurable:!0,enumerable:!1,get:function(){var D=f.split(/\r?\n/g);for(var L in n)if(n.hasOwnProperty(L)){var M=n[L];"message"in M&&(D=M.message(this[L],D)||D,Svr(D)||(D=[D]))}return D.join(`
2
2
  `)},set:function(D){f=D}});var h=null,v=Object.getOwnPropertyDescriptor(this,"stack"),E=v.get,R=v.value;delete v.value,delete v.writable,v.set=function(D){h=D},v.get=function(){var D=(h||(E?E.call(this):R)).split(/\r?\n+/g);h||(D[0]=this.name+": "+this.message);var L=1;for(var M in n)if(n.hasOwnProperty(M)){var re=n[M];if("line"in re){var _e=re.line(this[M]);_e&&D.splice(L++,0," "+_e)}"stack"in re&&re.stack(this[M],D)}return D.join(`
3
3
  `)},Object.defineProperty(this,"stack",v)};return Object.setPrototypeOf?(Object.setPrototypeOf(o.prototype,Error.prototype),Object.setPrototypeOf(o,Error)):Avr.inherits(o,Error),o};qDe.append=function(a,r){return{message:function(n,o){return n=n||r,n&&(o[0]+=" "+a.replace("%s",n.toString())),o}}};qDe.line=function(a,r){return{line:function(n){return n=n||r,n?a.replace("%s",n.toString()):null}}};gIt.exports=qDe});var vIt=ft((lon,bIt)=>{"use strict";var Gvr=a=>{let r=a.charCodeAt(0).toString(16).toUpperCase();return"0x"+(r.length%2?"0":"")+r},Evr=(a,r,n)=>{if(!r)return{message:a.message+" while parsing empty string",position:0};let o=a.message.match(/^Unexpected token (.) .*position\s+(\d+)/i),l=o?+o[2]:a.message.match(/^Unexpected end of JSON.*/i)?r.length-1:null,f=o?a.message.replace(/^Unexpected token ./,`Unexpected token ${JSON.stringify(o[1])} (${Gvr(o[1])})`):a.message;if(l!=null){let h=l<=n?0:l-n,v=l+n>=r.length?r.length:l+n,E=(h===0?"":"...")+r.slice(h,v)+(v===r.length?"":"...");return{message:f+` while parsing ${r===E?"":"near "}${JSON.stringify(E)}`,position:l}}else return{message:f+` while parsing '${r.slice(0,n*2)}'`,position:0}},wfe=class extends SyntaxError{constructor(r,n,o,l){o=o||20;let f=Evr(r,n,o);super(f.message),Object.assign(this,f),this.code="EJSONPARSE",this.systemError=r,Error.captureStackTrace(this,l||this.constructor)}get name(){return this.constructor.name}set name(r){}get[Symbol.toStringTag](){return this.constructor.name}},Cvr=Symbol.for("indent"),kvr=Symbol.for("newline"),Tvr=/^\s*[{\[]((?:\r?\n)+)([\s\t]*)/,Nvr=/^(?:\{\}|\[\])((?:\r?\n)+)?$/,Afe=(a,r,n)=>{let o=IIt(a);n=n||20;try{let[,l=`
4
4
  `,f=" "]=o.match(Nvr)||o.match(Tvr)||[,"",""],h=JSON.parse(o,r);return h&&typeof h=="object"&&(h[kvr]=l,h[Cvr]=f),h}catch(l){if(typeof a!="string"&&!Buffer.isBuffer(a)){let f=Array.isArray(a)&&a.length===0;throw Object.assign(new TypeError(`Cannot parse ${f?"an empty array":String(a)}`),{code:"EJSONPARSE",systemError:l})}throw new wfe(l,o,n,Afe)}},IIt=a=>String(a).replace(/^\uFEFF/,"");bIt.exports=Afe;Afe.JSONParseError=wfe;Afe.noExceptions=(a,r)=>{try{return JSON.parse(IIt(a),r)}catch{}}});var AIt=ft(zz=>{"use strict";zz.__esModule=!0;zz.LinesAndColumns=void 0;var Sfe=`
@@ -3505,7 +3505,7 @@ ${r}`),o.push({role:"user",content:v}),o}estimateTaskTokens(r,n,o){let l=jp(r);f
3505
3505
  `)}MS();var bje=[{name:"Sessions",description:"Commands for managing your conversation session",commands:[{name:"/clear",description:"Clear conversation history",usage:"/clear"},{name:"/compact",description:"Summarize conversation to reduce token usage",usage:"/compact"},{name:"/export",description:"Export conversation to file",usage:"/export [format]",examples:["/export md","/export json","/export html"],hidden:!0},{name:"/reset",description:"Reset session to clean state",usage:"/reset"},{name:"/exit",description:"Exit Compass",usage:"/exit",aliases:["/quit","/q"]}]},{name:"Model & Tokens",description:"Commands for model selection and token tracking",commands:[{name:"/model",description:"Switch between models",usage:"/model [name]",examples:["/model","/model sonnet","/model opus","/model haiku"]},{name:"/tokens",description:"Display token usage statistics",usage:"/tokens"},{name:"/context",description:"Show context window usage",usage:"/context"}]},{name:"File Operations",description:"Commands for file management and indexing",commands:[{name:"/files",description:"List indexed project files",usage:"/files [pattern]",examples:["/files","/files *.ts","/files src/"]},{name:"/index",description:"Reindex project files",usage:"/index"},{name:"/undo",description:"Undo last file operation",usage:"/undo"}]},{name:"Approval & Safety",description:"Commands for approval mode management",commands:[{name:"/approve",description:"Toggle approval mode",usage:"/approve [mode]",examples:["/approve","/approve auto","/approve manual"]}]},{name:"Help & Config",description:"Commands for help and configuration",commands:[{name:"/help",description:"Show this help menu",usage:"/help [topic]",examples:["/help","/help model","/help files"]},{name:"/config",description:"Display current configuration",usage:"/config"}]},{name:"Updates",description:"Commands for checking and installing updates",commands:[{name:"/update",description:"Check for and install updates",usage:"/update [check|install|history|version]",examples:["/update","/update check","/update install","/update history"],aliases:["/upgrade","/up"]}]}],San=[{name:"Setup & Configuration",description:"Commands for initial setup and configuration",commands:[{name:"setup",description:"Run first-time setup wizard",usage:"compass setup"},{name:"init",description:"Initialize Compass in current project",usage:"compass init"},{name:"config",description:"View or modify configuration",usage:"compass config [key] [value]",examples:["compass config","compass config model sonnet"]}]},{name:"Data Management",description:"Commands for managing stored data",commands:[{name:"tokens",description:"View token usage history",usage:"compass tokens [--export]"},{name:"consent",description:"Manage consent settings",usage:"compass consent [status|review|revoke]"},{name:"data",description:"Manage stored data",usage:"compass data [list|export|delete]"},{name:"cache",description:"Clear cached data",usage:"compass cache clear"},{name:"reset",description:"Reset to factory settings",usage:"compass reset [--force]"}]},{name:"Updates",description:"Commands for checking and installing updates",commands:[{name:"update",description:"Check for and install updates",usage:"compass update [check|install|history]",examples:["compass update","compass update check","compass update install","compass update history"]}]}];function gHt(a){let r=a.commands.filter(o=>!o.hidden);if(r.length===0)return"";let n=["",Ln.bold.cyan(`\u2501\u2501\u2501 ${a.name} \u2501\u2501\u2501`),Ln.gray(a.description),""];for(let o of r){if(n.push(` ${Ln.yellow(o.name)}`),n.push(` ${Ln.white(o.description)}`),o.usage&&n.push(` ${Ln.gray("Usage:")} ${Ln.dim(o.usage)}`),o.aliases&&o.aliases.length>0&&n.push(` ${Ln.gray("Aliases:")} ${Ln.dim(o.aliases.join(", "))}`),o.examples&&o.examples.length>0){n.push(` ${Ln.gray("Examples:")}`);for(let l of o.examples)n.push(` ${Ln.dim(l)}`)}n.push("")}return n.join(`
3506
3506
  `)}function Gan(){try{let{getCustomCommands:a}=(hHt(),Gbr(_Ht)),r=a();return!r||r.length===0?null:{name:"Custom Commands",description:"User-defined commands from .compass/commands/ or ~/.compass/commands/",commands:r.map(o=>{let l=o.namespace?`${o.scope}:${o.namespace}`:o.scope;return{name:`/${o.name}`,description:`${o.description} (${l})`,usage:o.frontmatter["argument-hint"]?`/${o.name} ${o.frontmatter["argument-hint"]}`:`/${o.name}`}})}}catch{return null}}function Ean(){let a=[...bje],r=Gan();r&&a.push(r);let n=a.map(gHt);return["",Ln.bold.white("Compass CLI - Interactive Commands"),Ln.gray("Use these commands during an interactive session"),...n,Ln.dim("\u2500".repeat(50)),Ln.gray("Tip: Type any natural language request to interact with Compass"),""].join(`
3507
3507
  `)}function Can(a){let r=a.startsWith("/")?a:`/${a}`,o=bje.flatMap(f=>f.commands).find(f=>f.name===r||f.name===a||f.aliases?.includes(a)||f.aliases?.includes(r));if(!o)return null;let l=["",Ln.bold.cyan(o.name),Ln.white(o.description),""];if(o.usage&&(l.push(Ln.gray("Usage:")),l.push(` ${o.usage}`),l.push("")),o.aliases&&o.aliases.length>0&&(l.push(Ln.gray("Aliases:")),l.push(` ${o.aliases.join(", ")}`),l.push("")),o.examples&&o.examples.length>0){l.push(Ln.gray("Examples:"));for(let f of o.examples)l.push(` ${Ln.dim("$")} ${f}`);l.push("")}return l.join(`
3508
- `)}KD();var EMn="1.0.47",CMn="compass-cli",kMn="AI-powered development assistance using Anthropic's Claude models";export{Hz as AGENT_SOURCE_PRIORITY,kMn as APP_DESCRIPTION,fvr as APP_DISPLAY_NAME,CMn as APP_NAME,mvr as APP_TAGLINE,pvr as APP_VERSION,pHt as ASCII_BANNER,PDe as AUTO_COMPACT_TRIGGER,MDe as AUTO_SAVE_INTERVAL_MS,IK as ActionLogger,VZt as ActionStatus,Uv as ActionType,i_e as AnthropicClient,Ame as ApprovalManager,JO as ApprovalMode,kDe as BACKUPS_DIR,Uz as BACKUP_RETENTION_DAYS,gvr as BINARY_EXTENSIONS,Gme as BackupManager,zbr as CACHE_DIR,Bz as CATEGORY_INFO,Aw as CLAUDE_MODELS,San as CLI_COMMANDS,gan as COMPASS_ICON,XO as CONFIG_FILE_NAME,DDe as CONSENT_EXPIRY_DAYS,EDe as CONSENT_FILE_NAME,_vr as CONSENT_VERSION,qbr as CONTEXT_DIR,ivr as CONTEXT_WINDOW_SAFETY_MARGIN,$br as CONTEXT_WINDOW_WARNING_PERCENT,Xz as CREDENTIALS_FILE_NAME,ZK as ComplexityClassifier,lme as ConfigManager,_me as ConsentManager,Ime as CredentialStore,dN as DEFAULT_CONFIG,Kbr as DEFAULT_COST_WARNING_THRESHOLD,uN as DEFAULT_MAX_TOKENS,ww as DEFAULT_MODEL,S2 as DEFAULT_PERSONALITY_MODE,Lbr as DEFAULT_RATING_CONFIG,jO as DEFAULT_TEMPERATURE,Mbr as DEFAULT_UPDATE_CONFIG,Vv as ENV_VARS,kK as EnhancedContextGatherer,fme as EventEmitter,Yz as ExecutionMode,QVt as ExecutionStrategy,Jz as GLOBAL_COMPASS_DIR,F$ as GitService,Qyt as HOOK_EVENTS,hfe as HOOK_SOURCE_PRIORITY,g1e as HistoryManager,TDe as INDEX_DIR,Lee as InteractiveClarifier,XVt as IssueCategory,LVt as IssueSeverity,hvr as LANGUAGE_EXTENSIONS,CDe as LOGS_DIR,YK as LogInterpreter,QO as MAX_BACKUP_FILES,avr as MAX_CACHE_SIZE_BYTES,Qz as MAX_COMMAND_OUTPUT_TOKENS,tvr as MAX_FILES_PER_OPERATION,YDe as MAX_FILE_READ_TOKENS,rvr as MAX_FILE_SIZE_BYTES,vfe as MAX_HISTORY_LENGTH,svr as MAX_INDEXED_FILES,cvr as MAX_RETRY_ATTEMPTS,nvr as MAX_SEARCH_RESULT_TOKENS,jz as MODEL_ALIASES,Lz as PROJECT_COMPASS_DIR,DW as PROVIDERS,HDe as PROVIDER_ENV_VARS,Xee as PlanGenerator,lvr as RETRY_BASE_DELAY_MS,dvr as RETRY_JITTER_FACTOR,uvr as RETRY_MAX_DELAY_MS,UO as SAVED_SESSIONS_DIR,evr as SESSION_EXPIRY_DAYS,yfe as SESSION_FILE_NAME,bfe as SHELL_COMMAND_MAX_TIMEOUT_MS,Ife as SHELL_COMMAND_TIMEOUT_MS,bje as SLASH_COMMANDS,zO as SYSTEM_UTILITIES,bme as SessionManager,Tge as ShellExecutor,FZt as StepStatus,yK as StepTracker,RZt as StepType,NDe as TEMP_DIR,VDe as TOKEN_WARNING_THRESHOLD,LDe as TOOL_READ_BLOCKLIST_DIRS,JDe as TOOL_READ_BLOCKLIST_PATTERNS,ADe as TaskExecutionStatus,WZt as TaskStatus,wme as TokenTracker,wK as ToolRegistry,UDe as UTILITY_DETECTION_CACHE_TTL,QDe as UTILITY_DETECTION_TIMEOUT,EMn as VERSION,Uee as Verifier,vJe as WORKFLOW_PROMPTS,OK as WorkflowManager,Qee as WorkflowOrchestrator,dfe as WorkflowPhase,UVt as WorkflowState,man as applyCompletion,_4r as applyPatch,f4r as areIdentical,j9r as calculateContextUsagePercent,Kyt as calculateModelCost,X9r as calculateRemainingTokens,TGr as colorByStatus,u4r as colorizeDiff,Xyt as compareAgentPriority,Bbr as compareHookPriority,eIt as compareModels,hN as copy,sMr as createActionLogger,h6r as createComplexityClassifier,Jyt as createDefaultAgentDefinition,Vbr as createDefaultConsent,Xbr as createDefaultRatingState,ZMr as createEnhancedContextGatherer,Pbr as createFullConsent,wRr as createGitService,Xsn as createInteractiveClarifier,z6r as createLogInterpreter,Dbr as createMinimalConsent,Qsn as createPlanGenerator,iMr as createStepTracker,_Mr as createToolRegistry,Bsn as createVerifier,$6r as createWorkflowManager,qsn as createWorkflowOrchestrator,oMe as decrypt,aMe as encrypt,Pl as ensureDir,J9r as estimateConversationTokens,L9r as estimateSystemPromptTokens,jp as estimateTokens,tan as executeSlashCommand,mje as extractCodeBlocks,fje as extractMentions,Can as formatCommandHelp,AGr as formatCost,bGr as formatDate,vGr as formatDuration,wGr as formatFileSize,Ean as formatFullHelp,gHt as formatHelpCategory,kGr as formatList,Dxt as formatPercent,CGr as formatProgressBar,xGr as formatRelativeTime,un as formatTimestamp,SGr as formatTokenCount,Q9r as formatTokenDisplay,jD as generateDiff,d4r as generateDiffSummary,DGr as generateSecureRandom,p4r as generateWordDiff,RZ as getActionLogger,pfe as getAgentSourcePriority,uy as getAnthropicClient,oh as getApprovalManager,Byt as getAvailableAliases,jyt as getAvailableModelIds,BO as getAvailableModels,nZ as getBackupManager,Mwr as getBasename,m4r as getChangedLineCount,rIt as getCheapestModel,L8 as getCodebaseIndexer,aan as getCompletions,VK as getComplexityClassifier,xH as getConfigManager,rMe as getConsentManager,LN as getContextBuilder,B9r as getContextUsageColor,nMr as getConversationCompactor,Ov as getCredentialStore,qyt as getDefaultModel,$yt as getDefaultModelId,TK as getEnhancedContextGatherer,Ga as getEventEmitter,Dwr as getExtension,ON as getFileService,kl as getGlobalCompassDir,ran as getHistoryManager,SDe as getHookSourcePriority,uje as getInteractiveClarifier,y7e as getLogInterpreter,dI as getModelConfig,xfe as getModelDescription,iIt as getModelTier,tIt as getModelsByCapability,nIt as getMostCapableModel,d1e as getPlanGenerator,Qp as getProjectCompassDir,Vwr as getRelativePath,k_ as getSessionManager,py as getShellExecutor,yje as getSlashCommandRegistry,FZ as getStepTracker,Nge as getSystemUtilitiesPromptSection,GWt as getSystemUtilityDetector,han as getTaskProcessor,rZ as getTokenTracker,zw as getToolRegistry,yvr as getUtilitiesByCategory,pje as getVerifier,q6r as getWorkflowManager,zsn as getWorkflowOrchestrator,cMe as hash,MGr as hmac,Bw as interpolateTemplate,Cq as isDirectory,ame as isFile,fH as isPathWithin,mfe as isValidAgentFrontmatter,ffe as isValidAgentPermissionMode,Oyt as isValidAgentSource,Cbr as isValidAnthropicConfig,Hyt as isValidCLIAgentConfig,Ebr as isValidCompassConfig,Wbr as isValidConfigFile,Yyt as isValidConsent,Zbr as isValidConsentRecord,gfe as isValidHookEvent,jbr as isValidHookFrontmatter,Qbr as isValidHookSource,zyt as isValidModel,Jbr as isValidNotificationStyle,kbr as isValidProjectConfig,Ubr as isValidRatingState,Tbr as isValidSafetyConfig,Fbr as isValidSessionConfig,ean as isValidSlashCommand,Nbr as isValidUIConfig,Ybr as isValidUpdateCheckResult,Obr as isValidUpdateConfig,Rbr as isValidUpdateSettingsConfig,Hbr as isValidUpdateType,ce as logger,hq as matchesPattern,Pwr as normalizeSeparators,EGr as padString,aHt as parseArgs,Ksn as parseInput,tD as parseToolsList,ba as pathExists,vH as readDir,u7e as registerBuiltInTools,gje as registerSlashCommand,Gb as remove,Ian as renderBanner,ban as renderMiniBanner,van as renderWelcome,Wwr as resolveGlobalPath,pI as resolveModelId,Zwr as resolveProjectPath,Nd as safeReadFile,_f as safeReadJson,Sb as safeWriteFile,Ph as safeWriteJson,fD as sanitizePath,YGr as secureCompare,Lyt as serializeToolsList,Dv as stat,BW as toForwardSlashes,GGr as truncate,U9r as wouldExceedContext};
3508
+ `)}KD();var EMn="1.0.48",CMn="compass-cli",kMn="AI-powered development assistance using Anthropic's Claude models";export{Hz as AGENT_SOURCE_PRIORITY,kMn as APP_DESCRIPTION,fvr as APP_DISPLAY_NAME,CMn as APP_NAME,mvr as APP_TAGLINE,pvr as APP_VERSION,pHt as ASCII_BANNER,PDe as AUTO_COMPACT_TRIGGER,MDe as AUTO_SAVE_INTERVAL_MS,IK as ActionLogger,VZt as ActionStatus,Uv as ActionType,i_e as AnthropicClient,Ame as ApprovalManager,JO as ApprovalMode,kDe as BACKUPS_DIR,Uz as BACKUP_RETENTION_DAYS,gvr as BINARY_EXTENSIONS,Gme as BackupManager,zbr as CACHE_DIR,Bz as CATEGORY_INFO,Aw as CLAUDE_MODELS,San as CLI_COMMANDS,gan as COMPASS_ICON,XO as CONFIG_FILE_NAME,DDe as CONSENT_EXPIRY_DAYS,EDe as CONSENT_FILE_NAME,_vr as CONSENT_VERSION,qbr as CONTEXT_DIR,ivr as CONTEXT_WINDOW_SAFETY_MARGIN,$br as CONTEXT_WINDOW_WARNING_PERCENT,Xz as CREDENTIALS_FILE_NAME,ZK as ComplexityClassifier,lme as ConfigManager,_me as ConsentManager,Ime as CredentialStore,dN as DEFAULT_CONFIG,Kbr as DEFAULT_COST_WARNING_THRESHOLD,uN as DEFAULT_MAX_TOKENS,ww as DEFAULT_MODEL,S2 as DEFAULT_PERSONALITY_MODE,Lbr as DEFAULT_RATING_CONFIG,jO as DEFAULT_TEMPERATURE,Mbr as DEFAULT_UPDATE_CONFIG,Vv as ENV_VARS,kK as EnhancedContextGatherer,fme as EventEmitter,Yz as ExecutionMode,QVt as ExecutionStrategy,Jz as GLOBAL_COMPASS_DIR,F$ as GitService,Qyt as HOOK_EVENTS,hfe as HOOK_SOURCE_PRIORITY,g1e as HistoryManager,TDe as INDEX_DIR,Lee as InteractiveClarifier,XVt as IssueCategory,LVt as IssueSeverity,hvr as LANGUAGE_EXTENSIONS,CDe as LOGS_DIR,YK as LogInterpreter,QO as MAX_BACKUP_FILES,avr as MAX_CACHE_SIZE_BYTES,Qz as MAX_COMMAND_OUTPUT_TOKENS,tvr as MAX_FILES_PER_OPERATION,YDe as MAX_FILE_READ_TOKENS,rvr as MAX_FILE_SIZE_BYTES,vfe as MAX_HISTORY_LENGTH,svr as MAX_INDEXED_FILES,cvr as MAX_RETRY_ATTEMPTS,nvr as MAX_SEARCH_RESULT_TOKENS,jz as MODEL_ALIASES,Lz as PROJECT_COMPASS_DIR,DW as PROVIDERS,HDe as PROVIDER_ENV_VARS,Xee as PlanGenerator,lvr as RETRY_BASE_DELAY_MS,dvr as RETRY_JITTER_FACTOR,uvr as RETRY_MAX_DELAY_MS,UO as SAVED_SESSIONS_DIR,evr as SESSION_EXPIRY_DAYS,yfe as SESSION_FILE_NAME,bfe as SHELL_COMMAND_MAX_TIMEOUT_MS,Ife as SHELL_COMMAND_TIMEOUT_MS,bje as SLASH_COMMANDS,zO as SYSTEM_UTILITIES,bme as SessionManager,Tge as ShellExecutor,FZt as StepStatus,yK as StepTracker,RZt as StepType,NDe as TEMP_DIR,VDe as TOKEN_WARNING_THRESHOLD,LDe as TOOL_READ_BLOCKLIST_DIRS,JDe as TOOL_READ_BLOCKLIST_PATTERNS,ADe as TaskExecutionStatus,WZt as TaskStatus,wme as TokenTracker,wK as ToolRegistry,UDe as UTILITY_DETECTION_CACHE_TTL,QDe as UTILITY_DETECTION_TIMEOUT,EMn as VERSION,Uee as Verifier,vJe as WORKFLOW_PROMPTS,OK as WorkflowManager,Qee as WorkflowOrchestrator,dfe as WorkflowPhase,UVt as WorkflowState,man as applyCompletion,_4r as applyPatch,f4r as areIdentical,j9r as calculateContextUsagePercent,Kyt as calculateModelCost,X9r as calculateRemainingTokens,TGr as colorByStatus,u4r as colorizeDiff,Xyt as compareAgentPriority,Bbr as compareHookPriority,eIt as compareModels,hN as copy,sMr as createActionLogger,h6r as createComplexityClassifier,Jyt as createDefaultAgentDefinition,Vbr as createDefaultConsent,Xbr as createDefaultRatingState,ZMr as createEnhancedContextGatherer,Pbr as createFullConsent,wRr as createGitService,Xsn as createInteractiveClarifier,z6r as createLogInterpreter,Dbr as createMinimalConsent,Qsn as createPlanGenerator,iMr as createStepTracker,_Mr as createToolRegistry,Bsn as createVerifier,$6r as createWorkflowManager,qsn as createWorkflowOrchestrator,oMe as decrypt,aMe as encrypt,Pl as ensureDir,J9r as estimateConversationTokens,L9r as estimateSystemPromptTokens,jp as estimateTokens,tan as executeSlashCommand,mje as extractCodeBlocks,fje as extractMentions,Can as formatCommandHelp,AGr as formatCost,bGr as formatDate,vGr as formatDuration,wGr as formatFileSize,Ean as formatFullHelp,gHt as formatHelpCategory,kGr as formatList,Dxt as formatPercent,CGr as formatProgressBar,xGr as formatRelativeTime,un as formatTimestamp,SGr as formatTokenCount,Q9r as formatTokenDisplay,jD as generateDiff,d4r as generateDiffSummary,DGr as generateSecureRandom,p4r as generateWordDiff,RZ as getActionLogger,pfe as getAgentSourcePriority,uy as getAnthropicClient,oh as getApprovalManager,Byt as getAvailableAliases,jyt as getAvailableModelIds,BO as getAvailableModels,nZ as getBackupManager,Mwr as getBasename,m4r as getChangedLineCount,rIt as getCheapestModel,L8 as getCodebaseIndexer,aan as getCompletions,VK as getComplexityClassifier,xH as getConfigManager,rMe as getConsentManager,LN as getContextBuilder,B9r as getContextUsageColor,nMr as getConversationCompactor,Ov as getCredentialStore,qyt as getDefaultModel,$yt as getDefaultModelId,TK as getEnhancedContextGatherer,Ga as getEventEmitter,Dwr as getExtension,ON as getFileService,kl as getGlobalCompassDir,ran as getHistoryManager,SDe as getHookSourcePriority,uje as getInteractiveClarifier,y7e as getLogInterpreter,dI as getModelConfig,xfe as getModelDescription,iIt as getModelTier,tIt as getModelsByCapability,nIt as getMostCapableModel,d1e as getPlanGenerator,Qp as getProjectCompassDir,Vwr as getRelativePath,k_ as getSessionManager,py as getShellExecutor,yje as getSlashCommandRegistry,FZ as getStepTracker,Nge as getSystemUtilitiesPromptSection,GWt as getSystemUtilityDetector,han as getTaskProcessor,rZ as getTokenTracker,zw as getToolRegistry,yvr as getUtilitiesByCategory,pje as getVerifier,q6r as getWorkflowManager,zsn as getWorkflowOrchestrator,cMe as hash,MGr as hmac,Bw as interpolateTemplate,Cq as isDirectory,ame as isFile,fH as isPathWithin,mfe as isValidAgentFrontmatter,ffe as isValidAgentPermissionMode,Oyt as isValidAgentSource,Cbr as isValidAnthropicConfig,Hyt as isValidCLIAgentConfig,Ebr as isValidCompassConfig,Wbr as isValidConfigFile,Yyt as isValidConsent,Zbr as isValidConsentRecord,gfe as isValidHookEvent,jbr as isValidHookFrontmatter,Qbr as isValidHookSource,zyt as isValidModel,Jbr as isValidNotificationStyle,kbr as isValidProjectConfig,Ubr as isValidRatingState,Tbr as isValidSafetyConfig,Fbr as isValidSessionConfig,ean as isValidSlashCommand,Nbr as isValidUIConfig,Ybr as isValidUpdateCheckResult,Obr as isValidUpdateConfig,Rbr as isValidUpdateSettingsConfig,Hbr as isValidUpdateType,ce as logger,hq as matchesPattern,Pwr as normalizeSeparators,EGr as padString,aHt as parseArgs,Ksn as parseInput,tD as parseToolsList,ba as pathExists,vH as readDir,u7e as registerBuiltInTools,gje as registerSlashCommand,Gb as remove,Ian as renderBanner,ban as renderMiniBanner,van as renderWelcome,Wwr as resolveGlobalPath,pI as resolveModelId,Zwr as resolveProjectPath,Nd as safeReadFile,_f as safeReadJson,Sb as safeWriteFile,Ph as safeWriteJson,fD as sanitizePath,YGr as secureCompare,Lyt as serializeToolsList,Dv as stat,BW as toForwardSlashes,GGr as truncate,U9r as wouldExceedContext};
3509
3509
  /*! Bundled license information:
3510
3510
 
3511
3511
  typescript/lib/typescript.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@compass-ai/nova",
3
- "version": "1.0.47",
3
+ "version": "1.0.48",
4
4
  "description": "AI-powered development assistant that brings advanced language models directly to your terminal",
5
5
  "bin": {
6
6
  "nova": "dist/cli.js",