@compass-ai/nova 1.0.40 → 1.0.42

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/README.md CHANGED
@@ -232,8 +232,8 @@ Nova supports multiple AI models — switch anytime with `/model`:
232
232
  | **Claude Opus 4.5** | Complex reasoning, architecture decisions |
233
233
  | **Claude Sonnet 4.5** | Balanced performance (default) |
234
234
  | **Claude Haiku 4.5** | Fast iterations, quick tasks |
235
- | **Ollama** | Local/private, offline capable |
236
- | **GLM 4.7, Minimax, Kimi, Gemini** | Alternative providers |
235
+ | **Ollama** | Cloud/Local/Private, offline capable |
236
+ | **GLM 4.7, Minimax, Kimi, Gemini** | Alternative models |
237
237
 
238
238
  All models support:
239
239
  - 200K token context window
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 jCt=ar(()=>{});function ire(i){return a5r(i)}var UCt,XCt,EYe,GJ,nre,QCt,DJ,s5r,a5r,FYe,o5r,c5r,TYe,Q0e,l5r,u5r,nNn,B,Yd=ar(()=>{MCt();LCt();jCt();({stdout:UCt,stderr:XCt}=HCt),EYe=Symbol("GENERATOR"),GJ=Symbol("STYLER"),nre=Symbol("IS_EMPTY"),QCt=["ansi","ansi","ansi256","ansi16m"],DJ=Object.create(null),s5r=(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=UCt?UCt.level:0;i.level=t.level===void 0?n:t.level},a5r=i=>{let t=(...n)=>n.join(" ");return s5r(t,i),Object.setPrototypeOf(t,ire.prototype),t};Object.setPrototypeOf(ire.prototype,Function.prototype);for(let[i,t]of Object.entries(YE))DJ[i]={get(){let n=Q0e(this,TYe(t.open,t.close,this[GJ]),this[nre]);return Object.defineProperty(this,i,{value:n}),n}};DJ.visible={get(){let i=Q0e(this,this[GJ],!0);return Object.defineProperty(this,"visible",{value:i}),i}};FYe=(i,t,n,...s)=>i==="rgb"?t==="ansi16m"?YE[n].ansi16m(...s):t==="ansi256"?YE[n].ansi256(YE.rgbToAnsi256(...s)):YE[n].ansi(YE.rgbToAnsi(...s)):i==="hex"?FYe("rgb",t,n,...YE.hexToRgb(...s)):YE[n][i](...s),o5r=["rgb","hex","ansi256"];for(let i of o5r){DJ[i]={get(){let{level:n}=this;return function(...s){let c=TYe(FYe(i,QCt[n],"color",...s),YE.color.close,this[GJ]);return Q0e(this,c,this[nre])}}};let t="bg"+i[0].toUpperCase()+i.slice(1);DJ[t]={get(){let{level:n}=this;return function(...s){let c=TYe(FYe(i,QCt[n],"bgColor",...s),YE.bgColor.close,this[GJ]);return Q0e(this,c,this[nre])}}}}c5r=Object.defineProperties(()=>{},{...DJ,level:{enumerable:!0,get(){return this[EYe].level},set(i){this[EYe].level=i}}}),TYe=(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}},Q0e=(i,t,n)=>{let s=(...c)=>l5r(s,c.length===1?""+c[0]:c.join(" "));return Object.setPrototypeOf(s,c5r),s[EYe]=i,s[GJ]=t,s[nre]=n,s},l5r=(i,t)=>{if(i.level<=0||!t)return i[nre]?"":t;let n=i[GJ];if(n===void 0)return t;let{openAll:s,closeAll:c}=n;if(t.includes("\x1B"))for(;n!==void 0;)t=JCt(t,n.close,n.open),n=n.parent;let u=t.indexOf(`
33
- `);return u!==-1&&(t=BCt(t,c,s,u)),s+t+c};Object.defineProperties(ire.prototype,DJ);u5r=ire(),nNn=ire({level:XCt?XCt.level:0}),B=u5r});var GYe,ore,DYe=ar(()=>{"use strict";GYe="1.0.0",ore={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 tSt(i,t=0){return(SI[i[t+0]]+SI[i[t+1]]+SI[i[t+2]]+SI[i[t+3]]+"-"+SI[i[t+4]]+SI[i[t+5]]+"-"+SI[i[t+6]]+SI[i[t+7]]+"-"+SI[i[t+8]]+SI[i[t+9]]+"-"+SI[i[t+10]]+SI[i[t+11]]+SI[i[t+12]]+SI[i[t+13]]+SI[i[t+14]]+SI[i[t+15]]).toLowerCase()}var SI,rSt=ar(()=>{SI=[];for(let i=0;i<256;++i)SI.push((i+256).toString(16).slice(1))});import{randomFillSync as b5r}from"node:crypto";function NYe(){return z0e>q0e.length-16&&(b5r(q0e),z0e=0),q0e.slice(z0e,z0e+=16)}var q0e,z0e,nSt=ar(()=>{q0e=new Uint8Array(256),z0e=q0e.length});import{randomUUID as I5r}from"node:crypto";var RYe,iSt=ar(()=>{RYe={randomUUID:I5r}});function v5r(i,t,n){i=i||{};let s=i.random??i.rng?.()??NYe();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 tSt(s)}function x5r(i,t,n){return RYe.randomUUID&&!t&&!i?RYe.randomUUID():v5r(i,t,n)}var Al,sSt=ar(()=>{iSt();nSt();rSt();Al=x5r});var Pv=ar(()=>{sSt()});var $0e,RJ,cre,WYe,aSt,K0e,oSt,cSt,lre,lSt,PYe,ZYe,VYe,MYe,JR,OYe,w5r,GP,$9,hA,uSt,dSt,pSt,fSt,Ah=ar(()=>{"use strict";$0e=".compass",RJ=".compass",cre="config.json",WYe="session.json",aSt="consent.json",K0e="credentials.enc",oSt="logs",cSt="backups",lre="saved-sessions",lSt="index",PYe="commands",ZYe="agents",VYe="skills",MYe="hooks",JR="claude-sonnet-4-5-20250929",OYe="haiku",w5r="banner",GP={anthropic:{model:JR,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:3e4,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:w5r,includePrerelease:!1},agentic:{maxIterations:200,costWarningThreshold:5,costHardCap:0,autoCompactAtPercent:80,stuckDetectionEnabled:!0,stuckDetectionThreshold:3,maxIterationsPerTask:50}},$9=["anthropic","ollama","zai","minimax"],hA={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"},uSt={anthropic:hA.API_KEY,ollama:hA.OLLAMA_API_KEY,zai:hA.ZAI_API_KEY,minimax:hA.MINIMAX_API_KEY},dSt="1.0.40",pSt=["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"],fSt=["node_modules",".git","dist","build","out","coverage",".next",".nuxt",".output",".cache",".parcel-cache","vendor","__pycache__",".pytest_cache","target","bin","obj"]});import EG from"path";import A5r from"os";function Hc(){return EG.join(A5r.homedir(),$0e)}function su(i){let t=i||process.cwd();return EG.join(t,RJ)}function WJ(i,t){let n=EG.resolve(t),s=EG.resolve(n,i);return s!==n&&!s.startsWith(n+EG.sep)?null:s}function K9(i,t){let n=EG.resolve(t),s=EG.resolve(i);return s===n||s.startsWith(n+EG.sep)}function mSt(i,t){return EG.relative(t,i)}function eM(i){return i.replace(/\\/g,"/")}function eye(i,t){let n=eM(i);for(let s of t)if(k5r(s).test(n))return!0;return!1}function k5r(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 ure(...i){return EG.resolve(...i)}var sf=ar(()=>{"use strict";Ah()});var Sb=qe(YYe=>{"use strict";YYe.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})};YYe.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 _St=qe((WNn,hSt)=>{var DP=ji("constants"),C5r=process.cwd,tye=null,S5r=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return tye||(tye=C5r.call(process)),tye};try{process.cwd()}catch{}typeof process.chdir=="function"&&(HYe=process.chdir,process.chdir=function(i){tye=null,HYe.call(process,i)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,HYe));var HYe;hSt.exports=E5r;function E5r(i){DP.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=b(i.stat),i.fstat=b(i.fstat),i.lstat=b(i.lstat),i.statSync=x(i.statSync),i.fstatSync=x(i.fstatSync),i.lstatSync=x(i.lstatSync),i.chmod&&!i.lchmod&&(i.lchmod=function(F,R,T){T&&process.nextTick(T)},i.lchmodSync=function(){}),i.chown&&!i.lchown&&(i.lchown=function(F,R,T,P){P&&process.nextTick(P)},i.lchownSync=function(){}),S5r==="win32"&&(i.rename=typeof i.rename!="function"?i.rename:(function(F){function R(T,P,V){var J=Date.now(),ae=0;F(T,P,function fe(Pe){if(Pe&&(Pe.code==="EACCES"||Pe.code==="EPERM"||Pe.code==="EBUSY")&&Date.now()-J<6e4){setTimeout(function(){i.stat(P,function(_t,gt){_t&&_t.code==="ENOENT"?F(T,P,fe):V(Pe)})},ae),ae<100&&(ae+=10);return}V&&V(Pe)})}return Object.setPrototypeOf&&Object.setPrototypeOf(R,F),R})(i.rename)),i.read=typeof i.read!="function"?i.read:(function(F){function R(T,P,V,J,ae,fe){var Pe;if(fe&&typeof fe=="function"){var _t=0;Pe=function(gt,jt,Xt){if(gt&&gt.code==="EAGAIN"&&_t<10)return _t++,F.call(i,T,P,V,J,ae,Pe);fe.apply(this,arguments)}}return F.call(i,T,P,V,J,ae,Pe)}return Object.setPrototypeOf&&Object.setPrototypeOf(R,F),R})(i.read),i.readSync=typeof i.readSync!="function"?i.readSync:(function(F){return function(R,T,P,V,J){for(var ae=0;;)try{return F.call(i,R,T,P,V,J)}catch(fe){if(fe.code==="EAGAIN"&&ae<10){ae++;continue}throw fe}}})(i.readSync);function t(F){F.lchmod=function(R,T,P){F.open(R,DP.O_WRONLY|DP.O_SYMLINK,T,function(V,J){if(V){P&&P(V);return}F.fchmod(J,T,function(ae){F.close(J,function(fe){P&&P(ae||fe)})})})},F.lchmodSync=function(R,T){var P=F.openSync(R,DP.O_WRONLY|DP.O_SYMLINK,T),V=!0,J;try{J=F.fchmodSync(P,T),V=!1}finally{if(V)try{F.closeSync(P)}catch{}else F.closeSync(P)}return J}}function n(F){DP.hasOwnProperty("O_SYMLINK")&&F.futimes?(F.lutimes=function(R,T,P,V){F.open(R,DP.O_SYMLINK,function(J,ae){if(J){V&&V(J);return}F.futimes(ae,T,P,function(fe){F.close(ae,function(Pe){V&&V(fe||Pe)})})})},F.lutimesSync=function(R,T,P){var V=F.openSync(R,DP.O_SYMLINK),J,ae=!0;try{J=F.futimesSync(V,T,P),ae=!1}finally{if(ae)try{F.closeSync(V)}catch{}else F.closeSync(V)}return J}):F.futimes&&(F.lutimes=function(R,T,P,V){V&&process.nextTick(V)},F.lutimesSync=function(){})}function s(F){return F&&function(R,T,P){return F.call(i,R,T,function(V){S(V)&&(V=null),P&&P.apply(this,arguments)})}}function c(F){return F&&function(R,T){try{return F.call(i,R,T)}catch(P){if(!S(P))throw P}}}function u(F){return F&&function(R,T,P,V){return F.call(i,R,T,P,function(J){S(J)&&(J=null),V&&V.apply(this,arguments)})}}function m(F){return F&&function(R,T,P){try{return F.call(i,R,T,P)}catch(V){if(!S(V))throw V}}}function b(F){return F&&function(R,T,P){typeof T=="function"&&(P=T,T=null);function V(J,ae){ae&&(ae.uid<0&&(ae.uid+=4294967296),ae.gid<0&&(ae.gid+=4294967296)),P&&P.apply(this,arguments)}return T?F.call(i,R,T,V):F.call(i,R,V)}}function x(F){return F&&function(R,T){var P=T?F.call(i,R,T):F.call(i,R);return P&&(P.uid<0&&(P.uid+=4294967296),P.gid<0&&(P.gid+=4294967296)),P}}function S(F){if(!F||F.code==="ENOSYS")return!0;var R=!process.getuid||process.getuid()!==0;return!!(R&&(F.code==="EINVAL"||F.code==="EPERM"))}}});var bSt=qe((PNn,ySt)=>{var gSt=ji("stream").Stream;ySt.exports=F5r;function F5r(i){return{ReadStream:t,WriteStream:n};function t(s,c){if(!(this instanceof t))return new t(s,c);gSt.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),b=0,x=m.length;b<x;b++){var S=m[b];this[S]=c[S]}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(F,R){if(F){u.emit("error",F),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);gSt.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,b=u.length;m<b;m++){var x=u[m];this[x]=c[x]}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 vSt=qe((ZNn,ISt)=>{"use strict";ISt.exports=G5r;var T5r=Object.getPrototypeOf||function(i){return i.__proto__};function G5r(i){if(i===null||typeof i!="object")return i;if(i instanceof Object)var t={__proto__:T5r(i)};else var t=Object.create(null);return Object.getOwnPropertyNames(i).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(i,n))}),t}});var rM=qe((VNn,BYe)=>{var Q_=ji("fs"),D5r=_St(),N5r=bSt(),R5r=vSt(),rye=ji("util"),EI,iye;typeof Symbol=="function"&&typeof Symbol.for=="function"?(EI=Symbol.for("graceful-fs.queue"),iye=Symbol.for("graceful-fs.previous")):(EI="___graceful-fs.queue",iye="___graceful-fs.previous");function W5r(){}function ASt(i,t){Object.defineProperty(i,EI,{get:function(){return t}})}var tM=W5r;rye.debuglog?tM=rye.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(tM=function(){var i=rye.format.apply(rye,arguments);i="GFS4: "+i.split(/\n/).join(`
33
+ `);return u!==-1&&(t=BCt(t,c,s,u)),s+t+c};Object.defineProperties(ire.prototype,DJ);u5r=ire(),nNn=ire({level:XCt?XCt.level:0}),B=u5r});var GYe,ore,DYe=ar(()=>{"use strict";GYe="1.0.0",ore={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 tSt(i,t=0){return(SI[i[t+0]]+SI[i[t+1]]+SI[i[t+2]]+SI[i[t+3]]+"-"+SI[i[t+4]]+SI[i[t+5]]+"-"+SI[i[t+6]]+SI[i[t+7]]+"-"+SI[i[t+8]]+SI[i[t+9]]+"-"+SI[i[t+10]]+SI[i[t+11]]+SI[i[t+12]]+SI[i[t+13]]+SI[i[t+14]]+SI[i[t+15]]).toLowerCase()}var SI,rSt=ar(()=>{SI=[];for(let i=0;i<256;++i)SI.push((i+256).toString(16).slice(1))});import{randomFillSync as b5r}from"node:crypto";function NYe(){return z0e>q0e.length-16&&(b5r(q0e),z0e=0),q0e.slice(z0e,z0e+=16)}var q0e,z0e,nSt=ar(()=>{q0e=new Uint8Array(256),z0e=q0e.length});import{randomUUID as I5r}from"node:crypto";var RYe,iSt=ar(()=>{RYe={randomUUID:I5r}});function v5r(i,t,n){i=i||{};let s=i.random??i.rng?.()??NYe();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 tSt(s)}function x5r(i,t,n){return RYe.randomUUID&&!t&&!i?RYe.randomUUID():v5r(i,t,n)}var Al,sSt=ar(()=>{iSt();nSt();rSt();Al=x5r});var Pv=ar(()=>{sSt()});var $0e,RJ,cre,WYe,aSt,K0e,oSt,cSt,lre,lSt,PYe,ZYe,VYe,MYe,JR,OYe,w5r,GP,$9,hA,uSt,dSt,pSt,fSt,Ah=ar(()=>{"use strict";$0e=".compass",RJ=".compass",cre="config.json",WYe="session.json",aSt="consent.json",K0e="credentials.enc",oSt="logs",cSt="backups",lre="saved-sessions",lSt="index",PYe="commands",ZYe="agents",VYe="skills",MYe="hooks",JR="claude-sonnet-4-5-20250929",OYe="haiku",w5r="banner",GP={anthropic:{model:JR,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:3e4,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:w5r,includePrerelease:!1},agentic:{maxIterations:200,costWarningThreshold:5,costHardCap:0,autoCompactAtPercent:80,stuckDetectionEnabled:!0,stuckDetectionThreshold:3,maxIterationsPerTask:50}},$9=["anthropic","ollama","zai","minimax"],hA={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"},uSt={anthropic:hA.API_KEY,ollama:hA.OLLAMA_API_KEY,zai:hA.ZAI_API_KEY,minimax:hA.MINIMAX_API_KEY},dSt="1.0.42",pSt=["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"],fSt=["node_modules",".git","dist","build","out","coverage",".next",".nuxt",".output",".cache",".parcel-cache","vendor","__pycache__",".pytest_cache","target","bin","obj"]});import EG from"path";import A5r from"os";function Hc(){return EG.join(A5r.homedir(),$0e)}function su(i){let t=i||process.cwd();return EG.join(t,RJ)}function WJ(i,t){let n=EG.resolve(t),s=EG.resolve(n,i);return s!==n&&!s.startsWith(n+EG.sep)?null:s}function K9(i,t){let n=EG.resolve(t),s=EG.resolve(i);return s===n||s.startsWith(n+EG.sep)}function mSt(i,t){return EG.relative(t,i)}function eM(i){return i.replace(/\\/g,"/")}function eye(i,t){let n=eM(i);for(let s of t)if(k5r(s).test(n))return!0;return!1}function k5r(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 ure(...i){return EG.resolve(...i)}var sf=ar(()=>{"use strict";Ah()});var Sb=qe(YYe=>{"use strict";YYe.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})};YYe.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 _St=qe((WNn,hSt)=>{var DP=ji("constants"),C5r=process.cwd,tye=null,S5r=process.env.GRACEFUL_FS_PLATFORM||process.platform;process.cwd=function(){return tye||(tye=C5r.call(process)),tye};try{process.cwd()}catch{}typeof process.chdir=="function"&&(HYe=process.chdir,process.chdir=function(i){tye=null,HYe.call(process,i)},Object.setPrototypeOf&&Object.setPrototypeOf(process.chdir,HYe));var HYe;hSt.exports=E5r;function E5r(i){DP.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=b(i.stat),i.fstat=b(i.fstat),i.lstat=b(i.lstat),i.statSync=x(i.statSync),i.fstatSync=x(i.fstatSync),i.lstatSync=x(i.lstatSync),i.chmod&&!i.lchmod&&(i.lchmod=function(F,R,T){T&&process.nextTick(T)},i.lchmodSync=function(){}),i.chown&&!i.lchown&&(i.lchown=function(F,R,T,P){P&&process.nextTick(P)},i.lchownSync=function(){}),S5r==="win32"&&(i.rename=typeof i.rename!="function"?i.rename:(function(F){function R(T,P,V){var J=Date.now(),ae=0;F(T,P,function fe(Pe){if(Pe&&(Pe.code==="EACCES"||Pe.code==="EPERM"||Pe.code==="EBUSY")&&Date.now()-J<6e4){setTimeout(function(){i.stat(P,function(_t,gt){_t&&_t.code==="ENOENT"?F(T,P,fe):V(Pe)})},ae),ae<100&&(ae+=10);return}V&&V(Pe)})}return Object.setPrototypeOf&&Object.setPrototypeOf(R,F),R})(i.rename)),i.read=typeof i.read!="function"?i.read:(function(F){function R(T,P,V,J,ae,fe){var Pe;if(fe&&typeof fe=="function"){var _t=0;Pe=function(gt,jt,Xt){if(gt&&gt.code==="EAGAIN"&&_t<10)return _t++,F.call(i,T,P,V,J,ae,Pe);fe.apply(this,arguments)}}return F.call(i,T,P,V,J,ae,Pe)}return Object.setPrototypeOf&&Object.setPrototypeOf(R,F),R})(i.read),i.readSync=typeof i.readSync!="function"?i.readSync:(function(F){return function(R,T,P,V,J){for(var ae=0;;)try{return F.call(i,R,T,P,V,J)}catch(fe){if(fe.code==="EAGAIN"&&ae<10){ae++;continue}throw fe}}})(i.readSync);function t(F){F.lchmod=function(R,T,P){F.open(R,DP.O_WRONLY|DP.O_SYMLINK,T,function(V,J){if(V){P&&P(V);return}F.fchmod(J,T,function(ae){F.close(J,function(fe){P&&P(ae||fe)})})})},F.lchmodSync=function(R,T){var P=F.openSync(R,DP.O_WRONLY|DP.O_SYMLINK,T),V=!0,J;try{J=F.fchmodSync(P,T),V=!1}finally{if(V)try{F.closeSync(P)}catch{}else F.closeSync(P)}return J}}function n(F){DP.hasOwnProperty("O_SYMLINK")&&F.futimes?(F.lutimes=function(R,T,P,V){F.open(R,DP.O_SYMLINK,function(J,ae){if(J){V&&V(J);return}F.futimes(ae,T,P,function(fe){F.close(ae,function(Pe){V&&V(fe||Pe)})})})},F.lutimesSync=function(R,T,P){var V=F.openSync(R,DP.O_SYMLINK),J,ae=!0;try{J=F.futimesSync(V,T,P),ae=!1}finally{if(ae)try{F.closeSync(V)}catch{}else F.closeSync(V)}return J}):F.futimes&&(F.lutimes=function(R,T,P,V){V&&process.nextTick(V)},F.lutimesSync=function(){})}function s(F){return F&&function(R,T,P){return F.call(i,R,T,function(V){S(V)&&(V=null),P&&P.apply(this,arguments)})}}function c(F){return F&&function(R,T){try{return F.call(i,R,T)}catch(P){if(!S(P))throw P}}}function u(F){return F&&function(R,T,P,V){return F.call(i,R,T,P,function(J){S(J)&&(J=null),V&&V.apply(this,arguments)})}}function m(F){return F&&function(R,T,P){try{return F.call(i,R,T,P)}catch(V){if(!S(V))throw V}}}function b(F){return F&&function(R,T,P){typeof T=="function"&&(P=T,T=null);function V(J,ae){ae&&(ae.uid<0&&(ae.uid+=4294967296),ae.gid<0&&(ae.gid+=4294967296)),P&&P.apply(this,arguments)}return T?F.call(i,R,T,V):F.call(i,R,V)}}function x(F){return F&&function(R,T){var P=T?F.call(i,R,T):F.call(i,R);return P&&(P.uid<0&&(P.uid+=4294967296),P.gid<0&&(P.gid+=4294967296)),P}}function S(F){if(!F||F.code==="ENOSYS")return!0;var R=!process.getuid||process.getuid()!==0;return!!(R&&(F.code==="EINVAL"||F.code==="EPERM"))}}});var bSt=qe((PNn,ySt)=>{var gSt=ji("stream").Stream;ySt.exports=F5r;function F5r(i){return{ReadStream:t,WriteStream:n};function t(s,c){if(!(this instanceof t))return new t(s,c);gSt.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),b=0,x=m.length;b<x;b++){var S=m[b];this[S]=c[S]}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(F,R){if(F){u.emit("error",F),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);gSt.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,b=u.length;m<b;m++){var x=u[m];this[x]=c[x]}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 vSt=qe((ZNn,ISt)=>{"use strict";ISt.exports=G5r;var T5r=Object.getPrototypeOf||function(i){return i.__proto__};function G5r(i){if(i===null||typeof i!="object")return i;if(i instanceof Object)var t={__proto__:T5r(i)};else var t=Object.create(null);return Object.getOwnPropertyNames(i).forEach(function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(i,n))}),t}});var rM=qe((VNn,BYe)=>{var Q_=ji("fs"),D5r=_St(),N5r=bSt(),R5r=vSt(),rye=ji("util"),EI,iye;typeof Symbol=="function"&&typeof Symbol.for=="function"?(EI=Symbol.for("graceful-fs.queue"),iye=Symbol.for("graceful-fs.previous")):(EI="___graceful-fs.queue",iye="___graceful-fs.previous");function W5r(){}function ASt(i,t){Object.defineProperty(i,EI,{get:function(){return t}})}var tM=W5r;rye.debuglog?tM=rye.debuglog("gfs4"):/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&(tM=function(){var i=rye.format.apply(rye,arguments);i="GFS4: "+i.split(/\n/).join(`
34
34
  GFS4: `),console.error(i)});Q_[EI]||(xSt=global[EI]||[],ASt(Q_,xSt),Q_.close=(function(i){function t(n,s){return i.call(Q_,n,function(c){c||wSt(),typeof s=="function"&&s.apply(this,arguments)})}return Object.defineProperty(t,iye,{value:i}),t})(Q_.close),Q_.closeSync=(function(i){function t(n){i.apply(Q_,arguments),wSt()}return Object.defineProperty(t,iye,{value:i}),t})(Q_.closeSync),/\bgfs4\b/i.test(process.env.NODE_DEBUG||"")&&process.on("exit",function(){tM(Q_[EI]),ji("assert").equal(Q_[EI].length,0)}));var xSt;global[EI]||ASt(global,Q_[EI]);BYe.exports=LYe(R5r(Q_));process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH&&!Q_.__patched&&(BYe.exports=LYe(Q_),Q_.__patched=!0);function LYe(i){D5r(i),i.gracefulify=LYe,i.createReadStream=jt,i.createWriteStream=Xt;var t=i.readFile;i.readFile=n;function n(Er,xn,Sr){return typeof xn=="function"&&(Sr=xn,xn=null),jn(Er,xn,Sr);function jn(mn,$t,Kn,Hi){return t(mn,$t,function(zt){zt&&(zt.code==="EMFILE"||zt.code==="ENFILE")?PJ([jn,[mn,$t,Kn],zt,Hi||Date.now(),Date.now()]):typeof Kn=="function"&&Kn.apply(this,arguments)})}}var s=i.writeFile;i.writeFile=c;function c(Er,xn,Sr,jn){return typeof Sr=="function"&&(jn=Sr,Sr=null),mn(Er,xn,Sr,jn);function mn($t,Kn,Hi,zt,cs){return s($t,Kn,Hi,function(fi){fi&&(fi.code==="EMFILE"||fi.code==="ENFILE")?PJ([mn,[$t,Kn,Hi,zt],fi,cs||Date.now(),Date.now()]):typeof zt=="function"&&zt.apply(this,arguments)})}}var u=i.appendFile;u&&(i.appendFile=m);function m(Er,xn,Sr,jn){return typeof Sr=="function"&&(jn=Sr,Sr=null),mn(Er,xn,Sr,jn);function mn($t,Kn,Hi,zt,cs){return u($t,Kn,Hi,function(fi){fi&&(fi.code==="EMFILE"||fi.code==="ENFILE")?PJ([mn,[$t,Kn,Hi,zt],fi,cs||Date.now(),Date.now()]):typeof zt=="function"&&zt.apply(this,arguments)})}}var b=i.copyFile;b&&(i.copyFile=x);function x(Er,xn,Sr,jn){return typeof Sr=="function"&&(jn=Sr,Sr=0),mn(Er,xn,Sr,jn);function mn($t,Kn,Hi,zt,cs){return b($t,Kn,Hi,function(fi){fi&&(fi.code==="EMFILE"||fi.code==="ENFILE")?PJ([mn,[$t,Kn,Hi,zt],fi,cs||Date.now(),Date.now()]):typeof zt=="function"&&zt.apply(this,arguments)})}}var S=i.readdir;i.readdir=R;var F=/^v[0-5]\./;function R(Er,xn,Sr){typeof xn=="function"&&(Sr=xn,xn=null);var jn=F.test(process.version)?function(Kn,Hi,zt,cs){return S(Kn,mn(Kn,Hi,zt,cs))}:function(Kn,Hi,zt,cs){return S(Kn,Hi,mn(Kn,Hi,zt,cs))};return jn(Er,xn,Sr);function mn($t,Kn,Hi,zt){return function(cs,fi){cs&&(cs.code==="EMFILE"||cs.code==="ENFILE")?PJ([jn,[$t,Kn,Hi],cs,zt||Date.now(),Date.now()]):(fi&&fi.sort&&fi.sort(),typeof Hi=="function"&&Hi.call(this,cs,fi))}}}if(process.version.substr(0,4)==="v0.8"){var T=N5r(i);fe=T.ReadStream,_t=T.WriteStream}var P=i.ReadStream;P&&(fe.prototype=Object.create(P.prototype),fe.prototype.open=Pe);var V=i.WriteStream;V&&(_t.prototype=Object.create(V.prototype),_t.prototype.open=gt),Object.defineProperty(i,"ReadStream",{get:function(){return fe},set:function(Er){fe=Er},enumerable:!0,configurable:!0}),Object.defineProperty(i,"WriteStream",{get:function(){return _t},set:function(Er){_t=Er},enumerable:!0,configurable:!0});var J=fe;Object.defineProperty(i,"FileReadStream",{get:function(){return J},set:function(Er){J=Er},enumerable:!0,configurable:!0});var ae=_t;Object.defineProperty(i,"FileWriteStream",{get:function(){return ae},set:function(Er){ae=Er},enumerable:!0,configurable:!0});function fe(Er,xn){return this instanceof fe?(P.apply(this,arguments),this):fe.apply(Object.create(fe.prototype),arguments)}function Pe(){var Er=this;ti(Er.path,Er.flags,Er.mode,function(xn,Sr){xn?(Er.autoClose&&Er.destroy(),Er.emit("error",xn)):(Er.fd=Sr,Er.emit("open",Sr),Er.read())})}function _t(Er,xn){return this instanceof _t?(V.apply(this,arguments),this):_t.apply(Object.create(_t.prototype),arguments)}function gt(){var Er=this;ti(Er.path,Er.flags,Er.mode,function(xn,Sr){xn?(Er.destroy(),Er.emit("error",xn)):(Er.fd=Sr,Er.emit("open",Sr))})}function jt(Er,xn){return new i.ReadStream(Er,xn)}function Xt(Er,xn){return new i.WriteStream(Er,xn)}var Wt=i.open;i.open=ti;function ti(Er,xn,Sr,jn){return typeof Sr=="function"&&(jn=Sr,Sr=null),mn(Er,xn,Sr,jn);function mn($t,Kn,Hi,zt,cs){return Wt($t,Kn,Hi,function(fi,jo){fi&&(fi.code==="EMFILE"||fi.code==="ENFILE")?PJ([mn,[$t,Kn,Hi,zt],fi,cs||Date.now(),Date.now()]):typeof zt=="function"&&zt.apply(this,arguments)})}}return i}function PJ(i){tM("ENQUEUE",i[0].name,i[1]),Q_[EI].push(i),JYe()}var nye;function wSt(){for(var i=Date.now(),t=0;t<Q_[EI].length;++t)Q_[EI][t].length>2&&(Q_[EI][t][3]=i,Q_[EI][t][4]=i);JYe()}function JYe(){if(clearTimeout(nye),nye=void 0,Q_[EI].length!==0){var i=Q_[EI].shift(),t=i[0],n=i[1],s=i[2],c=i[3],u=i[4];if(c===void 0)tM("RETRY",t.name,n),t.apply(null,n);else if(Date.now()-c>=6e4){tM("TIMEOUT",t.name,n);var m=n.pop();typeof m=="function"&&m.call(null,s)}else{var b=Date.now()-u,x=Math.max(u-c,1),S=Math.min(x*1.2,100);b>=S?(tM("RETRY",t.name,n),t.apply(null,n.concat([c]))):Q_[EI].push(i)}nye===void 0&&(nye=setTimeout(JYe,0))}}});var K1=qe(BR=>{"use strict";var kSt=Sb().fromCallback,$1=rM(),P5r=["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 $1[i]=="function");Object.assign(BR,$1);P5r.forEach(i=>{BR[i]=kSt($1[i])});BR.exists=function(i,t){return typeof t=="function"?$1.exists(i,t):new Promise(n=>$1.exists(i,n))};BR.read=function(i,t,n,s,c,u){return typeof u=="function"?$1.read(i,t,n,s,c,u):new Promise((m,b)=>{$1.read(i,t,n,s,c,(x,S,F)=>{if(x)return b(x);m({bytesRead:S,buffer:F})})})};BR.write=function(i,t,...n){return typeof n[n.length-1]=="function"?$1.write(i,t,...n):new Promise((s,c)=>{$1.write(i,t,...n,(u,m,b)=>{if(u)return c(u);s({bytesWritten:m,buffer:b})})})};BR.readv=function(i,t,...n){return typeof n[n.length-1]=="function"?$1.readv(i,t,...n):new Promise((s,c)=>{$1.readv(i,t,...n,(u,m,b)=>{if(u)return c(u);s({bytesRead:m,buffers:b})})})};BR.writev=function(i,t,...n){return typeof n[n.length-1]=="function"?$1.writev(i,t,...n):new Promise((s,c)=>{$1.writev(i,t,...n,(u,m,b)=>{if(u)return c(u);s({bytesWritten:m,buffers:b})})})};typeof $1.realpath.native=="function"?BR.realpath.native=kSt($1.realpath.native):process.emitWarning("fs.realpath.native is not a function. Is fs being monkey-patched?","Warning","fs-extra-WARN0003")});var SSt=qe((ONn,CSt)=>{"use strict";var Z5r=ji("path");CSt.exports.checkPath=function(t){if(process.platform==="win32"&&/[<>:"|?*]/.test(t.replace(Z5r.parse(t).root,""))){let s=new Error(`Path contains invalid characters: ${t}`);throw s.code="EINVAL",s}}});var GSt=qe((YNn,jYe)=>{"use strict";var ESt=K1(),{checkPath:FSt}=SSt(),TSt=i=>{let t={mode:511};return typeof i=="number"?i:{...t,...i}.mode};jYe.exports.makeDir=async(i,t)=>(FSt(i),ESt.mkdir(i,{mode:TSt(t),recursive:!0}));jYe.exports.makeDirSync=(i,t)=>(FSt(i),ESt.mkdirSync(i,{mode:TSt(t),recursive:!0}))});var LE=qe((HNn,DSt)=>{"use strict";var V5r=Sb().fromPromise,{makeDir:M5r,makeDirSync:UYe}=GSt(),XYe=V5r(M5r);DSt.exports={mkdirs:XYe,mkdirsSync:UYe,mkdirp:XYe,mkdirpSync:UYe,ensureDir:XYe,ensureDirSync:UYe}});var NP=qe((LNn,RSt)=>{"use strict";var O5r=Sb().fromPromise,NSt=K1();function Y5r(i){return NSt.access(i).then(()=>!0).catch(()=>!1)}RSt.exports={pathExists:O5r(Y5r),pathExistsSync:NSt.existsSync}});var QYe=qe((JNn,WSt)=>{"use strict";var ZJ=K1(),H5r=Sb().fromPromise;async function L5r(i,t,n){let s=await ZJ.open(i,"r+"),c=null;try{await ZJ.futimes(s,t,n)}finally{try{await ZJ.close(s)}catch(u){c=u}}if(c)throw c}function J5r(i,t,n){let s=ZJ.openSync(i,"r+");return ZJ.futimesSync(s,t,n),ZJ.closeSync(s)}WSt.exports={utimesMillis:H5r(L5r),utimesMillisSync:J5r}});var nM=qe((BNn,MSt)=>{"use strict";var VJ=K1(),Eb=ji("path"),PSt=Sb().fromPromise;function B5r(i,t,n){let s=n.dereference?c=>VJ.stat(c,{bigint:!0}):c=>VJ.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 j5r(i,t,n){let s,c=n.dereference?m=>VJ.statSync(m,{bigint:!0}):m=>VJ.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 U5r(i,t,n,s){let{srcStat:c,destStat:u}=await B5r(i,t,s);if(u){if(dre(c,u)){let m=Eb.basename(i),b=Eb.basename(t);if(n==="move"&&m!==b&&m.toLowerCase()===b.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()&&zYe(i,t))throw new Error(sye(i,t,n));return{srcStat:c,destStat:u}}function X5r(i,t,n,s){let{srcStat:c,destStat:u}=j5r(i,t,s);if(u){if(dre(c,u)){let m=Eb.basename(i),b=Eb.basename(t);if(n==="move"&&m!==b&&m.toLowerCase()===b.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()&&zYe(i,t))throw new Error(sye(i,t,n));return{srcStat:c,destStat:u}}async function ZSt(i,t,n,s){let c=Eb.resolve(Eb.dirname(i)),u=Eb.resolve(Eb.dirname(n));if(u===c||u===Eb.parse(u).root)return;let m;try{m=await VJ.stat(u,{bigint:!0})}catch(b){if(b.code==="ENOENT")return;throw b}if(dre(t,m))throw new Error(sye(i,n,s));return ZSt(i,t,u,s)}function VSt(i,t,n,s){let c=Eb.resolve(Eb.dirname(i)),u=Eb.resolve(Eb.dirname(n));if(u===c||u===Eb.parse(u).root)return;let m;try{m=VJ.statSync(u,{bigint:!0})}catch(b){if(b.code==="ENOENT")return;throw b}if(dre(t,m))throw new Error(sye(i,n,s));return VSt(i,t,u,s)}function dre(i,t){return t.ino!==void 0&&t.dev!==void 0&&t.ino===i.ino&&t.dev===i.dev}function zYe(i,t){let n=Eb.resolve(i).split(Eb.sep).filter(c=>c),s=Eb.resolve(t).split(Eb.sep).filter(c=>c);return n.every((c,u)=>s[u]===c)}function sye(i,t,n){return`Cannot ${n} '${i}' to a subdirectory of itself, '${t}'.`}MSt.exports={checkPaths:PSt(U5r),checkPathsSync:X5r,checkParentPaths:PSt(ZSt),checkParentPathsSync:VSt,isSrcSubdir:zYe,areIdentical:dre}});var YSt=qe((jNn,OSt)=>{"use strict";async function Q5r(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})))}OSt.exports={asyncIteratorConcurrentProcess:Q5r}});var jSt=qe((UNn,BSt)=>{"use strict";var Zv=K1(),pre=ji("path"),{mkdirs:z5r}=LE(),{pathExists:q5r}=NP(),{utimesMillis:$5r}=QYe(),fre=nM(),{asyncIteratorConcurrentProcess:K5r}=YSt();async function ePr(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 fre.checkPaths(i,t,"copy",n);if(await fre.checkParentPaths(i,s,t,"copy"),!await LSt(i,t,n))return;let m=pre.dirname(t);await q5r(m)||await z5r(m),await JSt(c,i,t,n)}async function LSt(i,t,n){return n.filter?n.filter(i,t):!0}async function JSt(i,t,n,s){let u=await(s.dereference?Zv.stat:Zv.lstat)(t);if(u.isDirectory())return iPr(u,i,t,n,s);if(u.isFile()||u.isCharacterDevice()||u.isBlockDevice())return tPr(u,i,t,n,s);if(u.isSymbolicLink())return sPr(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 tPr(i,t,n,s,c){if(!t)return HSt(i,n,s,c);if(c.overwrite)return await Zv.unlink(s),HSt(i,n,s,c);if(c.errorOnExist)throw new Error(`'${s}' already exists`)}async function HSt(i,t,n,s){if(await Zv.copyFile(t,n),s.preserveTimestamps){rPr(i.mode)&&await nPr(n,i.mode);let c=await Zv.stat(t);await $5r(n,c.atime,c.mtime)}return Zv.chmod(n,i.mode)}function rPr(i){return(i&128)===0}function nPr(i,t){return Zv.chmod(i,t|128)}async function iPr(i,t,n,s,c){t||await Zv.mkdir(s),await K5r(await Zv.opendir(n),async u=>{let m=pre.join(n,u.name),b=pre.join(s,u.name);if(await LSt(m,b,c)){let{destStat:S}=await fre.checkPaths(m,b,"copy",c);await JSt(S,m,b,c)}}),t||await Zv.chmod(s,i.mode)}async function sPr(i,t,n,s){let c=await Zv.readlink(t);if(s.dereference&&(c=pre.resolve(process.cwd(),c)),!i)return Zv.symlink(c,n);let u=null;try{u=await Zv.readlink(n)}catch(m){if(m.code==="EINVAL"||m.code==="UNKNOWN")return Zv.symlink(c,n);throw m}if(s.dereference&&(u=pre.resolve(process.cwd(),u)),c!==u){if(fre.isSrcSubdir(c,u))throw new Error(`Cannot copy '${c}' to a subdirectory of itself, '${u}'.`);if(fre.isSrcSubdir(u,c))throw new Error(`Cannot overwrite '${u}' with '${c}'.`)}return await Zv.unlink(n),Zv.symlink(c,n)}BSt.exports=ePr});var qSt=qe((XNn,zSt)=>{"use strict";var e2=rM(),mre=ji("path"),aPr=LE().mkdirsSync,oPr=QYe().utimesMillisSync,hre=nM();function cPr(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;
@@ -1672,7 +1672,7 @@ When the user asks you to generate, provide, or create a commit message for stag
1672
1672
  - For complex changes with multiple purposes, use multi-line format with bullet points
1673
1673
  4. **IMPORTANT:** Always append this footer to commit messages:
1674
1674
 
1675
- \u{1F6F8} Generated with [Nova](https://www.compassap.ai/portfolio/command-line-interface.html)
1675
+ \u{1F6F8} Generated with [Nova](https://www.compassap.ai/portfolio/nova.html)
1676
1676
 
1677
1677
  # Documentation Writing
1678
1678
 
@@ -1687,7 +1687,7 @@ When writing documentation files (README, guides, API docs, markdown files, etc.
1687
1687
  2. **IMPORTANT:** Always append this attribution at the end of the document:
1688
1688
 
1689
1689
  ---
1690
- Co-authored by [Nova](https://www.compassap.ai/portfolio/command-line-interface.html)
1690
+ Co-authored by [Nova](https://www.compassap.ai/portfolio/nova.html)
1691
1691
 
1692
1692
  # Code References
1693
1693
 
@@ -3110,7 +3110,7 @@ ${krn}
3110
3110
  Try running with %s or get access `,B.cyan("sudo"))+`
3111
3111
  to the local update config store via
3112
3112
  `+B.cyan(Hqe(" sudo chown -R $USER:$(id -gn $USER) %s ",Hj));WO.on("exit",()=>{console.error(E3(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)&&Uan(WO.execPath,[XJt.join(Qan,"check.js"),JSON.stringify(this.#t)],{detached:!0,stdio:"ignore"}).unref())}async fetchInfo(){let{distTag:t}=this.#t,n=await Nqe(this._packageName,{version:t});return{latest:n,current:this.#r,type:(0,QJt.default)(this.#r,n)??t,name:this._packageName}}notify(t){let n=!this._shouldNotifyInNpmScript&&NJt;if(!WO.stdout.isTTY||n||!this.update||!(0,zJt.default)(this.update.latest,this.update.current))return this;t={isGlobal:JJt,...t};let s=t.isGlobal?`npm i -g ${this._packageName}`:`npm i ${this._packageName}`,c="Update available "+B.dim("{currentVersion}")+B.reset(" \u2192 ")+B.green("{latestVersion}")+`
3113
- Run `+B.cyan("{updateCommand}")+" to update",u=t.message||c;t.boxenOptions??={padding:1,margin:1,textAlignment:"center",borderColor:"yellow",borderStyle:"round"};let m=E3(Yqe(u,{packageName:this._packageName,currentVersion:this.update.current,latestVersion:this.update.latest,updateCommand:s}),t.boxenOptions);return t.defer===!1?console.error(m):WO.on("exit",()=>{console.error(m)}),this}};function Lqe(i){let t=new dse(i);return t.check(),t}Yd();var H2e=Ra(Fqe(),1);TM();sf();Vp();Js();import{readFile as qan}from"fs/promises";import Uqe from"path";import{fileURLToPath as $an}from"url";var qJt="@compass-ai/nova",$Jt="1.0.40",KJt="1.0.0",Kan=$an(import.meta.url),eon=Uqe.dirname(Kan),Jqe=Uqe.resolve(eon,"../../package.json"),ton="update-cache.json",ron={checkOnStartup:!0,checkInterval:4,showNotifications:!0,notificationStyle:"banner",includePrerelease:!1},jqe=class i{config;cache;cacheFilePath;packageJson;constructor(t,n){this.config=t,this.packageJson=n,this.cacheFilePath=Uqe.join(Hc(),ton),this.cache={history:[],cacheVersion:KJt}}static async create(t){let n={...ron,...t},s={name:qJt,version:$Jt};try{if(H.debug("Update service: resolving package.json",{path:Jqe}),await _a(Jqe)){let u=await qan(Jqe,"utf-8"),m=JSON.parse(u);s={name:m.name||qJt,version:m.version||$Jt},H.debug("Update service: loaded package.json",{name:s.name,version:s.version,source:"package.json"})}else H.debug("Update service: package.json not found, using fallback",{name:s.name,version:s.version,source:"fallback"})}catch(u){H.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 Fc(Hc()),await _a(this.cacheFilePath)){let t=await Vm(this.cacheFilePath);t&&t.cacheVersion===KJt&&(this.cache=t)}}catch(t){H.debug("Failed to load update cache",t)}}async saveCache(){try{await Fc(Hc()),await d0(this.cacheFilePath,this.cache)}catch(t){H.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)H.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 H.debug("Skipping update check - within interval"),this.cache.lastCheck}H.debug("Checking for updates...");let c=await Lqe({pkg:this.packageJson,updateCheckInterval:0}).fetchInfo();return c&&c.latest&&H2e.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&&H2e.default.prerelease(c.latest)&&(n.updateAvailable=!1,n.latestVersion=void 0,n.updateType=void 0)):c&&c.latest&&H2e.default.lt(c.latest,this.packageJson.version)&&H.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",H.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 B.gray(`Update available: ${t} -> `)+c(n)+B.gray(` (npm i -g ${this.packageJson.name})`)}formatBannerNotification(t,n,s){let c=this.getUpdateTypeColor(s),u=s?` (${s})`:"",m=[`Update available! ${B.dim(t)} ${B.reset("\u2192")} ${c(n)}${B.dim(u)}`,"",`Run ${B.cyan(`npm i -g ${this.packageJson.name}`)} to update`].join(`
3113
+ Run `+B.cyan("{updateCommand}")+" to update",u=t.message||c;t.boxenOptions??={padding:1,margin:1,textAlignment:"center",borderColor:"yellow",borderStyle:"round"};let m=E3(Yqe(u,{packageName:this._packageName,currentVersion:this.update.current,latestVersion:this.update.latest,updateCommand:s}),t.boxenOptions);return t.defer===!1?console.error(m):WO.on("exit",()=>{console.error(m)}),this}};function Lqe(i){let t=new dse(i);return t.check(),t}Yd();var H2e=Ra(Fqe(),1);TM();sf();Vp();Js();import{readFile as qan}from"fs/promises";import Uqe from"path";import{fileURLToPath as $an}from"url";var qJt="@compass-ai/nova",$Jt="1.0.42",KJt="1.0.0",Kan=$an(import.meta.url),eon=Uqe.dirname(Kan),Jqe=Uqe.resolve(eon,"../../package.json"),ton="update-cache.json",ron={checkOnStartup:!0,checkInterval:4,showNotifications:!0,notificationStyle:"banner",includePrerelease:!1},jqe=class i{config;cache;cacheFilePath;packageJson;constructor(t,n){this.config=t,this.packageJson=n,this.cacheFilePath=Uqe.join(Hc(),ton),this.cache={history:[],cacheVersion:KJt}}static async create(t){let n={...ron,...t},s={name:qJt,version:$Jt};try{if(H.debug("Update service: resolving package.json",{path:Jqe}),await _a(Jqe)){let u=await qan(Jqe,"utf-8"),m=JSON.parse(u);s={name:m.name||qJt,version:m.version||$Jt},H.debug("Update service: loaded package.json",{name:s.name,version:s.version,source:"package.json"})}else H.debug("Update service: package.json not found, using fallback",{name:s.name,version:s.version,source:"fallback"})}catch(u){H.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 Fc(Hc()),await _a(this.cacheFilePath)){let t=await Vm(this.cacheFilePath);t&&t.cacheVersion===KJt&&(this.cache=t)}}catch(t){H.debug("Failed to load update cache",t)}}async saveCache(){try{await Fc(Hc()),await d0(this.cacheFilePath,this.cache)}catch(t){H.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)H.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 H.debug("Skipping update check - within interval"),this.cache.lastCheck}H.debug("Checking for updates...");let c=await Lqe({pkg:this.packageJson,updateCheckInterval:0}).fetchInfo();return c&&c.latest&&H2e.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&&H2e.default.prerelease(c.latest)&&(n.updateAvailable=!1,n.latestVersion=void 0,n.updateType=void 0)):c&&c.latest&&H2e.default.lt(c.latest,this.packageJson.version)&&H.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",H.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 B.gray(`Update available: ${t} -> `)+c(n)+B.gray(` (npm i -g ${this.packageJson.name})`)}formatBannerNotification(t,n,s){let c=this.getUpdateTypeColor(s),u=s?` (${s})`:"",m=[`Update available! ${B.dim(t)} ${B.reset("\u2192")} ${c(n)}${B.dim(u)}`,"",`Run ${B.cyan(`npm i -g ${this.packageJson.name}`)} to update`].join(`
3114
3114
  `);return E3(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",b=["",B.bold.cyan(` ${m} Update Available!`),"",` ${B.gray("Current version:")} ${t}`,` ${B.gray("Latest version:")} ${u(n)}`,""];c&&(b.push(` ${B.gray("Release notes:")} ${B.underline.blue(c)}`),b.push("")),b.push(` ${B.gray("To update, run:")} ${B.cyan(`npm i -g ${this.packageJson.name}`)}`),b.push("");let x=b.join(`
3115
3115
  `);return E3(x,{padding:0,margin:1,borderStyle:"double",borderColor:this.getUpdateTypeBorderColor(s)})}getUpdateTypeColor(t){switch(t){case"major":return B.red;case"minor":return B.yellow;case"patch":return B.green;case"prerelease":return B.magenta;default:return B.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 H.output(B.green("You are already on the latest version!")),!0;let s=this.packageJson.version,c=n.latestVersion;H.output(""),H.output(B.cyan(`Updating Compass CLI from ${s} to ${c}...`)),H.output("");try{let u=this.getUpdateCommand(t);H.output(B.gray(`Running: ${u}`)),H.output("");let{stdout:m}=await Rb(u,{shell:!0});return m&&H.output(m),await this.recordUpdateHistory(s,c,!0,t),H.output(""),H.output(B.green(`Successfully updated to version ${c}!`)),H.output(B.gray("Please restart Compass CLI to use the new version.")),H.output(""),!0}catch(u){let m=u instanceof Error?u.message:"Update failed";return await this.recordUpdateHistory(s,c,!1,t,m),H.output(""),H.output(B.red(`Update failed: ${m}`)),H.output(""),H.output(B.gray("You can try updating manually:")),H.output(B.cyan(` ${this.getUpdateCommand(t)}`)),H.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 Rb("yarn",["global","list","--depth=0"],{shell:!0,reject:!1});if(t&&t.includes(this.packageJson.name))return"yarn"}catch{}try{let{stdout:t}=await Rb("pnpm",["list","-g","--depth=0"],{shell:!0,reject:!1});if(t&&t.includes(this.packageJson.name))return"pnpm"}catch{}return"npm"}},Bqe=null;async function D3(i){return Bqe||(Bqe=await jqe.create(i)),Bqe}async function eBt(i,t=!1){H.debug("Auto-update: starting startup update check",{force:t});let n=await D3(i),s=n.getVersionInfo();try{let c=await n.checkForUpdates(t);if(H.debug("Auto-update: check completed",{updateAvailable:c.updateAvailable,currentVersion:c.currentVersion,latestVersion:c.latestVersion}),!c.updateAvailable||!c.latestVersion)return H.debug("Auto-update: no update available"),{updated:!1};let u=s.currentVersion,m=c.latestVersion,b=await n.detectPackageManager();return H.debug("Auto-update: detected package manager",{packageManager:b}),await n.performUpdate(b)?{updated:!0,fromVersion:u,toVersion:m}:(H.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 H.debug("Auto-update: error during update",{error:u}),console.log(B.yellow(`\u26A0 Auto-update check failed: ${u}`)),console.log(B.dim(` You can manually update with: npm i -g ${s.packageName}`)),console.log(""),{updated:!1,error:u}}}Js();af();function pd(i,t=!1){let n=qs();H.debug(`[updateHandler] Emitting output: ${i.substring(0,50)}`),n.emit("slash-command-output",{command:"update",message:i,isError:t})}function non(i){switch(i){case"major":return B.red;case"minor":return B.yellow;case"patch":return B.green;case"prerelease":return B.magenta;default:return B.cyan}}function ion(i){switch(i){case"major":return"red";case"minor":return"yellow";case"patch":return"green";case"prerelease":return"magenta";default:return"cyan"}}async function son(i){if(!i.updateAvailable||!i.latestVersion)return;let n=(await D3()).getVersionInfo(),s=non(i.updateType),c=i.updateType?` (${i.updateType})`:"",u=[`Update available! ${B.dim(i.currentVersion)} ${B.reset("\u2192")} ${s(i.latestVersion)}${B.dim(c)}`,"",`Run ${B.cyan(`npm i -g ${n.packageName}`)} to update`].join(`
3116
3116
  `),m=E3(u,{padding:1,margin:1,borderStyle:"round",borderColor:ion(i.updateType),title:"Compass CLI Update",titleAlignment:"center"});pd(m)}function aon(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 oon(){let i=["",B.bold.cyan("Update Command"),B.dim("\u2500".repeat(40)),"",B.white("Check for and install updates to Compass CLI."),"",B.bold("Usage:"),` ${B.cyan("/update")} Check for updates`,` ${B.cyan("/update check")} Check for updates (same as above)`,` ${B.cyan("/update install")} Install available update`,` ${B.cyan("/update now")} Install update immediately`,` ${B.cyan("/update history")} Show update history`,` ${B.cyan("/update version")} Show version information`,"",B.bold("Options:"),` ${B.yellow("--force, -f")} Force check (ignore interval)`,` ${B.yellow("--npm")} Use npm for installation`,` ${B.yellow("--yarn")} Use yarn for installation`,` ${B.yellow("--pnpm")} Use pnpm for installation`,"",B.bold("Examples:"),` ${B.gray("/update")} # Check if update is available`,` ${B.gray("/update install --yarn")} # Install with yarn`,` ${B.gray("/update -f")} # Force update check`,""];pd(i.join(`
@@ -3120,7 +3120,7 @@ Run `+B.cyan("{updateCommand}")+" to update",u=t.message||c;t.boxenOptions??={pa
3120
3120
  ${B.dim(m)}`}else if(i.data){let m=Object.keys(i.data);if(m.length>0){let b=m.slice(0,3).map(x=>{let S=i.data[x];return typeof S=="string"&&S.length>30?`${x}=${S.substring(0,27)}...`:`${x}=${S}`}).join(", ");u+=` ${B.dim(b)}`}}return u}async function PO(i){let t=[];if(!await ZO.default.pathExists(i))return t;let n=ZO.default.createReadStream(i),s=don.createInterface({input:n,crlfDelay:1/0});for await(let c of s)if(c.trim())try{t.push(JSON.parse(c))}catch{}return t}function fon(i){let t=J2e.join(su(i),".logs"),n=new Date,s=String(n.getDate()).padStart(2,"0"),c=String(n.getMonth()+1).padStart(2,"0"),u=String(n.getFullYear()).slice(-2);return J2e.join(t,`system-${s}-${c}-${u}.jsonl`)}async function mon(i){let t=J2e.join(su(i),".logs");return await ZO.default.pathExists(t)?(await ZO.default.readdir(t)).filter(s=>s.startsWith("system-")&&s.endsWith(".jsonl")).sort().reverse():[]}function tBt(i){let t={},n={debug:0,info:0,warn:0,error:0};for(let c of i)t[c.event]=(t[c.event]||0)+1,n[c.level]++;console.log(""),console.log(B.bold.cyan("Event Summary")),console.log(B.dim("\u2500".repeat(45))),console.log(` ${B.gray("Total Events:")} ${i.length}`),console.log(` ${B.blue("Info:")} ${n.info}`),console.log(` ${B.yellow("Warn:")} ${n.warn}`),console.log(` ${B.red("Error:")} ${n.error}`),console.log(` ${B.gray("Debug:")} ${n.debug}`),console.log(""),console.log(B.bold("By Type:"));let s=Object.entries(t).sort((c,u)=>u[1]-c[1]).slice(0,10);for(let[c,u]of s){let m=rBt[c]||"\u2022";console.log(` ${m} ${c}: ${u}`)}console.log("")}var B2e=async i=>{try{let t=process.cwd(),s=il().getLogFilePath()||fon(t);switch(i[0]?.toLowerCase()){case"list":case"ls":case"l":{let u=await mon(t);if(console.log(""),console.log(B.bold.cyan("Available Log Files")),console.log(B.dim("\u2500".repeat(45))),u.length===0)console.log(B.gray(" No log files found."));else for(let m of u){let b=J2e.join(su(t),".logs",m),S=((await ZO.default.stat(b)).size/1024).toFixed(1);console.log(` ${b===s?B.green("*"):" "} ${m} ${B.gray(`(${S} KB)`)}`)}console.log("");break}case"tail":case"t":{let u=parseInt(i[1])||20,b=(await PO(s)).slice(-u);if(console.log(""),console.log(B.bold.cyan(`Last ${b.length} Events`)),console.log(B.dim("\u2500".repeat(60))),b.length===0)console.log(B.gray(" No events recorded yet."));else for(let x of b)console.log(pse(x,!1));console.log("");break}case"filter":case"f":{let u=i[1]?.toLowerCase();if(!u){console.log(B.yellow("Usage: /logs filter <event-type|level>")),console.log(B.gray("Example: /logs filter error")),console.log(B.gray("Example: /logs filter bash_executed"));return}let b=(await PO(s)).filter(x=>x.event.toLowerCase().includes(u)||x.level.toLowerCase()===u||x.component.toLowerCase().includes(u));if(console.log(""),console.log(B.bold.cyan(`Filtered Events (${u})`)),console.log(B.dim("\u2500".repeat(60))),b.length===0)console.log(B.gray(` No events matching "${u}".`));else{let x=b.slice(-30);for(let S of x)console.log(pse(S,!1));b.length>30&&console.log(B.gray(` ... and ${b.length-30} more events`))}console.log("");break}case"errors":case"e":{let m=(await PO(s)).filter(b=>b.level==="error"||b.level==="warn");if(console.log(""),console.log(B.bold.cyan("Errors and Warnings")),console.log(B.dim("\u2500".repeat(60))),m.length===0)console.log(B.green(" No errors or warnings recorded."));else{let b=m.slice(-30);for(let x of b)console.log(pse(x,!0));m.length>30&&console.log(B.gray(` ... and ${m.length-30} more`))}console.log("");break}case"verbose":case"v":{let u=parseInt(i[1])||10,b=(await PO(s)).slice(-u);if(console.log(""),console.log(B.bold.cyan(`Last ${b.length} Events (Verbose)`)),console.log(B.dim("\u2500".repeat(60))),b.length===0)console.log(B.gray(" No events recorded yet."));else for(let x of b)console.log(pse(x,!0)),console.log("");break}case"summary":case"s":{let u=await PO(s);tBt(u);break}case"path":case"p":{console.log(""),console.log(B.bold.cyan("Log File Location")),console.log(B.dim("\u2500".repeat(45))),console.log(` ${B.gray("Current:")} ${s}`),console.log(` ${B.gray("Exists:")} ${await ZO.default.pathExists(s)?B.green("Yes"):B.yellow("No")}`),console.log("");break}case"json":{let u=parseInt(i[1])||10,b=(await PO(s)).slice(-u);console.log(JSON.stringify(b,null,2));break}case"help":case"h":case"?":{console.log(""),console.log(B.bold.cyan("/logs - System Event Log Viewer")),console.log(B.dim("\u2500".repeat(45))),console.log(" Usage:"),console.log(` ${B.yellow("/logs")} Show last 20 events`),console.log(` ${B.yellow("/logs tail [N]")} Show last N events`),console.log(` ${B.yellow("/logs errors")} Show errors and warnings`),console.log(` ${B.yellow("/logs filter <X>")} Filter by type/level/component`),console.log(` ${B.yellow("/logs summary")} Show event statistics`),console.log(` ${B.yellow("/logs verbose [N]")} Show N events with full data`),console.log(` ${B.yellow("/logs list")} List available log files`),console.log(` ${B.yellow("/logs path")} Show log file location`),console.log(` ${B.yellow("/logs json [N]")} Output raw JSON`),console.log(""),console.log(B.gray(" Event Types: session, bash, file, tool, workflow, approval,")),console.log(B.gray(" config, mcp, context, api, cache, error")),console.log("");break}default:{let u=await PO(s);if(u.length===0){console.log(""),console.log(B.yellow(" No system events recorded yet.")),console.log(B.gray(" Events will appear as you interact with the system.")),console.log("");return}tBt(u);let m=u.slice(-20);console.log(B.bold("Recent Events:")),console.log(B.dim("\u2500".repeat(60)));for(let b of m)console.log(pse(b,!1));u.length>20&&console.log(B.gray(` ... and ${u.length-20} more events`)),console.log(""),console.log(B.gray(" Tip: Use /logs help for more options")),console.log("");break}}}catch(t){H.error("Failed to display logs",t),console.log(""),console.log(B.red("Failed to read system event logs.")),t instanceof Error&&console.log(B.red(` ${t.message}`)),console.log("")}};var Qqe={name:"logs",aliases:["events","syslog"],description:"View system event logs for debugging and auditing",usage:"/logs [tail|errors|filter|summary|verbose|list|path|json|help] [args]",examples:["/logs","/logs tail 50","/logs errors","/logs filter bash","/logs summary"],handler:B2e};Yd();tO();rie();Kve();Js();Db();$M();af();import{exec as hon}from"child_process";function _on(i){return new Promise(t=>{let n=process.platform,s;n==="win32"?s=`start "" "${i}"`:n==="darwin"?s=`open "${i}"`:s=`xdg-open "${i}"`,hon(s,c=>{c?(H.debug(`Failed to open browser: ${c.message}`),t(!1)):t(!0)})})}function gr(i,t=!1){qs().emit("slash-command-output",{command:"mcp",message:i,isError:t})}function nBt(i){switch(i){case"http":return B.cyan("HTTP");case"sse":return B.yellow("SSE");case"stdio":return B.green("stdio");default:return B.gray(i)}}async function gon(){let i=g0(),t=i.getAllServerStates();if(gr(""),gr(B.bold("MCP Server Status")),gr(B.dim("\u2500".repeat(50))),t.length===0){gr(""),gr(B.gray("No MCP servers configured.")),gr(""),gr(B.gray("Add servers using:")),gr(B.gray(" compass mcp add --transport http <name> <url>")),gr("");return}let n=t.filter(S=>S.status==="connected").length,s=t.length,c=i.getAllTools().length,u=i.getAllResources().length,m=i.getAllPrompts().length;gr(""),gr(`${B.gray("Connected:")} ${n}/${s} servers`),gr(`${B.gray("Tools:")} ${c}`),gr(`${B.gray("Resources:")} ${u}`),gr(`${B.gray("Prompts:")} ${m}`),gr("");let b=!1,x=!1;for(let S of t){let F=S.status==="connected"?B.green("\u25CF"):S.status==="error"?B.red("\u25CF"):B.gray("\u25CB");gr(`${F} ${B.bold(S.config.name)} ${B.gray(`(${nBt(S.config.type)})`)}`),S.status==="connected"?gr(` ${B.gray("Tools:")} ${S.tools.length}, ${B.gray("Resources:")} ${S.resources.length}, ${B.gray("Prompts:")} ${S.prompts.length}`):S.status==="error"?gr(` ${B.red(S.error||"Unknown error")}`):S.error&&(gr(` ${B.yellow(S.error)}`),S.error==="Awaiting approval"&&(b=!0),S.error.includes("Authentication required")&&(x=!0))}gr(""),b&&(gr(B.yellow("Tip: Approve project servers with /mcp approve <server-name>")),gr("")),x&&(gr(B.yellow("Tip: Authenticate servers with /mcp auth <server-name> <token>")),gr("")),gr(B.gray("Commands: /mcp servers | /mcp tools | /mcp connect | /mcp approve")),gr("")}async function yon(){let i=Ny();await i.load(process.cwd());let t=i.getAllServers(process.cwd());if(gr(""),gr(B.bold("Configured MCP Servers")),gr(B.dim("\u2500".repeat(50))),t.length===0){gr(B.gray("No servers configured.")),gr("");return}for(let n of t){let s=nBt(n.type),c=B.gray(`[${n.scope||"local"}]`);if(gr(""),gr(`${B.bold(n.name)} ${s} ${c}`),Fx(n)||Tx(n))gr(` ${B.gray("URL:")} ${n.url}`);else if(m2(n)){let u=n.args?`${n.command} ${n.args.join(" ")}`:n.command;gr(` ${B.gray("Command:")} ${u}`)}n.source==="plugin"&&gr(` ${B.gray("Plugin:")} ${n.pluginName}`)}gr("")}async function bon(){let t=g0().getAllTools();if(gr(""),gr(B.bold("Available MCP Tools")),gr(B.dim("\u2500".repeat(50))),t.length===0){gr(B.gray("No tools available.")),gr(B.gray("Connect to MCP servers first with /mcp connect")),gr("");return}let n=new Map;for(let s of t){let c=s.serverName||"unknown";n.has(c)||n.set(c,[]),n.get(c).push(s)}for(let[s,c]of n){gr(""),gr(B.bold.cyan(s));for(let u of c)gr(` ${B.white(u.name)}`),u.description&&gr(` ${B.gray(u.description)}`)}gr(""),gr(B.gray(`Total: ${t.length} tool(s)`)),gr("")}async function Ion(){let t=g0().getAllResources();if(gr(""),gr(B.bold("Available MCP Resources")),gr(B.dim("\u2500".repeat(50))),t.length===0){gr(B.gray("No resources available.")),gr("");return}for(let n of t)gr(` ${B.white(n.name)} ${B.gray(`(${n.serverName})`)}`),gr(` ${B.gray("URI:")} ${n.uri}`),n.description&&gr(` ${B.gray(n.description)}`);gr("")}async function von(){let t=g0().getAllPrompts();if(gr(""),gr(B.bold("Available MCP Prompts")),gr(B.dim("\u2500".repeat(50))),t.length===0){gr(B.gray("No prompts available.")),gr("");return}for(let n of t)if(gr(` ${B.white(n.name)} ${B.gray(`(${n.serverName})`)}`),n.description&&gr(` ${B.gray(n.description)}`),n.arguments&&n.arguments.length>0){let s=n.arguments.map(c=>c.required?c.name:`[${c.name}]`).join(", ");gr(` ${B.gray("Args:")} ${s}`)}gr("")}async function xon(){gr(""),gr(B.cyan("Connecting to MCP servers..."));try{let i=g0();await i.initialize(process.cwd()),await i.connectAllServers();let t=i.getConnectedCount(),n=i.getTotalCount();gr(""),t===n?gr(B.green(`All ${n} server(s) connected successfully.`)):(gr(B.yellow(`Connected ${t}/${n} server(s).`)),gr(B.gray("Use /mcp to see server status and errors."))),gr("")}catch(i){let t=i instanceof Error?i.message:String(i);gr(B.red(`Failed to connect: ${t}`)),gr("")}}async function won(){gr(""),gr(B.cyan("Disconnecting from MCP servers..."));try{await g0().disconnectAllServers(),gr(B.green("Disconnected from all servers.")),gr("")}catch(i){let t=i instanceof Error?i.message:String(i);gr(B.red(`Failed to disconnect: ${t}`)),gr("")}}async function j2e(i,t){let n=yUe(i),s=$ve(i);if(!(!n||!s)){if(gr(""),gr(B.yellow("\u2501".repeat(50))),gr(B.yellow.bold(`OAuth Restricted: ${s.name}`)),gr(B.yellow("\u2501".repeat(50))),gr(""),gr(B.white(n.reason)),gr(""),s.approvedClients&&s.approvedClients.length>0&&(gr(B.gray("Approved clients: ")+s.approvedClients.join(", ")),gr("")),gr(B.cyan.bold(`Alternative: ${n.name}`)),gr(""),n.requirements&&n.requirements.length>0){gr(B.white("Requirements:"));for(let c of n.requirements)gr(B.gray(` \u2022 ${c}`));gr("")}if(n.setupInstructions&&n.setupInstructions.length>0){gr(B.white("Setup Instructions:"));for(let c of n.setupInstructions)gr(B.gray(` ${c}`));gr("")}s.name==="figma"&&(gr(B.cyan("Checking local Figma server availability...")),await u6t()?(gr(B.green("\u2713 Local Figma MCP server is running!")),gr(""),gr(B.white("To use it, update your .mcp.json:")),gr(""),gr(B.gray(" {")),gr(B.gray(' "mcpServers": {')),gr(B.gray(` "${t}": {`)),gr(B.gray(' "type": "http",')),gr(B.gray(' "url": "http://127.0.0.1:3845/mcp",')),gr(B.gray(' "enabled": true')),gr(B.gray(" }")),gr(B.gray(" }")),gr(B.gray(" }")),gr(""),gr(B.cyan("Then run: /mcp connect"))):(gr(B.yellow("\u2717 Local Figma MCP server not detected.")),gr(B.gray(" Follow the setup instructions above to enable it."))),gr("")),gr(B.gray("For more information, see: docs/mcp-authentication.md")),gr("")}}async function Aon(i,t){if(!i){gr(""),gr(B.yellow("Please specify a server name: /mcp auth <server-name> [token]")),gr(""),gr(B.gray("Examples:")),gr(B.gray(" /mcp auth figma - Start OAuth flow (if configured)")),gr(B.gray(" /mcp auth figma figd_abc123... - Set API token directly")),gr("");return}let c=g0().getServerState(i)?.config;if(!c){let S=Ny();await S.load(process.cwd()),c=S.getServer(i,process.cwd())}if(!c){gr(""),gr(B.red(`Server not found: ${i}`)),gr("");return}let u=await KM();if(t){gr(""),gr(B.cyan(`Setting API token for ${i}...`));try{await u.setApiToken(i,t),gr(B.green(`\u2713 API token stored for '${i}'`)),gr(B.cyan(" Connecting..."));let F=await g0().connectServer(i);F.status==="connected"?gr(B.green(`\u2713 Connected - ${F.tools.length} tool(s), ${F.resources.length} resource(s), ${F.prompts.length} prompt(s)`)):F.error&&(gr(B.yellow(`\u26A0 Connection issue: ${F.error}`)),F.error.includes("Authentication required")&&gr(B.gray(" The token may be invalid or expired. Try with a different token."))),gr("");return}catch(S){let F=S instanceof Error?S.message:String(S);gr(B.red(`Failed to set token: ${F}`)),gr("");return}}let m;if((Fx(c)||Tx(c))&&(m=c.url),m){let S=$ve(m);S?.oauthRestricted&&(gr(""),gr(B.yellow(`Note: ${S.name} restricts OAuth to approved clients.`)),gr(B.gray(`Approved clients: ${S.approvedClients?.join(", ")||"Unknown"}`)),gr(B.gray("Kore-CLI may not be able to authenticate with the remote server.")),gr(""),gr(B.cyan("Attempting OAuth flow anyway...")))}let b=c.oauth?.authorizationUrl&&c.oauth?.tokenUrl,x=c.oauth&&!b;if(gr(""),b)gr(B.cyan(`Starting OAuth authentication for ${i}...`));else if(m)gr(x?B.cyan(`Discovering OAuth endpoints for ${i} (using configured credentials)...`):B.cyan(`Discovering OAuth configuration for ${i}...`));else{gr(B.yellow(`Server '${i}' requires authentication.`)),gr(""),gr(B.white("To authenticate, provide your API token:")),gr(""),gr(B.cyan(` /mcp auth ${i} <your-api-token>`)),gr(""),gr(B.gray("You can usually find your API token in the service's settings or developer portal.")),gr("");return}try{let S,F;if(b){let ae=await u.startAuthFlow(i,c.oauth);if(ae.error||!ae.authUrl){gr(""),gr(B.red(`Failed to start auth flow: ${ae.error||"Unknown error"}`)),gr("");return}S=ae.authUrl}else{let ae=await u.startAuthFlowWithDiscovery(i,m,c.oauth);if(ae.error||!ae.authUrl){gr(""),gr(B.yellow(`Could not discover OAuth for '${i}'.`)),gr(""),gr(B.white("To authenticate, provide your API token:")),gr(""),gr(B.cyan(` /mcp auth ${i} <your-api-token>`)),gr(""),gr(B.gray("You can usually find your API token in the service's settings or developer portal.")),gr(""),qs().emit("mcp-token-required",{serverName:i,message:`Authentication required for '${i}'. Provide an API token.`});return}S=ae.authUrl,F=ae.discoveredConfig}gr(""),await _on(S)?gr(B.green(" \u2713 Opening browser for authentication...")):(gr(B.yellow(" Could not open browser automatically.")),gr(B.white(" Please open this URL manually:")),gr(""),gr(B.cyan(` ${S}`))),gr(""),gr(B.gray(" Waiting for authentication..."));let T=300*1e3,P=1e3,V=Date.now(),J=c.oauth||F;for(;Date.now()-V<T;){await new Promise(fe=>setTimeout(fe,P));let ae=J?await u.completeAuthFlowWithConfig(i,J):{success:!1,error:"No OAuth config available"};if(ae.success){gr(""),gr(B.green(`\u2713 Authentication successful for '${i}'!`)),gr(B.cyan(" Reconnecting..."));try{let Pe=await g0().connectServer(i);Pe.status==="connected"?gr(B.green(`\u2713 Connected - ${Pe.tools.length} tool(s), ${Pe.resources.length} resource(s), ${Pe.prompts.length} prompt(s)`)):Pe.error&&(gr(B.yellow(`\u26A0 ${Pe.error}`)),m&&(Pe.error.includes("MCP remote server is not enabled")||Pe.error.includes("not enabled")||Pe.error.includes("not authorized"))&&await j2e(m,i))}catch(fe){H.warn(`Failed to reconnect to '${i}'`,fe),gr(B.yellow("\u26A0 Failed to reconnect. Use /mcp connect to retry."))}gr("");return}if(ae.error&&!ae.error.includes("No pending OAuth flow")){gr(""),gr(B.red(`Authentication failed: ${ae.error}`)),m&&(ae.error.includes("Forbidden")||ae.error.includes("not enabled")||ae.error.includes("not authorized")||ae.error.includes("client not approved"))&&await j2e(m,i),gr("");return}}gr(""),gr(B.red("Authentication timed out after 5 minutes.")),gr("")}catch(S){let F=S instanceof Error?S.message:String(S);gr(B.red(`Failed to authenticate: ${F}`)),m&&(F.includes("Forbidden")||F.includes("not enabled")||F.includes("not authorized"))&&await j2e(m,i),gr("")}}async function kon(i){if(!i){gr(""),gr(B.yellow("Please specify a server name: /mcp clear-auth <server-name>")),gr("");return}try{await(await KM()).clearAuth(i),gr(""),gr(B.green(`Cleared authentication for ${i}`)),gr("")}catch(t){let n=t instanceof Error?t.message:String(t);gr(B.red(`Failed to clear auth: ${n}`)),gr("")}}async function Con(i){if(!i){gr(""),gr(B.yellow("Please specify a server name: /mcp refresh <server-name>")),gr("");return}try{let t=g0();await t.refreshServer(i);let n=t.getServerState(i);n&&(gr(""),gr(B.green(`Refreshed ${i}:`)),gr(` ${B.gray("Tools:")} ${n.tools.length}`),gr(` ${B.gray("Resources:")} ${n.resources.length}`),gr(` ${B.gray("Prompts:")} ${n.prompts.length}`),gr(""))}catch(t){let n=t instanceof Error?t.message:String(t);gr(B.red(`Failed to refresh: ${n}`)),gr("")}}async function Son(i){if(!i){gr(""),gr(B.yellow("Please specify a server name: /mcp approve <server-name>")),gr("");return}try{let t=Ny();await t.load(process.cwd());let n=t.getServer(i,process.cwd());if(!n){gr(""),gr(B.red(`Server not found: ${i}`)),gr("");return}if(n.scope!=="project"){gr(""),gr(B.yellow(`Server '${i}' is not a project-scoped server and doesn't require approval.`)),gr("");return}let s=t.generateConfigHash(n);await t.setProjectServerApproval(process.cwd(),i,!0,s),gr(""),gr(B.green(`Approved server '${i}'.`));try{gr(B.cyan("Connecting...")),m2(n)&&n.command==="npx"&&gr(B.gray("First run may take up to 60 seconds to download packages..."));let u=await g0().connectServer(i);u.status==="connected"?gr(B.green(`\u2713 Connected - ${u.tools.length} tool(s), ${u.resources.length} resource(s), ${u.prompts.length} prompt(s)`)):u.error&&(gr(B.yellow(`\u26A0 Connection issue: ${u.error}`)),gr(B.gray("Use /mcp connect to retry.")))}catch(c){H.warn(`Failed to auto-connect to '${i}'`,c),gr(B.yellow("\u26A0 Failed to connect. Use /mcp connect to retry."))}gr("")}catch(t){let n=t instanceof Error?t.message:String(t);gr(B.red(`Failed to approve: ${n}`)),gr("")}}async function Eon(i){if(!i){gr(""),gr(B.yellow("Please specify a server name: /mcp fallback <server-name>")),gr("");return}let s=g0().getServerState(i)?.config;if(!s){let m=Ny();await m.load(process.cwd()),s=m.getServer(i,process.cwd())}if(!s){gr(""),gr(B.red(`Server not found: ${i}`)),gr("");return}let c;if((Fx(s)||Tx(s))&&(c=s.url),!c){gr(""),gr(B.yellow(`Server '${i}' is not an HTTP/SSE server.`)),gr(B.gray("Fallback information is only available for remote HTTP servers.")),gr("");return}if(!yUe(c)){gr(""),gr(B.green(`Server '${i}' does not have known OAuth restrictions.`)),gr(B.gray("No fallback configuration is registered for this server.")),gr("");return}await j2e(c,i)}async function Fon(i){if(!i){gr(""),gr(B.yellow("Please specify a server name: /mcp deny <server-name>")),gr("");return}try{let t=Ny();if(await t.load(process.cwd()),!t.getServer(i,process.cwd())){gr(""),gr(B.red(`Server not found: ${i}`)),gr("");return}await t.setProjectServerApproval(process.cwd(),i,!1),gr(""),gr(B.red(`Denied server '${i}'.`)),gr(B.gray("This server will not be connected.")),gr("")}catch(t){let n=t instanceof Error?t.message:String(t);gr(B.red(`Failed to deny: ${n}`)),gr("")}}async function Ton(i){try{let t=i[0]?.toLowerCase(),n=i.slice(1);switch(t){case"servers":case"list":await yon();break;case"tools":await bon();break;case"resources":await Ion();break;case"prompts":await von();break;case"connect":await xon();break;case"disconnect":await won();break;case"auth":case"authenticate":await Aon(n[0],n.slice(1).join(" ")||void 0);break;case"clear-auth":await kon(n[0]);break;case"refresh":await Con(n[0]);break;case"approve":await Son(n[0]);break;case"deny":await Fon(n[0]);break;case"fallback":await Eon(n[0]);break;case"help":Gon();break;default:await gon();break}}catch(t){let n=t instanceof Error?t.message:String(t);H.error("MCP command failed",t),gr(""),gr(B.red(`Error: ${n}`)),gr("")}}function Gon(){gr(""),gr(B.bold("MCP Command Help")),gr(B.dim("\u2500".repeat(50))),gr(""),gr(B.white("/mcp")+B.gray(" - Show server status overview")),gr(B.white("/mcp servers")+B.gray(" - List all configured servers")),gr(B.white("/mcp tools")+B.gray(" - List available tools")),gr(B.white("/mcp resources")+B.gray(" - List available resources")),gr(B.white("/mcp prompts")+B.gray(" - List available prompts")),gr(B.white("/mcp connect")+B.gray(" - Connect to all servers")),gr(B.white("/mcp disconnect")+B.gray(" - Disconnect from all servers")),gr(B.white("/mcp auth <name>")+B.gray(" - Start OAuth flow (if configured)")),gr(B.white("/mcp auth <name> <token>")+B.gray(" - Authenticate with API token")),gr(B.white("/mcp clear-auth <name>")+B.gray(" - Clear authentication")),gr(B.white("/mcp refresh <name>")+B.gray(" - Refresh server tools/resources")),gr(B.white("/mcp approve <name>")+B.gray(" - Approve a project-scoped server")),gr(B.white("/mcp deny <name>")+B.gray(" - Deny a project-scoped server")),gr(B.white("/mcp fallback <name>")+B.gray(" - Show fallback options for restricted servers")),gr("")}var U2e={name:"mcp",description:"Manage MCP (Model Context Protocol) servers and view status",usage:"/mcp [subcommand]",examples:["/mcp - Show server status overview","/mcp servers - List all configured servers","/mcp tools - List all available MCP tools","/mcp connect - Connect to all configured servers","/mcp auth figma - Start OAuth flow (if configured)","/mcp auth figma <token> - Authenticate with API token","/mcp fallback figma - Show fallback for restricted OAuth servers"],handler:Ton};Yd();Db();tie();mse();EA();Js();function Td(i){process.stdout.write(i+`
3121
3121
  `)}af();Xje();function Gu(i,t=!1){let n=qs();H.debug(`[commitHandler] Emitting output: ${i.substring(0,50)}`),n.emit("slash-command-output",{command:"commit",message:i,isError:t})}function eU(i,t){let n=qs();H.debug(`[commitHandler] setSpinner: active=${i}, message=${t}`),n.emit("compass-spinner",{active:i,message:t})}async function q2e(i=0){return i>0?new Promise(t=>setTimeout(t,i)):new Promise(t=>setImmediate(t))}function Non(){Td(""),Td(B.bold.cyan("/commit - Generate and Execute Conventional Commits")),Td(B.dim("\u2500".repeat(60))),Td(""),Td("Analyzes staged git changes, generates a conventional commit"),Td("message following best practices, and creates the commit."),Td(""),Td(B.bold("Usage:")),Td(` ${B.yellow("/commit")} Generate and execute commit from staged changes`),Td(` ${B.yellow("/commit --help")} Show this help message`),Td(""),Td(B.bold("Prerequisites:")),Td(" \u2022 Must be in a git repository"),Td(" \u2022 Must have changes staged (use git add)"),Td(""),Td(B.bold("Conventional Commit Format:")),Td(" type(scope): description"),Td(""),Td(B.bold("Available Types:"));for(let i of jje)Td(` ${B.gray(i.padEnd(10))} ${Uje[i]}`);Td(""),Td(B.bold("Examples:")),Td(` ${B.gray("feat(auth): add OAuth2 login integration")}`),Td(` ${B.gray("fix(api): resolve memory leak in user sessions")}`),Td(` ${B.gray("docs: update installation guide for v2.0")}`),Td(""),Td(B.bold("What This Command Does:")),Td(" 1. Reads your staged changes (git diff --staged)"),Td(" 2. Sends them to Claude for analysis"),Td(" 3. Generates a conventional commit message"),Td(" 4. Executes git commit with the generated message"),Td(""),Td(B.bold("Related Commands:")),Td(` ${B.gray("git add <file>")} Stage changes before using /commit`),Td(` ${B.gray("git diff --staged")} Preview what will be committed`),Td(` ${B.gray("git status")} Check repository status`),Td("")}function Ron(i){return{help:i.includes("--help")||i.includes("-h")||i.includes("help")}}var $2e=async i=>{if(Ron(i).help){Non();return}try{let n=BC();if(!(await n.execute("git rev-parse --git-dir",{cwd:x2().getProjectRoot(),timeout:5e3})).success){Gu(""),Gu(B.red("\u274C Not a git repository"),!0),Gu(B.gray(" Run this command inside a git repository.")),Gu("");return}H.debug("Executing git diff --staged");let c=await n.execute("git diff --staged",{cwd:x2().getProjectRoot(),timeout:1e4});if(!c.success){Gu(""),Gu(B.red("\u274C Failed to get staged changes"),!0),Gu(B.gray(` ${c.stderr||"Unknown error"}`)),Gu("");return}let u=c.stdout.trim();if(!u||u.length===0){Gu(""),Gu(B.yellow("\u26A0\uFE0F No staged changes found")),Gu(B.gray(" Use `git add <file>` to stage changes first.")),Gu(B.gray(" Or use `git status` to see available changes.")),Gu("");return}eU(!0,"\u2728 Generating Commit Message..."),await q2e(50);let m=kp();if(!await(await m).initialize()){eU(!1),Gu(""),Gu(B.red("\u274C Failed to initialize API client"),!0),Gu(B.gray(" Please check your API key configuration with: compass setup")),Gu("");return}let x=Bje(u);try{H.debug("Calling LLM to generate commit message");let S=await(await m).sendMessage([{role:"user",content:x}],{system:Jje,maxTokens:4096,temperature:.2}),F=S.content.trim(),R=/^```(?:\w+)?\n?([\s\S]*?)\n?```$/,T=F.match(R);if(T&&T[1].trim()&&(F=T[1].trim()),F.startsWith("`")&&F.endsWith("`")){let ae=F.slice(1,-1).trim();ae&&(F=ae)}F=F+`
3122
3122
 
3123
- \u{1F6F8} Generated with [Nova](https://www.compassap.ai/portfolio/command-line-interface.html)`,H.info("Commit message generated successfully",{tokensUsed:S.usage.totalTokens,messageLength:F.length,rawMessage:S.content}),Gu(""),Gu(B.dim("\u2500".repeat(60))),Gu("");let P=F.split(`
3123
+ \u{1F6F8} Generated with [Nova](https://www.compassap.ai/portfolio/nova.html)`,H.info("Commit message generated successfully",{tokensUsed:S.usage.totalTokens,messageLength:F.length,rawMessage:S.content}),Gu(""),Gu(B.dim("\u2500".repeat(60))),Gu("");let P=F.split(`
3124
3124
  `);for(let ae=0;ae<P.length;ae++){let fe=P[ae];ae===0?Gu(B.bold.white(fe)):fe.trim().startsWith("-")||fe.trim().startsWith("*")?Gu(B.cyan(fe)):fe.trim()===""?Gu(""):Gu(B.white(fe))}Gu(""),Gu(B.dim("\u2500".repeat(60))),Gu(""),await q2e();let V=F.includes(`
3125
3125
  `),J;if(V){let ae=await import("fs/promises"),fe=await import("path"),Pe=await import("os"),_t=fe.join(Pe.tmpdir(),`commit-msg-${Date.now()}.txt`);try{await ae.writeFile(_t,F,"utf8"),J=await n.execute(`git commit -F "${_t}"`,{cwd:x2().getProjectRoot(),timeout:1e4}),await ae.unlink(_t)}catch(gt){throw H.error("Failed to write commit message to temp file",gt),gt}}else{let ae=F.replace(/"/g,'\\"').replace(/`/g,"\\`").replace(/\$/g,"\\$");J=await n.execute(`git commit -m "${ae}"`,{cwd:x2().getProjectRoot(),timeout:1e4})}if(await q2e(),J.success){let ae=J.stdout.match(/\[[\w-]+ ([a-f0-9]+)\]/),fe=ae?ae[1]:"";eU(!1),Gu(""),Gu(B.bold.green(`\u2713 Commit ${fe} created successfully`)),Gu(""),H.info("Git commit executed successfully",{commitMessage:F,commitHash:fe,exitCode:J.exitCode})}else eU(!1),Gu(""),Gu(B.red("\u274C Failed to create commit"),!0),Gu(B.gray(` ${J.stderr||J.stdout||"Unknown error"}`)),Gu(""),Gu(B.yellow("\u{1F4A1} You can manually commit with:")),Gu(B.gray(` git commit -m "${F}"`)),Gu(""),H.error("Git commit failed",{commitMessage:F,stderr:J.stderr,exitCode:J.exitCode});await q2e()}catch(S){eU(!1);let F=S instanceof Error?S.message:"Failed to generate commit message";H.error("LLM call failed during commit message generation",S),Gu(""),Gu(B.red(`\u274C ${F}`),!0),Gu("");return}}catch(n){eU(!1);let s=n instanceof Error?n.message:"Failed to analyze staged changes";H.error("Commit command failed",n),Gu(""),Gu(B.red(`\u274C ${s}`),!0),Gu("")}};var Kqe={name:"commit",aliases:["cm"],description:"Generate and execute conventional commit from staged changes",usage:"/commit [--help]",examples:["/commit","/commit --help"],category:"session",requiresLLM:!0,canRunOffline:!1,handler:$2e,executeOnComplete:!0};K2e();Yd();var iKt=Ra(gse(),1),Kke=Ra(KC(),1);import oD from"node:process";function jon(){return oD.platform!=="win32"?oD.env.TERM!=="linux":!!oD.env.WT_SESSION||!!oD.env.TERMINUS_SUBLIME||oD.env.ConEmuTask==="{cmd::Cmder}"||oD.env.TERM_PROGRAM==="Terminus-Sublime"||oD.env.TERM_PROGRAM==="vscode"||oD.env.TERM==="xterm-256color"||oD.env.TERM==="alacritty"||oD.env.TERMINAL_EMULATOR==="JetBrains-JediTerm"}var mBt={circleQuestionMark:"(?)",questionMarkPrefix:"(?)",square:"\u2588",squareDarkShade:"\u2593",squareMediumShade:"\u2592",squareLightShade:"\u2591",squareTop:"\u2580",squareBottom:"\u2584",squareLeft:"\u258C",squareRight:"\u2590",squareCenter:"\u25A0",bullet:"\u25CF",dot:"\u2024",ellipsis:"\u2026",pointerSmall:"\u203A",triangleUp:"\u25B2",triangleUpSmall:"\u25B4",triangleDown:"\u25BC",triangleDownSmall:"\u25BE",triangleLeftSmall:"\u25C2",triangleRightSmall:"\u25B8",home:"\u2302",heart:"\u2665",musicNote:"\u266A",musicNoteBeamed:"\u266B",arrowUp:"\u2191",arrowDown:"\u2193",arrowLeft:"\u2190",arrowRight:"\u2192",arrowLeftRight:"\u2194",arrowUpDown:"\u2195",almostEqual:"\u2248",notEqual:"\u2260",lessOrEqual:"\u2264",greaterOrEqual:"\u2265",identical:"\u2261",infinity:"\u221E",subscriptZero:"\u2080",subscriptOne:"\u2081",subscriptTwo:"\u2082",subscriptThree:"\u2083",subscriptFour:"\u2084",subscriptFive:"\u2085",subscriptSix:"\u2086",subscriptSeven:"\u2087",subscriptEight:"\u2088",subscriptNine:"\u2089",oneHalf:"\xBD",oneThird:"\u2153",oneQuarter:"\xBC",oneFifth:"\u2155",oneSixth:"\u2159",oneEighth:"\u215B",twoThirds:"\u2154",twoFifths:"\u2156",threeQuarters:"\xBE",threeFifths:"\u2157",threeEighths:"\u215C",fourFifths:"\u2158",fiveSixths:"\u215A",fiveEighths:"\u215D",sevenEighths:"\u215E",line:"\u2500",lineBold:"\u2501",lineDouble:"\u2550",lineDashed0:"\u2504",lineDashed1:"\u2505",lineDashed2:"\u2508",lineDashed3:"\u2509",lineDashed4:"\u254C",lineDashed5:"\u254D",lineDashed6:"\u2574",lineDashed7:"\u2576",lineDashed8:"\u2578",lineDashed9:"\u257A",lineDashed10:"\u257C",lineDashed11:"\u257E",lineDashed12:"\u2212",lineDashed13:"\u2013",lineDashed14:"\u2010",lineDashed15:"\u2043",lineVertical:"\u2502",lineVerticalBold:"\u2503",lineVerticalDouble:"\u2551",lineVerticalDashed0:"\u2506",lineVerticalDashed1:"\u2507",lineVerticalDashed2:"\u250A",lineVerticalDashed3:"\u250B",lineVerticalDashed4:"\u254E",lineVerticalDashed5:"\u254F",lineVerticalDashed6:"\u2575",lineVerticalDashed7:"\u2577",lineVerticalDashed8:"\u2579",lineVerticalDashed9:"\u257B",lineVerticalDashed10:"\u257D",lineVerticalDashed11:"\u257F",lineDownLeft:"\u2510",lineDownLeftArc:"\u256E",lineDownBoldLeftBold:"\u2513",lineDownBoldLeft:"\u2512",lineDownLeftBold:"\u2511",lineDownDoubleLeftDouble:"\u2557",lineDownDoubleLeft:"\u2556",lineDownLeftDouble:"\u2555",lineDownRight:"\u250C",lineDownRightArc:"\u256D",lineDownBoldRightBold:"\u250F",lineDownBoldRight:"\u250E",lineDownRightBold:"\u250D",lineDownDoubleRightDouble:"\u2554",lineDownDoubleRight:"\u2553",lineDownRightDouble:"\u2552",lineUpLeft:"\u2518",lineUpLeftArc:"\u256F",lineUpBoldLeftBold:"\u251B",lineUpBoldLeft:"\u251A",lineUpLeftBold:"\u2519",lineUpDoubleLeftDouble:"\u255D",lineUpDoubleLeft:"\u255C",lineUpLeftDouble:"\u255B",lineUpRight:"\u2514",lineUpRightArc:"\u2570",lineUpBoldRightBold:"\u2517",lineUpBoldRight:"\u2516",lineUpRightBold:"\u2515",lineUpDoubleRightDouble:"\u255A",lineUpDoubleRight:"\u2559",lineUpRightDouble:"\u2558",lineUpDownLeft:"\u2524",lineUpBoldDownBoldLeftBold:"\u252B",lineUpBoldDownBoldLeft:"\u2528",lineUpDownLeftBold:"\u2525",lineUpBoldDownLeftBold:"\u2529",lineUpDownBoldLeftBold:"\u252A",lineUpDownBoldLeft:"\u2527",lineUpBoldDownLeft:"\u2526",lineUpDoubleDownDoubleLeftDouble:"\u2563",lineUpDoubleDownDoubleLeft:"\u2562",lineUpDownLeftDouble:"\u2561",lineUpDownRight:"\u251C",lineUpBoldDownBoldRightBold:"\u2523",lineUpBoldDownBoldRight:"\u2520",lineUpDownRightBold:"\u251D",lineUpBoldDownRightBold:"\u2521",lineUpDownBoldRightBold:"\u2522",lineUpDownBoldRight:"\u251F",lineUpBoldDownRight:"\u251E",lineUpDoubleDownDoubleRightDouble:"\u2560",lineUpDoubleDownDoubleRight:"\u255F",lineUpDownRightDouble:"\u255E",lineDownLeftRight:"\u252C",lineDownBoldLeftBoldRightBold:"\u2533",lineDownLeftBoldRightBold:"\u252F",lineDownBoldLeftRight:"\u2530",lineDownBoldLeftBoldRight:"\u2531",lineDownBoldLeftRightBold:"\u2532",lineDownLeftRightBold:"\u252E",lineDownLeftBoldRight:"\u252D",lineDownDoubleLeftDoubleRightDouble:"\u2566",lineDownDoubleLeftRight:"\u2565",lineDownLeftDoubleRightDouble:"\u2564",lineUpLeftRight:"\u2534",lineUpBoldLeftBoldRightBold:"\u253B",lineUpLeftBoldRightBold:"\u2537",lineUpBoldLeftRight:"\u2538",lineUpBoldLeftBoldRight:"\u2539",lineUpBoldLeftRightBold:"\u253A",lineUpLeftRightBold:"\u2536",lineUpLeftBoldRight:"\u2535",lineUpDoubleLeftDoubleRightDouble:"\u2569",lineUpDoubleLeftRight:"\u2568",lineUpLeftDoubleRightDouble:"\u2567",lineUpDownLeftRight:"\u253C",lineUpBoldDownBoldLeftBoldRightBold:"\u254B",lineUpDownBoldLeftBoldRightBold:"\u2548",lineUpBoldDownLeftBoldRightBold:"\u2547",lineUpBoldDownBoldLeftRightBold:"\u254A",lineUpBoldDownBoldLeftBoldRight:"\u2549",lineUpBoldDownLeftRight:"\u2540",lineUpDownBoldLeftRight:"\u2541",lineUpDownLeftBoldRight:"\u253D",lineUpDownLeftRightBold:"\u253E",lineUpBoldDownBoldLeftRight:"\u2542",lineUpDownLeftBoldRightBold:"\u253F",lineUpBoldDownLeftBoldRight:"\u2543",lineUpBoldDownLeftRightBold:"\u2544",lineUpDownBoldLeftBoldRight:"\u2545",lineUpDownBoldLeftRightBold:"\u2546",lineUpDoubleDownDoubleLeftDoubleRightDouble:"\u256C",lineUpDoubleDownDoubleLeftRight:"\u256B",lineUpDownLeftDoubleRightDouble:"\u256A",lineCross:"\u2573",lineBackslash:"\u2572",lineSlash:"\u2571"},hBt={tick:"\u2714",info:"\u2139",warning:"\u26A0",cross:"\u2718",squareSmall:"\u25FB",squareSmallFilled:"\u25FC",circle:"\u25EF",circleFilled:"\u25C9",circleDotted:"\u25CC",circleDouble:"\u25CE",circleCircle:"\u24DE",circleCross:"\u24E7",circlePipe:"\u24BE",radioOn:"\u25C9",radioOff:"\u25EF",checkboxOn:"\u2612",checkboxOff:"\u2610",checkboxCircleOn:"\u24E7",checkboxCircleOff:"\u24BE",pointer:"\u276F",triangleUpOutline:"\u25B3",triangleLeft:"\u25C0",triangleRight:"\u25B6",lozenge:"\u25C6",lozengeOutline:"\u25C7",hamburger:"\u2630",smiley:"\u32E1",mustache:"\u0DF4",star:"\u2605",play:"\u25B6",nodejs:"\u2B22",oneSeventh:"\u2150",oneNinth:"\u2151",oneTenth:"\u2152"},Uon={tick:"\u221A",info:"i",warning:"\u203C",cross:"\xD7",squareSmall:"\u25A1",squareSmallFilled:"\u25A0",circle:"( )",circleFilled:"(*)",circleDotted:"( )",circleDouble:"( )",circleCircle:"(\u25CB)",circleCross:"(\xD7)",circlePipe:"(\u2502)",radioOn:"(*)",radioOff:"( )",checkboxOn:"[\xD7]",checkboxOff:"[ ]",checkboxCircleOn:"(\xD7)",checkboxCircleOff:"( )",pointer:">",triangleUpOutline:"\u2206",triangleLeft:"\u25C4",triangleRight:"\u25BA",lozenge:"\u2666",lozengeOutline:"\u25CA",hamburger:"\u2261",smiley:"\u263A",mustache:"\u250C\u2500\u2510",star:"\u2736",play:"\u25BA",nodejs:"\u2666",oneSeventh:"1/7",oneNinth:"1/9",oneTenth:"1/10"},Xon={...mBt,...hBt},Qon={...mBt,...Uon},zon=jon(),qon=zon?Xon:Qon,GZ=qon,Oci=Object.entries(hBt);var sKt=Ra(yse(),1),_D=Ra(PA(),1);var eg=Ra(PA(),1);function cxn(i,t){return{value:i,key:t||{}}}function MI(i){let t=(0,eg.fromEvent)(i.input,"keypress",cxn).pipe((0,eg.takeUntil)((0,eg.fromEvent)(i,"close"))).pipe((0,eg.filter)(({key:n})=>n.name!=="enter"&&n.name!=="return"));return{line:(0,eg.fromEvent)(i,"line"),keypress:t,normalizedUpKey:t.pipe((0,eg.filter)(({key:n})=>n.name==="up"||n.name==="k"||n.name==="p"&&n.ctrl),(0,eg.share)()),normalizedDownKey:t.pipe((0,eg.filter)(({key:n})=>n.name==="down"||n.name==="j"||n.name==="n"&&n.ctrl),(0,eg.share)()),numberKey:t.pipe((0,eg.filter)(n=>n.value&&"123456789".includes(n.value)),(0,eg.map)(n=>Number(n.value)),(0,eg.share)()),spaceKey:t.pipe((0,eg.filter)(({key:n})=>n&&n.name==="space"),(0,eg.share)()),aKey:t.pipe((0,eg.filter)(({key:n})=>n&&n.name==="a"),(0,eg.share)()),iKey:t.pipe((0,eg.filter)(({key:n})=>n&&n.name==="i"),(0,eg.share)())}}var BQt=Ra(KC(),1),gF=class{constructor(t,n={}){let{isInfinite:s=!0}=n;this.lastIndex=0,this.screen=t,this.isInfinite=s}paginate(t,n,s){s||=7;let c=t.split(`
3126
3126
  `);if(this.screen&&(c=this.screen.breakLines(c),n=c.map(m=>m.length).splice(0,n).reduce((m,b)=>m+b,0),c=c.flat()),c.length<=s)return t;let u=this.isInfinite?this.getInfiniteLines(c,n,s):this.getFiniteLines(c,n,s);return this.lastIndex=n,u.join(`
@@ -3314,7 +3314,7 @@ The \`enter_plan_mode\` tool will generate a structured plan including:
3314
3314
  - /clear - Clear session
3315
3315
  - /model <id> - Switch model
3316
3316
  - /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 dit(i,t){return new ASe(i,t)}import*as Pir from"readline";var YI=H.child("ACPCommand"),pit=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 Zir(){let i=new SG("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?H.configure({level:"debug"}):t.verbose?H.configure({level:"info"}):H.configure({level:"warn"});let n=t.cwd?ure(t.cwd):process.cwd();YI.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=ait(),u=dit(s,c),m=Pir.createInterface({input:process.stdin,terminal:!1}),b=R=>{let T=JSON.stringify(R);YI.debug("Sending message",{data:R}),process.stdout.write(T+`
3317
- `)},x=R=>{b(R)},S=new pit(b);u.setConnection(S),m.on("line",async R=>{if(R.trim()){YI.debug("Raw incoming message",{line:R.substring(0,500)});try{let T=JSON.parse(R);if(T.jsonrpc!=="2.0"){YI.warn("Invalid JSON-RPC version",{message:T}),T.id!==void 0&&x({jsonrpc:"2.0",id:T.id,error:{code:-32600,message:"Invalid Request"}});return}if(("result"in T||"error"in T)&&!T.method){YI.info("Received response",{id:T.id,hasResult:"result"in T,hasError:"error"in T}),T.id!==void 0&&T.id!==null&&S.handleResponse(T.id,T.result,T.error);return}if(!T.method){YI.warn("Message has no method field",{message:T}),T.id!==void 0&&x({jsonrpc:"2.0",id:T.id,error:{code:-32600,message:"Invalid Request: missing method"}});return}let V=T.id===void 0;YI.info("Received message",{type:V?"notification":"request",method:T.method,id:T.id,params:T.params});try{let J=await yDn(u,T.method,T.params);YI.debug("Message handled successfully",{method:T.method,id:T.id}),V||x({jsonrpc:"2.0",id:T.id,result:J})}catch(J){let ae=J instanceof Error?J.message:String(J);ae.startsWith("Unknown method:")||ae.startsWith("Unsupported method:")?YI.warn("Unsupported ACP method",{method:T.method,params:T.params}):YI.error("Message handler error",{method:T.method,error:ae}),V||x({jsonrpc:"2.0",id:T.id,error:{code:-32601,message:ae}})}}catch(T){YI.error("JSON parse error",{error:T,line:R.substring(0,200)}),x({jsonrpc:"2.0",id:null,error:{code:-32700,message:"Parse error"}})}}});let F=async()=>{YI.info("Shutting down ACP server"),await u.shutdown(),m.close(),process.exit(0)};process.on("SIGINT",F),process.on("SIGTERM",F),m.on("close",()=>{YI.info("Input stream closed"),F()}),YI.info("ACP server ready")}),i}async function yDn(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 bDn(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 bDn(i,t){let n=t.sessionId,s=t.update;if(!s)return YI.warn("Session update missing update field",{params:t}),{_meta:{}};let c=s.kind;switch(YI.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:YI.debug("Unhandled session update kind",{kind:c,update:s})}return{_meta:{}}}Yd();import IDn from"os";function vDn(i){let t=i.replace(/\\/g,"/").replace(/\/$/,""),n=IDn.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 WX(i){return i.cwd?ure(i.cwd):process.cwd()}var Vae="1.0.40",xDn="compass",wDn="AI-powered development assistance using Anthropic's Claude models";function ADn(){let i=new SG;return i.name(xDn).description(wDn).version(Vae,"-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("-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").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?H.configure({level:"debug"}):(n.verbose||m)&&H.configure({level:"info"}),n.compassKey||n.anthropicKey){let{getCredentialStore:J}=await Promise.resolve().then(()=>(Ov(),JJ)),{getCompassAuthService:ae}=await Promise.resolve().then(()=>(BJ(),hHe)),fe=await J();if(n.compassKey)try{H.debug("Validating Compass API key from CLI parameter"),await ae().validateApiKey(n.compassKey),await fe.setCompassApiKey(n.compassKey),H.debug("Compass API key from CLI parameter validated and stored"),console.log(B.green("\u2713 Compass API key validated and stored"))}catch(Pe){H.error("Failed to validate Compass API key",Pe),console.error(B.red("\u274C Invalid Compass API key")),Pe instanceof Error&&console.error(B.red(` ${Pe.message}`)),process.exit(1)}if(n.anthropicKey)try{if(H.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),H.debug("Anthropic API key from CLI parameter stored"),console.log(B.green("\u2713 Anthropic API key stored"))}catch(Pe){H.error("Failed to store Anthropic API key",Pe),console.error(B.red("\u274C Invalid Anthropic API key")),Pe instanceof Error&&console.error(B.red(` ${Pe.message}`)),process.exit(1)}console.log("")}let b=WX(n);if(vDn(b)){console.log(""),console.log(B.yellow("\u26A0\uFE0F Warning: Running from a user home directory")),console.log(B.dim("\u2500".repeat(50))),console.log(""),console.log(B.gray(`Directory: ${b}`)),console.log(""),console.log(B.gray("User home directories typically contain many files and folders.")),console.log(B.gray("This can cause slow indexing and high memory usage.")),console.log(""),console.log(B.gray("Recommendation: Navigate to a specific project folder before")),console.log(B.gray("starting the CLI, or use the --cwd option to specify a project directory.")),console.log("");let{proceed:J}=await cS.prompt([{type:"confirm",name:"proceed",message:"Do you want to continue anyway?",default:!1}]);J||(console.log(""),console.log(B.gray("Exiting. Please navigate to a project directory and try again.")),console.log(""),process.exit(0)),console.log("")}let x=await cir();if(n.agents||n.agent){let{initializeAgentManager:J}=await Promise.resolve().then(()=>(f2(),rZ));await J(b,n.agents)}if(n.print){let J;if(n.agent){let{getAgentByName:fe}=await Promise.resolve().then(()=>(f2(),rZ));J=await fe(n.agent),J||(console.error(B.red(`\u274C Agent "${n.agent}" not found`)),console.error(B.gray(" Available agents: explore, code-reviewer, debugger, planner")),console.error(B.gray(" Or define custom agents with --agents")),process.exit(1)),H.debug(`Running with agent: ${J.name} (${J.source})`)}let ae=await dS({query:n.print,pipedInput:x,projectRoot:b,continueSession:n.continue||!1,debug:n.debug||u,cliAgentsJson:n.agents,agentConfig:J,standaloneAgent:n.standaloneAgent||J?.standalone});process.exit(ae.exitCode);return}await Fc(Hc());try{let{getTempFileService:J,TEMP_DIR:ae,PREVIEW_TEMP_DIR:fe}=await Promise.resolve().then(()=>(zqe(),oBt)),Pe=J(),_t=ure(b,RJ,ae,fe);Pe.setTempDir(_t),await Pe.initialize()}catch{H.debug("TempFileService initialization skipped")}n.banner!==!1&&console.log(sre(Vae)),b!==process.cwd()&&(console.log(B.cyan(`\u{1F4C1} Working directory: ${b}`)),console.log(""));let S=n.forceUpdateCheck===!0;if(H.debug("CLI startup: about to check for updates",{updateCheckEnabled:n.updateCheck!==!1,forceUpdateCheck:S}),n.updateCheck!==!1)try{H.debug("CLI startup: calling performAutoUpdateOnStartup");let J=await eBt(void 0,S);H.debug("CLI startup: update check completed",{updated:J.updated}),J.updated&&(H.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(J){H.debug("Update check failed",J)}let{setProjectRoot:F}=await Promise.resolve().then(()=>(f2(),rZ));F(b);let{setSkillProjectRoot:R}=await Promise.resolve().then(()=>(hX(),art));R(b);let{setCommandsProjectRoot:T}=await Promise.resolve().then(()=>(VIe(),iBe));T(b);let{setHooksProjectRoot:P}=await Promise.resolve().then(()=>(DIe(),jJe));P(b);let{waitUntilExit:V}=Vir(Mir.createElement(Knt,{version:Vae,skipSetup:n.skipSetup,projectRoot:b,smartMode:n.smart,initialPrompt:t,continueSession:n.continue||!1,cliAgentsJson:n.agents}));await V()}catch(s){H.error("Failed to start Compass",s),console.error(B.red("\u274C Failed to start Compass")),s instanceof Error&&console.error(B.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 Fc(Hc()),t.compassKey||t.anthropicKey){let{getCredentialStore:s}=await Promise.resolve().then(()=>(Ov(),JJ)),{getCompassAuthService:c}=await Promise.resolve().then(()=>(BJ(),hHe)),u=await s();if(t.compassKey)try{console.log(B.gray("Validating Compass API key...")),await c().validateApiKey(t.compassKey),await u.setCompassApiKey(t.compassKey),console.log(B.green("\u2713 Compass API key validated and stored"))}catch(m){H.error("Failed to validate Compass API key",m),console.error(B.red("\u274C Invalid Compass API key")),m instanceof Error&&console.error(B.red(` ${m.message}`)),process.exit(1)}if(t.anthropicKey)try{if(console.log(B.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(B.green("\u2713 Anthropic API key stored"))}catch(m){H.error("Failed to store Anthropic API key",m),console.error(B.red("\u274C Invalid Anthropic API key")),m instanceof Error&&console.error(B.red(` ${m.message}`)),process.exit(1)}console.log("")}console.log(sre(Vae));let{waitUntilExit:n}=Vir(Mir.createElement(Knt,{version:Vae}));await n()}catch(n){H.error("Setup failed",n),console.error(B.red("\u274C Setup failed")),n instanceof Error&&console.error(B.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=WX(t),s=su(n);if(await _a(s)){if(!t.force){console.log(B.yellow("\u26A0\uFE0F Compass is already initialized in this project.")),console.log(B.gray(" Use --force to reinitialize."));return}console.log(B.gray("Reinitializing Compass..."))}await Fc(s),await Fc(`${s}/backups`),await Fc(`${s}/cache`),await Fc(`${s}/context`),console.log(B.green("\u2705 Initialized Compass in current project")),console.log(B.gray(` Created ${s}/`)),console.log(""),console.log(B.gray("Next steps:")),console.log(B.gray(` 1. Run "compass setup" if you haven't configured your API key`)),console.log(B.gray(' 2. Run "compass" to start an interactive session'))}catch(n){H.error("Init failed",n),console.error(B.red("\u274C Failed to initialize Compass")),n instanceof Error&&console.error(B.red(` ${n.message}`)),process.exit(1)}}),i.addCommand(Eir()),i.addCommand(Dir()),i.addCommand(Nir()),i.addCommand(Zir()),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 UR();switch(t.toLowerCase()){case"status":{let s=await n.getStatus();if(console.log(""),console.log(B.bold.white("\u{1F4CB} Consent Status")),console.log(B.dim("\u2500".repeat(40))),console.log(` ${B.gray("Valid:")} ${s.isValid?B.green("Yes"):B.red("No")}`),console.log(` ${B.gray("Version:")} ${s.version||B.gray("N/A")}`),console.log(` ${B.gray("Granted:")} ${s.grantedAt?new Date(s.grantedAt).toLocaleDateString():B.gray("N/A")}`),console.log(` ${B.gray("Expires:")} ${s.expiresAt?new Date(s.expiresAt).toLocaleDateString():B.gray("N/A")}`),s.daysUntilExpiry!==null){let c=s.daysUntilExpiry>30?"green":s.daysUntilExpiry>7?"yellow":"red";console.log(` ${B.gray("Days until expiry:")} ${B[c](s.daysUntilExpiry.toString())}`)}s.consent&&(console.log(""),console.log(B.bold.white(" Settings:")),console.log(` ${B.gray("Data Collection:")} ${s.consent.dataCollection?B.green("Enabled"):B.red("Disabled")}`),console.log(` ${B.gray("Telemetry:")} ${s.consent.telemetry?B.green("Enabled"):B.yellow("Disabled")}`),console.log(` ${B.gray("Analytics:")} ${s.consent.analytics?B.green("Enabled"):B.yellow("Disabled")}`),console.log(` ${B.gray("Error Reporting:")} ${s.consent.errorReporting?B.green("Enabled"):B.yellow("Disabled")}`)),s.needsRenewal&&(console.log(""),console.log(B.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(B.bold.white("\u{1F4DC} Consent History")),console.log(B.dim("\u2500".repeat(40))),s.length===0)console.log(B.gray(" No consent records found."));else for(let c of s.slice(-5))console.log(` ${B.gray("ID:")} ${c.id.slice(0,8)}...`),console.log(` ${B.gray("Version:")} ${c.version}`),console.log(` ${B.gray("Granted:")} ${new Date(c.grantedAt).toLocaleString()}`),console.log(B.dim(" \u2500".repeat(20)));console.log("");break}case"revoke":{console.log(""),console.log(B.yellow("\u26A0\uFE0F Revoking consent will delete all stored data.")),console.log(B.gray(" This action cannot be undone.")),console.log(""),await n.revokeConsent(),console.log(B.green("\u2705 Consent revoked and data cleaned up")),console.log(B.gray(' Run "compass setup" to reconfigure.')),console.log("");break}default:console.log(B.red(`Unknown action: ${t}`)),console.log(B.gray("Available actions: status, review, revoke")),process.exit(1)}}catch(n){H.error("Consent command failed",n),console.error(B.red("\u274C Consent command failed")),n instanceof Error&&console.error(B.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 Pg();if(t.export){let c=await n.exportUsage();console.log(JSON.stringify(c,null,2));return}if(t.reset){console.log(B.yellow("\u26A0\uFE0F This will reset all token usage statistics.")),console.log(B.gray(" Feature not yet implemented."));return}if(t.session){let c=n.getCurrentSessionUsage();if(!c){console.log(B.gray("No active session."));return}console.log(""),console.log(B.bold.white("\u{1F4CA} Current Session Token Usage")),console.log(B.dim("\u2500".repeat(40))),console.log(` ${B.gray("Session ID:")} ${c.sessionId.slice(0,8)}...`),console.log(` ${B.gray("Started:")} ${new Date(c.startTime).toLocaleString()}`),console.log(` ${B.gray("API Calls:")} ${c.calls.length}`),console.log(` ${B.gray("Input Tokens:")} ${c.totals.inputTokens.toLocaleString()}`),console.log(` ${B.gray("Output Tokens:")} ${c.totals.outputTokens.toLocaleString()}`),console.log(` ${B.gray("Total Tokens:")} ${B.bold(c.totals.totalTokens.toLocaleString())}`),console.log(` ${B.gray("Estimated Cost:")} ${B.green("$"+c.estimatedCost.totalCost.toFixed(4))}`),console.log("");return}let s=n.getAllTimeStats();console.log(""),console.log(B.bold.white("\u{1F4CA} Token Usage Statistics")),console.log(B.dim("\u2500".repeat(40))),console.log(` ${B.gray("Total API Calls:")} ${s.totalCalls.toLocaleString()}`),console.log(` ${B.gray("Total Tokens:")} ${s.totalTokens.toLocaleString()}`),console.log(` ${B.gray("Total Cost:")} ${B.green("$"+s.totalCost.toFixed(4))}`),console.log(""),console.log(B.bold.white(" Averages per Call:")),console.log(` ${B.gray("Input:")} ${s.averageInputTokens.toLocaleString()} tokens`),console.log(` ${B.gray("Output:")} ${s.averageOutputTokens.toLocaleString()} tokens`),console.log(""),console.log(B.bold.white(" Peak Usage:")),console.log(` ${B.gray("Input:")} ${s.peakInputTokens.toLocaleString()} tokens`),console.log(` ${B.gray("Output:")} ${s.peakOutputTokens.toLocaleString()} tokens`),console.log("")}catch(n){H.error("Tokens command failed",n),console.error(B.red("\u274C Tokens command failed")),n instanceof Error&&console.error(B.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 UR();switch(t.toLowerCase()){case"list":{console.log(""),console.log(B.bold.white("\u{1F4C1} Stored Data")),console.log(B.dim("\u2500".repeat(40)));let c=Hc(),u=su(WX(n));console.log(B.bold.cyan(" Global Data:")),console.log(` ${B.gray("Location:")} ${c}`),console.log(` ${B.gray("Contents:")} config, credentials, consent, token usage, logs`),await _a(u)&&(console.log(""),console.log(B.bold.cyan(" Project Data:")),console.log(` ${B.gray("Location:")} ${u}`),console.log(` ${B.gray("Contents:")} session state, backups, cache, context index`)),console.log(""),console.log(B.gray('Use "compass data export" to export all data')),console.log(B.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(()=>(Vp(),pye));await m(n.output,u),console.log(B.green(`\u2705 Data exported to ${n.output}`))}else console.log(u);break}case"delete":{console.log(B.yellow('\u26A0\uFE0F To delete all data, use "compass consent revoke"'));break}default:console.log(B.red(`Unknown action: ${t}`)),console.log(B.gray("Available actions: list, export, delete")),process.exit(1)}}catch(s){H.error("Data command failed",s),console.error(B.red("\u274C Data command failed")),s instanceof Error&&console.error(B.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=su(WX(n)),c=`${s}/cache`,u=`${s}/context`;switch(t.toLowerCase()){case"status":{console.log(""),console.log(B.bold.white("\u{1F4BE} Cache Status")),console.log(B.dim("\u2500".repeat(40))),await _a(c)?(console.log(` ${B.gray("Cache directory:")} ${c}`),console.log(` ${B.green("\u2713")} Cache directory exists`)):console.log(` ${B.gray("Cache directory:")} ${B.yellow("Not initialized")}`),await _a(u)?(console.log(` ${B.gray("Context index:")} ${u}`),console.log(` ${B.green("\u2713")} Context index exists`)):console.log(` ${B.gray("Context index:")} ${B.yellow("Not initialized")}`),console.log(""),console.log(B.gray('Use "compass cache clear" to clear all cached data')),console.log("");break}case"clear":{let m=!1;await _a(c)&&(await p0(c),await Fc(c),console.log(B.green("\u2705 Cache cleared")),m=!0),await _a(u)&&(await p0(u),await Fc(u),console.log(B.green("\u2705 Context index cleared")),m=!0),m||console.log(B.gray("No cache to clear."));break}default:console.log(B.red(`Unknown action: ${t}`)),console.log(B.gray("Available actions: status, clear")),process.exit(1)}}catch(s){H.error("Cache command failed",s),console.error(B.red("\u274C Cache command failed")),s instanceof Error&&console.error(B.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 D3();switch(t.toLowerCase()){case"check":{console.log(""),console.log(B.cyan("Checking for updates..."));let c=await s.checkForUpdates(n.force);c.error?console.log(B.red(`Failed to check for updates: ${c.error}`)):c.updateAvailable&&c.latestVersion?s.displayUpdateNotification(c):(console.log(""),console.log(B.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(B.bold.cyan("Update History")),console.log(B.dim("\u2500".repeat(40))),c.length===0)console.log(""),console.log(B.gray(" No update history recorded.")),console.log("");else{console.log("");for(let u of c.slice().reverse()){let m=u.success?B.green("\u2713"):B.red("\u2717"),b=u.success?B.green:B.red;console.log(` ${m} ${B.gray(new Date(u.updatedAt).toLocaleDateString())}`),console.log(` ${B.gray("From:")} ${u.fromVersion} ${B.gray("\u2192")} ${b(u.toVersion)}`),console.log(` ${B.gray("Method:")} ${u.method}`),u.error&&console.log(` ${B.red("Error:")} ${u.error}`),console.log("")}}break}default:console.log(B.red(`Unknown action: ${t}`)),console.log(B.gray("Available actions: check, install, history")),process.exit(1)}}catch(s){H.error("Update command failed",s),console.error(B.red("\u274C Update command failed")),s instanceof Error&&console.error(B.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(B.red("\u26A0\uFE0F WARNING: This will delete all Compass data!")),console.log(B.gray(" This action cannot be undone.")),console.log(""),console.log(B.gray(" Use --force to confirm this action.")),console.log("");return}if(t.project&&!t.global){let c=su(WX(t));await _a(c)?(await p0(c),console.log(B.green("\u2705 Project settings reset"))):console.log(B.gray("No project settings to reset."));return}if(t.global&&!t.project){let c=Hc();await _a(c)?(await p0(c),console.log(B.green("\u2705 Global settings reset"))):console.log(B.gray("No global settings to reset."));return}let n=Hc(),s=su(WX(t));await _a(n)&&await p0(n),await _a(s)&&await p0(s),console.log(B.green("\u2705 Compass has been reset to factory settings")),console.log(B.gray(' Run "compass setup" to reconfigure.'))}catch(n){H.error("Reset failed",n),console.error(B.red("\u274C Reset failed")),n instanceof Error&&console.error(B.red(` ${n.message}`)),process.exit(1)}}),i}async function kDn(){try{let i=ADn();process.on("uncaughtException",t=>{H.error("Uncaught exception",t),console.error(B.red("\u274C An unexpected error occurred")),t instanceof Error&&console.error(B.red(` ${t.message}`)),process.exit(1)}),process.on("unhandledRejection",t=>{H.error("Unhandled rejection",t),console.error(B.red("\u274C An unexpected error occurred")),t instanceof Error&&console.error(B.red(` ${t.message}`)),process.exit(1)}),await i.parseAsync(process.argv)}catch(i){H.error("CLI error",i),console.error(B.red("\u274C CLI error")),i instanceof Error&&console.error(B.red(` ${i.message}`)),process.exit(1)}}kDn();
3317
+ `)},x=R=>{b(R)},S=new pit(b);u.setConnection(S),m.on("line",async R=>{if(R.trim()){YI.debug("Raw incoming message",{line:R.substring(0,500)});try{let T=JSON.parse(R);if(T.jsonrpc!=="2.0"){YI.warn("Invalid JSON-RPC version",{message:T}),T.id!==void 0&&x({jsonrpc:"2.0",id:T.id,error:{code:-32600,message:"Invalid Request"}});return}if(("result"in T||"error"in T)&&!T.method){YI.info("Received response",{id:T.id,hasResult:"result"in T,hasError:"error"in T}),T.id!==void 0&&T.id!==null&&S.handleResponse(T.id,T.result,T.error);return}if(!T.method){YI.warn("Message has no method field",{message:T}),T.id!==void 0&&x({jsonrpc:"2.0",id:T.id,error:{code:-32600,message:"Invalid Request: missing method"}});return}let V=T.id===void 0;YI.info("Received message",{type:V?"notification":"request",method:T.method,id:T.id,params:T.params});try{let J=await yDn(u,T.method,T.params);YI.debug("Message handled successfully",{method:T.method,id:T.id}),V||x({jsonrpc:"2.0",id:T.id,result:J})}catch(J){let ae=J instanceof Error?J.message:String(J);ae.startsWith("Unknown method:")||ae.startsWith("Unsupported method:")?YI.warn("Unsupported ACP method",{method:T.method,params:T.params}):YI.error("Message handler error",{method:T.method,error:ae}),V||x({jsonrpc:"2.0",id:T.id,error:{code:-32601,message:ae}})}}catch(T){YI.error("JSON parse error",{error:T,line:R.substring(0,200)}),x({jsonrpc:"2.0",id:null,error:{code:-32700,message:"Parse error"}})}}});let F=async()=>{YI.info("Shutting down ACP server"),await u.shutdown(),m.close(),process.exit(0)};process.on("SIGINT",F),process.on("SIGTERM",F),m.on("close",()=>{YI.info("Input stream closed"),F()}),YI.info("ACP server ready")}),i}async function yDn(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 bDn(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 bDn(i,t){let n=t.sessionId,s=t.update;if(!s)return YI.warn("Session update missing update field",{params:t}),{_meta:{}};let c=s.kind;switch(YI.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:YI.debug("Unhandled session update kind",{kind:c,update:s})}return{_meta:{}}}Yd();import IDn from"os";function vDn(i){let t=i.replace(/\\/g,"/").replace(/\/$/,""),n=IDn.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 WX(i){return i.cwd?ure(i.cwd):process.cwd()}var Vae="1.0.42",xDn="compass",wDn="AI-powered development assistance using Anthropic's Claude models";function ADn(){let i=new SG;return i.name(xDn).description(wDn).version(Vae,"-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("-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").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?H.configure({level:"debug"}):(n.verbose||m)&&H.configure({level:"info"}),n.compassKey||n.anthropicKey){let{getCredentialStore:J}=await Promise.resolve().then(()=>(Ov(),JJ)),{getCompassAuthService:ae}=await Promise.resolve().then(()=>(BJ(),hHe)),fe=await J();if(n.compassKey)try{H.debug("Validating Compass API key from CLI parameter"),await ae().validateApiKey(n.compassKey),await fe.setCompassApiKey(n.compassKey),H.debug("Compass API key from CLI parameter validated and stored"),console.log(B.green("\u2713 Compass API key validated and stored"))}catch(Pe){H.error("Failed to validate Compass API key",Pe),console.error(B.red("\u274C Invalid Compass API key")),Pe instanceof Error&&console.error(B.red(` ${Pe.message}`)),process.exit(1)}if(n.anthropicKey)try{if(H.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),H.debug("Anthropic API key from CLI parameter stored"),console.log(B.green("\u2713 Anthropic API key stored"))}catch(Pe){H.error("Failed to store Anthropic API key",Pe),console.error(B.red("\u274C Invalid Anthropic API key")),Pe instanceof Error&&console.error(B.red(` ${Pe.message}`)),process.exit(1)}console.log("")}let b=WX(n);if(vDn(b)){console.log(""),console.log(B.yellow("\u26A0\uFE0F Warning: Running from a user home directory")),console.log(B.dim("\u2500".repeat(50))),console.log(""),console.log(B.gray(`Directory: ${b}`)),console.log(""),console.log(B.gray("User home directories typically contain many files and folders.")),console.log(B.gray("This can cause slow indexing and high memory usage.")),console.log(""),console.log(B.gray("Recommendation: Navigate to a specific project folder before")),console.log(B.gray("starting the CLI, or use the --cwd option to specify a project directory.")),console.log("");let{proceed:J}=await cS.prompt([{type:"confirm",name:"proceed",message:"Do you want to continue anyway?",default:!1}]);J||(console.log(""),console.log(B.gray("Exiting. Please navigate to a project directory and try again.")),console.log(""),process.exit(0)),console.log("")}let x=await cir();if(n.agents||n.agent){let{initializeAgentManager:J}=await Promise.resolve().then(()=>(f2(),rZ));await J(b,n.agents)}if(n.print){let J;if(n.agent){let{getAgentByName:fe}=await Promise.resolve().then(()=>(f2(),rZ));J=await fe(n.agent),J||(console.error(B.red(`\u274C Agent "${n.agent}" not found`)),console.error(B.gray(" Available agents: explore, code-reviewer, debugger, planner")),console.error(B.gray(" Or define custom agents with --agents")),process.exit(1)),H.debug(`Running with agent: ${J.name} (${J.source})`)}let ae=await dS({query:n.print,pipedInput:x,projectRoot:b,continueSession:n.continue||!1,debug:n.debug||u,cliAgentsJson:n.agents,agentConfig:J,standaloneAgent:n.standaloneAgent||J?.standalone});process.exit(ae.exitCode);return}await Fc(Hc());try{let{getTempFileService:J,TEMP_DIR:ae,PREVIEW_TEMP_DIR:fe}=await Promise.resolve().then(()=>(zqe(),oBt)),Pe=J(),_t=ure(b,RJ,ae,fe);Pe.setTempDir(_t),await Pe.initialize()}catch{H.debug("TempFileService initialization skipped")}n.banner!==!1&&console.log(sre(Vae)),b!==process.cwd()&&(console.log(B.cyan(`\u{1F4C1} Working directory: ${b}`)),console.log(""));let S=n.forceUpdateCheck===!0;if(H.debug("CLI startup: about to check for updates",{updateCheckEnabled:n.updateCheck!==!1,forceUpdateCheck:S}),n.updateCheck!==!1)try{H.debug("CLI startup: calling performAutoUpdateOnStartup");let J=await eBt(void 0,S);H.debug("CLI startup: update check completed",{updated:J.updated}),J.updated&&(H.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(J){H.debug("Update check failed",J)}let{setProjectRoot:F}=await Promise.resolve().then(()=>(f2(),rZ));F(b);let{setSkillProjectRoot:R}=await Promise.resolve().then(()=>(hX(),art));R(b);let{setCommandsProjectRoot:T}=await Promise.resolve().then(()=>(VIe(),iBe));T(b);let{setHooksProjectRoot:P}=await Promise.resolve().then(()=>(DIe(),jJe));P(b);let{waitUntilExit:V}=Vir(Mir.createElement(Knt,{version:Vae,skipSetup:n.skipSetup,projectRoot:b,smartMode:n.smart,initialPrompt:t,continueSession:n.continue||!1,cliAgentsJson:n.agents}));await V()}catch(s){H.error("Failed to start Compass",s),console.error(B.red("\u274C Failed to start Compass")),s instanceof Error&&console.error(B.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 Fc(Hc()),t.compassKey||t.anthropicKey){let{getCredentialStore:s}=await Promise.resolve().then(()=>(Ov(),JJ)),{getCompassAuthService:c}=await Promise.resolve().then(()=>(BJ(),hHe)),u=await s();if(t.compassKey)try{console.log(B.gray("Validating Compass API key...")),await c().validateApiKey(t.compassKey),await u.setCompassApiKey(t.compassKey),console.log(B.green("\u2713 Compass API key validated and stored"))}catch(m){H.error("Failed to validate Compass API key",m),console.error(B.red("\u274C Invalid Compass API key")),m instanceof Error&&console.error(B.red(` ${m.message}`)),process.exit(1)}if(t.anthropicKey)try{if(console.log(B.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(B.green("\u2713 Anthropic API key stored"))}catch(m){H.error("Failed to store Anthropic API key",m),console.error(B.red("\u274C Invalid Anthropic API key")),m instanceof Error&&console.error(B.red(` ${m.message}`)),process.exit(1)}console.log("")}console.log(sre(Vae));let{waitUntilExit:n}=Vir(Mir.createElement(Knt,{version:Vae}));await n()}catch(n){H.error("Setup failed",n),console.error(B.red("\u274C Setup failed")),n instanceof Error&&console.error(B.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=WX(t),s=su(n);if(await _a(s)){if(!t.force){console.log(B.yellow("\u26A0\uFE0F Compass is already initialized in this project.")),console.log(B.gray(" Use --force to reinitialize."));return}console.log(B.gray("Reinitializing Compass..."))}await Fc(s),await Fc(`${s}/backups`),await Fc(`${s}/cache`),await Fc(`${s}/context`),console.log(B.green("\u2705 Initialized Compass in current project")),console.log(B.gray(` Created ${s}/`)),console.log(""),console.log(B.gray("Next steps:")),console.log(B.gray(` 1. Run "compass setup" if you haven't configured your API key`)),console.log(B.gray(' 2. Run "compass" to start an interactive session'))}catch(n){H.error("Init failed",n),console.error(B.red("\u274C Failed to initialize Compass")),n instanceof Error&&console.error(B.red(` ${n.message}`)),process.exit(1)}}),i.addCommand(Eir()),i.addCommand(Dir()),i.addCommand(Nir()),i.addCommand(Zir()),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 UR();switch(t.toLowerCase()){case"status":{let s=await n.getStatus();if(console.log(""),console.log(B.bold.white("\u{1F4CB} Consent Status")),console.log(B.dim("\u2500".repeat(40))),console.log(` ${B.gray("Valid:")} ${s.isValid?B.green("Yes"):B.red("No")}`),console.log(` ${B.gray("Version:")} ${s.version||B.gray("N/A")}`),console.log(` ${B.gray("Granted:")} ${s.grantedAt?new Date(s.grantedAt).toLocaleDateString():B.gray("N/A")}`),console.log(` ${B.gray("Expires:")} ${s.expiresAt?new Date(s.expiresAt).toLocaleDateString():B.gray("N/A")}`),s.daysUntilExpiry!==null){let c=s.daysUntilExpiry>30?"green":s.daysUntilExpiry>7?"yellow":"red";console.log(` ${B.gray("Days until expiry:")} ${B[c](s.daysUntilExpiry.toString())}`)}s.consent&&(console.log(""),console.log(B.bold.white(" Settings:")),console.log(` ${B.gray("Data Collection:")} ${s.consent.dataCollection?B.green("Enabled"):B.red("Disabled")}`),console.log(` ${B.gray("Telemetry:")} ${s.consent.telemetry?B.green("Enabled"):B.yellow("Disabled")}`),console.log(` ${B.gray("Analytics:")} ${s.consent.analytics?B.green("Enabled"):B.yellow("Disabled")}`),console.log(` ${B.gray("Error Reporting:")} ${s.consent.errorReporting?B.green("Enabled"):B.yellow("Disabled")}`)),s.needsRenewal&&(console.log(""),console.log(B.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(B.bold.white("\u{1F4DC} Consent History")),console.log(B.dim("\u2500".repeat(40))),s.length===0)console.log(B.gray(" No consent records found."));else for(let c of s.slice(-5))console.log(` ${B.gray("ID:")} ${c.id.slice(0,8)}...`),console.log(` ${B.gray("Version:")} ${c.version}`),console.log(` ${B.gray("Granted:")} ${new Date(c.grantedAt).toLocaleString()}`),console.log(B.dim(" \u2500".repeat(20)));console.log("");break}case"revoke":{console.log(""),console.log(B.yellow("\u26A0\uFE0F Revoking consent will delete all stored data.")),console.log(B.gray(" This action cannot be undone.")),console.log(""),await n.revokeConsent(),console.log(B.green("\u2705 Consent revoked and data cleaned up")),console.log(B.gray(' Run "compass setup" to reconfigure.')),console.log("");break}default:console.log(B.red(`Unknown action: ${t}`)),console.log(B.gray("Available actions: status, review, revoke")),process.exit(1)}}catch(n){H.error("Consent command failed",n),console.error(B.red("\u274C Consent command failed")),n instanceof Error&&console.error(B.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 Pg();if(t.export){let c=await n.exportUsage();console.log(JSON.stringify(c,null,2));return}if(t.reset){console.log(B.yellow("\u26A0\uFE0F This will reset all token usage statistics.")),console.log(B.gray(" Feature not yet implemented."));return}if(t.session){let c=n.getCurrentSessionUsage();if(!c){console.log(B.gray("No active session."));return}console.log(""),console.log(B.bold.white("\u{1F4CA} Current Session Token Usage")),console.log(B.dim("\u2500".repeat(40))),console.log(` ${B.gray("Session ID:")} ${c.sessionId.slice(0,8)}...`),console.log(` ${B.gray("Started:")} ${new Date(c.startTime).toLocaleString()}`),console.log(` ${B.gray("API Calls:")} ${c.calls.length}`),console.log(` ${B.gray("Input Tokens:")} ${c.totals.inputTokens.toLocaleString()}`),console.log(` ${B.gray("Output Tokens:")} ${c.totals.outputTokens.toLocaleString()}`),console.log(` ${B.gray("Total Tokens:")} ${B.bold(c.totals.totalTokens.toLocaleString())}`),console.log(` ${B.gray("Estimated Cost:")} ${B.green("$"+c.estimatedCost.totalCost.toFixed(4))}`),console.log("");return}let s=n.getAllTimeStats();console.log(""),console.log(B.bold.white("\u{1F4CA} Token Usage Statistics")),console.log(B.dim("\u2500".repeat(40))),console.log(` ${B.gray("Total API Calls:")} ${s.totalCalls.toLocaleString()}`),console.log(` ${B.gray("Total Tokens:")} ${s.totalTokens.toLocaleString()}`),console.log(` ${B.gray("Total Cost:")} ${B.green("$"+s.totalCost.toFixed(4))}`),console.log(""),console.log(B.bold.white(" Averages per Call:")),console.log(` ${B.gray("Input:")} ${s.averageInputTokens.toLocaleString()} tokens`),console.log(` ${B.gray("Output:")} ${s.averageOutputTokens.toLocaleString()} tokens`),console.log(""),console.log(B.bold.white(" Peak Usage:")),console.log(` ${B.gray("Input:")} ${s.peakInputTokens.toLocaleString()} tokens`),console.log(` ${B.gray("Output:")} ${s.peakOutputTokens.toLocaleString()} tokens`),console.log("")}catch(n){H.error("Tokens command failed",n),console.error(B.red("\u274C Tokens command failed")),n instanceof Error&&console.error(B.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 UR();switch(t.toLowerCase()){case"list":{console.log(""),console.log(B.bold.white("\u{1F4C1} Stored Data")),console.log(B.dim("\u2500".repeat(40)));let c=Hc(),u=su(WX(n));console.log(B.bold.cyan(" Global Data:")),console.log(` ${B.gray("Location:")} ${c}`),console.log(` ${B.gray("Contents:")} config, credentials, consent, token usage, logs`),await _a(u)&&(console.log(""),console.log(B.bold.cyan(" Project Data:")),console.log(` ${B.gray("Location:")} ${u}`),console.log(` ${B.gray("Contents:")} session state, backups, cache, context index`)),console.log(""),console.log(B.gray('Use "compass data export" to export all data')),console.log(B.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(()=>(Vp(),pye));await m(n.output,u),console.log(B.green(`\u2705 Data exported to ${n.output}`))}else console.log(u);break}case"delete":{console.log(B.yellow('\u26A0\uFE0F To delete all data, use "compass consent revoke"'));break}default:console.log(B.red(`Unknown action: ${t}`)),console.log(B.gray("Available actions: list, export, delete")),process.exit(1)}}catch(s){H.error("Data command failed",s),console.error(B.red("\u274C Data command failed")),s instanceof Error&&console.error(B.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=su(WX(n)),c=`${s}/cache`,u=`${s}/context`;switch(t.toLowerCase()){case"status":{console.log(""),console.log(B.bold.white("\u{1F4BE} Cache Status")),console.log(B.dim("\u2500".repeat(40))),await _a(c)?(console.log(` ${B.gray("Cache directory:")} ${c}`),console.log(` ${B.green("\u2713")} Cache directory exists`)):console.log(` ${B.gray("Cache directory:")} ${B.yellow("Not initialized")}`),await _a(u)?(console.log(` ${B.gray("Context index:")} ${u}`),console.log(` ${B.green("\u2713")} Context index exists`)):console.log(` ${B.gray("Context index:")} ${B.yellow("Not initialized")}`),console.log(""),console.log(B.gray('Use "compass cache clear" to clear all cached data')),console.log("");break}case"clear":{let m=!1;await _a(c)&&(await p0(c),await Fc(c),console.log(B.green("\u2705 Cache cleared")),m=!0),await _a(u)&&(await p0(u),await Fc(u),console.log(B.green("\u2705 Context index cleared")),m=!0),m||console.log(B.gray("No cache to clear."));break}default:console.log(B.red(`Unknown action: ${t}`)),console.log(B.gray("Available actions: status, clear")),process.exit(1)}}catch(s){H.error("Cache command failed",s),console.error(B.red("\u274C Cache command failed")),s instanceof Error&&console.error(B.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 D3();switch(t.toLowerCase()){case"check":{console.log(""),console.log(B.cyan("Checking for updates..."));let c=await s.checkForUpdates(n.force);c.error?console.log(B.red(`Failed to check for updates: ${c.error}`)):c.updateAvailable&&c.latestVersion?s.displayUpdateNotification(c):(console.log(""),console.log(B.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(B.bold.cyan("Update History")),console.log(B.dim("\u2500".repeat(40))),c.length===0)console.log(""),console.log(B.gray(" No update history recorded.")),console.log("");else{console.log("");for(let u of c.slice().reverse()){let m=u.success?B.green("\u2713"):B.red("\u2717"),b=u.success?B.green:B.red;console.log(` ${m} ${B.gray(new Date(u.updatedAt).toLocaleDateString())}`),console.log(` ${B.gray("From:")} ${u.fromVersion} ${B.gray("\u2192")} ${b(u.toVersion)}`),console.log(` ${B.gray("Method:")} ${u.method}`),u.error&&console.log(` ${B.red("Error:")} ${u.error}`),console.log("")}}break}default:console.log(B.red(`Unknown action: ${t}`)),console.log(B.gray("Available actions: check, install, history")),process.exit(1)}}catch(s){H.error("Update command failed",s),console.error(B.red("\u274C Update command failed")),s instanceof Error&&console.error(B.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(B.red("\u26A0\uFE0F WARNING: This will delete all Compass data!")),console.log(B.gray(" This action cannot be undone.")),console.log(""),console.log(B.gray(" Use --force to confirm this action.")),console.log("");return}if(t.project&&!t.global){let c=su(WX(t));await _a(c)?(await p0(c),console.log(B.green("\u2705 Project settings reset"))):console.log(B.gray("No project settings to reset."));return}if(t.global&&!t.project){let c=Hc();await _a(c)?(await p0(c),console.log(B.green("\u2705 Global settings reset"))):console.log(B.gray("No global settings to reset."));return}let n=Hc(),s=su(WX(t));await _a(n)&&await p0(n),await _a(s)&&await p0(s),console.log(B.green("\u2705 Compass has been reset to factory settings")),console.log(B.gray(' Run "compass setup" to reconfigure.'))}catch(n){H.error("Reset failed",n),console.error(B.red("\u274C Reset failed")),n instanceof Error&&console.error(B.red(` ${n.message}`)),process.exit(1)}}),i}async function kDn(){try{let i=ADn();process.on("uncaughtException",t=>{H.error("Uncaught exception",t),console.error(B.red("\u274C An unexpected error occurred")),t instanceof Error&&console.error(B.red(` ${t.message}`)),process.exit(1)}),process.on("unhandledRejection",t=>{H.error("Unhandled rejection",t),console.error(B.red("\u274C An unexpected error occurred")),t instanceof Error&&console.error(B.red(` ${t.message}`)),process.exit(1)}),await i.parseAsync(process.argv)}catch(i){H.error("CLI error",i),console.error(B.red("\u274C CLI error")),i instanceof Error&&console.error(B.red(` ${i.message}`)),process.exit(1)}}kDn();
3318
3318
  /*! Bundled license information:
3319
3319
 
3320
3320
  typescript/lib/typescript.js:
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var eyr=Object.create;var Ype=Object.defineProperty;var tyr=Object.getOwnPropertyDescriptor;var ryr=Object.getOwnPropertyNames;var nyr=Object.getPrototypeOf,iyr=Object.prototype.hasOwnProperty;var Xs=(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 Kt=(a,r)=>()=>(a&&(r=a(a=0)),r);var ft=(a,r)=>()=>(r||a((r={exports:{}}).exports,r),r.exports),BE=(a,r)=>{for(var n in r)Ype(a,n,{get:r[n],enumerable:!0})},V0t=(a,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let l of ryr(r))!iyr.call(a,l)&&l!==n&&Ype(a,l,{get:()=>r[l],enumerable:!(o=tyr(r,l))||o.enumerable});return a};var Ho=(a,r,n)=>(n=a!=null?eyr(nyr(a)):{},V0t(r||!a||!a.__esModule?Ype(n,"default",{value:a,enumerable:!0}):n,a)),syr=a=>V0t(Ype({},"__esModule",{value:!0}),a);function P0t(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 myr(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"&&P0t(r.consent)}function _yr(){return{dataCollection:Ope.dataCollection.defaultValue,telemetry:Ope.telemetry.defaultValue,analytics:Ope.analytics.defaultValue,errorReporting:Ope.errorReporting.defaultValue}}function hyr(){return{dataCollection:!0,telemetry:!0,analytics:!0,errorReporting:!0}}function gyr(){return{dataCollection:!0,telemetry:!1,analytics:!1,errorReporting:!1}}var UPe,Ope,jPe=Kt(()=>{"use strict";UPe="1.0.0",Ope={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 NO,FO=Kt(()=>{"use strict";NO=(l=>(l.MANUAL="manual",l.AUTO="auto",l.STRICT="strict",l.SMART="smart",l))(NO||{})});var xz,BPe,Hpe,wz=Kt(()=>{"use strict";xz=(h=>(h.DIRECT="direct",h.CLARIFICATION="clarification",h.TODO_LIST="todo_list",h.PLAN="plan",h.PLAN_ADOPT="plan_adopt",h.NO_ACTION="no_action",h))(xz||{}),BPe=(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))(BPe||{}),Hpe=(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))(Hpe||{})});var J0t={};BE(J0t,{AGENT_SOURCE_PRIORITY:()=>Az,compareAgentPriority:()=>H0t,createDefaultAgentDefinition:()=>Y0t,getAgentSourcePriority:()=>Jpe,isValidAgentFrontmatter:()=>Xpe,isValidAgentPermissionMode:()=>Lpe,isValidAgentSource:()=>D0t,isValidCLIAgentConfig:()=>M0t,parseToolsList:()=>OP,serializeToolsList:()=>O0t});function Lpe(a){return typeof a=="string"&&["default","acceptEditsAsk","bypassPermissions","plan","ignore","acceptEdits","dontAsk"].includes(a)}function D0t(a){return typeof a=="string"&&["project","cli","user","builtin"].includes(a)}function Xpe(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&&!Lpe(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 M0t(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&&!Lpe(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 Y0t(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 OP(a){if(!(!a||a.trim()===""))return a.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function O0t(a){if(!(!a||a.length===0))return a.join(", ")}function Jpe(a){return Az.indexOf(a)}function H0t(a,r){return Jpe(a.source)-Jpe(r.source)}var Az,Qpe=Kt(()=>{"use strict";Az=["builtin","user","cli","project"]});function jpe(a){return typeof a=="string"&&L0t.includes(a)}function Gyr(a){return typeof a=="string"&&["personal","project"].includes(a)}function Eyr(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 zPe(a){return Upe.indexOf(a)}function Cyr(a,r){return zPe(a.source)-zPe(r.source)}var L0t,Upe,qPe=Kt(()=>{"use strict";L0t=["PreToolUse","PostToolUse","UserPromptSubmit","Notification","Stop"],Upe=["personal","project"]});var Sz,Gz,RO,Bpe,$Pe,Ez,KPe,eDe,kyr,WO,tDe,Tyr,rDe,nDe,iDe,sDe,EW,aDe,oDe,Nyr,Fyr,Ryr,cDe,lDe,uDe,zpe,Wyr,Zyr,qpe,dDe,Cz,Vyr,Pyr,Dyr,Myr,zE,ZO,pDe,Yyr,Oyr,Hyr,Jyr,Lyr,nN,CW,Nv,fDe,Xyr,Qyr,Uyr,jyr,Byr,mDe,_De,zyr,Gf=Kt(()=>{"use strict";Sz=".compass",Gz=".compass",RO="config.json",Bpe="session.json",$Pe="consent.json",Ez="credentials.enc",KPe="logs",eDe="backups",kyr="cache",WO="saved-sessions",tDe="index",Tyr="context",rDe="commands",nDe="agents",iDe="skills",sDe="hooks",EW=16384,aDe=5e4,oDe=5e4,Nyr=80,Fyr=10,Ryr=30,cDe=30,lDe=365,uDe=6e4,zpe=3e4,Wyr=50,Zyr=1048576,qpe=100,dDe=8e3,Cz=4e3,Vyr=6e3,Pyr=90,Dyr=1e5,Myr=524288e3,zE="claude-sonnet-4-5-20250929",ZO=.6,pDe="haiku",Yyr="banner",Oyr=4,Hyr=1e3,Jyr=16e3,Lyr=.1,nN={anthropic:{model:zE,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:3e4,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:Yyr,includePrerelease:!1},agentic:{maxIterations:200,costWarningThreshold:5,costHardCap:0,autoCompactAtPercent:80,stuckDetectionEnabled:!0,stuckDetectionThreshold:3,maxIterationsPerTask:50}},CW=["anthropic","ollama","zai","minimax"],Nv={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"},fDe={anthropic:Nv.API_KEY,ollama:Nv.OLLAMA_API_KEY,zai:Nv.ZAI_API_KEY,minimax:Nv.MINIMAX_API_KEY},Xyr="1.0.40",Qyr="Compass CLI",Uyr="Agentic CLI by Compass Agentic Platform",jyr="1.0.0",Byr={".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"},mDe=["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"],_De=["node_modules",".git","dist","build","out","coverage",".next",".nuxt",".output",".cache",".parcel-cache","vendor","__pycache__",".pytest_cache","target","bin","obj"],zyr=[".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 rIt={};BE(rIt,{CLAUDE_MODELS:()=>mw,MODEL_ALIASES:()=>kz,calculateModelCost:()=>z0t,compareModels:()=>q0t,getAvailableAliases:()=>Q0t,getAvailableModelIds:()=>X0t,getAvailableModels:()=>VO,getCheapestModel:()=>K0t,getDefaultModel:()=>j0t,getDefaultModelId:()=>B0t,getModelConfig:()=>ry,getModelDescription:()=>$pe,getModelTier:()=>tIt,getModelsByCapability:()=>$0t,getMostCapableModel:()=>eIt,isValidModel:()=>U0t,resolveModelId:()=>ny});function ny(a){let r=a.toLowerCase();if(kz[r])return kz[r];for(let n of Object.keys(mw))if(n.toLowerCase()===r)return n;return a}function ry(a){let r=ny(a);return mw[r]}function VO(){return Object.values(mw)}function X0t(){return Object.keys(mw)}function Q0t(){return Object.keys(kz)}function U0t(a){return ny(a)in mw}function j0t(){return mw["claude-sonnet-4-5-20250929"]}function B0t(){return"claude-sonnet-4-5-20250929"}function z0t(a,r,n){let o=ry(a);if(!o)return null;let l=r/1e6*o.pricing.inputPricePerMillion,f=n/1e6*o.pricing.outputPricePerMillion;return l+f}function q0t(a,r,n){let o=ry(a),l=ry(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 $0t(a){return VO().filter(r=>r.capabilities[a])}function K0t(){return VO().reduce((r,n)=>n.pricing.inputPricePerMillion<r.pricing.inputPricePerMillion?n:r)}function eIt(){return mw["claude-opus-4-5-20251101"]}function tIt(a){let r=ny(a);if(r.includes("haiku"))return"economy";if(r.includes("sonnet"))return"balanced";if(r.includes("opus"))return"premium"}function $pe(a){let r=ny(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 mw,kz,HP=Kt(()=>{"use strict";mw={"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}},"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}},"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}},"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}},"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}},"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}},"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}}},kz={sonnet:"claude-sonnet-4-5-20250929",opus:"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-5-20251101",best:"claude-opus-4-5-20251101",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-5-20251101",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"}});var aIt=ft((bsn,hDe)=>{"use strict";var nIt=Xs("path"),iIt=Xs("module"),qyr=Xs("fs"),sIt=(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=qyr.realpathSync(a)}catch(f){if(f.code==="ENOENT")a=nIt.resolve(a);else{if(n)return null;throw f}}let o=nIt.join(a,"noop.js"),l=()=>iIt._resolveFilename(r,{id:o,filename:o,paths:iIt._nodeModulePaths(a)});if(n)try{return l()}catch{return null}return l()};hDe.exports=(a,r)=>sIt(a,r);hDe.exports.silent=(a,r)=>sIt(a,r,!0)});var cIt=ft((vsn,gDe)=>{"use strict";var oIt=()=>{let a=Error.prepareStackTrace;Error.prepareStackTrace=(n,o)=>o;let r=new Error().stack.slice(1);return Error.prepareStackTrace=a,r};gDe.exports=oIt;gDe.exports.default=oIt});var uIt=ft((xsn,lIt)=>{"use strict";var $yr=cIt();lIt.exports=a=>{let r=$yr();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 pIt=ft((wsn,dIt)=>{"use strict";var Kyr=Xs("path"),ebr=aIt(),tbr=uIt();dIt.exports=a=>{if(typeof a!="string")throw new TypeError("Expected a string");let r=tbr(__filename),n=r?Kyr.dirname(r):__dirname,o=ebr(n,a),l=Xs.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 Xs.cache[o];let f=Xs.cache[r];return f===void 0||f.require===void 0?Xs(o):f.require(o)}});var mIt=ft((Ssn,fIt)=>{"use strict";fIt.exports=function(r){return r?r instanceof Array||Array.isArray(r)||r.length>=0&&r.splice instanceof Function:!1}});var hIt=ft((Gsn,_It)=>{"use strict";var rbr=Xs("util"),nbr=mIt(),IDe=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 Q in n)if(n.hasOwnProperty(Q)){var M=n[Q];"message"in M&&(D=M.message(this[Q],D)||D,nbr(D)||(D=[D]))}return D.join(`
1
+ var eyr=Object.create;var Ype=Object.defineProperty;var tyr=Object.getOwnPropertyDescriptor;var ryr=Object.getOwnPropertyNames;var nyr=Object.getPrototypeOf,iyr=Object.prototype.hasOwnProperty;var Xs=(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 Kt=(a,r)=>()=>(a&&(r=a(a=0)),r);var ft=(a,r)=>()=>(r||a((r={exports:{}}).exports,r),r.exports),BE=(a,r)=>{for(var n in r)Ype(a,n,{get:r[n],enumerable:!0})},V0t=(a,r,n,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let l of ryr(r))!iyr.call(a,l)&&l!==n&&Ype(a,l,{get:()=>r[l],enumerable:!(o=tyr(r,l))||o.enumerable});return a};var Ho=(a,r,n)=>(n=a!=null?eyr(nyr(a)):{},V0t(r||!a||!a.__esModule?Ype(n,"default",{value:a,enumerable:!0}):n,a)),syr=a=>V0t(Ype({},"__esModule",{value:!0}),a);function P0t(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 myr(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"&&P0t(r.consent)}function _yr(){return{dataCollection:Ope.dataCollection.defaultValue,telemetry:Ope.telemetry.defaultValue,analytics:Ope.analytics.defaultValue,errorReporting:Ope.errorReporting.defaultValue}}function hyr(){return{dataCollection:!0,telemetry:!0,analytics:!0,errorReporting:!0}}function gyr(){return{dataCollection:!0,telemetry:!1,analytics:!1,errorReporting:!1}}var UPe,Ope,jPe=Kt(()=>{"use strict";UPe="1.0.0",Ope={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 NO,FO=Kt(()=>{"use strict";NO=(l=>(l.MANUAL="manual",l.AUTO="auto",l.STRICT="strict",l.SMART="smart",l))(NO||{})});var xz,BPe,Hpe,wz=Kt(()=>{"use strict";xz=(h=>(h.DIRECT="direct",h.CLARIFICATION="clarification",h.TODO_LIST="todo_list",h.PLAN="plan",h.PLAN_ADOPT="plan_adopt",h.NO_ACTION="no_action",h))(xz||{}),BPe=(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))(BPe||{}),Hpe=(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))(Hpe||{})});var J0t={};BE(J0t,{AGENT_SOURCE_PRIORITY:()=>Az,compareAgentPriority:()=>H0t,createDefaultAgentDefinition:()=>Y0t,getAgentSourcePriority:()=>Jpe,isValidAgentFrontmatter:()=>Xpe,isValidAgentPermissionMode:()=>Lpe,isValidAgentSource:()=>D0t,isValidCLIAgentConfig:()=>M0t,parseToolsList:()=>OP,serializeToolsList:()=>O0t});function Lpe(a){return typeof a=="string"&&["default","acceptEditsAsk","bypassPermissions","plan","ignore","acceptEdits","dontAsk"].includes(a)}function D0t(a){return typeof a=="string"&&["project","cli","user","builtin"].includes(a)}function Xpe(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&&!Lpe(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 M0t(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&&!Lpe(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 Y0t(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 OP(a){if(!(!a||a.trim()===""))return a.split(",").map(r=>r.trim()).filter(r=>r.length>0)}function O0t(a){if(!(!a||a.length===0))return a.join(", ")}function Jpe(a){return Az.indexOf(a)}function H0t(a,r){return Jpe(a.source)-Jpe(r.source)}var Az,Qpe=Kt(()=>{"use strict";Az=["builtin","user","cli","project"]});function jpe(a){return typeof a=="string"&&L0t.includes(a)}function Gyr(a){return typeof a=="string"&&["personal","project"].includes(a)}function Eyr(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 zPe(a){return Upe.indexOf(a)}function Cyr(a,r){return zPe(a.source)-zPe(r.source)}var L0t,Upe,qPe=Kt(()=>{"use strict";L0t=["PreToolUse","PostToolUse","UserPromptSubmit","Notification","Stop"],Upe=["personal","project"]});var Sz,Gz,RO,Bpe,$Pe,Ez,KPe,eDe,kyr,WO,tDe,Tyr,rDe,nDe,iDe,sDe,EW,aDe,oDe,Nyr,Fyr,Ryr,cDe,lDe,uDe,zpe,Wyr,Zyr,qpe,dDe,Cz,Vyr,Pyr,Dyr,Myr,zE,ZO,pDe,Yyr,Oyr,Hyr,Jyr,Lyr,nN,CW,Nv,fDe,Xyr,Qyr,Uyr,jyr,Byr,mDe,_De,zyr,Gf=Kt(()=>{"use strict";Sz=".compass",Gz=".compass",RO="config.json",Bpe="session.json",$Pe="consent.json",Ez="credentials.enc",KPe="logs",eDe="backups",kyr="cache",WO="saved-sessions",tDe="index",Tyr="context",rDe="commands",nDe="agents",iDe="skills",sDe="hooks",EW=16384,aDe=5e4,oDe=5e4,Nyr=80,Fyr=10,Ryr=30,cDe=30,lDe=365,uDe=6e4,zpe=3e4,Wyr=50,Zyr=1048576,qpe=100,dDe=8e3,Cz=4e3,Vyr=6e3,Pyr=90,Dyr=1e5,Myr=524288e3,zE="claude-sonnet-4-5-20250929",ZO=.6,pDe="haiku",Yyr="banner",Oyr=4,Hyr=1e3,Jyr=16e3,Lyr=.1,nN={anthropic:{model:zE,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:3e4,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:Yyr,includePrerelease:!1},agentic:{maxIterations:200,costWarningThreshold:5,costHardCap:0,autoCompactAtPercent:80,stuckDetectionEnabled:!0,stuckDetectionThreshold:3,maxIterationsPerTask:50}},CW=["anthropic","ollama","zai","minimax"],Nv={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"},fDe={anthropic:Nv.API_KEY,ollama:Nv.OLLAMA_API_KEY,zai:Nv.ZAI_API_KEY,minimax:Nv.MINIMAX_API_KEY},Xyr="1.0.42",Qyr="Compass CLI",Uyr="Agentic CLI by Compass Agentic Platform",jyr="1.0.0",Byr={".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"},mDe=["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"],_De=["node_modules",".git","dist","build","out","coverage",".next",".nuxt",".output",".cache",".parcel-cache","vendor","__pycache__",".pytest_cache","target","bin","obj"],zyr=[".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 rIt={};BE(rIt,{CLAUDE_MODELS:()=>mw,MODEL_ALIASES:()=>kz,calculateModelCost:()=>z0t,compareModels:()=>q0t,getAvailableAliases:()=>Q0t,getAvailableModelIds:()=>X0t,getAvailableModels:()=>VO,getCheapestModel:()=>K0t,getDefaultModel:()=>j0t,getDefaultModelId:()=>B0t,getModelConfig:()=>ry,getModelDescription:()=>$pe,getModelTier:()=>tIt,getModelsByCapability:()=>$0t,getMostCapableModel:()=>eIt,isValidModel:()=>U0t,resolveModelId:()=>ny});function ny(a){let r=a.toLowerCase();if(kz[r])return kz[r];for(let n of Object.keys(mw))if(n.toLowerCase()===r)return n;return a}function ry(a){let r=ny(a);return mw[r]}function VO(){return Object.values(mw)}function X0t(){return Object.keys(mw)}function Q0t(){return Object.keys(kz)}function U0t(a){return ny(a)in mw}function j0t(){return mw["claude-sonnet-4-5-20250929"]}function B0t(){return"claude-sonnet-4-5-20250929"}function z0t(a,r,n){let o=ry(a);if(!o)return null;let l=r/1e6*o.pricing.inputPricePerMillion,f=n/1e6*o.pricing.outputPricePerMillion;return l+f}function q0t(a,r,n){let o=ry(a),l=ry(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 $0t(a){return VO().filter(r=>r.capabilities[a])}function K0t(){return VO().reduce((r,n)=>n.pricing.inputPricePerMillion<r.pricing.inputPricePerMillion?n:r)}function eIt(){return mw["claude-opus-4-5-20251101"]}function tIt(a){let r=ny(a);if(r.includes("haiku"))return"economy";if(r.includes("sonnet"))return"balanced";if(r.includes("opus"))return"premium"}function $pe(a){let r=ny(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 mw,kz,HP=Kt(()=>{"use strict";mw={"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}},"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}},"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}},"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}},"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}},"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}},"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}}},kz={sonnet:"claude-sonnet-4-5-20250929",opus:"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-5-20251101",best:"claude-opus-4-5-20251101",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-5-20251101",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"}});var aIt=ft((bsn,hDe)=>{"use strict";var nIt=Xs("path"),iIt=Xs("module"),qyr=Xs("fs"),sIt=(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=qyr.realpathSync(a)}catch(f){if(f.code==="ENOENT")a=nIt.resolve(a);else{if(n)return null;throw f}}let o=nIt.join(a,"noop.js"),l=()=>iIt._resolveFilename(r,{id:o,filename:o,paths:iIt._nodeModulePaths(a)});if(n)try{return l()}catch{return null}return l()};hDe.exports=(a,r)=>sIt(a,r);hDe.exports.silent=(a,r)=>sIt(a,r,!0)});var cIt=ft((vsn,gDe)=>{"use strict";var oIt=()=>{let a=Error.prepareStackTrace;Error.prepareStackTrace=(n,o)=>o;let r=new Error().stack.slice(1);return Error.prepareStackTrace=a,r};gDe.exports=oIt;gDe.exports.default=oIt});var uIt=ft((xsn,lIt)=>{"use strict";var $yr=cIt();lIt.exports=a=>{let r=$yr();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 pIt=ft((wsn,dIt)=>{"use strict";var Kyr=Xs("path"),ebr=aIt(),tbr=uIt();dIt.exports=a=>{if(typeof a!="string")throw new TypeError("Expected a string");let r=tbr(__filename),n=r?Kyr.dirname(r):__dirname,o=ebr(n,a),l=Xs.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 Xs.cache[o];let f=Xs.cache[r];return f===void 0||f.require===void 0?Xs(o):f.require(o)}});var mIt=ft((Ssn,fIt)=>{"use strict";fIt.exports=function(r){return r?r instanceof Array||Array.isArray(r)||r.length>=0&&r.splice instanceof Function:!1}});var hIt=ft((Gsn,_It)=>{"use strict";var rbr=Xs("util"),nbr=mIt(),IDe=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 Q in n)if(n.hasOwnProperty(Q)){var M=n[Q];"message"in M&&(D=M.message(this[Q],D)||D,nbr(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 Q=1;for(var M in n)if(n.hasOwnProperty(M)){var ne=n[M];if("line"in ne){var he=ne.line(this[M]);he&&D.splice(Q++,0," "+he)}"stack"in ne&&ne.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)):rbr.inherits(o,Error),o};IDe.append=function(a,r){return{message:function(n,o){return n=n||r,n&&(o[0]+=" "+a.replace("%s",n.toString())),o}}};IDe.line=function(a,r){return{line:function(n){return n=n||r,n?a.replace("%s",n.toString()):null}}};_It.exports=IDe});var yIt=ft((Esn,IIt)=>{"use strict";var ibr=a=>{let r=a.charCodeAt(0).toString(16).toUpperCase();return"0x"+(r.length%2?"0":"")+r},sbr=(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])} (${ibr(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}},Kpe=class extends SyntaxError{constructor(r,n,o,l){o=o||20;let f=sbr(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}},abr=Symbol.for("indent"),obr=Symbol.for("newline"),cbr=/^\s*[{\[]((?:\r?\n)+)([\s\t]*)/,lbr=/^(?:\{\}|\[\])((?:\r?\n)+)?$/,efe=(a,r,n)=>{let o=gIt(a);n=n||20;try{let[,l=`
4
4
  `,f=" "]=o.match(lbr)||o.match(cbr)||[,"",""],h=JSON.parse(o,r);return h&&typeof h=="object"&&(h[obr]=l,h[abr]=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 Kpe(l,o,n,efe)}},gIt=a=>String(a).replace(/^\uFEFF/,"");IIt.exports=efe;efe.JSONParseError=Kpe;efe.noExceptions=(a,r)=>{try{return JSON.parse(gIt(a),r)}catch{}}});var xIt=ft(Tz=>{"use strict";Tz.__esModule=!0;Tz.LinesAndColumns=void 0;var tfe=`
@@ -1259,7 +1259,7 @@ OUTPUT REQUIREMENTS:
1259
1259
  - **IMPORTANT:** Include the date of writing at the top or in metadata using format: Date: YYYY-MM-DD
1260
1260
  - **IMPORTANT:** Always end documentation with this attribution:
1261
1261
  ---
1262
- Co-authored by [Nova](https://www.compassap.ai/portfolio/command-line-interface.html)
1262
+ Co-authored by [Nova](https://www.compassap.ai/portfolio/nova.html)
1263
1263
 
1264
1264
  AVOID:
1265
1265
  - Documenting obvious code
@@ -1788,7 +1788,7 @@ When the user asks you to generate, provide, or create a commit message for stag
1788
1788
  - For complex changes with multiple purposes, use multi-line format with bullet points
1789
1789
  4. **IMPORTANT:** Always append this footer to commit messages:
1790
1790
 
1791
- \u{1F6F8} Generated with [Nova](https://www.compassap.ai/portfolio/command-line-interface.html)
1791
+ \u{1F6F8} Generated with [Nova](https://www.compassap.ai/portfolio/nova.html)
1792
1792
 
1793
1793
  # Documentation Writing
1794
1794
 
@@ -1803,7 +1803,7 @@ When writing documentation files (README, guides, API docs, markdown files, etc.
1803
1803
  2. **IMPORTANT:** Always append this attribution at the end of the document:
1804
1804
 
1805
1805
  ---
1806
- Co-authored by [Nova](https://www.compassap.ai/portfolio/command-line-interface.html)
1806
+ Co-authored by [Nova](https://www.compassap.ai/portfolio/nova.html)
1807
1807
 
1808
1808
  # Code References
1809
1809
 
@@ -2854,7 +2854,7 @@ ${r}`),o.push({role:"user",content:v}),o}estimateTaskTokens(r,n,o){let l=Lp(r);f
2854
2854
  `)}CS();var gUe=[{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"]}]}],Xin=[{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 BYt(a){let r=a.commands.filter(o=>!o.hidden);if(r.length===0)return"";let n=["",Mn.bold.cyan(`\u2501\u2501\u2501 ${a.name} \u2501\u2501\u2501`),Mn.gray(a.description),""];for(let o of r){if(n.push(` ${Mn.yellow(o.name)}`),n.push(` ${Mn.white(o.description)}`),o.usage&&n.push(` ${Mn.gray("Usage:")} ${Mn.dim(o.usage)}`),o.aliases&&o.aliases.length>0&&n.push(` ${Mn.gray("Aliases:")} ${Mn.dim(o.aliases.join(", "))}`),o.examples&&o.examples.length>0){n.push(` ${Mn.gray("Examples:")}`);for(let l of o.examples)n.push(` ${Mn.dim(l)}`)}n.push("")}return n.join(`
2855
2855
  `)}function Qin(){try{let{getCustomCommands:a}=(jYt(),syr(UYt)),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 Uin(){let a=[...gUe],r=Qin();r&&a.push(r);let n=a.map(BYt);return["",Mn.bold.white("Compass CLI - Interactive Commands"),Mn.gray("Use these commands during an interactive session"),...n,Mn.dim("\u2500".repeat(50)),Mn.gray("Tip: Type any natural language request to interact with Compass"),""].join(`
2856
2856
  `)}function jin(a){let r=a.startsWith("/")?a:`/${a}`,o=gUe.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=["",Mn.bold.cyan(o.name),Mn.white(o.description),""];if(o.usage&&(l.push(Mn.gray("Usage:")),l.push(` ${o.usage}`),l.push("")),o.aliases&&o.aliases.length>0&&(l.push(Mn.gray("Aliases:")),l.push(` ${o.aliases.join(", ")}`),l.push("")),o.examples&&o.examples.length>0){l.push(Mn.gray("Examples:"));for(let f of o.examples)l.push(` ${Mn.dim("$")} ${f}`);l.push("")}return l.join(`
2857
- `)}MD();var FDn="1.0.40",RDn="compass-cli",WDn="AI-powered development assistance using Anthropic's Claude models";export{Az as AGENT_SOURCE_PRIORITY,WDn as APP_DESCRIPTION,Qyr as APP_DISPLAY_NAME,RDn as APP_NAME,Uyr as APP_TAGLINE,Xyr as APP_VERSION,LYt as ASCII_BANNER,oDe as AUTO_COMPACT_TRIGGER,uDe as AUTO_SAVE_INTERVAL_MS,U$ as ActionLogger,SWt as ActionStatus,F2 as ActionType,Zme as AnthropicClient,tme as ApprovalManager,NO as ApprovalMode,eDe as BACKUPS_DIR,cDe as BACKUP_RETENTION_DAYS,zyr as BINARY_EXTENSIONS,nme as BackupManager,kyr as CACHE_DIR,mw as CLAUDE_MODELS,Xin as CLI_COMMANDS,Pin as COMPASS_ICON,RO as CONFIG_FILE_NAME,lDe as CONSENT_EXPIRY_DAYS,$Pe as CONSENT_FILE_NAME,jyr as CONSENT_VERSION,Tyr as CONTEXT_DIR,Pyr as CONTEXT_WINDOW_SAFETY_MARGIN,Nyr as CONTEXT_WINDOW_WARNING_PERCENT,Ez as CREDENTIALS_FILE_NAME,sK as ComplexityClassifier,Mfe as ConfigManager,Xfe as ConsentManager,zfe as CredentialStore,nN as DEFAULT_CONFIG,Fyr as DEFAULT_COST_WARNING_THRESHOLD,EW as DEFAULT_MAX_TOKENS,zE as DEFAULT_MODEL,wyr as DEFAULT_RATING_CONFIG,ZO as DEFAULT_TEMPERATURE,Iyr as DEFAULT_UPDATE_CONFIG,Nv as ENV_VARS,nK as EnhancedContextGatherer,Jfe as EventEmitter,xz as ExecutionMode,S5t as ExecutionStrategy,Sz as GLOBAL_COMPASS_DIR,l$ as GitService,L0t as HOOK_EVENTS,Upe as HOOK_SOURCE_PRIORITY,Hve as HistoryManager,tDe as INDEX_DIR,gee as InteractiveClarifier,w5t as IssueCategory,x5t as IssueSeverity,Byr as LANGUAGE_EXTENSIONS,KPe as LOGS_DIR,fK as LogInterpreter,Myr as MAX_CACHE_SIZE_BYTES,Cz as MAX_COMMAND_OUTPUT_TOKENS,Wyr as MAX_FILES_PER_OPERATION,dDe as MAX_FILE_READ_TOKENS,Zyr as MAX_FILE_SIZE_BYTES,qpe as MAX_HISTORY_LENGTH,Dyr as MAX_INDEXED_FILES,Oyr as MAX_RETRY_ATTEMPTS,Vyr as MAX_SEARCH_RESULT_TOKENS,kz as MODEL_ALIASES,Gz as PROJECT_COMPASS_DIR,CW as PROVIDERS,fDe as PROVIDER_ENV_VARS,Iee as PlanGenerator,Hyr as RETRY_BASE_DELAY_MS,Lyr as RETRY_JITTER_FACTOR,Jyr as RETRY_MAX_DELAY_MS,WO as SAVED_SESSIONS_DIR,Ryr as SESSION_EXPIRY_DAYS,Bpe as SESSION_FILE_NAME,zpe as SHELL_COMMAND_TIMEOUT_MS,gUe as SLASH_COMMANDS,qfe as SessionManager,lge as ShellExecutor,vWt as StepStatus,Q$ as StepTracker,xWt as StepType,aDe as TOKEN_WARNING_THRESHOLD,_De as TOOL_READ_BLOCKLIST_DIRS,mDe as TOOL_READ_BLOCKLIST_PATTERNS,BPe as TaskExecutionStatus,wWt as TaskStatus,eme as TokenTracker,q$ as ToolRegistry,FDn as VERSION,yee as Verifier,F8e as WORKFLOW_PROMPTS,mK as WorkflowManager,bee as WorkflowOrchestrator,Hpe as WorkflowPhase,A5t as WorkflowState,Win as applyCompletion,HPr as applyPatch,YPr as areIdentical,x4r as calculateContextUsagePercent,z0t as calculateModelCost,y4r as calculateRemainingTokens,aSr as colorByStatus,PPr as colorizeDiff,H0t as compareAgentPriority,Cyr as compareHookPriority,q0t as compareModels,cN as copy,T4r as createActionLogger,m9r as createComplexityClassifier,Y0t as createDefaultAgentDefinition,_yr as createDefaultConsent,Ayr as createDefaultRatingState,s9r as createEnhancedContextGatherer,hyr as createFullConsent,zNr as createGitService,din as createInteractiveClarifier,h6r as createLogInterpreter,gyr as createMinimalConsent,fin as createPlanGenerator,k4r as createStepTracker,Y4r as createToolRegistry,_in as createVerifier,I6r as createWorkflowManager,gin as createWorkflowOrchestrator,C9e as decrypt,E9e as encrypt,Zl as ensureDir,g4r as estimateConversationTokens,I4r as estimateSystemPromptTokens,Lp as estimateTokens,vin as executeSlashCommand,dUe as extractCodeBlocks,uUe as extractMentions,jin as formatCommandHelp,eSr as formatCost,zAr as formatDate,qAr as formatDuration,KAr as formatFileSize,Uin as formatFullHelp,BYt as formatHelpCategory,sSr as formatList,Z2t as formatPercent,iSr as formatProgressBar,$Ar as formatRelativeTime,mn as formatTimestamp,tSr as formatTokenCount,v4r as formatTokenDisplay,WD as generateDiff,DPr as generateDiffSummary,mSr as generateSecureRandom,MPr as generateWordDiff,vZ as getActionLogger,Jpe as getAgentSourcePriority,Zv as getAnthropicClient,ih as getApprovalManager,Q0t as getAvailableAliases,X0t as getAvailableModelIds,VO as getAvailableModels,XW as getBackupManager,gxr as getBasename,OPr as getChangedLineCount,K0t as getCheapestModel,E8 as getCodebaseIndexer,Gin as getCompletions,aK as getComplexityClassifier,oq as getConfigManager,w9e as getConsentManager,wZ as getContextBuilder,w4r as getContextUsageColor,C4r as getConversationCompactor,TS as getCredentialStore,j0t as getDefaultModel,B0t as getDefaultModelId,HD as getEnhancedContextGatherer,xa as getEventEmitter,hxr as getExtension,FN as getFileService,El as getGlobalCompassDir,xin as getHistoryManager,zPe as getHookSourcePriority,oUe as getInteractiveClarifier,_Le as getLogInterpreter,ry as getModelConfig,$pe as getModelDescription,tIt as getModelTier,$0t as getModelsByCapability,eIt as getMostCapableModel,Vve as getPlanGenerator,Jp as getProjectCompassDir,mxr as getRelativePath,Rh as getSessionManager,Yv as getShellExecutor,_Ue as getSlashCommandRegistry,bZ as getStepTracker,Vin as getTaskProcessor,LW as getTokenTracker,OS as getToolRegistry,lUe as getVerifier,g6r as getWorkflowManager,hin as getWorkflowOrchestrator,k9e as hash,_Sr as hmac,N2 as interpolateTemplate,aq as isDirectory,Vfe as isFile,KO as isPathWithin,Xpe as isValidAgentFrontmatter,Lpe as isValidAgentPermissionMode,D0t as isValidAgentSource,oyr as isValidAnthropicConfig,M0t as isValidCLIAgentConfig,ayr as isValidCompassConfig,fyr as isValidConfigFile,P0t as isValidConsent,myr as isValidConsentRecord,jpe as isValidHookEvent,Eyr as isValidHookFrontmatter,Gyr as isValidHookSource,U0t as isValidModel,xyr as isValidNotificationStyle,cyr as isValidProjectConfig,Syr as isValidRatingState,lyr as isValidSafetyConfig,dyr as isValidSessionConfig,bin as isValidSlashCommand,uyr as isValidUIConfig,yyr as isValidUpdateCheckResult,byr as isValidUpdateConfig,pyr as isValidUpdateSettingsConfig,vyr as isValidUpdateType,de as logger,zz as matchesPattern,_xr as normalizeSeparators,nSr as padString,DYt as parseArgs,yin as parseInput,OP as parseToolsList,Ta as pathExists,oH as readDir,pLe as registerBuiltInTools,mUe as registerSlashCommand,vb as remove,Min as renderBanner,Yin as renderMiniBanner,Oin as renderWelcome,pxr as resolveGlobalPath,ny as resolveModelId,fxr as resolveProjectPath,Cd as safeReadFile,df as safeReadJson,bb as safeWriteFile,Nh as safeWriteJson,KP as sanitizePath,hSr as secureCompare,O0t as serializeToolsList,Rv as stat,DW as toForwardSlashes,rSr as truncate,b4r as wouldExceedContext};
2857
+ `)}MD();var FDn="1.0.42",RDn="compass-cli",WDn="AI-powered development assistance using Anthropic's Claude models";export{Az as AGENT_SOURCE_PRIORITY,WDn as APP_DESCRIPTION,Qyr as APP_DISPLAY_NAME,RDn as APP_NAME,Uyr as APP_TAGLINE,Xyr as APP_VERSION,LYt as ASCII_BANNER,oDe as AUTO_COMPACT_TRIGGER,uDe as AUTO_SAVE_INTERVAL_MS,U$ as ActionLogger,SWt as ActionStatus,F2 as ActionType,Zme as AnthropicClient,tme as ApprovalManager,NO as ApprovalMode,eDe as BACKUPS_DIR,cDe as BACKUP_RETENTION_DAYS,zyr as BINARY_EXTENSIONS,nme as BackupManager,kyr as CACHE_DIR,mw as CLAUDE_MODELS,Xin as CLI_COMMANDS,Pin as COMPASS_ICON,RO as CONFIG_FILE_NAME,lDe as CONSENT_EXPIRY_DAYS,$Pe as CONSENT_FILE_NAME,jyr as CONSENT_VERSION,Tyr as CONTEXT_DIR,Pyr as CONTEXT_WINDOW_SAFETY_MARGIN,Nyr as CONTEXT_WINDOW_WARNING_PERCENT,Ez as CREDENTIALS_FILE_NAME,sK as ComplexityClassifier,Mfe as ConfigManager,Xfe as ConsentManager,zfe as CredentialStore,nN as DEFAULT_CONFIG,Fyr as DEFAULT_COST_WARNING_THRESHOLD,EW as DEFAULT_MAX_TOKENS,zE as DEFAULT_MODEL,wyr as DEFAULT_RATING_CONFIG,ZO as DEFAULT_TEMPERATURE,Iyr as DEFAULT_UPDATE_CONFIG,Nv as ENV_VARS,nK as EnhancedContextGatherer,Jfe as EventEmitter,xz as ExecutionMode,S5t as ExecutionStrategy,Sz as GLOBAL_COMPASS_DIR,l$ as GitService,L0t as HOOK_EVENTS,Upe as HOOK_SOURCE_PRIORITY,Hve as HistoryManager,tDe as INDEX_DIR,gee as InteractiveClarifier,w5t as IssueCategory,x5t as IssueSeverity,Byr as LANGUAGE_EXTENSIONS,KPe as LOGS_DIR,fK as LogInterpreter,Myr as MAX_CACHE_SIZE_BYTES,Cz as MAX_COMMAND_OUTPUT_TOKENS,Wyr as MAX_FILES_PER_OPERATION,dDe as MAX_FILE_READ_TOKENS,Zyr as MAX_FILE_SIZE_BYTES,qpe as MAX_HISTORY_LENGTH,Dyr as MAX_INDEXED_FILES,Oyr as MAX_RETRY_ATTEMPTS,Vyr as MAX_SEARCH_RESULT_TOKENS,kz as MODEL_ALIASES,Gz as PROJECT_COMPASS_DIR,CW as PROVIDERS,fDe as PROVIDER_ENV_VARS,Iee as PlanGenerator,Hyr as RETRY_BASE_DELAY_MS,Lyr as RETRY_JITTER_FACTOR,Jyr as RETRY_MAX_DELAY_MS,WO as SAVED_SESSIONS_DIR,Ryr as SESSION_EXPIRY_DAYS,Bpe as SESSION_FILE_NAME,zpe as SHELL_COMMAND_TIMEOUT_MS,gUe as SLASH_COMMANDS,qfe as SessionManager,lge as ShellExecutor,vWt as StepStatus,Q$ as StepTracker,xWt as StepType,aDe as TOKEN_WARNING_THRESHOLD,_De as TOOL_READ_BLOCKLIST_DIRS,mDe as TOOL_READ_BLOCKLIST_PATTERNS,BPe as TaskExecutionStatus,wWt as TaskStatus,eme as TokenTracker,q$ as ToolRegistry,FDn as VERSION,yee as Verifier,F8e as WORKFLOW_PROMPTS,mK as WorkflowManager,bee as WorkflowOrchestrator,Hpe as WorkflowPhase,A5t as WorkflowState,Win as applyCompletion,HPr as applyPatch,YPr as areIdentical,x4r as calculateContextUsagePercent,z0t as calculateModelCost,y4r as calculateRemainingTokens,aSr as colorByStatus,PPr as colorizeDiff,H0t as compareAgentPriority,Cyr as compareHookPriority,q0t as compareModels,cN as copy,T4r as createActionLogger,m9r as createComplexityClassifier,Y0t as createDefaultAgentDefinition,_yr as createDefaultConsent,Ayr as createDefaultRatingState,s9r as createEnhancedContextGatherer,hyr as createFullConsent,zNr as createGitService,din as createInteractiveClarifier,h6r as createLogInterpreter,gyr as createMinimalConsent,fin as createPlanGenerator,k4r as createStepTracker,Y4r as createToolRegistry,_in as createVerifier,I6r as createWorkflowManager,gin as createWorkflowOrchestrator,C9e as decrypt,E9e as encrypt,Zl as ensureDir,g4r as estimateConversationTokens,I4r as estimateSystemPromptTokens,Lp as estimateTokens,vin as executeSlashCommand,dUe as extractCodeBlocks,uUe as extractMentions,jin as formatCommandHelp,eSr as formatCost,zAr as formatDate,qAr as formatDuration,KAr as formatFileSize,Uin as formatFullHelp,BYt as formatHelpCategory,sSr as formatList,Z2t as formatPercent,iSr as formatProgressBar,$Ar as formatRelativeTime,mn as formatTimestamp,tSr as formatTokenCount,v4r as formatTokenDisplay,WD as generateDiff,DPr as generateDiffSummary,mSr as generateSecureRandom,MPr as generateWordDiff,vZ as getActionLogger,Jpe as getAgentSourcePriority,Zv as getAnthropicClient,ih as getApprovalManager,Q0t as getAvailableAliases,X0t as getAvailableModelIds,VO as getAvailableModels,XW as getBackupManager,gxr as getBasename,OPr as getChangedLineCount,K0t as getCheapestModel,E8 as getCodebaseIndexer,Gin as getCompletions,aK as getComplexityClassifier,oq as getConfigManager,w9e as getConsentManager,wZ as getContextBuilder,w4r as getContextUsageColor,C4r as getConversationCompactor,TS as getCredentialStore,j0t as getDefaultModel,B0t as getDefaultModelId,HD as getEnhancedContextGatherer,xa as getEventEmitter,hxr as getExtension,FN as getFileService,El as getGlobalCompassDir,xin as getHistoryManager,zPe as getHookSourcePriority,oUe as getInteractiveClarifier,_Le as getLogInterpreter,ry as getModelConfig,$pe as getModelDescription,tIt as getModelTier,$0t as getModelsByCapability,eIt as getMostCapableModel,Vve as getPlanGenerator,Jp as getProjectCompassDir,mxr as getRelativePath,Rh as getSessionManager,Yv as getShellExecutor,_Ue as getSlashCommandRegistry,bZ as getStepTracker,Vin as getTaskProcessor,LW as getTokenTracker,OS as getToolRegistry,lUe as getVerifier,g6r as getWorkflowManager,hin as getWorkflowOrchestrator,k9e as hash,_Sr as hmac,N2 as interpolateTemplate,aq as isDirectory,Vfe as isFile,KO as isPathWithin,Xpe as isValidAgentFrontmatter,Lpe as isValidAgentPermissionMode,D0t as isValidAgentSource,oyr as isValidAnthropicConfig,M0t as isValidCLIAgentConfig,ayr as isValidCompassConfig,fyr as isValidConfigFile,P0t as isValidConsent,myr as isValidConsentRecord,jpe as isValidHookEvent,Eyr as isValidHookFrontmatter,Gyr as isValidHookSource,U0t as isValidModel,xyr as isValidNotificationStyle,cyr as isValidProjectConfig,Syr as isValidRatingState,lyr as isValidSafetyConfig,dyr as isValidSessionConfig,bin as isValidSlashCommand,uyr as isValidUIConfig,yyr as isValidUpdateCheckResult,byr as isValidUpdateConfig,pyr as isValidUpdateSettingsConfig,vyr as isValidUpdateType,de as logger,zz as matchesPattern,_xr as normalizeSeparators,nSr as padString,DYt as parseArgs,yin as parseInput,OP as parseToolsList,Ta as pathExists,oH as readDir,pLe as registerBuiltInTools,mUe as registerSlashCommand,vb as remove,Min as renderBanner,Yin as renderMiniBanner,Oin as renderWelcome,pxr as resolveGlobalPath,ny as resolveModelId,fxr as resolveProjectPath,Cd as safeReadFile,df as safeReadJson,bb as safeWriteFile,Nh as safeWriteJson,KP as sanitizePath,hSr as secureCompare,O0t as serializeToolsList,Rv as stat,DW as toForwardSlashes,rSr as truncate,b4r as wouldExceedContext};
2858
2858
  /*! Bundled license information:
2859
2859
 
2860
2860
  typescript/lib/typescript.js:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@compass-ai/nova",
3
- "version": "1.0.40",
3
+ "version": "1.0.42",
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",